0

嗨,我是 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);
}

}

4

2 回答 2

0

You are correct in your interpretation of the strikeout that getOriginalAsStream() is deprecated. It looks like you might want to rework your code to use PhotosInterface.getImageAsStream(), passing the ORIGINAL size as one of the arguments.

To adjust NetBeans' behavior with respect to deprecated methods, you can follow the link recommended by @AljoshaBre as well as this one.

于 2012-05-21T14:35:10.570 回答
0

如果您想从 Flickr 下载所有照片,如果您有一台 Mac 电脑,这是可能的。
在 Apple Store 下载 Aperture 程序并安装。
安装后,打开光圈。
继续偏好。
单击“帐户”选项卡。
单击左下角的加号 (+) 添加照片服务。
添加闪烁选项。
按照登录和授权说明进行操作。
完毕!您的所有照片都将在您的光圈库中同步,位于 ~/images/

我希望我有所帮助。

于 2017-05-29T11:29:08.440 回答