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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file soma_songs-1.0.3.tar.gz.

File metadata

  • Download URL: soma_songs-1.0.3.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.8.2 CPython/3.11.3

File hashes

Hashes for soma_songs-1.0.3.tar.gz
Algorithm Hash digest
SHA256 8bebca51ef8becad3a223a08c79cedeaa5f52d26b04dbcadd72aeb7f4d57a45a
MD5 012c6cdece51b9d5bae0c09a81cc1d83
BLAKE2b-256 75ce060a2c9513ebf6d7fc345d507bdd89d66b272f2fd1682940ae62841f599e

See more details on using hashes here.

File details

Details for the file soma_songs-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: soma_songs-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: pdm/2.8.2 CPython/3.11.3

File hashes

Hashes for soma_songs-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ad3e9cb6287b7f57453428c6b14ad9742154d1def228f265d981ee36eb400157
MD5 3c58d3a6abc06dfb182e9e937bef8c4b
BLAKE2b-256 cce6e7efd4462751d034ab436e0d583b09e8c670bf117c83c065b274cd10cf31

See more details on using hashes here.

Supported by

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