def create_player_and_buttons(self): self.panel = wx.Panel(parent=self) # Make sizer outerBoxSizer = wx.BoxSizer(wx.VERTICAL) searchInputSizer = self.create_search_input_sizer() gaugeBarSizer = self.make_gauge_bar_sizer() playerButtonsSizer = self.make_player_button_sizer() # Add player and events mplayer_controller = mpc.MplayerCtrl(self.panel, -1, 'mplayer') self.media_player = MediaPlayer(mplayer_controller) self.bind_events_to_media_player() # Add sizer to outer sizer outerBoxSizer.Add(searchInputSizer, 0, wx.ALL | wx.EXPAND, 5) outerBoxSizer.Add(mplayer_controller, 1, wx.ALL | wx.EXPAND, 5) outerBoxSizer.Add(gaugeBarSizer, 0, wx.ALL | wx.EXPAND, 5) outerBoxSizer.Add(playerButtonsSizer, 0, wx.BOTTOM | wx.LEFT | wx.RIGHT, 5) self.panel.SetSizer(outerBoxSizer)
def playSongWithPath(self, songPath): logging.debug("Path: {}".format(songPath)) mediaPlayer = MediaPlayer(songPath) mediaPlayer.playSound() self.songsArray.append(mediaPlayer)
MP_SERVICE = 'media.player' DESCRIPTOR = "android.net.wifi.IWifiManager"; FIRST_CALL_TRANSACTION = 1 mRemote = Binder(MP_SERVICE) print mRemote.getInterfaceDescriptor() """ #I/amplayer( 5686): file::::[/storage/external_storage/sdcard1/gee.avi],len=41 import pydroid pydroid.import_binder() pydroid.import_mediaplayer() pydroid.import_android_log() from MediaPlayer import MediaPlayer mp = MediaPlayer() print '1111111' video_path = r'/storage/external_storage/sdcard1/gee.avi' #video_path = "http://beijing-mobile.tvvod.wasu.tv/data10/ott/344/2013-12/24/1387861279484_288967.ts?userID=2014042417684060&sessionID=1404722920916&proTitle=wasu" print mp.setDataSource(video_path) mp.prepare() mp.start() while mp.isPlaying(): import time;time.sleep(1.0) for i in range(10):
class PlayerUI(wx.Frame): def __init__(self, directory=None): super(PlayerUI, self).__init__(parent=None, title="YouStream", size=(DEFAULT_WIDTH, DEFAULT_HEIGHT)) self.directory = utils.make_directory(directory) self.build_UI() self.Show() self.panel.Layout() # self.Maximize() self.player_manager = PlayerManager(self.media_player, self.directory) self.timer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.on_timer) self.timer.Start(TIMER_INTERVAL * 1000) def build_UI(self): self.CreateStatusBar() self.create_menu() self.create_player_and_buttons() def create_menu(self): filemenu = wx.Menu() menuOpen = filemenu.Append(wx.NewId(), "&Open", "Open a file") menuAbout = filemenu.Append(wx.ID_ABOUT, "&About", "Information about this program!") menuExit = filemenu.Append(wx.ID_EXIT, "&Exit", "Exit this program") self.Bind(wx.EVT_MENU, self.on_open, menuOpen) self.Bind(wx.EVT_MENU, self.on_about, menuAbout) self.Bind(wx.EVT_MENU, self.on_exit, menuExit) menuBar = wx.MenuBar() menuBar.Append(filemenu, "&File") self.SetMenuBar(menuBar) def create_player_and_buttons(self): self.panel = wx.Panel(parent=self) # Make sizer outerBoxSizer = wx.BoxSizer(wx.VERTICAL) searchInputSizer = self.create_search_input_sizer() gaugeBarSizer = self.make_gauge_bar_sizer() playerButtonsSizer = self.make_player_button_sizer() # Add player and events mplayer_controller = mpc.MplayerCtrl(self.panel, -1, 'mplayer') self.media_player = MediaPlayer(mplayer_controller) self.bind_events_to_media_player() # Add sizer to outer sizer outerBoxSizer.Add(searchInputSizer, 0, wx.ALL | wx.EXPAND, 5) outerBoxSizer.Add(mplayer_controller, 1, wx.ALL | wx.EXPAND, 5) outerBoxSizer.Add(gaugeBarSizer, 0, wx.ALL | wx.EXPAND, 5) outerBoxSizer.Add(playerButtonsSizer, 0, wx.BOTTOM | wx.LEFT | wx.RIGHT, 5) self.panel.SetSizer(outerBoxSizer) def bind_events_to_media_player(self): self.panel.Bind(mpc.EVT_MEDIA_STARTED, self.on_media_started) self.panel.Bind(mpc.EVT_MEDIA_FINISHED, self.on_media_finished) def make_gauge_bar_sizer(self): self.gauge_bar = wx.Gauge(self.panel, style=2) gauge_bar_sizer = wx.BoxSizer(wx.HORIZONTAL) gauge_bar_sizer.Add(self.gauge_bar, proportion=1, flag=wx.ALL, border=5) return gauge_bar_sizer def make_player_button_sizer(self): """ Creates all the buttons for the player: previous, play, pause, reset and next. """ player_flow_sizer = wx.BoxSizer(wx.HORIZONTAL) data_list = [{'label': 'Previous', 'handler': self.on_previous}, {'label': 'Play', 'handler': self.on_play}, {'label': 'Pause', 'handler': self.on_pause}, {'label': 'Reset', 'handler': self.on_reset}, {'label': 'Next', 'handler': self.on_next}] for button_properties in data_list: button = self.make_button(button_properties) player_flow_sizer.Add(button, 0, wx.ALL, 3) return player_flow_sizer def make_button(self, button_properties): button = wx.Button(self.panel, label=button_properties['label']) button.SetInitialSize() button.Bind(wx.EVT_BUTTON, button_properties['handler']) return button def create_search_input_sizer(self): self.search_terms_input = wx.TextCtrl(self.panel) search_button = wx.Button(self.panel, label='Watch') self.Bind(wx.EVT_BUTTON, self.on_search, search_button) # todo: currently doesn't work. Pressing a key has no effect # todo: also we must do this only for the return key, not just any key pressed # todo: becayse otherwise we simply would search at every keystroke # self.Bind(wx.EVT_KEY_DOWN, self.on_search, self.search_terms_input) # Add controls to sizer search_box_sizer = wx.BoxSizer(wx.HORIZONTAL) search_box_sizer.Add(self.search_terms_input, proportion=1, flag=wx.ALL, border=10) search_box_sizer.Add(search_button, 0, flag=wx.ALL, border=8) return search_box_sizer # -------- Event Handlers --------------------------------- def on_open(self, evt): dialog = wx.FileDialog(self, message="Choose a file", defaultDir=os.getcwd(), defaultFile="", wildcard="*.*", style=wx.OPEN | wx.CHANGE_DIR) if dialog.ShowModal() == wx.ID_OK: path = dialog.GetPath() self.player_manager.open(path) dialog.Destroy() def on_about(self, evt): dialog = wx.MessageDialog(self, "A video streaming service", "About streaming service", wx.OK) dialog.ShowModal() dialog.Destroy() def on_media_started(self, evt): self.update_gauge() self.player_manager.on_media_started() length = self.player_manager.get_current_video_length() print("Length of file: %d" % length) def on_media_finished(self, evt): self.set_gauge_bar_empty() self.player_manager.on_media_finished() def on_exit(self, evt): self.media_player.destroy() self.player_manager.destroy() self.Close(True) def on_previous(self, evt): self.player_manager.on_previous() def on_pause(self, evt): self.player_manager.on_pause() def on_play(self, evt): self.player_manager.on_play() def on_reset(self, evt): self.player_manager.on_reset() def on_next(self, evt): self.player_manager.on_next() def on_search(self, evt): search_terms = self.get_search_terms() self.player_manager.on_search(search_terms) def on_timer(self, evt): # todo: if, for some reason (SLOW internet), the media player goes to the end of the file # todo: it will stop and dont try to continue when new contents are ready. Fix this! must_restart_video = self.must_restart_video() if must_restart_video: print "Restarting video." self.restart_video() if self.player_manager.is_video_playing(): self.video_time_position = self.player_manager.get_current_video_time_position() self.update_gauge() self.player_manager.on_timer() # Helper function def get_search_terms(self): return self.search_terms_input.GetValue().split() def restart_video(self): path = self.player_manager.get_current_video_file_path() video_time_position = self.player_manager.get_current_video_time_position() self.media_player.play_current_video_at_time_position(path, video_time_position) def must_restart_video(self): is_downloading = self.player_manager.is_downloading() is_video_playing = self.player_manager.is_video_playing() current_time_position = self.player_manager.get_current_video_time_position() return not is_video_playing and is_downloading and current_time_position > 2 def raise_error_window(self, path): message = "Unable to load %s: Unsupported format?" % path wx.MessageBox(message, "ERROR", wx.ICON_ERROR | wx.OK) # Gauge def update_gauge(self): if self.player_manager.is_video_playing(): self.adjust_gauge() def adjust_gauge(self): if self.must_adjust_gauge(): self.adjust_gauge_range() self.adjust_gauge_value() def must_adjust_gauge(self): return self.gauge_bar.GetRange() == 0 or self.gauge_bar.GetRange() == BIG_VALUE def adjust_gauge_range(self): length = self.player_manager.get_current_video_length() if length == 0: self.set_gauge_bar_empty() else: self.gauge_bar.SetRange(length) def set_gauge_bar_empty(self): self.gauge_bar.SetRange(BIG_VALUE) self.gauge_bar.SetValue(0) def adjust_gauge_value(self): video_time_position = self.player_manager.get_current_video_time_position() self.gauge_bar.SetValue(video_time_position)
MP_SERVICE = 'media.player' DESCRIPTOR = "android.net.wifi.IWifiManager"; FIRST_CALL_TRANSACTION = 1 mRemote = Binder(MP_SERVICE) print mRemote.getInterfaceDescriptor() """ #I/amplayer( 5686): file::::[/storage/external_storage/sdcard1/gee.avi],len=41 import pydroid pydroid.import_binder() pydroid.import_mediaplayer() pydroid.import_android_log() from MediaPlayer import MediaPlayer mp = MediaPlayer() print '1111111' video_path = r'/storage/external_storage/sdcard1/gee.avi' #video_path = "http://beijing-mobile.tvvod.wasu.tv/data10/ott/344/2013-12/24/1387861279484_288967.ts?userID=2014042417684060&sessionID=1404722920916&proTitle=wasu" print mp.setDataSource(video_path) mp.prepare() mp.start() while mp.isPlaying(): import time time.sleep(1.0)
def main(): print '[+] Starting bot...' # Read the config file print '[+] Reading config file...' config = ConfigParser.ConfigParser() config.read([os.path.expanduser('./config')]) # Read data bot_name = config.get('bot', 'name') bot_token = config.get('bot', 'token') user_id = config.get('user', 'allowed') # Last mssg id: last_id = int(load_last_id()) print '[+] Last id: %d' % last_id # Configure regex regex = re.compile('[%s]' % re.escape(string.punctuation)) # Create bot print '[+] Connecting bot...' bot = TelegramBot(bot_token) bot.update_bot_info().wait() print '\tBot connected! Bot name: %s' % bot.username # Create media player controllers: player = MediaPlayer() if not player.connect_to_player(): print 'Error connecting to player. Exiting...' return -1 # Send special keyboard: send_keyboard(bot, user_id) while True: try: updates = bot.get_updates(offset=last_id).wait() for update in updates: id = update.message.message_id update_id = update.update_id user = update.message.sender chat_id = update.message.chat.id text = update.message.text if int(update_id) > last_id: last_id = update_id save_last_id(last_id) save_log(id, update_id, chat_id, text) #text = regex.sub('', text) words = text.split() for word in words: # Process commands: if word == '/start': print "New user started the app: " + str(user) # Restricted API if int(user_id) == user.id: if 'Play' in word: print '[+] Play command' player.play() elif 'Pause' in word: print '[+] Pause command' player.pause() elif 'Previous' in word: print '[+] Previous command' player.previous() elif 'Next' in word: print '[+] Next command' player.next() except (KeyboardInterrupt, SystemExit): print '\nkeyboardinterrupt caught (again)' print '\n...Program Stopped Manually!' raise
print('Exiting...') os._exit(0) if test == 'skip' or test == 'next': print(f'{player.play_queue[0]} skipped') player.player.stop() if test == 'queue': print([str(member) for member in player.play_queue]) else: pass time.sleep(1) if __name__ == "__main__": read_buffer = '' c = TwitchConnection(NICK, CHANNEL) player = MediaPlayer() input_thread = threading.Thread(target=quit_handler, daemon=True) input_thread.start() while True: read_buffer = read_buffer + str(c.connection.recv(2048)) temp = read_buffer.split('\\r\\n') read_buffer = temp.pop() for line in temp: if 'PING :tmi.twitch.tv' in line: c.pong() elif ';bits=' in line and bits_parse(line) != None: print(f'{get_user(line)} cheered {bits_parse(line)} bits!') if url_parse(line) != None: print(f'{get_user(line)} shared a video!')
def __init__(self, fileLocationArray): self.mediaPlayers = [] for fileLocation in fileLocationArray: mediaPlayer = MediaPlayer(fileLocation) self.mediaPlayers.append(mediaPlayer)