మనలో చాలామంది ఉదయాన్నే రేడియో వినడానికి ఇష్టపడతారు. ఆపై ఒక సుప్రభాతం నేను స్థానిక FM రేడియో స్టేషన్లను వినకూడదని గ్రహించాను. ఆసక్తి లేదు. కానీ అలవాటు హానికరం అని తేలింది. మరియు నేను FM రిసీవర్ని ఇంటర్నెట్ రిసీవర్తో భర్తీ చేయాలని నిర్ణయించుకున్నాను. నేను త్వరగా Aliexpressలో భాగాలను కొనుగోలు చేసాను మరియు ఇంటర్నెట్ రిసీవర్ను సమీకరించాను.
ఇంటర్నెట్ రిసీవర్ గురించి. రిసీవర్ యొక్క గుండె ESP32 మైక్రోకంట్రోలర్. KA-రేడియో నుండి ఫర్మ్వేర్. విడిభాగాల ధర నాకు $12. అసెంబ్లీ సౌలభ్యం నన్ను రెండు రోజుల్లో సమీకరించడానికి అనుమతించింది. బాగా మరియు స్థిరంగా పనిచేస్తుంది. 10 నెలల పనిలో, ఇది రెండు సార్లు మాత్రమే స్తంభింపజేసింది, ఆపై నా ప్రయోగాల కారణంగా మాత్రమే. అనుకూలమైన మరియు బాగా ఆలోచించదగిన ఇంటర్ఫేస్ స్మార్ట్ఫోన్ మరియు కంప్యూటర్ నుండి నియంత్రించడానికి మిమ్మల్ని అనుమతిస్తుంది. ఒక్క మాటలో చెప్పాలంటే, ఇది అద్భుతమైన ఇంటర్నెట్ రిసీవర్.
అంతా ఓకే. కానీ ఒక తెల్లవారుజామున నేను పదివేల రేడియో స్టేషన్లకు ప్రాప్యత కలిగి ఉన్నప్పటికీ, ఆసక్తికరమైన స్టేషన్లు లేవని నిర్ధారణకు వచ్చాను. ప్రకటనలు మరియు సమర్పకుల తెలివితక్కువ జోక్లకు నేను చిరాకు పడ్డాను. నిరంతరం ఒక స్టేషన్ నుంచి మరో స్టేషన్కి దూకడం. నాకు Spotify మరియు Yandex.Music ఇష్టం. కానీ విచారకరమైన విషయం ఏమిటంటే వారు నా దేశంలో పని చేయరు. మరియు నేను ఇంటర్నెట్ రిసీవర్ ద్వారా వాటిని వినాలనుకుంటున్నాను.
నా బాల్యం గుర్తొచ్చింది. నా దగ్గర ఒక టేప్ రికార్డర్ మరియు రెండు డజన్ల క్యాసెట్లు ఉన్నాయి. స్నేహితులతో క్యాసెట్లు మార్చుకున్నాను. మరియు ఇది అద్భుతమైనది. నేను నా ఆడియో ఆర్కైవ్లను ఇంటర్నెట్ రిసీవర్కి మాత్రమే ప్రసారం చేయాలని నిర్ణయించుకున్నాను. వాస్తవానికి, స్పీకర్లకు ఆడియో ప్లేయర్ లేదా ఐపాడ్ని కనెక్ట్ చేయడానికి ఒక ఎంపిక ఉంది మరియు చింతించకండి. కానీ ఇది మా మార్గం కాదు! కనెక్టర్లను కనెక్ట్ చేయడాన్ని నేను ద్వేషిస్తున్నాను)
నేను రెడీమేడ్ పరిష్కారాల కోసం వెతకడం ప్రారంభించాను. Radio-Tochka.com నుండి మీ స్వంత ఇంటర్నెట్ రేడియోని సృష్టించడానికి మార్కెట్లో ఆఫర్ ఉంది. నేను 5 రోజులు పరీక్షించాను. నా ఇంటర్నెట్ రిసీవర్తో అంతా బాగానే పని చేసింది. కానీ ధర నాకు ఆకర్షణీయంగా లేదు. నేను ఈ ఎంపికను తిరస్కరించాను.
నేను హోస్టింగ్ 10 GB చెల్లించాను. నా mp3 ఫైల్ల ఆడియో స్ట్రీమ్ను ప్రసారం చేసే దానిపై స్క్రిప్ట్ రాయాలని నిర్ణయించుకున్నాను. నేను దానిని PHPలో వ్రాయాలని నిర్ణయించుకున్నాను. నేను దానిని త్వరగా వ్రాసి ప్రారంభించాను. అంతా పనిచేసింది. చల్లగా ఉంది! కానీ కొన్ని రోజుల తరువాత నాకు హోస్టింగ్ అడ్మినిస్ట్రేషన్ నుండి ఒక లేఖ వచ్చింది. ప్రాసెసర్ నిమిషాల పరిమితిని మించిపోయిందని, అధిక టారిఫ్కు అప్గ్రేడ్ చేయాల్సిన అవసరం ఉందని పేర్కొంది. స్క్రిప్ట్ తొలగించబడాలి మరియు ఈ ఎంపికను వదిలివేయాలి.
అది ఎలా జరిగింది? నేను రేడియో లేకుండా జీవించలేను. వేరొకరి హోస్టింగ్లో స్క్రిప్ట్ను అమలు చేయడానికి వారు మిమ్మల్ని అనుమతించకపోతే, మీకు మీ స్వంత సర్వర్ అవసరం. నా ఆత్మ కోరుకున్నది నేను ఎక్కడ చేస్తాను.
నా దగ్గర బ్యాటరీ లేని పురాతన నెట్బుక్ ఉంది (CPU - 900 MHz, RAM - 512 Mb). వృద్ధుడికి అప్పటికే 11 సంవత్సరాలు. సర్వర్కు అనుకూలం. నేను ఉబుంటు 12.04ను ఇన్స్టాల్ చేస్తున్నాను. అప్పుడు నేను Apache2 మరియు php 5.3, samba ని ఇన్స్టాల్ చేస్తాను. నా సర్వర్ సిద్ధంగా ఉంది.
నేను Icecast ప్రయత్నించాలని నిర్ణయించుకున్నాను. నేను దాని మీద చాలా మాన చదివాను. కానీ నాకు కష్టంగా అనిపించింది. మరియు నేను PHP స్క్రిప్ట్తో ఎంపికకు తిరిగి వెళ్లాలని నిర్ణయించుకున్నాను. ఈ స్క్రిప్ట్ను డీబగ్ చేయడానికి కొన్ని రోజులు గడిపారు. మరియు ప్రతిదీ గొప్పగా పనిచేసింది. అప్పుడు నేను పాడ్కాస్ట్లను ప్లే చేయడానికి స్క్రిప్ట్ కూడా రాశాను. మరియు అది నాకు బాగా నచ్చడంతో నేను ఒక చిన్న ప్రాజెక్ట్ చేయాలని నిర్ణయించుకున్నాను. దీనిని IWScast అని పిలిచారు.
ప్రతిదీ చాలా సులభం. నేను 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 ఫైల్లో, మీరు ట్రాక్ నంబర్ను పేర్కొనవచ్చు మరియు దాని నుండి పోడ్కాస్ట్ ప్లేబ్యాక్ ప్రారంభమవుతుంది.
పాడ్క్యాస్ట్ల ఆటోమేటిక్ డౌన్లోడ్ కోసం పార్సర్లను వ్రాశారు. ఇది RSS నుండి తాజా 4 ట్రాక్లను తీసుకుంటుంది మరియు వాటిని డౌన్లోడ్ చేస్తుంది. ఇవన్నీ స్మార్ట్ఫోన్లో, IPTV సెట్-టాప్ బాక్స్లో లేదా బ్రౌజర్లో అద్భుతంగా పని చేస్తాయి.
మరుసటి రోజు ఉదయం ట్రాక్లో ప్లేబ్యాక్ పొజిషన్ను గుర్తుంచుకోవడం చాలా బాగుంటుందని నాకు అనిపించింది. కానీ PHPలో దీన్ని ఎలా చేయాలో నాకు ఇంకా తెలియదు.
స్క్రిప్ట్ డౌన్లోడ్ చేసుకోవచ్చు
మూలం: www.habr.com