【发布时间】:2015-08-12 03:33:40
【问题描述】:
我将返回并完成从介绍到 comp sci 课程的旧课程,并且在其中一个实验室中,我应该使用 flickrapi 模块来抓取 flickr 以获取一组图片以用于其余的实验室。该项目分配了一些代码来抓取我知道应该可以工作的 flickr,但是每当我运行代码时,它都会引发 TypeError。返回错误的函数是:
def getphotos(apicode, query, num_images):
''' Return a list of URLs that have a tag that
matches the query code. '''
# Form the object that will interact with the Flickr website
flickr = flickrapi.FlickrAPI(apicode, format='etree')
# Get each matching photo and store in a list, stopping when we
# reach the target number of images
photos = []
for photo in flickr.walk(tags = query, tag_mode = 'all', safe_search = '0', sort = 'interestingness-desc'):
url = "http://farm" + photo.get('farm') + ".staticflickr.com/" + \
photo.get('server') + "/" + photo.get('id') + "_" + \
photo.get('secret') + ".jpg"
print url
photos.append(url)
if len(photos) >= num_images:
break
return photos
引发错误的行是 flickr = flickrapi.FlickrAPI(apicode, format='etree'),其中 apicode 表示 flickr 给我的 apicode 密钥,我不太确定 format ='etree' 的作用。当我查看 flickrapi 模块并进入 core.py 时,我进入了 FlickrAPI 类。课程中似乎感兴趣的部分如下所示:
class FlickrAPI(object):
"""Encapsulates Flickr functionality.
Example usage::
flickr = flickrapi.FlickrAPI(api_key)
photos = flickr.photos_search(user_id='73509078@N00', per_page='10')
sets = flickr.photosets_getList(user_id='73509078@N00')
"""
REST_URL = 'https://api.flickr.com/services/rest/'
UPLOAD_URL = 'https://up.flickr.com/services/upload/'
REPLACE_URL = 'https://up.flickr.com/services/replace/'
def __init__(self, api_key, secret, username=None,
token=None, format='etree', store_token=True,
cache=False):
...(followed by logic statements involving the inputs for __init__ and class methods)
当 flickr 给我一个 apicode 密钥时,它也给了我一个密钥,我将它存储在一个 .txt 文件中,该文件与我正在处理的程序位于同一目录中。
现在显然对 FlickrAPI 类的调用传递了 3 个参数,其中 2 个是 apicode 键和格式 ='etree',但我有点不确定第三个是什么。该类是通过 flickr 以某种方式调用密钥,还是 init 的其他输入之一?如何修复代码给我的类型错误?
【问题讨论】:
标签: class python-2.7 typeerror flickr