2015-11-25 38 views
11

Bu istemciilekullanıyorum MacOS.KeyError: Python Instagram API istemcisiyle 'data'

Benim adımlar:

  • , instagram üzerine yeni bir müşteri Kayıtlı aldı client_id ve takip

  • Pip benim mac için piton-instagram
  • Kopya sample_app.py yüklemek client_secret Sample app'daki yönergeler, uygulamamı instagram aracılığıyla başarıyla yetkilendirdim ve bu list of examples'u denedim, ancak bunların hiçbiri işe yaramadı. Tıklamadan sonra <h2> başlığı ve API isteklerinin sayacı değişiyor ve ben Remaining API Calls = 486/500'u görüyorum.

    numaralı telefonu almaya çalıştığımda terminalimde KeyError: 'data' istisnası var. try - except yapısını silersem try satırında 'Hata: 500 İç Sunucu Hatası' göreceğim. Kullandığım

    Traceback (most recent call last): 
    File "/Users/user/.envs/insta/lib/python3.4/site-packages/bottle.py", line 862, in _handle 
    return route.call(**args) 
    File "/Users/user/.envs/insta/lib/python3.4/site-packages/bottle.py", line 1732, in wrapper 
    rv = callback(*a, **ka) 
    File "sample_app.py", line 79, in on_recent 
    recent_media, next = api.user_recent_media() 
    File "/Users/user/.envs/insta/lib/python3.4/site-packages/instagram/bind.py", line 197, in _call 
    return method.execute() 
    File "/Users/user/.envs/insta/lib/python3.4/site-packages/instagram/bind.py", line 189, in execute 
    content, next = self._do_api_request(url, method, body, headers) 
    File "/Users/user/.envs/insta/lib/python3.4/site-packages/instagram/bind.py", line 151, in _do_api_request 
    obj = self.root_class.object_from_dictionary(entry) 
    File "/Users/user/.envs/insta/lib/python3.4/site-packages/instagram/models.py", line 99, in object_from_dictionary 
    for comment in entry['comments']['data']: 
    KeyError: 'data' 
    

    tüm kod Instagram tarafından resmi piton API istemcisi örnekten: İşte

    traceback olduğunu.

  • cevap

    21

    , bir fix gönderildi, ancak henüz birleşti değil.

    Yüklü paketinize bir satır düzeltmeyi models.py'a ekleyin.

    sudo ile Açık: Satır 99 günü

    sudo vi /Library/Python/2.7/site-packages/instagram/models.py # Use relevant python version 
    

    , bu ekleyin:

    if "data" in entry["comments"]: 
    

    Doğru girinti sonraki iki satırda:

     for comment in entry['comments']['data']: 
          new_media.comments.append(Comment.object_from_dictionary(comment)) 
    
    +1

    Bu benim için çalıştı! Bazı hatalar ... Python 3.4'te test ettim. –

    +0

    Bu hatayı keşfetmek ve "hacklemek" için biraz zamanımı harcadım ama onu, liman kaynaklarından inşa ettikleri için liman işleyicilerimizde tamir edemiyorum. Umarım bu düzeltmeyi ana şubeye birleştirirler. – anber

    +0

    Ayrıca python-instagramı pip ile kurdum, ancak problemi @Forge komutunu kullanarak çözebilirim. 'Pip kaldırma python-instagram' yazarsanız, sistem, kaldırılacak dosyaların listesini, models.py dahil olmak üzere ilgili konumlarla birlikte gösterecektir. Python-instagram'ı kaldırmayacak şekilde "n" (Devam et (y/n)? "Deyin ve artık dosyanın nerede olduğunu biliyorsunuz. –

    5

    Modellerde bir hata olduğu anlaşılıyor. Bu dosyada 99 ve 100 numaralı satırı yorumlarsanız, "örnek uygulama" çalışır veya en azından çalışacak gibi görünür. Açıkçası, bu "gerçek" bir düzeltme değildir, ancak örnek Python programı veya Instagram ile ilgili bir sorun olmadığını gösterir. Bu hata için açık Github issue yoktur

    Line 99 # for comment in entry['comments']['data']: 
        Line 100 #  new_media.comments.append(Comment.object_from_dictionary(comment)) 
    
    +0

    Bu düzeltme benim için de çalışır, ancak umarım "son" çözüm değildir. – Stefano

    1

    +1 @forge gelen cevap

    F ya da docker kullanıcıları (bir yorumda belirtildiği gibi), python-instagram repo'sunu çatallar, düzenlerler ve github ile pip kurulumu yaparlar.

    Ya da sadece Dockerfile aşağıdaki satırı ile başkasının çatal kullanın:

    pip install git+https://github.com/zgazak/python-instagram 
    

    0

    Bu gerçekten bir cevap @forge zaman tarafından Yanıta göre sadece hızlı çözüm değildir docker veya okunabilir bir terminali olmayan bir ortam gibi ortamlarda çalışıyorsunuz.

    sed -i '99,100 s/^/#/' /usr/local/lib/python3.5/site-packages/instagram/models.py 
    
    +1

    "Gerçekten bir cevap değil" ise, yorum bırakmak için yeterli bir itibara sahip olduğunuzda yorum olarak bırakmalısınız. –