Commit graph

17 commits

Author SHA1 Message Date
7140cb0679
feat: import listens from spotify extended streaming history (#305) 2023-10-01 03:35:02 +02:00
38cf2ff549
chore(deps): bump all (#294) 2023-09-16 13:02:19 +02:00
8721fd101d
feat: use bulk Spotify API calls & inserts to make spotify crawling more efficient (#271)
* feat(spotify-api): bulk endpoints
* feat(music-library): allow bulk operations
* feat(spotify): bulk track+album+artist+genre import
* feat(spotify): use bulk import api for user crawl
* feat(spotify): bulk listen insert

For the benchmark case of a new user where Listory imports 50 new listens along with all now tracks, artists, albums & genres we significantly reduced the number of things happening:

    Spotify API Requests: 208 => 8
    DB Insert: 96 => 8
    Tracing Spans: 1953 => 66
2023-05-07 02:20:43 +02:00
renovate[bot]
ef84800ce8 chore(deps): update typeorm 2022-06-25 16:26:58 +02:00
a0ffe108e1 feat(api): update existing artists in MusicLibrary 2021-11-21 15:53:49 +01:00
a0c28e2324 feat: top genres report 2021-11-21 15:53:49 +01:00
e476243b85 test: create initial unit tests 2021-07-18 21:57:38 +02:00
3c6f3289f1 feat(server): save genres for artists and albums
This can later be used for reports
2021-05-25 19:23:42 +02:00
9b96d0fab4 chore(lint): switch to eslint 2021-05-25 18:12:42 +02:00
fcc2f7d1b6 fix(api): db error on duplicate music library import
When the spotify crawler loop would import an artist multiple
times in parallel the first would succeed but the following queries
would throw with following exception:

    QueryFailedError: duplicate key value violates unique constraint "IDX_ARTIST_SPOTIFY_ID"

This error also could happen for the album or track.
2020-11-21 17:00:33 +01:00
9896ea31ff feat: introduce new report "Top Albums" 2020-11-15 02:43:23 +01:00
5fb8a99a56 refactor: fix import relative paths 2020-09-05 21:07:05 +02:00
f56218602e fix: remove debug logging 2020-07-11 19:48:18 +02:00
aecc82576a fix: improve top-artists response time
By calculating the necessary counts in the database, we avoid
unncessary joins and data transmissions.
2020-07-11 19:35:36 +02:00
a7c5c68540 feat(api): setup database migrations 2020-05-03 21:10:31 +02:00
d881a78757 chore(api): update dependencies 2020-05-03 21:10:31 +02:00
f2065d3f1f feat(api): fetch listens from spotify 2020-05-03 21:10:31 +02:00