refactored applescript handeling, added horizontal resizing
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1,3 @@
|
||||
on run(appName)
|
||||
tell application "System Events" to (name of processes) contains appName
|
||||
end run
|
||||
@@ -0,0 +1,5 @@
|
||||
on run(track_rating)
|
||||
tell application "iTunes"
|
||||
set rating of current track to track_rating
|
||||
end tell
|
||||
end run
|
||||
+15
-11
@@ -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()
|
||||
|
||||
|
||||
+19
-11
@@ -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()
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user