Skip to content

Instantly share code, notes, and snippets.

@hackruu
Last active April 19, 2024 21:06
Show Gist options
  • Star 43 You must be signed in to star a gist
  • Fork 20 You must be signed in to fork a gist
  • Save hackruu/6fc318e677b899f99751 to your computer and use it in GitHub Desktop.
Save hackruu/6fc318e677b899f99751 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")
num=$(echo "$json" | jshon -l)
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)
echo "#EXTINF:0, $name" >> "$playlistfile"
echo $playlist?$listen_key >> "$playlistfile"
done
echo "$radioname" playlist written to "$playlistfile"
}
# 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
@Nahasean94
Copy link

Hey guys...just bumped into this code by accident...But I am a listener of di.fm...so what does the code in this repository do exactly? Is it like a way to unlock premium membership in the site or sth?

@Danfocus
Copy link

This gist generate one week trial playlist for audioaddict's radios.

@ChangePlaces
Copy link

ChangePlaces commented May 19, 2018

the output of this is now asking for auth on play. trials are only permitted on mobiles, and the urls for the web trial signup 404

@mylix
Copy link

mylix commented Mar 10, 2019

as ChangePlaces mentioned. this no longer works. tested today.

@tbhasme
Copy link

tbhasme commented May 18, 2019

'trial premium' is no longer offered... :-(
this won't work anymore...

@Yaroslav457-cmd
Copy link

Я вообще не знаю как сделать, чтобы было premium? Через какое приложение нужно делать, чтобы получить подписку?

@Yaroslav457-cmd
Copy link

Я вообще не знаю как сделать, чтобы было premium? Через какое приложение нужно делать, чтобы получить подписку? Кто делал подскажите пожалуйста буду благодарен

@Yaroslav457-cmd
Copy link

Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?

@Yaroslav457-cmd
Copy link

"пробна премія" більше не пропонується... :-( це більше не працюватиме...

Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?

@Yaroslav457-cmd
Copy link

як згадано ChangePlaces. це більше не працює. перевірено сьогодні.

Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?ммПодскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом

@Yaroslav457-cmd
Copy link

результат цього тепер запитує авторизацію під час відтворення. пробні версії дозволені лише на мобільних телефонах, а URL-адреси для реєстрації в пробній веб-сторінці 404

Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?ммПодскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?

@Yaroslav457-cmd
Copy link

це так, але якщо ви увійдете зі згенерованими обліковими даними на http://www.di.fm/member/premium/trial/activate , ви отримаєте свою премію. ідеї вітаються.

Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?

@Yaroslav457-cmd
Copy link

так, ви можете запускати цей скрипт раз на тиждень :)

Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?

@Yaroslav457-cmd
Copy link

хтось може підказати мені, будь ласка, як налаштувати це на преміум-версію radiotunes?

Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?

@Yaroslav457-cmd
Copy link

Спасибі.

Порада: Ви також можете додати http://classicalradio.com , який було додано до мережі.

JSONCLASSICAL=" http://listen.classicalradio.com/premium_high.json "

Подскажи пожалуйста как активировать premium аккаунт? Что нужно делать с кодом?

@slava-nikulin
Copy link

@Yaroslav457-cmd ты еблан? иди на хуй отсюда

@widepixel
Copy link

Ditube - Experimental service for free listetening DI.FM channels https://ditube.opn.pm

@iArtem88
Copy link

@Yaroslav457-cmd ты еблан? иди на хуй отсюда

бхахаха, красава

@Neogamezzz
Copy link

Ditube - Experimental service for free listetening DI.FM channels https://ditube.opn.pm

This is awesome!!!

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