Öz internet radionuz

Bir çoxumuz səhərlər radioya qulaq asmağı sevirik. Və sonra bir gözəl səhər anladım ki, yerli FM radio stansiyalarına qulaq asmaq istəmirəm. Maraqlı deyil. Ancaq vərdişin zərərli olduğu ortaya çıxdı. Və FM qəbuledicisini internet qəbuledicisi ilə əvəz etmək qərarına gəldim. Tez Aliexpress-də hissələri aldım və İnternet qəbuledicisi yığdım.

İnternet qəbuledicisi haqqında. Qəbuledicinin ürəyi ESP32 mikrokontrolleridir. KA-radio-dan proqram təminatı. Ehtiyat hissələri mənə 12 dollara başa gəldi. Quraşdırmanın asanlığı onu bir neçə günə yığmağa imkan verdi. Yaxşı və stabil işləyir. 10 aylıq işdə o, yalnız bir neçə dəfə dondu, sonra isə yalnız təcrübələrimə görə. Rahat və yaxşı düşünülmüş interfeys smartfon və kompüterdən idarə etməyə imkan verir. Bir sözlə, bu gözəl İnternet qəbuledicisidir.

Hər şey qaydasındadır. Amma bir səhər tezdən belə qənaətə gəldim ki, on minlərlə radiostansiyaya çıxışım olsa da, maraqlı stansiyalar yox idi. Aparıcıların reklamı, axmaq zarafatları məni əsəbləşdirirdi. Daim bir stansiyadan digərinə tullanmaq. Spotify və Yandex.Music-i bəyənirəm. Amma təəssüf ki, onlar mənim ölkəmdə işləmirlər. Mən isə onları internet qəbuledicisi vasitəsilə dinləmək istərdim.

Uşaqlığımı xatırladım. Məndə maqnitofon və iki onlarla kaset var idi. Dostlarla kasetləri dəyişdirdim. Və gözəl idi. Qərara gəldim ki, audio arxivlərimi yalnız İnternet qəbuledicisinə ötürməliyəm. Əlbəttə ki, audiopleyer və ya iPod-u dinamiklərə qoşmaq və narahat olmayın bir seçim var. Amma bu bizim yolumuz deyil! Mən birləşdiricilərə nifrət edirəm)

Hazır həllər axtarmağa başladım. Bazarda Radio-Tochka.com saytından öz İnternet radiounuzu yaratmaq təklifi var. 5 gün sınaqdan keçirdim. İnternet qəbuledicimlə hər şey yaxşı işləyirdi. Amma qiymət mənim üçün cəlbedici olmadı. Mən bu variantdan imtina etdim.

10 GB hostinq ödəmişəm. Mən mp3 fayllarımın audio axınını yayımlayacaq bir şeyə skript yazmaq qərarına gəldim. PHP-də yazmağa qərar verdim. Tez yazdım və işə saldım. Hər şey işlədi. Əla idi! Amma bir neçə gün sonra hosting rəhbərliyindən məktub aldım. Prosessor dəqiqələrinin limitinin aşıldığı və daha yüksək tarifə keçmək lazım olduğu bildirilib. Skript silinməli və bu seçimdən imtina edilməli idi.

Bu necə oldu? Radiosuz yaşaya bilmərəm. Skripti başqasının hostinqində işlətməyə icazə vermirlərsə, öz serverinizə ehtiyacınız var. Ruhumun istədiyini harada edəcəm.

Məndə batareyasız qədim netbuk var (CPU - 900 MHz, RAM - 512 Mb). Qocanın artıq 11 yaşı var. Server üçün uyğundur. Ubuntu 12.04 quraşdırıram. Sonra Apache2 və php 5.3, samba quraşdırıram. Serverim hazırdır.

Icecast-ı sınamaq qərarına gəldim. Onun haqqında çoxlu mana oxudum. Amma mənə çətin gəldi. Və PHP skripti ilə seçimə qayıtmaq qərarına gəldim. Bu skriptin sazlanmasına bir neçə gün sərf olundu. Və hər şey əla işlədi. Sonra podkastları oynamaq üçün də ssenari yazdım. Və o qədər xoşuma gəldi ki, kiçik bir layihə ilə məşğul olmaq qərarına gəldim. Onu IWScast adlandırdılar. Github-da yerləşdirilib.

Öz internet radionuz

Hər şey çox sadədir. Mən mp3 faylları və index.php faylını Apache kök qovluğuna /var/www/ kopyalayıram və onlar təsadüfi şəkildə səsləndirilir. Təxminən bütün gün üçün təxminən 300 mahnı kifayətdir.
index.php faylı skriptin özüdür. Skript qovluqdakı MP3 fayllarının bütün adlarını massivdə oxuyur. Audio axını yaradır və MP3 fayllarının adlarını əvəz edir. Elə vaxtlar olur ki, mahnıya qulaq asırsan və onu bəyənirsən. Sizcə kim oxuyur? Belə bir hal üçün log.txt jurnalında dinlənmiş treklərin adlarının qeydi var
Tam skript kodu

<?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);
}
?>

Əgər mahnıların ardıcıllıqla ifa edilməsinə ehtiyacınız varsa, o zaman index.php-də sətri şərh etməlisiniz

shuffle($files); //Random on

Podkastlar üçün istifadə edirəm /var/www/podcast/ Başqa bir index.php skripti var. Podcast trekinin yadda saxlanmasına malikdir. İnternet qəbuledicisini növbəti dəfə yandırdığınız zaman növbəti podkast treki səsləndirilir. Oynanan musiqilərin qeydləri də var.
Counter.dat faylında siz trek nömrəsini təyin edə bilərsiniz və podkastın səsləndirilməsi ondan başlayacaq.

Podkastların avtomatik yüklənməsi üçün analizatorlar yazdı. O, RSS-dən ən son 4 treki götürür və yükləyir. Bütün bunlar smartfonda, IPTV pristavkasında və ya brauzerdə əla işləyir.

Keçən gün səhər ağlıma gəldi ki, trekdə səsləndirmə mövqeyini xatırlamaq əla olardı. Amma bunu PHP-də necə edəcəyimi hələ bilmirəm.

Skript yüklənə bilər github.com/iwsys/IWScast

Mənbə: www.habr.com

Добавить комментарий