Compare commits
	
		
			4 Commits
		
	
	
		
			e3d7ed8837
			...
			949583225a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 949583225a | |||
| 4e0b005170 | |||
| e3e7aea959 | |||
| 709c5ebaa8 | 
| @@ -1,5 +1,5 @@ | |||||||
| import mutagen | import mutagen | ||||||
| from mutagen.id3 import ID3, Frame, APIC | from mutagen.id3 import ID3, Frame, APIC, USLT | ||||||
| from pathlib import Path | from pathlib import Path | ||||||
| from typing import List | from typing import List | ||||||
| import logging | import logging | ||||||
| @@ -7,6 +7,7 @@ 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"] | ||||||
| @@ -105,6 +106,11 @@ 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.doc == other.doc |         return self.html == other.html | ||||||
|  |  | ||||||
|     @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 fiel |             # a text field | ||||||
|             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,7 +355,12 @@ 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 | ||||||
| @@ -368,7 +373,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, | ||||||
| @@ -376,7 +381,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): | ||||||
| @@ -395,6 +400,5 @@ 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.0.0", |     "python-sponsorblock~=0.1.dev1", | ||||||
|     "youtube_dl", |     "youtube_dl", | ||||||
| ] | ] | ||||||
| dynamic = [ | dynamic = [ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user