beetbox / beetbox/beets

Update does nothing

Open
#5,844 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
15.7k
Forks
2.1k
Avg merge
4d 21h
Merged PRs (30d)
31

Description

When running beet update the database doesnt get updated - changes are listed, but running update again yields the same output.

### Problem

Running upd in verbose (`-vv`) mode showed no errors (example):

```
skipping /mnt/Music/processed/MEGAREX/[M3-43] MEGAREX — TECHCORE EVANGELIX 01 {MRX-036}/2-30. YUKIYANAGI — want to change.flac because mtime is up to date (1751014406.0)
YUKIYANAGI - TECHCORE EVANGELIX 02 - Complex Mind
genre: UK Hardcore -> Techcore
Sending event: database_change
skipping /mnt/Music/processed/MEGAREX/[C98] MEGAREX — Tribal Frontier {MRX-063}/1-3. YUKIYANAGI — My Ritual.flac because mtime is up to date (1751014328.0)
...
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: cli_exit
```

Yet running the update again shows no changes, although the database file was modified.

### Setup

* OS: Arch Linux
* Python version: 3.11.13 (pipx)
* beets version: 2.3.1
* Turning off plugins made problem go away (yes/no): no

My configuration (output of `beet config`) is:

```yaml
directory: /mnt/Music/processed
# --------------- Main ---------------

library: ~/.config/beets/library.db

import:
copy: no
write: yes
move: yes
pluginpath: [/home/jakka/dotfiles/beets/beetsplugins/]

# --------------- Plugins ---------------

plugins: chroma fromfilename mbsync badfiles fish mbsubmit inline event extrafiles missing duplicates
musicbrainz:
extra_tags:
- year
- catalognum
- country
- media
- label
external_ids:
bandcamp: yes
genres: no
host: localhost:5000
https: no
ratelimit: 1000
chroma:
auto: yes
acoustid:
apikey: REDACTED
item_fields:
disc_and_track: u'%01i-%01i' % (disc, track)
paths:
default: "%if{$label,$label,$albumartist}/$event_pretty%if{$label,$albumartist \u2014 ,}$album%if{$catalognum, {$catalognum$}, {[none]$}}%aunique{albumartist album catalognum, media}/$disc_and_track. %if{$artist_credit,$artist_credit,$artist} \u2014 $title"
comp: "%if{$label,$label,Various Artists}/$event_pretty$album%if{$catalognum, {$catalognum$}, {[none]$}}%aunique{album catalognum, media}/$disc_and_track. %if{$artist_credit,$artist_credit,$artist} \u2014 $title"
badfiles:
check_on_import: yes
extrafiles:
patterns:
all: '*'
paths:
all: $albumpath/$filename
mbsubmit:
format: $track. $title - $artist ($length)
threshold: medium
picard_path: picard
missing:
count: no
total: no
album: no
duplicates:
album: no
checksum: ''
copy: ''
count: no
delete: no
format: ''
full: no
keys: []
merge: no
move: ''
path: no
tiebreak: {}
strict: no
tag: ''
pathfields: {}
album_fields: {}
```

im also using my own plugin for reading and using custom event tag:
```python
from beets.plugins import BeetsPlugin
import mediafile

class doujin_event(BeetsPlugin):
def __init__(self):
super().__init__()
field = mediafile.MediaField(
mediafile.MP3DescStorageStyle(u'event'),
mediafile.StorageStyle(u'event')
)
self.add_media_field('event', field)
self.template_fields['event_pretty'] = _tmpl_event

def _tmpl_event(item):
if item['event']:
return '[' + item['event'] + '] '
else:
return ''
```

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the issue with `beet update -vv` using the provided configuration and plugin list, then compare the database state and output from a second run. Trace the `beet update` entry point and the `database_change` events; done means the reported changes persist in the database and the next update no longer reports them.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli, database
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.