Compare commits
No commits in common. "949583225a3e0ee41875fa0ed3d323e0e02191ce" and "e3d7ed883767f55980da4577e08a61e9f30d3283" have entirely different histories.
949583225a
...
e3d7ed8837
@ -1,5 +1,5 @@
|
|||||||
import mutagen
|
import mutagen
|
||||||
from mutagen.id3 import ID3, Frame, APIC, USLT
|
from mutagen.id3 import ID3, Frame, APIC
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import List
|
from typing import List
|
||||||
import logging
|
import logging
|
||||||
@ -7,7 +7,6 @@ from PIL import Image
|
|||||||
|
|
||||||
from ..utils.config import logging_settings, main_settings
|
from ..utils.config import logging_settings, main_settings
|
||||||
from ..objects import Song, Target, Metadata
|
from ..objects import Song, Target, Metadata
|
||||||
from ..objects.metadata import Mapping
|
|
||||||
from ..connection import Connection
|
from ..connection import Connection
|
||||||
|
|
||||||
LOGGER = logging_settings["tagging_logger"]
|
LOGGER = logging_settings["tagging_logger"]
|
||||||
@ -106,11 +105,6 @@ def write_metadata_to_target(metadata: Metadata, target: Target, song: Song):
|
|||||||
data=converted_target.read_bytes(),
|
data=converted_target.read_bytes(),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
id3_object.frames.delall("USLT")
|
|
||||||
uslt_val = metadata.get_id3_value(Mapping.UNSYNCED_LYRICS)
|
|
||||||
id3_object.frames.add(
|
|
||||||
USLT(encoding=3, lang=u'eng', desc=u'desc', text=uslt_val)
|
|
||||||
)
|
|
||||||
|
|
||||||
mutagen_file = mutagen.File(target.file_path)
|
mutagen_file = mutagen.File(target.file_path)
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ class FormattedText:
|
|||||||
if self.is_empty and other.is_empty:
|
if self.is_empty and other.is_empty:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
return self.html == other.html
|
return self.doc == other.doc
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def markdown(self) -> str:
|
def markdown(self) -> str:
|
||||||
|
@ -92,7 +92,7 @@ class Mapping(Enum):
|
|||||||
key = attribute.value
|
key = attribute.value
|
||||||
|
|
||||||
if key[0] == 'T':
|
if key[0] == 'T':
|
||||||
# a text field
|
# a text fiel
|
||||||
return cls.get_text_instance(key, value)
|
return cls.get_text_instance(key, value)
|
||||||
if key[0] == "W":
|
if key[0] == "W":
|
||||||
# an url field
|
# an url field
|
||||||
@ -355,12 +355,7 @@ class Metadata:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
list_data = self.id3_dict[field]
|
list_data = self.id3_dict[field]
|
||||||
#correct duplications
|
|
||||||
correct_list_data = list()
|
|
||||||
for data in list_data:
|
|
||||||
if data not in correct_list_data:
|
|
||||||
correct_list_data.append(data)
|
|
||||||
list_data = correct_list_data
|
|
||||||
# convert for example the time objects to timestamps
|
# convert for example the time objects to timestamps
|
||||||
for i, element in enumerate(list_data):
|
for i, element in enumerate(list_data):
|
||||||
# for performance’s sake I don't do other checks if it is already the right type
|
# for performance’s sake I don't do other checks if it is already the right type
|
||||||
@ -373,7 +368,7 @@ class Metadata:
|
|||||||
if type(element) == ID3Timestamp:
|
if type(element) == ID3Timestamp:
|
||||||
list_data[i] = element.timestamp
|
list_data[i] = element.timestamp
|
||||||
continue
|
continue
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Version 2.4 of the specification prescribes that all text fields (the fields that start with a T, except for TXXX) can contain multiple values separated by a null character.
|
Version 2.4 of the specification prescribes that all text fields (the fields that start with a T, except for TXXX) can contain multiple values separated by a null character.
|
||||||
Thus if above conditions are met, I concatenate the list,
|
Thus if above conditions are met, I concatenate the list,
|
||||||
@ -381,7 +376,7 @@ class Metadata:
|
|||||||
"""
|
"""
|
||||||
if field.value[0].upper() == "T" and field.value.upper() != "TXXX":
|
if field.value[0].upper() == "T" and field.value.upper() != "TXXX":
|
||||||
return self.NULL_BYTE.join(list_data)
|
return self.NULL_BYTE.join(list_data)
|
||||||
|
|
||||||
return list_data[0]
|
return list_data[0]
|
||||||
|
|
||||||
def get_mutagen_object(self, field):
|
def get_mutagen_object(self, field):
|
||||||
@ -400,5 +395,6 @@ class Metadata:
|
|||||||
"""
|
"""
|
||||||
# set the tagging timestamp to the current time
|
# set the tagging timestamp to the current time
|
||||||
self.__setitem__(Mapping.TAGGING_TIME, [ID3Timestamp.now()])
|
self.__setitem__(Mapping.TAGGING_TIME, [ID3Timestamp.now()])
|
||||||
|
|
||||||
for field in self.id3_dict:
|
for field in self.id3_dict:
|
||||||
yield self.get_mutagen_object(field)
|
yield self.get_mutagen_object(field)
|
||||||
|
@ -69,7 +69,7 @@ dependencies = [
|
|||||||
"toml~=0.10.2",
|
"toml~=0.10.2",
|
||||||
"typing_extensions~=4.7.1",
|
"typing_extensions~=4.7.1",
|
||||||
|
|
||||||
"python-sponsorblock~=0.1.dev1",
|
"python-sponsorblock~=0.0.0",
|
||||||
"youtube_dl",
|
"youtube_dl",
|
||||||
]
|
]
|
||||||
dynamic = [
|
dynamic = [
|
||||||
|
Loading…
Reference in New Issue
Block a user