Skip to content

Commit

Permalink
Merge pull request #510 from sbugzu/master
Browse files Browse the repository at this point in the history
[fix]捕获通知命令无法找到的异常
  • Loading branch information
darknessomi committed Mar 17, 2017
2 parents 4048068 + 907caf1 commit ebf94ef
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 41 deletions.
88 changes: 56 additions & 32 deletions NEMbox/player.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,19 +68,23 @@ def popen_recall(self, onExit, popenArgs):
def runInThread(onExit, arg):
para = ['mpg123', '-R']
para[1:1] = self.mpg123_parameters
self.popen_handler = subprocess.Popen(para,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
self.popen_handler.stdin.write(b'V ' + str(self.info['playing_volume']).encode('utf-8') + b'\n')
if arg:
self.popen_handler.stdin.write(b'L ' + arg.encode('utf-8') + b'\n')
else:
self.next_idx()
onExit()
return
try:
self.popen_handler = subprocess.Popen(para,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
self.popen_handler.stdin.write(b'V ' + str(self.info['playing_volume']).encode('utf-8') + b'\n')
if arg:
self.popen_handler.stdin.write(b'L ' + arg.encode('utf-8') + b'\n')
else:
self.next_idx()
onExit()
return

self.popen_handler.stdin.flush()
self.popen_handler.stdin.flush()
except IOError as e:
log.error('stdin write error')
log.error(e)

self.process_first = True
while True:
Expand Down Expand Up @@ -111,13 +115,19 @@ def runInThread(onExit, arg):
'Song {} is not compatible with old api.'.format(sid))
popenArgs['mp3_url'] = new_url

self.popen_handler.stdin.write(b'\nL ' + new_url.encode('utf-8') + b'\n')
self.popen_handler.stdin.flush()
self.popen_handler.stdout.readline()
try:
self.popen_handler.stdin.write(b'\nL ' + new_url.encode('utf-8') + b'\n')
self.popen_handler.stdin.flush()
self.popen_handler.stdout.readline()
except IOError as e:
log.error(e)
elif strout == '@P 0\n':
self.popen_handler.stdin.write(b'Q\n')
self.popen_handler.stdin.flush()
self.popen_handler.kill()
try:
self.popen_handler.stdin.write(b'Q\n')
self.popen_handler.stdin.flush()
self.popen_handler.kill()
except IOError as e:
log.error(e)
break

if self.playing_flag:
Expand Down Expand Up @@ -276,20 +286,23 @@ def switch(self):
def stop(self):
if self.playing_flag and self.popen_handler:
self.playing_flag = False
self.popen_handler.stdin.write(b'Q\n')
self.popen_handler.stdin.flush()
try:
self.popen_handler.stdin.write(b'Q\n')
self.popen_handler.stdin.flush()
self.popen_handler.kill()
except OSError as e:
except IOError as e:
log.error(e)
return

def pause(self):
if not self.playing_flag and not self.popen_handler:
return
self.pause_flag = True
self.popen_handler.stdin.write(b'P\n')
self.popen_handler.stdin.flush()
try:
self.popen_handler.stdin.write(b'P\n')
self.popen_handler.stdin.flush()
except IOError as e:
log.error(e)
return

item = self.songs[self.info['player_list'][self.info['idx']]]
self.ui.build_playinfo(item['song_name'],
Expand All @@ -301,8 +314,12 @@ def pause(self):

def resume(self):
self.pause_flag = False
self.popen_handler.stdin.write(b'P\n')
self.popen_handler.stdin.flush()
try:
self.popen_handler.stdin.write(b'P\n')
self.popen_handler.stdin.flush()
except IOError as e:
log.error(e)
return

item = self.songs[self.info['player_list'][self.info['idx']]]
self.ui.build_playinfo(item['song_name'], item['artist'],
Expand Down Expand Up @@ -429,9 +446,13 @@ def volume_up(self):
self.info['playing_volume'] = 100
if not self.playing_flag:
return
self.popen_handler.stdin.write(b'V ' + str(self.info[
'playing_volume']).encode('utf-8') + b'\n')
self.popen_handler.stdin.flush()

try:
self.popen_handler.stdin.write(b'V ' + str(self.info[
'playing_volume']).encode('utf-8') + b'\n')
self.popen_handler.stdin.flush()
except IOError as e:
log.error(e)

def volume_down(self):
self.info['playing_volume'] = self.info['playing_volume'] - 7
Expand All @@ -440,9 +461,12 @@ def volume_down(self):
if not self.playing_flag:
return

self.popen_handler.stdin.write(b'V ' + str(self.info[
'playing_volume']).encode('utf-8') + b'\n')
self.popen_handler.stdin.flush()
try:
self.popen_handler.stdin.write(b'V ' + str(self.info[
'playing_volume']).encode('utf-8') + b'\n')
self.popen_handler.stdin.flush()
except IOError as e:
log.error(e)

def update_size(self):
self.ui.update_size()
Expand Down
25 changes: 16 additions & 9 deletions NEMbox/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@
from __future__ import absolute_import
from builtins import str
from future import standard_library
from . import logger
standard_library.install_aliases()
import platform
import os
import subprocess

log = logger.getLogger(__name__)

def utf8_data_to_file(f, data):
if hasattr(data, 'decode'):
Expand All @@ -22,16 +24,19 @@ def utf8_data_to_file(f, data):


def notify_command_osx(msg, msg_type, t=None):
command = '/usr/bin/osascript -e "display notification \\\"{}\\\" {} with title \\\"musicbox\\\""'
sound = 'sound name \\\"/System/Library/Sounds/Ping.aiff\\\"' if msg_type else ''
return command.format(msg, sound)
command = ['/usr/bin/osascript', '-e']
tpl = "display notification \"{}\" {} with title \"musicbox\""
sound = 'sound name \"/System/Library/Sounds/Ping.aiff\"' if msg_type else ''
command.append(tpl.format(msg, sound).encode('UTF-8'))
return command


def notify_command_linux(msg, t=None):
command = '/usr/bin/notify-send "' + msg + '"'
command = ['/usr/bin/notify-send']
command.append(msg.encode('UTF-8'))
if t:
command += ' -t ' + str(t)
command += ' -h int:transient:1'
command.extend(['-t', str(t)])
command.extend(['-h', 'int:transient:1'])
return command


Expand All @@ -41,8 +46,10 @@ def notify(msg, msg_type=0, t=None):
command = notify_command_osx(msg, msg_type, t)
else:
command = notify_command_linux(msg, t)
os.system(command.encode('utf-8'))

try:
subprocess.call(command)
except OSError as e:
log.warning('Sending notification error.')

if __name__ == "__main__":
notify("I'm test 1", msg_type=1, t=1000)
Expand Down

0 comments on commit ebf94ef

Please sign in to comment.