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):
if not ms:
return "-"

View File

@ -501,29 +501,25 @@ class Window(QMainWindow, Ui_MainWindow):
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:
- selected track
- current track
- next track
- current track
"""
title = self.visible_playlist_tab().get_selected_title()
if not title:
if self.current_track:
title = self.current_track.title
if not title:
if self.next_track:
title = self.next_track.title
if not title:
if self.current_track:
title = self.current_track.title
if title:
# Wikipedia
str = urllib.parse.quote_plus(title)
url = f"https://www.wikipedia.org/w/index.php?search={str}"
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):
"Stop playing immediately"

View File

@ -16,8 +16,11 @@ import os
from config import Config
from datetime import datetime, timedelta
from helpers import get_relative_date
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):
@ -30,7 +33,7 @@ class PlaylistTab(QTableWidget):
COL_DURATION = 4
COL_START_TIME = 5
COL_END_TIME = 6
COL_PATH = 7
COL_LAST_PLAYED = 7
NOTE_COL_SPAN = 4
NOTE_ROW_SPAN = 1
@ -66,7 +69,7 @@ class PlaylistTab(QTableWidget):
self._set_column_widths()
self.setHorizontalHeaderLabels(["ID", "Lead", "Title", "Artist",
"Len", "Start", "End", "Path"])
"Len", "Start", "End", "Last played"])
self.setDragEnabled(True)
self.setAcceptDrops(True)
@ -209,7 +212,7 @@ class PlaylistTab(QTableWidget):
item = QTableWidgetItem()
self.setItem(row, self.COL_END_TIME, item)
item = QTableWidgetItem()
self.setItem(row, self.COL_PATH, item)
self.setItem(row, self.COL_LAST_PLAYED, item)
self._meta_set_note(row)
@ -255,8 +258,14 @@ class PlaylistTab(QTableWidget):
self.setItem(row, self.COL_ARTIST, item)
item = QTableWidgetItem(helpers.ms_to_mmss(track.duration))
self.setItem(row, self.COL_DURATION, item)
item = QTableWidgetItem(track.path)
self.setItem(row, self.COL_PATH, item)
last_playdate = Playdates.last_played(session, track)
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
# colour won't be set for columns without items
item = QTableWidgetItem()