ããã«ã¡ã¯ããwhoamiãã
ãã®æçš¿ã§ã¯ãã€ã³ã¿ãŒããããããŒããã£ã¹ããèªååããæ¹æ³ã®1ã€ã«ã€ããŠèª¬æããŸããããã¯ãæãä¿¡é Œã§ããæ¹æ³ã§ã¯ãªããæãäºç®ããããæ¹æ³ã§ãã ç§ã¯ããã«ããã®ã·ã¹ãã ãLinuxã§ã®äœ¿çšã«åããããŠããããšãèŠåããŸãããããªãã¿ã®ã倧工éå
·ãã®å©ããåããŠWindowsã§ãããå®è£
ããããšã¯å¯èœã§ãã ãã®èšäºã¯åå¿è
ã®ITå°éå®¶ã察象ãšããŠããŸãããã®ãããç§ã¯å€ãã®ç¬éããåããããšã詊ã¿ãŸããã ç§ãã©ããã£ãŠãããããã®ããããã¯ããªã次第ã§ããç§ã®èŠªæãªãèªè
ã
ãŸããã
ãã®ããããŸãèªåã«èšå®ããç®æšã«ã€ããŠèª¬æããŸãã
1. 24æé365æ¥ããã³ã¹ãããã§æŸéããŸãïŒå®¶ã®åé»ã¯ã«ãŠã³ãããŸããïŒã
2.ã¹ã±ãžã¥ãŒã«ãããæŸéã ã€ãŸããæŸéäžã®ç¹å®ã®æéã«ãç¹å®ã®ã¹ã¿ã€ã«/ãžã£ã³ã«ã®æã鳎ããŸãã
3.ãã¹ã¿ãŒ/ DJã®ãããããæ¥ç¶ããã³åæã®ãµããŒãã
4.ãµã€ãã®èŠä»¶ïŒ
4.a. é¿ãã®ããçµæç©ã®æç¥šã®æ§ãããªå®è£
ãããã³ããã«å¿ããŠãTOP-20 / 30 /蚱容ç¯å²ã®è©äŸ¡ã
4.b. çŸåšã®ãã©ãã¯ãçŸåšã®ã¹ã¿ã€ã«/ãžã£ã³ã«ãããã³å¿
èŠã«å¿ããŠãªã¹ããŒã®æ°ã«é¢ããæ
å ±ã
ããã§ãç§ã®ãé ãå ŽæãïŒããæ£ç¢ºã«ã¯ããã³ããªãŒïŒã«ãã£ããã®ã«ã€ããŠå°ã説æããŸãã
-2003ããŒã ã³ã³ãã¥ãŒã¿ãŒãAMD Athlon 1.8 GHzãããã¯é·ãéããŒã ãµãŒããŒãšããŠåäœããŠããŸããïŒãšããã§ãé»åãç¯çŽããããã«ã¯ããã¯åšæ³¢æ°ã1.1 GHzã«äžããŸããïŒã
-Gentoo Linuxãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã
-ã°ããŒãã«ãããã¯ãŒã¯ãžã®ã¢ã¯ã»ã¹ã10Mbit / s +å°çšIP;
IcecastãµãŒããŒã®ã»ããã¢ãã
è¡ããŸãããã ããã°ã©ã ã®ã€ã³ã¹ããŒã«ã«ã€ããŠã¯èª¬æããŸããã ã»ãšãã©ã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ã¯ããããã¯ãªããžããªã§å©çšå¯èœã§ããã1ã€ã®ããŒã ã«ãã£ãŠã€ã³ã¹ããŒã«/çµã¿ç«ãŠãããŸãã
Icecast 2.3.2ã¯ããã³ã¹ããã-icesã®ãœãŒã¹ã¯ã©ã€ã¢ã³ããšããŠãµãŒããŒãšããŠéžæãããŸããïŒããŒãžã§ã³ãèŠããŠããŸããïŒã
ã€ã³ã¹ããŒã«åŸã次ã®ããã«Icecastãæ§æããå¿
èŠããããŸãã
ãã¡ã€ã«/etc/icecast2/icecast.xmlïŒ
<icecast> <limits> <sources>2</sources> <burst-size>32768</burst-size> <threadpool>5</threadpool> </limits> <authentication> <admin-user>admin</admin-user> <admin-password>_</admin-password> </authentication> <directory> <yp-url-timeout>15</yp-url-timeout> <yp-url>http://dir.xiph.org/cgi-bin/yp-cgi</yp-url> </directory> <directory> <yp-url-timeout>15</yp-url-timeout> <yp-url>http://www.oddsock.org/cgi-bin/yp-cgi</yp-url> </directory> <hostname>_IP_</hostname> <listen-socket> <port>__</port> <!â 8000 --> </listen-socket> <fileserve>1</fileserve> <paths> <basedir>/usr/share/icecast</basedir> <logdir>/var/log/icecast</logdir> <webroot>/home/www/icecast</webroot> <adminroot>/home/www/icecast/admin</adminroot> <alias source="/" dest="/status.xsl"/> </paths> <logging> <accesslog>access.log</accesslog> <errorlog>error.log</errorlog> <loglevel>3</loglevel> </logging> <mount> <mount-name>/non-stop</mount-name> <password>_-</password> <max-listeners>___</max-listeners> <charset>cp1251</charset> <public>0</public> <stream-name>_</stream-name> <stream-description>24/7 Non-stop music</stream-description> <stream-url>_</stream-url> <genre>Electronic</genre> <!-â --> <bitrate>128</bitrate> <type>audio/mpeg</type> <subtype>mp3</subtype> <hidden>0</hidden> </mount> <mount> <mount-name>/live</mount-name> <password>__</password> <max-listeners>100</max-listeners> <fallback-mount>/non-stop</fallback-mount> <fallback-override>1</fallback-override> <fallback-when-full>0</fallback-when-full> <charset>cp1251</charset> <public>1</public> <stream-name>_</stream-name> <stream-description>_</stream-description> <stream-url>_</stream-url> <genre>Electronic</genre> <bitrate>128</bitrate> <type>audio/mpeg</type> <subtype>mp3</subtype> <hidden>0</hidden> </mount> <security> <chroot>0</chroot> <changeowner> <user>icecast</user> <group>nogroup</group> </changeowner> </security> </icecast>
æ°·ã®èšå®
æ°·ãèšå®ãããšãç©äºãç°¡åã«ãªããŸã
ãã¡ã€ã«/etc/ices.confïŒ
<ices:Configuration xmlns:ices="http://www.icecast.org/projects/ices"> <Playlist> <File>/home/PUBLIC/Music/playlist.m3u</File> <Randomize>0</Randomize> <Type>builtin</Type> <Module>ices</Module> <Crossfade>1</Crossfade> </Playlist> <Server> <Hostname>localhost</Hostname> <Port>_</Port> <Password>_</Password> <Protocol>http</Protocol> </Server> <Execution> <Background>1</Background> <Verbose>1</Verbose> <Base_Directory>/tmp</Base_Directory> </Execution> <Stream> <Server> <Hostname>localhost</Hostname> <Port>_</Port> <Password>_</Password> <Protocol>http</Protocol> </Server> <Mountpoint>/non-stop</Mountpoint> <Name>_</Name> <Genre>Electronic</Genre> <Description>24/7 Non-stop music</Description> <URL>_</URL> <Bitrate>128</Bitrate> <Public>1</Public> <Reencode>0</Reencode> <Samplerate>-1</Samplerate> <Channels>2</Channels> </Stream> </ices:Configuration>
ãã®ãããIcecastãµãŒããŒã¯æ§æãããŠãããæ¢ã«éå§ã§ããŸãïŒéåžžã/ etc / init.d / icecast startïŒã
Icesãèšå®ãããŠããŸããããã³ã¹ãããã®ãã¬ã€ãªã¹ãããªããããèµ·åããã«ã¯æ©ãããŸãã
å®éã«ãä»ããä¿®æ£ããŸã...
ãã¬ã€ãªã¹ããäœæãã
å°ããªç޹ä»ã ç§ã¯ãã®ã©ãžãªå±ãäžäººã§ã¯ãªããç§ã®ã³ã³ãã¥ãŒã¿ãŒãããã¯ããã«å€ãã®é³æ¥œãæã£ãŠããå人ãšäžç·ã«æã«å
¥ããŸããã 以åã¯ãã³ã³ãã¥ãŒã¿ãŒãšãµãŒããŒã®éã§ä»®æ³ãã©ã€ããŒããããã¯ãŒã¯ïŒVPNïŒãäœæãããŠããããããã¡ã€ã«ãå®å
šã«äº€æã§ããŸããã ãã¹ãŠã®ãã©ãã¯ããsamba-ballã§å©çšå¯èœãªãµãŒããŒäžã®å¥ã®ãã£ã¬ã¯ããªã«ãã³ã¹ãããã§ä¿åããååããã©ãã¯ãã¢ããããŒãïŒãŸãã¯åé€ïŒã§ããããã«ããããšã«ããŸããã
ãã£ã¬ã¯ããªæ§é ã¯åçŽã§ãïŒ
ãã¥ãŒãžãã¯
-ãžã£ã³ã«1
---- File1.mp3
---- File2.mp3
---- ...
---- playlist.m3u
-ãžã£ã³ã«2
---- File1.mp3
---- File2.mp3
---- ...
---- playlist.m3u
...
playlist.m3u
ã€ãŸã ã¡ã€ã³ã®é³æ¥œã«ã¿ãã°ã«ã¯ãããŸããŸãªã¹ã¿ã€ã«ã®ããã€ãã®ãµããã£ã¬ã¯ããªããããŸãïŒãã³ã¹ãããã¹ã±ãžã¥ãŒã«ã«ã€ããŠè©±ããŠããããšãæãåºããŠãã ããïŒã åãµããã£ã¬ã¯ããªã«ã¯ãmp3ãã¡ã€ã«ãš1ã€ã®ãã¬ã€ãªã¹ããå«ãŸããŠããŸãã
ããã§ã¯ããã¹ãŠã®ã¹ã¿ã€ã«ã®ãã¬ã€ãªã¹ããäœæããããã®å°ããªBASHã¹ã¯ãªããããå§ããŸãããã
Music_find.shãã¡ã€ã«ïŒã¹ã¯ãªãããç°¡çŽ åããŠããã
differentlocalã«æè¬ïŒ
泚ïŒé»å鳿¥œããé ãé¢ãã人ã
ã®ããã«ãç§ã¯BreaksãChillãHardcoreã¯é»å鳿¥œã®åãªãã¹ã¿ã€ã«ã§ãããšèª¬æããŸããç§ã®ååã¯Linuxããé ãé¢ããŠããããã£ã¬ã¯ããªã®å
å®¹ãæŽæ°ããåŸãSSHã«ãã°ãªã³ããŠãã®ã¹ã¯ãªãããå®è¡ã§ããªãããããã®ããã·ã§ã³ãGreat Cronusã«å§ä»»ããããšã決å®ãããŸããã
ããã§ã30åããšã«ã¹ã¯ãªãããå®è¡ããããã¬ã€ãªã¹ããæŽæ°ãããŸãã
ãã ãããŸã å¿ããŠããªãå Žåã¯ãices configã§ãã¡ã€ã³ããã¬ã€ãªã¹ããæå®ãããŠããŸããããã®ã¹ã¯ãªããã§ã¯äœæãããŸããã
ããã§ãã¹ã±ãžã¥ãŒã«ãèŠããŠããå¿
èŠããããŸãã ã¢ã€ãã¢ã¯ç°¡åã§ããæ¥ãããããå±ã§ããç¹å®ã®æéïŒæŸéæé垯ïŒã«ãç®çã®ãã¬ã€ãªã¹ãã鳿¥œã®ã«ãŒããã£ã¬ã¯ããªïŒç§ã®å Žåã¯/ home / PUBLIC / MusicïŒã«ã³ããŒããŠçœ®ãæããŸãã åœåã¯ã¹ã±ãžã¥ãŒã«ãå®å
šã«BASHã«å®è£
ããããšãèããŠããŸããããè¯ãKronãåžžã«ç§ãã¡ãå©ãããã¹ãŠã®æ±ãä»äºãããæºåãã§ããŠããããšãæãåºããŸããã ãããã£ãŠãã¹ã±ãžã¥ãŒã«ã«åŸã£ãŠãã¬ã€ãªã¹ããžã®å€æŽãå®è£
ããã¹ã¯ãªãããçºçããŸããã
ãããããŸãäœè«...
ã¢ã€ã¹ãæ§æãããšãã«ãã©ã³ãã åæ©èœããªãã«ããããšãèŠããŠããŸããïŒ ãªãã ãããïŒ 2ã€ã®çç±ããããŸãã
1.ç¥ã¯ãæ°·ãã©ã®ããã«ã©ã³ãã åãè¡ãããç¥ã£ãŠããŸãã ç§ã¯ïŒãã¿ãŸããïŒç¶æ³ãå¯èœãªéãå¶åŸ¡ããã®ã«æ
£ããŠããŸãã ãããã£ãŠãããªããæãããã«ã©ã³ãã åãè¡ãããšã¯ãéããŸã èœã¡çãããã«è¯ãã§ãã
2.ãã®èšäºãèªãã§ãããªãããããããjingleããšããçšèªãç¥ã£ãŠããã§ãããã ãã®ããã空æ°ã«ãžã³ã°ã«ãæ¿å
¥ããå ŽåïŒããšãã°3ãã©ãã¯ããšïŒãæ°·ã¯ç¡åã§ãã 圌ã¯ãããäœã§ãããç¥ããªãã ããã¯ãç¬èªã®ã©ã³ãã åããã°ã©ã ãäœæãããã1ã€ã®çç±ã§ãã
ãã¡ãããBASHã¯è¯ãããšã§ããããã®ã¿ã¹ã¯ã§ã¯C ++èšèªãéžæããŸããã 以äžã¯ã以åã«äœæããããã¬ã€ãªã¹ããã¡ã€ã«ïŒååããã©ã¡ãŒã¿ãŒãšããŠæž¡ãããïŒã®å
容ãåã«èªã¿åãããããæ··åããåããã¡ã€ã«ã«æžã蟌ãC ++ããã°ã©ã ã®ãœãŒã¹ã³ãŒãã§ãã
ã©ã³ãã åããã°ã©ã ã®ãœãŒã¹ã³ãŒãïŒ
#include <iostream> #include <fstream> #include <cstdlib> #include <ctime> #include <string> #include <vector> using namespace std; int main(const int argc, const char *argv[]) { if (argc<2) { cout << "ERROR: no argument recieved." << endl; return 1; } vector<string> list; string line; ifstream infile(argv[1]); if (infile.fail()) return 1; cout << "Using file: " << argv[1] << endl; while (!infile.eof()) { getline(infile,line); list.push_back(line); } infile.close(); cout << "End of file reached." << endl; int n = list.size(); if (n>1) { cout << "Begin shuffle." << endl; srand(time(0)); string temp; for (int i=0; i<(n-1); i++) { int r = i + (rand() % (ni)); temp = list[i]; list[i] = list[r]; list[r] = temp; } cout << "Finished shuffle." << endl; ofstream outfile(argv[1]); for (int i=0; i<n; i++) outfile << list[i] << endl; outfile.close(); cout << "File succuessfully updated." << endl; return 0; } return 1; }
ãã®ããã°ã©ã ã§ã¯ããžã³ã°ã«æ¿å
¥ãå®è£
ããŸããã§ããããèªè
ã®çããããã®ã³ãŒããããŒãºã«åãããŠç°¡åã«åŸ®èª¿æŽã§ããããããã«è¯ãããšã«ãç¬èªã®ã³ãŒããäœæã§ããããšãå¿ããé¡ã£ãŠããŸãã
ã¹ã±ãžã¥ãŒã«ã®å®æœ
äœè«ã¯çµãããã¹ã±ãžã¥ãŒã«ã«æ»ããŸãã
Playlist_updateãã¡ã€ã«ïŒ
æåã«ãã¹ã¯ãªããã¯ç®çã®ãã¬ã€ãªã¹ããã¡ã€ã«ã眮ãæããŠã³ããŒãå®è¡ããæ¬¡ã«ã©ã³ãã åããã°ã©ã ãèµ·åããŠãçŸåšã®ãžã£ã³ã«ãããã¹ããã¡ã€ã«ã«æžã蟌ã¿ãŸãïŒçç±ã¯åŸã§ããããŸãïŒ
ããã¬ã€ãªã¹ãã®åèªã¿èŸŒã¿ãã¢ã€ã¹ã«ä¿¡å·ãéä¿¡ããŸãã 以åã«icesãã·ã£ããããŠã³ããå Žåãã¹ã¯ãªããã¯ãããå床å®è¡ããŸãã çŸåšã®ãã©ãã¯ã®åçãçµäºãããšãã«ã®ã¿ãã¢ã€ã¹ãæ°ãããã¬ã€ãªã¹ãã®åçãéå§ããããšãç¥ã£ãŠããããšãéèŠã§ãã ãããã£ãŠãã¹ã±ãžã¥ãŒã«ã¯ããŸããšã¬ã¬ã³ãã«èŠããŸããããå人ã®ã¯ãã³ã«å§ããããšãã§ããŸãã
ç§ã®ã¹ã¿ã€ã«ã®äŸãæããŸãïŒ
crontab -e 58 01 * * * /root/scripts/radio/playlist_update Breaks 58 03 * * * /root/scripts/radio/playlist_update Chill 58 09 * * * /root/scripts/radio/playlist_update Dance 58 14 * * * /root/scripts/radio/playlist_update House 58 17 * * * /root/scripts/radio/playlist_update Trance 58 21 * * * /root/scripts/radio/playlist_update Hardstyle 58 23 * * * /root/scripts/radio/playlist_update Hardcore
ãããŒïŒ ããã§ãäºå®ãããŠããæŸéã®æ§ç¯ãå®äºããŸããã DJãããªããšãã¯ãã¹ã±ãžã¥ãŒã«ã©ããã«ãã³ã¹ãããã§æŒå¥ããDJãçŸãããšããªã¹ããŒã¯èªåçã«ããããŒããã£ã¹ããã«ãªãã€ã¬ã¯ããããŸãã ãã ããèŠããŠããå Žåããµã€ãã«é¢ããæªå®çŸã®ã¿ã¹ã¯ããŸã ãããŸãã
鳿¥œããŒã¿ããŒã¹
ãããããç§ã¯å®å
šã«å¿ããŠããŸããã æç¥šã·ã¹ãã ãå®è£
ããããã«ãMySQLããŒã¿ããŒã¹ã䜿çšããŸããã åã ã¡ãäžçæžåœé 匵ã£ãŠãã ããã
ãã®ããããã«ãŒã鳿¥œãã£ã¬ã¯ããªãã«ãããã¹ãŠã®ãã©ãã¯ã«é¢ããæ
å ±ãããŒã¿ããŒã¹ã«ä¿åããå¿
èŠããããŸãã ããŒã¿ããŒã¹ãäœæããå¿
èŠãããïŒç§ã®äŸã§ã¯ãã©ãžãªã§ãïŒãæ¬¡ã®æ§é ãæã€2ã€ã®ããŒãã«ããããŸãã
æã®è¡š
id INTïŒ11ïŒAUTO_INCREMENT PRIMARY_KEY
ãžã£ã³ã«VARCHARïŒ15ïŒ
ã¿ã€ãã«VARCHARïŒ100ïŒ
ãã¡ã€ã«åVARCHARïŒ200ïŒ
ã¬ãŒãINTïŒ11ïŒ
æç¥šè¡š
id INTïŒ11ïŒ
ip VARCHARïŒ16ïŒ
æ²ããããšã«ã€ããŠã 第1ã«ããã¹ãŠã®mp3ãã¡ã€ã«ïŒã©ã€ã»ã³ã¹ãããŠãããã®ãå«ãïŒã«æ£ããID3ã¿ã°ãããããã§ã¯ãªããã»ãšãã©ã®ãã¡ã€ã«ã«ã¯ãŸã£ãããããŸããã æ¬¡ã«ããã¡ã€ã«ããID3ã¿ã°ãèªã¿åãã¹ã¯ãªãããèŠã€ãããŸããã§ããã ãããã£ãŠãç§ã¯ããã€ãã®ç ç²ãæããªããã°ãªããŸããã§ããã ã€ãŸããTagScannerããã°ã©ã ã䜿çšããŠããã¹ãŠã®ãã¡ã€ã«ã®ID3ã¿ã°ãæåã§ç·šéããåãããã°ã©ã ã䜿çšããŠãæ¢ã«æå¹ãªID3ã¿ã°ã«åŸã£ãŠãã¡ã€ã«ã®ååã倿ŽããŸãã æ¬¡ã®ãã³ãã¬ãŒããéžæããŸããã
<ã«ãŠã³ã¿ãŒ>ã <ã¢ãŒãã£ã¹ã>-<äœæ²> .mp3
ãã®èšäºã§ã¯ããã®ããã°ã©ã ã§ã®äœæ¥ã«ã€ããŠã¯èª¬æããŸããã UTF-8ã§ã¯ãªããã¹ãŠã®ID3ã¿ã°ãä¿åããããšãåºæ¬çã«éèŠã§ãããšããèšã
ãŸãã ã ããã°ã©ã èšå®ã«ã¯ã察å¿ãããªãã·ã§ã³ããããŸãã ããã«ããã¹ãŠã®æåãïŒãããããšãã°andã«çœ®ãæããå¿
èŠããããŸãã ããã°ã©ã ã䜿çšãããšããã¹ãŠã®ãã¡ã€ã«ã«å¯ŸããŠãããããã«è¡ãããšãã§ããŸãã
OKããã¿ãŒã³ã«äžèŽããæ£ãããã¡ã€ã«åããããããŒã¿ããŒã¹ã®æ§é ãæ£ãããšä»®å®ããŸãã ããã«ãå®éã«ã¯å¥ã®ã¹ã¯ãªããã§ãããæ¢ã«PHPã«å«ãŸããŠããŸãïŒãã®ãããèªç±ã«ã€ã³ã¹ããŒã«ããããšãå¿ããªãã§ãã ããïŒã
Db_update.phpãã¡ã€ã«ïŒ
äžèšã®ã¹ã¯ãªããã¯ãæåã«å¯Ÿå¿ãããã£ã¬ã¯ããªã«ãªããªã£ããã©ãã¯ã«é¢ããããŒã¿ããŒã¹ããã¬ã³ãŒããåé€ããæ¬¡ã«æ°ãããã©ãã¯ãããã°è¿œå ããŸãã
ãã¬ã€ãªã¹ããã³ã³ãã€ã«ããçŽåŸã«ãã®ã¹ã¯ãªãããå®è¡ããããšã¯è«ççã§ãããããmusic_find.shãã¡ã€ã«ã«1è¡è¿œå ããŸãïŒæåã«ããã¹ãç¬èªã®ãã¹ã«çœ®ãæããŸãïŒã
/root/scripts/radio/db_update.php
çŸåšããã¬ã€ãªã¹ããã³ã³ãã€ã«ãããšãããŒã¿ããŒã¹å
ã®æ
å ±ãèªåçã«æŽæ°ãããŸãã
2çªç®ã®ããŒãã«ïŒæç¥šïŒããããã€ãåããŸãã
æŸéæ
å ±åé
ããã§ã¯ãç¹ã«è©³çްã«ã¯è§ŠããŸããã çŸåšã®ãã©ãã¯ã®ååãã¹ã¿ã€ã«ããªã¹ããŒã®æ°ãããã¹ããã¡ã€ã«ã«æžã蟌ãphpã¹ã¯ãªããã«æ³šç®ããŠãã ããã ãããã®ãã¡ã€ã«ã¯ãç§ãã¡ã®ãµã€ãã®ã«ãŒããã€ãŸã ç§ã®å人ã§ããããªããWebãµãŒããŒãã€ã³ã¹ããŒã«ããŠããªãå Žåã¯ãæ¥ãã§ã€ã³ã¹ããŒã«ããŠãã ããã
ãã¡ã€ã«icecast_status.phpïŒ
ãã®ã¹ã¯ãªããã¯æ¯åå®è¡ããå¿
èŠãããã5ç§ã®é
å»¶ã§12åå®è¡ãããŸãã ãã®ããã€ã¯ãã¯ãå人ã®ã¯ãã³ã1åæªæºã®æéåäœã®ååšãæç€ºããŠããªããšããäºå®ã«ãããã®ã§ãã ãããŠãå°ãªããšã5ç§ããšã«ãã®æ
å ±ãæŽæ°ããå¿
èŠããããŸãã
ããŠããã®ã¹ã¯ãªãããæ¯åå®è¡ããããã«ïŒæåŸã«ïŒCronã«äŸé ŒããŠãã ããã
crontab -e */1 * * * * /root/scripts/radio/icecast_status.php
OKãä»ç§ãã¡ã®ãµã€ãã®ã«ãŒãã«ã¯ãã§ã«5ã€ã®çŽ æŽããããã¡ã€ã«ããããŸãïŒ
â¢now_playing.txt-çŸåšã®ãã©ãã¯ã®ã¢ãŒãã£ã¹ããšååã
â¢id.txt-çŸåšã®ã³ã³ããžã·ã§ã³ã®ããŒã¿ããŒã¹å
ã®äžæã®çªå·ã
â¢genre.txt-ãã³ã¹ãããã§åçããŠããå Žåã¯ãã©ãã¯ã®ã¹ã¿ã€ã«ãDJãæŸéäžã®å Žåã¯ãDJ On-Airãã®ã©ã€ã³ã
â¢listeners.txt-ãªã¹ããŒã®æ°ïŒHTML圢åŒãèæ
®ïŒ0ãã倧ããå Žåã¯ç·ããŒãã®å Žåã¯ç·-é»ïŒã
â¢rate.txt-è©äŸ¡ã远跡ããŸãïŒHTML圢åŒãèæ
®ã«å
¥ããŸãïŒã
ãããŒãç§ãã¡ã¯ç§ãã¡ã欲ããã£ããã®ïŒãŸãã¯ç§ã欲ããã£ããã®ïŒãã»ãšãã©æã«å
¥ããŸããã æç¥šã宿œããå®éã«ãµã€ãã«å¿
èŠãªæ
å ±ã衚瀺ããããšãæ®ã£ãŠããŸãã
æã«æç¥šãã
æç¥šãå®è£
ããããšãã«æåã«èããã®ã¯ã1ã€ã®ãã©ãã¯ã®ç¹°ãè¿ãæç¥šããããã¯ããæ¹æ³ã§ãããïŒ ã¯ãããŒã¯é垞䜿çšãããŸãããç§ã¯ãããã䜿çšããããšã¯ãªãïŒããã§ãããããèµ·ãããŸãïŒãIPã¢ãã¬ã¹ã§ãããã¯ããããšã«ããŸããã ãããã£ãŠãvotesããŒãã«ã«ã¯idãšipã®2ã€ã®ãã£ãŒã«ããããããŸããã
ãã¡ã€ã«vote.phpïŒãµã€ãã®ã«ãŒãã«é
眮ããå¿
èŠããããŸãïŒïŒ
<?php
ãã®ã¹ã¯ãªããã¯ã1ã€ã®ãã©ã¡ãŒã¿ãŒ-æç¥šã®ã¿ã€ãïŒè³æãŸãã¯å察ïŒãåããŸãã ãããã£ãŠãåŒã³åºã
vote.php?type=plus
çŸåšã®ãã©ãã¯ã«1ã€ã®è©äŸ¡ã远å ããŸãã
vote.php?type=minus
1ã€ã®è©äŸ¡ã奪ããŸãã
ãµã€ãã®æ
å ±ã衚瀺ãã
ã ãããæç¥šããããŸãã ããããããµã€ãã«å¿
èŠãªãã¹ãŠã®æ
å ±ã衚瀺ããããã«æ®ã£ãŠããŸãã ç¹å®ã®HTMLã³ãŒãã¯æäŸããŸããã ãã°ãããjQueryãã¬ãŒã ã¯ãŒã¯ã®ååšãçªç¶å¿ããŠããŸã£ãå Žåã¯ãæãåºãããŠãã ããã
HTMLã³ãŒãã®é©åãªå Žæã«ããã©ãã¯åã«id = 'now_playing'ããžã£ã³ã«ã«id = 'genre'ãªã©ã®èŠçŽ ãããããã«ããŸãã
次ã«ã次ã®åŒã³åºãã«åã蟌ããšäŸ¿å©ã§ãïŒãã¡ãããjQueryã©ã€ãã©ãªããµã€ããã£ã¬ã¯ããªã«è¿œå ããŠæ¥ç¶ããå¿
èŠããããŸãïŒã
<script> function show() { $.ajax({ url: "now_playing.txt", cache: false, success: function(html){ $("#now_playing").html(html); } }); $.ajax({ url: "genre.txt", cache: false, success: function(html){ $("#genre").html(html); } }); $.ajax({ url: "listeners.txt", cache: false, success: function(html){ $("#listeners").html(html); } }); $.ajax({ url: "rate.txt", cache: false, success: function(html){ $("#rate").html(html); } }); } $(document).ready(function(){ show(); setInterval('show()',5000); }); </script>
ãããŠã5ç§ããšã«ããŒãžã®æ
å ±ãæŽæ°ãããŸãïŒããã«ãããŒãžããªããŒãããããšãªãïŒã
èšäºã®åé ã§ãTOP20ã©ã³ãã³ã°ãçºè¡šããããšãèŠããŠããŸããïŒ ã¯ããããã¯çŽ æŽãããããšã§ãã
ãã®ãããç¹å®ã®ã¹ã¿ã€ã«/ãžã£ã³ã«ã®ãã¹ãïŒã¿ã€ã= 1ïŒãŸãã¯ã¯ãŒã¹ãïŒã¿ã€ã= 2ïŒãã©ãã¯ã®ããŒãã«ã次ã®åœ¢åŒã§çæããæåŸã®ã¹ã¯ãªããïŒ
| æ§æ| è©äŸ¡|
ãã¡ã€ã«top20.phpïŒãŠã§ããµã€ãã§ããŒã«ãçµäºããããšããå§ãããŸãïŒïŒ
<?php $Gen = array('Dance','House','Trance','Hardstyle','Hardcore','Chill','Breaks','Pumping');
以äžã§ãã æ¬¡ã«ããã®ã¹ã¯ãªãããHTMLã³ãŒãã®é©åãªå Žæã«åã蟌ãå¿
èŠããããŸãïŒåãjQueryã¯setIntervalïŒ 'showïŒïŒ'ã5000ïŒãªãã§ã®ã¿äœ¿çšã§ããŸããããããããã¯ç§ã®å人ã§ããããªãã«å®¿é¡ãšããŠä»»ããŸãã
ç§ã®è©±ãããªãã«ãšã£ãŠæçšã§ããããåã«è峿·±ããã®ã«ãªãããšãå¿ããé¡ã£ãŠããŸãã