Merge pull request #588 from exislow:483-possibility-to-add-lrc-into-unsyncedlyrics-tag
feat(metadata): ✨ add support for synced and unsynced lyrics
This commit is contained in:
@@ -1183,6 +1183,8 @@ class Download:
|
|||||||
copy_right: str = track.copyright if hasattr(track, "copyright") and track.copyright else ""
|
copy_right: str = track.copyright if hasattr(track, "copyright") and track.copyright else ""
|
||||||
isrc: str = track.isrc if hasattr(track, "isrc") and track.isrc else ""
|
isrc: str = track.isrc if hasattr(track, "isrc") and track.isrc else ""
|
||||||
lyrics: str = ""
|
lyrics: str = ""
|
||||||
|
lyrics_synced: str = ""
|
||||||
|
lyrics_unsynced: str = ""
|
||||||
cover_data: bytes = None
|
cover_data: bytes = None
|
||||||
|
|
||||||
if self.settings.data.lyrics_embed or self.settings.data.lyrics_file:
|
if self.settings.data.lyrics_embed or self.settings.data.lyrics_file:
|
||||||
@@ -1190,10 +1192,12 @@ class Download:
|
|||||||
try:
|
try:
|
||||||
lyrics_obj = track.lyrics()
|
lyrics_obj = track.lyrics()
|
||||||
|
|
||||||
|
if lyrics_obj.text:
|
||||||
|
lyrics_unsynced = lyrics_obj.text
|
||||||
|
lyrics = lyrics_unsynced
|
||||||
if lyrics_obj.subtitles:
|
if lyrics_obj.subtitles:
|
||||||
lyrics = lyrics_obj.subtitles
|
lyrics_synced = lyrics_obj.subtitles
|
||||||
elif lyrics_obj.text:
|
lyrics = lyrics_synced
|
||||||
lyrics = lyrics_obj.text
|
|
||||||
except:
|
except:
|
||||||
lyrics = ""
|
lyrics = ""
|
||||||
# TODO: Implement proper logging.
|
# TODO: Implement proper logging.
|
||||||
@@ -1227,7 +1231,8 @@ class Download:
|
|||||||
m: Metadata = Metadata(
|
m: Metadata = Metadata(
|
||||||
path_file=path_media,
|
path_file=path_media,
|
||||||
target_upc=target_upc,
|
target_upc=target_upc,
|
||||||
lyrics=lyrics,
|
lyrics=lyrics_synced,
|
||||||
|
lyrics_unsynced=lyrics_unsynced,
|
||||||
copy_right=copy_right,
|
copy_right=copy_right,
|
||||||
title=name_builder_title(track),
|
title=name_builder_title(track),
|
||||||
artists=name_builder_artist(track, delimiter=self.settings.data.metadata_delimiter_artist),
|
artists=name_builder_artist(track, delimiter=self.settings.data.metadata_delimiter_artist),
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import pathlib
|
|||||||
|
|
||||||
import mutagen
|
import mutagen
|
||||||
from mutagen import flac, id3, mp4
|
from mutagen import flac, id3, mp4
|
||||||
from mutagen.id3 import APIC, TALB, TCOM, TCOP, TDRC, TIT2, TOPE, TPE1, TRCK, TSRC, TXXX, USLT, WOAS
|
from mutagen.id3 import APIC, SYLT, TALB, TCOM, TCOP, TDRC, TIT2, TOPE, TPE1, TRCK, TSRC, TXXX, USLT, WOAS
|
||||||
|
|
||||||
|
|
||||||
class Metadata:
|
class Metadata:
|
||||||
@@ -20,6 +20,7 @@ class Metadata:
|
|||||||
composer: str
|
composer: str
|
||||||
isrc: str
|
isrc: str
|
||||||
lyrics: str
|
lyrics: str
|
||||||
|
lyrics_unsynced: str
|
||||||
path_cover: str
|
path_cover: str
|
||||||
cover_data: bytes
|
cover_data: bytes
|
||||||
album_replay_gain: float
|
album_replay_gain: float
|
||||||
@@ -49,6 +50,7 @@ class Metadata:
|
|||||||
albumartist: str = "",
|
albumartist: str = "",
|
||||||
date: str = "",
|
date: str = "",
|
||||||
lyrics: str = "",
|
lyrics: str = "",
|
||||||
|
lyrics_unsynced: str = "",
|
||||||
cover_data: bytes = None,
|
cover_data: bytes = None,
|
||||||
album_replay_gain: float = 1.0,
|
album_replay_gain: float = 1.0,
|
||||||
album_peak_amplitude: float = 1.0,
|
album_peak_amplitude: float = 1.0,
|
||||||
@@ -72,6 +74,7 @@ class Metadata:
|
|||||||
self.composer = composer
|
self.composer = composer
|
||||||
self.isrc = isrc
|
self.isrc = isrc
|
||||||
self.lyrics = lyrics
|
self.lyrics = lyrics
|
||||||
|
self.lyrics_unsynced = lyrics_unsynced
|
||||||
self.cover_data = cover_data
|
self.cover_data = cover_data
|
||||||
self.album_replay_gain = album_replay_gain
|
self.album_replay_gain = album_replay_gain
|
||||||
self.album_peak_amplitude = album_peak_amplitude
|
self.album_peak_amplitude = album_peak_amplitude
|
||||||
@@ -136,6 +139,7 @@ class Metadata:
|
|||||||
self.m.tags["COMPOSER"] = self.composer
|
self.m.tags["COMPOSER"] = self.composer
|
||||||
self.m.tags["ISRC"] = self.isrc
|
self.m.tags["ISRC"] = self.isrc
|
||||||
self.m.tags["LYRICS"] = self.lyrics
|
self.m.tags["LYRICS"] = self.lyrics
|
||||||
|
self.m.tags["UNSYNCEDLYRICS"] = self.lyrics_unsynced
|
||||||
self.m.tags["URL"] = self.url_share
|
self.m.tags["URL"] = self.url_share
|
||||||
self.m.tags[self.target_upc["FLAC"]] = self.upc
|
self.m.tags[self.target_upc["FLAC"]] = self.upc
|
||||||
|
|
||||||
@@ -158,7 +162,8 @@ class Metadata:
|
|||||||
self.m.tags.add(TDRC(encoding=3, text=self.date))
|
self.m.tags.add(TDRC(encoding=3, text=self.date))
|
||||||
self.m.tags.add(TCOM(encoding=3, text=self.composer))
|
self.m.tags.add(TCOM(encoding=3, text=self.composer))
|
||||||
self.m.tags.add(TSRC(encoding=3, text=self.isrc))
|
self.m.tags.add(TSRC(encoding=3, text=self.isrc))
|
||||||
self.m.tags.add(USLT(encoding=3, lang="eng", desc="desc", text=self.lyrics))
|
self.m.tags.add(SYLT(encoding=3, desc="text", text=self.lyrics))
|
||||||
|
self.m.tags.add(USLT(encoding=3, desc="text", text=self.lyrics_unsynced))
|
||||||
self.m.tags.add(WOAS(encoding=3, text=self.isrc))
|
self.m.tags.add(WOAS(encoding=3, text=self.isrc))
|
||||||
self.m.tags.add(TXXX(encoding=3, desc=self.target_upc["MP3"], text=self.upc))
|
self.m.tags.add(TXXX(encoding=3, desc=self.target_upc["MP3"], text=self.upc))
|
||||||
|
|
||||||
@@ -180,6 +185,7 @@ class Metadata:
|
|||||||
self.m.tags["\xa9day"] = self.date
|
self.m.tags["\xa9day"] = self.date
|
||||||
self.m.tags["\xa9wrt"] = self.composer
|
self.m.tags["\xa9wrt"] = self.composer
|
||||||
self.m.tags["\xa9lyr"] = self.lyrics
|
self.m.tags["\xa9lyr"] = self.lyrics
|
||||||
|
self.m.tags["----:com.apple.iTunes:UNSYNCEDLYRICS"] = self.lyrics_unsynced.encode("utf-8")
|
||||||
self.m.tags["isrc"] = self.isrc
|
self.m.tags["isrc"] = self.isrc
|
||||||
self.m.tags["\xa9url"] = self.url_share
|
self.m.tags["\xa9url"] = self.url_share
|
||||||
self.m.tags[f"----:com.apple.iTunes:{self.target_upc['MP4']}"] = self.upc.encode("utf-8")
|
self.m.tags[f"----:com.apple.iTunes:{self.target_upc['MP4']}"] = self.upc.encode("utf-8")
|
||||||
|
|||||||
Reference in New Issue
Block a user