All pastes #422475 Raw Edit

Someone

public text v1 · immutable
·published 2007-04-03 14:08 UTC
rendered paste body
/*
Author  : iknietjij
URL     : www.irc-lounge.com
email   : iknietjij@gmail.com
IRC     : irc.enterthegame.com #Lounge
Version : 1.0

iTunes 'now playing' script for mIRC

Read readme.txt for more information.


Script uses the $proc alias by myggan - get it off www.mircscripts.org (It's included in the release
Also many thanks to ibt|bla who made spamtunes which I used as a base for the COM connection stuff
*/

on *:START: {
  echo -at i.iTunes; Script version $i.itunes.ver loaded.
  i.itunes.checkforupdates
}

alias i.itunes.youraction {
  ; Change the return statement here to what you want the script to do when it fetched the song
  ; You can use the following variables:
  ;   &artist      - The artist of the song
  ;   &songname    - The name of the song
  ;   &position    - Position in the song in minutes:seconds
  ;   &duration    - Total duration of the song in minutes:seconds
  ;   &perc        - Percentage of the song that's elapsed
  ;   &year        - Year of the song
  ;   &album       - Album of the song
  ;   &stream      - Stream name
  ;   &streamurl   - URL of the audio stream
  ;   &bitrate     - Bitrate of what you're listening to
  ;   &pc          - Play count (amount of times you've played the song)
  ;   &rating      - Your rating of the song
  ;   &comment     - Songs comment
  ;   &genre       - Genre of the song
  ;   &type        - Type of music file (For instance, *.mp3 is MPEG audio file)
  ;   &trackcount  - Amount of tracks in the playlist (works for library at least)
  ;   &tracknumber - Number of the current track in the playlist
  ;   &playlist    - What playlist is playing
  ;
  ; And any mIRC aliases/variables


  ; ONLY edit the line below this one:
  return describe $active 07NP: 03&stream &artist - &songname 07 $+ [&position\&duration]


}

; #####################################################################################################################
;                                                   DO NOT EDIT BELOW THIS LINE
; #####################################################################################################################

; $proc alias by myggan - get it off www.mircscripts.org
alias proc {
  if (!$0) || (!$isid) return $null
  var %query = $iif($1 !isnum 0-,WHERE Name = $+(",$1,")), %result = 0
  if ($com(proc_a)) .comclose proc_a
  if ($com(proc_b)) .comclose proc_b
  .comopen proc_a WbemScripting.SWbemLocator
  if (!$com(proc_a)) return $null
  .comclose proc_a $com(proc_a,ConnectServer,3,dispatch* proc_b) 
  if (!$com(proc_b)) return $null
  .comclose proc_b $com(proc_b,ExecQuery,3,string,SELECT * FROM Win32_Process %query,dispatch* proc_a) 
  if (!$com(proc_a)) return $null
  !.echo -q $com(proc_a,Count,3)
  var %count = $com(proc_a).result, %b = $iif($1 isnum 1-,$1,$iif($2 isnum 1-,$2,1))
  if (!%count) return $null
  elseif ($istok($1-,0,32)) %result = %count
  else {
    if ($1 isnum 1-) %b = $1
    %result = $iif($comval(proc_a,%b,Name),$replace($ifmatch,$chr(32),$chr(160)),*)
    %result = %result $iif($comval(proc_a,%b,ExecutablePath),$replace($ifmatch,$chr(32),$chr(160)),*)
    %result = %result $iif($comval(proc_a,%b,WorkingSetSize),$replace($ifmatch,$chr(32),$chr(160)),*)
    %result = %result $iif($comval(proc_a,%b,ProcessId),$replace($ifmatch,$chr(32),$chr(160)),*)
    %result = %result $iif($comval(proc_a,%b,Priority),$replace($ifmatch,$chr(32),$chr(160)),*)
  }
  .comclose proc_a
  return $iif(%result == * * * * *,$null,%result)
}

; Alias that gets the song and does what you want to do with it

alias wamp {
  itune
}

alias itune {
  if ($proc(itunes.exe,0) != $null) {
    ; iTunes is running
    ; Opening connection
    .comopen i.itunes.com iTunes.application

    if ($comerr) { i.itunes.comerror }
    else {
      ; No Com error, continuing
      var %i.itunes.uselessvar = $com(i.itunes.com,PlayerState,3)
      var %i.itunes.isplaying = $com(i.itunes.com).result
      if (%i.itunes.isplaying == 1) {
        ; Song is playing, continuing
        var %i.itunes.uselessvar = $com(i.itunes.com,CurrentTrack,3,dispatch* i.itunes.track)

        if ($comerr) { i.itunes.comerror }
        else {
          var %i.itunes.uselessvar = $com(i.itunes.com,CurrentPlaylist,3,dispatch* i.itunes.play)

          if ($comerr) { i.itunes.comerror }
          else {
            var %i.itunes.uselessvar = $com(i.itunes.com,PlayerPosition,3)
            var %i.itunes.playerposition = $com(i.itunes.com).result
            var %i.itunes.uselessvar = $com(i.itunes.com,CurrentStreamTitle,3)
            var %i.itunes.stream = $com(i.itunes.com).result
            var %i.itunes.uselessvar = $com(i.itunes.com,CurrentStreamURL,3)
            var %i.itunes.streamurl = $com(i.itunes.com).result 

            if ($comerr) { i.itunes.comerror }
            else {
              ; Get Song Information
              var %i.itunes.uselessvar = $com(i.itunes.track,Name,3)
              var %i.itunes.songname = $com(i.itunes.track).result

              if ($comerr) { i.itunes.comerror }
              else {
                ; artist
                var %i.itunes.uselessvar = $com(i.itunes.track,Artist,3)
                var %i.itunes.artist = $com(i.itunes.track).result

                if ($comerr) { i.itunes.comerror }
                else {
                  ; Other info
                  var %i.itunes.uselessvar = $com(i.itunes.track,Album,3)
                  var %i.itunes.album = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,BitRate,3)
                  var %i.itunes.bitrate = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,PlayedCount,3)
                  var %i.itunes.playedcount = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,Rating,3)
                  var %i.itunes.rating = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,Year,3)
                  var %i.itunes.year = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,Duration,3)
                  var %i.itunes.duration = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,Genre,3)
                  var %i.itunes.genre = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,Composer,3)
                  var %i.itunes.composer = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,BPM,3)
                  var %i.itunes.bpm = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,Comment,3)
                  var %i.itunes.comment = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,KindAsString,3)
                  var %i.itunes.kind = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,PlayedDate,3)
                  var %i.itunes.playeddate = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,TrackCount,3)
                  var %i.itunes.trackcount = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,TrackNumber,3)
                  var %i.itunes.tracknumber = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,DateAdded,3)
                  var %i.itunes.dateadded = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,Compilation,3)
                  var %i.itunes.compilation = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.track,BPM,3)
                  var %i.itunes.bpm = $com(i.itunes.track).result
                  var %i.itunes.uselessvar = $com(i.itunes.play,Name,3)
                  var %i.itunes.playlist = $com(i.itunes.play).result

                  if ($comerr) { i.itunes.comerror }
                  else {
                    ; Change rating:
                    if (%i.itunes.rating == 0) { var %i.itunes.rating = N/A }
                    elseif (%i.itunes.rating == 20) { var %i.itunes.rating = 1/5 }
                    elseif (%i.itunes.rating == 40) { var %i.itunes.rating = 2/5 }
                    elseif (%i.itunes.rating == 60) { var %i.itunes.rating = 3/5 }
                    elseif (%i.itunes.rating == 80) { var %i.itunes.rating = 4/5 }
                    elseif (%i.itunes.rating == 100) { var %i.itunes.rating = 5/5 }

                    ; Change seconds around
                    var %i.itunes.dur = $i.itunes.mins(%i.itunes.duration) $+ : $+ $i.itunes.secs(%i.itunes.duration)
                    var %i.itunes.playpos = $i.itunes.mins(%i.itunes.playerposition) $+ : $+ $i.itunes.secs(%i.itunes.playerposition)
                    var %i.itunes.playperc = $round($calc(%i.itunes.playerposition / %i.itunes.duration * 100),0)

                    var %i.itunes.returnthis = $replace($i.itunes.youraction,&artist,%i.itunes.artist)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&songname,%i.itunes.songname)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&position,%i.itunes.playpos)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&duration,%i.itunes.dur)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&perc,%i.itunes.playperc)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&year,%i.itunes.year)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&album,%i.itunes.album)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&stream,%i.itunes.stream)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&streamurl,%i.itunes.streamurl)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&bitrate,%i.itunes.bitrate)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&pc,%i.itunes.playedcount)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&rating,%i.itunes.rating)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&comment,%i.itunes.comment)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&genre,%i.itunes.genre)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&type,%i.itunes.kind)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&trackcount,%i.itunes.trackcount)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&tracknumber,%i.itunes.tracknumber)
                    var %i.itunes.returnthis = $replace(%i.itunes.returnthis,&playlist,%i.itunes.playlist)

                    %i.itunes.returnthis

                    ;msg $active i.iTunes; %i.itunes.artist - %i.itunes.songname $chr(91) $+ %i.itunes.playpos $+ / $+ %i.itunes.dur $+ $chr(93)

                    ; Close COM connections
                    .comclose i.itunes.play
                    .comclose i.itunes.track
                    ; Close COM connection
                    .comclose i.itunes.com

                  }
                }
              }
            }
          }
        }
      }
      else {
        ; No song playing. Closing connection
        echo -at i.iTunes; No song playing.
        .comclose i.itunes.com
      }
    }
  }
  else {
    echo -at iTunes.exe NOT running.
  }
}

alias i.itunes.secs { return $i.itunes.addzero($calc($1 - 60 * $int($calc($1 / 60)))) }
alias i.itunes.mins { return $int($calc($1 / 60)) }
alias i.itunes.addzero {
  if ($1 < 10) {
    return 0 $+ $1
  }
  else {
    return $1
  }
}
alias i.itunes.comerror {
  echo -at i.iTunes; COM connection error.
  while ($com(0)) {
    .comclose $com(1)
  }
  halt
}
alias i.itunes.ver { return 1.0 }

alias i.itunes.checkforupdates {
  if ($sock(i.itunes) != $null) { sockclose i.itunes }
  sockopen i.itunes 64.71.177.227 80
}

on *:SOCKOPEN:i.itunes: {
  if ($sockerr > 0)  {
    echo -st i.iTunes; Error checking for script updates. Cannot connect to server?
  }
  else {
    sockwrite -nt $sockname GET /scripts/versions.txt HTTP/1.1
    sockwrite -nt $sockname Accept-Language: en-us
    sockwrite -nt $sockname User-Agent: Mozilla/??
    sockwrite -nt $sockname Host: www.irc-lounge.com
    sockwrite -t $sockname $str($crlf,2)
  }
}

on *:SOCKREAD:i.itunes: {
  if ($sockerr > 0)  { 
    echo -st i.iTunes; Error checking for script updates. Cannot find update file?
  }
  else {
    sockread %i.itunes.sockread

    if (i.itunes * iswm %i.itunes.sockread) {
      if ($i.itunes.ver < $gettok(%i.itunes.sockread,2,32)) {
        echo -st i.iTunes; There is a newer version of i.iTunes out (version $gettok(%i.itunes.sockread,2,32) $+ ) than your current version (version $i.itunes.ver $+ ). Please update your script.
        echo -st i.iTunes; Download the new version at: $gettok(%i.itunes.sockread,3,32)
        if ($gettok(%i.itunes.sockread,4-,32) != $null) {
          echo -st i.iTunes; Notes on the new version:
          var %i.itunes.sockread.incvar = 1
          while (%i.itunes.sockread.incvar <= $numtok($gettok(%i.itunes.sockread,3-,32),124)) {
            echo -st i.iTunes; $gettok($gettok(%i.itunes.sockread,4-,32),%i.itunes.sockread.incvar,124)
            inc %i.itunes.sockread.incvar
          }
        }
      }
    }
  }
}