天空龙 发表于 2023-7-17 08:38:53

关于自动化重命名压制完的动画集数

目前压制完重命名方法一般都是用bdinfo和vlc播放器看顺序,再一个一个命名,遇到年番和m2ts不按顺序排列的就很麻烦

所以在想有什么方法能批量重命名,
似乎GitHub没搜到类似项目,感觉最简单的思路还是从文件本身入手

请确保已经安装了必要的库(例如os 和subprocess)。

```python
import os
import re
import subprocess

# 获取视频文件
videos = os.sys.argv

# 对每个视频文件执行以下操作
for video in videos:
    # 获取视频文件名
    video_name = os.path.basename(video)

    # 从文件名中截取“第 ”和“ 话”中间的两位数字
    if re.search("第(\d{2})話", video_name):
      episode = re.search("第(\d{2})話", video_name).group(1)
    else:
      raise Exception("无法从文件名中获取集数")
      continue

    # 使用ffmpeg对视频隔3秒截图,输出文件名格式为集数_四位数字.png
    cmd = f'ffmpeg -i "{video}" -vf "fps=1/3,scale=910:512" -ss 2:10 -to 00:21:00 "F:\\cocotemp1\\new4\\{episode}_%04d.png"'
    subprocess.run(cmd, shell=True)
```


注意:在运行以上Python脚本前,请确保已经安装了ffmpeg并且它已经在您的系统路径中。在Python中使用ffmpeg是通过调用命令行完成的,所以需要ffmpeg被正确安装和配置。

另外,这段代码预计你会在命令行中提供视频文件作为参数,类似于运行`python script.py video1.mp4 video2.mp4` 这样的方式。如果你需要在脚本中直接指定文件,你可以替换 `videos = os.sys.argv` 这一行来直接包含你的文件名。


大致思路是用FFmpeg隔3秒截一张图,输出集数,这个方法要求动画标题本身就有集数,没有的的就没办法
目前有这样的思路,
先用FFmpeg截图发现标题,再安装配合日文OCR库,OCR出标题,再链接对应的wiki,找到标题集数那个表格,进行比对,因为OCR有错误率,所以60%匹配即为匹配成功,成功后对视频文件进行重命名,一般是集数和标题,以上需要视频处理,图片处理,OCR和爬虫,感觉比较复杂,不知道大家有没有对应的思路方法

天空龙 发表于 2023-7-17 09:46:00

https://github.com/search?q=Anime++rename&type=repositories
基本都是有集数整理的名字的

天空龙 发表于 2023-7-17 09:52:34

用gpt写了下,感觉不能直接用
1. 请确保已经安装了必要的库,例如os, subprocess, opencv-python (cv2), pytesseract, wikipedia-api 和 bs4.
2. 如前面所说,ffmpeg应该被正确安装和配置。
3. Pytesseract只是一个python接口用于与已安装的Tesseract OCR引擎通信。你需要在你的机器上安装Tesseract并添加它到你的系统路径中。
4. 为了支持日语OCR,你需要安装对应的训练数据。
5. Wikipedia API也需要额外的安装和设置。
6.你需要使用 BeautifulSoup(一个Python库)来解析维基百科页面并提取表格数据。
```python
# 获取维基百科页面内容并解析标题
wiki_html = Wikipedia('ja').page(wiki_url).html()
soup = BeautifulSoup(wiki_html, 'html.parser')

# 找到'各話リスト'对应的表格
wiki_table = None
for header in soup.find_all(['h2', 'h3']):
    if '各話リスト' in header.text:
      sibling = header.find_next_sibling()
      while sibling and wiki_table is None:
            if sibling.name == 'table':
                wiki_table = sibling
            sibling = sibling.find_next_sibling()

# 提取表格中的集数和标题
wiki_episodes = []
if wiki_table is not None:
    for row in wiki_table.tbody.find_all('tr'):# Skip the table header
      columns = row.find_all('td')
      episode = columns.get_text().strip()
      title = columns.get_text().strip()
      wiki_episodes.append((episode, title))
```

然后,在每个视频文件循环中,你可以将OCR文本与这些维基百科标题进行匹配:

```python
# 将OCR文本与维基百科标题进行匹配
matched_title = next((title for ep, title in wiki_episodes if ep == episode and title in ocr_text), None)

if matched_title is not None:
    # 如果找到匹配,将视频文件重命名
    new_video_name = f'{episode}_{matched_title}{os.path.splitext(video)}'
    os.rename(video, os.path.join(video_dir, new_video_name))
else:
    print(f'无法匹配视频的名字: {video_name}')
```
请注意,这只是一个基本示例,具体实现可能需要根据实际情况进行调整。
页: [1]
查看完整版本: 关于自动化重命名压制完的动画集数