繁体   English   中英

java flickr和flickrj下载用户图片

[英]java flickr and flickrj download user pictures

嗨,我是flickrj库的新手。
虽然有基础的Java知识。
我正在从事的项目要求我先对flickr进行身份验证,然后将带有地理标签的图像下载到本地硬盘驱动器的文件夹中。 该程序将是桌面应用程序。
我将程序分为3个步骤进行处理。



1.完成正确的身份验证。(我已经成功了)
2.尝试下载用户通过身份验证后拥有的所有照片。
3.尝试稍微修改一下代码,使其仅下载带有地理标签的图像。

我的问题出在步骤2上。我无法下载已登录的用户图像,更不用说带有地理标签的用户图像了。 我想丹尼尔Cukier提供的代码在这里
但是我遇到了问题。 我的netbeans只是从.getOriginalAsStream()部分的第77行开始,出现错误“ java.lang.RuntimeException:无法编译的源代码-错误的符号类型:java.io.ByteArrayOutputStream.write”
根据我的理解,netbeans下线意味着,它已经贬值了,但是它仍然可以正常工作吗? 是什么阻碍了整个问题?

我已经尝试过研究,但基本上我必须承认,这是我无法解决问题的能力。 如果有人对我做错了什么有任何想法,我将非常感激。
附:我不希望被人喂,但请以白痴友好的方式回答我,因为我仍然是学生,而我的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);
}

}

您对不赞成使用getOriginalAsStream()的删除规则的解释是正确的。 看来您可能需要重新编写代码以使用PhotosInterface.getImageAsStream() ,并将ORIGINAL大小作为参数之一传递。

要调整NetBeans的相对于不赞成的方法行为,可以遵循@AljoshaBre以及推荐的链接这一个

如果要从Flickr下载所有照片,则如果有Mac计算机,则可以这样做。
在Apple Store上下载并安装Aperture程序。
安装后,打开Aperture。
继续进行偏好设置。
点击“帐户”标签。
单击左下角的加号(+)添加照片服务。
添加闪烁选项。
请遵循登录和授权说明。
做完了! 您所有的照片将在〜/ images /中的光圈库中同步

我希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM