You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Takeout视频元数据与导出文件名匹配技术问询

解决方案:YouTube Takeout视频文件与元数据CSV匹配(无需API/Python)

针对你提到的700+个Takeout导出视频(截断文件名+序号)与videos.csv元数据匹配的问题,以下是几个无需依赖YouTube API或Python的实用方案:

方案1:利用原始Takeout文件夹的video_id.txt(最准确)

如果还保留着Takeout导出的原始文件夹结构(每个视频单独存放在子文件夹中,内含video_id.txt和对应的mp4文件),可以通过命令行批量提取文件名与Video ID的对应关系:

macOS/Linux(Bash)

find /path/to/takeout/videos -type f -name "video_id.txt" | while read -r vid_file; do
    video_dir=$(dirname "$vid_file")
    video_id=$(cat "$vid_file")
    mp4_file=$(find "$video_dir" -maxdepth 1 -type f -name "*.mp4" | head -n 1)
    if [ -n "$mp4_file" ]; then
        mp4_name=$(basename "$mp4_file")
        echo "$mp4_name,$video_id"
    fi
done > video_id_map.csv

Windows(PowerShell)

Get-ChildItem -Path "C:\path\to\takeout\videos" -Recurse -Directory | ForEach-Object {
    $vidFile = Join-Path $_.FullName "video_id.txt"
    if (Test-Path $vidFile) {
        $videoID = Get-Content $vidFile -Raw | Trim
        $mp4File = Get-ChildItem $_.FullName -Filter "*.mp4" | Select-Object -First 1
        if ($mp4File) {
            "$($mp4File.Name),$videoID"
        }
    }
} | Out-File "video_id_map.csv" -Encoding UTF8

生成的video_id_map.csv会包含截断后的mp4文件名与对应Video ID,直接与原videos.csv通过Video ID字段做关联即可。

方案2:通过文件修改时间匹配

Takeout导出的视频文件修改时间会与YouTube视频的发布/更新时间对应,而videos.csv中包含Published At或Updated At字段(UTC时区):

  1. 用命令行提取所有mp4文件的修改时间:
    • Bash:stat -c "%Y,%n" /path/to/videos/*.mp4 > file_times.csv(%Y输出UTC时间戳,方便匹配)
    • PowerShell:Get-ChildItem "C:\path\to\videos\*.mp4" | Select-Object Name, @{Name='UnixTime';Expression={[int](Get-Date $_.LastWriteTimeUtc -UFormat %s)}} | Export-Csv -Path file_times.csv -NoTypeInformation
  2. 在videos.csv中把Published At字段转成UTC时间戳(用Excel/LibreOffice的UNIX()函数或自定义公式)
  3. 通过时间戳字段在表格工具中做匹配,注意允许±30秒的误差(导出过程可能有微小时间偏移)

方案3:通过视频时长匹配

如果时间匹配有误差,可利用视频时长做匹配:

  1. 安装ffmpeg(跨平台免费工具),用命令行提取所有mp4的时长:
    • Bash:
      for mp4 in /path/to/videos/*.mp4; do
          duration=$(ffmpeg -i "$mp4" 2>&1 | grep -oP 'Duration: \K[^,]+' | sed 's/\..*//')
          echo "$(basename "$mp4"),$duration"
      done > video_durations.csv
      
    • PowerShell:
      Get-ChildItem "C:\path\to\videos\*.mp4" | ForEach-Object {
          $duration = ffmpeg -i $_.FullName 2>&1 | Select-String 'Duration:' | ForEach-Object { $_.Line -replace '.*Duration: (\d+:\d+:\d+).*', '$1' }
          "$($_.Name),$duration"
      } | Out-File "video_durations.csv" -Encoding UTF8
      
  2. 将videos.csv中的Duration字段(如PT15M30S)转成HH:MM:SS格式,再与video_durations.csv做匹配。对于时长重复的视频,结合修改时间进一步区分。

方案4:通过文件哈希值匹配

如果videos.csv中包含文件哈希字段(如MD5),可直接计算mp4文件的哈希值做匹配:

  • Bash(MD5):md5sum /path/to/videos/*.mp4 > video_hashes.csv
  • PowerShell(MD5):Get-ChildItem "C:\path\to\videos\*.mp4" | Get-FileHash -Algorithm MD5 | Select-Object @{Name='FileName';Expression={$_.Path | Split-Path -Leaf}}, Hash | Export-Csv -Path video_hashes.csv -NoTypeInformation
    然后在表格工具中通过哈希字段关联即可。

注意事项

  • 处理重复截断文件名(带(1)(2)后缀)时,优先用时长+修改时间的组合匹配,确保准确性
  • 所有操作建议先在小批量视频上测试,再推广到全部700+个文件

内容的提问来源于stack exchange,提问作者Jackie Meese

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 14:54:50