Monday, November 08, 2010 at 12:01 AM.
system.verbs.apps.Flickr.photos.search
on search (userId, text="", minUploadDate=nil, maxUploadDate=nil, adrphotosarray=nil) {
<<Changes
<<8/23/07; 11:24:40 AM by DW
<<Added minUploadDate and maxUploadDate optional parameters.
<<8/21/07; 5:07:35 PM by DW
<<Created.
<<http://www.flickr.com/services/api/flickr.photos.search.html
new (tabletype, adrphotosarray);
on getpage (pagenum, adratts=nil) {
local (mystruct);
bundle { //set up mystruct
new (tabletype, @mystruct);
mystruct.api_key = user.flickr.prefs.apiKey;
mystruct.text = string (text);
mystruct.user_id = userid;
mystruct.page = number (pagenum);
if minUploadDate != nil {
mystruct.min_upload_date = date.dateToUnixDate (minUploadDate)};
if maxUploadDate != nil {
mystruct.max_upload_date = date.dateToUnixDate (maxUploadDate)}};
local (s = [user.flickr.prefs.server].flickr.photos.search (mystruct), xstruct);
s = string.replaceall (s, """, "\"");
xml.compile (s, @xstruct);
local (adrphotos = xml.getaddress (@xstruct, "photos"), adrphoto);
if adratts != nil {
adratts^ = adrphotos^.["/atts"]};
<<scratchpad.s = s
scratchpad.searchstruct = xstruct;
for adrphoto in adrphotos {
if nameof (adrphoto^) endswith "photo" {
if adrphotosarray != nil {
local (adrsub = @adrphotosarray^.[string.padwithzeros (sizeof (adrphotosarray^) + 1, 5)]);
adrsub^ = adrphoto^.["/atts"]}}}};
local (atts, i);
getpage (1, @atts);
for i = 2 to atts.pages {
getpage (i)}};
bundle { //test code
local (d = date.set (1, 8, 2007, 0, 0, 0));
window.about ();
search ("22221172@N00", minUploadDate:d, adrphotosarray:@scratchpad.photosrecent)}
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.