;;; Xmp3 for Xscript
;;; Powerfull mp3-player addon by CkNDstroy & PurpLgirl
;;; This is to give you a little taste for the full script coming out soon!
;;; mail us comments: <CkNDstroy@skynet.be>
;;; In the full script you will be able to create playlists etc.
;;; have fun playing around with these!
;;; just type /load -rs path\Xmp3.mrc 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

alias mp3setup {
  set %player $file="Select Your Mp3 Player:" [ c: $+ *.exe ]
  set %mpdir $$sdir="Select Your .mp3 Folder:"
  set %mp3dir " $+ %mpdir $+ "
}

alias playmp3 {
  if (%mp3.sys == ON) {
    if (%mp3dir == $null) { mp3setup }
    if (%player == $null) { mp3setup }
    if ( $1- != $null) { set %file.now $1- }
    if (%file.now == $null) { set %file.now $file="Select Your Mp3:" [ %mp3dir $+ *.mp3 ] }
    set %filename " $+ %file.now $+ "
    unset %file.now
    run %player %filename
    if (%mp3.echo == ON) { mp3echo }
    if (%mp3.add == ON ) { 
      if (%id3read == ON ) {
        if ($id3artist(%filename) != N/A ) {
          if (%mp3.add.chans == ON ) { addmp3chanid3 }
          else { addmp3allchanid3 }
        }        
        elseif (%mp3.noid3show == ON ) { addmp3noid3 }
      } :id3read
      else { addmp3noid3 }
    } 
  } 
  else { echo -a >>>[-X-]: The mp3-system is not enabled, navigate trough the system menu and choose mp3-settings }
}  

alias mp3settings {
  if ($dialog(mp3set) == $null ) { dialog -m mp3set mp3set }
  else { echo -a >>>[ERROR]: the mp3-settings dialog is already opened }
}

alias xtrim {
  set %var.xtrim $1-
  set %len.xtrim $len(%var.xtrim)
  set %count.xtrim 0
  var %result.a.xtrim
  var %result.xtrim
  var %check.xtrim
  :start
  inc %count.xtrim
  if (%count.xtrim > %len.xtrim ) { goto end }
  set %check.xtrim $mid(%var.xtrim,%count.xtrim,1) 
  if ( %check.xtrim == $chr(32) ) { goto start }
  if ( %result.xtrim == $null ) { set %result.xtrim %check.xtrim | goto start }
  else { 
    set %result.a.xtrim %result.xtrim $+ %check.xtrim 
    set %result.xtrim %result.a.xtrim 
    goto start
  }
  :end
  return %result.xtrim
}


alias id3Title {
  bread %filename $calc($file(%filename).size - 128) 128 &id3Tag
  if ($bvar(&id3Tag,1-3).text == TAG) { return $bvar(&id3Tag,4-33).text }
  else { return N/A }
}
alias id3Artist {
  bread %filename $calc($file(%filename).size - 128) 128 &id3Tag
  if ($bvar(&id3Tag,1-3).text == TAG) { return $bvar(&id3Tag,34-63).text }
  else { return N/A }
}
alias addmp3chanid3 {
  if (%mp3.style == HOOKY ) {     
    set %i.mp3 0
    var %temp $xtrim(%mp3.chan)
    :start
    inc %i.mp3
    if ($gettok($xtrim(%mp3.chan),%i.mp3,44) ) {
      if ($me ison $gettok(%temp,%i.mp3,44) ) { describe $gettok(%temp,%i.mp3,44)  [ $+ $id3artist(%filename) - $id3Title(%filename) $+ ]  <> [-X-] | goto start }               
      else { goto start }     
    } 
  } 
  if (%mp3.style == PURPL ) {     
    set %i.mp3 0
    var %temp $xtrim(%mp3.chan)
    :startpurpL
    inc %i.mp3
    if ($gettok($xtrim(%mp3.chan),%i.mp3,44) ) {
      if ($me ison $gettok(%temp,%i.mp3,44) ) { describe $gettok(%temp,%i.mp3,44) is now listening to $id3artist(%filename) -- $id3Title(%filename)   <> (-X-) | goto startpurpL }               
      else { goto startpurpL }     
    } 
  }
  if (%mp3.style == NORMAL) {
    set %i.mp3 0
    :startelse
    inc %i.mp3
    if ($gettok($xtrim(%mp3.chan),%i.mp3,44) ) {
      if ($me ison $gettok($xtrim(%mp3.chan),%i.mp3,44) ) { describe $gettok($xtrim(%mp3.chan),%i.mp3,44) is now listening to $id3Title(%filename) by $id3artist(%filename) <> (X) | goto startelse }
      else { goto startelse }   
    }
  }
}

alias addmp3allchanid3 {
  if (%mp3.style == HOOKED ) { ame [ $+ $id3artist(%filename) - $id3Title(%filename) $+ ]  <> [-X-] }
  else { if (%mp3.style == PURPL) { is now listening to  $id3artist(%filename) -- $id3Title(%filename) <> (X) } else {
      ame is now listening to $id3Title(%filename) by $id3artist(%filename) <> (X) 
    }
  }
}
alias addmp3noid3 {
  if (%mp3.style == HOOKED ) {     
    set %i.mp3 0
    :start
    inc %i.mp3
    if ($gettok($xtrim(%mp3.chans),%i.mp3,44)) {
      if ($me ison $gettok($xtrim(%mp3.chan),%i.mp3,44)) { 
        describe $gettok($xtrim(%mp3.chan),%i.mp3,44)  [ $+ $mid($nopath(%filename),1,$calc($len($nopath(%filename)) - 4 )) $+ ]  <> [-X-] 
        goto start
      }               
      else { goto start }     
    }
  }
  else {  
    set %i.mp3 0
    :start
    inc %i.mp3
    if ($gettok($xtrim(%mp3.chans),%i.mp3,44)) {
      if ($me ison $gettok($xtrim(%mp3.chan),%i.mp3,44)) { describe $gettok($xtrim(%mp3.chan),%i.mp3,44) is now listening to $mid($nopath(%filename),1,$calc($len($nopath(%filename)) - 4 )) <> (X) | goto start }
      else { goto start }   
    }
  }
}


alias mp3echo {
  if ( %id3read == ON) {
    if ($id3artist(%filename) != N/A) { echo -a >>>[MP3]: Now playing [ $+ $id3artist(%filename) - $id3Title(%filename) $+ ]  <> [-X-] }
    else { echo -a >>>[MP3]: Now playing [ $+ $mid($nopath(%filename),1,$calc($len($nopath(%filename)) - 4 )) $+ ] <> [-X-] }
  }
  else { echo -a >>>[MP3]: Now playing [ $+ $mid($nopath(%filename),1,$calc($len($nopath(%filename)) - 4 )) $+ ] <> [-X-] }
}

menu channel {
(Play an mp3):/playmp3
$iif(%mp3.sys == ON,(MP3-system))
.Set player/directory:/mp3setup
.Mp3-settings:/mp3settings
}

menu menubar {
Mp3-settings:/mp3settings
}

dialog mp3set {
  title "Mp3-playing options"
  size -1 -1 300 375
  button "OK",1,150 345 75 25,OK
  button "Cancel",2,225 345 75 25,CANCEL
  check "Enable mp3-advertizing" ,4,20 120 150 20
  radio "Advertise in chans:",5,70 195 106 20,group
  edit %mp3.chan,3,180 195 100 20,autohs
  radio "Advertise in all chans",6,70 220 150 20
  check "Advertise filename if no ID3-info exists",7,20 170 250 20
  box "Advertising options",8, 10 155 280 185
  box "Misc mp3 options",9,10 50 280 100
  box "Advertising style",10, 20 240 260 95
  radio "Hooky: /me [artist - songname]",11,30 260 200 20,group
  radio "Normal: /me is listening to songname by artist ",12,30 285 240 20
  radio "PurpL:/me is listening to artist -- songname",17,30 310 250 20
  check "Echo mp3's to active window",13,20 95 200 20 
  check "Enable ID3-tag reading (recommended)",14, 20 70 210 20
  box "Master switch",15,10 3 280 45
  check "Enable mp3-system (mp3-popups etc.)",16,20 20 200 20
}

on *:DIALOG:mp3set:init:0:{
  if ( %mp3.sys == ON ) { did -c $dname 16 }
  else { did -b $dname 8,5,6,3,7,10,11,12,4,14,13,9,17 }
  if ( %mp3.add == ON ) { did -c $dname 4 } 
  else { did -b $dname 8,5,6,3,7,10,11,12,17 }
  if ( %id3read == ON ) { did -c $dname 14 }
  if ( %mp3.echo == ON ) { did -c $dname 13 }
  if ( %mp3.noid3show == ON ) { did -c $dname 7 }
  if ( %mp3.style == HOOKY ) { did -c $dname 11 }
  if ( %mp3.style == NORMAL ) { did -c $dname 12 }
  if ( %mp3.style == PURPL ) { did -c $dname 17 }
  if ( %mp3.add.chans == ON ) { did -c $dname 5 }
  else { did -c $dname 6 }
}

on *:DIALOG:mp3set:sclick:*:{
  if ($did(mp3set,16).state == 0 ) { set %mp3.sys OFF | did -b $dname 8,5,6,3,7,10,11,12,4,14,13,9,17 }
  else { set %mp3.sys ON | did -e $dname 8,5,6,3,7,10,11,12,4,14,13,9,17  }
  if ($did(mp3set,4).state == 0 ) || if ( %mp3.sys == OFF) {  set %mp3.add OFF | did -b $dname 8,5,6,3,7,10,11,12,17 }
  elseif ( %mp3.sys == ON) { set %mp3.add ON | did -e $dname 8,5,6,3,7,10,11,12,17  }
  if ($did(mp3set,13).state == 0 ) { set %mp3.echo OFF }
  else { set %mp3.echo ON }
  if ($did(mp3set,7).state == 0 ) { set %mp3.noid3show OFF }
  else { set %mp3.noid3show ON }
  if ($did(mp3set,14).state == 0 ) { set %id3read OFF }
  else { set %id3read ON }

  if ( $did(mp3set,11).state == 1 ) { set %mp3.style HOOKY }
  if ( $did(mp3set,12).state == 1 ) { set %mp3.style NORMAL }
  if ( $did(mp3set,17).state == 1 ) { set %mp3.style PURPL }
  if ( $did(mp3set,5).state == 1 ) { set %mp3.add.chans ON | did -e $dname 3 }
  if ( $did(mp3set,6).state == 1 ) { set %mp3.add.chans OFF | did -b $dname 3 }
}

on *:dialog:mp3set:*:*:{
  if ($did == 3 ) { .set %mp3.chan $did(3).text }
}

ON 1:LOAD:{
set %mp3.chan #X-script,#klapke
mp3setup
echo -a 0,1>>>[INFO]:Xmp3 for Xscript by CkNDstroy, m|ndless, PurpLgirl, bbert, djbadboy and Mozes LOADED !
}
