def play_mv_by_mvid(cls, mvid): mv_model = ControllerApi.api.get_mv_detail(mvid) if not ControllerApi.api.is_response_ok(mv_model): return url_high = mv_model['url_high'] clipboard = QApplication.clipboard() clipboard.setText(url_high) cls.view.ui.STATUS_BAR.showMessage(u"程序已经将视频的播放地址复制到剪切板", 5000) if platform.system() == "Linux": ControllerApi.player.pause() ControllerApi.notify_widget.show_message("通知", "正在尝试调用VLC视频播放器播放MV") try: subprocess.Popen(['vlc', url_high, '--play-and-exit', '-f']) except Exception as e: LOG.error('call vlc player failed') elif platform.system().lower() == 'Darwin'.lower(): ControllerApi.player.pause() ControllerApi.notify_widget.show_message( "通知", "准备调用 QuickTime Player 播放mv") try: subprocess.Popen(['open', '-a', 'QuickTime Player', url_high]) except Exception as e: LOG.error('call quicktime player failed')
def keyboard_tap_callback(proxy, type_, event, refcon): from AppKit import NSKeyUp, NSEvent, NSBundle NSBundle.mainBundle().infoDictionary()['NSAppTransportSecurity'] =\ dict(NSAllowsArbitraryLoads=True) if type_ < 0 or type_ > 0x7fffffff: LOG.error('Unkown mac event') run_event_loop() LOG.error('restart mac key board event loop') return event try: key_event = NSEvent.eventWithCGEvent_(event) except: LOG.info("mac event cast error") return event if key_event.subtype() == 8: key_code = (key_event.data1() & 0xFFFF0000) >> 16 key_state = (key_event.data1() & 0xFF00) >> 8 if key_code in (16, 19, 20): # 16 for play-pause, 19 for next, 20 for previous if key_state == NSKeyUp: if key_code is 19: ControllerApi.player.play_next() elif key_code is 20: ControllerApi.player.play_last() elif key_code is 16: ControllerApi.player.play_or_pause() return None return event
def run_event_loop(): LOG.info("try to load mac hotkey event loop") import Quartz from AppKit import NSSystemDefined # Set up a tap, with type of tap, location, options and event mask tap = Quartz.CGEventTapCreate( Quartz.kCGSessionEventTap, # Session level is enough for our needs Quartz.kCGHeadInsertEventTap, # Insert wherever, we do not filter Quartz.kCGEventTapOptionDefault, # NSSystemDefined for media keys Quartz.CGEventMaskBit(NSSystemDefined), keyboard_tap_callback, None ) run_loop_source = Quartz.CFMachPortCreateRunLoopSource( None, tap, 0) Quartz.CFRunLoopAddSource( Quartz.CFRunLoopGetCurrent(), run_loop_source, Quartz.kCFRunLoopDefaultMode ) # Enable the tap Quartz.CGEventTapEnable(tap, True) # and run! This won't return until we exit or are terminated. Quartz.CFRunLoopRun() LOG.error('Mac hotkey event loop exit') return []
def keyboard_tap_callback(proxy, type_, event, refcon): from AppKit import NSKeyUp, NSEvent if type_ < 0 or type_ > 0x7FFFFFFF: LOG.error("Unkown mac event") run_event_loop() LOG.error("restart mac key board event loop") return event try: key_event = NSEvent.eventWithCGEvent_(event) except: LOG.info("mac event cast error") return event if key_event.subtype() == 8: key_code = (key_event.data1() & 0xFFFF0000) >> 16 key_state = (key_event.data1() & 0xFF00) >> 8 if key_code in (16, 19, 20): # 16 for play-pause, 19 for next, 20 for previous if key_state == NSKeyUp: if key_code is 19: ControllerApi.player.play_next() elif key_code is 20: ControllerApi.player.play_last() elif key_code is 16: ControllerApi.player.play_or_pause() return None return event
def http_request(self, method, action, query=None, urlencoded=None, callback=None, timeout=3): LOG.info('method=%s url=%s query=%s' % (method, action, query)) try: res = None if method == "GET": res = requests.get(action, headers=self.headers, cookies=self.cookies, timeout=timeout) elif method == "POST": res = requests.post(action, data=query, headers=self.headers, cookies=self.cookies, timeout=timeout) elif method == "POST_UPDATE": res = requests.post(action, data=query, headers=self.headers, cookies=self.cookies, timeout=timeout) self.cookies.update(res.cookies.get_dict()) content = show_requests_progress(res, self.signal_load_progress) content_str = content.decode('utf-8') content_dict = json.loads(content_str) return content_dict except Exception as e: LOG.error(str(e)) return {"code": 408}
def check_release(cls): url = 'https://api.github.com/repos/cosven/FeelUOwn/releases' LOG.info('正在查找新版本...') try: loop = asyncio.get_event_loop() future = loop.run_in_executor(None, partial(requests.get, url, timeout=5)) res = yield from future if not res.status_code == 200: LOG.warning('connect to api.github.com timeout') return releases = res.json() for release in releases: if release['tag_name'] > cls.current_version: title = u'发现新版本 %s hoho' % release['tag_name'] LOG.info(title) content = release['name'] ControllerApi.notify_widget.show_message(title, content) ViewOp.ui.STATUS_BAR.showMessage(title, 5000) break except Exception as e: LOG.error(str(e))
def check_release(cls): url = 'https://api.github.com/repos/cosven/FeelUOwn/releases' LOG.info('正在查找新版本...') try: loop = asyncio.get_event_loop() future = loop.run_in_executor( None, partial(requests.get, url, timeout=5)) res = yield from future if not res.status_code == 200: LOG.warning('connect to api.github.com timeout') return releases = res.json() for release in releases: if release['tag_name'] > cls.current_version: title = u'发现新版本 %s hoho' % release['tag_name'] LOG.info(title) content = release['name'] ControllerApi.notify_widget.show_message(title, content) ViewOp.ui.STATUS_BAR.showMessage(title, 5000) break except Exception as e: LOG.error(str(e))
def play_mv_by_mvid(cls, mvid): mv_model = ControllerApi.api.get_mv_detail(mvid) if not ControllerApi.api.is_response_ok(mv_model): return url_high = mv_model['url_high'] clipboard = QApplication.clipboard() clipboard.setText(url_high) cls.view.ui.STATUS_BAR.showMessage(u"程序已经将视频的播放地址复制到剪切板", 5000) if platform.system() == "Linux": ControllerApi.player.pause() ControllerApi.notify_widget.show_message("通知", "正在尝试调用VLC视频播放器播放MV") try: subprocess.Popen(['vlc', url_high, '--play-and-exit', '-f']) except Exception as e: LOG.error('call vlc player failed') elif platform.system().lower() == 'Darwin'.lower(): ControllerApi.player.pause() ControllerApi.notify_widget.show_message("通知", "准备调用 QuickTime Player 播放mv") try: subprocess.Popen(['open', '-a', 'QuickTime Player', url_high]) except Exception as e: LOG.error('call quicktime player failed')