Flickr API,函数Issu

2024-04-25 19:11:45 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是我的代码,我的函数“get\u flickr\u data”有问题。我没有收到回溯错误,函数只是没有返回任何数据。该函数应该检查缓存数据中是否存在每个请求的唯一标识符,如果存在,应该从缓存中访问表示该数据的Python对象_措辞。如果缓存中没有这样的数据,该函数应该向Flickr Photos Search API发出一个请求,请求用输入字符串标记照片。它应该修改从flickrapi返回的字符串,以便将其格式化为JSON。这个函数应该将新的数据字典添加到缓存字典中,与唯一标识符键相关联,并且应该将缓存字典中的所有数据写入缓存文件,现在有一个额外的键值对。“get\u flickr\u data”的返回值应该是表示flickr Photos search API中的搜索数据的字典,而不管它是从缓存中获取数据还是发出新请求并将数据保存到缓存中。任何帮助都将不胜感激。你知道吗

CACHE_FNAME = "cached_data.json"
try:
    filex = open(CACHE_FNAME, 'rb')
    saved_cache = pickle.load(filex)
    filex.close()
except:
    CACHE_DICTION = {}

def params_unique_combination(baseurl, params_d, private_keys=["api_key"]):
    alphabetized_keys = sorted(params_d.keys())
    res = []
    for k in alphabetized_keys:
        if k not in private_keys:
            res.append("{}-{}".format(k, params_d[k]))
    return baseurl + "_".join(res)
def get_flickr_data(search_data,photo_number=50):
    baseurl ="https://api.flickr.com/services/rest/"
    params_d={}
    params_d["tags"]= search_data
    params_d["per_page"]=photo_number
    params_d["format"]= "json"
    params_d["method"]= "flickr.photos.search"
    params_d["tag_mode"]= "all"
    params_d["api_key"] = FLICKR_KEY
    unique_indent = params_unique_combination(baseurl,params_d)

    if unique_indent in CACHE_DICTION:
        flickr_info = CACHE_DICTION[unique_indent]
    else:
        resp = requests.get(baseurl,params_d)
        python_flickr = json.loads(resp.text[14:-1])
        CACHE_DICTION[unique_indent] = python_flickr
        f = open(CACHE_FNAME,"w")
        cache_str_tmp = json.dumps(CACHE_DICTION)
        f.write(cache_str_tmp)
        f.close()
    return CACHE_DICTION
get_flickr_data("mountains",50)

下面是来自“pset7”的一些数据_数据.json“……由于篇幅限制,我无法全部发表。你知道吗

{“https://api.flickr.com/services/rest/format-json_method-flickr.photos.search_per_page-50_tag_mode-all_tags-alps”:{“photos”:{“total”:“1054369”,“photo”:[{“isfamily”:0,“title”:“2017-02-26-Almsee-0293”,“farm”:4,“ispublic”:1,“server”:“3953”,“isfriend”:0,“secret”:“0a3c9acb9a”,“owner”:56354257@N04“,”id“:”32602919934“},{”isfamily“:0,”title“:”2016-12-10-Hochkoenig-8013”,“farm“:4,”ispublic“:1”,server“:”3801“,“isfriend”:0,“secret”:“a679be116e”,“所有者”:56354257@N04“,”id“:”32631595083“},{“isfamily”:0,“title”:“2016-12-10-Hochkoenig-8041”,“farm”:3,“ispublic”:1,“server”:“2826”,“isfriend”:0,“secret”:“b8cde01f80”,“owner”:”56354257@N04“,”id“:”33405347396“},{”isfamily“:0,”title“:”Fanes“,”farm“:4,”ispublic“:1,”server“:”3748”,“isfriend”:0,“secret”:“5010b4ab57”,“所有者”:140619052@N04型“,”id“:”33289850742“},{”isfamily“:0,”title“:”Eibsee,Bavaria“,”farm“:3,”ispublic“:1,”server“:”2831“,”isfriend“:0,”secret“:”9ccc32ef33“,”owner“:”60199917@N02号“,”id“:”33317386691“},{”isfamily“:0,”title“:”Eibsee,Bavaria“,”farm“:3,”ispublic“:1,”server“:”2842”,“isfriend”:0,“secret”:“35ea92c879”,“所有者”:60199917@N02号,“id”:“32631213063”},{“isfamily”:0,“title”:“Eibsee,Bavaria”,“farm”:4,“ispublic”:1,“server”:“3867”,“isfriend”:0,“secret”:“93d9afb2b9”,“owner”:60199917@N02号“,”id“:”33317381491“},{”isfamily“:0,”title“:”Eibsee,Bavaria“,”farm“:4,”ispublic“:1,”server“:”3761”,“isfriend”:0,“secret”:“bce444e73f”,“所有者”:60199917@N02号“,”id“:”33289800442“},{“isfamily”:0,“title”:“DSC03957”,“farm”:4,“ispublic”:1,“server”:“3854”,“isfriend”:0,“secret”:“ab02c3e662”,“owner”:”64067043@N08型“,“id”:“33444407725”},{“isfamily”:0,“title”:“04a2271 02”,“farm”:4,“ispublic”:1,“server”:“3715”,“isfriend”:0,“secret”:“f9da860c21”,“所有者”:47391132@N00“,”id“:”3344401925“},{”isfamily“:0,”title“:”04a2271 04”,“farm“:4,”ispublic“:1,”server“:”3799“,”isfriend“:0,”secret“:”02ee9a4c5d“,”owner“:”47391132@N00“,”id“:”33444011475“},{”isfamily“:0,”title“:”04a2271 05”,“farm“:4”,ispublic“:1”,server“:”3778,“isfriend”:0,“秘密”:“9ff76730e0”,“所有者”:47391132@N00“,”id“:”3344401195“},{”isfamily“:0,”title“:”04a2271 06”,“farm“:4,”ispublic“:1,”server“:”3909“,”isfriend“:0,”secret“:”f43939ec75“,”owner“:”47391132@N00“,”id“:”33060835430“},{“isfamily”:0,“title”:“04a2271 08”,“farm”:4,“ispublic”:1,“server”:“3698”,“isfriend”:0,“secret”:“533c038b10”,“所有者”:47391132@N00“,”id“:”33060835210“},{”isfamily“:0,”title“:”04a2271 09”,“farm“:3,”ispublic“:1,”server“:”2929“,”isfriend“:0,”secret“:”e05cdf5ec2“,”owner“:”47391132@N00“,”id“:”33060835060“},{“isfamily”:0,“title”:“04a2271 10”,“farm”:4,“ispublic”:1,“server”:“3723”,“isfriend”:0,“secret”:“ed7f4bf8df”,“所有者“:”47391132@N00“,”id“:”33060834940“},{”isfamily“:0,”title“:”04a2271 11“,”farm“:3,”ispublic“:1,”server“:”2833“,”isfriend“:0,”secret“:”e47dc82db0“,”owner“:”47391132@N00“,”id“:”33060834740“},{”isfamily“:0”,title“:”04a2271 12”,“farm“:4”,ispublic“:1”,server“:”3746,“isfriend“:0”,secret“:”8d88689613”,“所有者”:47391132@N00“,”id“:”33060834550“},{”isfamily“:0,”title“:”04a2271 13“,”farm“:4,”ispublic“:1,”server“:”3919“,”isfriend“:0,”secret“:”73759dda01“,”owner“:”47391132@N00“,”id“:”33060834350“},{“isfamily”:0,“title”:“04a2271 14”,“farm”:1,“ispublic”:1,“server”:“673”,“isfriend”:0,“secret”:“b7877ca2a6”,“所有者”:47391132@N00“,”id“:”33288384312“}


Tags: 数据idcachedatasecretservertitleparams