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

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(使用前将#替换为@)

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

随机推荐

  • 可以处理 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 中也可以 数据库应包含以下列 标题 副标题 如果存在 年份和文