This commit is contained in:
7x11x13 2024-12-15 18:14:19 -05:00
parent bac8ee69a7
commit baea15d927

View file

@ -8,6 +8,8 @@ import re
import subprocess import subprocess
import time import time
from yt_dlp.utils._utils import date_from_str
from .common import PostProcessor from .common import PostProcessor
from ..compat import imghdr from ..compat import imghdr
from ..utils import ( from ..utils import (
@ -693,11 +695,9 @@ class FFmpegMetadataPP(FFmpegPostProcessor):
'title': 'title', 'title': 'title',
'artist': 'artist', 'artist': 'artist',
'genre': 'genre', 'genre': 'genre',
'date': 'date',
'album': 'album', 'album': 'album',
'albumartist': 'album_artist', 'albumartist': 'album_artist',
'description': 'description', 'description': 'description',
'comment': 'comment',
'composer': 'composer', 'composer': 'composer',
'tracknumber': 'track', 'tracknumber': 'track',
'WWWAUDIOFILE': 'purl', # https://getmusicbee.com/forum/index.php?topic=39759.0 'WWWAUDIOFILE': 'purl', # https://getmusicbee.com/forum/index.php?topic=39759.0
@ -707,9 +707,7 @@ class FFmpegMetadataPP(FFmpegPostProcessor):
'TPE1': 'artist', 'TPE1': 'artist',
'COMM': 'description', 'COMM': 'description',
'TCON': 'genre', 'TCON': 'genre',
'WFED': 'purl',
'WOAF': 'purl', 'WOAF': 'purl',
'TDAT': 'date',
'TALB': 'album', 'TALB': 'album',
'TPE2': 'album_artist', 'TPE2': 'album_artist',
'TRCK': 'track', 'TRCK': 'track',
@ -720,7 +718,6 @@ class FFmpegMetadataPP(FFmpegPostProcessor):
'\251ART': 'artist', '\251ART': 'artist',
'\251nam': 'title', '\251nam': 'title',
'\251gen': 'genre', '\251gen': 'genre',
'\251day': 'date',
'\251alb': 'album', '\251alb': 'album',
'aART': 'album_artist', 'aART': 'album_artist',
'\251cmt': 'description', '\251cmt': 'description',
@ -774,6 +771,11 @@ class FFmpegMetadataPP(FFmpegPostProcessor):
if meta.get(meta_key): if meta.get(meta_key):
file[file_key] = meta[meta_key] file[file_key] = meta[meta_key]
if meta.get('date'):
# Vorbis uses ISO 8601 format YYYY-MM-DD
date = date_from_str(meta['date'])
file['date'] = date.strftime('%Y-%m-%d')
@_assemble_metadata.register(trueaudio.TrueAudio) @_assemble_metadata.register(trueaudio.TrueAudio)
@_assemble_metadata.register(dsf.DSF) @_assemble_metadata.register(dsf.DSF)
@_assemble_metadata.register(dsdiff.DSDIFF) @_assemble_metadata.register(dsdiff.DSDIFF)
@ -789,16 +791,26 @@ class FFmpegMetadataPP(FFmpegPostProcessor):
else: else:
file[file_key] = id3_class(encoding=id3.Encoding.UTF8, text=meta[meta_key]) file[file_key] = id3_class(encoding=id3.Encoding.UTF8, text=meta[meta_key])
if meta.get('date'):
# ID3 uses ISO 8601 format YYYY-MM-DD
date = date_from_str(meta['date'])
file['TDRC'] = id3.TDRC(encoding=id3.Encoding.UTF8, text=date.strftime('%Y-%m-%d'))
@_assemble_metadata.register(mp4.MP4) @_assemble_metadata.register(mp4.MP4)
def _(self, file: mp4.MP4, meta: dict) -> None: def _(self, file: mp4.MP4, meta: dict) -> None:
for file_key, meta_key in self._MP4_METADATA.items(): for file_key, meta_key in self._MP4_METADATA.items():
if meta.get(meta_key): if meta.get(meta_key):
file[file_key] = meta[meta_key] file[file_key] = meta[meta_key]
if meta.get('date'):
# no standard but iTunes uses YYYY-MM-DD format
date = date_from_str(meta['date'])
file['\251day'] = date.strftime('%Y-%m-%d')
if meta.get('purl'): if meta.get('purl'):
# https://getmusicbee.com/forum/index.php?topic=39759.0 # https://getmusicbee.com/forum/index.php?topic=39759.0
file['----:com.apple.iTunes:WWWAUDIOFILE'] = meta['purl'].encode() file['----:com.apple.iTunes:WWWAUDIOFILE'] = meta['purl'].encode()
file['purl'] = meta['purl'].encode() file['purl'] = meta['purl']
if meta.get('track'): if meta.get('track'):
file['trkn'] = [(meta['track'], 0)] file['trkn'] = [(meta['track'], 0)]