Commit graph

3847 commits

Author SHA1 Message Date
Šarūnas Nejus
0966e3c653
Test aura (#5239)
In #4746 I was making a small adjustment in beetsplug/aura.py and found
that the module wasn't tested. So this PR adds some high-level tests to
act a safeguard for any future adjustments.
2024-06-10 13:07:48 +01:00
Šarūnas Nejus
179405ed82
A couple of small updates in the code 2024-06-05 04:41:02 +01:00
Lev Gorodetskiy
2a4cf0d335
Codestyle 2024-05-26 11:57:24 -03:00
Lev Gorodetskiy
2130404217
Add timeout to all requests calls 2024-05-25 12:24:53 -03:00
Šarūnas Nejus
e9ce625879
Dedupe get_attribute_converter 2024-05-07 21:15:00 +01:00
Šarūnas Nejus
6ee734685d
Feed in app context and args into Document to allow testing
This will be help with testing each of the documents which do not
any more depend on the 'global' `current_app` and `request`. These two
can now be provided at the time the objects are instantiated.
2024-05-07 19:55:02 +01:00
Šarūnas Nejus
7d636d8f22
Add support for a specific type in InQuery 2024-04-30 22:20:36 +01:00
Šarūnas Nejus
68eee96c03
Define InQuery and use it in PlaylistQuery
While working on the DB optimisation I discovered one query which does
not follow the 'FieldQuery' interface - 'PlaylistQuery', so I looked
into it in more detail.

One special thing about it is that it uses 'IN' SQL operator, so
I defined 'InQuery' query class to have this logic outside of the
playlist context.

Otherwise, it seems like 'PlaylistQuery' is a field query, even if it
has a very special way of resolving values it wants to query. In the
future, we may want to consider moving this kind of custom
_initialisation_ logic away from '__init__' methods to
factory/@classmethod: this should make it more clear that the purpose of
such logic is to resolve the data that is required to define
a particular FieldQuery class fully.
2024-04-30 22:20:36 +01:00
wisp3rwind
a9423b7b2d lyrics: remove version switch that became obsolete when we dropped Python 3.5 2024-04-27 16:02:26 +02:00
J0J0 Todos
d510177820
Merge pull request #5121 from mgoltzsche/generate-playlist-item-attributes 2024-04-20 08:04:32 +02:00
Max Goltzsche
883bbb3e4b
smartplaylist: rename output format m3u8 to extm3u 2024-04-13 04:55:43 +02:00
Max Goltzsche
c0afd3eb3c
smartplaylist: allow exporting item fields
Allow generating extm3u playlists so that they contain additional item fields such as the `id`.

The feature is required by the mgoltzsche/beets-webm3u plugin (M3U server) to transform playlists using a request based item URI template which may require additional fields such as the `id`, e.g. `beets:library:track;$id`.
2024-04-13 04:55:37 +02:00
Dr-Blank
6a27a8de3c
satisfy the linter 2024-04-11 13:42:56 -04:00
Dr-Blank
c88953805b
bugfix: ignore subdirectories of ignored
directories in unimported plugin
2024-03-22 18:20:47 -04:00
Dr-Blank
66b459b8d0
Refactor Candidate class in fetchart.py to improve
validation and resizing logic
2024-03-18 09:17:33 -04:00
Serene
3548e35360
Merge pull request #5122 from Bobo1239/master
convert: Correctly identify WAVE format as lossless
2024-03-02 09:05:53 +10:00
Boris-Chengbiao Zhou
47ba590999 convert: Correctly identify WAVE format as lossless
Seems like this entry was added before mediafile gained support for WAVE
files in commit 832f3d. Adjust it to fix detection.
2024-03-01 17:58:26 +01:00
Serene
8720d6413b
Merge pull request #5063 from Maxr1998/fix-advancedrewrite-simple-rules
advancedrewrite: Fix simple rules being overwritten by advanced rules
2024-03-01 16:08:37 +10:00
Serene
35e8eb985f
Merge pull request #5058 from arsaboo/lb
Add initial version of the Listenbrainz plugin
2024-03-01 15:51:50 +10:00
Serene-Arc
83242fd7cf Apply formatting 2024-03-01 15:21:25 +10:00
Maxr1998
ba66808c74
advancedrewrite: Fix multi-valued fields specified as a single string 2024-01-01 19:33:22 +01:00
Maxr1998
b1d9169abe
advancedrewrite: Fix simple rules being overwritten by advanced rules 2024-01-01 18:32:06 +01:00
Alok Saboo
ce023a3c53 Revert unwanted commits 2023-12-25 17:14:45 -05:00
Alok Saboo
7838e70d41 Revert "Merge remote-tracking branch 'upstream/master' into lb"
This reverts commit 6bfe26642c, reversing
changes made to 9b8dbe8055.
2023-12-23 12:25:22 -05:00
Alok Saboo
6bfe26642c Merge remote-tracking branch 'upstream/master' into lb 2023-12-23 12:19:30 -05:00
Alok Saboo
9b8dbe8055 Add logging 2023-12-23 12:19:04 -05:00
Alok Saboo
47584f20cb Formatting 2023-12-22 16:13:01 -05:00
Alok Saboo
537b57d99d Make sure only Jams and Exploration playlists are added.
Sometimes, there are other playlists that are created (e.g., Top Missed Recordings of 2023, Top Discoveries of 2023). Right now, I am excluding these. We may want to address them separately.
2023-12-22 16:12:42 -05:00
Alok Saboo
71a6a4fb4a Formatting 2023-12-22 10:25:42 -05:00
Alok Saboo
7440ca51fb Error handling 2023-12-22 10:25:27 -05:00
Alok Saboo
2eb8000a0b Update docstrings 2023-12-21 12:24:04 -05:00
Alok Saboo
0ed65564b3 Update listenbrainz.py 2023-12-21 12:16:24 -05:00
Alok Saboo
4541644961 Updated docs 2023-12-21 11:57:14 -05:00
Alok Saboo
e8dc2cb5da Sort imports 2023-12-21 09:27:21 -05:00
Alok Saboo
4f6689742c Update listenbrainz.py 2023-12-20 10:47:50 -05:00
Alok Saboo
b010fb507f Update listenbrainz.py 2023-12-20 10:30:14 -05:00
Alok Saboo
75deae5f47 Update lastimport.py 2023-12-20 10:28:45 -05:00
Alok Saboo
c445e5ee79 Update listenbrainz.py 2023-12-20 10:26:05 -05:00
Alok Saboo
d83a07d368 Update listenbrainz.py 2023-12-20 10:23:54 -05:00
Alok Saboo
ec3711f4a9 Update lastimport.py 2023-12-20 10:23:33 -05:00
Alok Saboo
5e4cb20c4a Update lastimport.py 2023-12-20 10:21:45 -05:00
Alok Saboo
135faac62e Update lastimport.py 2023-12-20 10:20:16 -05:00
Alok Saboo
c437a5594e Update lastimport.py 2023-12-20 10:16:33 -05:00
Alok Saboo
d7823a0f24 Update lastimport.py 2023-12-20 10:15:07 -05:00
Alok Saboo
272c7c32bc Allow handling of None 2023-12-20 10:13:09 -05:00
Alok Saboo
6d44c6af00 Update listenbrainz.py 2023-12-20 10:06:02 -05:00
Alok Saboo
3ead37775e Update listenbrainz.py 2023-12-20 09:47:42 -05:00
Alok Saboo
fc9e68eccf Update listenbrainz.py 2023-12-20 09:46:06 -05:00
Alok Saboo
aa117bb760 Update listenbrainz.py 2023-12-20 09:45:02 -05:00
Max Goltzsche
6b929c6e72
web: fix range request support
Do not let the web plugin overwrite the Content-Length header with the full file length since flask/werkzeug sets the requested range's/chunk's size when handling a range request.
This allows to play large audio/opus files using e.g. a browser/firefox or gstreamer/mopidy without making a reverse-proxy/nginx emulate range request support and hide range-related headers from the backend.
2023-12-20 01:23:13 +01:00
Alok Saboo
4a46769a2c Update listenbrainz.py 2023-12-19 18:40:34 -05:00
Alok Saboo
84da424fae Update listenbrainz.py 2023-12-19 18:39:36 -05:00
Alok Saboo
f5735f6e09 Update listenbrainz.py 2023-12-19 18:24:53 -05:00
Alok Saboo
d17d1468c9 Update listenbrainz.py 2023-12-19 18:23:21 -05:00
Alok Saboo
b39779d838 Update listenbrainz.py 2023-12-19 18:16:22 -05:00
Alok Saboo
a0b41e8474 Update listenbrainz.py 2023-12-19 18:13:11 -05:00
Alok Saboo
f376c21b03 Update listenbrainz.py 2023-12-19 18:12:16 -05:00
Alok Saboo
a35d7648b1 Update listenbrainz.py 2023-12-19 18:10:36 -05:00
Alok Saboo
af55c1ecb8 Update listenbrainz.py 2023-12-19 18:06:45 -05:00
Alok Saboo
9e7b70903c Update listenbrainz.py 2023-12-19 17:24:24 -05:00
Alok Saboo
14063951bf Update listenbrainz.py 2023-12-19 17:18:54 -05:00
Alok Saboo
3000664344 Update listenbrainz.py 2023-12-19 17:13:08 -05:00
Alok Saboo
f3d8655ee5 Update listenbrainz.py 2023-12-19 17:12:12 -05:00
Alok Saboo
92bb8584d4 Update listenbrainz.py 2023-12-19 17:10:29 -05:00
Alok Saboo
cac7f7d2dd Update listenbrainz.py 2023-12-19 17:06:50 -05:00
Alok Saboo
efcb54995e Update listenbrainz.py 2023-12-19 17:06:11 -05:00
Alok Saboo
e884d78351 Update listenbrainz.py 2023-12-19 17:05:07 -05:00
Alok Saboo
cd4e44ec06 Update listenbrainz.py 2023-12-19 16:55:58 -05:00
Alok Saboo
6a94276af9 Update listenbrainz.py 2023-12-19 16:53:22 -05:00
Alok Saboo
240faaa619 Update listenbrainz.py 2023-12-19 16:51:54 -05:00
Alok Saboo
03888fa5b3 Update listenbrainz.py 2023-12-19 16:49:40 -05:00
Alok Saboo
c99cd85083 Update listenbrainz.py 2023-12-19 16:47:40 -05:00
Alok Saboo
7cae5eb70e Update listenbrainz.py 2023-12-19 16:46:43 -05:00
Alok Saboo
702570f495 Update listenbrainz.py 2023-12-19 16:44:17 -05:00
Alok Saboo
04dc0f6862 Update listenbrainz.py 2023-12-19 16:40:41 -05:00
Alok Saboo
2be00a4d17 Update listenbrainz.py 2023-12-19 16:39:44 -05:00
Alok Saboo
69a0ce6e7d Update listenbrainz.py 2023-12-19 16:36:58 -05:00
Alok Saboo
eeb4c4b5cc Update listenbrainz.py 2023-12-19 16:34:00 -05:00
Alok Saboo
393ff0c7bd Update listenbrainz.py 2023-12-19 15:51:03 -05:00
Alok Saboo
549827a46a Update listenbrainz.py 2023-12-19 15:49:02 -05:00
Alok Saboo
ed98370077 Update listenbrainz.py 2023-12-19 15:48:19 -05:00
Alok Saboo
cb58f32173 Update listenbrainz.py 2023-12-19 15:41:08 -05:00
Alok Saboo
658d1d7340 Update listenbrainz.py 2023-12-19 15:39:10 -05:00
Alok Saboo
a2428f4845 Update listenbrainz.py 2023-12-19 15:38:20 -05:00
Alok Saboo
444fd2e83d Update listenbrainz.py 2023-12-19 15:37:00 -05:00
Alok Saboo
4afd992fbd Update listenbrainz.py 2023-12-19 15:34:06 -05:00
Alok Saboo
b12a59ed58 Update listenbrainz.py 2023-12-19 15:31:12 -05:00
Alok Saboo
0d56ec7232 Update listenbrainz.py 2023-12-19 15:30:19 -05:00
Alok Saboo
969ff61cf9 Update listenbrainz.py 2023-12-19 15:28:10 -05:00
Alok Saboo
7d6c123436 Update listenbrainz.py 2023-12-19 15:18:27 -05:00
Alok Saboo
619fb17383 Update listenbrainz.py 2023-12-19 14:57:44 -05:00
Alok Saboo
2c25076fbf Update listenbrainz.py 2023-12-19 14:55:30 -05:00
Alok Saboo
d4cb8ff654 Create listenbrainz.py 2023-12-19 14:28:46 -05:00
Max Goltzsche
58e5b02929
smartplaylist: add --uri-format option
Beets web API already allows remote players to access audio files but it doesn't provide a way to expose the playlists defined using the smartplaylist plugin.
Now the smartplaylist plugin provides an option to generate ID-based item URIs/URLs instead of paths.
Once playlists are generated this way, they can be served using a regular HTTP server such as nginx.

To provide sufficient flexibility for various ways of integrating beets remotely (e.g. beets API, beets API with context path, AURA API, mopidy resource URI, etc), the new option has been defined as a template with an `$id` placeholder (assuming each remote integration requires a different path schema but they all rely on using the beets item `id` as identifier/path segment).

To prevent local path-related plugin configuration from leaking into a HTTP URL-based playlist generation (invoked with CLI option in addition to the local playlists generated into another directory), setting the new option makes the plugin ignore the other path-related options `prefix`, `relative_to`, `forward_slash` and `urlencode`.

Usage examples:
* `beet splupdate --uri-format 'http://beets:8337/item/$id/file'` (for beets web API)
* `beet splupdate --uri-format 'http://beets:8337/aura/tracks/$id/audio'` (for AURA API)

(While it was already possible to generate playlists containing HTTP URLs previously using the `prefix` option, it did not allow to generate ID-based URLs pointing to the beets web API but required to expose the audio files using a web server directly and refer to them using their file system `$path`.)

Relates to #5037
2023-12-16 05:37:27 +01:00
Max Goltzsche
385c05f98e
smartplaylist: change option --extm3u to --output
The boolean flags `--extm3u` and `--no-extm3u` are replaced with a string option `--output=m3u|m3u8`.
This reduces the amount of options and allows to evolve the CLI to support more playlist output formats in the future (e.g. JSON) without polluting the CLI at that point.
2023-12-16 00:23:03 +01:00
Maxr1998
41719d7b49
advancedrewrite: Apply same rewrite to more corresponding album fields 2023-12-15 17:23:40 +01:00
Adrian Sampson
1efd67cb82
Merge pull request #5044 from Maxr1998/advancedrewrite-rewrite
advancedrewrite: Support simple syntax and improve advanced syntax
2023-12-15 09:34:25 -05:00
Max Goltzsche
222b3a34f9
smartplaylist: expose config as CLI options
Add CLI options to `splupdate` command:
* `--playlist-dir`, `-d`
* `--relative-to`
* `--prefix`
* `--urlencode`
* `--forward-slash`
* `--pretend-paths`
2023-12-15 03:51:27 +01:00
Max Goltzsche
b07a2e42f4
smartplaylist: add extm3u/extinf/m3u8 support
This is to be able to display meaningful metadata and search a playlist within a player without having to load the linked audio files of a playlist.
2023-12-14 01:46:14 +01:00
Maxr1998
304a052dfd
advancedrewrite: Support simple syntax and improve advanced syntax 2023-12-13 14:48:43 +01:00
J0J0 Todos
e5d10004ae
Merge pull request #4807 from doronbehar/mbsubmit-improvements
mbsubmit: Add picard `PromptChoice`
2023-12-06 13:08:20 +01:00
Doron Behar
729a11e211 mbsubmit: Add picard PromptChoice
Make it possible to open picard from the import menu when there are weak
recommendations.
2023-12-05 13:49:03 +02:00
Alok Saboo
4348a49a4f Formatting fixes 2023-12-04 11:38:34 -05:00
Alok Saboo
bdc7de874d Revert code cleanup 2023-12-04 11:37:01 -05:00
Alok Saboo
316b22e9f9 Code cleanup 2023-12-04 11:22:28 -05:00
Alok Saboo
c102505621 Add ConnectionError handling 2023-12-04 10:32:55 -05:00
Adrian Sampson
df2d6ae753
Merge branch 'master' into deezer_error 2023-12-02 13:49:16 -05:00
Alok Saboo
a4ce25fce0 Changed debug logs to error 2023-12-01 12:09:47 -05:00
Alok Saboo
7ffbd040a1 Updated error handling 2023-12-01 08:43:14 -05:00
Alok Saboo
753e4e9a39 Add 502 error handling 2023-11-28 09:58:42 -05:00
Alok Saboo
1a77d9575b Formatting fixes 2023-11-25 10:29:02 -05:00
Alok Saboo
2115f31070 Fix comments 2023-11-25 10:27:29 -05:00
Alok Saboo
e5df18c981 Merge remote-tracking branch 'upstream/master' into deezer_error 2023-11-23 09:40:21 -05:00
Alok Saboo
dee893a7d0 Add helper function and address comments 2023-11-23 09:40:03 -05:00
Alok Saboo
b2fe89d70c formatting fixes 2023-11-22 12:03:33 -05:00
Alok Saboo
33f8ae3e50 Use exception instead of a module in try-except block 2023-11-22 12:02:39 -05:00
Alok Saboo
b4cc654153 Formatting fixes 2023-11-22 11:56:06 -05:00
Alok Saboo
3f68856e58 Lint 2023-11-22 11:54:10 -05:00
Alok Saboo
4cf2c6d3a1 Handle Deezer API errors 2023-11-22 11:52:33 -05:00
Alok Saboo
138216a6bb Update docstring 2023-11-16 12:23:42 -05:00
Alok Saboo
3b707b9276 Update spotify.py 2023-11-15 10:31:20 -05:00
Alok Saboo
e2f83cdf77 Fix typo 2023-11-15 10:24:34 -05:00
Alok Saboo
3b8cb98e6d
Update beetsplug/spotify.py
Co-authored-by: J0J0 Todos <2733783+JOJ0@users.noreply.github.com>
2023-11-15 10:21:53 -05:00
Alok Saboo
c64df0d27a
Update beetsplug/spotify.py
Co-authored-by: J0J0 Todos <2733783+JOJ0@users.noreply.github.com>
2023-11-15 10:21:42 -05:00
Alok Saboo
33944d457b formatting 2023-11-12 09:45:29 -05:00
Alok Saboo
9e1c530c9d also include EAN and UPC 2023-11-12 09:43:59 -05:00
Alok Saboo
e7d86f2fc9 Update spotify.py 2023-11-12 09:40:25 -05:00
Alok Saboo
7952f0a71d Also obtain track ISRC 2023-11-11 21:35:14 -05:00
Alok Saboo
d561ba7793 Add isrc 2023-11-11 21:23:50 -05:00
Alok Saboo
86daa0111c Update spotify.py 2023-11-11 21:02:52 -05:00
jeff
7b0f5fb3f3 Add config option to prefer synced lyrics over plain 2023-11-05 11:26:33 -05:00
jeff
e14982cad7 Add LRCLIB as a provider for the lyrics plugin 2023-11-05 11:26:33 -05:00
wisp3rwind
05383a0dab replaygain: typings
also, minor clean-up (remove unused function after_version, f-string
conversion)
2023-11-05 08:25:39 +01:00
Alok Saboo
c1e91f42df Formatting 2023-11-01 18:12:23 -04:00
Alok Saboo
d4a4934f7a Improve error handling 2023-11-01 17:38:50 -04:00
Adrian Sampson
6655760732
Merge pull request #4974 from fhchl/master 2023-10-26 10:09:07 -04:00
Adrian Sampson
a2d6819276
Merge pull request #4972 from henges/henges/discogs-fetchart
discogs: Populate `cover_art_url` attribute
2023-10-25 14:51:33 -04:00
Leet
eea7c19abc Use gender-neutral language 2023-10-23 17:41:38 -04:00
U-LAPTOP-4EP3DB2K\alexa
5fe19c1d1d PR feedback: fix formatting 2023-10-23 09:47:19 +08:00
fhchl
3e1d496ba1
return empty lists instead of None 2023-10-22 20:46:36 +02:00
U-LAPTOP-4EP3DB2K\alexa
3e06ca2af4 Use images attr over cover_image 2023-10-22 21:51:29 +08:00
U-LAPTOP-4EP3DB2K\alexa
6e88da7298 Merge branch 'master' into henges/discogs-fetchart 2023-10-22 20:48:54 +08:00
U-LAPTOP-4EP3DB2K\alexa
c31146e3f5 Discogs <-> fetchart integration 2023-10-22 20:42:45 +08:00
Serene-Arc
a6e5201ff3 Apply formatting tools to all files
This is 'the big one', which touches every file so that it all conforms
to the given standard.
2023-10-22 09:53:18 +10:00
Alok Saboo
f79fd64aeb Simplify loop and update changelog entry 2023-10-21 16:16:51 -04:00
Alok Saboo
ee42f79b25 Update retry logic 2023-10-21 09:43:01 -04:00
Alok Saboo
66bf0023ea Merge remote-tracking branch 'upstream/master' into spotify_timeout 2023-10-15 09:36:54 -04:00
Maxr1998
9660dd6130
Fix remaining linter warnings 2023-10-14 15:00:57 +02:00
Maxr1998
f809e241ef
Fix linter warnings 2023-10-14 15:00:57 +02:00
Maxr1998
0a4c8e4952
Add advanced rewrite plugin
This plugin allows rewriting fields based on a given library query. This can be helpful, for example, when an artist was renamed but you'd like to keep their older releases under their old name, or if you have a single track from a Various Artists release and want to have it included with the original artist.
2023-10-14 15:00:57 +02:00