Utilisez-vous Flickr? 1 To est également gratuit, vous voulez donc télécharger toutes les images et vidéos ici! Il existe également une API, donc elle peut être utilisée à partir du programme ... Lorsque j'ai essayé et recherché, il y a plusieurs façons d'obtenir des images publiques, mais étonnamment, il n'y a pas beaucoup de façons d'obtenir des images privées ... Alors, je le posterai au lieu d'un mémorandum (* ・ ω ・) ノ
Ça ne commencera pas sans ça (> _ <) Veuillez obtenir les informations suivantes. https://www.flickr.com/services/apps/create/apply/
Si vous souhaitez obtenir une image privée, vous avez besoin du jeton OAuth et du secret du jeton OAuth. Il sera nécessaire pour le téléchargement, donc cela ne fera pas de mal de l'obtenir (・ ∀ ・) Veuillez vous référer à la procédure suivante pour l'obtenir. Getting a Request Token
avec ça
Sont prêts! Il est maintenant temps d'exécuter le code.
Cette fois, j'utiliserai la bibliothèque. En cas de gradle, ajoutez ce qui suit.
build.gradle
.....
dependencies {
compile('com.flickr4java:flickr4java:2.17')
}
.....
En générant une classe Auth comme indiqué ci-dessous et en la définissant dans RequestContext, vous pouvez également accéder aux fichiers privés. Veuillez lire la partie $ {Api Key} comme appropriée pour vous-même.
Main.java
import com.flickr4java.flickr.Flickr;
import com.flickr4java.flickr.FlickrException;
import com.flickr4java.flickr.REST;
import com.flickr4java.flickr.RequestContext;
import com.flickr4java.flickr.auth.Auth;
public class Main {
public static void main(String... args) throws FlickrException {
final Flickr flickr = new Flickr(
"${Api Key}",
"${Shared Secret}",
new REST()
);
Auth auth = new Auth();
auth.setToken("${OAuth Token}");
auth.setTokenSecret("${OAuth Token Secret}");
RequestContext requestContext = RequestContext.getRequestContext();
requestContext.setAuth(auth);
PhotosetsInterface photosetsInterface = flickr.getPhotosetsInterface();
}
}
Vous pouvez obtenir l'URL publique en la formatant en vous référant à ce qui suit. https://www.flickr.com/services/api/misc.urls.html
En faisant cela, vous pouvez obtenir toutes les images de petite taille (320px) des utilisateurs d'API, qu'elles soient publiques ou privées.
Main.java
import com.flickr4java.flickr.Flickr;
import com.flickr4java.flickr.FlickrException;
import com.flickr4java.flickr.REST;
import com.flickr4java.flickr.RequestContext;
import com.flickr4java.flickr.auth.Auth;
import com.flickr4java.flickr.photosets.Photoset;
import com.flickr4java.flickr.photosets.Photosets;
import com.flickr4java.flickr.photosets.PhotosetsInterface;
public class Main {
private static final String IMAGE_URL = "https://farm%s.staticflickr.com/%s/%s_%s_%s.jpg ";
public static void main(String... args) throws FlickrException {
final Flickr flickr = new Flickr(
"${Api Key}",
"${Shared Secret}",
new REST()
);
Auth auth = new Auth();
auth.setToken("${OAuth Token}");
auth.setTokenSecret("${OAuth Token Secret}");
RequestContext requestContext = RequestContext.getRequestContext();
requestContext.setAuth(auth);
PhotosetsInterface photosetsInterface = flickr.getPhotosetsInterface();
Photosets photosets = photosetsInterface.getList(null);
photosets.getPhotosets().stream().map(Photoset::getId).flatMap(id -> {
try {
return photosetsInterface.getPhotos(id, 0, 0).stream();
} catch (FlickrException e) {
throw new RuntimeException();
}
}).forEach(photo -> System.out.println(
String.format(IMAGE_URL, photo.getFarm(), photo.getServer(), photo.getId(), photo.getSecret(), "n")
)
);
}
}
J'ai pu obtenir l'URL publique d'un fichier privé avec un code relativement simple! S'il s'agit d'une application personnelle, je pense que vous pouvez utiliser ce type de traitement ♪
Recommended Posts