2017-06-15 12 views
0

だから私はこれからもう一度やり直そうとしています。私は昨日何時間も盗んでいたので、ちょっとした手助けをするのに素敵なお話をするのが最善だと思った。Python/JSON:loop themoviedb api画像呼び出し

は、私がここにある

tmdb_posters('ID') 

としてIDを使用してラインをループにそれを得るように見えることができない画像IDの

tt1211837 
tt0151804 
tt2543164 
tt2911666 
tt2140479 

のリストとの.txtファイルを持っていますループなしでコードを書くことができます。

import os 
import requests 
import random 


CONFIG_PATTERN = 'http://api.themoviedb.org/3/configuration?api_key={key}' 
IMG_PATTERN = 'http://api.themoviedb.org/3/movie/{imdbid}/images?api_key={key}' 
KEY = '*****' 

def _get_json(url): 
    r = requests.get(url) 
    return r.json() 

def get_poster_urls(imdbid): 

    config = _get_json(CONFIG_PATTERN.format(key=KEY)) 
    base_url = config['images']['base_url'] 
    sizes = config['images']['poster_sizes'] 

    def size_str_to_int(x): 
     return float("inf") if x == 'original' else int(x[1:]) 
    max_size = max(sizes, key=size_str_to_int) 

    posters = _get_json(IMG_PATTERN.format(key=KEY,imdbid=imdbid))['posters'] 
    poster_urls = [] 
    for poster in posters: 
     rel_path = poster['file_path'] 
     url = "{0}{1}{2}".format(base_url, max_size, rel_path) 
     poster_urls.append(url) 

    return poster_urls 


def tmdb_posters(imdbid, count=None, outpath='.'): 
    urls = get_poster_urls(imdbid) 
    print random.choice(urls) 

if __name__=="__main__": 
     tmdb_posters('tt1211837') # <--- ID 

しかし、私は試してみて、私はJSONのキー「ポスターは」悪いことを私に言って400クライアントのエラーメッセージと別のものを得るループの任意のフォームにこれを置きます。

事前にお手伝いいただければ幸いです。私は髪を守りたい。

UPDATE

import urllib 
import urllib2 
from bs4 import BeautifulSoup 
import sys 
import time 
import requests 
import random 

CONFIG_PATTERN = 'http://api.themoviedb.org/3/configuration?api_key={key}' 
IMG_PATTERN = 'http://api.themoviedb.org/3/movie/{imdbid}/images?api_key={key}' 
KEY = '*****' 


def _get_json(url): 
    r = requests.get(url) 
    return r.json() 


def get_poster_urls(imdbid): 

    config = _get_json(CONFIG_PATTERN.format(key=KEY)) 
    base_url = config['images']['base_url'] 
    sizes = config['images']['poster_sizes'] 

    def size_str_to_int(x): 
     return float("inf") if x == 'original' else int(x[1:]) 
    max_size = max(sizes, key=size_str_to_int) 

    posters = _get_json(IMG_PATTERN.format(key=KEY, imdbid=imdbid))['posters'] 
    poster_urls = [] 
    for poster in posters: 
     rel_path = poster['file_path'] 
     url = "{0}{1}{2}".format(base_url, max_size, rel_path) 
     poster_urls.append(url) 

    return poster_urls 


def tmdb_posters(imdbid, count=None, outpath='.'): 
    urls = get_poster_urls(imdbid) 
    print random.choice(urls) 




file = open("data/titles3.txt", "r") 

splits = file.read().splitlines() 
for line in splits: 
    if __name__ == "__main__": 
     file = open("data/posters.txt", "a") 
     woop = tmdb_posters(line) 
     file.write(str(woop)) 
     file.close() 

UPDATE 2

import urllib 
import urllib2 
from bs4 import BeautifulSoup 
import sys 
import time 
import requests 
import random 

CONFIG_PATTERN = 'http://api.themoviedb.org/3/configuration?api_key={key}' 
IMG_PATTERN = 'http://api.themoviedb.org/3/movie/{imdbid}/images?api_key={key}' 
KEY = '*****' 


def _get_json(url): 
    r = requests.get(url) 
    return r.json() 


def get_poster_urls(imdbid): 

    config = _get_json(CONFIG_PATTERN.format(key=KEY)) 
    base_url = config['images']['base_url'] 
    sizes = config['images']['poster_sizes'] 

    def size_str_to_int(x): 
     return float("inf") if x == 'original' else int(x[1:]) 
    max_size = max(sizes, key=size_str_to_int) 

    posters = _get_json(IMG_PATTERN.format(key=KEY, imdbid=imdbid))['posters'] 
    poster_urls = [] 
    for poster in posters: 
     rel_path = poster['file_path'] 
     url = "{0}{1}{2}".format(base_url, max_size, rel_path) 
     poster_urls.append(url) 

    return poster_urls 


def tmdb_posters(imdbid, count=None, outpath='.'): 
    urls = get_poster_urls(imdbid) 
    print random.choice(urls) 


with open('data/titles3.txt', 'r') as ids: 
     ids = ids.read().split('\n') 
     for poster in ids: 
      if __name__ == "__main__": 
       file = open("data/posters.txt", "a") 
       file.write(str(tmdb_posters(poster)) + "\n") 
       file.close() 

は、ITが

import urllib 
import urllib2 
from bs4 import BeautifulSoup 
import sys 
import time 
import requests 
import random 

CONFIG_PATTERN = 'http://api.themoviedb.org/3/configuration?api_key={key}' 
IMG_PATTERN = 'http://api.themoviedb.org/3/movie/{imdbid}/images?api_key={key}' 
KEY = '*****' 


def _get_json(url): 
    r = requests.get(url) 
    return r.json() 


def get_poster_urls(imdbid): 

    config = _get_json(CONFIG_PATTERN.format(key=KEY)) 
    base_url = config['images']['base_url'] 
    sizes = config['images']['poster_sizes'] 

    def size_str_to_int(x): 
     return float("inf") if x == 'original' else int(x[1:]) 
    max_size = max(sizes, key=size_str_to_int) 

    posters = _get_json(IMG_PATTERN.format(key=KEY, imdbid=imdbid))['posters'] 
    poster_urls = [] 
    for poster in posters: 
     rel_path = poster['file_path'] 
     url = "{0}{1}{2}".format(base_url, max_size, rel_path) 
     poster_urls.append(url) 

    return poster_urls 


def tmdb_posters(imdbid, count=None, outpath='.'): 
    urls = get_poster_urls(imdbid) 
    woop = random.choice(urls) 
    file = open("data/posters.txt", "a") 
    file.write(str(woop) + "\n") 
    file.close() 


with open('data/titles3.txt', 'r') as ids: 
     ids = ids.read().split('\n') 
     for poster in ids: 
      if __name__ == "__main__": 
       tmdb_posters(poster) 

答えて

0

私はまだコメントカントSUSSEDが、それはループの中にうまく動作しているようです。 コードを投稿できますか?idsを読み取る方法

+0

私は昨日いくつかの方法を試しましたが、ここで私は掘り出したものです。あまりにも確かに私はそれを右に得ている。 __name場合 __ == "__ MAIN__":ファイル内の行の ファイル=オープン( "データ/ titles3.txt"、 "R") 印刷tmdb_posters(ライン) – impshum

+0

'は改行文字(があるでしょう\ n ')が各行の最後に追加されているので、それを削除する必要があります – Stack

+0

これは論理的なようです。 – impshum

関連する問題