Skip to main content

Save song data from somafm.com as JSON

Project description

Soma Songs

pdm-managed Code style: black PyPI: Python Version

Save songs from https://somafm.com as JSON.

How does it work?

Most somafm radiostations publish their tracklist. F.e. the police scanner-channel doesn't, while def con radio does. But this overview only includes the last hour(s) and is not easily machine-readable.

So why not archive this for all the channels, all the time, clean up the data a little bit and make it more useable?

  • results are stored in a tinydb, well, two, actually, these are just JSON files
  • the timestamp also includes a date and has a timezone annotation. Btw., if you want to get into the details: https://somafm.com is based in San Francisco, the IANA time zone identifier is America/Los_Angeles. Currently they use PDT (Pacific Daylight Time), which is UTC-7. PST (Pacific Standard Time) would be UTC-8.
  • the somafm amazon links are not relative anymore and are also included to support https://somafm.com

How do you use/run this?

Well, you don't have to :) because I already created inktrap/somafm-json which contains the output.

But you can, by:

pipx install somafm-songs

If you call somafm-songs you'll see that ~/somafm-json/meta.json contains the channel meta data and ~/somafm-json/music.json contains tracks/songs.

If you want to keep your results in git and push them to a remote you have to turn that directory into a git repository with a remote and create a cron-job which does (and is allowed to do) the git commit/push spiel. I haven't tested this yet, but a cronjob like this could work:

30 * * * * /path/to/soma-songs -q && cd ~/somafm-json && git commit -am $(date) && git push

Thanks to somafm and to all the amazing DJ(ane)s :)

What can you do with this?

You get a nice archive of great radio channels, what else do you want? Well, you could:

  • train your own music recommendation tool for each channel, just for fun https://github.com/mattmurray/music_recommender
  • match albums/artists with musicbrainz-identifiers to find more info
  • look for overlap/similarity of channels
  • create your own rankings (per channel/artist/genre/year/…)
  • you could check for each channel how many artists/albums/songs are in your beets library (maybe adjust for popularity?!)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

soma_songs-1.0.3.tar.gz (6.4 kB view hashes)

Uploaded Source

Built Distribution

soma_songs-1.0.3-py3-none-any.whl (7.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page