آپ کا اپنا انٹرنیٹ ریڈیو

ہم میں سے بہت سے لوگ صبح کے وقت ریڈیو سننا پسند کرتے ہیں۔ اور پھر ایک اچھی صبح میں نے محسوس کیا کہ میں مقامی ایف ایم ریڈیو اسٹیشن نہیں سننا چاہتا۔ دلچسپی نہیں. لیکن عادت نقصان دہ نکلی۔ اور میں نے ایف ایم ریسیور کو انٹرنیٹ ریسیور سے بدلنے کا فیصلہ کیا۔ میں نے جلدی سے Aliexpress پر پرزے خریدے اور ایک انٹرنیٹ ریسیور اسمبل کیا۔

انٹرنیٹ ریسیور کے بارے میں۔ وصول کنندہ کا دل ESP32 مائکروکنٹرولر ہے۔ KA-ریڈیو سے فرم ویئر۔ حصوں کی قیمت $12 ہے۔ اسمبلی کی آسانی نے مجھے اسے چند دنوں میں جمع کرنے کی اجازت دی۔ اچھی طرح اور مستحکم طور پر کام کرتا ہے۔ کام کے 10 مہینوں میں، یہ صرف ایک دو بار جم گیا، اور پھر صرف میرے تجربات کی وجہ سے۔ ایک آسان اور اچھی طرح سے سوچنے والا انٹرفیس آپ کو اسمارٹ فون اور کمپیوٹر سے کنٹرول کرنے کی اجازت دیتا ہے۔ ایک لفظ میں، یہ ایک شاندار انٹرنیٹ ریسیور ہے.

سب ٹھیک ہے. لیکن ایک صبح میں اس نتیجے پر پہنچا کہ دسیوں ہزار ریڈیو اسٹیشنوں تک رسائی کے باوجود کوئی دلچسپ اسٹیشن نہیں تھا۔ میں اشتہارات اور پیش کرنے والوں کے احمقانہ لطیفوں سے ناراض تھا۔ ایک اسٹیشن سے دوسرے اسٹیشن تک مسلسل چھلانگ لگانا۔ مجھے Spotify اور Yandex.Music پسند ہے۔ لیکن افسوسناک بات یہ ہے کہ وہ میرے ملک میں کام نہیں کرتے۔ اور میں ان کو انٹرنیٹ ریسیور کے ذریعے سننا چاہوں گا۔

مجھے اپنا بچپن یاد آگیا۔ میرے پاس ایک ٹیپ ریکارڈر اور دو درجن کیسٹس تھے۔ میں نے دوستوں کے ساتھ کیسٹس کا تبادلہ کیا۔ اور یہ شاندار تھا۔ میں نے فیصلہ کیا ہے کہ مجھے اپنے آڈیو آرکائیوز کو صرف انٹرنیٹ ریسیور پر سٹریم کرنے کی ضرورت ہے۔ بلاشبہ، آڈیو پلیئر یا آئی پوڈ کو اسپیکر سے منسلک کرنے کا آپشن موجود ہے اور فکر نہ کریں۔ لیکن یہ ہمارا طریقہ نہیں ہے! مجھے جوڑنے والے کنیکٹر سے نفرت ہے)

میں نے تیار حل تلاش کرنا شروع کیا۔ مارکیٹ میں Radio-Tochka.com سے اپنا انٹرنیٹ ریڈیو بنانے کی پیشکش ہے۔ میں نے اسے 5 دن تک آزمایا۔ میرے انٹرنیٹ ریسیور کے ساتھ سب کچھ ٹھیک کام کرتا ہے۔ لیکن قیمت میرے لیے پرکشش نہیں تھی۔ میں نے اس اختیار کو مسترد کر دیا۔

میں نے 10 جی بی ہوسٹنگ کی ادائیگی کی ہے۔ میں نے کسی ایسی چیز پر اسکرپٹ لکھنے کا فیصلہ کیا جو میری mp3 فائلوں کی آڈیو اسٹریم کو سٹریم کرے۔ میں نے اسے پی ایچ پی میں لکھنے کا فیصلہ کیا۔ میں نے جلدی سے اسے لکھا اور لانچ کیا۔ سب کچھ کام کر گیا۔ یہ ٹھنڈا تھا! لیکن کچھ دن بعد مجھے میزبان انتظامیہ کی طرف سے ایک خط موصول ہوا۔ اس میں کہا گیا ہے کہ پروسیسر منٹ کی حد سے تجاوز کر گیا ہے اور اسے زیادہ ٹیرف میں اپ گریڈ کرنے کی ضرورت ہے۔ اسکرپٹ کو حذف کرنا پڑا اور اس اختیار کو ترک کردیا گیا۔

یہ کیسے ممکن ہوا؟ میں ریڈیو کے بغیر نہیں رہ سکتا۔ اگر وہ آپ کو کسی اور کی ہوسٹنگ پر اسکرپٹ چلانے کی اجازت نہیں دیتے ہیں، تو آپ کو اپنے سرور کی ضرورت ہے۔ جہاں میں وہی کروں گا جو میری روح چاہے گی۔

میرے پاس بیٹری کے بغیر ایک قدیم نیٹ بک ہے (CPU - 900 MHz، RAM - 512 Mb)۔ بوڑھے کی عمر پہلے ہی 11 سال ہے۔ سرور کے لیے موزوں۔ میں Ubuntu 12.04 انسٹال کرتا ہوں۔ پھر میں اپاچی 2 اور پی ایچ پی 5.3، سامبا انسٹال کرتا ہوں۔ میرا سرور تیار ہے۔

میں نے آئس کاسٹ کو آزمانے کا فیصلہ کیا۔ میں نے اس پر بہت منا پڑھا۔ لیکن مجھے یہ مشکل لگا۔ اور میں نے پی ایچ پی اسکرپٹ کے ساتھ آپشن پر واپس جانے کا فیصلہ کیا۔ اس اسکرپٹ کو ڈیبگ کرنے میں چند دن گزر گئے۔ اور سب کچھ بہت اچھا کام کیا. پھر میں نے پوڈ کاسٹ چلانے کے لیے اسکرپٹ بھی لکھا۔ اور مجھے یہ اتنا پسند آیا کہ میں نے ایک چھوٹا پروجیکٹ کرنے کا فیصلہ کیا۔ اسے IWScast کہتے ہیں۔ گیتھب پر پوسٹ کیا گیا۔.

آپ کا اپنا انٹرنیٹ ریڈیو

سب کچھ بہت آسان ہے۔ میں mp3 فائلوں اور index.php فائل کو اپاچی روٹ فولڈر /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 فائل میں، آپ ٹریک نمبر بتا سکتے ہیں اور اس سے پوڈ کاسٹ پلے بیک شروع ہو جائے گا۔

پوڈ کاسٹس کے خودکار ڈاؤن لوڈنگ کے لیے تجزیہ کار لکھے۔ یہ RSS سے تازہ ترین 4 ٹریک لیتا ہے اور انہیں ڈاؤن لوڈ کرتا ہے۔ یہ سب اسمارٹ فون، آئی پی ٹی وی سیٹ ٹاپ باکس، یا براؤزر میں بہت اچھا کام کرتا ہے۔

دوسری صبح مجھے یہ محسوس ہوا کہ ٹریک پر پلے بیک پوزیشن کو یاد رکھنا بہت اچھا ہوگا۔ لیکن میں ابھی تک نہیں جانتا کہ یہ پی ایچ پی میں کیسے کرنا ہے۔

اسکرپٹ کو ڈاؤن لوڈ کیا جا سکتا ہے۔ github.com/iwsys/IWScast

ماخذ: www.habr.com

نیا تبصرہ شامل کریں