iso-rc release check

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

  1. tic
    OP

    tic Member

    Newcomer
    27
    0
    Jun 21, 2007
    [​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

    tic Member

    Newcomer
    27
    0
    Jun 21, 2007
    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

    UXSam Member

    Newcomer
    36
    0
    Jan 29, 2008
    United States
    Thank You! This is useful.
     
  4. j711ohn

    j711ohn Newbie

    Newcomer
    8
    0
    Jan 30, 2008
    United States
    thanks, this seems to work better than the other one released here.
     
  5. ZAFDeltaForce

    ZAFDeltaForce Specialist

    Member
    2,786
    208
    Sep 9, 2006
    Senegal
    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

    tic Member

    Newcomer
    27
    0
    Jun 21, 2007
    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

    tic Member

    Newcomer
    27
    0
    Jun 21, 2007
    1.01 is released with balloon tip notification as well

    ensure you have balloon tips enabled
     
  8. Metalclay

    Metalclay Member

    Newcomer
    30
    1
    Jan 31, 2008
    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

    legendofninny GBAtemp Regular

    Member
    180
    0
    Jun 7, 2005
    Netherlands
    Netherlands
    great thanks, this will be usefull for future game to come too
     
  10. tic
    OP

    tic Member

    Newcomer
    27
    0
    Jun 21, 2007
    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

    coolbho3000 GBATemp Kikkoman Naturally Brewed SoySauce Fanatic

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

    tic Member

    Newcomer
    27
    0
    Jun 21, 2007
    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

    King Zargo I'm a Star

    Member
    1,188
    34
    Aug 29, 2007
    Netherlands
    The Netherlands
    Do I need to input Japan or the US name for Smash Brothers?
     
  14. coolbho3000

    coolbho3000 GBATemp Kikkoman Naturally Brewed SoySauce Fanatic

    Member
    2,095
    29
    Apr 29, 2007
    Kikkoman Factory
    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

    tic Member

    Newcomer
    27
    0
    Jun 21, 2007
    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

    arctic_flame GBAtemp ATMEGA8 Fan

    Member
    2,840
    0
    Nov 4, 2006
    England land
    Hehe, locks up explorer when downloading the RSS (Gasp!)
     
  17. King Zargo

    King Zargo I'm a Star

    Member
    1,188
    34
    Aug 29, 2007
    Netherlands
    The 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

    tic Member

    Newcomer
    27
    0
    Jun 21, 2007
    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

    acidrain Advanced Member

    Newcomer
    97
    0
    Nov 17, 2006
    Canada
    Montreal, Qc
    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

    IxthusTiger Cruddy's Buddy

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