Compare commits
No commits in common. "61e1fb119282a391c37ced9a85077c83e1e1b8a0" and "79f1a6afa31bc47aa747fe62797e26886b51be3a" have entirely different histories.
61e1fb1192
...
79f1a6afa3
@ -1,28 +1,3 @@
|
|||||||
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 "-"
|
||||||
|
|||||||
@ -501,25 +501,29 @@ class Window(QMainWindow, Ui_MainWindow):
|
|||||||
|
|
||||||
def song_info_search(self):
|
def song_info_search(self):
|
||||||
"""
|
"""
|
||||||
Open browser tabs for Wikipedia, searching for
|
Open browser tabs for Wikipedia and Songfacts, searching for
|
||||||
the first that exists of:
|
the first that exists of:
|
||||||
- selected track
|
- selected track
|
||||||
- next track
|
|
||||||
- current track
|
- current track
|
||||||
|
- next track
|
||||||
"""
|
"""
|
||||||
|
|
||||||
title = self.visible_playlist_tab().get_selected_title()
|
title = self.visible_playlist_tab().get_selected_title()
|
||||||
if not title:
|
|
||||||
if self.next_track:
|
|
||||||
title = self.next_track.title
|
|
||||||
if not title:
|
if not title:
|
||||||
if self.current_track:
|
if self.current_track:
|
||||||
title = self.current_track.title
|
title = self.current_track.title
|
||||||
|
if not title:
|
||||||
|
if self.next_track:
|
||||||
|
title = self.next_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"
|
||||||
|
|||||||
@ -16,11 +16,8 @@ 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 (
|
from model import Notes, Playlists, PlaylistTracks, Session, Settings, Tracks
|
||||||
Notes, Playdates, Playlists, PlaylistTracks, Session, Settings, Tracks
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class PlaylistTab(QTableWidget):
|
class PlaylistTab(QTableWidget):
|
||||||
@ -33,7 +30,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_LAST_PLAYED = 7
|
COL_PATH = 7
|
||||||
|
|
||||||
NOTE_COL_SPAN = 4
|
NOTE_COL_SPAN = 4
|
||||||
NOTE_ROW_SPAN = 1
|
NOTE_ROW_SPAN = 1
|
||||||
@ -69,7 +66,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", "Last played"])
|
"Len", "Start", "End", "Path"])
|
||||||
|
|
||||||
self.setDragEnabled(True)
|
self.setDragEnabled(True)
|
||||||
self.setAcceptDrops(True)
|
self.setAcceptDrops(True)
|
||||||
@ -212,7 +209,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_LAST_PLAYED, item)
|
self.setItem(row, self.COL_PATH, item)
|
||||||
|
|
||||||
self._meta_set_note(row)
|
self._meta_set_note(row)
|
||||||
|
|
||||||
@ -258,14 +255,8 @@ 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)
|
||||||
last_playdate = Playdates.last_played(session, track)
|
item = QTableWidgetItem(track.path)
|
||||||
if last_playdate:
|
self.setItem(row, self.COL_PATH, item)
|
||||||
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()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user