beets/beetsplug
henry 0bf248d355
Add custom feat words for ftintitle (#6090)
## Description

For non English tracks (Swedish in my case) feat. words might be
something that ftintitle doesn't pick up.
Eg. for the song `Promoe med Afasi - Inflation`
[https://musicbrainz.org/recording/8e236347-61d6-4e11-9980-52f4cc6b905f](https://musicbrainz.org/recording/8e236347-61d6-4e11-9980-52f4cc6b905f)
the word `med` is `feat.` in Swedish.
With this PR you can add what ever word you wish to match as feat. so it
should cover any kind of language.

The config.yaml could look like this:
ftintitle:
  custom_feat_words: ["med"]

## To Do

<!--
- If you believe one of below checkpoints is not required for the change
you
are submitting, cross it out and check the box nonetheless to let us
know.
  For example: - [x] ~Changelog~
- Regarding the changelog, often it makes sense to add your entry only
once
reviewing is finished. That way you might prevent conflicts from other
PR's in
that file, as well as keep the chance high your description fits with
the
  latest revision of your feature/fix.
- Regarding documentation, bugfixes often don't require additions to the
docs.
- Please remove the descriptive sentences in braces from the enumeration
below,
  which helps to unclutter your PR description.
-->

- [x] Documentation. (If you've added a new command-line flag, for
example, find the appropriate page under `docs/` to describe it.)
- [x] Changelog. (Add an entry to `docs/changelog.rst` to the bottom of
one of the lists near the top of the document.)
- [x] Tests. (Very much encouraged but not strictly required.)
2025-10-14 20:38:02 -07:00
..
_utils Move vfs.py to beetsplug._utils package to avoid polluting core namespace (#6017) 2025-10-01 12:28:18 +02:00
bpd Move vfs.py to beetsplug._utils package to avoid polluting core namespace (#6017) 2025-10-01 12:28:18 +02:00
lastgenre Add prefix to log messages for genre fetching in LastGenrePlugin 2025-09-21 07:07:14 +02:00
metasync Replace logging f-strings with arguments 2025-08-30 23:10:21 +01:00
web Do not use explicit indices for logging args when not needed 2025-08-30 23:10:21 +01:00
_typing.py Resurrect translation functionality 2025-02-20 03:47:04 +00:00
absubmit.py Do not use backslashes to deal with long strings 2025-08-30 23:10:20 +01:00
acousticbrainz.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
advancedrewrite.py refactor: convert _types from class attributes to cached properties 2025-07-16 14:45:25 +01:00
albumtypes.py Move musicbrainz to beetsplug directory 2025-05-16 19:56:50 +01:00
aura.py Replace string concatenation (' + ') 2025-08-30 23:10:15 +01:00
autobpm.py Fix plugin types 2025-07-16 14:06:34 +01:00
badfiles.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
bareasc.py Do not assign args to query 2025-07-08 11:37:34 +01:00
beatport.py Remove redundant source_weight defaults 2025-10-10 20:36:33 +01:00
bench.py Move vfs.py to beetsplug._utils package to avoid polluting core namespace (#6017) 2025-10-01 12:28:18 +02:00
bpm.py Do not use explicit indices for logging args when not needed 2025-08-30 23:10:21 +01:00
bpsync.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
bucket.py Replace string concatenation (' + ') 2025-08-30 23:10:15 +01:00
chroma.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
convert.py Add option to not write metadata 2025-09-24 21:52:57 -04:00
deezer.py Limit search query results using request parameters 2025-09-01 04:36:54 +01:00
discogs.py Remove redundant source_weight defaults 2025-10-10 20:36:33 +01:00
duplicates.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
edit.py Replace format calls with f-strings 2025-08-30 18:42:26 +01:00
embedart.py New import location for art.py 2025-09-21 08:01:48 -07:00
embyupdate.py Replace logging f-strings with arguments 2025-08-30 23:10:21 +01:00
export.py Do not use explicit indices for logging args when not needed 2025-08-30 23:10:21 +01:00
fetchart.py Fixed plugin typehints: use actual logger class. 2025-09-30 13:37:51 +02:00
filefilter.py Reformat the codebase 2024-09-21 11:57:48 +01:00
fish.py Replace string concatenation (' + ') 2025-08-30 23:10:15 +01:00
freedesktop.py Reformat the codebase 2024-09-21 11:57:48 +01:00
fromfilename.py Improve regexp and module docstring 2025-09-30 15:46:26 +02:00
ftintitle.py remove feat from custom_feat_words 2025-10-12 22:40:27 +02:00
fuzzy.py Reformat the codebase 2024-09-21 11:57:48 +01:00
gmusic.py Apply formatting tools to all files 2023-10-22 09:53:18 +10:00
hook.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
ihate.py Do not use explicit indices for logging args when not needed 2025-08-30 23:10:21 +01:00
importadded.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
importfeeds.py Do not use explicit indices for logging args when not needed 2025-08-30 23:10:21 +01:00
info.py Do not use explicit indices for logging args when not needed 2025-08-30 23:10:21 +01:00
inline.py Do not use explicit indices for logging args when not needed 2025-08-30 23:10:21 +01:00
ipfs.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
keyfinder.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
kodiupdate.py Do not use explicit indices for logging args when not needed 2025-08-30 23:10:21 +01:00
lastimport.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
limit.py Do not assign args to query 2025-07-08 11:37:34 +01:00
listenbrainz.py Removed data source as listenbrainz is not an metadata source plugin. 2025-09-04 17:41:12 +02:00
loadext.py Use only plugins/disabled_plugins config in plugin loading 2025-08-09 15:11:58 +01:00
lyrics.py Fixed plugin typehints: use actual logger class. 2025-09-30 13:37:51 +02:00
mbcollection.py Do not use explicit indices for logging args when not needed 2025-08-30 23:10:21 +01:00
mbsubmit.py Replace logging f-strings with arguments 2025-08-30 23:10:21 +01:00
mbsync.py Renamed import in mbsync and missing plugins. 2025-07-15 15:03:14 +02:00
missing.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
mpdstats.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
mpdupdate.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
musicbrainz.py Limit search query results using request parameters 2025-09-01 04:36:54 +01:00
parentwork.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
permissions.py Apply formatting 2024-03-01 15:21:25 +10:00
play.py Replace string concatenation (' + ') 2025-08-30 23:10:15 +01:00
playlist.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
plexupdate.py Replace string concatenation (' + ') 2025-08-30 23:10:15 +01:00
random.py Do not assign args to query 2025-07-08 11:37:34 +01:00
replace.py Feat: Add replace plugin (#5644) 2025-05-27 00:17:52 +02:00
replaygain.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
rewrite.py Do not use explicit indices for logging args when not needed 2025-08-30 23:10:21 +01:00
scrub.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
smartplaylist.py Do not use explicit indices for logging args when not needed 2025-08-30 23:10:21 +01:00
sonosupdate.py Apply formatting tools to all files 2023-10-22 09:53:18 +10:00
spotify.py Remove potentially expensive item.get() calls 2025-10-01 17:48:41 -04:00
subsonicplaylist.py Replace string concatenation (' + ') 2025-08-30 23:10:15 +01:00
subsonicupdate.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
substitute.py Apply substitute rules in sequence 2024-10-16 16:36:36 +02:00
the.py Do not use explicit indices for logging args when not needed 2025-08-30 23:10:21 +01:00
thumbnails.py Delegate attribute access to logging 2025-08-30 23:10:21 +01:00
types.py Replace format calls with f-strings 2025-08-30 18:42:26 +01:00
unimported.py Replace string concatenation (' + ') 2025-08-30 23:10:15 +01:00
zero.py Remove tests. Update docs. Remove unnecessary return 2025-10-14 03:17:34 +01:00