iso-rc release check

Discussion in 'User Submitted News' started by tic, Jan 31, 2008.

Jan 31, 2008

iso-rc release check by tic at 1:56 AM (3,339 Views / 0 Likes) 22 replies

  1. tic
    OP

    Newcomer tic Member

    Joined:
    Jun 21, 2007
    Messages:
    27
    Country:
    United Kingdom
    [​IMG]

    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
     


  2. tic
    OP

    Newcomer tic Member

    Joined:
    Jun 21, 2007
    Messages:
    27
    Country:
    United Kingdom
    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
     
  3. UXSam

    Newcomer UXSam Member

    Joined:
    Jan 29, 2008
    Messages:
    36
    Country:
    United States
    Thank You! This is useful.
     
  4. j711ohn

    Newcomer j711ohn Newbie

    Joined:
    Jan 30, 2008
    Messages:
    8
    Country:
    United States
    thanks, this seems to work better than the other one released here.
     
  5. ZAFDeltaForce

    Member ZAFDeltaForce Specialist

    Joined:
    Sep 9, 2006
    Messages:
    2,786
    Country:
    Singapore
    Nice. Good job dude, a truly useful application [​IMG]

    Now I don't have to mindlessly refresh GBATemp when waiting for a release
     
  6. tic
    OP

    Newcomer tic Member

    Joined:
    Jun 21, 2007
    Messages:
    27
    Country:
    United Kingdom
    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
     
  7. tic
    OP

    Newcomer tic Member

    Joined:
    Jun 21, 2007
    Messages:
    27
    Country:
    United Kingdom
    1.01 is released with balloon tip notification as well

    ensure you have balloon tips enabled
     
  8. Metalclay

    Newcomer Metalclay Member

    Joined:
    Jan 31, 2008
    Messages:
    30
    Country:
    United States
    doesn't work for me.

    when I double click the are where the games are supposed to update i get: [​IMG]

    eh...w/e, i got the rss as a bookmark [​IMG] would be nice to have a barking a dog to tell me when it's ready, or something.
     
  9. legendofninny

    Member legendofninny GBAtemp Regular

    Joined:
    Jun 7, 2005
    Messages:
    180
    Location:
    Netherlands
    Country:
    Netherlands
    great thanks, this will be usefull for future game to come too
     
  10. tic
    OP

    Newcomer tic Member

    Joined:
    Jun 21, 2007
    Messages:
    27
    Country:
    United Kingdom
    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
     
  11. coolbho3000

    Member coolbho3000 GBATemp Kikkoman Naturally Brewed SoySauce Fanatic

    Joined:
    Apr 29, 2007
    Messages:
    2,095
    Location:
    Kikkoman Factory
    Country:
    Could you please? I'm always willing to learn new development methods. [​IMG]
     
  12. tic
    OP

    Newcomer tic Member

    Joined:
    Jun 21, 2007
    Messages:
    27
    Country:
    United Kingdom
    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
     
  13. King Zargo

    Member King Zargo I'm a Star

    Joined:
    Aug 29, 2007
    Messages:
    1,186
    Location:
    The Netherlands
    Country:
    Netherlands
    Do I need to input Japan or the US name for Smash Brothers?
     
  14. coolbho3000

    Member coolbho3000 GBATemp Kikkoman Naturally Brewed SoySauce Fanatic

    Joined:
    Apr 29, 2007
    Messages:
    2,095
    Location:
    Kikkoman Factory
    Country:
    It doesn't matter, really, as long as you have "smash" which is common in all the names.

    And thanks for the source code, tic
     
  15. tic
    OP

    Newcomer tic Member

    Joined:
    Jun 21, 2007
    Messages:
    27
    Country:
    United Kingdom
    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 [​IMG]
    No problem posting the source code. Ask if you wanna know anything from it
     
  16. arctic_flame

    Member arctic_flame GBAtemp ATMEGA8 Fan

    Joined:
    Nov 4, 2006
    Messages:
    2,840
    Location:
    England land
    Country:
    United Kingdom
    Hehe, locks up explorer when downloading the RSS (Gasp!)
     
  17. King Zargo

    Member King Zargo I'm a Star

    Joined:
    Aug 29, 2007
    Messages:
    1,186
    Location:
    The Netherlands
    Country:
    Netherlands
    Thanks [​IMG]

    Now I only need to find a song worthy of this Epic Release. "Rolling Stones - Sympathy For The Devil"
     
  18. tic
    OP

    Newcomer tic Member

    Joined:
    Jun 21, 2007
    Messages:
    27
    Country:
    United Kingdom
    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 [​IMG] 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.
     
  19. acidrain

    Newcomer acidrain Advanced Member

    Joined:
    Nov 17, 2006
    Messages:
    97
    Location:
    Montreal, Qc
    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
     
  20. IxthusTiger

    Member IxthusTiger Cruddy's Buddy

    Joined:
    Mar 1, 2003
    Messages:
    1,610
    Country:
    United States
    Can we tie this to a sound file so when Smash Bros comes out, your speakers blast out FALCON --- PAUNCH!
     

Share This Page