MPD प्लेलिस्ट में Last.fm रेडियो जोड़ें

हेलो हेम्बेन्स,

IchBin की। यह सब इस तथ्य के साथ शुरू हुआ कि अंतिम.फैम रेडियो के लिए समर्थन एमपीडी में इतनी अनाड़ी रूप से लागू किया गया था कि मैंने इस फ़ंक्शन को संकलित करना भी बंद कर दिया। इसकी भद्दापन इस तथ्य में शामिल थी कि चैनल में ट्यून होने के बाद भी, आपको अभी भी मैन्युअल रूप से प्लेलिस्ट में जोड़ना होगा, क्योंकि सर्वर प्रति अनुरोध पांच ट्रैक देता है। इसलिए, सभी ट्रैक खो जाने के बाद, आपको अनुरोध को दोहराने और अगले 5 ट्रैक प्राप्त करने की आवश्यकता है! अगला, हम उन लिपियों के बारे में बात करेंगे जो इस प्रक्रिया को स्वचालित करेंगे।

Bash.fm - बियरिंग्स पर काम


एक मूल विचार यहां पाया गया था। संदर्भ से लिपियां पुरानी हैं और काम नहीं किया है। इसके अलावा, लिपियों के लेखक की बहुत अजीब शैली है और अनावश्यक निर्भरता को जोड़ने में कामयाब रही है, उदाहरण के लिए, लिंक्स पर। इसलिए, मुझे इसमें से अधिकांश को बदलना पड़ा, हालांकि काम का तर्क एक ही रहा:


चलो fmstart के साथ शुरू करते हैं:
root@Buffalo:~# cat /mnt/sd/bin/fmstart #!/bin/sh username=$(sed -nr 's/^username=(.*)/\1/p' ~/.bashfm) password=$(sed -nr 's/^password=([^[:space:]]*).*/\1/p' ~/.bashfm) mediaplayer=$(sed -nr 's/^mediaplayer=(.*)/\1/p' ~/.bashfm) if [ ! -z "$password" ]; then passwordmd5=$(echo -n $password | md5sum | sed -nr 's/([^[:space:]]*).*/\1/p') else passwordmd5=$(sed -nr 's/^passwordmd5=([^[:space:]]*).*/\1/p' ~/.bashfm) fi echo 'username='$username > ~/.bashfm echo 'password=' >> ~/.bashfm echo 'mediaplayer='"$mediaplayer" >> ~/.bashfm echo 'passwordmd5='$passwordmd5 >> ~/.bashfm login_url='http://ws.audioscrobbler.com/radio/handshake.php?' login_url="$login_url"'version=1.1.1&platform=linux&username=' login_url="$login_url"$username'&passwordmd5='$passwordmd5 login_url="$login_url"'&debug=0&partner=' echo "login_url=$login_url" >> ~/.bashfm wget -q -O - "$login_url" >> ~/.bashfm echo >> ~/.bashfm 

स्क्रिप्ट को सही तरीके से काम करने के लिए, आपको पहले निम्नलिखित सामग्री के साथ ~ / .bashfm फ़ाइल बनानी होगी:
 root@Buffalo:~# cat ~/.bashfm username=ichbins password=123456 mediaplayer=/mnt/sd/bin/mpc add 

यहाँ उपयोगकर्ता नाम और पासवर्ड आपका last.fm यूजरनेम और पासवर्ड है, और मीडियापेयर वह कमांड है जिसके साथ ट्रैक को प्लेलिस्ट में जोड़ा जाता है।
पहली बार जब आप fmstart शुरू करते हैं, तो पासवर्ड हटा दिया जाएगा और md5 राशि से बदल दिया जाएगा।

एक छोटा विषयांतर:
MPC कमांड लाइन के लिए एक मानक MPD क्लाइंट है। लेकिन मैं इसे संकलित नहीं करता, लेकिन एक पंक्ति में स्क्रिप्ट का उपयोग करता हूं:
 root@Buffalo:~# cat /mnt/sd/bin/mpc #!/bin/sh echo "$*" | nc localhost 6600 

यह स्क्रिप्ट एमपीसी का पूरा एनालॉग नहीं है, लेकिन यह हमेशा मेरी जरूरतों के लिए पर्याप्त था।

अब चैनल चुनने के लिए स्क्रिप्ट के बारे में। वास्तव में, वे सभी समान हैं, केवल चैनल URL अंदर भिन्न है। मैं व्यक्तिगत रेडियो या किसी विशेष कलाकार के रेडियो को सुनता हूं - इसलिए, नीचे मैं केवल इन दो लिपियों को दूंगा।

व्यक्तिगत रेडियो चैनल सक्रियण स्क्रिप्ट:
 root@Buffalo:~# cat /mnt/sd/bin/fmpersonal #!/bin/sh # # "fmpersonal" plays user's personal radio station # session=$(sed -nr 's/^session=(.*)/\1/p' ~/.bashfm) username=$(sed -nr 's/^username=(.*)/\1/p' ~/.bashfm) tuning_url='http://ws.audioscrobbler.com/radio/adjust.php?' tuning_url="${tuning_url}session=${session}&url=lastfm://user/" tuning_url="${tuning_url}${username}/personal" #echo "$tuning_url" wget -q -O - "$tuning_url" echo 

सफल होने पर, स्क्रिप्ट का उत्पादन होगा:
 root@Buffalo:~# /mnt/sd/bin/fmpersonal response=OK url=http://www.last.fm/listen/user/IchBins/personal stationname=IchBins's Library Radio 

कलाकार की सक्रियता स्क्रिप्ट इस तरह दिखती है:
 root@Buffalo:~# cat /mnt/sd/bin/fmart #!/bin/sh # "fmart" plays the radio station corresponding to a # certain artist. It takes the artist's name as command # line argument. Use quotes when the artist's name # contains spaces. # # Example: # fmart 'jahcoozi' artist=$(echo $1 | sed 's/ /%20/g') session=$(sed -nr 's/^session=(.*)/\1/p' ~/.bashfm) tuning_url='http://ws.audioscrobbler.com/radio/adjust.php?' tuning_url="${tuning_url}session=${session}&url=lastfm://artist/" tuning_url="${tuning_url}${artist}/similarartists&debug=0" #echo "$tuning_url" wget -q -O - "$tuning_url" echo 

निष्पादन परिणाम:
 root@Buffalo:~# /mnt/sd/bin/fmart response=FAILED error=4 root@Buffalo:~# /mnt/sd/bin/fmart "Knorkator" response=OK url=http://www.last.fm/listen/artist/Knorkator/similarartists stationname=Knorkator Radio 

चैनल में ट्यूनिंग करके, आप fmget का उपयोग करके अपनी प्लेलिस्ट में इससे ट्रैक जोड़ सकते हैं:
 root@Buffalo:~# cat /mnt/sd/bin/fmget #!/bin/sh # "fmget" gets list of mp3's from a radiostation and # adds it into the current playlist # # Example: # fmart 'Depeche Mode'; fmget session=$(sed -nr 's/^session=(.*)/\1/p' ~/.bashfm) mplayer=$(sed -nr 's/^mediaplayer=(.*)/\1/p' ~/.bashfm) tuning_url='http://ws.audioscrobbler.com/radio/xspf.php?' tuning_url="${tuning_url}sk=${session}" tuning_url="${tuning_url}&discovery=0&desktop=1.5.1" #echo "$tuning_url" mp3list=$(wget -q -O - "$tuning_url" | sed -nr "s/.*<location>(.*)<\/location>/\1/p") for i in $mp3list; do #echo $i $mplayer "$i" done 

काम का परिणाम:
 root@Buffalo:~# /mnt/sd/bin/fmget OK MPD 0.16.0 OK OK MPD 0.16.0 OK OK MPD 0.16.0 OK OK MPD 0.16.0 OK OK MPD 0.16.0 OK 

पटरियों के परिणामस्वरूप लिंक एमपी 3 फ़ाइलों के लिंक हैं, इसलिए उन्हें किसी भी खिलाड़ी को खिलाया जा सकता है, न कि केवल एमपीडी। यह ~ / .bashfm फ़ाइल में मीडियाप्लेयर पैरामीटर को बदलने के लिए पर्याप्त है

यही सब मैं बताना चाहता था। प्लेलिस्ट में ट्रैक जोड़ने की प्रक्रिया के स्वचालन के लिए, मैं इस स्क्रिप्ट को होमवर्क के रूप में छोड़ दूंगा। यहां आप fmget +100500 बार या लूप कॉल "mpc स्थिति" पर कॉल कर सकते हैं, प्रतिक्रिया को पार्स कर सकते हैं, और यदि nextsong == प्लेलिस्ट सूची, तो fmget को कॉल करें।

एक बोनस के रूप में, अगर आपको यहाँ तक महारत हासिल है, तो मैं आपको, मेरे जिज्ञासु मित्र, लेख की सभी लिपियों को एक बोतल में दूंगा

Source: https://habr.com/ru/post/In144116/


All Articles