Skip to content

Instantly share code, notes, and snippets.

@leo60228
Last active May 15, 2025 17:30
Show Gist options
  • Save leo60228/74434d809f2d76f6e4f57c77e41f0be1 to your computer and use it in GitHub Desktop.
Save leo60228/74434d809f2d76f6e4f57c77e41f0be1 to your computer and use it in GitHub Desktop.
import mpd
import re
import mimetypes
import pylistenbrainz
import sys
from io import BytesIO
start = 1731000000
client = mpd.MPDClient()
client.connect("localhost", 6600)
listens = []
for i, song in enumerate(client.playlistinfo()):
listens.append(pylistenbrainz.Listen(track_name=song['title'], artist_name=song['artist'], release_name=song['album'], listened_at=start + 5000 * i))
client.disconnect()
listenbrainz = pylistenbrainz.ListenBrainz()
listenbrainz.set_auth_token(sys.argv[1])
response = listenbrainz.submit_multiple_listens(listens)
print(response)
import mpd
import re
import mimetypes
import pylistenbrainz
import sys
import json
from io import BytesIO
start = 1731000000
end = 1732000000
listenbrainz = pylistenbrainz.ListenBrainz()
listenbrainz.set_auth_token(sys.argv[1])
client = mpd.MPDClient()
client.connect("localhost", 6600)
listens = []
for x in range(2):
new = start + x * 100 * 5000
chunk = listenbrainz.get_listens(sys.argv[2], min_ts=new - 2000, max_ts = end - 10000, count=100)
print(f'chunk {len(chunk)}')
listens.extend(chunk)
print(len(listens))
print(len(client.playlistinfo()))
listens.sort(key=lambda x: x.listened_at)
for i, song in enumerate(client.playlistinfo()):
listen = listens[i]
assert song['title'] == listen.track_name
msid = listen.additional_info['recording_msid']
if 'musicbrainz_trackid' not in song:
print(song['title'])
continue
mbid = song['musicbrainz_trackid']
data = json.dumps({'recording_msid': msid, 'recording_mbid': mbid})
headers = {
'Content-Type': 'application/json',
}
print(song['title'] + f' / {msid} => {mbid}')
listenbrainz._post('/1/metadata/submit_manual_mapping', headers=headers, data=data)
client.disconnect()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment