Commit graph

10943 commits

Author SHA1 Message Date
J0J0 T
c1908d551a convert: playlist: Document the feature
leaving out the fact that #EXTM3U is added to the playlist file header
(that important?).
2023-03-29 07:46:08 +02:00
J0J0 T
cb630c45f6 convert: playlist: Also use syspath() for contents
of playlist. We want to have processed every entry in the media list we
pass to the M3UFile instance.
2023-03-29 07:46:08 +02:00
J0J0 T
8dc556d420 convert: playlist: Use syspath()
for file read and write operations.
2023-03-29 07:46:08 +02:00
J0J0 T
7d121c390b convert: playlist: Move M3UFile class to separate
module in util package.
2023-03-29 07:46:08 +02:00
J0J0 Todos
01b77f5602 convert: playlist: Add changelog entry 2023-03-29 07:45:51 +02:00
J0J0 T
39e4b90b5c convert: playlist: Add tests checking extm3u and
fix extm3u check in load method.
2023-03-29 07:21:27 +02:00
J0J0 T
68240f6e03 convert: playlist: Add EmptyPlaylistError and test
- Add and Exception class called EmptyPlaylistError ought to be raised
  when playlists without files are loaded or saved.
- Add a test for it in test_m3ufile
- Fix media_files vs. media_list attribute name.
2023-03-29 07:21:27 +02:00
J0J0 T
0cbf91e4d8 convert: playlist: Add test_m3ufile and fixtures
Add several tests checking loading and saving unicode and regular ascii
text playlist files.
2023-03-29 07:21:27 +02:00
J0J0 T
ba3740c8fe convert: playlist: Fix filename attr in load method 2023-03-29 07:21:27 +02:00
J0J0 T
55b386375a convert: playlist: Move m3u creation after conversions
- Move the creation of the playlist file to the very end, right after
  self._parallel_convert, in the convert plugin's main function.
- In the test code, the destination directory is created when the
  conversion happens, thus this fixes test_playlist and doesn't hurt the
  feature - The playlist creation can as well be the very last step in
  the process.
2023-03-29 07:21:27 +02:00
J0J0 T
e41525adbc convert: playlist: Remove clutter from test
- Remove comments in tearDown
- Don't test for converted.mp3, it's done in a separate test already, we
  only want to test for the playlist file here.
2023-03-29 07:21:27 +02:00
J0J0 T
9930a5da59 convert: playlist: Test playlist existence
Broken commit around writing a unittest that checks for existence of an
m3u file after convert has been called with --playlist option.
2023-03-29 07:21:27 +02:00
J0J0 T
5dfff50005 convert: playlist: Refactor m3u writing to class
and also implement a currently untested load() method.
2023-03-29 07:21:27 +02:00
J0J0 T
c251ed19c4 convert: playlist: Generate m3u file in one batch
to avoid any possible interference with the threaded file conversion
mechanism.
2023-03-29 07:21:27 +02:00
J0J0 T
d589e77ade convert: playlist: Fix redundant join path
It's done in _get_opts_and_config already.
2023-03-29 07:21:27 +02:00
J0J0 T
c0b1bc9867 convert: playlist feature: Better relative path gen
Use Item.destination method for generation of relative paths to media
files in playlist. The fragment keyword enables returning the path as
unicode instead of bytes, let's keep that in mind.
2023-03-29 07:21:27 +02:00
J0J0 T
16e25bb61b convert: playlist feature: Fix relative paths
pointing to media files in playlist. Also refine code comment and move
to a better fitting place.
2023-03-29 07:21:27 +02:00
J0J0 T
fd8fe69738 convert: Playlist feature linting fixes 2023-03-29 07:21:27 +02:00
J0J0 T
d448e0c4de convert: Refine and fix playlist feature
- Improve --help text
- Use unicode instead of bytes when adding media file paths to the
  playlist file.
- The "standard" (?) of m3u8 defines that unicode should ensure support
  of special characters in media file names. util.displayable_path() is
  used to do the conversion from bytes. We save everything in bytes in
  the config since it seemes to be the way this plugin or beets in
  general likes to save paths.
- Join dest and playlist in the config reader method already to have it
  ready in both methods that require the full path to the playlist file.
2023-03-29 07:21:27 +02:00
J0J0 T
861bc69df5 convert: Add a quick & dirty m3u playlist feature 2023-03-29 07:21:27 +02:00
J0J0 Todos
ed1202bc94
Merge pull request #4733 from snejus/fixup-beetcamp-url
Update beetcamp URL in id_extractors
2023-03-27 16:19:34 +02:00
Šarūnas Nejus
4e519b200d
Update beetcamp URL in id_extractors 2023-03-27 02:27:32 +01:00
J0J0 Todos
34227cfabc
Merge pull request #4708 from JOJ0/mb_external_ids
Save external ID's via MusicBrainz
2023-03-26 14:25:15 +02:00
J0J0 Todos
5bf4e3d92f Dedicated flex attrs for Deezer, Beatport album ID
- Similar to what the Spotify plugin does, on imports we save to a field
  `..._album_id` (spotify_album_id, deezer_album_id, beatport_album_id)
- It would be good to submit such a change to the 3rd-party plugins beetcamp
  and beatport4 as well (beatport_album_id, bandcamp_album_id).
- We might need to investigate why none of these
  flex attr fields get populated to the beets album level (`beet info -a`,
  album_attributes db table), it is only available at the item level (`beet
  info`, item_attributes db table). This should be tackled in a future
  issue/PR.
2023-03-26 13:20:07 +02:00
J0J0 Todos
2e5394246f Docs for #4708 2023-03-25 20:51:52 +01:00
J0J0 Todos
348a9fbf13 Changelog for #4708 2023-03-25 20:51:52 +01:00
J0J0 Todos
6acee803f7 Exclude ID's when preserving flexible attributes
- Bandcamp, Spotify, Deezer and Beatport ID's are saved in the library as
  flexible attributes.
- On _reimports_ the method importer.ImportTask.reimport_metadata() takes care
  of preserving existing values for flexible attributes instead of applying new
  (and potentially empty) values.
- In this case we don't want this behaviour and need to make sure that new
  values are applied. Therefore we check whether such ID's of metadata services
  are present in the reimported items and exclude them in reimport_metadata().
2023-03-25 20:51:52 +01:00
J0J0 Todos
fd4cecc29e Make external IDs fetching via MB configurable
- By default no external URLs will be looked for in the 'url-relation-list' of
  the releae dictionary.
- Enabling is possible per each external service.
2023-03-25 20:51:52 +01:00
J0J0 T
6f2c31926e Fetch more external IDs via MusicBrainz
Add retrieval and ID extraction of Bandcamp, Spotify, Deezer and Beatport URLs
while retrieving a MusicBrainz release.
2023-03-25 20:51:16 +01:00
Adrian Sampson
4194914e94
Merge pull request #4712 from arsaboo/convert_negation
Add additional example to convert plugin
2023-03-24 16:55:36 -07:00
J0J0 Todos
e51206ae16
Merge pull request #4723 from arsaboo/jiosaavn
Add JioSaavn to the community plugins list
2023-03-23 12:28:53 +01:00
J0J0 Todos
1dd75d687a
Merge pull request #4705 from arsaboo/installation
Add instructions to install directly from Github.
2023-03-23 12:26:25 +01:00
Alok Saboo
5231037591 Add JioSaavn as a tag source 2023-03-20 17:32:45 -04:00
Alok Saboo
9f4b43c540 Point to latest docs 2023-03-18 10:56:16 -04:00
Alok Saboo
6d0e5ba8ca Change to GitHub 2023-03-17 11:06:46 -04:00
Alok Saboo
5f87371229 rephrase 2023-03-14 20:57:34 -04:00
Alok Saboo
05cdecfb7c Add more examples to convert plugin 2023-03-14 20:39:47 -04:00
Alok Saboo
53911c74dd Link to dev docs 2023-03-13 11:33:45 -04:00
Alok Saboo
36daf93828 Add instructions to install directly from Github. 2023-03-12 16:28:29 -04:00
J0J0 T
c2c617594f Save Discogs Release ID via MusicBrainz
- Enable fetching 'url-rels' from the MusicBrainz release endpoint.
- A MusicBrainz release might contain a link to a Discogs release
  which we save to the discogs_albumid attribute of the info object.
- For extraction of the release ID from the Discogs URL, we use the method
  provided in the id_extractors util module.
2023-03-12 12:03:31 +01:00
Adrian Sampson
2e18f84b38
Merge pull request #4698 from ghbrown/discogs_client_check
discogs_client version check
2023-03-10 21:56:48 -08:00
ghbrown
f1b7832d52 Change minimum discogs_client version to 2.3.15 2023-03-10 15:28:29 -06:00
J0J0 Todos
9bc6066517
Merge pull request #4699 from arogl/patch-2
Fix typo in beetsplug/deezer.py
2023-03-10 08:34:55 +01:00
Andrew Rogl
e33369d231
Fix typo in beetsplug/deezer.py
Found another typo
2023-03-10 17:28:52 +10:00
ghbrown
bad541e2c4 Address lint errors for discogs_client version check 2023-03-09 17:38:47 -06:00
ghbrown
566a58c8bb Edit changelog for discogs_client version check 2023-03-09 17:23:42 -06:00
ghbrown
437f6e76e4 Add warning about (python3-)discogs-client version 2023-03-09 17:16:11 -06:00
J0J0 Todos
8ec9f5a09b
Merge pull request #4696 from arogl/patch-1
Fix typo in deezer.py
2023-03-09 13:16:24 +01:00
Andrew Rogl
5662fef842
Fix type in deezer.py 2023-03-09 17:05:03 +10:00
J0J0 Todos
40d27f5522
Merge pull request #4633 from JOJ0/refactor_id_extraction
Refactor metadata source ID extraction utilities
2023-03-08 18:46:33 +01:00