Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save jijo1/81ca5b3510470f6081f39650efdfb0f5 to your computer and use it in GitHub Desktop.
Save jijo1/81ca5b3510470f6081f39650efdfb0f5 to your computer and use it in GitHub Desktop.
Generate di.fm premium account and playlist. Also supports radiotunes.com (ex sky.fm) and jazzradio.com.
#!/bin/bash
AGENT="AudioAddict-di/1.4.7 iOS/8.1"
COOKIES="./cookies.txt"
AUTH="ephemeron:dayeiph0ne@pp"
DOMAIN=gmail.com
PLAYLISTDI="di.fm.m3u"
PLAYLISTSKY="sky.fm.m3u"
PLAYLISTJAZZ="jazzradio.m3u"
PLAYLISTROCK="rockradio.m3u"
PLAYLISTCLASSICAL="classicalradio.m3u"
JSONDI="http://listen.di.fm/premium_high.json"
JSONSKY="http://listen.sky.fm/premium_high.json"
JSONJAZZ="http://listen.jazzradio.com/premium_high.json"
JSONROCK="http://listen.rockradio.com/premium_high.json"
JSONCLASSICAL="http://listen.classicalradio.com/premium_high.json"
function rndsleep()
{
sleep .$[ ( $RANDOM % 4 ) + 1 ]s
}
function playlist()
{
playlistfile="$1"
jsonurl="$2"
radioname="$3"
echo "#EXTM3U" > "$playlistfile"
json=$(curl -s "$jsonurl")
nlinks=$(echo "$json" | jshon -l)
num=$(($nlinks-1))
for i in $(seq 0 $num); do
name=$(echo $json | jshon -e $i -e name -u)
playlist=$(echo $json | jshon -e $i -e playlist -u)
json2=$(curl -s $playlist)
playlist2=$(echo $json2 | grep -o -P '(?<=File1=).*(?= Title1)')
echo "#EXTINF:0, $name" >> "$playlistfile"
echo $playlist2?$listen_key >> "$playlistfile"
j=$((i+1))
echo "$j.- $playlist2"
done
echo "$nlinks channels from $radioname written to $playlistfile playlist"
echo ""
}
# check for jshon
which jshon >/dev/null || (echo "install jshon first"; exit 1) || exit 1
# check for pwgen
which pwgen >/dev/null || (echo "install pwgen first"; exit 1) || exit 1
# check for curl
which curl >/dev/null || (echo "install curl first"; exit 1) || exit 1
# generate identity and password
login=$(pwgen -0 $[ ( $RANDOM % 2 ) + 6 ] 1 | tr [A-Z] [a-z])
lastname=$(pwgen -0 $[ ( $RANDOM % 4 ) + 8 ] 1 | tr [A-Z] [a-z])
pass=$(pwgen -0 $[ ( $RANDOM % 2 ) + 6 ] 1 | tr [A-Z] [a-z])
# register
curl -b $COOKIES -c $COOKIES -s -u $AUTH --request POST 'https://api.audioaddict.com/v1/di/members' --user-agent "$AGENT" \
--data-urlencode "member[first_name]=$login" --data-urlencode "member[last_name]=$lastname" \
--data-urlencode "member[password_confirmation]=$pass" --data-urlencode "member[password]=$pass" --data-urlencode "member[email]=$login@$DOMAIN" >/dev/null
rndsleep
# get csrf-token
csrf_token=$(curl -s --request GET "https://www.di.fm/login" | awk -F'<input name="authenticity_token" type="hidden" value="' '{ print $2 }' | awk -F'"' '{ print $1 }'| sed '/^$/d')
rndsleep
# login
curl -c $COOKIES -s --request POST "https://www.di.fm/login" --user-agent "$AGENT" \
--data "utf8=%E2%9C%93" --data-urlencode "authenticity_token=$csrf_token" \
--data-urlencode "member_session[username]=$login@$DOMAIN" --data-urlencode "member_session[password]=$pass" \
--data-urlencode "member_session[remember_me]=0" >/dev/null
rndsleep
# subscribe to 7 day premium trial
curl -b $COOKIES -c $COOKIES -s --request GET "http://www.di.fm/member/premium/trial/activate" \
--user-agent "$AGENT" >/dev/null
rndsleep
#login again
json=$(curl -b $COOKIES -c $COOKIES -s -u $AUTH --request POST "https://api.audioaddict.com/v1/di/members/authenticate" --user-agent "$AGENT" \
--data-urlencode "username=$login@$DOMAIN" --data-urlencode "password=$pass")
# set envs
api_key=$(echo "$json" | jshon -e api_key -u)
listen_key=$(echo "$json" | jshon -e listen_key -u)
id=$(echo "$json" | jshon -e id)
activated=$(echo "$json" | jshon -e activated)
echo "activated $activated"
echo "listen_key $listen_key"
echo "api_key $api_key"
echo "id $id"
echo "login $login@$DOMAIN"
echo "password $pass"
# comment out these if you don't need playlists
playlist "$PLAYLISTDI" "$JSONDI" di.fm
playlist "$PLAYLISTSKY" "$JSONSKY" sky.fm
playlist "$PLAYLISTJAZZ" "$JSONJAZZ" jazzradio.com
playlist "$PLAYLISTROCK" "$JSONROCK" rockradio.com
playlist "$PLAYLISTCLASSICAL" "$JSONCLASSICAL" classicalradio.com
@cyber035
Copy link

I dont think its working any more... even when I enter generated user and pass

@SavageCore
Copy link

@cyber035 fine here, just updated to this and worked ok.

@ChangePlaces
Copy link

web url to activate trial is 404. trials only work on mobile now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment