cli实用程序,用于下载imdb数据集并将其编译到sqlite数据库中。
rackfocus的Python项目详细描述
rackfocus(或rackfocus)是一个cli工具,用于将imdb数据集编译成方便的sqlite数据库,以方便使用。
imdb为非商业用途提供对各种数据的开放访问。此数据打包在TSV文件中,无需任何身份验证即可下载。更多信息请参见他们的Datasets page。
对于数据可视化项目和其他类似的用例来说,它可能非常漂亮,但是很难“窥视”到数据,因为它经常涉及连接。例如,cast、crew和title由唯一的id引用,查找它们的名称需要将数据集与其他数据集连接起来。rackfocus通过将数据全部编译成一个紧凑的sqlite文件,使数据浏览变得很容易(假设您说的是sql)。
免责声明:RackFocus不归IMDB或Amazon所有或维护。
用法
要求
运行rackfocus所需要的只是python 3(我非常确定低至3.4应该可以工作,可能更低)。它不依赖于任何第三方软件包。
安装+运行
您可以使用pip在pypi上找到rackfocus:
pip install rackfocus
这将使您设置一个rackfocus命令,可以从任何地方调用,比如so:
rackfocus ./path/to/working/dir ./path/to/output/dir
rackfocus将使用工作目录(第一个参数)临时放置数据集。工作数据将包含在rackfocus创建的新目录中,编译完成后将销毁该目录。
rackfocus的输出是一个整洁的小sqlite数据库,位于名为rackfocus_out.db的文件中,该文件位于指定为第二个参数的路径下。
要浏览rackfocus生成的数据库,请使用sqlite命令行实用程序打开它,如下所示:
sqlite3 rackfocus_out.db
在sqlite提示符下,使用以下命令查看所有表:
.tables
使用以下命令查看表的架构:
.schema title_akas
提示-安排!
在开发过程中,rackfocus计划被安排。假设您喜欢数据可视化,并且总是希望随时可以使用最新的imdb数据。只需将作业设置为定期在任何计算机上运行,可能是树莓pi。使用cron或其他调度机制每天或每周更新数据!
作为输出生成的数据库文件具有可靠、不变的文件名。这样,它在计划时被覆盖,而不需要任何清理。
数据模型
输出的sqlite数据库文件包括或多或少地镜像imdb提供的tsv文件的表,以及一些生活质量连接和浏览增强功能。这些增强主要是将行额外解包成多行。
IMDb’s datasets page中描述的大部分数据模型都适用。对此的任何重写都可以从该repo中的rackfocus/models.py文件中推导出来。
有两个关于数据集的关键事实可以帮助您开始:
- tconst值表示唯一的标题。像电影、短片、视频游戏、电视连续剧甚至个别电视剧这样的实体共享这个名称空间。
- nconst值表示唯一的人。
这些值也碰巧出现在imdb上人员和标题的url中。例如,nicolas cage是nm0000115。
示例
获取所有由伊万杰琳·莉莉主演、IMDB评分为7.0或更高的故事片:
select distinct primaryTitle from name_basics join title_principals on name_basics.nconst=title_principals.nconst join title_basics on title_basics.tconst=title_principals.tconst join title_ratings on title_basics.tconst=title_ratings.tconst where primaryName='Evangeline Lilly' and titleType='movie' and category='actress' and averageRating > 7.0;
获取所有由迈克尔•贝执导的故事片:
select distinct primaryTitle from title_basics join title_crew on title_basics.tconst=title_crew.tconst join name_basics on title_crew.nconst=name_basics.nconst where primaryName='Michael Bay' and job='director' and titleType='movie';
获得IMDB评分在4.0到6.0之间的所有喜剧故事片:
select distinct primaryTitle from title_basics join title_ratings on title_basics.tconst=title_ratings.tconst where averageRating > 4.0 and averageRating < 6.0 and titleType='movie';
贡献
改进是非常受欢迎的,贡献他们是容易的!rackfocus是一个非常简单的应用程序,在python本身之外没有包依赖关系。只要分叉和/或克隆这个回购协议,你就应该走了。
从这个repo的顶层目录中,运行:
pip install -e .
这将在您的环境中安装本地版本的rackfocus。每次更改后运行相同的命令,它应该刷新本地安装以反映更改。
要将系统还原到原始状态,请运行:
pip uninstall rackfocus