Commit Graph

462 Commits

Author SHA1 Message Date
Claudio Ortolina 97f26e0cd2 Serve covers under API namespace as well 2024-12-22 22:15:24 +00:00
Claudio Ortolina f1af38606a Protect API behind a bearer token 2024-12-22 18:32:04 +00:00
Claudio Ortolina c18379801f Rename function 2024-12-22 18:23:15 +00:00
Claudio Ortolina cf3761ca79 Fold RequireLogin plug into Auth module 2024-12-22 16:12:31 +00:00
Claudio Ortolina 341d276db5 Include artists and cover in latest record JSON 2024-12-22 15:55:41 +00:00
Claudio Ortolina 53e8d88b6a Rename auth_password -> login_password 2024-12-21 14:57:44 +00:00
Claudio Ortolina 7214597aeb Update translations 2024-12-21 14:57:44 +00:00
Claudio Ortolina 98087ae568 Extract MusicLibraryWeb.Auth module 2024-12-21 14:48:32 +00:00
Claudio Ortolina 4f456322fc Bootstrap the /api namespace 2024-12-21 14:38:39 +00:00
Claudio Ortolina 4be2330891 Fix prompt to avoid the result being returned in a code block
Not sure why this is needed, considering that the API call clearly
specifies the `json_object` response format.
2024-12-19 21:05:02 +00:00
Claudio Ortolina 9dce1cacb9 Where possible, use built-in JSON instead of Jason
Note that it's not possible to replace any call where we encode and
pretty print, as JSON doesn't have such functionality.
2024-12-19 20:18:09 +00:00
Claudio Ortolina 45df749200 No need to create a range when total_pages is 0
Fixes:

warning: Range.new/2 and first..last default to a step of -1 when last < first.
Use Range.new(first, last, -1) or first..last//-1, or pass 1 if that was your intention
2024-12-19 19:07:08 +00:00
Claudio Ortolina 832e835252 Add function to get embeddings for arbitrary string 2024-12-18 22:20:41 +00:00
Claudio Ortolina d76c108896 Rename file to match module name 2024-12-18 21:58:07 +00:00
Claudio Ortolina 6bef3bed05 Add total for collection and wishlist albums in artist view 2024-12-18 11:33:48 +00:00
Claudio Ortolina a3306c84c3 Increase album grid density in artist view 2024-12-18 11:27:07 +00:00
Claudio Ortolina 53b89dc329 Extract Artists context 2024-12-18 11:12:06 +00:00
Claudio Ortolina 76605a1114 Add function to get similar artists 2024-12-17 20:44:31 +00:00
Claudio Ortolina c60108292a Scroll to top when paginating on small viewports 2024-12-16 18:03:26 +00:00
Claudio Ortolina e4fe4e7f4b Cache images for 24 hours 2024-12-15 12:09:29 +03:00
Claudio Ortolina 6660d195e4 Decrease visible records per page
After months of usage, I rarely paginate the list, so it's not necessary
to load 100 at a time. 20 is enough.

By matching 20 records with a 20 pool size, we should keep the repo
queue time to a minimum.
2024-12-15 11:15:46 +03:00
Claudio Ortolina a19d42ae30 Add more fixtures for release groups and releases 2024-12-14 23:24:21 +03:00
Claudio Ortolina 632f5c4661 Include album names in mb fixtures 2024-12-14 23:19:14 +03:00
Claudio Ortolina c705517415 Restore import functionality from stats
Accidentally removed in 135d1c2.
2024-12-14 17:23:59 +03:00
Claudio Ortolina 04d60b09a4 Extract search component 2024-12-13 23:22:21 +03:00
Claudio Ortolina a4f4407241 Center-ish counters in stats page 2024-12-13 22:41:42 +03:00
Claudio Ortolina f7045a9f14 Extend testing of artist page 2024-12-13 22:25:06 +03:00
Claudio Ortolina ed86ef7b5a Enable new actions menu on wishlist detail page 2024-12-12 20:23:48 +03:00
Claudio Ortolina c3f973b1e1 Move record actions into menu 2024-12-12 20:14:02 +03:00
Claudio Ortolina 91b81de0f8 Remove duplication around MusicBrainz URL generation 2024-12-11 23:54:21 +03:00
Claudio Ortolina 3409ba6d6b Fix typings on config modules 2024-12-11 23:53:29 +03:00
Claudio Ortolina 21439a580f TODO: make artist records a stream 2024-12-11 23:24:38 +03:00
Claudio Ortolina 3c85f9e974 Extract OpenAI.Completion struct 2024-12-11 23:24:16 +03:00
Claudio Ortolina 8d7fe4d660 Extract record list component 2024-12-11 22:47:23 +03:00
Claudio Ortolina 693b350db2 Add papertrail for copied code 2024-12-10 19:24:48 +03:00
Claudio Ortolina 31b6100687 Shrink buttons on mobile 2024-12-10 18:48:49 +03:00
Claudio Ortolina 44a8650c6c Move API Key to configuration 2024-12-10 16:50:37 +03:00
Claudio Ortolina b68a7ac734 Can fetch genres from OpenAI 2024-12-10 16:45:29 +03:00
Claudio Ortolina 4a706dc77a No need to expose these functions 2024-12-10 15:24:43 +03:00
Claudio Ortolina c2ccb7dde2 Add LastFm.Feed.all_artists/0 and LastFm.Feed.all_albums/0 2024-12-10 14:57:28 +03:00
Claudio Ortolina a6e1e4e34a Renamte LastFm.Feed.all/0 to LastFm.Feed.all_tracks/0 2024-12-10 14:57:06 +03:00
Claudio Ortolina f48372f7b3 Use MapSets for performance
Not noticeable with current database size, but lays a good foundation
for larger libraries.

For example, given a list of 300 artist IDs, checking if an ID is in the
list takes between 30 and 40 ms (for an ID towards the end of the list),
while the MapSet version takes consistently between 15 and 20 ms.
2024-12-10 14:21:57 +03:00
Claudio Ortolina 9e57103842 Where possible, link scrobbled artists to artist page 2024-12-10 14:13:50 +03:00
Claudio Ortolina 7e31c95839 Smooth scroll to top when paginating records 2024-12-08 15:18:14 +01:00
Claudio Ortolina 1c47473c11 Move SQLite extension loading to config/runtime.exs
Addresses deprecation mentioned at https://hexdocs.pm/ecto/Ecto.Repo.html#c:init/2
2024-12-07 20:29:33 +01:00
Claudio Ortolina 06fd591e5f Use unicode extension to normalize sorting accented records 2024-12-07 19:38:10 +01:00
Claudio Ortolina 0f926ed86a Load Sqlite unicode extension 2024-12-07 18:32:22 +01:00
Claudio Ortolina 8350ffd3a4 To get artist info, try mbid and then artist name 2024-12-04 21:07:56 +00:00
Claudio Ortolina 39b925676f Use NimbleOptions to validate MusicBrainz.Config 2024-12-04 15:01:52 +00:00
Claudio Ortolina 774c8d6006 Use NimbleOptions to validate LastFm.Config 2024-12-04 14:58:05 +00:00