我有一个来自Movielens的数据集。我的目标是将数据集中存在的所有电影 ID 的所有电影概述添加到此数据集(数据集为 tmdb 和其他数据库提供电影 ID(。
我已经为开发人员研究了 tmdb 文档,但我每次只能提取单个电影的数据。我的目标是为数据帧中包含的所有电影 ID 创建一个循环,并获取每个相应电影的"概述"。
我到达的最接近的点是:
pip install tmdbv3api
from tmdbv3api import TMDb
from tmdbv3api import Movie
tmdb = TMDb()
tmdb.api_key = 'my API Key'
tmdb.language = 'en'
tmdb.debug = True
movie = Movie()
# for example the movie with id=862
m = movie.details(862)
print (m.overview)
这将为单个电影概述提供理想的结果,但是当我尝试创建如下所示的循环时,它完全失败了。这很可能是错误的,但我什至不知道基于 tmdb API 是否可能:
movie = Movie()
id = movie.details(int(movies.tmdbId))
for id in movies["tmdbId"]: # my dataframe
if id in tmdb.Movies(int(tmdb_id)): # tmdb database
print (m.overview)
我也知道这可以通过JSON文件和urllib.request来完成,我见过的最接近的是这个,这也是关于每次一部电影。
请原谅您可能看到的任何错误,我是这个领域的新手。
提前谢谢你。
代码片段
@ibbs谢谢!在您的帮助下,我终于达到了以下似乎有效的方法:
movie = Movie()
for id in movies["tmdbId"]:
try:
m= movie.details(id)
print(m.overview)
except:
# movie ids of the csv file no longer in tmdB
pass
我没有足够的代表来评论,所以我会在这里指出这一点,看来你不太了解 for 循环是如何工作的。您定义的 id 变量将被 for 循环中 movies['tmdbId'] 的值覆盖。
至于解决方案,请尝试此操作。
movie = Movie()
id = movie.details(int(movies.tmdbId)) # Not sure why this variables is defined?
for id in movies["tmdbId"]: # my dataframe, I am assuming this is iterable
if movie.details(int(id)): # tmdb database,
m = movie.details(int(id))
print (m.overview)