-
-
Save ivan/411e75128eb22f4a278a87f98a58ef74 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash | |
# Download a podcast episode from anchor.fm | |
# | |
# Usage: | |
# grab-anchor-episode "https://anchor.fm/emerge/episodes/Robert-MacNaughton---Learnings-from-the-Life-and-Death-of-the-Integral-Center-e31val" # (m4a example) | |
# grab-anchor-episode "https://anchor.fm/free-chapel/episodes/Are-You-Still-In-Love-With-Praise--Pastor-Jentezen-Franklin-e19u4i8" # (mp3 example) | |
# | |
# anchor.fm serves a list of m4a or mp3 files that need to be concatenated with ffmpeg. | |
# | |
# For debugging, uncomment: | |
# set -o verbose | |
set -eu -o pipefail | |
url=$1 | |
json=$(curl -sL "$url" | grep -P -o 'window.__STATE__ = .*' | cut -d ' ' -f 3- | sed -r 's/;$//g') | |
ymd=$(echo -E $json | jq -r '.episodePreview.publishOn' | cut -d 'T' -f 1) | |
extension=$((echo -E $json | jq -r '.[].episodeEnclosureUrl' | grep -F --max-count=1 :// | grep -oP '\.[0-9a-z]+$' | cut -d . -f 2) || echo m4a) | |
output_basename=$ymd-$(basename -- "$url").$extension | |
if [[ -f "$output_basename" ]]; then | |
echo "$output_basename already exists; skipping download" | |
exit | |
fi | |
temp_dir="$(mktemp -d)" | |
cd "$temp_dir" | |
audio_urls=$(echo -E $json | jq -r '.station.audios|map(.audioUrl)|.[]') | |
for i in $audio_urls; do | |
output_file=$(basename -- "$i") | |
wget "$i" -O "$output_file" | |
echo "file '$output_file'" >> .copy_list | |
done | |
ffmpeg -f concat -safe 0 -i .copy_list -c copy "$output_basename" | |
cd - | |
mv "$temp_dir/$output_basename" ./ | |
rm -rf "$temp_dir" |
With the help of a friend, I've managed to modify the script so that it works again (at least for my purposes). I've forked it here: https://gist.github.com/viocar/a6b6a0f485b3f400b8bcb0f8334b454d
@ivan the script downloaded the audio files fine. Sometimes it didn't convert to mp3 but wasn't really an issue for me. I had a task to download all of the recordings for anchor podcast I manage and needed a quick way to download all of them which is why I made the modification
@viocar I notice a space in your URL but I assume it wasn't like this when you tried to run the script?
No, I tried several URLs that I copied directly from my browser. I'm not sure why there's a space in my post.
Please any one could suggest me script code for tracking anchor.fm podcast audio in Tag Manager tools ?
Where can I change the output location, sorry, I am new to linux
This seems to have stopped working at some point. I have the latest version, and anything I try to download, even the provided examples, just results in
.copy_list: No such file or directory
.The command I used:
bash grab-anchor-episode.sh "https://anchor.fm/emerge/episodes/Robert-MacNaughton---Learnings-fr om-the-Life-and-Death-of-the-Integral-Center-e31val"