batch date edit working
This commit is contained in:
parent
47f13045e7
commit
23d0cdf437
26
components/DebugWindow.py
Normal file
26
components/DebugWindow.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
from PyQt5.QtWidgets import (
|
||||||
|
QDialog,
|
||||||
|
QPlainTextEdit,
|
||||||
|
QVBoxLayout,
|
||||||
|
QLabel,
|
||||||
|
QPushButton,
|
||||||
|
)
|
||||||
|
from PyQt5.QtGui import QFont
|
||||||
|
from components.ErrorDialog import ErrorDialog
|
||||||
|
from utils import set_id3_tag
|
||||||
|
|
||||||
|
|
||||||
|
class DebugWindow(QDialog):
|
||||||
|
def __init__(self, song_filepath: str, text: str):
|
||||||
|
super(DebugWindow, self).__init__()
|
||||||
|
self.setWindowTitle("debug")
|
||||||
|
self.setMinimumSize(400, 400)
|
||||||
|
self.text: str = text
|
||||||
|
self.song_filepath: str = song_filepath
|
||||||
|
layout = QVBoxLayout()
|
||||||
|
|
||||||
|
# Labels & input fields
|
||||||
|
self.input_field = QPlainTextEdit(self.text)
|
||||||
|
layout.addWidget(self.input_field)
|
||||||
|
|
||||||
|
self.setLayout(layout)
|
||||||
@ -17,6 +17,7 @@ from PyQt5.QtWidgets import (
|
|||||||
QAbstractItemView,
|
QAbstractItemView,
|
||||||
)
|
)
|
||||||
from PyQt5.QtCore import QAbstractItemModel, QModelIndex, Qt, pyqtSignal, QTimer
|
from PyQt5.QtCore import QAbstractItemModel, QModelIndex, Qt, pyqtSignal, QTimer
|
||||||
|
from components.DebugWindow import DebugWindow
|
||||||
from components.ErrorDialog import ErrorDialog
|
from components.ErrorDialog import ErrorDialog
|
||||||
from components.LyricsWindow import LyricsWindow
|
from components.LyricsWindow import LyricsWindow
|
||||||
from components.AddToPlaylistWindow import AddToPlaylistWindow
|
from components.AddToPlaylistWindow import AddToPlaylistWindow
|
||||||
@ -112,6 +113,10 @@ class MusicTable(QTableView):
|
|||||||
open_containing_folder_action = QAction("Open in system file manager", self)
|
open_containing_folder_action = QAction("Open in system file manager", self)
|
||||||
open_containing_folder_action.triggered.connect(self.open_directory)
|
open_containing_folder_action.triggered.connect(self.open_directory)
|
||||||
menu.addAction(open_containing_folder_action)
|
menu.addAction(open_containing_folder_action)
|
||||||
|
# view id3 tags (debug)
|
||||||
|
view_id3_tags_debug = QAction("View ID3 tags (debug)", self)
|
||||||
|
view_id3_tags_debug.triggered.connect(self.show_id3_tags_debug_menu)
|
||||||
|
menu.addAction(view_id3_tags_debug)
|
||||||
# delete song
|
# delete song
|
||||||
delete_action = QAction("Delete", self)
|
delete_action = QAction("Delete", self)
|
||||||
delete_action.triggered.connect(self.delete_songs)
|
delete_action.triggered.connect(self.delete_songs)
|
||||||
@ -120,6 +125,15 @@ class MusicTable(QTableView):
|
|||||||
self.set_selected_song_filepath()
|
self.set_selected_song_filepath()
|
||||||
menu.exec_(event.globalPos())
|
menu.exec_(event.globalPos())
|
||||||
|
|
||||||
|
def show_id3_tags_debug_menu(self):
|
||||||
|
"""Shows ID3 tags for a specific .mp3 file"""
|
||||||
|
selected_song_filepath = self.get_selected_song_filepath()
|
||||||
|
if selected_song_filepath is None:
|
||||||
|
return
|
||||||
|
current_song = self.get_selected_song_metadata()
|
||||||
|
lyrics_window = DebugWindow(selected_song_filepath, str(current_song))
|
||||||
|
lyrics_window.exec_()
|
||||||
|
|
||||||
def delete_songs(self):
|
def delete_songs(self):
|
||||||
"""Deletes the currently selected songs from the db and music table (not the filesystem)"""
|
"""Deletes the currently selected songs from the db and music table (not the filesystem)"""
|
||||||
reply = QMessageBox.question(
|
reply = QMessageBox.question(
|
||||||
|
|||||||
@ -4,6 +4,7 @@ from .AudioVisualizer import AudioVisualizer
|
|||||||
from .PreferencesWindow import PreferencesWindow
|
from .PreferencesWindow import PreferencesWindow
|
||||||
from .ErrorDialog import ErrorDialog
|
from .ErrorDialog import ErrorDialog
|
||||||
from .LyricsWindow import LyricsWindow
|
from .LyricsWindow import LyricsWindow
|
||||||
|
from .DebugWindow import DebugWindow
|
||||||
from .AddToPlaylistWindow import AddToPlaylistWindow
|
from .AddToPlaylistWindow import AddToPlaylistWindow
|
||||||
from .CreatePlaylistWindow import CreatePlaylistWindow
|
from .CreatePlaylistWindow import CreatePlaylistWindow
|
||||||
from .PlaylistsPane import PlaylistsPane
|
from .PlaylistsPane import PlaylistsPane
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import logging
|
import logging
|
||||||
from components import ErrorDialog
|
from components import ErrorDialog
|
||||||
|
from utils.id3_tag_mapping import id3_tag_mapping
|
||||||
from utils.convert_date_str_to_tyer_tdat_id3_tag import (
|
from utils.convert_date_str_to_tyer_tdat_id3_tag import (
|
||||||
convert_date_str_to_tyer_tdat_id3_tag,
|
convert_date_str_to_tyer_tdat_id3_tag,
|
||||||
)
|
)
|
||||||
@ -122,8 +123,12 @@ def set_id3_tag(filepath: str, tag_name: str, value: str):
|
|||||||
audio.add(frame)
|
audio.add(frame)
|
||||||
audio.save()
|
audio.save()
|
||||||
return True
|
return True
|
||||||
|
# Convert any tag (as string or name, or whatever) into the Mutagen Frame object
|
||||||
|
if tag_name in id3_tag_mapping:
|
||||||
|
tag_name = id3_tag_mapping[tag_name]
|
||||||
# Other
|
# Other
|
||||||
elif tag_name in mutagen_id3_tag_mapping: # Tag accounted for
|
if tag_name in mutagen_id3_tag_mapping: # Tag accounted for
|
||||||
|
print(f"set_id3_tag.py | tag_name = {tag_name}")
|
||||||
tag_class = mutagen_id3_tag_mapping[tag_name]
|
tag_class = mutagen_id3_tag_mapping[tag_name]
|
||||||
if issubclass(tag_class, Frame):
|
if issubclass(tag_class, Frame):
|
||||||
frame = tag_class(encoding=3, text=[value])
|
frame = tag_class(encoding=3, text=[value])
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user