function result = queryFlickrApi(original_keywords) % example usage: result = queryFlickrApi(); % information: see flickr api page: https://www.flickr.com/services/api/ % https://www.flickr.com/services/api/explore/flickr.photos.search if ~exist('original_keywords','var') original_keywords = 'living room'; end apiURL = 'http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=d10c081d41108144231911c96fcfe4c9&text=%s&page=%d&per_page=500'; %urlPhoto = 'http://farm%s.static.flickr.com/%s/%s_%s_b.jpg'; %sprintf(urlPhoto,farm_id,server_id,photo_id,secret_id); query = urlencode(original_keywords); query = regexprep(query,'%E2%80%8B',''); %<- strange bug result = []; page = 1; pageCnt = 1; while true link = sprintf(apiURL,query,page); strXML = urlread(link); if page==1 str = strXML; pos = findstr(str,'pages="'); if isempty(pos) break; else str = str(pos(1)+length('pages="'):end); pos = findstr(str,'"'); str = str(1:pos(1)-1); pageCnt = str2num(str); if pageCnt==0 break; end %if pageCnt > 200 && (length(findstr(original_keywords,' '))+1)==1 % pageCnt = 11; %end % http://www.flickr.com/groups/api/discuss/72157600679839291/ % you cannot get more than 5k images from flickr if pageCnt >11 pageCnt = 11; end end end resultNow = parseFlickr(strXML, original_keywords); result = [result; resultNow]; %{ fname = [tempname '.xml']; fp = fopen(fname,'w'); fprintf(fp,'%s',strXML); fclose(fp); outObj = readFlickrObj(fname, original_keywords); delete(fname); %} if page >=pageCnt break; end page = page+1; end function result = parseFlickr(strXML, keywords) ids = regexp(strXML,'(