A vostra propria radio internet

Parechje di noi piace à sente a radiu in a matina. È dopu una bella matina aghju realizatu chì ùn vulia micca sente e stazioni di radiu FM lucali. Ùn interessa micca. Ma l'abitudine s'hè vultatu per esse dannusu. E aghju decisu di rimpiazzà u receptore FM cù un receptore Internet. Aghju compru rapidamente pezzi in Aliexpress è assemblatu un receptore Internet.

Circa u ricevitore Internet. U core di u ricevitore hè u microcontroller ESP32. Firmware da KA-radio. I pezzi mi costanu $ 12. A facilità di assemblea m'hà permessu di assemblallu in un paru di ghjorni. Funziona bè è stabile. In 10 mesi di travagliu, si congelava solu un paru di volte, è dopu solu per i mo esperimenti. Una interfaccia còmuda è ben pensata permette di cuntrullà da un smartphone è un urdinatore. In una parolla, questu hè un maravigliu ricevitore Internet.

Tuttu hè bè. Ma una matina prima aghju ghjuntu à a cunclusione chì, malgradu avè accessu à decine di millaie di stazioni di radiu, ùn ci era micca stazioni interessanti. Eru fastidiu da a publicità è i scherzi stupidi di i presentatori. Saltendu constantemente da una stazione à l'altra. Mi piace Spotify è Yandex.Music. Ma a cosa triste hè chì ùn travaglianu micca in u mo paese. È mi piacerebbe à sente elli via u ricevitore Internet.

Aghju ricurdatu di a mo zitiddina. Aviu un magnetofono è duie ducine di cassette. Aghju scambiatu cassette cù l'amichi. È era maravigliu. Aghju decisu chì avia bisognu di trasmette i mo archivi audio solu à un receptore Internet. Di sicuru, ci hè una opzione per cunnette un lettore audio o iPod à i parlanti è ùn preoccupate micca. Ma questu ùn hè micca u nostru modu! Odiu i connettori di cunnessione)

Aghju cuminciatu à circà suluzioni pronti. Ci hè una offerta nantu à u mercatu per creà a vostra propria radiu Internet da Radio-Tochka.com. Aghju pruvatu per 5 ghjorni. Tuttu hà travagliatu bè cù u mo ricevitore Internet. Ma u prezzu ùn era micca attrattiva per mè. Aghju rifiutatu sta opzione.

Aghju pagatu hosting 10 GB. Aghju decisu di scrive un script nantu à qualcosa chì trasmette u flussu audio di i mo file mp3. Aghju decisu di scrive in PHP. Aghju scrittu prestu è lanciatu. Tuttu hà travagliatu. Era bellu! Ma un paru di ghjorni dopu aghju ricevutu una lettera da l'amministrazione di l'ospiti. Hà dettu chì u limitu di minuti di processore hè stata superata è a necessità di aghjurnà à una tarifa più alta. U script avia da esse sguassatu è sta opzione abbandunata.

Cumu hè accadutu ? Ùn possu campà senza radiu. Se ùn vi permettenu micca di eseguisce u script in l'ospitu di qualcunu altru, allora avete bisognu di u vostru servitore. Induve farà ciò chì a mo ànima vole.

Aghju un netbook anticu senza una bateria (CPU - 900 MHz, RAM - 512 Mb). U vechju hà digià 11 anni. Adatta per un servitore. Aghju installatu Ubuntu 12.04. Allora aghju installatu Apache2 è php 5.3, samba. U mo servitore hè prontu.

Aghju decisu di pruvà Icecast. Aghju lettu assai mana nantu à questu. Ma aghju trovu difficiule. E aghju decisu di vultà à l'opzione cù un script PHP. Un paru di ghjorni sò stati passati à debugging stu script. È tuttu hà travagliatu bè. Allora aghju ancu scrittu un script per ghjucà podcasts. È mi piacia tantu chì decisu di fà un picculu prughjettu. Chjamatu IWScast. Postatu nantu à github.

A vostra propria radio internet

Tuttu hè assai simplice. Copià i schedarii mp3 è u schedariu index.php in u cartulare di l'Apache root /var/www/ è sò ghjucati aleatoriamente. Circa 300 canzoni sò abbastanza per circa tuttu u ghjornu.
U schedariu index.php hè u script stessu. U script leghje tutti i nomi di i fugliali MP3 in un cartulare in un array. Crea un flussu audio è rimpiazza i nomi di i fugliali MP3. Ci sò volte quandu si sente una canzone è ti piace. Quale pensate chì canta ? Per un tali casu, ci hè una registrazione di i nomi di i brani ascoltati in u log log.txt
Codice di script cumpletu

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

Sè avete bisognu di e piste per esse ghjucate in ordine, allora avete bisognu di cummentà a linea in index.php

shuffle($files); //Random on

Per i podcasts aghju utilizatu /var/www/podcast/ Ci hè un altru script index.php. Hà a memorizazione di traccia di podcast. A prossima volta chì accende u ricevitore Internet, u prossimu podcast track hè ghjucatu. Ci hè ancu un logu di e piste ghjucate.
In u schedariu counter.dat, pudete specificà u numeru di traccia è a riproduzione di podcast principiarà da questu.

Scrive parsers per u scaricamentu automaticu di podcasts. Piglia l'ultime tracce 4 da RSS è li scarica. Tuttu chistu funziona bè in un smartphone, IPTV set-top box, o in un navigatore.

L'altra matina m'hè vinutu chì saria bella di ricurdà a pusizione di riproduzione nantu à una pista. Ma ùn sò ancu cumu fà questu in PHP.

U script pò esse telecaricatu github.com/iwsys/IWScast

Source: www.habr.com

Add a comment