Daudzi no mums no rītiem mīl klausīties radio. Un vienu skaistu rītu es sapratu, ka nevēlos klausīties vietējās FM radiostacijas. Nav interesanti. Bet ieradums izrādījās kaitīgs. Tāpēc es nolēmu nomainīt FM uztvērēju uz interneta uztvērēju. Ātri iegādājos detaļas no AliExpress un saliku interneta uztvērēju.
Par interneta uztvērēju. Uztvērēja sirds ir mikrokontrolieris ESP32. Programmatūra no KA-radio. Detaļu cena man izmaksāja 12 dolārus. Montāžas vienkāršība ļāva man to salikt dažu dienu laikā. Tas labi un stabilu darbojas. Pēdējo 10 mēnešu laikā tas ir uzkārojies tikai pāris reizes, un tas bija tikai manu eksperimentu dēļ. Parocīgs un pārdomāts interfeiss ļauj kontrolēt no viedtālruņa un datora. Arī citādi, tas ir brīnišķīgs interneta uztvērējs.
Viss ir lieliski. Bet vienā agrā rītā es sapratu, ka, būdams piekļuve desmitiem tūkstošu radiostaciju, nav interesantu staciju. Mani kaitināja reklāmas, stacijās vadītāju muļķīgās joku. Es pastāvīgi lēkāju no vienas stacijas uz citu. Man patīk Spotify un Yandex.Mūzika. Bet skumji ir tas, ka tie nedarbojas manā valstī. Es vēlētos tos klausīties caur interneta uztvērēju.
Es atcerējos savu bērnību. Man bija magnetofons un divdesmit kasetes. Es apmainījos ar kasetēm ar draugiem. Un tas bija brīnišķīgi. Es nolēmu, ka man vajadzētu straumēt savus audio arhīvus tikai uz interneta uztvērēju. Protams, ir iespēja pievienot audio atskaņotāju vai iPod pie skaļruņiem un neradīt galvassāpes. Bet tas nav mūsu ceļš! Neieredzu pievienot savienojumus)
Sāku meklēt gatavas risinājumus. Tirgū ir piedāvājums izveidot savu interneta radio no Radio-Tochka.com. Es to izmēģināju 5 dienas. Mans interneta uztvērējs viss darbojas lieliski. Bet cena izrādījās man nepievilcīga. Es atteicos no šī varianta.
Man ir apmaksāts hostings ar 10 GB. Nolēmu uzrakstīt skriptu uz kaut kā, lai būtu straumēšana no mana mp3 failu audio plūsmām. Nolēmu rakstīt PHP. Ātri uzrakstīju un palaidu. Viss strādāja. Bija lieliski! Bet pēc pāris dienām saņēmu vēstuli no hostinga administrācijas. Tajā tika teikts par procesoru stundu limitu pārsniegšanu un nepieciešamību pāriet uz augstāku tarifu. Skripts bija jāizdzēš un no šī varianta bija jāatsakās.
Kā tā? Es nevaru dzīvot bez radio. Ja man neļauj palaist skriptu svešā hostinga, tad jārūpējas par savu serveri. Kur es darīšu to, ko mana dvēsele vēlētos.
Man ir vecs klēpjdators, kas mētājas bez akumulatora (CPU — 900 MHz, RAM — 512 Mb). Vecītis jau 11 gadus. Tam perfekti derēs kā serverim. Es uzstādīšu Ubuntu 12.04. Pēc tam instalēju Apache2 un PHP 5.3, samba. Mans serveris ir gatavs.
Izlemu izmēģināt Icecast. Esmu daudz lasījis rokasgrāmatas par to. Bet tas man šķita sarežģīts. Tāpēc nolēmu atgriezties pie varianta ar PHP skriptu. Pāris dienas tika tērētas skripta labošanai. Un viss lieliski darbojās. Pēc tam es vēl uzrakstīju skriptu podcastu atskaņošanai. Man tas tik ļoti patika, ka nolēmu izveidot nelielu projektu. Nosaucu to par IWScast. .

Viss ir ļoti vienkārši. MP3 faili un index.php fails tiek kopēti Apache saknes mapē /var/www/ un tie tiek atskaņoti nejauši. Apmēram 300 dziesmas pietiek visai dienai.
Failā index.php ir pats skripts. Skripts nolasīja visus mp3 failu nosaukumus direktorijā masīvā. Izveido audio straumi un ieliek mp3 failu nosaukumus. Ir gadījumi, kad tu klausies dziesmu un tā tev patīk. Tu domā, kas to dzied? Šādā gadījumā ir iespēja saglabāt klausīto dziesmu nosaukumus žurnālā log.txt
Skripta kods pilnībā
<?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 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);
}
?>Ja nepieciešams, lai dziesmas tiktu atskaņotas secībā, tad index.php jākomentē rindiņa
shuffle($files); //Random onPodcastiem izmantoju /var/www/podcast/. Tur ir cits skripts index.php. Tajā ir iespēja atcerēties podcastu dziesmas. Nākamajā reizē, kad tiek ieslēgts interneta uztvērējs, tiek atskaņota nākamā podcast dziesma. Tāpat ir žurnāls par atskaņotajām dziesmām.
Failā counter.dat var norādīt dziesmas numuru, un no tā sāksies podcastu atskaņošana.
Es rakstīju parserus automātiskai podkāstu lejupielādei. Tas ņem no RSS 4 pēdējos ierakstus un lejupielādē tos. Viss tas lieliski darbojas viedtālrunī, IPTV ierīcē, pārlūkprogrammatūrā.
Nesen no rīta man radās doma, ka būtu lieliski ieviest atskaņošanas pozīcijas atcerēšanos ierakstā. Bet pagaidām nezināju, kā to izdarīt PHP.
Skriptu var lejupielādēt
Avots: habr.com
