Commit Graph

755 Commits

Author SHA1 Message Date
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