Commit Graph

118 Commits

Author SHA1 Message Date
ShubhamBhut
6a3e7b083a PICARD-2716: Accept encodings other than utf-8 when opening CD extraction logs 2024-03-14 08:44:49 +01:00
Philipp Wolfer
3280370728 PICARD-2331: Remove get_qt_enum
As PyQt's enums are now proper Python enums this is no longer needed
2023-10-13 07:13:21 +02:00
Philipp Wolfer
7d55ae5e5d PICARD-2331: Upgrade to PyQt6 2023-10-13 07:10:06 +02:00
Laurent Monin
cf3013a353 Make get_qt_enum() a generator and extend tests 2023-10-02 14:02:10 +02:00
Philipp Wolfer
c965eff013 Additional tests for win_prefix_longpath 2023-09-26 15:13:10 +02:00
Philipp Wolfer
31a5d273de Use raw strings to avoid double backslashes in Windows path strings 2023-09-18 12:03:16 +02:00
Philipp Wolfer
d211e7464d PICARD-2756: Fix long path support for Windows UNC (network) paths 2023-09-18 12:03:16 +02:00
Philipp Wolfer
ddda49c6ff PICARD-2712: Fix sanitize date removing 0 values
Sanitize date cleared zero values in between, such turning "YYYY-00-DD"
into "YYYY-DD", which would be a completely different date.

Fix this by keeping empty values if they are not the last element.
2023-08-17 10:14:45 +02:00
Laurent Monin
944a92eecd Add an helper method to encode query arguments: encoded_queryargs() 2023-06-08 16:44:15 +02:00
Philipp Wolfer
cb339c6a4a PICARD-356: Allow user defined replacements for Windows incompatible characters 2022-12-05 17:08:56 +01:00
Laurent Monin
b12198189b Remove duplicated line in dict 2022-09-25 14:45:54 +02:00
Philipp Wolfer
bee8b569e3 Move detect_unicode_encoding function to picard.util
Extract the function from ripper log file handling and make it available in picard.util.
2022-09-25 12:14:51 +02:00
Philipp Wolfer
224096df0b PICARD-2520: Null bytes in tag values can cause crashes when sorting
strxfrm fails if a string contains a null char. Sanizize the input strings for strxfrm by removing any null chars.
2022-08-19 13:31:21 +02:00
Philipp Wolfer
277e943e5c PICARD-2506: Fixed calling fpcalc with long path filename
On Windows always add the long path prefix \\?\ if the path exceeds this limit, independent of the OS configuration for long path supports. This fixes ffmpeg currently not being able to handle long paths.

Added util method win_prefix_longpath() to help with that.
2022-06-26 18:13:58 +02:00
Philipp Wolfer
70b07bc570 PICARD-2454: Stop metadatabox updates while moving files 2022-04-09 18:26:59 +02:00
Philipp Wolfer
aaee5e4f37 PICARD-993: Have different error icons for different file errors
Separate icons for file not found, access denied and anything else
2022-03-12 10:28:42 +01:00
Philipp Wolfer
0ff523db9d PICARD-2076: Added tests for picard.util.system_supports_long_paths 2022-03-08 15:21:00 +01:00
Philipp Wolfer
718875177b PICARD-2076: Use Windows long path prefix only, if long paths are unsupported 2022-03-08 14:00:24 +01:00
Philipp Wolfer
c04f143274 PICARD-1570: Allow loading files with long paths on Windows 2022-03-07 11:18:49 +01:00
Philipp Wolfer
e1c6234dd7 Have find_best_match and sort_by_similarity accept any iterable 2022-02-17 08:18:26 +01:00
Philipp Wolfer
8b8593b546 PICARD-2414: Added some additional tests for tracknum_and_title_from_filename
Test some more real world examples and ignore cases like UB40 where a no. follows directly on alphanumeric characters.
2022-02-11 11:01:33 +01:00
Laurent Monin
2f6479747d Update headers 2022-02-07 09:41:57 +01:00
Philipp Wolfer
9e740c11a4 Omit standard ports in URLs constructed by build_qurl 2022-01-31 07:49:21 +01:00
Philipp Wolfer
76975ae108 Have album_artist_from_path strip the Windows drive letter 2021-11-23 19:24:10 +01:00
Laurent Monin
55eae2d5a4 find_best_match(): use max() instead of sort_by_similarity()
- drop unused `num_results` from `BestMatch` namedtuple
- use `max()` along its `key` and `default` arguments, it is much simpler and faster
2021-11-16 21:37:48 +01:00
Laurent Monin
14ce07756e Update Copyright headers, with the help of fix-headers.py script 2021-11-10 21:38:54 +01:00
Philipp Wolfer
a01f28d0c0 PICARD-2327: Detect hidden files on macOS 2021-11-10 08:02:50 +01:00
Philipp Wolfer
10caa13975 Add Windows specific unit test for util.is_hidden 2021-11-09 20:58:17 +01:00
Philipp Wolfer
cd559a1011 Extend wildcard to regex syntax with [...] set matching 2021-10-14 22:58:04 +02:00
Philipp Wolfer
f20da2d9aa Extend wildcard to regex syntax with ? and escape character 2021-10-14 22:58:03 +02:00
Bob Swift
e8aa0b3cd6 Add weighted script detector and multiple translation ignore options 2021-09-08 11:58:24 -06:00
Vladislav Karbovskii
7224961bc4 PICARD-157: Option to skip artist name translation for specific scripts
Add a dropdown to select a script for which artist translation will be skipped.

Co-authored-by: Laurent Monin <github@norz.org>
Co-authored-by: Bob Swift <bswift@rsds.ca>
2021-09-06 12:00:01 +02:00
Bob Swift
bfc0ac3ae5 Move make_filename_from_title to picard/util. Add tests. 2021-08-03 12:03:17 -06:00
Laurent Monin
ab54651438 Update headers 2021-06-03 13:20:42 +02:00
Laurent Monin
a4a6508b2f tracknum_and_title_from_filename(): return a named tuple 2021-06-03 13:02:46 +02:00
Philipp Wolfer
0209b5ed28 PICARD-2218: Support setting regex flags in $performer pattern 2021-06-02 23:18:45 +02:00
Philipp Wolfer
f94004763b Add picard.util.pattern_as_regex to parse string patterns as regular expressions
Replace the custom implementation of pattern parsing in TagGenreFilter with pattern_as_regex
2021-06-02 23:02:47 +02:00
Philipp Wolfer
ef62e311dd PICARD-1568: extended tests for tracknum_from_filename
Include most of the tests from test_tracknum.py. Changed a few tests as we got rid of the logic to choose the smallest of all numbers found.
2021-05-01 20:50:24 +02:00
Philipp Wolfer
19d973c36d PICARD-1568: Improve parsing track number from filenames
Avoid false positives, allow some common cases only instead of parsing all numbers.
2021-05-01 20:50:24 +02:00
Philipp Wolfer
ff58985305 PICARD-2171: Added tests for guessing tracknumber and title from filename 2021-04-28 10:51:58 +02:00
Philipp Wolfer
f845a10cac Use yield from syntax where appropriate 2021-01-15 19:21:08 +01:00
Philipp Wolfer
0d01615498 PICARD-2089: Support WebP for cover art images 2021-01-02 12:18:40 +01:00
Philipp Wolfer
c0e6243a13 PICARD-1926: Adjust test cases for new config structure 2020-12-25 12:37:15 +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
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
5e5535a21b Test for ID3 date format 2020-07-21 09:39:21 +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
Laurent Monin
6b5e852a60 Run fix-header on *.py 2020-02-24 10:25:09 +01:00
Laurent Monin
b5a97c9926 Merge pull request #1493 from zas/cov_cleanup
Coverage & cleanup
2020-02-24 00:34:49 +01:00