Uploading or replacing images¶
Transferring images requires special attention since they have to send a lot of data. Therefore they also are a bit different than advertised in the Flickr API documentation.
flickr.upload(…)¶
The flickr.upload(...)
method has the following parameters:
filename
- The filename of the image. The image data is read from this file or
from
fileobj
. fileobj
- An optional file-like object from which the image data can be read.
title
- The title of the photo
description
- The description of the photo
tags
Space-delimited list of tags. Tags that contain spaces need to be quoted. For example:
tags='''Amsterdam "central station"'''
Those are two tags, “Amsterdam” and “central station”.
is_public
- “1” if the photo is public, “0” if it is private. The default is public.
is_family
- “1” if the private photo is visible for family, “0” if not. The default is not.
is_friend
- “1” if the private photo is visible for friends, “0” if not. The default is not.
format
- The response format. This must be either
rest
or one of the parsed formatsetree
/xmlnode
.
The fileobj
parameter can be used to monitor progress via a
callback method. For example:
import os.path
class FileWithCallback(object):
def __init__(self, filename, callback):
self.file = open(filename, 'rb')
self.callback = callback
# the following attributes and methods are required
self.len = os.path.getsize(filename)
self.fileno = self.file.fileno
self.tell = self.file.tell
def read(self, size):
if self.callback:
self.callback(self.tell() * 100 // self.len)
return self.file.read(size)
params['fileobj'] = FileWithCallback(params['filename'], callback)
rsp = flickr.upload(params)
The callback method takes one parameter:
def callback(progress):
print(progress)
progress
is a number between 0 and 100.
flickr.replace(…)¶
The flickr.replace(...)
method has the following parameters:
filename
- The filename of the image.
photo_id
- The identifier of the photo that is to be replaced. Do not use this when uploading a new photo.
fileobj
- An optional file-like object from which the image data can be read.
format
- The response format. This must be either
rest
or one of the parsed formatsetree
/xmlnode
.
Only the image itself is replaced, not the other data (title, tags, comments, etc.).