function flickr_faves_import_photo(&$photo, &$user) { $ph_rsp = flickr_photos_import_photo($photo); if (!$ph_rsp['ok']) { return $ph_rsp; } $fave_rsp = flickr_faves_add_fave($user, $ph_rsp['photo'], $photo['date_faved']); return $fave_rsp; }
function flickr_faves_import_for_nsid($nsid, $more = array()) { $flickr_user = flickr_users_get_by_nsid($nsid); $user = users_get_by_id($flickr_user['user_id']); if (!$user) { return array('ok' => 0, 'error' => 'not a valid user'); } $method = 'flickr.favorites.getList'; $args = array('user_id' => $flickr_user['nsid'], 'auth_token' => $flickr_user['auth_token'], 'extras' => 'original_format,tags,media,date_upload,date_taken,geo,owner_name', 'per_page' => 100, 'page' => 1); if (isset($more['min_fave_date'])) { $args['min_fave_date'] = $more['min_fave_date']; } $pages = null; $count = 0; while (!isset($pages) || $pages >= $args['page']) { $rsp = flickr_api_call($method, $args); if (!$rsp['ok']) { return $rsp; } if (!isset($pages)) { $pages = $rsp['rsp']['photos']['pages']; } $photos = $rsp['rsp']['photos']['photo']; if (!is_array($photos)) { return array('ok' => 0, 'error' => 'no photos'); } foreach ($photos as $photo) { $ph_rsp = flickr_photos_import_photo($photo); if (!$ph_rsp['ok']) { return $ph_rsp; } $fave_rsp = flickr_faves_add_fave($user, $ph_rsp['photo'], $photo['date_faved']); if ($fave_rsp['ok']) { $count++; } } $args['page'] += 1; } return array('ok' => 1, 'count_imported' => $count); }
$multi_rsp = http_multi($reqs); $topic_map = flickr_push_topic_map(); $topic_id = $subscription['topic_id']; $topic = $topic_map[$topic_id]; foreach ($multi_rsp as $rsp) { $rsp = flickr_api_parse_response($rsp); if (!$rsp['ok']) { continue; } $photo = $rsp['rsp']['photo']; $spr = flickr_push_utils_info2spr($photo); # log_info("[PUSH] {$topic} ({$user['id']}) start import..."); # log_info("[PUSH] SPR " . var_export($spr, 1)); $import_rsp = null; if ($topic == 'my_photos') { $import_rsp = flickr_photos_import_photo($spr); } else { if ($topic == 'my_faves') { $import_rsp = flickr_faves_import_photo($spr, $user); } else { if ($topic == 'commons') { $import_rsp = flickr_photos_import_photo($spr); } else { # log_info("skip photo for '{$user['id']}' : '{$topic}'"); } } } # log_info("[PUSH] {$topic} ({$user['id']}) : " . var_export($import_rsp, 1)); } } exit;
function flickr_photos_import_get_recent($nsid, $more = array()) { $flickr_user = flickr_users_get_by_nsid($nsid); $user = users_get_by_id($flickr_user['user_id']); if (!$user) { return array('ok' => 0, 'error' => 'not a valid user'); } $method = 'flickr.photos.recentlyUpdated'; if (!isset($more['min_date'])) { $offset_days = 1; $offset = intval(60 * 60 * 24 * $offset_days); $min_date = time() - $offset; } else { $min_date = intval($more['min_date']); } $args = array('auth_token' => $flickr_user['auth_token'], 'min_date' => $min_date, 'extras' => 'original_format,tags,media,date_upload,date_taken,geo', 'per_page' => 100, 'page' => 1); $pages = null; $imported = 0; # TO DO: capture dateupdate for each photo and return that # if there's a fatal error so that the FlickrBackups database # can be set with something other than 0 (20111206/straup) while (!isset($pages) || $pages >= $args['page']) { # because the Flickr API has an annoying habit of # timing out and this causes an initial import of # photos to fail and be repeated in-toto over and # over again (20111206/straup) $tries = 1; $max_tries = 5; $ok = 0; while (!$ok && $tries < $max_tries) { $rsp = flickr_api_call($method, $args); $ok = $rsp['ok']; $tries++; if ($ok) { $photos = $rsp['rsp']['photos']['photo']; if (!is_array($photos)) { $rsp = not_okay("no photos"); $ok = 0; } } } if (!$ok) { return $rsp; } if (!isset($pages)) { $pages = $rsp['rsp']['photos']['pages']; } # TO DO: date update stuff (see above) foreach ($photos as $photo) { flickr_photos_import_photo($photo, $more); $imported++; } $args['page'] += 1; } return okay(array('count_imported' => $imported)); }