srdl

module
v0.4.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 15, 2025 License: MIT

README

srdl

srdl is a spiritual sibling to ytdl as well as ytdl-sub, but for Sveriges Radio (SR). That is, srdl allows you to easily archive programs from SR.

Features

  • Focused on performance
    • Zero runtime dependencies like ffmpeg
    • Virtually zero RAM or CPU usage
  • Metadata is written into downloaded audio files, compatible with Jellyfin, Audiobookshelf and others
  • Downloads include cover, backdrop and episode images
  • Throttling configuration for fair bandwidth

Getting started (srdl)

Running srdl on host
srdl program "https://sverigesradio.se/textochmusikmedericschuldt"
{
  "id": 4914,
  "name": "Text och musik med Eric Schüldt",
  "description": "En timme med den vackraste musiken ackompanjerad av poesi, filosofi och personliga reflektioner.",
  "programcategory": {
    "id": 5,
    "name": "Musik"
  },
  "broadcastinfo": "Söndag 11.00",
  "email": "textochmusik@sverigesradio.se",
  "phone": "",
  "programurl": "https://sverigesradio.se/default.aspx?programid=4914",
  "programslug": "textochmusikmedericschuldt",
  "programimage": "https://static-cdn.sr.se/images/4914/dd5ffd1e-5548-4f2e-87ea-0ab681a23855.jpg?preset=api-default-square",
  "programimagetemplate": "https://static-cdn.sr.se/images/4914/dd5ffd1e-5548-4f2e-87ea-0ab681a23855.jpg",
  "programimagewide": "https://static-cdn.sr.se/images/4914/74ebbeb2-9948-499b-9bc9-94cffd2d456a.jpg?preset=api-default-rectangle",
  "programimagetemplatewide": "https://static-cdn.sr.se/images/4914/74ebbeb2-9948-499b-9bc9-94cffd2d456a.jpg",
  "socialimage": "https://static-cdn.sr.se/images/4914/dd5ffd1e-5548-4f2e-87ea-0ab681a23855.jpg?preset=api-default-square",
  "socialimagetemplate": "https://static-cdn.sr.se/images/4914/dd5ffd1e-5548-4f2e-87ea-0ab681a23855.jpg",
  "socialmediaplatforms": [
    {
      "platform": "Facebook",
      "platformurl": "https://facebook.com/sverigesradioP2"
    },
    {
      "platform": "Twitter",
      "platformurl": "https://twitter.com/sverigesradioP2/"
    },
    {
      "platform": "Instagram",
      "platformurl": "https://instagram.com/sverigesradio_p2/"
    }
  ],
  "channel": {
    "id": 163,
    "name": "P2"
  },
  "archived": false,
  "hasondemand": true,
  "haspod": false,
  "responsibleeditor": "Pia Kalischer"
}
srdl episodes -program-id 4914
{
  "pagination": {
    "page": 1,
    "size": 5,
    "totalhits": 5,
    "totalpages": 1
  },
  "episodes": [
    {
      "id": 2522448,
      "title": "Carpe diem",
      "description": "Fånga dagen! Lev i nuet! Det handlar om några av vår tids största klichéer. Men även det utnötta kan bära på en stor sanning. Veckans program kretsar kring den mystiska, svårfångade tiden. Hitta ögonblicket och bli lycklig!",
      "url": "https://www.sverigesradio.se/avsnitt/2522448",
      "program": {
        "id": 4914,
        "name": "Text och musik med Eric Schüldt"
      },
      "audiopreference": "default",
      "audiopriority": "aac",
      "audiopresentation": "format",
      "publishdateutc": "/Date(1753002000000)/",
      "imageurl": "https://static-cdn.sr.se/images/4914/66c2ba27-da78-46e7-8d87-08242844af4c.jpg?preset=api-default-square",
      "imageurltemplate": "https://static-cdn.sr.se/images/4914/66c2ba27-da78-46e7-8d87-08242844af4c.jpg",
      "photographer": "Wikipedia",
      "broadcast": {
        "availablestoputc": "/Date(1755597540000)/",
        "broadcastfiles": [
          {
            "duration": 3540,
            "publishdateutc": "/Date(1753002000000)/",
            "id": 9841912,
            "url": "https://www.sverigesradio.se/topsy/ljudfil/srapi/9841912.html5desktop",
            "statkey": "/app/avsnitt/p2 musik[k(163)]/text och musik med eric schüldt[p(4914)]/[e(2522448)]"
          }
        ]
      },
      "broadcasttime": {
        "starttimeutc": "/Date(1753002000000)/",
        "endtimeutc": "/Date(1753005600000)/"
      },
      "channelid": 2562
    }
  ]
}
Running srdl using docker
docker run --rm \
  --volume "$PWD/output:/output" \
  --entrypoint srdl \
  ghcr.com/alexgustafsson/srdl:latest \
    program \
    "https://sverigesradio.se/textochmusikmedericschuldt"
docker run --rm \
  --volume "$PWD/output:/output" \
  --entrypoint srdl \
  ghcr.com/alexgustafsson/srdl:latest \
    download \
    --output /output/out.m4a \
    --episode-id 1234

Getting started (srdl-sub)

Running srdl-sub on host
srdl-sub \
  --config config/config.yaml \
  --subscriptions config/subscriptions.yaml
Running srdl-sub using docker
docker run --rm \
  --volume "$PWD/output:/output" \
  --volume "$PWD/examples:/config" \
  ghcr.com/alexgustafsson/srdl:latest \
    --config config/config.yaml \
    --subscriptions config/subscriptions.yaml
Output
output
└── Erik Schüldt
    └── Text och musik
        ├── Bland blåskummande blommor.m4a
        ├── Bland blåskummande blommor.png
        ├── Detta är skönheten.jpg
        ├── Detta är skönheten.m4a
        ├── En romantikers bekännelse.jpg
        ├── En romantikers bekännelse.m4a
        ├── Ensamheten.m4a
        ├── Ensamheten.png
        ├── backdrop.jpg
        └── cover.jpg
ffprobe version 7.1 Copyright (c) 2007-2024 the FFmpeg developers
  built with Apple clang version 16.0.0 (clang-1600.0.26.3)
  configuration: --prefix=/opt/homebrew/Cellar/ffmpeg/7.1 --enable-shared --enable-pthreads --enable-version3 --cc=clang --host-cflags= --host-ldflags='-Wl,-ld_classic' --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libaribb24 --enable-libbluray --enable-libdav1d --enable-libharfbuzz --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librav1e --enable-librist --enable-librubberband --enable-libsnappy --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtesseract --enable-libtheora --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libspeex --enable-libsoxr --enable-libzmq --enable-libzimg --disable-libjack --disable-indev=jack --enable-videotoolbox --enable-audiotoolbox --enable-neon
  libavutil      59. 39.100 / 59. 39.100
  libavcodec     61. 19.100 / 61. 19.100
  libavformat    61.  7.100 / 61.  7.100
  libavdevice    61.  3.100 / 61.  3.100
  libavfilter    10.  4.100 / 10.  4.100
  libswscale      8.  3.100 /  8.  3.100
  libswresample   5.  3.100 /  5.  3.100
  libpostproc    58.  3.100 / 58.  3.100
[aac @ 0x11df06150] Prediction is not allowed in AAC-LC.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output/Erik Schüldt/Text och musik/Detta är skönheten.m4a':
  Metadata:
    major_brand     : M4A
    minor_version   : 512
    compatible_brands: isomiso2
    title           : Detta är skönheten
    album           : Text och musik med Eric Schüldt
    description     : Vi söker efter den stora skönheten. Från medeltiden till en omvälvande tolkning av Mozarts operor. Det är facklan som ska lysa i bergen där luften är välsignelse, på tundran där himlen är melankoli. Det är claritas – klarhet och ljus med gud
    date            : 2024-10-13T09:00:00Z
  Duration: 00:59:00.00, start: 0.000000, bitrate: 96 kb/s
  Stream #0:0[0x1](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 96 kb/s (default)
      Metadata:
        handler_name    : SoundHandler
        vendor_id       : [0][0][0][0]

Building

Either build using go, or docker.

go build -o srdl cmd/srdl/*.go
go build -o srdl-sub cmd/srdl-sub/*.go
# Build for running the container
docker build -t ghcr.com/alexgustafsson/srdl:latest .

# Build inside the container, for running on host
DOCKER_BUILDKIT=1 docker build --target=export . --output .

Directories

Path Synopsis
cmd
srdl command
srdl-sub command
internal
mp4
sr

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL