Anna Schumaker
7ea14392ec
scanner: Add a DirectoryTask
...
For iterating through a directory and creating tasks based on the files
found. I had to add a subdirectory to the Test Album to make sure
subdirs are handled properly here.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:10:55 -04:00
Anna Schumaker
9cced017ad
scanner: Add an ImportTask
...
For importing tracks from the tagdb
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:10:27 -04:00
Anna Schumaker
3402ce16ee
scanner: Add a new FileTask for scanning music files
...
This task is also responsible for checking if the file already exists in
the database before scanning.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:06:58 -04:00
Anna Schumaker
91d0922518
scanner: Add a CommitTask
...
For committing the database during scanning
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:06:55 -04:00
Anna Schumaker
065c192714
scanner: Add a base class for queued Tasks
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:06:52 -04:00
Anna Schumaker
73646fc106
scanner: Have Metadata gracefully handle self.file == NULL
...
So we don't need to wrap the context manager in a try / except block
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:06:50 -04:00
Anna Schumaker
a28d4d4b8e
scanner: Copy the Metadata code from lib/
...
And add an extra function for disc subtitles.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:06:47 -04:00
Anna Schumaker
ad9cf2b135
db: Store lastplayed as a timestamp
...
Instead of just a date object.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:06:47 -04:00
Anna Schumaker
7dd3ff8473
db: Give Tables a get_all() function
...
Right now I only implement it for Libraries. More tables can be added as
needed.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 14:18:06 -04:00
Anna Schumaker
0e55bb25e9
db: Give Tracks a way to directly set playcount and lastplayed
...
This will be needed when importing tracks from the tagdb into the sqlite
db
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-25 13:27:54 -04:00
Anna Schumaker
3fb6f3a2ba
db: Track.path should return a Pathlib.Path
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-24 17:05:26 -04:00
Anna Schumaker
a47e9e9fe9
Emmental 2.2 AUR commit
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-24 15:03:32 -04:00
Anna Schumaker
a3ec223064
Emmental 2.2
...
No real user-facing changes in this release, but I do lay some
groundwork for switching over to sqlite for our data storage.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-24 15:01:26 -04:00
Anna Schumaker
e94346fdd9
db: Give Playlists a PlaylistState property
...
And clean up how the default playlists are created so the test doesn't
fall over with the new column.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:48:20 -04:00
Anna Schumaker
8a0364760d
db: Give Years a PlaylistState property
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:18:30 -04:00
Anna Schumaker
6fbc5e0b27
db: Give Libraries a PlaylistState property
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:18:29 -04:00
Anna Schumaker
c168fcbda3
db: Give Genres a PlaylistState property
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:18:29 -04:00
Anna Schumaker
77c2b7cd81
db: Give Discs a PlaylistState property
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:18:28 -04:00
Anna Schumaker
9a6cda7aab
db: Give Decades a PlaylistState property
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:18:28 -04:00
Anna Schumaker
e9a2a6f06a
db: Give Artists a PlaylistState property
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:18:27 -04:00
Anna Schumaker
3abf2d3cf7
db: Give Albums a PlaylistState property
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:18:25 -04:00
Anna Schumaker
38861bbabf
db: Create a PlaylistStateTable and PlaylistState object
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:18:24 -04:00
Anna Schumaker
952d70c282
db: Have Tracks remove themselves from Playlist Maps when deleted
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:17:46 -04:00
Anna Schumaker
0fd1069484
db: Add a PlaylistMap
...
And create both permanent and temporary maps for tracks. The temporary
map is intended to be used for the New Tracks and Previous playlists,
since we don't store the state across restarts.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:17:45 -04:00
Anna Schumaker
2b87707f16
db: Create a PlaylistTable and Playlist object
...
And populate the table with some default playlist values.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:17:17 -04:00
Anna Schumaker
69f5742867
db: Have Tracks remove themselves from the GenreMap when deleted
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:16:51 -04:00
Anna Schumaker
5746b2a81f
db: Add a GenreMap
...
For mapping tracks into a list of genres, or a genre into a list of
tracks.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:16:50 -04:00
Anna Schumaker
986ef5bc74
db: Add a Map object
...
For creating a table that maps one value into another
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:15:47 -04:00
Anna Schumaker
5a52bdc546
db: Give Libraries a way to list their Tracks
...
And make sure the tracks are deleted when a Library is deleted.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:15:45 -04:00
Anna Schumaker
ea555a428c
db: Create a TrackTable and Track object
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:15:44 -04:00
Anna Schumaker
f519830095
db: Create a LibraryTable and Library object
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:15:20 -04:00
Anna Schumaker
63e2e6473d
db: Add a function so Decades can list their Years
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:14:58 -04:00
Anna Schumaker
2af61f8787
db: Create a YearTable and Year object
...
I do lookups and inserts based only on the year field. Decades are
created automatically on insert.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:14:56 -04:00
Anna Schumaker
cc65db6d79
db: Create a DecadeTable and Decade object
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:14:31 -04:00
Anna Schumaker
feca3c7a19
db: Create a GenreTable and Genre object
...
I'll eventually need to add a mapping between tracks and their genre
list, but I still need to build up to having Track objects first
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:14:09 -04:00
Anna Schumaker
00e15c8422
db: Add a function so Albums can list their Discs
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:13:49 -04:00
Anna Schumaker
bbb248f665
db: Create a DiscTable and Disc object
...
To represent each disc of an album. Discs may have different subtitles
that we want to display (or there may not be a subtitle at all). Casting
a Disc to a string either appends the subtitle to the album name or
returns the album name directly. This is intended to be used by the
ColumnView to display album names
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:13:48 -04:00
Anna Schumaker
94f08dcd06
db: Give Artists a function for listing their Albums
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:13:25 -04:00
Anna Schumaker
6a1713630b
db: Create an AlbumTable and Album tag
...
Similar to Artists, only holding information about each album instead.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:13:24 -04:00
Anna Schumaker
2d125546dd
db: Add an ArtistTable and Artist tag
...
Also create an index on artist name in the sqlite table for faster
lookups.
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:12:56 -04:00
Anna Schumaker
3753b0ad60
db: Add a Tag object
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:12:02 -04:00
Anna Schumaker
2f8e71fff7
db: Add objects for Tables and Rows
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-23 13:12:00 -04:00
Anna Schumaker
2822a9ac35
db: Add initial SQL connection object
...
And set the row_factory to use the built-in sqlite3.Row so we can access
columns by name in search results
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-22 07:33:43 -04:00
Anna Schumaker
2e6c8a17e3
Emmental 2.1 AUR commit
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-17 09:28:33 -04:00
Anna Schumaker
1edc776370
Emmental 2.1
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-17 09:21:32 -04:00
Anna Schumaker
b0a1ab5796
keyboard: Add initial keyboard shortcuts
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-02 10:25:11 -04:00
Anna Schumaker
e24999bb2f
audio: Give the Player a playpause() function
...
This makes it easy for others to pause if playing, or play if paused
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-02 10:25:00 -04:00
Anna Schumaker
f55ecf0472
sidebar: Switch over to using the emmental-favorites icon
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-31 19:18:28 -04:00
Anna Schumaker
f13983269b
playlist: Switch over to using the emmental-favorites icon
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-31 19:18:17 -04:00
Anna Schumaker
692ca1ff5d
data: Add a custom icon for Favorites
...
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-07-31 19:17:15 -04:00