توهان جو پنهنجو انٽرنيٽ ريڊيو

اسان مان ڪيترائي صبح جو ريڊيو ٻڌڻ پسند ڪن ٿا. ۽ پوءِ هڪ سٺي صبح مون محسوس ڪيو ته مان مقامي ايف ايم ريڊيو اسٽيشنن کي ٻڌڻ نٿو چاهيان. دلچسپي نه آهي. پر اها عادت نقصانڪار ثابت ٿي. ۽ مون فيصلو ڪيو ته ايف ايم رسيور کي بدلائي انٽرنيٽ رسيور سان. مون جلدي خريد ڪيو Aliexpress تي حصا ۽ هڪ انٽرنيٽ رسيور گڏ ڪيو.

انٽرنيٽ وصول ڪندڙ بابت. وصول ڪندڙ جو دل ESP32 مائڪرو ڪنٽرولر آهي. KA-ريڊيو کان فرم ویئر. حصن جي قيمت مون کي $ 12 آهي. اسيمبليءَ جي آسانيءَ مون کي اجازت ڏني ته ان کي ڪجهه ڏينهن ۾ گڏ ڪري سگهان. سٺو ۽ مستحڪم ڪم ڪري ٿو. ڪم جي 10 مهينن ۾، اهو صرف ٻه ڀيرا منجمد ٿيو، ۽ پوء صرف منهنجي تجربن جي ڪري. هڪ آسان ۽ چڱيءَ طرح سوچڻ وارو انٽرفيس توهان کي سمارٽ فون ۽ ڪمپيوٽر تان ڪنٽرول ڪرڻ جي اجازت ڏئي ٿو. هڪ لفظ ۾، هي هڪ شاندار انٽرنيٽ رسيور آهي.

سڀ ڪجهه ٺيڪ آهي. پر هڪ صبح جو مان ان نتيجي تي پهتو آهيان ته هزارين ريڊيو اسٽيشنن تائين پهچ هئڻ جي باوجود، ڪي به دلچسپ اسٽيشنون نه هيون. مون کي اشتهارن ۽ پيش ڪندڙن جي بيوقوف مذاق کان ناراض ڪيو ويو. هڪ اسٽيشن کان ٻئي اسٽيشن تي مسلسل جمپنگ. مون کي پسند آهي Spotify ۽ Yandex.Music. پر افسوس جي ڳالهه اها آهي ته اهي منهنجي ملڪ ۾ ڪم نٿا ڪن. ۽ مان انهن کي انٽرنيٽ رسيور ذريعي ٻڌڻ چاهيان ٿو.

مون کي پنهنجو ننڍپڻ ياد آيو. مون وٽ ٽيپ رڪارڊر ۽ ٻه درجن ڪيسيٽون هيون. مون دوستن سان ڪيسٽون مٽائي ڇڏيون. ۽ اهو شاندار هو. مون فيصلو ڪيو ته مون کي پنهنجي آڊيو آرڪائيوز کي صرف انٽرنيٽ وصول ڪندڙ ڏانهن اسٽريم ڪرڻ جي ضرورت آهي. يقينن، اتي ھڪڙو اختيار آھي آڊيو پليئر يا آئي پوڊ کي اسپيڪر سان ڳنڍڻ ۽ پريشان نه ڪريو. پر اهو اسان جو طريقو ناهي! مون کي ڳنڍڻ وارن کان نفرت آهي)

مون تيار ٿيل حل ڳولڻ شروع ڪيو. مارڪيٽ تي هڪ آڇ آهي توهان جو پنهنجو انٽرنيٽ ريڊيو Radio-Tochka.com مان ٺاهيو. مون ان کي 5 ڏينهن تائين آزمايو. منهنجي انٽرنيٽ رسيور سان هر شي ٺيڪ ڪم ڪيو. پر قيمت مون لاءِ دلڪش نه هئي. مون هن اختيار کي رد ڪيو.

مون ادا ڪيو آهي هوسٽنگ 10 GB. مون فيصلو ڪيو ته هڪ اسڪرپٽ لکڻ جو ڪنهن شيءِ تي جيڪو منهنجي mp3 فائلن جي آڊيو اسٽريم کي وهڪرو ڪري. مون ان کي PHP ۾ لکڻ جو فيصلو ڪيو. مون جلدي لکيو ۽ ان کي شروع ڪيو. سڀ ڪجهه ڪم ڪيو. اهو ٿڌو هو! پر ڪجهه ڏينهن کان پوءِ مون کي ميزبان انتظاميه جو خط مليو. اهو چيو ته پروسيسر منٽن جي حد کان وڌي وئي هئي ۽ هڪ اعلي ٽريف کي اپڊيٽ ڪرڻ جي ضرورت آهي. اسڪرپٽ کي ختم ڪرڻو پيو ۽ هي اختيار ڇڏي ويو.

اهو ڪيئن ٿيو؟ مان ريڊيو کان سواءِ رهي نٿو سگهان. جيڪڏهن اهي توهان کي ڪنهن ٻئي جي هوسٽنگ تي اسڪرپٽ هلائڻ جي اجازت نٿا ڏين، ته توهان کي پنهنجي سرور جي ضرورت آهي. جتي مان اهو ڪندس جيڪو منهنجو روح چاهي ٿو.

مون وٽ بيٽري کان سواءِ هڪ قديم نيٽ بڪ آهي (سي پي يو - 900 ميگاواٽ، ريم - 512 ايم بي). پوڙهو ماڻهو اڳ ۾ ئي 11 سالن جي آهي. هڪ سرور لاء مناسب. مان Ubuntu 12.04 انسٽال ڪريان ٿو. ان کان پوء آئون انسٽال ڪريو Apache2 ۽ php 5.3، samba. منهنجو سرور تيار آهي.

مون Icecast ڪوشش ڪرڻ جو فيصلو ڪيو. مون ان تي گهڻو ڪجهه پڙهيو. پر مون کي اهو ڏکيو مليو. ۽ مون PHP اسڪرپٽ سان اختيار ڏانھن موٽڻ جو فيصلو ڪيو. هن اسڪرپٽ کي ڊيبگ ڪندي ڪجهه ڏينهن گذري ويا. ۽ هر شيء تمام سٺو ڪم ڪيو. ان کان پوء مون پوڊ ڪاسٽ کيڏڻ لاء هڪ اسڪرپٽ پڻ لکيو. ۽ مون کي اهو تمام گهڻو پسند آيو ته مون هڪ ننڍڙو منصوبو ڪرڻ جو فيصلو ڪيو. ان کي سڏيو ويو IWScast. github تي پوسٽ ڪيو ويو.

توهان جو پنهنجو انٽرنيٽ ريڊيو

هر شيء بلڪل سادي آهي. مان mp3 فائلن ۽ index.php فائل کي Apache روٽ فولڊر /var/www/ ۾ نقل ڪريان ٿو ۽ اهي بي ترتيب سان کيڏيا وڃن ٿا. اٽڪل 300 گيت تقريبا سڄي ڏينهن لاء ڪافي آهن.
index.php فائل خود اسڪرپٽ آهي. اسڪرپٽ هڪ ڊاريڪٽري ۾ MP3 فائلن جا سڀئي نالا هڪ صف ۾ پڙهي ٿو. هڪ آڊيو وهڪرو ٺاهي ٿو ۽ MP3 فائلن جا نالا بدلائي ٿو. اهڙا موقعا آهن جڏهن توهان هڪ گيت ٻڌندا آهيو ۽ توهان ان کي پسند ڪندا آهيو. توهان جي خيال ۾ ڪير ڳائي رهيو آهي؟ اهڙي صورت ۾، log.txt ۾ لسٽ ٿيل ٽريڪز جي نالن جي رڪارڊنگ موجود آهي.
مڪمل اسڪرپٽ ڪوڊ

<?php
set_time_limit(0);
header('Content-type: audio/mpeg');
header("Content-Transfer-Encoding: binary");
header("Pragma: no-cache");
header("icy-br: 128 ");
header("icy-name: your name");
header("icy-description: your description"); 
$files = glob("*.mp3");
shuffle($files); //Random on

for ($x=0; $x < count($files);) {
  $filePath =  $files[$x++];
  $bitrate = 128;
  $strContext=stream_context_create(
   array(
     'http'=>array(
       'method' =>'GET',
       'header' => 'Icy-MetaData: 1',
       'header' =>"Accept-language: enrn"
       )
     )
   );
//Save to log 
  $fl = $filePath; 
  $log = date('Y-m-d H:i:s') . ' Song - ' . $fl;
  file_put_contents('log.txt', $log . PHP_EOL, FILE_APPEND);
  $fpOrigin=fopen($filePath, 'rb', false, $strContext);
  while(!feof($fpOrigin)){
   $buffer=fread($fpOrigin, 4096);
   echo $buffer;
   flush();
 }
 fclose($fpOrigin);
}
?>

جيڪڏهن توهان کي ضرورت آهي ته ٽريڪ کي ترتيب سان ادا ڪيو وڃي، پوء توهان کي index.php ۾ لائن کي تبصرو ڪرڻ جي ضرورت آهي

shuffle($files); //Random on

پوڊ ڪاسٽن لاءِ مان استعمال ڪريان ٿو /var/www/podcast/ هتي هڪ ٻيو اسڪرپٽ آهي index.php. اهو پوڊ ڪاسٽ ٽريڪ يادگار آهي. ايندڙ وقت توهان انٽرنيٽ رسيور کي آن ڪيو، ايندڙ پوڊ ڪاسٽ ٽريڪ کيڏيو ويندو. ادا ڪيل ٽريڪز جو هڪ لاگ پڻ آهي.
counter.dat فائل ۾، توهان ٽريڪ نمبر بيان ڪري سگھو ٿا ۽ پوڊ ڪاسٽ پلے بیک ان کان شروع ٿيندو.

پوڊ ڪاسٽ جي خودڪار ڊائون لوڊ ڪرڻ لاءِ parsers لکيو. اهو RSS کان جديد 4 ٽريڪ وٺندو آهي ۽ انهن کي ڊائون لوڊ ڪري ٿو. هي سڀ هڪ سمارٽ فون، IPTV سيٽ ٽاپ باڪس، يا برائوزر ۾ تمام سٺو ڪم ڪري ٿو.

ٻئي صبح مون کي اهو محسوس ٿيو ته اهو هڪ ٽريڪ تي پلے بیک پوزيشن کي ياد ڪرڻ لاء وڏو هوندو. پر مون کي اڃا تائين خبر ناهي ته اهو ڪيئن ڪجي PHP ۾.

اسڪرپٽ ڊائون لوڊ ڪري سگھجي ٿو github.com/iwsys/IWScast

جو ذريعو: www.habr.com

تبصرو شامل ڪريو