Я хотел бы экспортировать все теги ID3 (как ID3v1, так и ID3v2) в группу файлов MP3 в виде файла CSV или чего-то подобного. В настоящее время я использую Mp3tag для тегов, но его функция экспорта требует, чтобы я указал, какие теги я хочу экспортировать; Я просто хотел бы экспортировать все существующие теги (а в идеале только те, которые существуют) в любом из файлов MP3 (включая определенные пользователем теги «TXXX»). Для тегов «APIC», хранящих встроенные изображения, было бы достаточно вывести, что тег существует (или, что еще лучше, количество встроенных изображений).
Я использую Microsoft Windows и ищу бесплатное решение. Я с удовольствием использую инструменты командной строки (на самом деле, я часто предпочитаю их).
Спасибо
Я бы посоветовал взглянуть на EyeD3 , который является одновременно инструментом командной строки и библиотекой Python для выполнения именно того, что вы ищете. Сам по себе он будет делать многое из того, что вам нужно - с помощью тривиального скрипта Python он сможет делать именно то, что вы ищете, используя python, встроенный в библиотеку csv.
И EyeD3, и python бесплатны, кроссплатформенны и работают из командной строки.
Сначала установите python в свою систему, а затем используйте pip install eyeD3
для получения EyeD3.
ОП, более опытный в Perl, чем Python, использовал библиотеку perl MP3::Tag для выполнения задачи, есть также аналогичные библиотеки для ряда других языков, например taglib-ruby
Вот моя коллекция средств просмотра тегов ID3. Я собирал их за последние пару месяцев для другого проекта, над которым сейчас работаю. Вы можете манипулировать сценарием PowerShell для обработки любого количества файлов. Но для облегчения понимания я продемонстрировал это с одним входным файлом на первом этапе.
sox.exe
Следующие сценарии Powershell демонстрируют наиболее полезный синтаксис для каждого инструмента для просмотра только тегов ID3. Вы должны загрузить все инструменты и изменить все пути в сценарии или курсе.
# Choose mp3 file to view ID3 tags from
$input = "D:\_input\musicfile.mp3"
$outDir = "D:\_output"
# Set correct paths to downloaded ID3 tools
$taglib = "D:\tag-lib\taglib-sharp.dll"
$exiftool = "D:\exiftool\exiftool.exe"
$ffprobe = "D:\ffmpeg\ffprobe.exe"comment)
$ffmpeg = "D:\ffmpeg\ffmpeg.exe"
$handbrake = "D:\handbrake\handbrakeCLI.exe"
$mediainfo = "D:\MediaInfo\MediaInfo.exe"
$metamp3 = "D:\metamp3\metamp3.exe"
$gettags = "D:\gettags\gettags_mingw.exe"
$tagger = "D:\Tagger\TaggerSharp.exe"
$mpgtx = "D:\mpgtx\mpgtx.exe"
$tag = "D:\Tag\Tag.exe"
$sox = "D:\sox\sox.exe"
$mp3info = "D:\mp3info\mp3info.exe"
# Load taglib library, read ID3 tags and save output to specified folder
[void][system.reflection.assembly]::loadfile($taglib)
$media = [taglib.MPEG.file]::create($input)
[TagLib.Id3v2.Tag] $Id3v2 = $media.GetTag([TagLib.TagTypes]::Id3v2)
$Id3v2.GetFrames() | Out-File "$outDir\taglib.txt"
# Run all external CMD utilities and save their output to specified folder
& $exiftool -ee -e -a -f -g1 -s $input 2>&1 | Out-File "$outDir\exiftool.txt"
& $ffprobe -loglevel quiet -show_streams -show_format -print_format flat=h=1 $input 2>&1 | Out-File "$outDir\ffprobe.txt"
[string](& $ffmpeg -hide_banner -i $input -f NULL nul 2>&1 ) | Out-File "$outDir\ffmpeg.txt"
[string](& $handbrake -v0 --scan --input $input 2>&1) | Out-File "$outDir\handbrake.txt"
& $mediainfo --full $input 2>&1 | Out-File "$outDir\mediainfo.txt"
& $metamp3 --info $input 2>&1 | Out-File "$outDir\metamp3.txt"
& $gettags $input 2>&1 | Out-File "$outDir\gettags.txt"
& $tagger $input 2>&1 | Out-File "$outDir\tagger.txt"
(& $mpgtx -i $input 2>&1 ) -replace "`0" | Out-File "$outDir\mpgtx.txt"
& $tag --test $input 2>&1 | Out-File "$outDir\tag.txt"
& $sox --info $input 2>&1 | Out-File "$outDir\sox.txt"
& $mp3info $input 2>&1 | Out-File "$outDir\mp3info.txt"
Мой личный фаворит, taglib-sharp
так как он выводит больше всего информации. После того, как наступит ExifTool
иffprobe
.csv
. В то время как вы демонстрируете большое разнообразие инструментов, которые можно использовать для решения данной проблемы, вы, похоже, сосредоточены на выводе тегов ID3 в виде вывода командной строки. ИМХО, ваш ответ был бы действительно ценным, если бы в нем был хотя бы один пример сброса данных тега ID3 в .csv
файл. Но все равно спасибо за все старания. Жаль, что я могу проголосовать за этот ответ только один раз.Я немного опоздал в игру, но мой ответ может помочь кому-то еще.
Я думаю, что вы продаете Mp3tag маловато для этой задачи. Его функция экспорта достаточно надежна и позволит вам создать практически любой текстовый формат по вашему выбору: html, xml, csv, tsv и json, и это лишь некоторые из них.
Например, я использую следующее для вывода всех полей из всех файлов для каждого альбома. Перейдите в меню «Файл» > «Экспорт» > «Создать» (кнопка) > введите осмысленное имя > замените стандартное на следующее:
$filename(%_folderpath%__Tags, All.txt,utf-8)$loop(%_path%)^%_parent_directory%|%_directory%|$regexp($list(,:'',''|),\r \n,U+000DU+000A)$$$char(13)$char(10)$loopend() Создано: %_datetime%
Установите флажок «один файл в каталоге» и запустите. Вы получите CSV с трубой "|" как разделитель в каждом обрабатываемом каталоге. И можно обрабатывать тысячи каталогов за один раз.
На форуме есть и другие примеры (поиск вам в помощь), и люди там готовы помочь вам помочь себе.
осуллик
Холрой