Compare commits

...

3 Commits

Author SHA1 Message Date
Keith Edmunds
61e1fb1192 Make last played date 'today' when appropriate 2021-08-08 20:05:26 +01:00
Keith Edmunds
35f2b9629b Only open Wikipedia for songs 2021-08-06 13:39:22 +01:00
Keith Edmunds
a6a0b905d8 Put "last played" in place of "path" in playlist 2021-08-06 10:23:30 +01:00
3 changed files with 45 additions and 15 deletions

View File

@ -1,3 +1,28 @@
from datetime import datetime, date
def get_relative_date(past_date, reference_date=None):
"""
Return relative date as string.
"""
if not reference_date:
reference_date = datetime.now().date()
# Check parameters
if type(past_date) != date:
return "get_relative_date() first parameter is not a date"
if type(reference_date) != date:
return "get_relative_date() second parameter is not a date"
if past_date > reference_date:
return "get_relative_date() past_date is after relative_date"
weeks, days = divmod((reference_date - past_date).days, 7)
if weeks == days == 0:
return "Today"
return f"{weeks} weeks, {days} days ago"
def ms_to_mmss(ms, decimals=0, negative=False): def ms_to_mmss(ms, decimals=0, negative=False):
if not ms: if not ms:
return "-" return "-"

View File

@ -501,29 +501,25 @@ class Window(QMainWindow, Ui_MainWindow):
def song_info_search(self): def song_info_search(self):
""" """
Open browser tabs for Wikipedia and Songfacts, searching for Open browser tabs for Wikipedia, searching for
the first that exists of: the first that exists of:
- selected track - selected track
- current track
- next track - next track
- current track
""" """
title = self.visible_playlist_tab().get_selected_title() title = self.visible_playlist_tab().get_selected_title()
if not title:
if self.current_track:
title = self.current_track.title
if not title: if not title:
if self.next_track: if self.next_track:
title = self.next_track.title title = self.next_track.title
if not title:
if self.current_track:
title = self.current_track.title
if title: if title:
# Wikipedia # Wikipedia
str = urllib.parse.quote_plus(title) str = urllib.parse.quote_plus(title)
url = f"https://www.wikipedia.org/w/index.php?search={str}" url = f"https://www.wikipedia.org/w/index.php?search={str}"
webbrowser.open(url, new=2) webbrowser.open(url, new=2)
# Songfacts
slug = slugify(title, replacements=([["'", ""]]))
url = f"https://www.songfacts.com/search/songs/{slug}"
webbrowser.open(url, new=2)
def stop(self): def stop(self):
"Stop playing immediately" "Stop playing immediately"

View File

@ -16,8 +16,11 @@ import os
from config import Config from config import Config
from datetime import datetime, timedelta from datetime import datetime, timedelta
from helpers import get_relative_date
from log import DEBUG, ERROR from log import DEBUG, ERROR
from model import Notes, Playlists, PlaylistTracks, Session, Settings, Tracks from model import (
Notes, Playdates, Playlists, PlaylistTracks, Session, Settings, Tracks
)
class PlaylistTab(QTableWidget): class PlaylistTab(QTableWidget):
@ -30,7 +33,7 @@ class PlaylistTab(QTableWidget):
COL_DURATION = 4 COL_DURATION = 4
COL_START_TIME = 5 COL_START_TIME = 5
COL_END_TIME = 6 COL_END_TIME = 6
COL_PATH = 7 COL_LAST_PLAYED = 7
NOTE_COL_SPAN = 4 NOTE_COL_SPAN = 4
NOTE_ROW_SPAN = 1 NOTE_ROW_SPAN = 1
@ -66,7 +69,7 @@ class PlaylistTab(QTableWidget):
self._set_column_widths() self._set_column_widths()
self.setHorizontalHeaderLabels(["ID", "Lead", "Title", "Artist", self.setHorizontalHeaderLabels(["ID", "Lead", "Title", "Artist",
"Len", "Start", "End", "Path"]) "Len", "Start", "End", "Last played"])
self.setDragEnabled(True) self.setDragEnabled(True)
self.setAcceptDrops(True) self.setAcceptDrops(True)
@ -209,7 +212,7 @@ class PlaylistTab(QTableWidget):
item = QTableWidgetItem() item = QTableWidgetItem()
self.setItem(row, self.COL_END_TIME, item) self.setItem(row, self.COL_END_TIME, item)
item = QTableWidgetItem() item = QTableWidgetItem()
self.setItem(row, self.COL_PATH, item) self.setItem(row, self.COL_LAST_PLAYED, item)
self._meta_set_note(row) self._meta_set_note(row)
@ -255,8 +258,14 @@ class PlaylistTab(QTableWidget):
self.setItem(row, self.COL_ARTIST, item) self.setItem(row, self.COL_ARTIST, item)
item = QTableWidgetItem(helpers.ms_to_mmss(track.duration)) item = QTableWidgetItem(helpers.ms_to_mmss(track.duration))
self.setItem(row, self.COL_DURATION, item) self.setItem(row, self.COL_DURATION, item)
item = QTableWidgetItem(track.path) last_playdate = Playdates.last_played(session, track)
self.setItem(row, self.COL_PATH, item) if last_playdate:
playdate_date = last_playdate.lastplayed.date()
last_played_str = get_relative_date(playdate_date)
else:
last_played_str = "Never"
item = QTableWidgetItem(last_played_str)
self.setItem(row, self.COL_LAST_PLAYED, item)
# Add empty start time for now as background # Add empty start time for now as background
# colour won't be set for columns without items # colour won't be set for columns without items
item = QTableWidgetItem() item = QTableWidgetItem()