Flickr API
Login Flickr: joan_quintana / jq****
Contingut
Flickr API
Programo amb C, faig servir la API de C:
Download:
requirements:
- libcurl 7.10.0 or newer
- libxml2 2.6.8 or newer
- raptor 1.4.0 (optional), 1.4.14 recommended
sudo apt-get install libxml2 libxml2-dev $ sudo apt-get install libcurl4-gnutls-dev sudo apt-get install libraptor1-dev
$ cd flickcurl-1.22/ ./configure make sudo make install
Flickr API Configuration
The library needs to know your Flickr API application key, authentication token and shared secret, suitable for calling some of the API calls. To obtain these, you need to apply for API keys at the Flickr Services site (http://www.flickr.com/services/apps/create/apply). When using the utility programs, this information should be stored in the ~/.flickcurl.conf file so that it can be read at run-time. The configuration file has the format:
[flickr] auth_token=1234567-8901234567890123 api_key=0123456789abcdef0123456789abcdef secret=fedcba9876543210
- http://www.flickr.com/services/apps/create/apply
- What's the name of your app? arthropoda
Here's the API key and secret for your new app: arthropoda Key: 6a36a8d6c910fb78f1e8ac294adb163d Secret: xxxx (veure fitxer)
[flickr] auth_token=72157629617844371-a95e52358c218462 api_key=6a36a8d6c910fb78f1e8ac294adb163d secret=98b3d6e7c840dcff
Començar a programar
$ flickcurl photos.getInfo 196308964 flickcurl: error while loading shared libraries: libflickcurl.so.0: cannot open shared object file: No such file or directory
La manera ràpida de resoldre-ho és fer:
$ export LD_LIBRARY_PATH=/usr/local/lib
$ flickcurl photos.getInfo 196308964 flickcurl: Configuration file /home/joan/.flickcurl.conf not found. 1. Visit http://www.flickr.com/services/api/keys/ and obtain a mobile application <API Key>, <Shared Secret> and <Authentication URL>. 2. Create /home/joan/.flickcurl.conf in this format: [flickr] api_key=<API Key> secret=<Shared Secret> 3. Visit the <Authentication URL> in a browser to get a <FROB> 4. Call this program with the frob: flickcurl -a <FROB> to update the configuration file with the authentication token. See http://librdf.org/flickcurl/api/flickcurl-auth.html for full instructions.
i ara ja funciona: (196308964 és un id únic per a una foto que existeix a Flickr. És una foto pública, no és meva)
$ flickcurl photos.getInfo 196308964
flickcurl: photo with URI http://www.flickr.com/photos/dajobe/196308964/ ID 196308964 and 5 tags
field dateuploaded (1) with dateTime value: '2006-07-23T18:16:13Z' / 1153678573
field farm (2) with integer value: '1' / 1
field isfavorite (3) with boolean value: '0' / 0
field license (4) with integer value: '1' / 1
field originalformat (5) with string value: 'jpg' / -1
...
Exemple: examples/print-photo-info.c
Per compilar:
$ gcc -o print-photo-info print-photo-info.c `flickcurl-config --cflags` `flickcurl-config --libs` $ ./print-photo-info
En el codi poso un id_foto que sigui meu:
photo=flickcurl_photos_getInfo(fc, "6995973801"); /* photo ID */
la Key i el Secret, però em falta el auth-token... què és? He d'anar a Edit the authentication flow
- http://librdf.org/flickcurl/api/flickcurl-auth-authenticate.html
- http://librdf.org/flickcurl/api/flickcurl-auth.html
Molt fàcil, he de visitar la url que em diuen. El auth_token només el necessito si la meva aplicació és mobile. Com que la meva aplicació és Desktop, senzillament aquesta línia la comento.
/* Set configuration, or more likely read from a config file */ flickcurl_set_api_key(fc, "6a36a8d6c910fb78f1e8ac294adb163d"); flickcurl_set_shared_secret(fc, "..."); //flickcurl_set_auth_token(fc, "692-418-152");
En les proves que he fet he obtingut un auth_token (veure més avall sobre la configuració correcta del auth_token)
auth-token: 692-418-152 (aquest no és el auth-toke, és el FROB. Veure més avall).
Tanmateix, deixo la configuració de la meva aplicació com a Desktop.
Ara ja puc executar print-photo-info i veure tota la informació de què consta una foto:
$ ./print-photo-infofield dateuploaded (1) with dateTime value: '2012-03-19T07:47:59Z' / 1332143279 field farm (2) with integer value: '7' / 7 field isfavorite (3) with boolean value: '0' / 0 field license (4) with integer value: '0' / 0 field rotation (6) with integer value: '0' / 0 field server (7) with integer value: '6214' / 6214 field dates_lastupdate (8) with dateTime value: '2012-03-19T07:48:01Z' / 1332143281 field dates_posted (9) with dateTime value: '2012-03-19T07:47:59Z' / 1332143279 field dates_taken (10) with string value: '2012-03-19 08:47:59' / -1 field dates_takengranularity (11) with integer value: '0' / 0 field editability_canaddmeta (13) with boolean value: '0' / 0 field editability_cancomment (14) with boolean value: '0' / 0 field owner_location (22) with string value: 'Barcelona, Spain' / -1 field owner_nsid (23) with string value: '37546322@N00' / -1 field owner_realname (24) with string value: 'Joan Quintana' / -1 field owner_username (25) with string value: 'joanillo quintana' / -1 field title (26) with string value: 'pere_i_llop1' / -1 field visibility_isfamily (27) with boolean value: '0' / 0 field visibil ity_isfriend (28) with boolean value: '0' / 0 field visibility_ispublic (29) with boolean value: '1' / 1 field secret (30) with string value: '7e94364aa7' / -1 field usage_candownload (49) with boolean value: '1' / 1 field usage_canblog (50) with boolean value: '0' / 0 field usage_canprint (51) with boolean value: '0' / 0 field views (56) with integer value: '0' / 0
Totes les meves aplicacions estan enllaçades en aquest link:
FROB i auth_token. Configuració
Només cal seguir les instruccions correctament.
Quan faig Edit the authentication flow, puc escollir entre tres opcions:
- Web Application
- Desktop Application
- Mobile Application
Encara que la meva aplicació escrita en C serà Desktop, he d'escollir Mobile Application doncs és la única opció que em deixa fer read/write/delete i que em deixarà fer upload (és a dir, write) de fotos. Per tant, escullo aquesta opció, i em diu quina és la URL a la que m'he de connectar per obtenir un FROB. Per exemple,
i obtinc 608-379-556'. Però el FROB no és el auth_key, i per configurar correctament el fitxer de configuració s'ha de fer:
$ ./flickcurl -a 608-379-556 -> aquest és el valor del FROB (però no és el auth-key!!) lt-flickcurl: Successfully exchanged frob 608-379-556 for authentication token lt-flickcurl: Updated configuration file /home/joan/.flickcurl.conf with authentication token
i ara si miro el fitxer de configuració ja ha incorporat el valor correcte del auth_token: (ha afegit automàticament una línia)
[flickr] auth_token=72157629617844371-a95e52358c218462 api_key=6a36a8d6c910fb78 secret=....
Ara ja podré penjar fitxers com es demostra a continuació.
flickcurl: fer upload d'una foto
Veig que aquesta aplicació d'exemple té moltíssims paràmetres. Per exemple, l'argument upload. Convé entretindre's en el funcionament d'aquesta aplicació
$ ./flickcurl --help
Flickr API utility 1.22
Call the Flickr API to get information.
Usage: lt-flickcurl [OPTIONS] command args...
Copyright (C) 2007-2011 David Beckett - http://www.dajobe.org/
License: LGPL 2.1 or newer, GPL 2 or newer, Apache 2.0 or newer.
See http://librdf.org/flickcurl/ for full terms.
Flickcurl home page: http://librdf.org/flickcurl/
-a, --auth FROB Authenticate with a FROB and write auth config
-d, --delay DELAY Set delay between requests in milliseconds
-h, --help Print this help, then exit
-o, --output FILE Write format = FORMAT results to FILE
-q, --quiet Print less information while running
-v, --version Print the flickcurl version
-V, --verbose Print more information while running
Commands:
auth.checkToken TOKEN
Get the credentials attached to an authentication TOKEN.
auth.getFrob
Get a frob to be used during authentication.
auth.getFullToken MINI-TOKEN
Get the full authentication token for MINI-TOKEN.
auth.getToken TOKEN
Get the auth token for the FROB, if one has been attached.
activity.userComments [PER-PAGE [PAGE]]
Get photos commented on by the caller.
activity.userPhotos [TIMEFRAME [PER-PAGE [PAGE]]]
Get recent activity on the caller's photos.
blogs.getList
Get a list of configured blogs for the calling user.
blogs.getServices
Get a list of blog services.
blogs.postPhoto BLOG-ID PHOTO-ID TITLE DESCRIPTION [BLOG-PASSWORD]
Post PHOTO-ID to blog BLOG-ID with TITLE, DESCRIPTION and optional password.
commons.getInstitutions
Get list of institutions
collections.getInfo COLLECTION-ID
Get information on collection COLLECTION-ID
collections.getTree [COLLECTION-ID|- [USER-ID|-]]
Get tree of collections COLLECTION-ID for USER-ID
contacts.getList [FILTER [PER-PAGE [PAGE]]]
Get a list of contacts with optional FILTER
contacts.getListRecentlyUploaded [DATE-LAST-UPLOAD [FILTER]]
Get a list of recent uploading contacts since DATE-LAST-UPLOAD with optional FILTER
favorites.add PHOTO-ID
Adds PHOTO-ID to the current user's favorites.
favorites.getContext PHOTO-ID USER-NSID [NUM-PREV [NUM-NEXT [EXTRAS]]]
Get context photos around USER-ID's favorite PHOTO-ID.
favorites.getList USER-NSID [[PER-PAGE] [PAGE [FORMAT]]]
Get a list of USER-NSID's favorite photos.
favorites.getPublicList USER-NSID [[PER-PAGE] [PAGE [FORMAT]]]
Get a list of USER-NSID's favorite public photos.
favorites.remove PHOTO-ID
Removes PHOTO-ID to the current user's favorites.
galleries.addPhoto GALLERY-ID PHOTO-ID TEXT
Add photo PHOTO-ID to galleries GALLERY-ID with TEXT
galleries.create TITLE [DESCRIPTION [PRIMARY-PHOTO-ID]
Create a new gallery with TITLE, DESCRIPTION and PRIMARY-PHOTO_ID.
galleries.editMeta GALLERY-ID TITLE [DESCRIPTION]
Set the TITLE and/or DESCRIPTION of a GALLERY-ID.
galleries.editPhoto GALLERY-ID PHOTO-ID COMMENT
Set the COMMENT for PHOTO-ID in GALLERY-ID.
galleries.editPhotos GALLERY-ID PRIMARY-PHOTO-ID PHOTO-IDS,...
Set the PHOTO-IDs of a GALLERY-ID and PRIMARY-PHOTO-ID.
galleries.getInfo GALLERY-ID
Get information about GALLERY-ID.
galleries.getList USER-ID [PER-PAGE [PAGE]]
Get list of galleries for a USER-ID with optional paging
galleries.getListForPhoto PHOTO-ID [PER-PAGE [PAGE]]
Get list of galleries PHOTO-ID appears in with optional paging
galleries.getPhotos GALLERY-ID [EXTRAS [PER-PAGE [PAGE [FORMAT]]]]
Get the list of photos in GALLERY-ID with options.
groups.browse [CAT-ID]
Browse groups below category CAT-ID (or root).
groups.getInfo GROUP-ID [LANG]
Get information on group GROUP-ID with language LANG.
groups.search TEXT [PER-PAGE [PAGE]]
Search for groups matching TEXT paging PER-PAGE and PAGE.
groups.members.getList GROUP-ID [MEMBER-TYPES [PER-PAGE [PAGE]]]
Get list of MEMBER-TYPES types members of group GROUP-ID.
groups.pools.add PHOTO-ID GROUP-ID
Add PHOTO-ID in GROUP-ID pool.
groups.pools.getContext PHOTO-ID GROUP-ID
Get next and previous photos for PHOTO-ID in GROUP-ID pool.
groups.pools.getGroups [PAGE [PER-PAGE]]
Get list of groups a user can add to.
groups.pools.getPhotos GROUP-ID [PAGE [PER-PAGE [FORMAT]]]
Get list of photos in GROUP-ID.
groups.pools.remove PHOTO-ID GROUP-ID
Remove PHOTO-ID from group GROUP-ID.
interestingness.getList [PARAMS]
Get interesting photos with optional parameters
date DATE extras EXTRAS per-page PER-PAGE page PAGE format FORMAT
machinetags.getNamespaces [PREDICATE [PER-PAGE [PAGE]]]
Get a list of namespaces with optional PREDICATE
machinetags.getPairs [NAMESPACE [PREDICATE [PER-PAGE [PAGE]]]]
Get a list of unique NAMESPACE and PREDICATE pairs
machinetags.getPredicates [NAMESPACE [PER-PAGE [PAGE]]]
Get a list of unique predicates optionally by NAMESPACE
machinetags.getValues NAMESPACE PREDICATE [PER-PAGE [PAGE]]
Get a list of unique values for a NAMESPACE and PREDICATE
machinetags.getRecentValues [NAMESPACE|- [PREDICATE|- [ADDED-SINCE]]]
Get a list of recent machinetags for NAMESPACE and PREDICATE since ADDED-SINCE
panda.getList
get the current list of pandas
panda.getPhotos PANDA
ask a PANDA for a list of recent public and safe photos
people.findByEmail EMAIL
get a user's NSID from their EMAIL address
people.findByUsername USERNAME
get a user's NSID from their USERNAME
people.getInfo USER-NSID
Get information about one person with id USER-NSID
people.getPhotos USER-NSID
Get photos from user USER-NSID with optional parameters
safe-search 1-3 min-upload-date DATE max-upload-date DATE
min-taken date DATE max-taken-date DATE content-type 1-7
privacy-filter 1-5 per-page PER-PAGE page PAGE format FORMAT
people.getPhotosOf USER-NSID [PER-PAGE [PAGE [FORMAT]]]
Get public photos of a user USER-NSID
people.getPublicGroups USER-NSID
Get list of public groups a user is a member of
people.getPublicPhotos USER-NSID [PER-PAGE [PAGE [FORMAT]]]
Get public photos for a user USER-NSID
people.getUploadStatus
Get calling user upload status
photos.addTags PHOTO-ID TAGS
Add TAGS to a PHOTO-ID.
photos.delete PHOTO-ID
Delete a PHOTO-ID.
photos.getAllContexts PHOTO-ID
Get all visible sets and pools the PHOTO-ID belongs to.
photos.getContactsPhotos
Get a list of recent photos from the calling users' contacts
photos.getContactsPublicPhotos USER-NSID [FORMAT]
Get a list of recent public photos from USER-NSID's contacts
photos.getContext PHOTO-ID
Get next and previous photos for a PHOTO-ID in a photostream.
photos.getCounts DATES TAKEN-DATES
Get the counts for a set of DATES or TAKEN-DATES.
photos.getExif PHOTO-ID
Get EXIF information about one photo with id PHOTO-ID
photos.getFavorites PHOTO-ID [PER-PAGE [PAGE]]
Get favourites information about one photo with id PHOTO-ID
photos.getInfo PHOTO-ID
Get information about one photo with id PHOTO-ID
photos.getNotInSet [PER-PAGE [PAGE [FORMAT]]]
Get list of photos that are not in any set
photos.getPerms PHOTO-ID
Get a photo viewing and commenting permissions
photos.getRecent [PER-PAGE [PAGE [FORMAT]]]
Get list of recent photos
photos.getSizes PHOTO-ID
Get sizes of a PHOTO-ID
photos.getUntagged [PER-PAGE [PAGE [FORMAT]]]
Get list of photos that are not tagged
photos.getWithGeoData [PER-PAGE [PAGE [FORMAT]]]
Get list of photos that have geo data
photos.getWithoutGeoData [PER-PAGE [PAGE [FORMAT]]]
Get list of photos that do not have geo data
photos.recentlyUpdated MIN-DATE [PER-PAGE [PAGE [FORMAT]]]
Get list of photos that were recently updated
photos.removeTag PHOTO-ID TAG-ID
Remove a tag TAG-ID from a photo.
photos.search [PARAMS] tags TAGS...
Search for photos/videos with many optional parameters
user USER tag-mode any|all text TEXT
(min|max)-(upload|taken)-date DATE
license LICENSE privacy PRIVACY bbox a,b,c,d
sort date-(posted|taken)-(asc|desc)|interestingness-(desc|asc)|relevance
accuracy 1-16 safe-search 1-3 type 1-4
machine-tags TAGS machine-tag-mode any|all
group-id ID place-id ID extras EXTRAS
per-page PER-PAGE page PAGES
media all|photos|videos has-geo
lat LAT lon LON radius RADIUS radius-units km|mi
contacts (all|ff)
format FORMAT woeid WOEID
geo-context 1-2
in-commons in-gallery
photos.setContentType PHOTO-ID TYPE
Set photo TYPE to one of 'photo', 'screenshot' or 'other'
photos.setDates PHOTO-ID POSTED TAKEN GRANULARITY
Set a photo POSTED date, TAKEN date with GRANULARITY
photos.setMeta PHOTO-ID TITLE DESCRIPTION
Set a photo TITLE and DESCRIPTION
photos.setPerms PHOTO-ID IS-PUBLIC IS-FRIEND IS-FAMILY PERM-COMMENT PERM-ADDMETA
Set a photo viewing and commenting permissions
photos.setSafetyLevel PHOTO-ID SAFETY-LEVEL HIDDEN
Set a photo's SAFETY-LEVEL and HIDDEN flag
photos.setTags PHOTO-ID TAGS
Set the tags for a PHOTO-ID to TAGS.
photos.comments.addComment PHOTO-ID TEXT
Add a photo comment TEXT to PHOTO-ID.
photos.comments.deleteComment COMMENT-ID
Delete a photo comment COMMENT-ID.
photos.comments.editComment COMMENT-ID TEXT
Edit a photo comment COMMENT-ID to have new TEXT.
photos.comments.getList PHOTO-ID
Get the comments for a photo PHOTO-ID.
photos.comments.getRecentForContacts [PARAMS]
Get the list of photos for user contacts with recent comments
since DATE-LAST-COMMENT filter CONTACTS-FILTER
per-page PER-PAGE page PAGE format FORMAT
photos.geo.getLocation PHOTO-ID
Get the geo location for a photo PHOTO-ID.
photos.geo.getPerms PHOTO-ID
Get the geo perms for a photo PHOTO-ID.
photos.geo.removeLocation PHOTO-ID
Remove the location for a photo PHOTO-ID.
photos.geo.setLocation PHOTO-ID LAT LONG ACCURACY
Set the location for a photo PHOTO-ID.
photos.geo.setPerms PHOTO-ID IS-PUBLIC IS-CONTACT IS-FRIEND IS-FAMILY
Set the geo perms for a photo PHOTO-ID.
photos.licenses.getInfo
Get list of available photo licenses
photos.licenses.setLicense PHOTO-ID LICENSE-ID
Get photo PHOTO-ID license to LICENSE-ID
photos.notes.add PHOTO-ID X Y W H TEXT
Add a note (X, Y, W, H, TEXT) to a photo with id PHOTO-ID
photos.notes.delete NOTE-ID
Delete a note with id NOTE-ID
photos.notes.edit NOTE-ID X Y W H TEXT
Edit note NOTE-ID to (X, Y, W, H, TEXT)
photos.people.add PHOTO-ID USER-ID X Y W H
Mark USER-ID appearing in PHOTO-ID at (X, Y, W, H)
photos.people.delete PHOTO-ID USER-ID
Mark USER-ID as not appearing in PHOTO-ID
photos.people.deleteCoords PHOTO-ID USER-ID
Mark USER-ID as not appearing at coordinates in PHOTO-ID
photos.people.editCoords PHOTO-ID USER-ID X Y W H
Update USER-ID appearing in PHOTO-ID to coords (X, Y, W, H)
photos.people.getList PHOTO-ID
Get list of users appearing in PHOTO-ID
photos.transform.rotate PHOTO-ID DEGREES
Rotate PHOTO-ID by 90/180/270 DEGREES
photos.upload.checkTickets TICKET-IDS...
Get the status of upload TICKET-IDS
photosets.addPhoto PHOTOSET-ID PHOTO-ID
Add PHOTO-ID to a PHOTOSET-ID.
photosets.create TITLE DESCRIPTION PRIMARY-PHOTO-ID
Create a photoset with TITLE, DESCRIPTION and PRIMARY-PHOTO-ID.
photosets.delete PHOTOSET-ID
Delete a photoset with PHOTOSET-ID.
photosets.editMeta PHOTOSET-ID TITLE DESCRIPTION
Set the TITLE and/or DESCRIPTION of a PHOTOSET-ID.
photosets.editPhotos PHOTOSET-ID PRIMARY-PHOTO-ID PHOTO-IDS,...
Set the PHOTO-IDs of a PHOTOSET-ID and PRIMARY-PHOTO-ID.
photosets.getContext PHOTO-ID PHOTOSET-ID
Get next and previous photos for PHOTO-ID in PHOTOSET-ID.
photosets.getInfo PHOTOSET-ID
Get information about PHOTOSET-ID.
photosets.getList [USER-NSID]
Get the list of photosets for the USER-NSID.
photosets.getPhotos PHOTOSET-ID [EXTRAS [PRIVACY [PER-PAGE [PAGE [FORMAT]]]]]
Get the list of photos in PHOTOSET-ID with options.
photosets.orderSets PHOTOSET-IDS...
Set the order of sets PHOTOSET-IDS.
photosets.removePhoto PHOTOSET-ID PHOTO-ID
Remove PHOTO-ID from PHOTOSET-ID.
photosets.removePhotos PHOTOSET-ID PHOTO-IDS...
Remove PHOTO-IDS from PHOTOSET-ID.
photosets.reorderPhotos PHOTOSET-ID PHOTO-IDS...
Reorder PHOTO-IDS from PHOTOSET-ID.
photosets.setPrimaryPhoto PHOTOSET-ID PHOTO-ID
Set photoset PHOTOSET-ID primary photo to PHOTO-ID.
photosets.comments.addComment PHOTOSET-ID TEXT
Add a comment TEXT to photoset PHOTOSET-ID.
photosets.comments.deleteComment COMMENT-ID
Delete a photoset comment COMMENT-ID.
photosets.comments.editComment COMMENT-ID TEXT
Edit a photoset comment COMMENT-ID to have new TEXT.
photosets.comments.getList PHOTOSET-ID
Get the comments for a photoset PHOTOSET-ID.
places.find TEXT
Find places by TEXT query.
places.findByLatLon LAT LON ACCURACY
Find places by LAT and LON with ACCURACY 1-16.
places.getChildrenWithPhotosPublic PLACE-ID|- [WOE-ID|-]
Find child places with public photos by PLACE-ID or WOE-ID
places.getInfo PLACE-ID|- [WOE-ID|-]
Find place by PLACE-ID or WOE-ID
places.getInfoByUrl URL
Find place by place URL
places.getPlaceTypes URL
Get a list of available place types
places.getShapeHistory PLACE-ID|- [WOE-ID|-]
Get history of shapes for a place by PLACE-ID or WOE-ID
places.getTopPlacesList PLACE-TYPE [DATE [WOE-ID|- [PLACE-ID]]]
Get the top 100 most geotagged places for a DATE (or yesterday).
places.placesForBoundingBox PLACE-TYPE MIN-LONG MIN-LAT MAX-LONG MAX-LAT
Find user places of PLACE-TYPE in bbox.
places.placesForContacts PLACE-TYPE WOE-ID|- PLACE-ID|- THRESHOLD [PARAMS]
Find top 100 unique places clustered by a given PLACE-TYPE for a
user's contacts with optional parameters
contacts CONTACTS min-upload MIN-UPLOAD-DATE max-upload MAX-UPLOAD-DATE
min-taken MIN-TAKEN-DATE max-taken MAX-TAKEN-DATE
places.placesForUser PLACE-TYPE [WOE-ID] [PLACE-ID [THRESHOLD]]]
Find user places of PLACE-TYPE.
places.resolvePlaceId PLACE-ID / WOE-ID
Find places information by PLACE-ID or WOE-ID (number).
places.resolvePlaceURL PLACE-URL
Find places information by PLACE-URL.
places.tagsForPlace PLACE-ID|- [WOE-ID|-]
Get tags for a place by PLACE-ID or WOE-ID with optional parameters
min-upload MIN-UPLOAD-DATE max-upload MAX-UPLOAD-DATE
min-taken MIN-TAKEN-DATE max-taken MAX-TAKEN-DATE
prefs.getContentType
Get default content type preference for user.
prefs.getGeoPerms
Get default privacy level for geographic info for user.
prefs.getHidden
Get default hidden preference for user.
prefs.getPrivacy
Get default privacy preference for user.
prefs.getSafetyLevel
Get default safety level for user.
reflection.getMethods
Get API methods
reflection.getMethodInfo NAME
Get information about an API method NAME
stats.getCollectionDomains DATE [COLLECTION-ID [PER-PAGE [PAGE]]]
Get collection domains stats
stats.getCollectionReferrers DATE DOMAIN [COLLECTION-ID [PER-PAGE [PAGE]]]
Get collection referrers stats
stats.getCollectionStats DATE COLLECTION-ID
Get collection view count stats
stats.getPhotoDomains DATE [PHOTO-ID [PER-PAGE [PAGE]]]
Get photo domains stats
stats.getPhotoReferrers DATE DOMAIN [PHOTO-ID [PER-PAGE [PAGE]]]
Get photo referrers stats
stats.getPhotoStats DATE PHOTO-ID
Get photo view count stats
stats.getPhotosetDomains DATE [PHOTOSET-ID [PER-PAGE [PAGE]]]
Get photoset domains stats
stats.getPhotosetReferrers DATE DOMAIN [PHOTOSET-ID [PER-PAGE [PAGE]]]
Get photoset referrers stats
stats.getPhotosetStats DATE PHOTOSET-ID
Get photoset view count stats
stats.getPhotostreamDomains DATE [PER-PAGE [PAGE]]
Get photostream domains stats
stats.getPhotostreamReferrers DATE DOMAIN [PER-PAGE [PAGE]]
Get photostream referrers stats
stats.getPhotostreamStats DATE
Get photostream view count stats
stats.getPopularPhotos [DATE [SORT [PER-PAGE [PAGE [EXTRAS]]]]]
Get popular photos stats
stats.getTotalViews [DATE]
Get total stats
tags.getClusters TAG
Get list of tag clusters for TAG
tags.getHotList [PERIOD [COUNT]]
Get the list of hot tags for the given PERIOD (day, week)
tags.getListPhoto PHOTO-ID
Get the tag list for a PHOTO-ID.
tags.getListUser [USER-NSID]
Get the tag list for a USER-NSID (or current user).
tags.getListUserPopular [USER-NSID [COUNT]]
Get the popular tag list for a USER-NSID (or current user).
tags.getListUserRaw [TAG]
Get the raw versions of a TAG (or all tags) for the current user.
tags.getRelated TAG
Get a list of tags 'related' to TAG based on clustered usage analysis.
test.echo KEY VALUE
Test echo API call; echos KEY VALUE
test.login
Test login API call: returns username
test.null KEY VALUE
Test null API call: no return
urls.getGroup GROUP-ID
Get the url of the group page for GROUP-ID.
urls.getUserPhotos USER-NSID
Get the url of the photo page for USER-NSID.
urls.getUserProfile USER-NSID
Get the url of the profile page for USER-NSID.
urls.lookupGroup URL
Get a group NSID from the URL to a group's page or photo pool.
urls.lookupUser URL
Get a user NSID from the URL to a user's photo
upload FILE [PARAMS...]
Upload a photo FILE with optional parameters PARAM or PARAM VALUE
title TITLE
description DESC
safety_level 'safe' (default) or 'moderate' or 'restricted'
content_type 'photo' (default) or screenshot' or 'other'
hidden 'public' (default) or 'hidden'
friend
public
family
tags TAGS... [must be last param]
replace FILE PHOTO-ID [async]
Replace a photo PHOTO-ID with a new FILE (async)
shorturi PHOTO-ID
Get the http://flic.kr short uri for PHOTO-ID
getphotoid IMAGE-URL
Get the photo id from a raw flickr farm IMAGE-URL
NSID is a user's Flickr ID, resembling the form 00000000@N00
A prefix of `flickr.' may be optionally given in all commands
Parameters for API calls that return lists of photos:
EXTRAS is a comma-separated list of optional fields to return from:
date_taken Date item was taken
date_upload Date item was uploaded
geo Geotagging latitude, longitude and accuracy
icon_server Item owner icon fields
last_update Date item was last updated
license Item License
machine_tags Machine tags
media Item Format: photo or video
o_dims Original item dimensions
original_format Original item secret and format
owner_name Item owner ID
path_alias Path alias for owner like /photos/USERNAME
tags Item clean tags (safe for HTML, URLs)
url_m URL of medium size image
url_o URL of original size image
url_s URL of small size image
url_sq URL of square size image
url_t URL of thumbnail size image
views Number of times item has been viewed
FORMAT is result syntax format:
feed-rss_100 RSS 1.0
feed-rss_200 RSS 2.0
feed-atom_10 Atom 1.0
feed-georss RSS 2.0 with GeoRSS and W3C Geo for geotagged photos
feed-geoatom Atom 1.0 with GeoRSS and W3C Geo for geotagged photos
feed-geordf RSS 1.0 with GeoRSS and W3C Geo for geotagged photos
feed-kml KML 2.1
feed-kml_nl KML 2.1 network link
PAGE is result page number or '-' for default (1 = first page)
PER-PAGE is photos per result page or '-' for default (10)
upload d'una foto
opció upload:
$ ./flickcurl upload lt-flickcurl: Minimum of 1 arguments for command `upload' USAGE: lt-flickcurl upload FILE [PARAMS...] Try `lt-flickcurl --help' for more information.
Quan encara no tenia ben configurat el auth_key obtenia:
$ ./flickcurl upload /home/joan/Imatges/gnuplo7_S6V6.jpg lt-flickcurl: Uploading file /home/joan/Imatges/gnuplo7_S6V6.jpg lt-flickcurl: ERROR: Call failed with error 99 - Insufficient permissions. Method requires write privileges; none granted. lt-flickcurl: Command upload failed
Però ara que ja tinc ben configurat el auth_key ja puc fer upload:
$ ./flickcurl upload /home/joan/Imatges/gnuplo7_S6V6.jpg lt-flickcurl: Uploading file /home/joan/Imatges/gnuplo7_S6V6.jpg lt-flickcurl: Photo upload status Photo ID: 6849983998
i tinc una ID unívoca per a la foto.
flickcurl: compilació
Faig
$ cd ~/flickcurl-1.22/utils $ make clean $ make
i puc veure quines són les sentències que es necessiten per compilar el projecte. S'han instal.lat bé totes les llibreries, a mi la única cosa que m'interessa és el fitxer flickcurl.c i l'executable que es genera flickcurl:
$ rm flickcurl
En principi amb aquestes dues línies n'hi hauria d'haver prou:
gcc -DHAVE_CONFIG_H -I../src -I/usr/include/libxml2 -MT flickcurl-flickcurl.o -MD -c -o flickcurl-flickcurl.o flickcurl.c gcc -I/usr/include/libxml2 -g -O2 -o flickcurl flickcurl-flickcurl.o ../src/.libs/libflickcurl.so /usr/lib/libxml2.so /usr/lib/libcurl-gnutls.so
Ara faig el meu projecte en una carpeta totalment diferent i nova /home/joan/arthropoda/upload2flickr
upload2flickr
carpeta del projecte: /home/joan/arthropoda/upload2flickr
Parteixo del codi de flickcurl.c i vaig construint el meu mínim codi per poder realitzar la tasca de pujar fotos al Flickr automàticament.
gcc -DHAVE_CONFIG_H -I../src -I/usr/include/libxml2 -MT flickcurl-flickcurl.o -MD -c -o upload2flickr-upload2flickr.o upload2flickr-0.0.1.c gcc -I/usr/include/libxml2 -g -O2 -o upload2flickr upload2flickr-upload2flickr.o /home/joan/flickcurl-1.22/src/.libs/libflickcurl.so /usr/lib/libxml2.so /usr/lib/libcurl-gnutls.so
aquí l'únic truco és que faig referència al projecte original: /home/joan/flickcurl-1.22/src/.libs/libflickcurl.so /usr/lib/libxml2.so
grups als que pertanyo a Flickr
Aquesta informació es troba a partir del NSID, que en el meu cas és 37546322@N00. El tros de codi per saber els grups als quals pertanyo és
char *str_grups[1]; str_grups[1] = "37546322@N00"; rc = command_people_getPublicGroups(fc, 1, str_grups); if(rc) fprintf(stderr, "%s: Command %s failed\n", program, argv[0]);
Els grups als quals pertanyo són:
Group 0 group: nsid 53702755@N00 name 'Bugs' Group 1 group: nsid 18906610@N00 name 'INSECTS' Group 2 group: nsid 21563296@N00 name 'Macro Photography' Group 3 group: nsid 20585692@N00 name 'The Spider Web' Group 4 group: nsid 33818533@N00 name 'Insect Macro Photography' Group 5 group: nsid 41324459@N00 name 'Insect Photography' Group 6 group: nsid 98439285@N00 name 'Insects and Spiders' Group 7 group: nsid 41069537@N00 name 'Canon EF-100mm f/2.8 Macro USM' Group 8 group: nsid 729073@N22 name 'ALL ABOUT INSECTS & SPIDERS (Only CLOSE, CLEAR, DETAILED)' Group 9 group: nsid 696812@N20 name 'Insect Identification Help Group' Group 10 group: nsid 1592620@N22 name 'Entomology, Arachnology and Environment'
creat per Joan Quintana Compte, març 2012