Photo

## Photo Photo — Photo. |

## Synopsis

                        flickcurl_photo;
    void                flickcurl_free_photo                (flickcurl_photo *photo);
    void                flickcurl_free_photos               (flickcurl_photo **photos);
    const char*         flickcurl_get_photo_field_label     (flickcurl_photo_field_type field);
    char*               flickcurl_photo_as_source_uri       (flickcurl_photo *photo,
                                                             const char c);
                        flickcurl_photo_field;
    enum                flickcurl_photo_field_type;
    enum                flickcurl_field_value_type;
    int                 flickcurl_photos_addTags            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *tags);
    char*               flickcurl_photos_comments_addComment
                                                            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *comment_text);
    int                 flickcurl_photos_comments_deleteComment
                                                            (flickcurl *fc,
                                                             const char *comment_id);
    int                 flickcurl_photos_comments_editComment
                                                            (flickcurl *fc,
                                                             const char *comment_id,
                                                             const char *comment_text);
    flickcurl_comment** flickcurl_photos_comments_getList   (flickcurl *fc,
                                                             const char *photo_id);
    int                 flickcurl_photos_delete             (flickcurl *fc,
                                                             const char *photo_id);
    flickcurl_location* flickcurl_photos_geo_getLocation    (flickcurl *fc,
                                                             const char *photo_id);
    flickcurl_perms*    flickcurl_photos_geo_getPerms       (flickcurl *fc,
                                                             const char *photo_id);
    int                 flickcurl_photos_geo_removeLocation (flickcurl *fc,
                                                             const char *photo_id);
    int                 flickcurl_photos_geo_setLocation    (flickcurl *fc,
                                                             const char *photo_id,
                                                             flickcurl_location *location);
    int                 flickcurl_photos_geo_setPerms       (flickcurl *fc,
                                                             const char *photo_id,
                                                             flickcurl_perms *perms);
    flickcurl_context** flickcurl_photos_getAllContexts     (flickcurl *fc,
                                                             const char *photo_id);
    flickcurl_photo**   flickcurl_photos_getContactsPhotos  (flickcurl *fc,
                                                             int contact_count,
                                                             int just_friends,
                                                             int single_photo,
                                                             int include_self,
                                                             const char *extras);
    flickcurl_photo**   flickcurl_photos_getContactsPublicPhotos
                                                            (flickcurl *fc,
                                                             const char *user_id,
                                                             int photo_count,
                                                             int just_friends,
                                                             int single_photo,
                                                             int include_self,
                                                             const char *extras);
    flickcurl_context** flickcurl_photos_getContext         (flickcurl *fc,
                                                             const char *photo_id);
    int**               flickcurl_photos_getCounts          (flickcurl *fc,
                                                             const char **dates_array,
                                                             const char **taken_dates_array);
    flickcurl_exif**    flickcurl_photos_getExif            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *secret);
    flickcurl_person**  flickcurl_photos_getFavorites       (flickcurl *fc,
                                                             const char *photo_id,
                                                             int page,
                                                             int per_page);
    flickcurl_photo*    flickcurl_photos_getInfo            (flickcurl *fc,
                                                             const char *photo_id);
    flickcurl_photo**   flickcurl_photos_getNotInSet        (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);
    flickcurl_perms*    flickcurl_photos_getPerms           (flickcurl *fc,
                                                             const char *photo_id);
    flickcurl_photo**   flickcurl_photos_getRecent          (flickcurl *fc,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);
    flickcurl_size**    flickcurl_photos_getSizes           (flickcurl *fc,
                                                             const char *photo_id);
    flickcurl_photo**   flickcurl_photos_getUntagged        (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);
    flickcurl_photo**   flickcurl_photos_getWithGeoData     (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);
    flickcurl_photo**   flickcurl_photos_getWithoutGeoData  (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);
    flickcurl_license** flickcurl_photos_licenses_getInfo   (flickcurl *fc);
    flickcurl_license*  flickcurl_photos_licenses_getInfo_by_id
                                                            (flickcurl *fc,
                                                             int id);
    int                 flickcurl_photos_licenses_setLicense
                                                            (flickcurl *fc,
                                                             const char *photo_id,
                                                             int license_id);
    char*               flickcurl_photos_notes_add          (flickcurl *fc,
                                                             const char *photo_id,
                                                             int note_x,
                                                             int note_y,
                                                             int note_w,
                                                             int note_h,
                                                             const char *note_text);
    int                 flickcurl_photos_notes_delete       (flickcurl *fc,
                                                             const char *note_id);
    int                 flickcurl_photos_notes_edit         (flickcurl *fc,
                                                             const char *note_id,
                                                             int note_x,
                                                             int note_y,
                                                             int note_w,
                                                             int note_h,
                                                             const char *note_text);
    flickcurl_photo**   flickcurl_photos_recentlyUpdated    (flickcurl *fc,
                                                             int min_date,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);
    int                 flickcurl_photos_removeTag          (flickcurl *fc,
                                                             const char *tag_id);
    flickcurl_upload_status* flickcurl_photos_replace       (flickcurl *fc,
                                                             const char *photo_file,
                                                             const char *photo_id,
                                                             int async);
    flickcurl_photo**   flickcurl_photos_search             (flickcurl *fc,
                                                             flickcurl_search_params *params);
                        flickcurl_search_params;
    int                 flickcurl_photos_setContentType     (flickcurl *fc,
                                                             const char *photo_id,
                                                             int content_type);
    int                 flickcurl_photos_setDates           (flickcurl *fc,
                                                             const char *photo_id,
                                                             int date_posted,
                                                             int date_taken,
                                                             int date_taken_granularity);
    int                 flickcurl_photos_setMeta            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *title,
                                                             const char *description);
    int                 flickcurl_photos_setPerms           (flickcurl *fc,
                                                             const char *photo_id,
                                                             flickcurl_perms *perms);
    int                 flickcurl_photos_setSafetyLevel     (flickcurl *fc,
                                                             const char *photo_id,
                                                             int safety_level,
                                                             int hidden);
    int                 flickcurl_photos_setTags            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *tags);
    int                 flickcurl_photos_transform_rotate   (flickcurl *fc,
                                                             const char *photo_id,
                                                             int degrees);
    flickcurl_ticket**  flickcurl_photos_upload_checkTickets
                                                            (flickcurl *fc,
                                                             const char **tickets_ids);
    flickcurl_upload_status* flickcurl_photos_upload_params (flickcurl *fc,
                                                             flickcurl_upload_params *params);

## Description

Photo.

## Details

### flickcurl_photo

    typedef struct {
      char *id;
      char *uri;

      flickcurl_tag** tags;
      int tags_count;

      flickcurl_photo_field fields[PHOTO_FIELD_LAST + 1];

      flickcurl_place* place;

      flickcurl_video* video;

      char *media_type;
    } flickcurl_photo;

A photo or video.

char *`id`; | photo/video ID
char *`uri`; | photo/video page URI
flickcurl_tag **`tags`; | array of tags (may be NULL)
int `tags_count`; | size of tags array
flickcurl_photo_field `fields`[PHOTO_FIELD_LAST + 1]; | metadata fields
flickcurl_place *`place`; | place
flickcurl_video *`video`; | video (may be NULL)
char *`media_type`; | "photo" or "video"

### flickcurl_free_photo ()

    void                flickcurl_free_photo                (flickcurl_photo *photo);

Destructor for photo object

`photo` : | photo object

### flickcurl_free_photos ()

    void                flickcurl_free_photos               (flickcurl_photo **photos);

Destructor for array of photo objects

`photos` : | photo object array

### flickcurl_get_photo_field_label ()

    const char*         flickcurl_get_photo_field_label     (flickcurl_photo_field_type field);

Get label for photo field.

`field` : | field enum
Returns : | label string or NULL if none valid

### flickcurl_photo_as_source_uri ()

    char*               flickcurl_photo_as_source_uri       (flickcurl_photo *photo,
                                                             const char c);

Get a photo's image source URIs

`c` can be s,m,t,b for sizes, o for original, otherwise default http://www.flickr.com/services/api/misc.urls.html

`photo` : | photo object
`c` : | size s, m, t or b
Returns : | source URI or NULL on failure

### flickcurl_photo_field

    typedef struct {
      char* string;
      flickcurl_photo_field_type integer;
      flickcurl_field_value_type type;
    } flickcurl_photo_field;

Field of a photo structure

char *`string`; | string field value
flickcurl_photo_field_type `integer`; | integer field value
flickcurl_field_value_type `type`; | field type

### enum flickcurl_photo_field_type

    typedef enum {
      PHOTO_FIELD_none,
      PHOTO_FIELD_dateuploaded,
      PHOTO_FIELD_farm,
      PHOTO_FIELD_isfavorite,
      PHOTO_FIELD_license,
      PHOTO_FIELD_originalformat,
      PHOTO_FIELD_rotation,
      PHOTO_FIELD_server,
      PHOTO_FIELD_dates_lastupdate,
      PHOTO_FIELD_dates_posted,
      PHOTO_FIELD_dates_taken,
      PHOTO_FIELD_dates_takengranularity,
      PHOTO_FIELD_description,
      PHOTO_FIELD_editability_canaddmeta,
      PHOTO_FIELD_editability_cancomment,
      PHOTO_FIELD_geoperms_iscontact,
      PHOTO_FIELD_geoperms_isfamily,
      PHOTO_FIELD_geoperms_isfriend,
      PHOTO_FIELD_geoperms_ispublic,
      PHOTO_FIELD_location_accuracy,
      PHOTO_FIELD_location_latitude,
      PHOTO_FIELD_location_longitude,
      PHOTO_FIELD_owner_location,
      PHOTO_FIELD_owner_nsid,
      PHOTO_FIELD_owner_realname,
      PHOTO_FIELD_owner_username,
      PHOTO_FIELD_title,
      PHOTO_FIELD_visibility_isfamily,
      PHOTO_FIELD_visibility_isfriend,
      PHOTO_FIELD_visibility_ispublic,
      PHOTO_FIELD_secret,
      PHOTO_FIELD_originalsecret,
      PHOTO_FIELD_location_neighborhood,
      PHOTO_FIELD_location_locality,
      PHOTO_FIELD_location_county,
      PHOTO_FIELD_location_region,
      PHOTO_FIELD_location_country,
      PHOTO_FIELD_location_placeid,
      PHOTO_FIELD_neighborhood_placeid,
      PHOTO_FIELD_locality_placeid,
      PHOTO_FIELD_county_placeid,
      PHOTO_FIELD_region_placeid,
      PHOTO_FIELD_country_placeid,
      PHOTO_FIELD_location_woeid,
      PHOTO_FIELD_neighborhood_woeid,
      PHOTO_FIELD_locality_woeid,
      PHOTO_FIELD_county_woeid,
      PHOTO_FIELD_region_woeid,
      PHOTO_FIELD_country_woeid,
      PHOTO_FIELD_usage_candownload,
      PHOTO_FIELD_usage_canblog,
      PHOTO_FIELD_usage_canprint,
      PHOTO_FIELD_FIRST = PHOTO_FIELD_dateuploaded,
      PHOTO_FIELD_LAST = PHOTO_FIELD_usage_canprint
    } flickcurl_photo_field_type;

Fields of a flickcurl_photo*

`PHOTO_FIELD_none` | internal
`PHOTO_FIELD_dateuploaded` | date uploaded
`PHOTO_FIELD_farm` | farm number
`PHOTO_FIELD_isfavorite` | is favorite boolean
`PHOTO_FIELD_license` | license
`PHOTO_FIELD_originalformat` | original format
`PHOTO_FIELD_rotation` | rotation
`PHOTO_FIELD_server` | server
`PHOTO_FIELD_dates_lastupdate` | last update date
`PHOTO_FIELD_dates_posted` | posted date
`PHOTO_FIELD_dates_taken` | taken date
`PHOTO_FIELD_dates_takengranularity` | taken granularity
`PHOTO_FIELD_description` | description
`PHOTO_FIELD_editability_canaddmeta` | can add metadata boolean
`PHOTO_FIELD_editability_cancomment` | can comment boolean
`PHOTO_FIELD_geoperms_iscontact` | geo perms are for contacts
`PHOTO_FIELD_geoperms_isfamily` | geo perms are for family
`PHOTO_FIELD_geoperms_isfriend` | geo perms are for frind
`PHOTO_FIELD_geoperms_ispublic` | geo perms are for public
`PHOTO_FIELD_location_accuracy` | location accuracy
`PHOTO_FIELD_location_latitude` | location latitude
`PHOTO_FIELD_location_longitude` | location longitude
`PHOTO_FIELD_owner_location` | owner location
`PHOTO_FIELD_owner_nsid` | owner NSID
`PHOTO_FIELD_owner_realname` | owner real name
`PHOTO_FIELD_owner_username` | owner user name
`PHOTO_FIELD_title` | title
`PHOTO_FIELD_visibility_isfamily` | visibility is for family
`PHOTO_FIELD_visibility_isfriend` | visibility is for friend
`PHOTO_FIELD_visibility_ispublic` | visibility is for public
`PHOTO_FIELD_secret` | photo secret
`PHOTO_FIELD_originalsecret` | photo original secret
`PHOTO_FIELD_location_neighborhood` | location neighborhood
`PHOTO_FIELD_location_locality` | location locality
`PHOTO_FIELD_location_county` | location county
`PHOTO_FIELD_location_region` | location region
`PHOTO_FIELD_location_country` | location country
`PHOTO_FIELD_location_placeid` | location place ID
`PHOTO_FIELD_neighborhood_placeid` | neighborhood place ID
`PHOTO_FIELD_locality_placeid` | locality place ID
`PHOTO_FIELD_county_placeid` | county place ID
`PHOTO_FIELD_region_placeid` | region place ID
`PHOTO_FIELD_country_placeid` | country place ID
`PHOTO_FIELD_location_woeid` | location WOE ID
`PHOTO_FIELD_neighborhood_woeid` | neighborhood WOE ID
`PHOTO_FIELD_locality_woeid` | locality WOE ID
`PHOTO_FIELD_county_woeid` | county WOE ID
`PHOTO_FIELD_region_woeid` | region WOE ID
`PHOTO_FIELD_country_woeid` | country WOE ID
`PHOTO_FIELD_usage_candownload` | can download
`PHOTO_FIELD_usage_canblog` | can blog
`PHOTO_FIELD_usage_canprint` | can print
`PHOTO_FIELD_FIRST` | internal offset to first in enum list
`PHOTO_FIELD_LAST` | internal offset to last in enum list

### enum flickcurl_field_value_type

    typedef enum {
      VALUE_TYPE_NONE, /* empty field */
      VALUE_TYPE_PHOTO_ID, /* internal */
      VALUE_TYPE_PHOTO_URI, /* internal */
      VALUE_TYPE_UNIXTIME,
      VALUE_TYPE_BOOLEAN,
      VALUE_TYPE_DATETIME,
      VALUE_TYPE_FLOAT,
      VALUE_TYPE_INTEGER,
      VALUE_TYPE_STRING,
      VALUE_TYPE_URI,
      VALUE_TYPE_PERSON_ID, /* internal */
      VALUE_TYPE_MEDIA_TYPE, /* internal */
      VALUE_TYPE_LAST = VALUE_TYPE_MEDIA_TYPE
    } flickcurl_field_value_type;

Field data types

`VALUE_TYPE_NONE` | internal
`VALUE_TYPE_PHOTO_ID` | internal
`VALUE_TYPE_PHOTO_URI` | internal
`VALUE_TYPE_UNIXTIME` | a unixtime
`VALUE_TYPE_BOOLEAN` | boolean
`VALUE_TYPE_DATETIME` | date time
`VALUE_TYPE_FLOAT` | floating point number
`VALUE_TYPE_INTEGER` | integer
`VALUE_TYPE_STRING` | string
`VALUE_TYPE_URI` | URI
`VALUE_TYPE_PERSON_ID` | person ID
`VALUE_TYPE_MEDIA_TYPE` | internal
`VALUE_TYPE_LAST` | internal offset to last in enum list

### flickcurl_photos_addTags ()

    int                 flickcurl_photos_addTags            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *tags);

Add tags to a photo.

Implements flickr.photos.addTags (0.9)

`fc` : | flickcurl context
`photo_id` : | photo ID
`tags` : | tags to add as a space-separated list
Returns : | non-0 on failure

### flickcurl_photos_comments_addComment ()

    char*               flickcurl_photos_comments_addComment
                                                            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *comment_text);

Add comment to a photo as the currently authenticated user.

Implements flickr.photos.comments.addComment (0.10)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to add a comment to.
`comment_text` : | Text of the comment
Returns : | new comment ID or non-NULL on failure

### flickcurl_photos_comments_deleteComment ()

    int                 flickcurl_photos_comments_deleteComment
                                                            (flickcurl *fc,
                                                             const char *comment_id);

Delete a comment as the currently authenticated user.

Implements flickr.photos.comments.deleteComment (0.10)

`fc` : | flickcurl context
`comment_id` : | The id of the comment to edit.
Returns : | non-0 on failure

### flickcurl_photos_comments_editComment ()

    int                 flickcurl_photos_comments_editComment
                                                            (flickcurl *fc,
                                                             const char *comment_id,
                                                             const char *comment_text);

Edit the text of a comment as the currently authenticated user.

Implements flickr.photos.comments.editComment (0.10)

`fc` : | flickcurl context
`comment_id` : | The id of the comment to edit.
`comment_text` : | Update the comment to this text.
Returns : | non-0 on failure

### flickcurl_photos_comments_getList ()

    flickcurl_comment** flickcurl_photos_comments_getList   (flickcurl *fc,
                                                             const char *photo_id);

Returns the comments for a photo

Implements flickr.photos.comments.getList (0.10)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to fetch comments for.
Returns : | array of comments or NULL on failure

### flickcurl_photos_delete ()

    int                 flickcurl_photos_delete             (flickcurl *fc,
                                                             const char *photo_id);

Delete a photo.

Implements flickr.photos.delete (0.9)

`fc` : | flickcurl context
`photo_id` : | photo ID
Returns : | non-0 on failure

### flickcurl_photos_geo_getLocation ()

    flickcurl_location* flickcurl_photos_geo_getLocation    (flickcurl *fc,
                                                             const char *photo_id);

Get the geo data (latitude and longitude and the accuracy level) for a photo.

Implements flickr.photos.geo.getLocation (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo you want to retrieve location data for.
Returns : | non-0 on failure

### flickcurl_photos_geo_getPerms ()

    flickcurl_perms*    flickcurl_photos_geo_getPerms       (flickcurl *fc,
                                                             const char *photo_id);

Get permissions for who may view geo data for a photo.

Implements flickr.photos.geo.getPerms (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to get permissions for.
Returns : | non-0 on failure

### flickcurl_photos_geo_removeLocation ()

    int                 flickcurl_photos_geo_removeLocation (flickcurl *fc,
                                                             const char *photo_id);

Removes the geo data associated with a photo.

Implements flickr.photos.geo.removeLocation (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo you want to remove location data from.
Returns : | non-0 on failure

### flickcurl_photos_geo_setLocation ()

    int                 flickcurl_photos_geo_setLocation    (flickcurl *fc,
                                                             const char *photo_id,
                                                             flickcurl_location *location);

Sets the geo data (latitude and longitude and, optionally, the accuracy level) for a photo.

Implements flickr.photos.geo.setLocation (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to set location data for.
`location` : | The location
Returns : | non-0 on failure

### flickcurl_photos_geo_setPerms ()

    int                 flickcurl_photos_geo_setPerms       (flickcurl *fc,
                                                             const char *photo_id,
                                                             flickcurl_perms *perms);

Set the permission for who may view the geo data associated with a photo.

Implements flickr.photos.geo.setPerms (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to get permissions for.
`perms` : | Geo permissions
Returns : | non-0 on failure

### flickcurl_photos_getAllContexts ()

    flickcurl_context** flickcurl_photos_getAllContexts     (flickcurl *fc,
                                                             const char *photo_id);

Get all visible sets and pools the photo belongs to.

Implements flickr.photos.getAllContexts (0.7)

Returns an array of size 3 [prev, next, NULL] flickcurl_context* or NULL on error

`fc` : | flickcurl context
`photo_id` : | photo ID
Returns : | prev, next contexts or NULL

### flickcurl_photos_getContactsPhotos ()

    flickcurl_photo**   flickcurl_photos_getContactsPhotos  (flickcurl *fc,
                                                             int contact_count,
                                                             int just_friends,
                                                             int single_photo,
                                                             int include_self,
                                                             const char *extras);

Fetch a list of recent photos from the calling users' contacts.

Optional extra type 'media' that will return an extra media=VALUE for VALUE "photo" or "video". API addition 2008-04-07.

Implements flickr.photos.getContactsPhotos (0.11)

`fc` : | flickcurl context
`contact_count` : | Number of photos to return (Default 10, maximum 50)
`just_friends` : | Set to non-0 to only show photos from friends and family (excluding regular contacts).
`single_photo` : | Set to non-0 to only fetch one photo (the latest) per contact, instead of all photos in chronological order.
`include_self` : | Set to non-0 to include photos from the calling user.
`extras` : | A comma-delimited list of extra information to fetch for each returned record. Currently supported fields are: license, date_upload, date_taken, owner_name, icon_server, original_format, last_update (or NULL for no extras)
Returns : | non-0 on failure

### flickcurl_photos_getContactsPublicPhotos ()

    flickcurl_photo**   flickcurl_photos_getContactsPublicPhotos
                                                            (flickcurl *fc,
                                                             const char *user_id,
                                                             int photo_count,
                                                             int just_friends,
                                                             int single_photo,
                                                             int include_self,
                                                             const char *extras);

Fetch a list of recent public photos from a users' contacts.

Optional extra type 'media' that will return an extra media=VALUE for VALUE "photo" or "video". API addition 2008-04-07.

Implements flickr.photos.getContactsPublicPhotos (0.12)

`fc` : | flickcurl context
`user_id` : | The NSID of the user to fetch photos for.
`photo_count` : | Number of photos to return (Default 10, maximum 50)
`just_friends` : | Set to non-0 to only show photos from friends and family (excluding regular contacts)
`single_photo` : | Set to non-0 to only fetch one photo (the latest) per contact, instead of all photos in chronological order.
`include_self` : | Set to non-0 to include photos from the user specified by user_id.
`extras` : | A comma-delimited list of extra information to fetch for each returned record. Currently supported fields are: license, date_upload, date_taken, owner_name, icon_server, original_format, last_update. (or NULL)
Returns : | a list of photos or NULL on failure

### flickcurl_photos_getContext ()

    flickcurl_context** flickcurl_photos_getContext         (flickcurl *fc,
                                                             const char *photo_id);

Get next and previous photos for a photo in a photostream.

Implements flickr.photos.getContext (0.7)

Returns an array of size 3 [prev, next, NULL] flickcurl_context* or NULL on error

`fc` : | flickcurl context
`photo_id` : | photo ID
Returns : | prev, next contexts or NULL

### flickcurl_photos_getCounts ()

    int**               flickcurl_photos_getCounts          (flickcurl *fc,
                                                             const char **dates_array,
                                                             const char **taken_dates_array);

Gets a list of photo counts for the given date ranges for the calling user.

Implements flickr.photos.getCounts (0.13)

The return array fields are: [0] count [1] fromdate as unixtime [2] todate as unixtime

`fc` : | flickcurl context
`dates_array` : | A comma delimited list of unix timestamps, denoting the periods to return counts for. They should be specified smallest first. (or NULL)
`taken_dates_array` : | A comma delimited list of mysql datetimes, denoting the periods to return counts for. They should be specified mallest first. (or NULL)
Returns : | array of int[3] or NULL on failure

### flickcurl_photos_getExif ()

    flickcurl_exif**    flickcurl_photos_getExif            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *secret);

Retrieves a list of EXIF/TIFF/GPS tags for a given photo.

Implements flickr.photos.getExif (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to fetch information for.
`secret` : | The secret for the photo (or NULL) If the correct secret is passed then permissions checking is skipped. This enables the 'sharing' of individual photos by passing around the id and secret.
Returns : | non-0 on failure

### flickcurl_photos_getFavorites ()

    flickcurl_person**  flickcurl_photos_getFavorites       (flickcurl *fc,
                                                             const char *photo_id,
                                                             int page,
                                                             int per_page);

Returns the list of people who have favorited a given photo.

Implements flickr.photos.getFavorites (0.12)

`fc` : | flickcurl context
`photo_id` : | The ID of the photo to fetch the favoriters list for.
`page` : | The page of results to return (default 1)
`per_page` : | Number of users to return per page (default 10, max 50)
Returns : | non-0 on failure

### flickcurl_photos_getInfo ()

    flickcurl_photo*    flickcurl_photos_getInfo            (flickcurl *fc,
                                                             const char *photo_id);

Get information about a photo

Implements flickr.photos.getInfo (0.5)

`fc` : | flickcurl context
`photo_id` : | photo ID
Returns : | flickcurl_photo or NULL on failure

### flickcurl_photos_getNotInSet ()

    flickcurl_photo**   flickcurl_photos_getNotInSet        (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);

Returns a list of your photos that are not part of any sets.

Implements flickr.photos.getNotInSet (0.12)

`fc` : | flickcurl context
`min_upload_date` : | Minimum upload date.
`max_upload_date` : | Maximum upload date.
`min_taken_date` : | Minimum taken date (or NULL).
`max_taken_date` : | Maximum taken date (or NULL).
`privacy_filter` : | Return photos only matching a certain privacy level. Valid privacy values are: 1 public, 2 friends, 3 family, 4 friends and family, 5 private
`extras` : | A comma-delimited list of extra information to fetch for each returned record (or NULL) Currently supported fields are: license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags.
`per_page` : | Number of photos to return per page (default 100, max 500).
`page` : | The page of results to return (default 1).
Returns : | a list of photos or NULL on failure

### flickcurl_photos_getPerms ()

    flickcurl_perms*    flickcurl_photos_getPerms           (flickcurl *fc,
                                                             const char *photo_id);

Get permissions for a photo.

Implements flickr.photos.getPerms (0.11)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to get permissions for.
Returns : | permissions or NULL on failure

### flickcurl_photos_getRecent ()

    flickcurl_photo**   flickcurl_photos_getRecent          (flickcurl *fc,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);

Returns a list of the latest public photos uploaded to flickr.

Optional extra type 'media' that will return an extra media=VALUE for VALUE "photo" or "video". API addition 2008-04-07.

Implements flickr.photos.getRecent (0.12)

`fc` : | flickcurl context
`extras` : | A comma-delimited list of extra information to fetch for each returned record (or NULL) Currently supported fields are: license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags.
`per_page` : | Number of photos to return per page (default 100, max 500)
`page` : | The page of results to return (default 1)
Returns : | non-0 on failure

### flickcurl_photos_getSizes ()

    flickcurl_size**    flickcurl_photos_getSizes           (flickcurl *fc,
                                                             const char *photo_id);

Returns the available sizes for a photo. The calling user must have permission to view the photo.

Implements flickr.photos.getSizes (0.13)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to fetch size information for.
Returns : | non-0 on failure

### flickcurl_photos_getUntagged ()

    flickcurl_photo**   flickcurl_photos_getUntagged        (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);

Returns a list of your photos with no tags.

Implements flickr.photos.getUntagged (0.12)

`fc` : | flickcurl context
`min_upload_date` : | Minimum upload date.
`max_upload_date` : | Maximum upload date.
`min_taken_date` : | Minimum taken date (or NULL)
`max_taken_date` : | Maximum taken date (or NULL)
`privacy_filter` : | Return photos only matching a certain privacy level. Valid privacy values are: 1 public, 2 friends, 3 family, 4 friends and family, 5 private
`extras` : | A comma-delimited list of extra information to fetch for each returned record (or NULL) Currently supported fields are: license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags.
`per_page` : | Number of photos to return per page (default 100, max 500).
`page` : | The page of results to return (default 1).
Returns : | a list of photos or NULL on failure

### flickcurl_photos_getWithGeoData ()

    flickcurl_photo**   flickcurl_photos_getWithGeoData     (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);

Returns a list of your geo-tagged photos.

Implements flickr.photos.getWithGeoData (0.12)

`fc` : | flickcurl context
`min_upload_date` : | Minimum upload date. Photos with an upload date greater than or equal to this value will be returned. The date should be in the form of a unix timestamp. (or NULL)
`max_upload_date` : | Maximum upload date. Photos with an upload date less than or equal to this value will be returned. The date should be in the form of a unix timestamp. (or NULL)
`min_taken_date` : | Minimum taken date. Photos with an taken date greater than or equal to this value will be returned. The date should be in the form of a mysql datetime. (or NULL)
`max_taken_date` : | Maximum taken date. Photos with an taken date less than or equal to this value will be returned. The date should be in the form of a mysql datetime. (or NULL)
`privacy_filter` : | Return photos only matching a certain privacy level. Valid values are: 1 public photos; 2 private photos visible to friends; 3 private photos visible to family; 4 private photos visible to friends and family; 5 completely private photos. (or NULL)
`extras` : | A comma-delimited list of extra information to fetch for each returned record. Currently supported fields are: license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags. (or NULL)
`per_page` : | Number of photos to return per page. If this argument is omitted, it defaults to 100. The maximum allowed value is 500. (or NULL)
`page` : | The page of results to return. If this argument is omitted, it defaults to 1. (or NULL)
Returns : | non-0 on failure

### flickcurl_photos_getWithoutGeoData ()

    flickcurl_photo**   flickcurl_photos_getWithoutGeoData  (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);

Returns a list of your photos which haven't been geo-tagged.

Implements flickr.photos.getWithoutGeoData (0.12)

`fc` : | flickcurl context
`min_upload_date` : | Minimum upload date. Photos with an upload date greater than or equal to this value will be returned. The date should be in the form of a unix timestamp. (or NULL)
`max_upload_date` : | Maximum upload date. Photos with an upload date less than or equal to this value will be returned. The date should be in the form of a unix timestamp. (or NULL)
`min_taken_date` : | Minimum taken date. Photos with an taken date greater than or equal to this value will be returned. The date should be in the form of a mysql datetime. (or NULL)
`max_taken_date` : | Maximum taken date. Photos with an taken date less than or equal to this value will be returned. The date should be in the form of a mysql datetime. (or NULL)
`privacy_filter` : | Return photos only matching a certain privacy level. Valid values are: 1 public photos; 2 private photos visible to friends; 3 private photos visible to family; 4 private photos visible to friends and family; 5 completely private photos. (or NULL)
`extras` : | A comma-delimited list of extra information to fetch for each returned record. Currently supported fields are: license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags. (or NULL)
`per_page` : | Number of photos to return per page. If this argument is omitted, it defaults to 100. The maximum allowed value is 500. (or NULL)
`page` : | The page of results to return. If this argument is omitted, it defaults to 1. (or NULL)
Returns : | non-0 on failure

### flickcurl_photos_licenses_getInfo ()

    flickcurl_license** flickcurl_photos_licenses_getInfo   (flickcurl *fc);

Get a list of available photo licenses for Flickr.

Implements flickr.photos.licenses.getInfo (0.6)

`fc` : | flickcurl context
Returns : | an array of flickcurl_license or NULL on failure

### flickcurl_photos_licenses_getInfo_by_id ()

    flickcurl_license*  flickcurl_photos_licenses_getInfo_by_id
                                                            (flickcurl *fc,
                                                             int id);

Get an individual photo license by ID

Not part of the Flickr API.

`fc` : | flickcurl context
`id` : | license ID
Returns : | a flickcurl_license or NULL on failure

### flickcurl_photos_licenses_setLicense ()

    int                 flickcurl_photos_licenses_setLicense
                                                            (flickcurl *fc,
                                                             const char *photo_id,
                                                             int license_id);

Sets the license for a photo.

Implements flickr.photos.licenses.setLicense (0.12)

`fc` : | flickcurl context
`photo_id` : | The photo to update the license for.
`license_id` : | The license to apply, or 0 (zero) to remove the current license.
Returns : | non-0 on failure

### flickcurl_photos_notes_add ()

    char*               flickcurl_photos_notes_add          (flickcurl *fc,
                                                             const char *photo_id,
                                                             int note_x,
                                                             int note_y,
                                                             int note_w,
                                                             int note_h,
                                                             const char *note_text);

Add a note to a photo.

Coordinates and sizes are in pixels, based on the 500px image size shown on individual photo pages.

Implements flickr.photos.notes.add (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to add a note to
`note_x` : | The left coordinate of the note
`note_y` : | The top coordinate of the note
`note_w` : | The width of the note
`note_h` : | The height of the note
`note_text` : | The description of the note
Returns : | note ID or NULL on failure

### flickcurl_photos_notes_delete ()

    int                 flickcurl_photos_notes_delete       (flickcurl *fc,
                                                             const char *note_id);

Delete a note from a photo.

Implements flickr.photos.notes.delete (0.12)

`fc` : | flickcurl context
`note_id` : | The id of the note to delete
Returns : | non-0 on failure

### flickcurl_photos_notes_edit ()

    int                 flickcurl_photos_notes_edit         (flickcurl *fc,
                                                             const char *note_id,
                                                             int note_x,
                                                             int note_y,
                                                             int note_w,
                                                             int note_h,
                                                             const char *note_text);

Edit a note on a photo. Coordinates and sizes are in pixels, based on the 500px image size shown on individual photo pages.

Implements flickr.photos.notes.edit (0.12)

`fc` : | flickcurl context
`note_id` : | The id of the note to edit
`note_x` : | The left coordinate of the note
`note_y` : | The top coordinate of the note
`note_w` : | The width of the note
`note_h` : | The height of the note
`note_text` : | The description of the note
Returns : | non-0 on failure

### flickcurl_photos_recentlyUpdated ()

    flickcurl_photo**   flickcurl_photos_recentlyUpdated    (flickcurl *fc,
                                                             int min_date,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);

Return a list of your photos that have been recently created or which have been recently modified

Recently modified may mean that the photo's metadata (title, description, tags) may have been changed or a comment has been added (or just modified somehow :-)

Optional extra type 'media' that will return an extra media=VALUE for VALUE "photo" or "video". API addition 2008-04-07.

Implements flickr.photos.recentlyUpdated (0.12)

`fc` : | flickcurl context
`min_date` : | A Unix timestamp indicating the date from which modifications should be compared.
`extras` : | A comma-delimited list of extra information to fetch for each returned record (or NULL) Currently supported fields are: license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags.
`per_page` : | Number of photos to return per page (default 100, max 500)
`page` : | The page of results to return (default 1)
Returns : | non-0 on failure

### flickcurl_photos_removeTag ()

    int                 flickcurl_photos_removeTag          (flickcurl *fc,
                                                             const char *tag_id);

Remove a tag from a photo.

The `tag_id` is returned such as from `flickr_photos_getInfo()`

Implements flickr.photos.removeTag (0.9)

`fc` : | flickcurl context
`tag_id` : | tag ID to remove from the photo
Returns : | non-0 on failure

### flickcurl_photos_replace ()

    flickcurl_upload_status* flickcurl_photos_replace       (flickcurl *fc,
                                                             const char *photo_file,
                                                             const char *photo_id,
                                                             int async);

Replace a photo with a new file.

Implements Replacing Photos (0.10) Implements Asynchronous Uploading (0.10)

`fc` : | flickcurl context
`photo_file` : | photo filename
`photo_id` : | photo ID to replace
`async` : | upload asynchronously boolean (non-0 true)
Returns : | flickcurl_upload_status or NULL on failure

### flickcurl_photos_search ()

    flickcurl_photo**   flickcurl_photos_search             (flickcurl *fc,
                                                             flickcurl_search_params *params);

Return a list of photos matching some criteria.

Only photos visible to the calling user will be returned. To return private or semi-private photos, the caller must be authenticated with 'read' permissions, and have permission to view the photos. Unauthenticated calls will only return public photos.

Implements flickr.photos.search (0.11)

Flickcurl 1.0: Added place_id for places API as announced 2008-01-11 http://tech.groups.yahoo.com/group/yws-flickr/message/3688

Optional parameter "media" that defaults to "all" but can also be set to "photos" or "videos" to filter results by media type. API addition 2008-04-07.

Optional parameter "has_geo" for any photo that has been geotagged. As announced 2008-06-27 http://tech.groups.yahoo.com/group/yws-flickr/message/4146

Optional parameters "lat", "lon", "radius" and "radius_units" added for doing radial geo queries from point (lat, lon) within radius/radius_units. radius_units default is "km". As announced 2008-06-27 http://tech.groups.yahoo.com/group/yws-flickr/message/4146

(Experimental) Optional parameter "contacts" requires requires that the "user_id" field also is set. Valid values are "all" or "ff" for just friends and family. As announced 2008-06-30 http://tech.groups.yahoo.com/group/yws-flickr/message/4162

`fc` : | flickcurl context
`params` : | flickcurl_search_params search parameters
Returns : | an array of flickcurl_photo or NULL

### flickcurl_search_params

    typedef struct {
      char* user_id;
      char* tags;
      char* tag_mode;
      char* text;
      int min_upload_date;
      int max_upload_date;
      char* min_taken_date;
      char* max_taken_date;
      char* license;
      char* sort;
      char* privacy_filter;
      char* bbox;
      int accuracy;
      int safe_search;
      int content_type;
      char* machine_tags;
      char* machine_tag_mode;
      char* group_id;
      char* extras;
      int per_page;
      int page;
      char* place_id;
      char* media;
      int has_geo;
      double lat;
      double lon;
      double radius;
      char* radius_units;
      char* contacts;
    } flickcurl_search_params;

Search parameters for `flickcurl_photos_search()`

char *`user_id`; | The NSID of the user who's photo to search (or "me" or NULL).
char *`tags`; | A comma-delimited list of tags (or NULL)
char *`tag_mode`; | Either 'any' for an OR combination of tags, or 'all' for an AND combination. Defaults to 'any' if not specified (or NULL)
char *`text`; | Free text search (or NULL)
int `min_upload_date`; | Minimum upload date as a unix timestamp (or NULL)
int `max_upload_date`; | Maximum upload date as a unix timestamp (or NULL)
char *`min_taken_date`; | Minimum taken date in the form of a mysql datetime (or NULL)
char *`max_taken_date`; | Maximum taken date in the form of a mysql datetime (or NULL)
char *`license`; | Comma-separated list of photo licenses (or NULL)
char *`sort`; | The order in which to sort returned photos. Defaults to date-posted-desc. The possible values are: date-posted-asc, date-posted-desc, date-taken-asc, date-taken-desc, interestingness-desc, interestingness-asc, and relevance (or NULL)
char *`privacy_filter`; | Return photos only matching a certain privacy level.
char *`bbox`; | A comma-delimited list of 4 values defining the Bounding Box of the area that will be searched.
int `accuracy`; | Recorded accuracy level of the location information. Current range is 1-16
int `safe_search`; | Safe search setting: 1 safe, 2 moderate, 3 restricted.
int `content_type`; | Content Type setting: 1 for photos only, 2 for screenshots only, 3 for 'other' only, 4 for all types. (or NULL)
char *`machine_tags`; | Machine tag search syntax
char *`machine_tag_mode`; | Either 'any' for an OR combination of tags, or 'all' for an AND combination. Defaults to 'any' if not specified.
char *`group_id`; | The id of a group who's pool to search. If specified, only matching photos posted to the group's pool will be returned. (or NULL)
char *`extras`; | A comma-delimited list of extra information to fetch for each returned record. Currently supported fields are: `license`, `date_upload`, `date_taken`, `owner_name`, `icon_server`, `original_format`, `last_update`, `geo`, `tags`, `machine_tags`. (or NULL)
int `per_page`; | Number of photos to return per page. If this argument is omitted, it defaults to 100. The maximum allowed value is 500. (or NULL)
int `page`; | The page of results to return. If this argument is omitted, it defaults to 1. (or NULL)
char *`place_id`; | A Flickr place id. (only used if bbox argument isn't present). Experimental. Geo queries require some sort of limiting agent in order to prevent the database from crying. This is basically like the check against "parameterless searches" for queries without a geo component. A tag, for instance, is considered a limiting agent as are user defined min_date_taken and min_date_upload parameters - If no limiting factor is passed we return only photos added in the last 12 hours (though we may extend the limit in the future) (or NULL)
char *`media`; | "photos" or "videos" (or NULL)
int `has_geo`; | non-0 if a photo has been geotagged (or 0)
double `lat`; | A valid latitude, in decimal format, for doing radial geo queries (or ignored if radius is 0.0)
double `lon`; | A valid longitude, in decimal format, for doing radial geo queries (or ignored if radius is 0.0)
double `radius`; | A valid radius used for geo queries, greater than zero and less than 20 miles (or 32 kilometers), for use with point-based geo queries. The default value is 5 (km) (or 0.0 for not used)
char *`radius_units`; | The unit of measure when doing radial geo queries. Valid options are "mi" (miles) and "km" (kilometers). The default is "km" (or NULL)
char *`contacts`; | (Experimental) Requires `user_id` field be set and limits queries to photos beloing to that user's photos. Valid arguments are 'all' or 'ff' for just friends and family.

### flickcurl_photos_setContentType ()

    int                 flickcurl_photos_setContentType     (flickcurl *fc,
                                                             const char *photo_id,
                                                             int content_type);

Set the content type of a photo.

Implements flickr.photos.setContentType (0.11)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to set the adultness of.
`content_type` : | The content type of the photo: 1 for Photo, 2 for Screenshot, and 3 for Other.
Returns : | non-0 on failure

### flickcurl_photos_setDates ()

    int                 flickcurl_photos_setDates           (flickcurl *fc,
                                                             const char *photo_id,
                                                             int date_posted,
                                                             int date_taken,
                                                             int date_taken_granularity);

Set one or both of the dates for a photo.

Implements flickr.photos.setDates (0.11)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to edit dates for.
`date_posted` : | The date the photo was uploaded to flickr as a unix time (or -1)
`date_taken` : | The date the photo was taken as a unix time (or -1)
`date_taken_granularity` : | The granularity of the date the photo was taken: 0 second, 4 month, 6 year (or -1)
Returns : | non-0 on failure

### flickcurl_photos_setMeta ()

    int                 flickcurl_photos_setMeta            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *title,
                                                             const char *description);

Set the meta information for a photo.

Implements flickr.photos.setMeta (0.11)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to set information for.
`title` : | The title for the photo.
`description` : | The description for the photo.
Returns : | non-0 on failure

### flickcurl_photos_setPerms ()

    int                 flickcurl_photos_setPerms           (flickcurl *fc,
                                                             const char *photo_id,
                                                             flickcurl_perms *perms);

Set permissions for a photo.

Implements flickr.photos.setPerms (0.11)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to set permissions for.
`perms` : | The flickcurl_perms photo permissions
Returns : | non-0 on failure

### flickcurl_photos_setSafetyLevel ()

    int                 flickcurl_photos_setSafetyLevel     (flickcurl *fc,
                                                             const char *photo_id,
                                                             int safety_level,
                                                             int hidden);

Set the safety level of a photo.

Implements flickr.photos.setSafetyLevel (0.11)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to set the adultness of.
`safety_level` : | The safety level of the photo. 1 for Safe, 2 for Moderate, and 3 for Restricted (or <0 for no change)
`hidden` : | >0 to hide the photo from public searches. 0 to not. <0 for no change.
Returns : | non-0 on failure

### flickcurl_photos_setTags ()

    int                 flickcurl_photos_setTags            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *tags);

Set the tags for a photo.

Note that this replaces all existing tags with the `tags` here.

Implements flickr.photos.setTags (0.9)

`fc` : | flickcurl context
`photo_id` : | photo ID
`tags` : | all tags for the photo as a space-separated list
Returns : | non-0 on failure

### flickcurl_photos_transform_rotate ()

    int                 flickcurl_photos_transform_rotate   (flickcurl *fc,
                                                             const char *photo_id,
                                                             int degrees);

Rotate a photo.

Implements flickr.photos.transform.rotate (0.13)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to rotate.
`degrees` : | The amount of degrees by which to rotate the photo (clockwise) from it's current orientation. Valid values are 90, 180 and 270.
Returns : | non-0 on failure

### flickcurl_photos_upload_checkTickets ()

    flickcurl_ticket**  flickcurl_photos_upload_checkTickets
                                                            (flickcurl *fc,
                                                             const char **tickets_ids);

Checks the status of one or more asynchronous photo upload tickets.

Implements flickr.photos.upload.checkTickets (0.13)

`fc` : | flickcurl context
`tickets_ids` : | Array of ticket ids
Returns : | non-0 on failure

### flickcurl_photos_upload_params ()

    flickcurl_upload_status* flickcurl_photos_upload_params (flickcurl *fc,
                                                             flickcurl_upload_params *params);

Uploads a photo with safety level and content type

`fc` : | flickcurl context
`params` : | upload parameters
Returns : | flickcurl_upload_status or NULL on failure