Min egen internetradio

Mange av oss liker Ä hÞre pÄ radio om morgenen. En vakker morgen innsÄ jeg at jeg ikke ville hÞre pÄ lokale FM-radiokanaler. Det var ikke interessant. Men vanen viste seg Ä vÊre skadelig. Jeg bestemte meg for Ä erstatte FM-mottakeren med en internetradio. Jeg kjÞpte raskt deler pÄ AliExpress og satte sammen internetradioen.

Om internetradioen. Hjertet av radioen er mikrokontrolleren ESP32. Programvaren er fra KA-radio. Kostnadene for delene belÞp seg til 12 dollar. Den enkle sammenstillingen gjorde at jeg kunne montere det pÄ et par dager. Den fungerer godt og stabilt. I lÞpet av 10 mÄneders drift har den bare hengt seg opp et par ganger, og da bare pÄ grunn av mine eksperimenter. Det brukervennlige og gjennomtenkte grensesnittet lar deg styre den fra smarttelefonen og datamaskinen. Alt i alt er dette en fantastisk internetradio.

Alt er flott. Men en tidlig morgen kom jeg til konklusjonen om at til tross for tilgang til titusenvis av radiostasjoner, var det ingen interessante kanaler. Reklamen og de dumme vitsene til programlederne irritert meg. Jeg hoppet stadig fra en stasjon til en annen. Jeg liker Spotify og Yandex.Musikk. Men tristheten er at de ikke fungerer i mitt land. Jeg ville gjerne hĂžre dem gjennom internetradioen.

Jeg husket barndommen min. Jeg hadde en kassettspiller og et titalls kassetter. Jeg byttet kassetter med vennene mine. Det var herlig. Jeg bestemte meg for Ä streame mine audioarkiver kun til internetradioen. SelvfÞlgelig finnes det en mÄte Ä koble til en mediespiller eller iPod til hÞyttalerne og ikke tenke pÄ det. Men det er ikke vÄr vei! Jeg hater Ä koble til kontakter)

Jeg begynte Ä lete etter klare lÞsninger. Det finnes et tilbud pÄ markedet for Ä lage ditt eget internetradio fra Radio-Tochka.com. Jeg testet det i 5 dager. Med min internetradio fungerte alt perfekt. Men prisen var ikke attraktiv for meg. Jeg ga opp denne varianten.

Jeg har betalt hosting pÄ 10 GB. Jeg bestemte meg for Ä skrive et skript pÄ noe som ville streame lydstrÞmmen fra mp3-filene mine. Jeg bestemte meg for Ä skrive det i PHP. Jeg skrev raskt og satte det i gang. Alt fungerte. Det var flott! Men etter et par dager fikk jeg en e-post fra hostingadministrasjonen. Den sa at jeg hadde overskredet grensen for prosessorminutter og mÄtte oppgradere til et hÞyere abonnement. Jeg mÄtte slette skriptet og gi opp denne varianten.

Hvordan kan dette skje? Jeg klarer ikke Ä leve uten radioen. Hvis de ikke lar meg kjÞre skriptet pÄ en annen hosting, mÄ jeg ha min egen server. Hvor vil jeg gjÞre det som sjelen min Þnsker?

Jeg har en gammel laptop som ligger uten batteri (CPU - 900 MHz, RAM - 512 Mb). Den er allerede 11 Är gammel. Den vil vÊre helt grei som server. Jeg installerer Ubuntu 12.04. SÄ setter jeg opp Apache2 og PHP 5.3, Samba. Serveren min er klar.

Jeg bestemte meg for Ä prÞve Icecast. Jeg har lest mye dokumentasjon om det. Men jeg syntes det virket komplisert. SÄ jeg valgte Ä gÄ tilbake til PHP-skriptet. Jeg brukte et par dager pÄ Ä finjustere dette skriptet. Og alt fungerte perfekt. Deretter skrev jeg et skript for Ä spille av podcaster. Og jeg likte det sÄ godt at jeg bestemte meg for Ä lage et lite prosjekt. Jeg kalte det IWScast. Jeg la ut pÄ github.

Min egen internetradio

Alt er veldig enkelt. Jeg kopierer mp3-filer og filen index.php til rotmappen til Apache /var/www/ og de spilles av tilfeldig. Omtrent 300 sanger er nok for hele dagen.
Filene index.php er skriptet selv. Skriptet leser alle navnene pÄ mp3-filene i katalogen inn i et array. Det oppretter en lydstrÞm og setter inn navnene pÄ mp3-filene. Det er Þyeblikk nÄr du hÞrer en sang og liker den. Du tenker: Hvem synger dette? For slike tilfeller er det en logging av lyttede spor i log log.txt.
Koden til skriptet i sin helhet

<?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: ditt navn");
header("icy-description: din beskrivelse"); 
$files = glob("*.mp3");
shuffle($files); //Random on

for ($x=0; $x array(
       'method' =>'GET',
       'header' =>'Icy-MetaData: 1',
       'header' =>"Accept-language: enrn"
       )
     )
   );
//Save to log 
  $fl = $filePath; 
  $log = date('Y-m-d H:i:s') . ' Sang - ' . $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);
}
?>

Hvis du Þnsker at sporene skal spilles i rekkefÞlge, mÄ du kommentere ut linjen i index.php

shuffle($files); //Random on

For podcaster bruker jeg /var/www/podcast/. Der er det et annet skript index.php. I det er det en logging av podcastspor. Neste gang internettmottakeren slÄs pÄ, spilles det neste spor fra podcasten. Det er ogsÄ en logg over avspilte spor.
I filen counter.dat kan du angi spor nummeret, og avspilling av podcastene vil starte derfra.

Jeg har skrevet parserne for automatisk nedlasting av podcaster. Den henter de 4 nyeste sporene fra RSS og laster dem ned. Alt dette fungerer utmerket pÄ smarttelefon, IPTV-boks og i nettleseren.

Nylig fikk jeg en tanke om at det ville vÊre flott Ä huske avspillingsposisjonen pÄ sporet. Men jeg vet ikke enda hvordan jeg gjÞr dette i PHP.

Skriptet kan lastes ned github.com/iwsys/IWScast

Kilde: habr.com

KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere đŸ”„ KjĂžp pĂ„litelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere | ProHoster