ستاسو خپله انټرنیټ راډیو

زموږ څخه ډیری د سهار راډیو اوریدل خوښوي. او بیا یو ښه سهار ما پوهیده چې زه نه غواړم سیمه ایز ایف ایم راډیو سټیشنونه واورم. دلچسپي نه لري. خو دا عادت زیانمن شو. او ما پریکړه وکړه چې د ایف ایم ریسیور د انټرنیټ ریسیور سره بدل کړم. ما په چټکۍ سره په Aliexpress کې برخې اخیستې او د انټرنیټ ریسیور یې راټول کړ.

د انټرنیټ اخیستونکي په اړه. د رسیدونکي زړه د ESP32 مایکرو کنټرولر دی. د KA راډیو څخه فرم ویئر. پرزې زما 12 ډالر لګښت لري. د مجلس اسانتیا ماته اجازه راکړه چې دا په څو ورځو کې راټول کړم. ښه او په ثبات سره کار کوي. د کار په 10 میاشتو کې، دا یوازې یو څو ځله کنګل شوی، او بیا یوازې زما د تجربو له امله. یو مناسب او ښه فکر شوی انٹرفیس تاسو ته اجازه درکوي د سمارټ فون او کمپیوټر څخه کنټرول کړئ. په یوه کلمه کې، دا یو په زړه پورې انټرنیټ ترلاسه کونکی دی.

هر څه سم دي. مګر یو سهار زه دې نتیجې ته ورسیدم چې په لسګونو زره راډیو سټیشنونو ته د لاسرسي سره سره هیڅ په زړه پوري سټیشنونه شتون نلري. زه د اعلاناتو او د وړاندیز کونکو احمقانه ټوکو څخه په غوسه شوم. په دوامداره توګه له یو سټیشن څخه بل ته ټوپ کول. زه Spotify او Yandex.Music خوښوم. مګر د افسوس خبره دا ده چې دوی زما په هیواد کې کار نه کوي. او زه غواړم دوی ته د انټرنیټ ریسیور له لارې واورم.

ما خپل ماشومتوب را په یاد کړ. ما یو ټیپ ریکارډر او دوه درجن کیسټونه درلودل. ما د ملګرو سره کیسټونه تبادله کړل. او دا په زړه پورې وه. ما پریکړه وکړه چې زه اړتیا لرم چې خپل آډیو آرشیفونه یوازې د انټرنیټ ترلاسه کونکي ته واړوم. البته، دلته یو اختیار شتون لري چې د آډیو پلیر یا آی پوډ سپیکرو ته وصل کړئ او اندیښنه مه کوئ. مګر دا زموږ لاره نه ده! زه د نښلونکو نښلونکو څخه نفرت لرم)

ما د چمتو شوي حلونو په لټه کې پیل وکړ. په بازار کې یو وړاندیز شتون لري چې د Radio-Tochka.com څخه خپله انټرنیټ راډیو جوړه کړئ. ما دا د 5 ورځو لپاره ازموینه وکړه. زما د انټرنیټ ریسیور سره هرڅه ښه کار وکړ. خو قیمت راته په زړه پورې نه و. ما دا اختیار رد کړ.

ما د کوربه توب 10 GB تادیه کړې. ما پریکړه وکړه چې په یو څه باندې یو سکریپټ ولیکئ چې زما د mp3 فایلونو آډیو جریان به جریان کړي. ما پریکړه وکړه چې دا په PHP کې ولیکم. ما دا په چټکۍ سره ولیکه او پیل یې کړ. هر څه کار وکړ. دا ښه وه! مګر څو ورځې وروسته ما د کوربه ادارې لخوا یو لیک ترلاسه کړ. دې وویل چې د پروسیسر دقیقو حد ډیر شوی و او لوړې تعرفې ته لوړولو ته اړتیا وه. سکریپټ باید ړنګ شي او دا اختیار پریښودل شي.

دا څنګه وشول؟ زه د راډیو پرته ژوند نشم کولی. که دوی تاسو ته اجازه نه ورکوي چې سکریپټ د بل چا په کوربه توب پرمخ بوځي، نو تاسو خپل سرور ته اړتیا لرئ. چیرته چې زه به هغه څه وکړم چې زما روح یې غواړي.

زه د بیټرۍ پرته یو لرغونی نټ بوک لرم (CPU - 900 MHz، RAM - 512 Mb). زوړ سړی لا دمخه 11 کلن دی. د سرور لپاره مناسب. زه اوبنټو 12.04 نصب کوم. بیا زه Apache2 او php 5.3، samba نصب کړم. زما سرور چمتو دی.

ما پریکړه وکړه چې د Icecast هڅه وکړم. ما په دې اړه ډیر مینه ولوستله. مګر ما دا ستونزمن وموندل. او ما پریکړه وکړه چې د پی ایچ پی سکریپټ سره اختیار ته بیرته راستانه شم. د دې سکریپټ په ډیبګ کولو کې څو ورځې تیرې شوې. او هر څه ښه کار وکړ. بیا ما د پوډکاسټ لوبولو لپاره سکریپټ هم ولیکه. او ما دا ډیر خوښ کړ چې ما پریکړه وکړه چې یوه کوچنۍ پروژه ترسره کړم. دا د 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 ټریکونه اخلي او ډاونلوډ کوي. دا ټول په سمارټ فون ، IPTV سیټ ټاپ بکس ، یا براوزر کې عالي کار کوي.

بل سهار دا ما ته پیښ شو چې دا به ښه وي چې په ټریک کې د پلے بیک موقعیت په یاد ولرئ. مګر زه لاهم نه پوهیږم چې دا په PHP کې څنګه ترسره کړم.

سکریپټ ډاونلوډ کیدی شي github.com/iwsys/IWScast

سرچینه: www.habr.com

Add a comment