39 Commits

Author SHA1 Message Date
Deluan
9da9d73c1d Don't panic when taglib returns an error 2021-05-31 18:26:46 -04:00
Deluan
cd242695ba Foundational work to enable multi-valued tags 2021-05-31 18:08:12 -04:00
Deluan
fa0e6dda5b Remove C++11 warning in macOS 2021-05-14 16:03:11 -04:00
Deluan
e047008f7d Fix test 2021-05-14 15:38:28 -04:00
Deluan
3cac00ad13 Upgrade TagLib to 1.12 2021-05-14 14:31:07 -04:00
Brian Schrameck
30bb3f7b43
BPM metadata enhancement (#1087)
* BPM metadata enhancement

Related to #1036.

Adds BPM to the stored metadata about MediaFiles.

Displays BPM in the following locations:
- Listing songs in the song list (desktop, sortable)
- Listing songs in playlists (desktop, sortable)
- Listing songs in albums (desktop)
- Expanding song details

When listing, shows a blank field if no BPM is present. When showing song details, shows a question mark.

Updates test MP3 file to have BPM tag. Updated test to ensure tag is read correctly.

Updated localization files. Most languages just use "BPM" as discovered during research on Wikipedia. However, a couple use some different nomenclature. Spanish uses PPM and Japanese uses M.M.

* Enhances support for BPM metadata extraction

- Supports reading floating point BPM (still storing it as an integer) and FFmpeg as the extractor
- Replaces existing .ogg test file with one that shouldn't fail randomly
- Adds supporting tests for both FFmpeg and TagLib

* Addresses various issues with PR #1087.

- Adds index for BPM. Removes drop column as it's not supported by SQLite (duh).
- Removes localizations for BPM as those will be done in POEditor.
- Moves BPM before Comment in Song Details and removes BPM altogether if it's empty.
- Omits empty BPM in JSON responses, eliminating need for FunctionField.
- Fixes copy/paste error in ffmpeg_test.
2021-05-05 21:35:01 -04:00
Deluan
b478b0af02 FIx ffmpeg output regex too rigid 2021-05-03 21:26:44 -04:00
Deluan
c3316e201e Fix cover art detection with ffmpeg 4.4 2021-05-03 20:25:31 -04:00
whorfin
20d2726faa
Improve scanner (#1054)
* Handle subdirectories without rx permission correctly
Allow ogg files w/o metadata, having taglib behave more like ffmpeg

* Fix test for walk_dir_tree, fix full reading of files in permission-
constrained directories, allow directories with leading ellipses

* Sorted directory traversal is preferred, and cleanup tests

* Small refactoring to clean-up `loadDir` function and to remove some "warnings" from IntelliJ

Co-authored-by: Deluan <deluan@navidrome.org>
2021-04-28 19:51:02 -04:00
Deluan
c33c71ae6d Comment out flaky tests 2021-03-22 09:52:29 -04:00
Deluan
6ee45a9ccc Move project to Navidrome GitHub organization 2021-02-06 21:46:35 -05:00
Deluan
7c23bd0890 Fix log message, as it is also used for taglib 2020-12-25 12:45:38 -05:00
Deluan
ea2f94658a Error should always be nil 2020-12-20 13:28:33 -05:00
Deluan
7efc32d136 Ignore "Cover (front)" tag when using ffmpeg extractor 2020-11-12 23:17:06 -05:00
Deluan
98af68ac99 Import comments and lyrics 2020-11-11 10:43:17 -05:00
Deluan
aee4eb71c4 Add support for multi-line tags 2020-11-11 09:45:46 -05:00
Deluan
714100e24b Remove old TODO 2020-11-09 19:50:14 -05:00
Deluan
4d6c9482ff Recover from panic when reading invalid id2 tags
Workaround for #596
2020-10-30 09:53:38 -04:00
Deluan
b5e20c1934 Ignore invalid MBIDs (ex: discogs IDs) 2020-10-20 17:45:32 -04:00
Deluan
6663c079e0 Add MBIDs to media_file, album and artist 2020-10-20 16:27:22 -04:00
Deluan
26d2af17a3 Fix read DISCNUMBER as a DiscNumber tag in ffmpeg extractor 2020-10-06 17:06:47 -04:00
Fernando Rios
80b8b69cee Fix compilation of C++ code on certain linux systems 2020-09-26 13:08:28 -04:00
Deluan
afe5a5b32a Fix extracting tags with spaces in the tagname ("Ex: Album Artist") 2020-09-22 14:42:36 -04:00
Deluan
caeff2862a Remove dependency on C++17 2020-09-10 15:16:47 -04:00
Deluan
a3ecc41e47 Change taglib extractor log level to trace 2020-09-08 13:33:07 -04:00
Deluan
4d18212f5d Extract all id3 frames from file 2020-09-08 13:33:07 -04:00
Deluan
5dea258058 Extract basic tags, as a fallback 2020-09-08 13:33:07 -04:00
Deluan
0802ab73d7 Trim tag value, not tag key 2020-09-08 13:33:07 -04:00
Deluan
865b9cd545 Trim spaces from tags 2020-09-08 13:33:07 -04:00
Deluan
e70ec53983 Rewrite taglib integration, now with TCMP 2020-09-08 13:33:07 -04:00
Deluan
2d0031f709 Parse more date formats 2020-09-08 13:33:07 -04:00
Deluan
78ecda5239 Get the first occurrence of multi-valued tags 2020-09-08 13:33:07 -04:00
Deluan
a1879ff871 Reorganize tests 2020-09-08 13:33:07 -04:00
Deluan
34eda3c8fc Add config option to select tag extractor (taglib, ffmpeg) 2020-09-08 13:33:07 -04:00
Deluan
506899b083 Add more fallback options for main tags 2020-09-08 13:33:07 -04:00
Deluan
3a4e2523dd Fix possible concurrency issue 2020-09-08 13:33:07 -04:00
Deluan
58a0c44600 Embed audiotags lib, to make it static compilable 2020-09-08 13:33:07 -04:00
Deluan
df4328819d Initial implementation of taglib MetadataExtractor 2020-09-08 13:33:07 -04:00
Deluan
1187ee7cc1 Moved Metadata Extraction to its own package 2020-09-08 13:33:07 -04:00