iso-rc release check

tic

Active Member
OP
Newcomer
Joined
Jun 21, 2007
Messages
27
Trophies
0
XP
27
Country
iso_rc.jpg


http://www.autohotkey.net/~tic/iso-rc-1.03.exe

Reasonably self explanatory. It will give rss updates every minute for the specified topics (GBA, NDS, Wii)

The search box is space deliminated, so separate search terms with a space. ie Searching for Smash Bros. Typing in the search field Smash Bros will be a match, as will just Smash and just Bros (It is not case sensitive)

Choose the song to play on match.


For Smash Bros. check the tick box for Wii and type:

smash bros brothers brawl

in the search field. select your song, and to minimize to tray, just close the window (the x in the top right). it can be restored by doubleclicking the tray icon.

you may go to the website for a particular game in the listview by doubleclicking it.

Server to use for notifying by email is:

http://familysanders.net/iso-rc.php

thanks to arctic_flame

Update:

1.03 - Song will only play once on each match and not every time the same match is made. Email support thanks to arctic_flame. The program will email you when a match is made (particulary useful if you access your emails by phone. Separated settings into a separate tab for neatness. Most keys will now stop the currently playing song. You must now save results rather than them just being saved as you change them.

1.01 - Added balloon tip to notify as well, as well as some other minor enhancements
 

tic

Active Member
OP
Newcomer
Joined
Jun 21, 2007
Messages
27
Trophies
0
XP
27
Country
Please ensure that the song you select plays by testing with the play button, else select a different song (this may be due to some ffdshow conflicts), but if it plays when you click play, then it will work when its Smash time
 

tic

Active Member
OP
Newcomer
Joined
Jun 21, 2007
Messages
27
Trophies
0
XP
27
Country
No problem people! I hope this helps with not only Smash Bros., but also future games to be released. Let me know if there's any features you want added and I'll add them straight away if theyre a good idea.

Also I can paste source code if anyones interested. its written in ahk
 

tic

Active Member
OP
Newcomer
Joined
Jun 21, 2007
Messages
27
Trophies
0
XP
27
Country
1.01 is released with balloon tip notification as well

ensure you have balloon tips enabled
 

Metalclay

Active Member
Newcomer
Joined
Jan 31, 2008
Messages
30
Trophies
0
XP
186
Country
United States
doesn't work for me.

when I double click the are where the games are supposed to update i get:
untitled-10.jpg


eh...w/e, i got the rss as a bookmark
biggrin.gif
would be nice to have a barking a dog to tell me when it's ready, or something.
 

tic

Active Member
OP
Newcomer
Joined
Jun 21, 2007
Messages
27
Trophies
0
XP
27
Country
thats strange that you are having that error metalclay. there are actually 2 columns in the listview (i have made the 2nd column 0px in diameter), so if you manage to get that error again, please could you stretch out the second column of the row you doubleclicked and type what it says.

thank you
 

coolbho3000

GBATemp Kikkoman Naturally Brewed SoySauce Fanatic
Member
Joined
Apr 29, 2007
Messages
2,123
Trophies
1
Age
122
Location
Kikkoman Factory
XP
1,004
Country
No problem people! I hope this helps with not only Smash Bros., but also future games to be released. Let me know if there's any features you want added and I'll add them straight away if theyre a good idea.

Also I can paste source code if anyones interested. its written in ahk
Could you please? I'm always willing to learn new development methods.
biggrin.gif
 

tic

Active Member
OP
Newcomer
Joined
Jun 21, 2007
Messages
27
Trophies
0
XP
27
Country
Sure thing.....

For such a small project, scripting languages are usually the easiest to use as much of the background code is done for you. I choose ahk for such tasks as it is the most simple I have seen.

CODE#SingleInstance Force
#Persistent

AppName := "iso-rc"
VersionNumber := "1.01"
Interval := 60

OnExit, Exit
Menu, Tray, NoStandard
Menu, Tray, Add, Show
Menu, Tray, Default, Show
Menu, Tray, Add, Exit

Sections := "GBA,NDS,Wii"
StringSplit, Sections, Sections, `,

IniRead, Sections, %AppName%.ini, Settings, Sections, % " ";%
IniRead, Search, %AppName%.ini, Settings, Search, % " ";%
IniRead, Sound, %AppName%.ini, Settings, Sound, % " ";%
IniRead, Email, %AppName%.ini, Settings, Email, % " ";%

;###############################################################################
###################

Gui, 1: Add, GroupBox, x10 y10 w450 h50, Choose which RSS updates to include:
Loop, %Sections0%
{
ÂÂÂÂGui, 1: Add, CheckBox, % (A_Index = 1 ? "xp+20 yp+20" : "x+80 yp+0") " v" Sections%A_Index% " " (SubStr(Sections, A_Index, 1) ? "Checked" : "") " gCheck"
ÂÂÂÂGui, 1: Add, Text, % "x+0 yp+0 gCheck v" Sections%A_Index% "2", % Sections%A_Index%
}
Gui, 1: Add, GroupBox, x10 y+30 w450 h50, Enter search terms for RSS:
Gui, 1: Add, Edit, xp+10 yp+20 w430 vSearch gSearch r1 -Multi -Wrap, % Search ? Search : "";%
Gui, 1: Add, GroupBox, x10 y+30 w450 h85, Choose sound file to play on match:
Gui, 1: Add, Edit, xp+10 yp+20 w345 vSound r1 -Multi -Wrap, % Sound ? Sound : "";%
Gui, 1: Add, Button, x+10 yp+0 w75 gSound, &Sound...
Gui, 1: Add, Button, x20 y+10 w75 gPlayStop vPlay, &Play
Gui, 1: Add, Button, x+10 yp+0 w75 gPlayStop, &Stop
Gui, 1: Add, ListView, x10 y+30 w450 h350 vMainList Grid Count20 -LV0x10 -Multi NoSortHdr NoSort ReadOnly AltSubmit gMainList, Release List|URL
LV_ModifyCol(1, "440 Left")
LV_ModifyCol(2, "0 Left")
Gui, 1: Add, Text, x10 y+10 w200 vStatus
Gui, 1: Show, AutoSize, %AppName% - v%VersionNumber%
hwnd := WinActive("A")

GoSub, UpdateRSS
SetTimer, UpdateRSS, % Interval*1000;%
Return

;###############################################################################
###################

Search:
Gui, 1: Submit, NoHide
IniWrite, %Search%, %AppName%.ini, Settings, Search
Return

;###############################################################################
###################

Sound:
Gui, 1: +OwnDialogs
FileSelectFile, Sound,,, Choose sound file to play on match:, Audio (*.wav; *.mp2; *.mp3; *.ogg; *.aac)
If ErrorLevel
Return
IniWrite, %Sound%, %AppName%.ini, Settings, Sound
GuiControl,, Sound, %Sound%
Return

;###############################################################################
###################

PlayStop:
Gui, 1: Submit, NoHide
SoundPlay, % (A_GuiControl = "Play") ? Sound : "Stop";%
Return

;###############################################################################
###################

MainList:
If (A_GuiEvent Â!= "DoubleClick")
Return
LV_GetText(Address, A_EventInfo, 2)
StringReplace, Address, Address, amp;,, All
Run, %Address%
Return

;###############################################################################
###################

UpdateRSS:
Gui, 1: Submit, NoHide
If !(GBA || NDS || Wii)
Return
GuiControl,, Status, Updating...
StringSplit, Search, Search, % " ";%
IniRead, Sections, %AppName%.ini, Settings, Sections, % " ";%
UrlDownloadToFile, http://gbatemp.net/rss.php?show=0%Sections%0, RSS.txt
FileRead, RSS, RSS.txt
FileDelete, RSS.txt
LV_Delete()
StringReplace, RSS, RSS, `n,, All
Pos := RegExMatch(RSS, "")
Loop
{
ÂÂÂÂPos := RegExMatch(RSS, "(.+?).+?(.+?)" , Match, Pos+StrLen(Match1))
ÂÂÂÂLV_Add("", Match1, Match2)
ÂÂÂÂIf !Match
ÂÂÂÂBreak
ÂÂÂÂLoop, %Search0%
ÂÂÂÂ{
ÂIf InStr(Match1, Search%A_Index%)
Â{
ÂÂÂÂÂTrayTip, New Release!, %Match1%`nhas been released.,,1
ÂÂÂÂÂSoundPlay, %Sound%
Â}
ÂÂÂÂ}
}
GuiControl,, Status, % Â" ";%
Return

;###############################################################################
###################

Check:
Gui, 1: Submit, NoHide
If StrLen(A_GuiControl) != 3
{
ÂÂÂÂGuiControl := SubStr(A_GuiControl, 1, StrLen(A_GuiControl)-1)
ÂÂÂÂGuiControl,, %GuiControl%, % !%GuiControl%
}
Gui, 1: Submit, NoHide
IniWrite, % GBA NDS Wii, %AppName%.ini, Settings, Sections
GoSub, UpdateRSS
SetTimer, UpdateRSS, % Interval*1000;%
Return

;###############################################################################
###################

Show:
Gui, % "1: " (DllCall("IsWindowVisible", "UInt", hwnd) ? "Hide" : "Show");%
Return

;###############################################################################
###################

Exit:
ExitApp
 

tic

Active Member
OP
Newcomer
Joined
Jun 21, 2007
Messages
27
Trophies
0
XP
27
Country
you must only type a list of words with spaces separating them, and if even one of those words matches any word in the entire listview then the balloon tip will be triggered and the sound file you have selected will play.

so:

smash bros brothers brawl

should be sufficient. if you entered Jap or Japan, then there are already many games that have that in their title, so they would trigger a match.

Edit:

Beat me to it coolbho3000
smile.gif

No problem posting the source code. Ask if you wanna know anything from it
 

tic

Active Member
OP
Newcomer
Joined
Jun 21, 2007
Messages
27
Trophies
0
XP
27
Country
i originally wrote it to be multithreaded, but then decided against it as the time it takes to download is negligible as it cant be more than a few kb. i know you were being sarcastic
smile.gif
but if people prefer i could multithread it, although with ahk this may mean 2 exes :S or i suppose i could write it in au3 or maybe even wxpython, although that would probably be more hassle than its worth.

i was thinking of adding the ability to make more advanced searches. so rather than just matching any word. you could do simple && (and) and || (or) operators.

so:

Smash && (Bros || Brothers) && Jap

maybe you dont feel its neccessary. Also I could add the ability to send an email to inform you when a game has been released, but I would need an email address with SMTP and no SSL or I could do this using php, but would need a server to place the script.

So of anyone has a server to place a php script on then ill send you the code. it would generate pretty much no traffic as it would have no content to load.
 

acidrain

Well-Known Member
Member
Joined
Nov 17, 2006
Messages
101
Trophies
0
Location
Montreal, Qc
XP
304
Country
Canada
I made a python version for those using linux like me. Basically it's the same thing, except it doesn't play music, and it's uglier. It should also work with Mac OSX and windows (in which case I would suggest using the original version since it has more features)

So here's the code

#! /usr/bin/python
#-*- coding: UTF-8 -*-

import Tkinter as Tk
import tkMessageBox as msg
import urllib
import xml.dom.minidom
import webbrowser
from threading import Timer

version = 0.6

class ReleaseChecker():
def __init__(self):
self.root = Tk.Tk()
self.root.title("py-iso-rc %.1f" % version);
self.root.protocol("WM_DELETE_WINDOW", self.quit)

#For the checkbuttons
self.getGBA = Tk.IntVar()
self.getNDS = Tk.IntVar()
self.getWII = Tk.IntVar()

#List of game titles and corresponding links
self.titles = []
self.links = []

#Wait 2 seconds to get rss
self.timerRSS = Timer(2, self.getRSS)
self.timerRSS.start()

#Console selection
self.frameConsoles = Tk.Frame(self.root)
self.chkGBA = Tk.Checkbutton(self.frameConsoles, text="GBA", variable=self.getGBA, command=self.getRSS)
self.chkNDS = Tk.Checkbutton(self.frameConsoles, text="NDS", variable=self.getNDS, command=self.getRSS)
self.chkWII = Tk.Checkbutton(self.frameConsoles, text="WII", variable=self.getWII, command=self.getRSS)

self.frameConsoles.pack(pady=10)
self.chkGBA.pack(side=Tk.LEFT, padx=20)
self.chkNDS.pack(side=Tk.LEFT, padx=20)
self.chkWII.pack(side=Tk.LEFT, padx=20)

#Search (not yet)
self.frameSearch = Tk.Frame(self.root)
self.lblSearch=Tk.Label(self.frameSearch, text="Game you are waiting for")
self.txtSearch = Tk.Entry(self.frameSearch, width=74)

self.frameSearch.pack(pady=10)
self.lblSearch.pack(padx=10)
self.txtSearch.pack(padx=10)

#Song selection (not yet)
'''
self.frameMusic = Tk.Frame(self.root)
self.txtSong = Tk.Entry(self.frameMusic, width=60)
self.btnBrowse = Tk.Button(self.frameMusic, text="Browse")
self.btnPlayStop = Tk.Button(self.frameMusic, text="Play")

self.frameMusic.pack(pady=10)
self.txtSong.grid(row=0, column=0, padx=10)
self.btnBrowse.grid(row=0, column=1, padx=10)
self.btnPlayStop.grid(row=1, column=0, sticky=Tk.W, padx=10)
'''

#Release list
self.frameReleases = Tk.Frame(self.root)
self.listReleases = Tk.Listbox(self.frameReleases, height=25, width=74, selectmode=Tk.BROWSE)

self.frameReleases.pack(pady=10)
self.listReleases.pack(padx=10)

#Bindings
self.listReleases.bind("", self.showInfo)

#Wii selected by default
self.getWII.set(1)

def getRSS(self):
self.titles = []
self.links = []
url = "http://gbatemp.net/rss.php?show=0" + str(self.getGBA.get()) + str(self.getNDS.get()) + str(self.getWII.get()) + "0"
rss = xml.dom.minidom.parse(urllib.urlopen(url))#"/home/mathieu/rss.txt"))
for i in rss.getElementsByTagName('item'):
self.titles.append(i.getElementsByTagName('title')[0].childNodes[0].nodeValue)
self.links.append(i.getElementsByTagName('link')[0].childNodes[0].nodeValue)

#filling the listbox
self.listReleases.delete(0, Tk.END)
for i in self.titles:
self.listReleases.insert(Tk.END, i)

#Check if wanted release is out
self.search()

#redefine timer to get rss each 60sec
self.timerRSS = Timer(60, self.getRSS)
self.timerRSS.start()

def search(self):
if self.txtSearch.get() != "":
for i in self.titles:
if i.lower().find(self.txtSearch.get().lower()) >= 0:
msg.showinfo("Yay!", "%s is out!" % i)

def showInfo(self, evt):
no = int(self.listReleases.curselection()[0])
url = self.links[no]
webbrowser.open(url)

def quit(self):
self.timerRSS.cancel()
self.root.destroy()

if __name__ == '__main__':
rc = ReleaseChecker()
rc.root.mainloop()


And thanks tic for the idea
 

You may also like...

General chit-chat
Help Users
  • No one is chatting at the moment.
    K3N1 @ K3N1: Cheapest I found $230 tax/s&h +1