Radyoya xweya înternetê

Gelek ji me hez dikin serê sibê li radyoyê guhdarî bikin. Û dûv re rojek sibehek xweş min fêm kir ku ez naxwazim guh bidim radyoyên herêmî yên FM. Ne eleqedar in. Lê adet derket holê ku zirardar e. Û min biryar da ku wergirê FM bi wergirê Înternetê veguherînim. Min zû li ser Aliexpress perçe kirîn û wergirê Înternetê berhev kir.

Li ser wergirê Înternetê. Dilê wergirê mîkrokontrolkerê ESP32 ye. Firmware ji KA-radyoyê. Parçe ji min re 12 $. Hêsaniya kombûnê hişt ku ez di nav çend rojan de wê bicivînim. Baş û bi îstîqrar dixebite. Di 10 mehên xebatê de, ew tenê çend caran qeşa girt, û dûv re jî tenê ji ber ceribandinên min. Têkiliyek hêsan û baş-ramandar dihêle hûn ji smartphone û komputerê kontrol bikin. Bi gotinek, ev wergirê Înternetê ya ecêb e.

Her tişt baş e. Lê sibehekê zû ez gihîştim wê qenaetê ku tevî bi dehhezaran îstasyonên radyoyê jî qereqolên balkêş tunebûn. Ez ji reklam û henekên ehmeqî yên pêşkêşvanan aciz bûm. Bi domdarî ji qereqolekê diavêjin stasyonek din. Ez ji Spotify û Yandex.Music hez dikim. Lê ya xemgîn ew e ku ew li welatê min naxebitin. Û ez dixwazim bi rêya wergirê Înternetê li wan guhdarî bikim.

Zarokatiya min hat bîra min. Kasetek û du deh kasetên min hebûn. Min bi hevalan re kaset guhert. Û ew ecêb bû. Min biryar da ku ez hewce dikim ku arşîvên xwe yên dengî tenê ji wergirê Înternetê re bişînim. Bê guman, vebijarkek heye ku meriv lîstikvanek dengî an iPod-ê bi axaftvanan ve girêbide û xem neke. Lê ev ne riya me ye! Ez ji girêdana girêdanan nefret dikim)

Min dest bi lêgerîna çareseriyên amade kir. Li sûkê pêşniyarek heye ku hûn radyoya xweya Înternetê ji Radio-Tochka.com biafirînin. Min 5 rojan ceribandin. Her tişt bi wergirê min ê înternetê re baş xebitî. Lê biha ji min re ne balkêş bû. Min ev vebijark red kir.

Min 10 GB hosting daye. Min biryar da ku li ser tiştek ku guheztina bihîstwerê ya pelên mp3-ya min biweşîne skrîptek binivîsim. Min biryar da ku wê bi PHP-ê binivîsim. Min zû nivîsand û dest pê kir. Her tişt xebitî. sar bû! Lê çend roj şûnda min nameyek ji rêveberiya mêvandariyê wergirt. Wê got ku sînorê hûrgelên pêvajoyê derbas kir û pêdivî ye ku nûvekirina tarîfek bilindtir. Diviyabû senaryo were jêbirin û ev vebijark were berdan.

Çawa çêbû? Ez bê radyo nikarim bijîm. Ger ew destûr nedin we ku hûn skrîptê li ser mêvandariya kesek din bimeşînin, wê hingê hûn hewceyê servera xwe ne. Li ku derê ez ê tiştê ku canê min bixwaze bikim.

Min netbookek kevnar bêyî pîlê heye (CPU - 900 MHz, RAM - 512 Mb). Pîrê berê 11 salî ye. Minasib ji bo server'î. Ez Ubuntu 12.04 saz dikim. Dûv re ez Apache2 û php 5.3, samba saz dikim. Servera min amade ye.

Min biryar da ku Icecast-ê biceribînim. Min li ser wê gelek mana xwend. Lê min zehmet dît. Û min biryar da ku ez vegerim vebijarkê bi tîpek PHP. Çend roj ji bo rastkirina vê senaryoyê derbas bûn. Û her tişt baş xebitî. Dûv re min jî senaryoyek ji bo lîstina podcastan nivîsî. Û min pir jê hez kir ku min biryar da ku projeyek piçûk bikim. Jê tê gotin IWScast. Li ser github hatî şandin.

Radyoya xweya înternetê

Her tişt pir hêsan e. Ez pelên mp3 û pelê index.php di peldanka root ya Apache /var/www/ de kopî dikim û ew bêhemdî têne lîstin. Nêzîkî 300 stran ji bo tevahiya rojê bes in.
Pelê index.php skrîpt bi xwe ye. Skrîpta hemî navên pelên MP3 yên di pelrêçekê de di nav rêzek de dixwîne. Stêrkek dengî diafirîne û navên pelên MP3-ê diguhezîne. Dem hene ku meriv li stranekê guhdarî dike û jê hez dike. Li gor we kî stranan dibêje? Ji bo rewşek weha, tomarek navên stranên ku hatine guhdarîkirin di têketinê de heye.txt
Koda skrîptê temam bike

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

Heke hûn hewce ne ku şop bi rêz bêne lîstin, wê hingê hûn hewce ne ku rêzê li index.php şîrove bikin

shuffle($files); //Random on

Ji bo podcastan ez /var/www/podcast/ bikar tînim index.php nivîsareke din jî heye. Ew bîranîna şopa podcastê heye. Cara din ku hûn wergirê Înternetê vekin, şopa podcastê ya din tê lîstin. Di heman demê de têketinek şopên lîstinkirî jî heye.
Di pelê counter.dat de, hûn dikarin jimareya şopê diyar bikin û lîstika podcastê dê jê dest pê bike.

Parserên ji bo dakêşana otomatîkî ya podcastan nivîsand. Ew 4 şopên herî dawî ji RSS digire û dakêşîne. Hemî ev li ser smartphone, qutiya set-top IPTV, an di gerokek de pir baş dixebite.

Sibeha din hat bîra min ku ew ê pir xweş be ku meriv pozîsyona lîstikê ya li ser rêgezê bi bîr bîne. Lê ez hîn nizanim ka meriv çawa di PHP-ê de vê yekê bikim.

Nivîsar dikare were daxistin github.com/iwsys/IWScast

Source: www.habr.com

Add a comment