Add Export Playist

This commit is contained in:
Keith Edmunds 2021-05-28 11:33:24 +01:00
parent 280e966f01
commit a35181bae7
2 changed files with 42 additions and 1 deletions

View File

@ -122,6 +122,7 @@ class Window(QMainWindow, Ui_MainWindow):
self.actionAdd_file.triggered.connect(self.add_file)
self.action_Clear_selection.triggered.connect(self.clear_selection)
self.actionClosePlaylist.triggered.connect(self.close_playlist)
self.actionExport_playlist.triggered.connect(self.export_playlist)
self.actionFade.triggered.connect(self.fade)
self.actionMoveSelected.triggered.connect(self.move_selected)
self.actionNewPlaylist.triggered.connect(self.create_playlist)
@ -195,6 +196,39 @@ class Window(QMainWindow, Ui_MainWindow):
DEBUG("enable_play_next_controls()")
self.actionPlay_next.setEnabled(True)
def export_playlist(self):
"Export the current playlist to an m3u file"
if not self.visible_playlist():
return
# Get output filename
pathspec = QFileDialog.getSaveFileName(
self, 'Save Playlist',
directory=f"{self.visible_playlist().db.name}.m3u",
filter="M3U files (*.m3u);;All files (*.*)"
)
if not pathspec:
return
path = pathspec[0]
if not path.endswith(".m3u"):
path += ".m3u"
with open(path, "w") as f:
# Required directive on first line
f.write("#EXTM3U\n")
for track in self.visible_playlist().db.get_tracks():
f.write(
"#EXTINF:"
f"{int(track.duration / 1000)},"
f"{track.title} - "
f"{track.artist}"
"\n"
f"{track.path}"
"\n"
)
def fade(self):
"Fade currently playing track"

View File

@ -751,7 +751,7 @@ border: 1px solid rgb(85, 87, 83);</string>
<x>0</x>
<y>0</y>
<width>1164</width>
<height>29</height>
<height>18</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">
@ -775,6 +775,8 @@ border: 1px solid rgb(85, 87, 83);</string>
<addaction name="action_Clear_selection"/>
<addaction name="separator"/>
<addaction name="actionMoveSelected"/>
<addaction name="separator"/>
<addaction name="actionExport_playlist"/>
</widget>
<widget class="QMenu" name="menu_Tracks">
<property name="title">
@ -958,6 +960,11 @@ border: 1px solid rgb(85, 87, 83);</string>
<string>Mo&amp;ve selected tracks to...</string>
</property>
</action>
<action name="actionExport_playlist">
<property name="text">
<string>E&amp;xport playlist...</string>
</property>
</action>
</widget>
<resources>
<include location="icons.qrc"/>