def __init_values(self): # self.youku_web_parse = YoukuWebParse() # self.show_check = auto_check self.tree_view = self.this.gui.play_list_view.tree_view self.tree_view.connect_event("treeview-press-event", self.__treeview_press_event) self.tree_view.connect_event("treeview-double-event", self.__treeview_double_event) self.note_book = self.this.gui.play_list_view.note_book # 初始化网络播放列表. self.__init_tree_view()
def __init_values(self): # self.youku_web_parse = YoukuWebParse() # self.show_check = auto_check self.tree_view = self.this.gui.play_list_view.tree_view self.tree_view.connect_event("treeview-press-event", self.__treeview_press_event) self.note_book = self.this.gui.play_list_view.note_book # 初始化网络播放列表. self.__init_tree_view()
class PluginYouku(object): def __init__(self, this): self.this = this self.this.add_net_to_play_list self.__init_values() #self.__init_gui() def __init_values(self): # self.youku_web_parse = YoukuWebParse() # self.show_check = auto_check self.tree_view = self.this.gui.play_list_view.tree_view self.tree_view.connect_event("treeview-press-event", self.__treeview_press_event) self.tree_view.connect_event("treeview-double-event", self.__treeview_double_event) self.note_book = self.this.gui.play_list_view.note_book # 初始化网络播放列表. self.__init_tree_view() def __init_tree_view(self): self.youku_root = self.tree_view.nodes.add("优酷视频") self.youku_root.addr = "http://www.youku.com" # 初始化根节点的 表单. for key, addr in youku_root.items(): node = self.youku_root.nodes.add(key) node.addr = addr self.tv_node = self.youku_root.nodes[0] self.movie_node = self.youku_root.nodes[1] self.zy_node = self.youku_root.nodes[2] self.music_node = self.youku_root.nodes[3] self.comic_node = self.youku_root.nodes[4] # self.__init_type_lists() def __init_type_lists(self): for key in tv_type_dict.keys(): node = self.tv_node.nodes.add(key) node.addr = tv_type_dict[key] for key in movie_type_dict.keys(): node = self.movie_node.nodes.add(key) node.addr = movie_type_dict[key] for key in zy_type_dict.keys(): node = self.zy_node.nodes.add(key) node.addr = zy_type_dict[key] for key in music_type_dict.keys(): node = self.music_node.nodes.add(key) node.addr = music_type_dict[key] for key in comic_type_dict.keys(): node = self.comic_node.nodes.add(key) node.addr = comic_type_dict[key] ''' #info_list, page_num, all_sum = self.youku_web_parse.parse_web(v_olist_dict["热血"]) for info in info_list: node = re_xue_node.nodes.add(info[0]) node.addr = info[1] ''' def __treeview_press_event(self, treeview, node): if node.leave == 2 and node.nodes == []: scan_treeview = ScanTreeview(self.youku_web_parse, node.addr, True) scan_treeview.connect("scan-end-event", self.scan_treeview_end_event, node) scan_treeview.run() elif (node.leave == 3 and node.nodes == [] and node.parent.this.parent.this.text not in ["音乐", "电影"]): scan_treeview = ScanTreeview(self.youku_web_parse, node.addr, False) scan_treeview.connect("scan-end-event", self.scan_treeview_end_event, node) scan_treeview.run() def __treeview_double_event(self, tree_view, node): if node.leave == 4: self.add_to_play_list(node) elif node.leave == 3: # 判断是否为音乐,电影,因为电影,音乐不在这个范围内(层级). if node.parent.this.parent.this.text in ["音乐"]: self.add_to_play_list(node) elif node.parent.this.parent.this.text in ["电影"]: movie_info = self.youku_web_parse.scan_movie_leave(node.addr) if movie_info: save_addr = node.addr node.addr = movie_info[0] self.add_to_play_list(node) node.addr = save_addr else: self.this.show_messagebox("优酷收费视频,无法播放...") def scan_treeview_end_event(self, scan_tv, temp_list, node): for addr, name in temp_list: temp_node = node.nodes.add(name) temp_node.addr = addr if temp_list: node.is_expanded = True def add_to_play_list(self, node): flvcd = YouToFlvcd() scan_treeview = ScanTreeview(flvcd, node.addr, 2) scan_treeview.connect("scan-end-event", self.scan_end_add_to_list_event, node) scan_treeview.run() #flvcd_addr_list = flvcd.parse(node.addr) def scan_end_add_to_list_event(self, scan_tv, temp_list, node): flvcd_addr_list = temp_list index = 0 for addr in flvcd_addr_list: check = False if not index: check = True if len(flvcd_addr_list) > 1: text = node.text + "-" + str(index) else: text = node.text self.this.add_net_to_play_list( text, addr, "优酷视频", check) index += 1 def __init_gui(self): self.scan_win = gtk.Window(gtk.WINDOW_TOPLEVEL) self.scrol_win = gtk.ScrolledWindow() self.scan_entry_hbox = gtk.HBox() self.scan_entry = gtk.Entry() self.scan_btn = gtk.Button("搜索") self.scan_btn.connect("clicked", self.scan_btn_clicked) self.scan_entry_hbox.pack_start(self.scan_entry, False, False) self.scan_entry_hbox.pack_start(self.scan_btn, False, False) # self.vbox = gtk.VBox() self.vbox.pack_start(self.scan_entry_hbox, False, False) self.scrol_win.add_with_viewport(self.vbox) self.scan_win.add(self.scrol_win) # w, h = 300, 300 self.scan_win.set_size_request(w, h) def scan_btn_clicked(self, widget): scan_text = self.scan_entry.get_text() scan_info = scan_page(1, scan_text) info_list = scan_info[0] # 信息列表. for info_list in scan_info[0]: btn = gtk.Button(info_list[0] + info_list[1] + "时间" + info_list[2] + info_list[3]) btn.connect("clicked", self.btn_connect_addr_to, info_list) self.vbox.pack_start(btn, False, False) self.vbox.show_all() ####################################### #page_num = scan_info[1] # 一页的总页数. #sum = scan_info[2] # 全部搜索的数. #page_sum = min(sum/page_num, 100) #print "总的页数:", page_sum def btn_connect_addr_to(self, widget, info): flvcd = YouToFlvcd() flvcd_addr_list = flvcd.parse(info[1]) index = 0 for addr in flvcd_addr_list: check = False if not index: check = True self.this.add_net_to_play_list(info[0]+ str(index), addr, info[3], check) index += 1 def show_scan_win(self): if self.show_check: self.scan_win.show_all() def hide_scan_win(self): self.scan_win.hide_all() def start_plugin(self): #print "start_plugin." self.show_check = True #self.show_scan_win() self.note_book.show_title() # 修复BUG, 当为网络列表的时候 隐藏,就看不到本地列表拉. self.note_book.layout_show_check = False self.note_book.set_child_size() # 展开节点. self.youku_root.is_expanded = True def stop_plugin(self): #print "end_plugin..." self.show_check = False # 删除网络列表的node. # 并影藏网络列表. self.note_book.hide_title() self.tree_view.clear() self.note_book.layout_show_check = True self.note_book.set_child_size()
class PluginYouku(object): def __init__(self, this): self.this = this self.this.add_net_to_play_list self.__init_values() #self.__init_gui() def __init_values(self): # self.youku_web_parse = YoukuWebParse() # self.show_check = auto_check self.tree_view = self.this.gui.play_list_view.tree_view self.tree_view.connect_event("treeview-press-event", self.__treeview_press_event) self.tree_view.connect_event("treeview-double-event", self.__treeview_double_event) self.note_book = self.this.gui.play_list_view.note_book # 初始化网络播放列表. self.__init_tree_view() def __init_tree_view(self): self.youku_root = self.tree_view.nodes.add("优酷视频") self.youku_root.addr = "http://www.youku.com" # 初始化根节点的 表单. for key, addr in youku_root.items(): node = self.youku_root.nodes.add(key) node.addr = addr self.tv_node = self.youku_root.nodes[0] self.movie_node = self.youku_root.nodes[1] self.zy_node = self.youku_root.nodes[2] self.music_node = self.youku_root.nodes[3] self.comic_node = self.youku_root.nodes[4] # self.__init_type_lists() def __init_type_lists(self): for key in tv_type_dict.keys(): node = self.tv_node.nodes.add(key) node.addr = tv_type_dict[key] for key in movie_type_dict.keys(): node = self.movie_node.nodes.add(key) node.addr = movie_type_dict[key] for key in zy_type_dict.keys(): node = self.zy_node.nodes.add(key) node.addr = zy_type_dict[key] for key in music_type_dict.keys(): node = self.music_node.nodes.add(key) node.addr = music_type_dict[key] for key in comic_type_dict.keys(): node = self.comic_node.nodes.add(key) node.addr = comic_type_dict[key] ''' #info_list, page_num, all_sum = self.youku_web_parse.parse_web(v_olist_dict["热血"]) for info in info_list: node = re_xue_node.nodes.add(info[0]) node.addr = info[1] ''' def __treeview_press_event(self, treeview, node): if node.leave == 2 and node.nodes == []: scan_treeview = ScanTreeview(self.youku_web_parse, node.addr, True) scan_treeview.connect("scan-end-event", self.scan_treeview_end_event, node) scan_treeview.run() elif (node.leave == 3 and node.nodes == [] and node.parent.this.parent.this.text not in ["音乐", "电影"]): scan_treeview = ScanTreeview(self.youku_web_parse, node.addr, False) scan_treeview.connect("scan-end-event", self.scan_treeview_end_event, node) scan_treeview.run() def __treeview_double_event(self, tree_view, node): if node.leave == 4: self.add_to_play_list(node) elif node.leave == 3: # 判断是否为音乐,电影,因为电影,音乐不在这个范围内(层级). if node.parent.this.parent.this.text in ["音乐"]: self.add_to_play_list(node) elif node.parent.this.parent.this.text in ["电影"]: movie_info = self.youku_web_parse.scan_movie_leave(node.addr) if movie_info: save_addr = node.addr node.addr = movie_info[0] self.add_to_play_list(node) node.addr = save_addr else: self.this.show_messagebox("优酷收费视频,无法播放...") def scan_treeview_end_event(self, scan_tv, temp_list, node): for addr, name in temp_list: temp_node = node.nodes.add(name) temp_node.addr = addr if temp_list: node.is_expanded = True def add_to_play_list(self, node): flvcd = YouToFlvcd() scan_treeview = ScanTreeview(flvcd, node.addr, 2) scan_treeview.connect("scan-end-event", self.scan_end_add_to_list_event, node) scan_treeview.run() #flvcd_addr_list = flvcd.parse(node.addr) def scan_end_add_to_list_event(self, scan_tv, temp_list, node): flvcd_addr_list = temp_list index = 0 for addr in flvcd_addr_list: check = False if not index: check = True if len(flvcd_addr_list) > 1: text = node.text + "-" + str(index) else: text = node.text self.this.add_net_to_play_list(text, addr, "优酷视频", check) index += 1 def __init_gui(self): self.scan_win = gtk.Window(gtk.WINDOW_TOPLEVEL) self.scrol_win = gtk.ScrolledWindow() self.scan_entry_hbox = gtk.HBox() self.scan_entry = gtk.Entry() self.scan_btn = gtk.Button("搜索") self.scan_btn.connect("clicked", self.scan_btn_clicked) self.scan_entry_hbox.pack_start(self.scan_entry, False, False) self.scan_entry_hbox.pack_start(self.scan_btn, False, False) # self.vbox = gtk.VBox() self.vbox.pack_start(self.scan_entry_hbox, False, False) self.scrol_win.add_with_viewport(self.vbox) self.scan_win.add(self.scrol_win) # w, h = 300, 300 self.scan_win.set_size_request(w, h) def scan_btn_clicked(self, widget): scan_text = self.scan_entry.get_text() scan_info = scan_page(1, scan_text) info_list = scan_info[0] # 信息列表. for info_list in scan_info[0]: btn = gtk.Button(info_list[0] + info_list[1] + "时间" + info_list[2] + info_list[3]) btn.connect("clicked", self.btn_connect_addr_to, info_list) self.vbox.pack_start(btn, False, False) self.vbox.show_all() ####################################### #page_num = scan_info[1] # 一页的总页数. #sum = scan_info[2] # 全部搜索的数. #page_sum = min(sum/page_num, 100) #print "总的页数:", page_sum def btn_connect_addr_to(self, widget, info): flvcd = YouToFlvcd() flvcd_addr_list = flvcd.parse(info[1]) index = 0 for addr in flvcd_addr_list: check = False if not index: check = True self.this.add_net_to_play_list(info[0] + str(index), addr, info[3], check) index += 1 def show_scan_win(self): if self.show_check: self.scan_win.show_all() def hide_scan_win(self): self.scan_win.hide_all() def start_plugin(self): #print "start_plugin." self.show_check = True #self.show_scan_win() self.note_book.show_title() # 修复BUG, 当为网络列表的时候 隐藏,就看不到本地列表拉. self.note_book.layout_show_check = False self.note_book.set_child_size() # 展开节点. self.youku_root.is_expanded = True def stop_plugin(self): #print "end_plugin..." self.show_check = False # 删除网络列表的node. # 并影藏网络列表. self.note_book.hide_title() self.tree_view.clear() self.note_book.layout_show_check = True self.note_book.set_child_size()