如何使用 Python 从 tmdB 中提取数据

How to Extract Data from tmdB using Python

我找到了来自 Movielens 的数据集 here。我的目标是将所有电影 overviews 添加到此数据集中,用于数据集中存在的所有电影 ID(数据集为 tmdb 和其他数据库提供电影 ID)。

我研究过开发者的tmdb documentation,但我每次只能提取单个电影的数据。我的目标是为我的数据框中包含的所有电影 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 来完成,我看到的最接近的是 this,这也是关于每次一部电影。

请原谅您可能看到的任何错误,我是这个领域的新手。

提前致谢。

code snippet

我没有足够的代表发表评论,所以我会在这里指出这一点,看来您不太了解 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)

@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