PDA

View Full Version : detecting power off



Unregistered
10-17-2004, 04:27 AM
i have written a script that outputs the track playing to xml so i can view it across my network. the script runs fine but i am having problems detecting when dbpoweramp has been powered off. the script continues to run and eventually restarts dbpoweramp. is there an event that i can capture when the execution of the app is stopped?

also, what other properties are exposed by the multiplayer and amp objects?

here is the script in case anyone is interested:

Set a = CreateObject("dBpowerAMP.Multiplayer")
Set b = CreateObject("dBpowerAMP.Amp")

Call b.PowerOn
b.Volume = 100

Dim last, currFile, root

Const total = 50

Dim tune()
ReDim tune(total,3)

'directory in which to write the resulting xml file
root = "Z:\Sites\xml\"

'xml file name
tuneFile = root + "tunes.xml"

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")

While (a.Play)

If last <> a.FilePlaying Then

If fso.FileExists(tuneFile) Then fso.DeleteFile tuneFile End If

last = a.FilePlaying
Set f = fso.CreateTextFile(tuneFile, True)

Dim re
Set re = New regexp
re.Pattern = "\s"
re.Global = True

dim arturl, artist, album
album = re.Replace(a.Album,"%20")
artist = re.Replace(a.Artist,"%20")
arturl = "http://webservices.amazon.com/onca/xml?Service=AWSECommerceService&ResponseGroup=Images&SubscriptionId=xxxxxxxxxxx&Operation=ItemSearch&SearchIndex=Music&Artist=" + artist + "&Title=" + album

re.Pattern = "&"
re.Global = True

tune(0,0) = re.Replace(a.Track,"&amp;")
tune(0,1) = re.Replace(a.Artist,"&amp;")
tune(0,2) = re.Replace(a.Album,"&amp;")
arturl = re.Replace(arturl,"&amp;")

f.WriteLine("<tunes>")
f.WriteLine("<now>")
f.WriteLine("<track>"+tune(0,0)+"</track>")
f.WriteLine("<artist>"+tune(0,1)+"</artist>")
f.WriteLine("<album>"+tune(0,2)+"</album>")

f.WriteLine("<bitrate>"+CStr(a.Kbps)+"</bitrate>")
f.WriteLine("</now>")

For i = 1 To total

tune((total-i+1),0) = tune((total-i),0)
tune((total-i+1),1) = tune((total-i),1)
tune((total-i+1),2) = tune((total-i),2)

If tune(i,0) <> "" Then
f.WriteLine("<prev>")
f.WriteLine("<track>"+tune(i,0)+"</track>")
f.WriteLine("<artist>"+tune(i,1)+"</artist>")
f.WriteLine("<album>"+tune(i,2)+"</album>")
f.WriteLine("</prev>")
End If

Next

f.WriteLine("</tunes>")
f.Close

End If

set WshShell = WScript.CreateObject("WScript.Shell")
If (a.Length - a.Position)>0 Then
WScript.Sleep (a.Length - a.Position)
End If

Wend

Unregistered
10-17-2004, 05:01 AM
here's a url to the result:
http://home.robzand.com/music/nowPlaying.php

btw, the 'de la soul' tune is repeated because of the bug i have relating to my question above.

ChristinaS
10-17-2004, 12:45 PM
Hmmm... I am not sure what you're trying to achieve with this web page. The only thing that is repeated now is the display of the page, because of the meta refresh every 30 seconds. I can hear nothing at all, nor did I expect to hear if you're attempting to have it run through dAP.

Are you running your web site hosted on your own pc? Or are you trying to tap into you visitor's installation of dAP?

Or am I way off? :D

Unregistered
10-17-2004, 03:00 PM
no your way off, sorry. it's not doing any streaming, etc.

i have a network at my house. the only thing i use my pc for these days is to store my music collection and play it. so when i am working on my mac, this webpage lets me know what track is playing, etc, without my switching over to the pc.

however, the script continues to run when i switch dbpoweramp off. i want the script to stop when it recognizes that dbpoweramp is no longer executing.

eventually i'd like to get a server up and running on the pc that i can control remotely from the mac, so i can queue tracks etc.

Unregistered
10-17-2004, 03:44 PM
i figured it out.

you can check what processes are running like this:

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colProcesses = objWMIService.ExecQuery("Select * from Win32_PerfFormattedData_PerfProc_Process",,48)

AmpRunning=0
For Each objItem in colProcesses
If(objItem.Name = "Amp") Then AmpRunning=1
Next

ChristinaS
10-17-2004, 03:58 PM
no your way off, sorry. it's not doing any streaming, etc.

i have a network at my house. the only thing i use my pc for these days is to store my music collection and play it. so when i am working on my mac, this webpage lets me know what track is playing, etc, without my switching over to the pc.

however, the script continues to run when i switch dbpoweramp off. i want the script to stop when it recognizes that dbpoweramp is no longer executing.

eventually i'd like to get a server up and running on the pc that i can control remotely from the mac, so i can queue tracks etc.

Ok, so I'm being quite ignorant :p
But I'm not all that far off to my way of thinking :) you are running the web site (or at least this portion of it) from your own machine(s) and using the homedns.org system of faking a fixed IP address.

Where I was off was in my thinking that the music would be broadcast somehow :p And, more importantly, in not seeing the relationship between the script you posted and the web page you gave :o

Are you able to tap into the Task manager and see the application and running processes? If I start dAP I see right away this application (both in the list of Aplications and in the list of processes). If dAP is actually playing a tune, then the related process (AMP.exe) is active and I can see CPU activity as well.

ChristinaS
10-18-2004, 10:43 PM
He-he! So at least I was on the right track it seems - though no closer to the practical solution which you found :D :thumbup:

donny
10-19-2004, 03:31 PM
this is interesting... I have the same problem with QueMaster (which is probably a anoying thing for many users)... I have searched for a solution, and well this was also my idea, but I just couldn't make it work before, and then I didn't have the time to work on it... maybe I'll fix it in the next release...

Unregistered
10-22-2004, 02:01 PM
donny,
there's probably a little more efficient way to do this - i.e. querying for "amp" directly rather than selecting all and searching. i didn't play with it much as i started working on other things. i've actually set up code now so that i can control dbpoweramp remotely over the network, via a browser. i've essentially created a web based mmc.

so now that i can control the player over a network, the next logical step is getting it to stream. has anyone made any efforts in this area to date? perhaps this should be a new thread.

donny
10-22-2004, 03:19 PM
I know that is more efficient, what I meant to say that when I was palying with the problem I had a problem to get proces names at all... I'll try this way, or similar