Implemented saving of playlists to disk.
This commit is contained in:
parent
a7fc19f98b
commit
1007ac045f
7 changed files with 62 additions and 12 deletions
|
@ -19,13 +19,18 @@ def main():
|
|||
app = Wobuzz()
|
||||
|
||||
if arguments.playlist:
|
||||
app.library.temporary_playlist.tracks = []
|
||||
app.library.temporary_playlist.view.clear()
|
||||
app.library.temporary_playlist.load_from_m3u(arguments.playlist)
|
||||
app.library.temporary_playlist.view.load_tracks()
|
||||
|
||||
if arguments.track:
|
||||
app.library.temporary_playlist.tracks = []
|
||||
app.library.temporary_playlist.view.clear()
|
||||
app.library.temporary_playlist.load_from_paths(arguments.track)
|
||||
app.library.temporary_playlist.view.load_tracks()
|
||||
|
||||
app.player.current_playlist = app.library.temporary_playlist
|
||||
app.library.load_playlist_views()
|
||||
|
||||
sys.exit(app.qt_app.exec())
|
||||
|
||||
|
|
|
@ -33,7 +33,15 @@ class GUI:
|
|||
self.settings.update_all()
|
||||
|
||||
def connect(self):
|
||||
self.window.closeEvent = self.app.utils.on_close
|
||||
self.window.closeEvent = self.on_exit
|
||||
|
||||
def on_exit(self, event):
|
||||
self.app.library.on_exit(event)
|
||||
|
||||
self.app.settings.window_size = (self.window.width(), self.window.height())
|
||||
self.app.settings.window_maximized = self.window.isMaximized()
|
||||
|
||||
self.app.settings.save(self.app.utils.settings_location)
|
||||
|
||||
def on_settings_change(self, key, value):
|
||||
self.settings.update_settings(key, value)
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
from PyQt6.QtCore import Qt
|
||||
from PyQt6.QtGui import QIcon
|
||||
from PyQt6.QtWidgets import QTabWidget, QTreeWidgetItem
|
||||
import os
|
||||
from PyQt6.QtWidgets import QTabWidget
|
||||
from ..player.playlist import Playlist
|
||||
from ..ui.library_dock import LibraryDock
|
||||
from ..ui.playlist import PlaylistView
|
||||
|
@ -22,6 +21,32 @@ class Library:
|
|||
self.temporary_playlist = Playlist(self.app, "Temporary Playlist")
|
||||
self.playlists = [self.temporary_playlist]
|
||||
|
||||
def load(self):
|
||||
path_playlists = f"{self.app.settings.library_path}/playlists"
|
||||
if not os.path.exists(path_playlists):
|
||||
os.makedirs(path_playlists)
|
||||
|
||||
self.load_playlist_views()
|
||||
|
||||
return
|
||||
|
||||
folder_content = os.listdir(path_playlists)
|
||||
|
||||
for file_name in folder_content:
|
||||
if file_name.endswith(".m3u"):
|
||||
path = f"{path_playlists}/{file_name}"
|
||||
|
||||
if file_name == "Temporary_Playlist.wbz.m3u":
|
||||
playlist = self.temporary_playlist
|
||||
|
||||
else:
|
||||
playlist = Playlist(self.app, file_name.replace("_", " ").split(".")[0])
|
||||
self.playlists.append(playlist)
|
||||
|
||||
playlist.load_from_m3u(path)
|
||||
|
||||
self.load_playlist_views()
|
||||
|
||||
def load_playlist_views(self):
|
||||
for library_dock in self.library_docks:
|
||||
playlist_tabs: QTabWidget = library_dock.library.playlist_tabs
|
||||
|
@ -32,3 +57,7 @@ class Library:
|
|||
playlist_view = PlaylistView(playlist)
|
||||
playlist_tabs.addTab(playlist_view, playlist.title)
|
||||
|
||||
def on_exit(self, event):
|
||||
for playlist in self.playlists:
|
||||
playlist.save()
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import os
|
||||
import sys
|
||||
from PyQt6.QtWidgets import QApplication
|
||||
from wobbl_tools.data_file import load_dataclass_json
|
||||
|
@ -16,6 +17,8 @@ class Wobuzz:
|
|||
|
||||
self.utils = Utils(self)
|
||||
|
||||
os.chdir(self.utils.home_path)
|
||||
|
||||
self.settings = load_dataclass_json(Settings, self.utils.settings_location, self, True, True)
|
||||
self.settings.set_attribute_change_event(self.on_settings_change)
|
||||
|
||||
|
@ -27,6 +30,7 @@ class Wobuzz:
|
|||
|
||||
def post_init(self):
|
||||
self.gui.track_control.track_progress_slider.post_init()
|
||||
self.library.load()
|
||||
|
||||
def on_settings_change(self, key, value):
|
||||
self.gui.on_settings_change(key, value)
|
||||
|
|
|
@ -17,6 +17,7 @@ class Player:
|
|||
|
||||
self.track_progress = TrackProgress(self.app)
|
||||
|
||||
playlists = []
|
||||
self.current_playlist = Playlist(self.app, "None")
|
||||
|
||||
self.playing = False
|
||||
|
|
|
@ -98,3 +98,13 @@ class Playlist:
|
|||
|
||||
return self.current_track.sound, self.current_track.duration
|
||||
|
||||
def save(self):
|
||||
wbz_data = ""
|
||||
|
||||
for track in self.tracks:
|
||||
wbz_data += f"{track.path}\n"
|
||||
|
||||
wbz = open(f"{self.app.settings.library_path}/playlists/{self.title.replace(" ", "_")}.wbz.m3u", "w")
|
||||
wbz.write(wbz_data)
|
||||
wbz.close()
|
||||
|
||||
|
|
|
@ -29,10 +29,3 @@ class Utils:
|
|||
|
||||
return output
|
||||
|
||||
def on_close(self, event):
|
||||
self.app.settings.window_size = (self.app.gui.window.width(), self.app.gui.window.height())
|
||||
self.app.settings.window_maximized = self.app.gui.window.isMaximized()
|
||||
|
||||
self.app.settings.save(self.settings_location)
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue