почему я продолжаю получать ошибку IndexError: list index вне диапазона - PullRequest
0 голосов
/ 29 апреля 2011

если я использую 0 вместо x (в цикле while), программа работает, и я получаю 1-ю фотографию из чьего-то списка избранных из flickr, но если я хочу больше, чем 1-я фотография, я получаю эту ошибку

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")

Ответы [ 2 ]

5 голосов
/ 29 апреля 2011

Я не знаю API Flickr, но похоже, что вы запрашиваете только 1 фотографию в getPublicList.В любом случае, вы не проверяете, чтобы убедиться, что total меньше, чем число изображений, возвращенных с getPublicList.

3 голосов
/ 29 апреля 2011

Поскольку вы используете per_page=1 здесь:

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

и вы получите только одну фотографию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...