QT GUIとコマンドラインインターフェイスを備えたタグエディター。 MP4(iTunes)、ID3、Vorbis、Opus、FLAC、Matroskaをサポートしています。
タグエディターは、次のタグ形式を読み書きできます。
さらなる発言:
タグエディターは、ID、形式、言語、ビットレート、期間、サイズ、タイムスタンプ、サンプリング頻度、FPS、トラックのその他の情報などの技術情報を表示することもできます。
また、MP4およびMatroskaファイルの要素構造を検査および検証することもできます。
変更を適用するために、タグエディターがファイル全体を書き直す必要がある場合があります。これにより、一時ファイルが作成されます。 GUIのデフォルト設定では、一時的なファイルも何かがうまくいかない場合に備えてバックアップとして機能するため、これは保守的であることさえ強制されます。したがって、CLIを使用する場合、 --force-rewrite
使用することもお勧めします。
次のセクションでは、バックアップがないというコストで書き換え、ファイル内にいくつかのパディングがあり、ファイルの最後にタグを保存することを避けるために、設定を微調整する方法について説明します。
それにもかかわらず、とにかくすべての場合にファイルの書き換えを避けることは常に可能ではありません。 GUI設定内の一時ファイルのディレクトリを構成するか、CLIオプションである--temp-dir
設定できます。その後、ある時点ですべての一時ファイルを簡単にクリーンアップできます。効率のために、一時的なディレクトリは、編集しているファイルと同じファイルシステム上にある必要があります。一時ファイルを自動的に削除する機能はまだ実装されていません。
エディターを使用すると、MP4/Matroskaファイルの最初と最後にタグを配置するかどうかを選択できます。ファイルの最後にタグを配置すると、ファイル全体を書き換えて変更を適用する必要がなくなります。
CLIでは、これは--tag-pos
オプションを介して制御されます。特定の--tag-pos
強制するには、ファイルを書き直す必要がある場合でも、 --force
オプションと組み合わせる。
ID3v2タグとVorbis/Opusのコメントは、最初にのみ配置できます。 id3v1タグは、ファイルの最後にのみ配置できます。したがって、このようなタグを扱うとき、この構成は効果がありません。
インデックス/キューの位置を制御することも可能です。ただし、これは現在、Matroskaファイルを扱うときにのみサポートされています。
注:タグとインデックスは互いに結び付けられているため、これはMP4に実装できません。 MP4ファイルを扱う場合、インデックスの位置は常にタグ位置と同じです。
ファイルの先頭にインデックスを置くことは、 FastStartと呼ばれることもあります。
CLI経由でFastStartを強制するには、次のオプションが必要です。
tageditor set --index-pos front --force
パディングにより、ファイル全体を書き換えたり、タグを追加したりすることなく、タグ情報を追加できます。パディングの使用法を構成できます。
また、ファイル全体を強制的に書き換えて、好みのパディングを実施することも可能です。
関連するCLIオプションは、 --min-padding
、 --max-padding
、 --preferred-padding
、および--force-rewrite
です。
パディングを利用することは現在、OGGストリームを扱うときにサポートされていません(生のFLACストリームを扱うときにサポートされています)。
「バックアップ/一時ファイル」セクションで説明されているように、これは、ファイル全体を書き換えるときに作成された一時ファイルがバックアップとしても機能するため、これは良い考えではありません。ただし、それでも可能な限りファイルの書き換えを避けたい場合は、GUIの「ファイルレイアウト」設定で以下を設定します。
CLIを使用する場合、 --max-padding 429496729
CLI引数に追加する必要があります(そして、前のセクションで言及された他の引数のいずれかを避けます)。
大きなファイル(特にMatroskaファイル)を編集するには時間がかかります。パフォーマンスを向上させるには、インデックスをファイルの最後に配置します(CLIオプション--index-pos back
)。その後、インデックスのサイズを再計算する必要はないためです。また、「バックアップ/一時ファイル」セクションのアドバイスに従って、書き換えを強制し、編集しているファイルと同じファイルシステムに一時ディレクトリを配置します。タグエディターが回避できるかどうかを確認することさえせず、大きなマトロスカファイルに顕著な時間がかかる可能性のある計算をスキップできるため、書き込みを強制するとパフォーマンスが向上する可能性があります。
もちろん、書き換えを回避できることは、さらに最適です。それを達成する方法については、前のセクションをチェックアウトしてください。書き換えを回避するときにパフォーマンスをさらに向上させるには、タグを最後に置きます(CLIオプション--tag-pos back
)。タグエディターは、タグを前面に配置しようとさえしないため、いくつかの計算をスキップできます。 (書き換えを避けることは、一般的にはまだ良い考えではありません。)
マトロスカコンテナ形式(およびマトロスカに基づいたWebm)は、共通の慣習に陥っています。したがって、以下のすべてのCLIの例が、そのようなファイルで使用することが理にかなっているわけではありません。
一般的に、1つのMatroskaファイルには複数のタグがあり、各タグには「ターゲット」があり、タグのフィールドが何に適用されるかを決定します。たとえば、曲やアルバム全体を決定します。したがって、CLIまたはGUIを使用する場合、フィールドを追加するためにどのタグ/ターゲットに注意する必要があります。
Matroskaは、トラック/ディスク番号と他の形式と同様に合計に1つの組み合わせフィールドを使用しません。代わりに、目的のターゲットのタグに再び追加する必要がある個別のフィールドpart
とtotalparts
使用します(たとえば、トラック番号と合計の50/"アルバム")。
詳細については、タグ付けに関する公式のマトロスカのドキュメントをチェックアウトしてください。また、オーディオコンテンツとビデオコンテンツの例も含まれています。
Tag Editorは、Matroskaドキュメントに記載されているXML形式をサポートしていないことに注意してください。 GUIでは、エディターの上部にあるコントロールを介して、タグとそのターゲットを追加/削除/編集するだけです。設定では、ファイルをロードするときに特定のターゲットのタグを自動的に追加する必要があることを指定することもできます。 CLIを使用する場合、そのフィールドの前にターゲットを指定して、特定のターゲットのタグにフィールドを追加する必要があることを指定できます。特定のターゲットのタグを明示的に削除することもできます。具体的なCLI使用の例を以下に示します。
Githubのリリースセクションを参照してください。
tageditor-qt6
パッケージをできればインストールします。tageditor
として利用可能libopengl0
がDebian/Ubuntuにインストールされていることを確認してください)QT_QPA_PLATFORM=xcb
を設定して、システムで動作しない場合はネイティブウェイランドサポートを無効にします)B9E36A7275FC61B464B67907E06FE8F53CDC6A4C
で署名されています。B9E36A7275FC61B464B67907E06FE8F53CDC6A4C
で署名されています。タグエディターには、QTベースのGUIとコマンドラインインターフェイスがあります。 C ++ライブラリインターフェイスの場合、基礎となるTagParserライブラリをチェックアウトします。
GUIは自己探求でなければなりません - 多くのUI要素には、さらに説明があるツールチップがあります。基本的なワークフローは非常に簡単です:
編集者の動作を設定して以前の値を保持することができるため、アルバム内のすべてのファイルのアルバム名やアーティストなどの情報を何度も入力する必要はありません。
GUIは、同じフィールドの複数の値の設定をサポートしていません(異なるタイプのカバーを除く)。ファイルに複数の値を持つフィールドが既に含まれている場合、追加の値は破棄されます。フィールドごとの複数の値のサポートが必要な場合は、CLIを使用してください。ただし、すべてのタグ形式がこれをサポートしているわけではありません。
GUIはバッチ処理をサポートしていません。これにCLIを使用することをお勧めします。
このスクリーンショットは、実験的なMusicBrainz/Lyricwiki検索を示しています。
[設定]ダイアログをチェックアウトします。あなたはできる
GUIの設定はCLIに影響しません。
また、ファイルに保存されているタグ情報を使用してファイルを変更するツールもあります。各ファイルの新しい名前は、カスタマイズできる小さなJavaScriptによって生成されます。サンプルスクリプトが提供されています。実際の変更が行われる前に、生成されたファイル名を含むプレビューが表示されます。例のスクリプトに示されているように、ファイルを別のディレクトリに移動することもできます。
タグエディターには、MusicBrainz、Cover Art Archive、Lyricwiki検索も備えています。
tageditor <operation> [options]
利用可能な操作とオプションをチェックアウト--help
。利用可能なすべてのフィールド名のリスト、トラック属性名とモディファイアのリストについては、CLIオプション--print-field-names
を使用します。すべてのフィールドがすべてのタグ/コンテナ形式でサポートされているわけではありません。最も注目すべきは、Matroskaコンテナ形式では、 track
/ disk
使用して、トラック /ディスク番号と合計を1つのフィールドに保存しないことです。代わりに、フィールドpart
とtotalparts
目的のターゲットで使用する必要があります。
Windowsユーザーは、 tageditor.exe
代わりにtageditor-cli.exe
を使用するか、ターミナルとしてMinttyを使用する必要があることに注意してください。詳細については、「Windows固有の問題」セクションをチェックアウトします。
タグ情報の取得と設定を示すいくつかのバッシュの例を次に示します。
指定されたディレクトリにすべての *.m4aファイルのタイトル、アルバム、アーティストを表示します。
tageditor get title album artist --files /some/dir/*.m4a
指定されたディレクトリにすべての *.mkvファイルのすべてのサポートされているフィールドを表示します。
tageditor get --files /some/dir/*.mkv
指定された(OPUS)ファイルのカバーを抽出します。
tageditor extract cover --output-file the-cover.jpg --file some-file.opus
--attachment
。指定されたディレクトリにすべての *.m4aファイルに関する技術情報を表示します。
tageditor info --files /some/dir/*.m4a
指定されたディレクトリ内のすべての *.m4aファイルのタイトル、アルバム、アーティスト、カバー、トラック番号を設定します。
tageditor set title="Title of "{1st,2nd,3rd}" file" title="Title of "{4..16}"th file"
album="The Album" artist="The Artist"
cover'=/path/to/image' lyrics'>=/path/to/lyrics' track'+=1/16' --files /some/dir/*.m4a
>
フィールド名のlyrics
の後に、タグエディターは指定されたファイルから値を読み取ります。これは他のフィールドでも機能し、 cover
を暗示しています。track
の後の+
記号は、ファイルが処理された後にフィールド値を増やす必要があることを示します。/path/to/image
およびFile /path/to/lyrics
からの歌詞を取得します。指定されたファイルの両方のタイトルと2番目の指定されたファイルのアルバムを設定します。
tageditor set title0="Title for both files" album1="Album for 2nd file"
--files file1.ogg file2.mp3
フィールド名の後の番号は、値を使用する最初のファイルのインデックスを指定します。最初のインデックスは0です。
ID 3134325680
を使用してトラック専用のタイトルを設定し、曲/トラックとアルバム/映画/エピソードをターゲットにしたタグを削除します。
tageditor set target-level=30 target-tracks=3134325680 title="Title for track 3134325680"
--remove-target target-level=50 --remove-target target-level=30
--files file.mka
詳細については、マトロスカ仕様をチェックアウトしてください。
カスタムフィールドを設定します:
tageditor set mkv:FOO=bar1 mp4:©foo=bar2 -f file.mkv file.m4a
FOO
はfile.mkvのbar1
に設定され、カスタムフィールド©foo
はfile.m4aのbar2
に設定されます。したがって、プレフィックスは、指定されたフィールドIDが一般的な識別子ではなく特定のタグ形式のネイティブフィールドIDであることをタグエディターに伝えます。ネイティブフィールドは、もちろん対応する形式にのみ適用されます。mp4
:iTuneスタイルのMP4/M4A ID(正確に4文字でなければなりません)mkv
:Matroska IDid3
:ID3v2ID(タグバージョンに応じて正確に3または4文字でなければなりません)vorbis
:VorbisコメントID、Opus(Vorbisのコメントも使用しています)でも機能します)すべてのトラックから「強制」フラグを削除し、ID 2を「デフォルト」としてトラックにフラグを立て、その言語を「ger」に設定します。
tageditor set track-id=all forced=no track-id=2 default=yes language=ger
別の例を示します。アレイの使用と構文を示して、トラック番号などの数値フィールドを自動インストールします。
cd some/dir
# create an empty array
titles=()
# iterate through all music files in the directory
for file in *.m4a; do
# truncate the first 10 characters
title="${file:10}";
# append the title truncating the extension
titles+=("title=${title%.*}");
done
# now set the titles and other tag information
tageditor set "${titles[@]}" album="Some Album" track+=1/25 disk=1/1 -f *.m4a
説明で特別なタイプのカバーを設定します。
tageditor set cover=":front-cover" cover0="/path/to/back-cover.jpg:back-cover:The description" -f foo.mp3
path:cover-type:description
。カバーの種類と説明はオプションです。デリミッターは、パスにaを含む場合に役立つ--cover-type-delimiter
を介して変更できます:
cover
の後の0
が必要です。それ以外の場合、2番目のカバーは2番目のファイルでのみ設定されます(この例では指定されていません)。… cover= cover0="/path/to/back-cover.jpg:back-cover"
。:
欠席)、指定されたタイプの既存のカバーはすべて交換され、新しいカバーには空の説明があります。:
… cover=":back-cover"
使用します。tageditor --print-field-names
を介して表示できます。変更を動的に計算するためにスクリプトを実行してフィールドを設定します。
tageditor set --pedantic debug --script path/to/script.js -f foo.mp3
main()
関数をエクスポートする必要があります。この関数はすべてのファイルに対して呼び出され、現在のファイルを表すオブジェクトを最初の引数として渡します。ファイルは、 main()
真実の値またはundefined
を返す場合にのみ変更されます。それ以外の場合、ファイルは完全にスキップされます(したがって、まったく変更されていないため、 --values
を介して渡される値は適用されません)。testfiles/set-tags.js
このリポジトリで、基本的な修正を適用して歌詞を取得し、設定に合格したときにアートをカバーしようとする例を確認します(例: --script-settings addCover=1 addLyrics=1
)。--pedantic debug
非常に便利です。また、 --script-settings dryRun=1
を追加して、 testfiles/set-tags.js
に示すように、スクリプト内でその設定を確認することもできます。testfiles/set-tags.js
に示すように、オブジェクトプロパティとして公開されます。ArrayBuffer
として公開されます。また、 ArrayBuffer
使用して、カバーなどのバイナリフィールドの値を設定する必要があります。String
またはNumber
として公開されます。また、これらのタイプのいずれかを使用して、これらのフィールドの値を設定する必要があります。割り当てられたコンテンツの文字列表現は、内部で必要なものに自動的に変換されます。utility
オブジェクトは、イベントループのログと制御などの便利な方法を公開します。testfiles/http.js
チェックアウトします。--id3v1-usage
などのオプションに従って)。したがって、スクリプトの実行中に存在するタグは、必ずしもディスク上のファイルに実際に存在するタグを表しているわけではありません(むしろファイルを保存した後に存在するタグ)。--values
)値を指定する場合、これらの値はスクリプトによって設定された値よりも優先されます。file.rename(newPath)
を介して)。これはすぐに行われ、 main()
falsy値を返す場合(そのため)、ファイル値を返すことによってファイルを変更せずにのみ名前を変更することができます)。指定されたパスが相対的な場合、ファイルの現在のディレクトリに対して(タグエディターの現在の作業ディレクトリではなく)と解釈されます。utility.openFile(path)
を介して別のファイルを開くこともできます。これにより、別のファイルからタグをコピーすることができます。たとえば、別の形式に変換するときに失われた元のファイルからタグを挿入します。前述の例のスクリプトset-tags.js
スクリプト設定が渡されたときにカバーと歌詞についてもこれを示します(例: --script-settings addCover=1 originalDir=… originalExt=…
)。例: cd '/…/music'
find 'artist/album' -iname '*.m4a' -exec tageditor set
--pedantic debug
--script /…/tageditor/testfiles/set-tags.js
--script-settings dryRun=1 originalDir='../music-lossless' originalExt=.flac addCover=1 addLyrics=1
--temp-dir /…/tmp/tageditor
--files {} +
tageditor set ... --pedantic warning -f ...
tageditor info --pedantic warning --validate -f ...
--encoding
およびGUI設定でタグ内で使用される優先エンコードを設定することができます。アプリケーションはC ++ユーティリティとTagParserに依存し、これらのライブラリと同じ方法で構築されています。基本的な手順については、C ++ユーティリティのREADMEファイルをチェックアウトします。 QT GUIが有効になっている場合、QTとQTutitivesも必要です。
C ++ユーティリティ/TagParser/Qtutitivesを個別に構築することを避けるために、「This Straightの構築」の下の指示に従ってください。また、ビルドに影響を与えるためにcmakeに渡すことができるさまざまなビルド変数に関するドキュメントもあります。
QT GUIはデフォルトで有効になります。次のQTモジュールが必要です(最新のQT 5およびQT 6バージョンのテスト済み):CORE CONCURRENT GUIネットワークウィジェット宣言/スクリプトWebEngineWidgets/WebKitWidgets
古いQTバージョンには、最新のJavaScript機能のサポートがないことに注意してください。 JavaScriptベースの名前変更ツールを使用するには、少なくともQT 5.12を使用することをお勧めします。
使用する主要なQTバージョンを指定するには、 QT_PACKAGE_PREFIX
(add -DQT_PACKAGE_PREFIX:STRING=Qt6
にcmake引数に設定します。
-DWEBVIEW_PROVIDER:STRING=webkit/webengine/none
cmake引数に追加するqt webkit(「revivide」バージョンでも動作)、qt webengine、またはno webビューを使用します。 Webビューが使用されない場合、ファイル情報はプレーンツリービューを使用してのみ表示できます。それ以外の場合、ユーザーはWebページとツリービューを選択できます。-DJS_PROVIDER:STRING=script/qml/none
cmake引数にqtスクリプト、qt qml、またはjavascriptエンジンなしのいずれかを使用します。 JavaScriptエンジンが使用されていない場合、名前変更ユーティリティは無効になります。CLIだけが必要な場合は、GUIなしで構築することができます。この場合、QT依存関係(Qtutitivesを含む)は不要です。
GUIなしで構築するには、次のパラメーターをCmakeコールに追加します。
-DWIDGETS_GUI=OFF -DQUICK_GUI=OFF
反射RapidJSONの小さなデモとして、タグエディターはオプションのJSONエクスポートを備えています。それを有効にするには、cmake引数を添加する-DENABLE_JSON_EXPORT=ON
を追加します。
有効にすると、次の追加の依存関係が必要です(ビルド時間でのみ):RapidJSON、Reflective-rapidjson、LLVM/Clang
cd "$SOURCES"
git config core.symlinks true # only required on Windows
git clone https://github.com/Martchus/cpp-utilities.git c++utilities
git clone https://github.com/Martchus/tagparser.git
git clone https://github.com/Martchus/qtutilities.git # only required for Qt GUI
git clone https://github.com/Martchus/reflective-rapidjson.git # only required for JSON export
git clone https://github.com/Martchus/tageditor.git
git clone https://github.com/Martchus/subdirs.git
git config core.symlinks=true
は、シンリンクを正しく処理するためにWindowsの下でのみ必要であることに注意してください。これには、最近のGITバージョンと、Symlinks(NTFS Works)をサポートするファイルシステムが必要です。さらに、Windows開発者モードを有効にする必要があります。 Symlink Creationで「Not Not Found」エラーが発生した場合、 git reset --hard
使用してリポジトリ内でこれを修正します。 cd "$BUILD_DIR"
cmake
-G Ninja
-DCMAKE_BUILD_TYPE=Release
-DLANGUAGE_FILE_ISO_639_2="/usr/share/iso-codes/json/iso_639-2.json"
-DCMAKE_INSTALL_PREFIX="/install/prefix"
"$SOURCES/subdirs/tageditor"
/install/prefix
。/usr/…/iso_639-2.json
ISO-Codesインストールのパスに置き換えます。 cd "$BUILD_DIR"
ninja install
DESTDIR
書き込み可能な場所( DESTDIR="temporary/install/dir" ninja install
など)に設定し、その後ファイルを目的の場所に移動します。 メインの実行可能ファイルの代わりにCLI-Wrapperを使用して、次の警告を回避できます。これは、 -cli.exe
で終了するファイルです。または、これらの問題の影響を受けないMintty(MSYS2経由)を使用することもできます。
set ENABLE_CP_UTF8=0
を使用します。set ENABLE_CONSOLE=0
を使用します。ダークモードは、Windows 11の下で箱から出して作動する必要があり、それ以外の場合はFusionスタイルを選択することで有効にできます。
タグエディターは、QT 6の時点でPMV2をボックスからサポートしています。QTドキュメントに従って設定を調整できます。
Copyright©2015-2024 Marius Kittler
すべてのコードは、GPL-2-OR-Laterでライセンスされています。