diff --git a/applescripts/get_album_artwork.scpt b/applescripts/get_album_artwork.scpt new file mode 100644 index 0000000..89025d9 --- /dev/null +++ b/applescripts/get_album_artwork.scpt @@ -0,0 +1,17 @@ +on run(directory) + tell application "iTunes" to tell artwork 1 of current track + set d to raw data + if format is "class PNG" then + set x to "png" + else + set x to "jpg" + end if + end tell + + (((directory) as text) & "cover." & x) + set b to open for access file result with write permission + set eof b to 0 + write d to b + close access b + return (((directory) as text) & "cover." & x) +end run diff --git a/applescripts/get_track_info.scpt b/applescripts/get_track_info.scpt new file mode 100644 index 0000000..144101a --- /dev/null +++ b/applescripts/get_track_info.scpt @@ -0,0 +1,15 @@ +on run() + tell application "iTunes" + set current_track to the current track + set track_album to the album of the current track + set track_artist to the artist of the current track + set track_comments to the comment of the current track + set track_name to the name of the current track + set track_rating to the rating of the current track + set track_duration to the duration of the current track + set track_finish to the finish of the current track + set track_start to the start of the current track + set track_position to the player position + end tell + return {album:track_album, artist:track_artist, track_name:track_name, rating:track_rating, duration:track_duration, finish:track_finish, start:track_start, position:track_position} +end run diff --git a/applescripts/is_running.scpt b/applescripts/is_running.scpt new file mode 100644 index 0000000..f835c37 --- /dev/null +++ b/applescripts/is_running.scpt @@ -0,0 +1,3 @@ +on run(appName) + tell application "System Events" to (name of processes) contains appName +end run diff --git a/applescripts/set_current_track_rating.scpt b/applescripts/set_current_track_rating.scpt new file mode 100644 index 0000000..e7ebe4d --- /dev/null +++ b/applescripts/set_current_track_rating.scpt @@ -0,0 +1,5 @@ +on run(track_rating) + tell application "iTunes" + set rating of current track to track_rating + end tell +end run diff --git a/iTunes Rating App.py b/iTunes Rating App.py index 2bf8dd9..d95bd2b 100644 --- a/iTunes Rating App.py +++ b/iTunes Rating App.py @@ -82,7 +82,8 @@ class MainWindow(wx.Frame): super(MainWindow, self).__init__( parent, title=title, - style= wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.STAY_ON_TOP + style= wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.STAY_ON_TOP | + wx.RESIZE_BORDER ) #-------------------------------------------------------------- #Create a file manu @@ -91,6 +92,7 @@ class MainWindow(wx.Frame): #Create a panel self.panel = wx.Panel(self) self.flashing_panel = False + self.flashbool = False #Define menu items menu_about = filemenu.Append( wx.ID_ABOUT, @@ -151,8 +153,8 @@ class MainWindow(wx.Frame): self.rating_text ): self.text_sizer.Add(i, 1, wx.EXPAND) - self.info_sizer.Add(self.text_sizer, 8, wx.EXPAND) - self.info_sizer.Add(self.button_sizer, 5, wx.EXPAND) + self.info_sizer.Add(self.text_sizer, wx.ALIGN_LEFT) + self.info_sizer.Add(self.button_sizer, wx.ALIGN_LEFT) #-------------------------------------------------------------- #Specify the maximum size of the album artwork @@ -162,18 +164,19 @@ class MainWindow(wx.Frame): self.icon = wx.StaticBitmap(self, bitmap=wx.BitmapFromImage(img)) #Add the artwork and the information sizer to the main sizer - self.main_sizer.Add(self.icon, 1, wx.EXPAND) - self.main_sizer.Add(self.info_sizer, 2, wx.EXPAND) + self.main_sizer.Add(self.icon, wx.ALIGN_LEFT) + self.main_sizer.Add(self.info_sizer, wx.ALIGN_LEFT) #Select the sizer to use for the main window self.SetAutoLayout(1) #Fit sizer 1 to window self.panel.SetSizerAndFit(self.main_sizer) - - sizer = wx.BoxSizer(wx.HORIZONTAL) - sizer.Add(self.panel) + + sizer = wx.BoxSizer(wx.HORIZONTAL | wx.ALIGN_LEFT) + sizer.Add(self.panel, wx.EXPAND) self.SetSizerAndFit(sizer) - + self.SetMinSize(self.GetBestSize()) + self.SetMaxSize((-1, self.GetBestSize()[1])) #initialize comunication thread iTunes_com_thread() @@ -226,14 +229,15 @@ class MainWindow(wx.Frame): img = img.Scale(120,120) self.icon = wx.StaticBitmap(self, bitmap=wx.BitmapFromImage(img)) if t["duration"] - t["position"] <= 30: - if self.panel.GetBackgroundColour() == "Yellow": + if self.flashbool: self.panel.SetBackgroundColour(wx.NullColour) self.panel.Refresh() + self.flashbool = False else: self.panel.SetBackgroundColour("Yellow") self.panel.Refresh() + self.flashbool = True else: - if self.panel.GetBackgroundColour() == "Yellow": self.panel.SetBackgroundColour(wx.NullColour) self.panel.Refresh() diff --git a/itunes_bridge.py b/itunes_bridge.py index 56c6073..bcd7afb 100644 --- a/itunes_bridge.py +++ b/itunes_bridge.py @@ -4,14 +4,24 @@ import applescript import os class iTunesBridge: - def __init__(self, script_file="./itunes_scripts.scpt"): - with open("./itunes_scripts.scpt") as script_file: - script_data = ''.join([line for line in script_file]) - self.as_bridge = applescript.AppleScript(script_data) + def __init__(self): + with open("./applescripts/is_running.scpt", 'r') as is_running_file,\ + open("./applescripts/get_track_info.scpt", 'r') as track_info_file,\ + open("./applescripts/set_current_track_rating.scpt", 'r') as\ + set_rating_file, open("./applescripts/get_album_artwork.scpt") as\ + album_artwork_file: + is_running_data = ''.join([line for line in is_running_file]) + track_info_data = ''.join([line for line in track_info_file]) + set_rating_data = ''.join([line for line in set_rating_file]) + album_artwork_data = ''.join([line for line in album_artwork_file]) + self.is_running_bridge = applescript.AppleScript(is_running_data) + self.track_info_bridge = applescript.AppleScript(track_info_data) + self.set_rating_bridge = applescript.AppleScript(set_rating_data) + self.album_artwork_bridge = applescript.AppleScript(album_artwork_data) self.current_track = None def is_running(self): - return self.as_bridge.call("is_running", "iTunes") + return self.is_running_bridge.run("iTunes") def set_current_track_rating(self, rating): """ @@ -19,7 +29,7 @@ class iTunesBridge: Return True if succesful else False """ try: - self.as_bridge.call("set_current_track_rating", rating) + self.set_rating_bridge.run(rating) return True except applescript.ScriptError: return False @@ -27,7 +37,7 @@ class iTunesBridge: def get_artwork(self, directory): directory = os.path.realpath(directory).replace('/', ':')[1:] try: - artwork = self.as_bridge.call("get_album_artwork", directory+':') + artwork = self.album_artwork_bridge.run(directory+':') except applescript.ScriptError: return None artwork = '/'+artwork.replace(':', '/') @@ -35,15 +45,13 @@ class iTunesBridge: def get_current_track_info(self): try: - track_info = self.as_bridge.call("get_current_track_info") + track_info = self.track_info_bridge.run() except applescript.ScriptError: return None return track_info def main(): - iTunes = iTunesBridge() - print iTunes.is_running() - iTunes.get_current_track_info() + print "Nothing in main" if __name__ == "__main__": main() diff --git a/itunes_scripts.scpt b/itunes_scripts.scpt deleted file mode 100644 index 185d355..0000000 --- a/itunes_scripts.scpt +++ /dev/null @@ -1,43 +0,0 @@ -on is_running(appName) - tell application "System Events" to (name of processes) contains appName -end is_running - -on get_current_track_info() - tell application "iTunes" - set current_track to the current track - set track_album to the album of the current track - set track_artist to the artist of the current track - set track_comments to the comment of the current track - set track_name to the name of the current track - set track_rating to the rating of the current track - set track_duration to the duration of the current track - set track_finish to the finish of the current track - set track_start to the start of the current track - set track_position to the player position - end tell - return {album:track_album, artist:track_artist, track_name:track_name, rating:track_rating, duration:track_duration, finish:track_finish, start:track_start, position:track_position} -end get_current_track_info - -on set_current_track_rating(track_rating) - tell application "iTunes" - set rating of current track to track_rating - end tell -end set_current_track_rating - -on get_album_artwork(directory) - tell application "iTunes" to tell artwork 1 of current track - set d to raw data - if format is "class PNG" then - set x to "png" - else - set x to "jpg" - end if - end tell - - (((directory) as text) & "cover." & x) - set b to open for access file result with write permission - set eof b to 0 - write d to b - close access b - return (((directory) as text) & "cover." & x) -end get_album_artwork