Class: Switchboard::Commands::PEP::Tune
- Inherits:
-
Switchboard::Command
- Object
- Switchboard::Command
- Switchboard::Commands::PEP::Tune
- Defined in:
- lib/switchboard/commands/pep/tune.rb
Class Method Summary collapse
Methods inherited from Switchboard::Command
description, help, options, to_command, to_command_name
Class Method Details
.run! ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/switchboard/commands/pep/tune.rb', line 9 def self.run! begin require 'appscript' rescue LoadError => e lib = e..split("--").last.strip puts "#{lib} is required for this command to work." exit 1 end switchboard = Switchboard::Client.new do @tune_helper = Jabber::UserTune::Helper.new(client, nil) itunes = Appscript.app('iTunes') old_track_info = nil last_state = :paused while !shutdown? track = itunes.current_track.get state = itunes.player_state.get if track && state == :playing artist = track.artist.get name = track.name.get source = track.album.get track_info = [artist, name, source] if track_info != old_track_info duration = track.duration.get.to_i track = track.track_number.get.to_s puts "Now playing: #{name} by #{artist}" tune = Jabber::UserTune::Tune.new \ artist, name, duration, track, source begin @tune_helper.(tune) rescue Jabber::ServerError => e puts e end end elsif state != last_state track_info = nil begin @tune_helper. rescue Jabber::ServerError => e puts e end end old_track_info = track_info last_state = state sleep 1 end end switchboard.on_shutdown do begin @tune_helper. rescue Jabber::ServerError => e puts e end end switchboard.plug!(AutoAcceptJack) switchboard.run! end |