嗨,我是 flickrj 库的新手。
虽然有基础的java知识。
我正在进行的项目要求我在 flickr 中进行身份验证,然后将带有地理标记的图像下载到本地硬盘驱动器的文件夹中。该程序将是桌面应用程序。
我正在通过分解为 3 个步骤来处理该程序。
1.要完成正确的身份验证。(我已经成功了)
2.尝试下载用户通过身份验证时拥有的所有照片。
3.试着稍微修改一下代码,让它只下载地理标记的图像。
我的问题在第 2 步。我无法下载已登录的用户图像,更不用说带有地理标记的图像了。我在这里
尝试 Daniel Cukier 提供的代码,
但我遇到了问题。我的 netbeans 只是在 .getOriginalAsStream() 部分的第 77 行删除了错误“java.lang.RuntimeException:无法编译的源代码 - 错误的 sym 类型:java.io.ByteArrayOutputStream.write”
根据我的理解,netbeans 删除了一条线意思是,它已经折旧,但它不应该仍然有效吗?是什么阻碍了整个问题?
我已经尝试过研究,基本上我不得不承认,排除故障超出了我的能力。如果有人对我做错了什么有任何想法,我将不胜感激。
Ps:我不希望被勺子喂食,但请以白痴友好的方式回答我,因为我还是个学生,我的 java 不是最好的。
这段代码是我到目前为止所拥有的。
import com.aetrion.flickr.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Properties;
import javax.xml.parsers.ParserConfigurationException;
import org.xml.sax.SAXException;
import com.aetrion.flickr.auth.Auth;
import com.aetrion.flickr.auth.AuthInterface;
import com.aetrion.flickr.auth.Permission;
import com.aetrion.flickr.photos.Photo;
import com.aetrion.flickr.photos.PhotoList;
import com.aetrion.flickr.photos.PhotosInterface;
import com.aetrion.flickr.util.IOUtilities;
import java.io.*;
import java.util.Iterator;
import org.apache.commons.io.FileUtils;
public class authenticate {
Flickr f;
RequestContext requestContext;
String frob = "";
String token = "";
Properties properties = null;
public authenticate() throws ParserConfigurationException, IOException, SAXException {
InputStream in = null;
try {
in = getClass().getResourceAsStream("/setup.properties");
properties = new Properties();
properties.load(in);
} finally {
IOUtilities.close(in);
}
f = new Flickr(
properties.getProperty("apiKey"),
properties.getProperty("secret"),
new REST()
);
Flickr.debugStream = false;
requestContext = RequestContext.getRequestContext();
AuthInterface authInterface = f.getAuthInterface();
try {
frob = authInterface.getFrob();
} catch (FlickrException e) {
e.printStackTrace();
}
System.out.println("frob: " + frob);
URL url = authInterface.buildAuthenticationUrl(Permission.DELETE, frob);
System.out.println("Press return after you granted access at this URL:");
System.out.println(url.toExternalForm());
BufferedReader infile =
new BufferedReader ( new InputStreamReader (System.in) );
String line = infile.readLine();
try {
Auth auth = authInterface.getToken(frob);
System.out.println("Authentication success");
// This token can be used until the user revokes it.
System.out.println("Token: " + auth.getToken());
System.out.println("nsid: " + auth.getUser().getId());
System.out.println("Realname: " + auth.getUser().getRealName());
System.out.println("Username: " + auth.getUser().getUsername());
System.out.println("Permission: " + auth.getPermission().getType());
PhotoList list = f.getPhotosetsInterface().getPhotos("72157629794698308", 100, 1);
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
Photo photo = (Photo) iterator.next();
File file = new File("/tmp/" + photo.getId() + ".jpg");
ByteArrayOutputStream b = new ByteArrayOutputStream();
b.write(photo.getOriginalAsStream());
FileUtils.writeByteArrayToFile(file, b.toByteArray());
}
} catch (FlickrException e) {
System.out.println("Authentication failed");
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
authenticate t = new authenticate();
} catch(Exception e) {
e.printStackTrace();
}
System.exit(0);
}
}