コード例 #1
0
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;
}
コード例 #2
0
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);
}
コード例 #3
0
    $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;
コード例 #4
0
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));
}