Assignment 8: Query Flikr
Si scriva una client Java che utilizza le API Flickr per scaricare un set di immagini pubbliche sulla base di alcuni criteri di ricerca.Il programma riceve come parametro:
- tagName: una stringa che rappresenta una parola con cui deve essere taggata l'immagine da reperire
- K: il numero massimo di immagini da scaricare
Il programma, dopo aver richiesti i parametri di input, interroga la seguente URL-FEED di Flickr:
https://api.flickr.com/services/feeds/photos_public.gne?pformat=json&nojsoncallback=1&tag=<tagName>
L'host interrogato restituisce un file JSON contenente la lista delle immagini pubbliche che hanno come tag il <tagName> specificato. Il seguente esempio illustra il formato JSON dell'elemento immagine:
{"title": "Spring Impressions",
"link": "https://www.flickr.com/photos/nathalisa/25330368064/",
"media": {"m":"https://farm2.staticflickr.com/1560/25330368064_1269ee3af2_m.jpg"},
"date_taken": "2014-03-14T13:06:36-08:00",
"description":<p><a href=\"https://www.flickr.com/people/nathalisa/\">Elisa Nathalie<\/a>posted …...
"published": "2016-03-21T15:50:22Z",
"author" : "nobody@flickr.com (Elisa Nathalie)",
"author_id": "101633358@N07",
"tags" : "flowers blue abstract macro nature yellow spring soft bokeh tamron" }
Il programma, dopo aver ottenuto i risultati JSON attraverso la URL-FEED e utilizzando la classe java.net.URL, legge i primi K elementi (immagini) restituiti. Per ogni elemento immagine viene creato un task che si occupa di leggere ilvalore "media.m" che contiene il link dell'immagine e successivamente provvede a scaricare l'immagine sull'host locale attraverso un socket.I task creati sono gestiti da un ThreadPool controllato dal programma principale.