music-analyze
Merges Yandex Music and SoundCloud likes into one list, cleans up re-uploads and ranks artists, albums and genres.
- Python
- MusicBrainz
- Last.fm
- HTML
Search “tramvai” or “lagoon”, roll a random track, open a row
everything you liked on Yandex Music and SoundCloud, piled up and counted
- Tracks
- 4,255
- Likes
- 4,684 before merge
- Duplicates merged
- 429
- Artists
- 1,585
- Genres
- 246
- Hours of music
- 226
Who’s on top
By number of liked tracks. Click a row to spill all its tracks.
Which albums
By number of liked tracks from the album. The album is known for 81% of tracks: Yandex almost always has it, SoundCloud only when the uploader kept the tags. 502 albums have more than one liked track.
What you live on
Tags from MusicBrainz and Last.fm, not whatever the uploader typed.
How the taste changed
Each track counts once, by the year you first liked it. Click a column to filter everything above.
2023639 tr.
- 1Tin Lagoon18
- 2Moth Lantern15
- 3Velvet Static12
- 4Полярная Ночь10
- 5Hollow Saints9
- 6Wraith Garden8
2024812 tr.
- 1Полярная Ночь14
- 2Moth Lantern14
- 3Tin Lagoon12
- 4Velvet Static10
- 5Северный Ветер9
- 6Kestrel Unit9
2025851 tr.
- 1Полярная Ночь16
- 2Tidepool Radio14
- 3Северный Ветер12
- 4Kestrel Unit11
- 5Tin Lagoon10
- 6Лунный Трамвай9
20261,953 tr.
- 1Северный Ветер26
- 2Полярная Ночь24
- 3Лунный Трамвай21
- 4Tidepool Radio20
- 5Kestrel Unit18
- 6Tin Lagoon18
What lives where
How many tracks live on one platform only, and how many on both.
How it’s counted
Where the data comes from
Likes are taken straight from a logged-in session: SoundCloud via api-v2, Yandex via api.music.yandex.ru. No passwords or tokens are stored.
Cleaning re-uploads
[FREE DL], (prod. by …), @mentions, #tags and track numbers are stripped from titles. The artist comes from ID3, then from the “Artist — Track” pattern, and only last from the account name.
Restoring authorship
If a track was still credited to a blog, its title was checked against a dictionary of artists from trusted metadata, by whole words, or “ROT” would grab “Rotation”.
Merging platforms
One track if the title is close, an artist matches and the length differs by 7 seconds at most. “Полярная Ночь” and “POLYARNAYA NOCH” are one artist. A remix stays a separate track.
Genres
Tags from MusicBrainz and Last.fm by canonical name; Deezer and iTunes as backup. The platform’s own “genre” comes last.
Colours
Bar colours are just stickers. Length and the number beside it carry the value, not colour.
- My role
- Data collection, cleaning, report
- Year
- 2026
- Likes
- 4,684
- Duplicates merged
- 429
What it does
- Likes from two platforms in one list
- Duplicate tracks are merged
- Genres from MusicBrainz and Last.fm
- A report with search and filters
How it’s built
- Python, no third-party libraries
- Junk in titles is removed by rules, not by hand
- External service responses are cached
Worth knowing
- A personal tool, not a service
- Yandex is read from an open browser session
- No repository yet
Discuss a similar project
Need something like this? Write to me and I’ll tell you how long it will take.