ืจื“ื™ื• ืื™ื ื˜ืจื ื˜ ืžืฉืœืš

ืจื‘ื™ื ืžืื™ืชื ื• ืื•ื”ื‘ื™ื ืœื”ืื–ื™ืŸ ืœืจื“ื™ื• ื‘ื‘ื•ืงืจ. ื•ืื– ื‘ื•ืงืจ ื‘ื”ื™ืจ ืื—ื“ ื”ื‘ื ืชื™ ืฉืื ื™ ืœื ืจื•ืฆื” ืœื”ืื–ื™ืŸ ืœืชื—ื ื•ืช ืจื“ื™ื• FM ืžืงื•ืžื™ื•ืช. ืœื ืžืขื•ื ื™ื™ืŸ. ืื‘ืœ ื”ื”ืจื’ืœ ื”ืชื‘ืจืจ ื›ืžื–ื™ืง. ื•ื”ื—ืœื˜ืชื™ ืœื”ื—ืœื™ืฃ ืืช ืžืงืœื˜ ื”-FM ื‘ืžืงืœื˜ ืื™ื ื˜ืจื ื˜. ืงื ื™ืชื™ ืžื”ืจ ื—ืœืงื™ื ื‘ืืœื™ืืงืกืคืจืก ื•ื”ืจื›ื‘ืชื™ ืžืงืœื˜ ืื™ื ื˜ืจื ื˜.

ืœื’ื‘ื™ ืžืงืœื˜ ื”ืื™ื ื˜ืจื ื˜. ืœื‘ ื”ืžืงืœื˜ ื”ื•ื ื”ืžื™ืงืจื•-ื‘ืงืจ ESP32. ืงื•ืฉื—ื” ืž-KA-radio. ื”ื—ืœืงื™ื ืขืœื• ืœื™ 12 ื“ื•ืœืจ. ืงืœื•ืช ื”ื”ืจื›ื‘ื” ืืคืฉืจื” ืœื™ ืœื”ืจื›ื™ื‘ ืื•ืชื• ืชื•ืš ื™ื•ืžื™ื™ื. ืขื•ื‘ื“ ื”ื™ื˜ื‘ ื•ื™ืฆื™ื‘. ื‘-10 ื—ื•ื“ืฉื™ื ืฉืœ ืขื‘ื•ื“ื”, ื–ื” ืงืคื ืจืง ื›ืžื” ืคืขืžื™ื, ื•ืื– ืจืง ื‘ื’ืœืœ ื”ื ื™ืกื•ื™ื™ื ืฉืœื™. ืžืžืฉืง ื ื•ื— ื•ืžื—ื•ืฉื‘ ืžืืคืฉืจ ืฉืœื™ื˜ื” ืžืกืžืืจื˜ืคื•ืŸ ื•ืžื—ืฉื‘. ื‘ืžื™ืœื” ืื—ืช, ื–ื”ื• ืžืงืœื˜ ืื™ื ื˜ืจื ื˜ ื ืคืœื.

ื”ื›ืœ ื‘ืกื“ืจ. ืื‘ืœ ื‘ื•ืงืจ ืžื•ืงื“ื ืื—ื“ ื”ื’ืขืชื™ ืœืžืกืงื ื” ืฉืœืžืจื•ืช ืฉื™ืฉ ืœื™ ื’ื™ืฉื” ืœืขืฉืจื•ืช ืืœืคื™ ืชื—ื ื•ืช ืจื“ื™ื•, ืœื ื”ื™ื• ืชื—ื ื•ืช ืžืขื ื™ื™ื ื•ืช. ื”ืชืขืฆื‘ื ืชื™ ืžื”ืคืจืกื•ื ื•ืžื”ื‘ื“ื™ื—ื•ืช ื”ืžื˜ื•ืคืฉื•ืช ืฉืœ ื”ืžื’ื™ืฉื™ื. ืงื•ืคืฅ ืœืœื ื”ืจืฃ ืžืชื—ื ื” ืื—ืช ืœืื—ืจืช. ืื ื™ ืื•ื”ื‘ ืืช Spotify ื•ืืช Yandex.Music. ืื‘ืœ ื”ื“ื‘ืจ ื”ืขืฆื•ื‘ ื”ื•ื ืฉื”ื ืœื ืขื•ื‘ื“ื™ื ื‘ืžื“ื™ื ื” ืฉืœื™. ื•ืื ื™ ืจื•ืฆื” ืœื”ืื–ื™ืŸ ืœื”ื ื“ืจืš ืžืงืœื˜ ื”ืื™ื ื˜ืจื ื˜.

ื ื–ื›ืจืชื™ ื‘ื™ืœื“ื•ืชื™. ื”ื™ื” ืœื™ ืจืฉืžืงื•ืœ ื•ืฉื ื™ ืชืจื™ืกืจ ืงืœื˜ื•ืช. ื”ื—ืœืคืชื™ ืงืœื˜ื•ืช ืขื ื—ื‘ืจื™ื. ื•ื–ื” ื”ื™ื” ื ืคืœื. ื”ื—ืœื˜ืชื™ ืฉืื ื™ ืฆืจื™ืš ืœื”ื–ืจื™ื ืืช ืืจื›ื™ื•ืŸ ื”ืื•ื“ื™ื• ืฉืœื™ ืจืง ืœืžืงืœื˜ ืื™ื ื˜ืจื ื˜. ื›ืžื•ื‘ืŸ ืฉื™ืฉ ืืคืฉืจื•ืช ืœื—ื‘ืจ ื ื’ืŸ ืฉืžืข ืื• ืื™ื™ืคื•ื“ ืœืจืžืงื•ืœื™ื ื•ืœื ืœื“ืื•ื’. ืื‘ืœ ื–ื• ืœื ื“ืจื›ื ื•! ืื ื™ ืฉื•ื ื ืœื—ื‘ืจ ืžื—ื‘ืจื™ื)

ื”ืชื—ืœืชื™ ืœื—ืคืฉ ืคืชืจื•ื ื•ืช ืžื•ื›ื ื™ื. ื™ืฉ ื”ืฆืขื” ื‘ืฉื•ืง ืœื™ืฆื•ืจ ืจื“ื™ื• ืื™ื ื˜ืจื ื˜ ืžืฉืœืš ืž-Radio-Tochka.com. ื‘ื“ืงืชื™ ืืช ื–ื” ื‘ืžืฉืš 5 ื™ืžื™ื. ื”ื›ืœ ืขื‘ื“ ื‘ืกื“ืจ ืขื ืžืงืœื˜ ื”ืื™ื ื˜ืจื ื˜ ืฉืœื™. ืื‘ืœ ื”ืžื—ื™ืจ ืœื ื”ื™ื” ืื˜ืจืงื˜ื™ื‘ื™ ื‘ืขื™ื ื™. ื“ื—ื™ืชื™ ืืคืฉืจื•ืช ื–ื•.

ืฉื™ืœืžืชื™ ืื—ืกื•ืŸ ืฉืœ 10 GB. ื”ื—ืœื˜ืชื™ ืœื›ืชื•ื‘ ืชืกืจื™ื˜ ืขืœ ืžืฉื”ื• ืฉื™ื–ืจื•ื ืืช ื–ืจื ื”ืื•ื“ื™ื• ืฉืœ ืงื‘ืฆื™ ื”-MP3 ืฉืœื™. ื”ื—ืœื˜ืชื™ ืœื›ืชื•ื‘ ืืช ื–ื” ื‘-PHP. ื›ืชื‘ืชื™ ืื•ืชื• ื‘ืžื”ื™ืจื•ืช ื•ื”ืคืขืœืชื™ ืื•ืชื•. ื”ื›ืœ ืขื‘ื“. ื–ื” ื”ื™ื” ืžื’ื ื™ื‘! ืื‘ืœ ื›ืžื” ื™ืžื™ื ืœืื—ืจ ืžื›ืŸ ืงื™ื‘ืœืชื™ ืžื›ืชื‘ ืžื”ื ื”ืœืช ื”ืื™ืจื•ื—. ื”ื•ื ืืžืจ ืฉื—ืจื’ ืžืžื’ื‘ืœืช ื“ืงื•ืช ื”ืžืขื‘ื“ ื•ื”ืฆื•ืจืš ืœืฉื“ืจื’ ืœืชืขืจื™ืฃ ื’ื‘ื•ื” ื™ื•ืชืจ. ื”ื™ื” ืฆืจื™ืš ืœืžื—ื•ืง ืืช ื”ืชืกืจื™ื˜ ื•ืœื ื˜ื•ืฉ ืืช ื”ืืคืฉืจื•ืช ื”ื–ื•.

ืื™ืš ื–ื” ืงืจื”? ืื ื™ ืœื ื™ื›ื•ืœ ืœื—ื™ื•ืช ื‘ืœื™ ืจื“ื™ื•. ืื ื”ื ืœื ืžืืคืฉืจื™ื ืœืš ืœื”ืคืขื™ืœ ืืช ื”ืกืงืจื™ืคื˜ ืขืœ ืื™ืจื•ื— ืฉืœ ืžื™ืฉื”ื• ืื—ืจ, ืื– ืืชื” ืฆืจื™ืš ืฉืจืช ืžืฉืœืš. ืื™ืคื” ืืขืฉื” ืžื” ืฉื—ืฉืงื” ื ืคืฉื™.

ื™ืฉ ืœื™ ื ื˜ื‘ื•ืง ืขืชื™ืง ืœืœื ืกื•ืœืœื” (ืžืขื‘ื“ - 900 ืžื’ื”-ื”ืจืฅ, ื–ื™ื›ืจื•ืŸ RAM - 512 ืžื’ื”-ื‘ื™ื™ื˜). ื”ื–ืงืŸ ื›ื‘ืจ ื‘ืŸ 11. ืžืชืื™ื ืœืฉืจืช. ืื ื™ ืžืชืงื™ืŸ ืืช ืื•ื‘ื•ื ื˜ื• 12.04. ื•ืื– ืื ื™ ืžืชืงื™ืŸ ืืช Apache2 ื•-php 5.3, ืกืžื‘ื”. ื”ืฉืจืช ืฉืœื™ ืžื•ื›ืŸ.

ื”ื—ืœื˜ืชื™ ืœื ืกื•ืช ืืช Icecast. ืงืจืืชื™ ื”ืจื‘ื” ืžืื ื” ืขืœ ื–ื”. ืื‘ืœ ื”ื™ื” ืœื™ ืงืฉื”. ื•ื”ื—ืœื˜ืชื™ ืœื—ื–ื•ืจ ืœืื•ืคืฆื™ื” ืขื ืกืงืจื™ืคื˜ PHP. ื‘ื™ืœื™ื ื• ื›ืžื” ื™ืžื™ื ื‘ื ื™ืคื•ื™ ื‘ืื’ื™ื ื‘ืกืงืจื™ืคื˜ ื”ื–ื”. ื•ื”ื›ืœ ืขื‘ื“ ืžืฆื•ื™ืŸ. ืื—ืจ ื›ืš ื’ื ื›ืชื‘ืชื™ ืชืกืจื™ื˜ ืœื ื’ืŸ ืคื•ื“ืงืืกื˜ื™ื. ื•ื›ืœ ื›ืš ืื”ื‘ืชื™ ืฉื”ื—ืœื˜ืชื™ ืœืขืฉื•ืช ืคืจื•ื™ืงื˜ ืงื˜ืŸ. ืงืจืื• ืœื–ื” IWScast. ืคื•ืจืกื ื‘-github.

ืจื“ื™ื• ืื™ื ื˜ืจื ื˜ ืžืฉืœืš

ื”ื›ืœ ืžืื•ื“ ืคืฉื•ื˜. ืื ื™ ืžืขืชื™ืง ืืช ืงื‘ืฆื™ ื”-mp3 ื•ืืช ื”ืงื•ื‘ืฅ index.php ืœืชื™ืงื™ื™ืช ื”ืฉื•ืจืฉ ืฉืœ Apache /var/www/ ื•ื”ื ืžื•ืฉืžืขื™ื ื‘ืื•ืคืŸ ืืงืจืื™. ื‘ืขืจืš 300 ืฉื™ืจื™ื ืžืกืคื™ืงื™ื ืœื›ืœ ื”ื™ื•ื ื‘ืขืจืš.
ื”ืงื•ื‘ืฅ index.php ื”ื•ื ื”ืกืงืจื™ืคื˜ ืขืฆืžื•. ื”ืกืงืจื™ืคื˜ ืงื•ืจื ืืช ื›ืœ ื”ืฉืžื•ืช ืฉืœ ืงื‘ืฆื™ MP3 ื‘ืกืคืจื™ื” ืœืชื•ืš ืžืขืจืš. ื™ื•ืฆืจ ื–ืจื ืฉืžืข ื•ืžื—ืœื™ืฃ ืืช ื”ืฉืžื•ืช ืฉืœ ืงื‘ืฆื™ MP3. ื™ืฉ ืžืงืจื™ื ืฉื‘ื”ื ืืชื” ืžืงืฉื™ื‘ ืœืฉื™ืจ ื•ืืชื” ืื•ื”ื‘ ืื•ืชื•. ืžื™ ืœื“ืขืชื›ื ืฉืจ? ื‘ืžืงืจื” ื›ื–ื”, ื™ืฉ ื”ืงืœื˜ื” ืฉืœ โ€‹โ€‹ืฉืžื•ืช ื”ืจืฆื•ืขื•ืช ืฉื”ืื–ื™ื ื• ื‘ื™ื•ืžืŸ log.txt
ืงื•ื“ ืกืงืจื™ืคื˜ ืžืœื

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

ืื ืืชื” ืฆืจื™ืš ืฉื”ืจืฆื•ืขื•ืช ื™ื•ืฉืžืขื• ืœืคื™ ื”ืกื“ืจ, ืื– ืืชื” ืฆืจื™ืš ืœื”ืขื™ืจ ืืช ื”ืฉื•ืจื” ื‘-index.php

shuffle($files); //Random on

ืœืคื•ื“ืงืืกื˜ื™ื ืื ื™ ืžืฉืชืžืฉ ื‘-/var/www/podcast/ ื™ืฉ ืขื•ื“ ืกืงืจื™ืคื˜ index.php. ื™ืฉ ืœื• ืฉื™ื ื•ืŸ ืจืฆื•ืขื•ืช ืคื•ื“ืงืืกื˜. ื‘ืคืขื ื”ื‘ืื” ืฉืชืคืขื™ืœ ืืช ืžืงืœื˜ ื”ืื™ื ื˜ืจื ื˜, ืจืฆื•ืขืช ื”ืคื•ื“ืงืืกื˜ ื”ื‘ืื” ืชื•ืฉืžืข. ื™ืฉ ื’ื ื™ื•ืžืŸ ืฉืœ ืจืฆื•ืขื•ืช ืžื•ืฉืžืขื•ืช.
ื‘ืงื•ื‘ืฅ counter.dat, ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ืืช ืžืกืคืจ ื”ืจืฆื•ืขื” ื•ื”ืคืขืœืช ื”ืคื•ื“ืงืืกื˜ ืชืชื—ื™ืœ ืžืžื ื•.

ื›ืชื‘ ืžื ืชื—ื™ื ืœื”ื•ืจื“ื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืคื•ื“ืงืืกื˜ื™ื. ื–ื” ืœื•ืงื— ืืช 4 ื”ืจืฆื•ืขื•ืช ื”ืื—ืจื•ื ื•ืช ืž-RSS ื•ืžื•ืจื™ื“ ืื•ืชืŸ. ื›ืœ ื–ื” ืขื•ื‘ื“ ื ื”ื“ืจ ื‘ืกืžืืจื˜ืคื•ืŸ, ืžืžื™ืจ IPTV ืื• ื‘ื“ืคื“ืคืŸ.

ืœืžื—ืจืช ื‘ื‘ื•ืงืจ ืขืœื” ื‘ื“ืขืชื™ ืฉื™ื”ื™ื” ื ื”ื“ืจ ืœื–ื›ื•ืจ ืืช ืžื™ืงื•ื ื”ื”ืฉืžืขื” ื‘ืจืฆื•ืขื”. ืื‘ืœ ืื ื™ ืขื“ื™ื™ืŸ ืœื ื™ื•ื“ืข ืื™ืš ืœืขืฉื•ืช ืืช ื–ื” ื‘-PHP.

ื ื™ืชืŸ ืœื”ื•ืจื™ื“ ืืช ื”ืชืกืจื™ื˜ github.com/iwsys/IWScast

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”