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文件中推导出来。

有两个关于数据集的关键事实可以帮助您开始:

  1. tconst值表示唯一的标题。像电影、短片、视频游戏、电视连续剧甚至个别电视剧这样的实体共享这个名称空间。
  2. 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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
无法在Java中获取内部类变量的正确值   java乐蒂动画显示为静态图像,但不播放   java删除循环链表中给定键的所有匹配项   java帮助我理解指针与值的问题   java emulator运行正常,但应用程序显示白色屏幕,错误如下   java多参数重载函数   java使用应用程序设置WebSocket路径。springboot的属性   java两个字符串:相同的哈希代码   在AndroidO设备上安装时发生安卓错误(使用signalR for java)   java SDK目录“C:\Users\User\AppData\Local\Android\SDK”不存在   如何从Java中的数组列表中打印数组的出现次数?   varargs作为java 8中函数的输入参数   java lwjgl 3 GLDRAPElement异常\访问\冲突   java如何解决cassandra中的写入超时异常?   java线程在处理JMS消息时休眠   无法删除和重命名java文件