こんにちは、flickrj ライブラリは初めてです。
ただし、基本的なJavaの知識があります。
私が取り組んでいるプロジェクトでは、flickr で認証してから、ジオタグ付きの画像をローカル ハード ドライブのフォルダーにダウンロードする必要があります。プログラムは、デスクトップ アプリケーション プログラムになります。
3 つのステップに分けてプログラムに取り組んでいます。
1.適切な認証が完了します。(私は成功しました)
2.認証されたときにユーザーが持っているすべての写真をダウンロードしてみてください。
3.ジオタグ付きの画像のみをダウンロードするように、コードを少し変更してみてください。
私の問題はステップ 2 にあります。ジオタグ付きの画像はもちろん、ログインしているユーザーの画像もダウンロードできません。ここでDaniel Cukier が提供するコードを試していますが、
問題が発生しています。私のネットビーンズは、.getOriginalAsStream() 部分の 77 行目で、「java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: java.io.ByteArrayOutputStream.write」というエラーが表示されるだけです
。つまり、減価償却されていますが、まだ機能するべきではありませんか? この問題全体を妨げているのは何ですか?
私は調査を試みましたが、基本的に認めざるを得ません。トラブルシューティングを行う能力を超えています。誰かが私が間違っていることについて何か考えを持っているなら、私はとても感謝しています.
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);
}
}