2011-04-29 38 views
0

如果我使用0而不是x(在while循环中)该程序的作品,我从flickr从某人的最爱列表中获得第一张照片,但如果我想要更多超过或比第一照片等我得到这个错误为什么我不断收到IndexError:列表索引超出范围错误

import flickrlib 
import webbrowser 
FLICKR_API_KEY = "f86203e922041a6a999fd4a59f19b1e6" 
FLICKR_API_SSECRET = "b286bcaddafb00c8" 

flickruser = raw_input("Who are you interested in? ") 
amount = int(raw_input("How many pictures would you like to see? ")) 
total = amount 
counter = 0 
imagepile = ""   
x= 0 
client = flickrlib.FlickrAgent(FLICKR_API_KEY, FLICKR_API_SSECRET) 
person = client.flickr.people.findByUsername(username= flickruser) 
userid = person[u'id'] 
photos = client.flickr.favorites.getPublicList(user_id= userid, per_page=1) 

while counter < total: 
    farm = photos[u'photo'] [x] [u'farm'] 
    server = photos[u'photo'] [x] [u'server'] 
    photo_id = photos[u'photo'] [x] [u'id'] 
    secret = photos[u'photo'] [x] [u'secret'] 
    imgsrc = "<img src='http://farm" + farm + ".static.flickr.com/" + server + "/" + photo_id + "_" + secret +".jpg' /><br />" 
    imagepile = imagepile + imgsrc 
    counter= counter+1 
    x=x+1 
htmlopen = "<html><head><title>"+ flickruser + "</title></head><body><h1>" + flickruser + "'s Public List. ""</h1>" 

simple_page = htmlopen + imagepile + "</body></html>" 

xml_file = open("webpage.html", "w") 
xml_file.write(simple_page) 
xml_file.close() 

webbrowser.open("webpage.html") 
+3

请发布您收到的'IndexError'的完整输出。 – jathanism 2011-04-29 13:56:09

回答

5

我不知道Flickr的API,但它看起来像你只要求1张照片getPublicList。无论哪种方式,您都不检查以确保total小于从getPublicList返回的图片数量。

+1

发布后+1我看到你先到那里:) – MByD 2011-04-29 13:59:54

3

因为你使用per_page=1这里:

photos = client.flickr.favorites.getPublicList(user_id= userid, per_page=1) 

,你只能得到一张照片。

相关问题