home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 April / PCWorld_2005-04_cd.bin / software / temacd / winamp / winamp508e_full.exe / $0 / scripts / songinfo.m < prev    next >
Text File  |  2004-12-20  |  3KB  |  131 lines

  1. #include <lib/std.mi>
  2.  
  3. Function string tokenizeSongInfo(String tkn, String sinfo);
  4. Function getSonginfo(String SongInfoString);
  5.  
  6. Global Group frameGroup;
  7. Global GuiObject mono, stereo;
  8. Global Text bitrateText, FrequencyText;
  9. Global Timer songInfoTimer;
  10. Global String SongInfoString;
  11.  
  12. System.onScriptLoaded(){
  13.     frameGroup = getScriptGroup();
  14.  
  15.     bitrateText = frameGroup.findObject("Bitrate");
  16.     frequencyText = frameGroup.findObject("Frequency");
  17.  
  18.     mono = frameGroup.findObject("mono");
  19.     stereo = frameGroup.findObject("stereo");
  20.  
  21.     songInfoTimer = new Timer;
  22.     songInfoTimer.setDelay(1000);
  23.  
  24.     mono.hide();
  25.     stereo.hide();
  26.  
  27.     if (getStatus() == STATUS_PLAYING) {
  28.         String sit = getSongInfoText();
  29.         if (sit != "") getSonginfo(sit);
  30.         else songInfoTimer.setDelay(50); // goes to 1000 once info is available
  31.         songInfoTimer.start();
  32.     } else if (getStatus() == STATUS_PAUSED) {
  33.         getSonginfo(getSongInfoText());
  34.     }
  35. }
  36.  
  37. System.onScriptUnloading(){
  38.     delete songInfoTimer;
  39. }
  40.  
  41. System.onPlay(){
  42.     String sit = getSongInfoText();
  43.     if (sit != "") getSonginfo(sit);
  44.     else songInfoTimer.setDelay(50); // goes to 1000 once info is available
  45.     songInfoTimer.start();
  46. }
  47.  
  48. System.onStop(){
  49.     songInfoTimer.stop();
  50.     frequencyText.setText("(__)");
  51.     bitrateText.setText("(___)");
  52.     mono.hide();
  53.     stereo.hide();
  54. }
  55.  
  56. System.onResume(){
  57.     String sit = getSongInfoText();
  58.     if (sit != "") getSonginfo(sit);
  59.     else songInfoTimer.setDelay(50); // goes to 1000 once info is available
  60.     songInfoTimer.start();
  61. }
  62.  
  63. System.onPause(){
  64.     songInfoTimer.stop();
  65. }
  66.  
  67. songInfoTimer.onTimer(){
  68.     String sit = getSongInfoText();
  69.     if (sit == "") return;
  70.     songInfoTimer.setDelay(1000);
  71.     getSonginfo(sit);
  72. }
  73.  
  74. String tokenizeSongInfo(String tkn, String sinfo){
  75.     int searchResult;
  76.     String rtn;
  77.     if (tkn=="Bitrate"){
  78.         for (int i = 0; i < 5; i++) {
  79.             rtn = getToken(sinfo, " ", i);
  80.             searchResult = strsearch(rtn, "kbps");
  81.             if (searchResult>0) return StrMid(rtn, 0, searchResult);
  82.         }
  83.         return "";
  84.     }
  85.  
  86.     if (tkn=="Channels"){
  87.         for (int i = 0; i < 5; i++) {
  88.             rtn = getToken(sinfo, " ", i);
  89.             searchResult = strsearch(rtn, "tereo");
  90.             if (searchResult>0) return "stereo";
  91.             searchResult = strsearch(rtn, "ono");
  92.             if (searchResult>0) return "mono";
  93.         }
  94.         return "";
  95.     }
  96.  
  97.     if (tkn=="Frequency"){
  98.         for (int i = 0; i < 5; i++) {
  99.             rtn = getToken(sinfo, " ", i);
  100.             searchResult = strsearch(strlower(rtn), "khz");
  101.             if (searchResult>0) {
  102.                 String r = StrMid(rtn, 0, searchResult);
  103.                 int dot = StrSearch(r, ".");
  104.                 if (dot != -1) return StrMid(r, 0, dot);
  105.                 return r;
  106.             }
  107.  
  108.         }
  109.         return "";
  110.     }
  111.     else return "";
  112. }
  113.  
  114. getSonginfo(String SongInfoString) {
  115.     String tkn;
  116.  
  117.     tkn = tokenizeSongInfo("Bitrate", SongInfoString);
  118.     if(tkn != "") {bitrateText.setText("["+tkn+"]");}
  119.  
  120.     tkn = tokenizeSongInfo("Channels", SongInfoString);
  121.     if(tkn == "stereo")  {
  122.         stereo.show();
  123.         mono.hide();
  124.     } else {
  125.         mono.show();
  126.         stereo.hide();
  127.     }
  128.  
  129.     tkn = tokenizeSongInfo("Frequency", SongInfoString);
  130.     if(tkn != "") {frequencyText.setText("["+tkn+"]");}
  131. }