Commit Graph

711 Commits

Author SHA1 Message Date
Laurent Monin
efb03b03b4 Simplify default colors registration 2020-12-10 14:05:17 +01:00
Philipp Wolfer
b805bcccb2 Move iter_files_from_objects to picard.util 2020-12-03 14:57:13 +01:00
Philipp Wolfer
bab8447c8e Add a tagger.iter_files_from_objects method
Similar to get_files_from_objects, but uses an iterator instead of creating a list.
2020-12-03 11:51:21 +01:00
Philipp Wolfer
bbad105db5 Avoid emiting metadata_images_changed without changes 2020-12-02 09:06:01 +01:00
Philipp Wolfer
a54090a960 Let Track inherit from FileList
Unifies handling of objects with linked files. Simplifies code, e.g. cover art propagation to parent objects
2020-12-02 09:06:00 +01:00
Philipp Wolfer
13a56d65b7 Fixed unit tests for Python 3.5
Mock.assert_called_once() is only available in Python 3.6 and later
2020-11-30 10:12:03 +01:00
Philipp Wolfer
de31bf2984 Added tests for IgnoreSelectionContext 2020-11-30 09:47:31 +01:00
Wieland Hoffmann
1386f1db03 PICARD-2036: Add MultiMetadataProxy::pop to WRITE_METHODS 2020-11-29 19:53:51 +01:00
Philipp Wolfer
6728c8c48a PICARD-2019: Fix os.path.isabs not detecting Windows share correctly
Works around the issue that os.path.isabs detects a path like \\server\share not as absolute.
This can break file naming on Windows shares and result in recursive sub folders.

See also https://bugs.python.org/issue22302
2020-11-25 15:43:54 +01:00
Laurent Monin
11097d3b08 Create WinPathTooLong exception class based on OSError
Fix tests accordingly
2020-11-21 15:10:17 +01:00
Philipp Wolfer
de3ed42c40 PICARD-2014: Fix config upgrade from versions < 1.3.0 2020-11-15 16:39:22 +01:00
Philipp Wolfer
251b882f8a PICARD-1991: Ensure file name case changes on Linux
Apply workaround to ensure file name changes in case only also on Linux when using case insensitive file systems.
Unify the approaches for Windows and Linux. Apply the workaround only if necessary.
2020-10-31 13:15:18 +01:00
Philipp Wolfer
e1545bffca PICARD-1992: On Windows use win32api.GetLongPathNameW to get actual file name
Use win32api.GetLongPathNameW on Windows to get the actual file name with the casing as on disk.
2020-10-31 11:52:48 +01:00
Philipp Wolfer
d4af836d11 PICARD-1992: Force case-changing on file systems not supporting it
On some case sensitive, case preserving file systems a normal rename will not change the casing. Detect this case and workaround it by doing a double rename.
2020-10-31 11:52:47 +01:00
Philipp Wolfer
db2d25eefc Merge pull request #1660 from phw/PICARD-1974
PICARD-1974: Fix Tags From Filenames handling same tag multiple times
2020-10-16 16:43:11 +02:00
Philipp Wolfer
058c980c6d PICARD-1974: Parse multiple matches in Tags From Filenames as multivalue tags 2020-10-16 13:30:00 +02:00
Philipp Wolfer
f9d1d95b73 PICARD-1975: Allow parsing hidden tags in Tags From Filenames 2020-10-16 13:29:59 +02:00
Philipp Wolfer
06df904d9d PICARD-1974: Fix crash in Tags From Filenames
Fix crash in Tags From Filenames if same tag placeholder was used multiple times. Refactor the parsing and matching of the expression into separate class with tests.
2020-10-16 13:29:59 +02:00
Philipp Wolfer
53a2e3bb60 PICARD-1972: When matching files to tracks preserve track length (#1659)
PICARD-1972: Allow initializing Metadata with another Metadata object

If calling Metadata(other_metadata) make a full copy and don't just treat other_metadata as a dict.

Apart of making the API more intuitive this fixes issues with track metadata being not fully preserved when attaching files to tracks.
2020-10-16 13:27:10 +02:00
Philipp Wolfer
bbcd54ea27 PICARD-1390: Set webservice transfer timeout on config changes
Avoid reading the config on each request
2020-10-11 11:45:45 +02:00
Philipp Wolfer
ff2c62c024 PICARD-534: Add support for SOCKS proxy 2020-10-10 17:04:40 +02:00
Philipp Wolfer
957c921592 Merge pull request #1651 from phw/fix-clear-existing-tags
PICARD-259: Fix clear_existing_tags
2020-10-08 15:19:35 +02:00
Philipp Wolfer
c3ccd6a392 Make MultiMetadataProxy fully compatible with Metadata
Run the same test cases against both Metadata and MultiMetadataProxy
2020-10-07 17:48:24 +02:00
Philipp Wolfer
06508560f9 MultiMetadataProxy to combine multiple metadata objects 2020-10-06 20:04:52 +02:00
Philipp Wolfer
69b0d0e073 PICARD-1961: Keep instrument and other attributes spelling as is
This was introduced very eraly in d923c9a. Originally MB provided a more fixed list of instruments, with instrument names as attributes actually being camel cased.

This is no longer the case and instruments should now be used as given in the API response.
2020-10-05 10:43:52 +02:00
Philipp Wolfer
6b10e16ede PICARD-1951: Prevent complete hiding of metadata box or file panes 2020-09-27 22:43:16 +02:00
Philipp Wolfer
21d4f04029 PICARD-259: Preserve manual changes to tracks on matched files
Keep track of manual changes to a track's metadata and reapply them to matched files.
2020-09-22 09:34:27 +02:00
raingloom
5b37bfc33a Minor fix ID3 rename_txxx_tags test 2020-09-06 20:56:40 +02:00
Philipp Wolfer
75ec812f6b Avoid the terms "blacklist" and "whitelist" 2020-09-06 19:07:27 +02:00
Philipp Wolfer
81b88101eb Rename Whitelist cover art provider to UrlRelationships 2020-09-06 19:07:27 +02:00
Philipp Wolfer
da1acd36c2 Added missing test for config upgrade to v2.4.0b3 2020-09-05 18:30:11 +02:00
Laurent Monin
9aaa5c62a8 Merge pull request #1596 from zas/fix_pr_1891
PICARD-1891: handle incorrect date parsing exceptions
2020-07-21 13:19:24 +02:00
Laurent Monin
5e5535a21b Test for ID3 date format 2020-07-21 09:39:21 +02:00
Philipp Wolfer
615426449f PICARD-1894: Fix tracknumber detection from filename
Do not detect parts of longer numbers as track no., e.g. "Song 2015" must not be detected as track no. 15.
2020-07-21 09:37:24 +02:00
Laurent Monin
219b734569 PICARD-1891: handle incorrect date parsing exceptions
- catch exceptions in extract_year_from_date() and log them to debug
- return None if year cannot be extracted
- check for None in metadata.compare_to_release_parts() before trying to compare years

This isn't perfect, the function is called a lot of time and it spams debug log (if enabled)

Note: I removed a very old comment in imports that doesn't make any sense (it was introduced 6 years ago in 323d12892c) and it was making isort unhappy.
2020-07-20 17:41:46 +02:00
Philipp Wolfer
dd2acaf6ee PICARD-1892: Fixed deleting totaldiscs / totaltracks from Vorbis tags
Deleting failed if the file only contained disctotal or tracktotal tags, but not also totaldiscs or totaltracks.
2020-07-20 13:29:54 +02:00
Philipp Wolfer
048651fa41 Refactor script module into package 2020-07-19 21:30:56 +02:00
Laurent Monin
dc782a6b43 Fix spurious Restart Picard message about color changes
- detection of color changes was broken
- code cleanup
- added tests
2020-07-19 16:10:26 +02:00
dukeyin
cbc1bce030 Add unit test for "Use release relationships"
* Added a release-level producer to release.json because the existing release-artist relationships are not used in tagging
* Modified the existing release test to check that the producer tag is the release-level producer when "Use release relationships" is enabled
* Added a release test to check that the producer tag is empty when "Use release relationships" is disabled
2020-07-17 20:01:37 -04:00
dukeyin
f042928433 Don't use release relationships if they are disabled in metadata options 2020-07-17 19:57:37 -04:00
Philipp Wolfer
98b0f327b2 PICARD-1871: Use TagListEditor for preserved tags 2020-07-14 17:04:51 +00:00
Philipp Wolfer
3f9ad5a743 PICARD-1884: Fix tracknumber tag with value 0 not set 2020-07-14 17:03:30 +00:00
Philipp Wolfer
bbc3f1450f PICARD-1839: Support tagging DSDIFF (DFF) files with ID3 2020-07-14 07:41:15 +00:00
Philipp Wolfer
a2207df8ba PICARD-1853: Fix crash in natsort on superscript numeric chars 2020-06-25 18:18:12 +02:00
Philipp Wolfer
b0a01a99ac PICARD-1853: Fix natsort crashing on strings with '\0' 2020-06-23 20:18:05 +02:00
Philipp Wolfer
cbe88786a6 PICARD-1846: Do not raise KeyError in Metadata.unset 2020-06-19 14:47:03 +02:00
Philipp Wolfer
ddd9c9d4d9 Merge pull request #1555 from Gabrielcarvfer/Performance
PICARD-1844: Further improve loading and clustering performance
2020-06-19 08:37:57 +02:00
Gabriel Ferreira
e843b4f3ed Update statusbar with clustering progress 2020-06-18 14:33:57 -03:00
Philipp Wolfer
149e02c914 PICARD-1840: For instrumental recordings unset lyricist
Also set language to zxx ("No lyrics"), fixes PICARD-1117
2020-06-17 21:34:02 +02:00
Philipp Wolfer
8cea3807c0 PICARD-1820: Allow single digit versions like "2" to be parsed
A version 2 is equivalent to 2.0 or 2.0.0.
2020-06-08 18:22:32 +02:00