如何从文件列表开始创建电影数据库

2024-02-15

我的家庭服务器上有大量电影(大约 4000 部)。文件全部命名为Title - Subtitle (year).extension。我想创建一个包含我所有电影的数据库(即使在 Excel 中也可以)。数据库应包含以下列:标题、副标题(如果存在)、年份和文件在服务器上的位置(某些电影按流派或演员组织在文件夹中)。截至目前,我有一个 bash 脚本,它仅返回一个 txt 文件,其中包含每个硬盘驱动器的文件列表(每个文件包含每个硬盘驱动器的列表)。 如何在我的家庭服务器(运行 debian)上自动创建这种数据库?

使用一些电影数据库 API 自动检索有关电影的其他信息也很棒,但我想这会非常复杂。


这是一个相当广泛的问题,在这里不太合适(这更像是一个教程,而不是一个快速的代码问题),但这里有一些策略建议:

  • Excel 将打开 .csv 并将逗号/换行符视为单元格。所以
  • 您需要迭代(也许是递归地)目录
  • 扩展路径名——如果你使用像Python这样的高级语言,这是通过标准函数实现的;然后使用正则表达式来解析最后一位
  • 将每个路径的格式化内容存储为列表中的行
  • 将该列表打印到文本文件,用逗号连接每个元素,并用换行符连接每行
  • 为所述文件提供 .csv 后缀并在 Excel 中打开它

请注意,如果您确实想要一个合适的数据库,Python 也是一个不错的选择——SQLite 是标准安装的一部分。

干杯,祝你好运


更新:哈哈,你在我回答的时候编辑了问题。似乎您需要的所有内容都在文件名中,但如果您计划使用元数据,请注意。如果文件并非全部来自同一来源,则从文件中提取元数据可能会变得更加棘手;并非每种媒体类型都具有相同的元数据结构,并非创建文件的每个应用程序都提供相同的元数据结构。因此获取元数据的逻辑可能会变得混乱。

您是否有理由不能使用现有程序来执行此操作?

最后你提到将它放在你的网络服务器上;再次遵循 Python,向您的服务器发出所需请求的能力也内置于标准包中。


最终更新

无法帮助您处理 bash;我对此一无所知,我也不是 Python 专家,但你的目标非常简单。我还没有测试过这个——可能有一两个错别字,考虑它是大部分适合 python 的伪代码。

# import the standard libraries you'll need
import os # https://docs.python.org/2/library/os.html
import re # https://docs.python.org/2/library/re.html

# this function will walk your directories and output a list of file paths
def getFilePaths(directory):
    file_paths = []
    for root, directories, files in os.walk(directory):
        for filename in files:
            filepath = os.path.join(root, filename)
            file_paths.append(filepath)
    return file_paths



video_file_paths = getFilePaths("path/to/video/library")
output_to_csv = [];
for video_file in video_file_paths:
    base_path, fname = os.path.split(video_file) 

     """ This is a super simple bit of regex that, provided  your files are all formatted as
     written, will parse out title, subtitle, year and file extension. If your file names
     turn out to have more exceptions than you expect (I'd be shocked if not), you may need
     to make this part more robust, either with much more savvy regex, or else some conditional
     logic—maybe a recursive try... catch loop"""
    reg_ex = re.compile("/^(.*) - (.*) \((.*)\)\.(.*)$/");

    # now apply the compiled regex to each path
    name_components = reg_ex.match(fname);

    """Each output is a row of your CSV file; .join() will join the 4 elements of the regex
    match (assuming, again, that your filenames are as clean as you claim), and then add
    the basepath, so you should be building, in this loop, a list with elements like:
    title, subtitle, year, file_extension, full path"""

    output_to_csv.append("{0},{1}".format(name_components.join(","), base_path));

#create the file, making sure the location is writeable
csv_doc = open("my_video_database.csv", "w");

# now join all the rows with line breaks and write the compiled text to the file
csv_doc.write( ouput_to_csv.join("\n") ); 

#close  your new database
csv_doc.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从文件列表开始创建电影数据库 的相关文章

  • Flask-SocketIO redis 订阅

    我在用着https github com miguelgrinberg Flask SocketIO https github com miguelgrinberg Flask SocketIO实现 WebSocket 服务器 我需要从另一
  • 导入错误:无法导入名称“FFProbe”

    我无法获取ffprobe包 https github com simonh10 ffprobe在 Python 3 6 中工作 我使用 pip 安装它 但是当我输入import ffprobe it says Traceback most
  • 从所有数据帧列中删除子字符串

    我有一个单词列表 大约 1000 个单词 我称之为负面单词 CAST ARTICLES SANITARY JAN CLAUSES SPECIAL ENDORSEMENT 我很快就会用这个单词列表制作一个数据框 我还有一个数据框 看起来像 F
  • 如何通过 python 中的函数运行列表?

    我试图通过我创建的函数运行我的列表 但不断收到错误 我不知道出了什么问题 温度 F temp f 19 21 21 21 23 功能 def fahrToCelsius tempFahrenheit return tempFahrenhei
  • Scrapy 文件管道不下载文件

    我的任务是构建一个可以下载所有内容的网络爬虫 pdfs 在给定站点中 Spider 在本地计算机和抓取集线器上运行 由于某种原因 当我运行它时 它只下载一些但不是全部的 pdf 通过查看输出中的项目可以看出这一点JSON 我已经设定MEDI
  • Python Selenium 打印另存为 PDF 等待文件名输入

    我正在尝试通过打印对话框将网站另存为 PDF 我的代码允许我另存为pdf 但要求我输入文件名 我不知道如何将文件名传递到弹出框 附上我的代码 import time from selenium import webdriver import
  • Python speedtest.net,或等效的[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 是否有一个 Python 库可以实现 SpeedTest net 测试或等效的互联网连接速度测试 GitHub上有一个项目叫速度检查 https gi
  • Python 在哪些系统上不使用 IEEE-754 双精度浮点数

    Python 对 IEEE 754 浮点运算进行了各种引用 但不保证1 https docs python org 3 tutorial floatingpoint html 2 https pythondev readthedocs io
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • pandas groupby 操作缺少数据

    在 pandas 数据框中 我有一列如下所示 0 M 1 E 2 L 3 M 1 4 M 2 5 M 3 6 E 1 7 E 2 8 E 3 9 E 4 10 L 1 11 L 2 12 M 1 a 13 M 1 b 14 M 1 c 15
  • 实现软删除的最佳方法是什么?

    目前在做一个项目 我们要对大部分用户 用户角色 实现软删除 我们决定添加一个is deleted 0 数据库中每个表的字段并将其设置为 1 如果特定用户角色点击特定记录上的删除按钮 现在为了将来的维护 每个SELECT查询需要确保它们不包含
  • 如何从邻接表高效创建稀疏邻接矩阵?

    我正在与last fm http labrosa ee columbia edu millionsong lastfm数据集来自百万歌曲数据集 http labrosa ee columbia edu millionsong 数据以一组 j
  • 在Python中使用pil读取tif图像时出现值错误?

    我必须读取尺寸的tif图像2200 2200并输入 uint16 我将 PIL 库与 anaconda python 一起使用 如下所示 from PIL import Image img Image open test tif img i
  • 如何创建增量加载网页

    我正在编写一个处理大量数据的页面 它会永远持续到我的结果页面加载 几乎无限 因为返回的数据太大了 因此 我需要实现一个增量加载页面 例如 url 中的页面 http docs python org http docs python org
  • tf.print() vs Python print vs tensor.eval()

    看来在Tensorflow中 至少有三种方法可以打印出张量的值 我一直在读here https www freecodecamp org news debugging tensorflow a starter e6668ce72617 an
  • AWS 将 MQTT 消息存储到 DynamoDB

    我构建了一个定期发送 MQTT 消息的 python 脚本 这是发送到后端的 JSON 字符串 Id 1234 Ut 1488395951 Temp 22 86 Rh 48 24 在后端 我想将 MQTT 消息存储到 DynamoDB 表中
  • 检查 IP 地址是否在给定范围内

    我想检查一下是否有IP180 179 77 11位于特定范围之间 例如180 179 0 0 180 179 255 255 我编写了一个函数 它将每个 IP 八位字节与其他八位字节进行比较 def match mask IP min ip
  • 数据库字段中的逗号分隔值

    我有一个产品表 该表中的每一行对应一个产品 并由唯一的 ID 标识 现在 每个产品都可以有多个与该产品关联的 代码 例如 Id Code 0001 IN ON ME OH 0002 ON VI AC ZO 0003 QA PS OO ME
  • py2exe ImportError:没有名为 的模块

    我已经实现了一个名为 myUtils 的包 它由文件夹 myUtils 文件 组成 init py 和许多名称为 myUtils 的 py 文件 该包包含在 myOtherProject py 中 当我从 Eclipse 运行它们时可以找到
  • Chrome 驱动程序和 Chromium 二进制文件无法在 aws lambda 上运行

    我陷入了一个问题 我需要在 AWS lambda 上做一些抓取工作 所以我按照下面提到的博客及其代码库作为起点 这非常有帮助 并且在运行时环境 Python 3 6 的 AWS lambda 上对我来说工作得很好 https manivan

随机推荐

  • 可以处理 HTTPS 的 WebBrowser 控件

    我正在寻找 NET 中可以处理 HTTPS 的 WebBrowser 控件的替代品 这个问题 https stackoverflow com questions 790542 replacing net webbrowser control
  • 使用 dash python 更改 bootstrap nav-pills 样式

    Dash 允许使用我们自己的 CSS 样式表 但是 如果您在科学领域并且不熟悉 CSS 则可以使用 Bootstrap 组件 这使得样式和页面布局非常容易组合在一起 这是在 dash 中创建侧边栏的标准示例 This app creates
  • Android 6.0 Marshmallow 停止显示垂直 SeekBar 拇指

    我一直在使用这个基本的包装器 https stackoverflow com a 28397530 250340在 SeekBar 周围 但发现它隐藏了拇指 或者做了一些时髦的事情 比如在棉花糖下的白色背景上将其变成白色 我使用 AS Bl
  • 企业报告解决方案[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ListView Flutter 的单选

    我正在尝试实施一个listView在我的应用程序中进行单选 这样一旦点击列表中的项目 按下的项目颜色状态就会与其他项目不同 我已经做了我所知道的一切 但效果并不好 问题是 即使我的实现在按下时更新每个项目的状态 它也不会将其他项目重置为其初
  • 无法将 Web.Http.Results.JsonResult 隐式转换为 Web.Mvc.JsonResult

    我已经在控制器上设置了这个测试方法 以消除任何复杂性 根据我通过搜索找到的所有结果 这应该可行 我不确定我在这里缺少什么 public JsonResult test return Json new id 1 这是我得到的错误 无法将类型
  • 在 PHP 5 中如何通过引用传递对象?

    在 PHP 5 中 您是否需要使用 修饰符通过引用传递 例如 class People p new People function one a a null function two a a null 在 PHP4 中你需要 修改器来在更改
  • 缓冲读取器和文件读取器以及扫描器类之间的区别[重复]

    这个问题在这里已经有答案了 谁能解释一下班级之间的区别BufferedReader FileReader and Scanner 当我想读取文本文件时该使用哪一个 Well FileReader只是一个Reader它使用平台默认编码 urg
  • KJUR jws jsrsasign:无法在 JWT.io 上验证 ES256 令牌

    我们正在尝试使用 KJUR jws 库为 Apple Search Ads 制作 JWT 令牌 我们使用的是Apple的API文档 https developer apple com documentation apple search a
  • GridView PageIndexChanging 不起作用

    这似乎是一个很容易问的问题 但我无法在 GridView 中显示项目 这是我的代码 public partial class TestList System Web UI Page protected void Page Load obje
  • 在圆上找到最接近给定点的点的最佳方法

    给定一个点 pX pY 和一个已知圆心 cX cY 和半径 r 的圆 您可以想出最短的代码量来找到圆上最接近 pX pY 我有一些代码可以工作 但它涉及将圆转换为 x cX 2 y cY 2 r 2 其中 r 是半径 形式的方程并使用方程绘
  • 了解代码优先的虚拟属性

    您好 我刚刚学习使用实体框架代码优先 我似乎无法理解一些东西 我根据教程创建了三个模型 public class Course public int CourseID get set public string Title get set
  • python脚本在windows中运行时是什么用户? [复制]

    这个问题在这里已经有答案了 我试图让 python 删除一些目录 但出现访问错误 我认为是python用户帐户没有权限 WindowsError Error 5 Access is denied path 是我运行脚本时得到的结果 我试过了
  • 映射结构:使用“.”作为目标属性 - 目前是否支持?

    我想按如下方式使用映射结构 Mapping target source object1 subobject2 subobject3 public abstract Object4 toObject Object1 object1 作为对象
  • KML 图层限制问题

    我已通过 url 将 6 kml 图层加载到我的网站 以便通过复选框关闭 打开 但我最近注意到 它只允许我在给定时间显示 4 公里 当我选择超过 4 个时 第 5 个和第 6 个不会显示 我选择什么并不重要 它似乎限制我只能显示 4 有人可
  • Asp.net core中ViewComponent之间如何共享ViewData

    我有两个 ViewComponent 我想使用 ViewData 或其他技术来共享一些数据 然后在主视图中使用这些数据 但这不是方法 当两个 ViewComponent 的 if 条件丰富时 每个 ViewComponent 的 ViewD
  • .ics 邀请日历在 Outlook.com 问题中不起作用

    您好 我使用 cakephp 电子邮件发送一封附有 ics 日历的电子邮件 问题是确认按钮 si 完美显示在 yahoo 和 gmail 中 但不在 Outlook com 中 以下是 ics 文件的示例 BEGIN VCALENDAR V
  • DataGridView 单元格编辑十进制/十六进制格式的问题

    我有一个数据网格视图绑定到一个数据表1 16 列定义为Integer 默认单元格样式为十六进制 2 位数字 Format X2 当进入单元格编辑时 我想向用户提供以十进制或十六进制写入值的可能性 十六进制可以写成 例如 0x00 0X01
  • 错误消息显示退出代码-1073741510 [重复]

    这个问题在这里已经有答案了 我正在尝试使用以下 cod 读取 cpuid 信息 但它不起作用 我正在使用 Visual Studio 2010 include stdafx h include
  • 如何从文件列表开始创建电影数据库

    我的家庭服务器上有大量电影 大约 4000 部 文件全部命名为Title Subtitle year extension 我想创建一个包含我所有电影的数据库 即使在 Excel 中也可以 数据库应包含以下列 标题 副标题 如果存在 年份和文