Пример #1
0
    def add_m3u(self,
                from_model=None,
                from_iter=None,
                to_tree=None,
                to_model=None,
                to_iter=None,
                pos=None,
                row=None):
        if row:
            if get_file_extension(row[self.path[0]]) in [".m3u", ".m3u8"]:
                m3u_file_path = row[self.path[0]]
                m3u_title = row[self.text[0]]
            else:
                return
        else:
            if ((from_model.get_value(from_iter, 0).lower().endswith(".m3u") or
                 from_model.get_value(from_iter, 0).lower().endswith(".m3u8"))
                    and from_model.get_model() is not to_model):
                m3u_file_path = from_model.get_value(from_iter, self.path[0])
                m3u_title = from_model.get_value(from_iter, self.text[0])
            else:
                return

            if m3u_file_path.startswith("http//"):
                return None

        paths = m3u_reader(m3u_file_path)
        paths.insert(0, os.path.splitext(m3u_title)[0])
        first_path = paths[0][0] if isinstance(paths[0], list) else paths[0]
        if first_path:
            list_path = first_path[0].split("/")
            name = list_path[len(list_path) - 2]
            parent = FModel(name)

        new_iter = None
        for i, path in enumerate(paths):
            if isinstance(path, list):
                text = path[1]
                path = path[0]
                bean = FModel(path, path).add_is_file(True)
                if text: bean.text = text

            elif not i:
                bean = FModel(_("m3u playlist: ") +
                              path).add_is_file(False).add_font("bold")
            else:
                bean = FModel(path, path).parent(parent)

            row = self.fill_beans_and_get_rows([bean])[0]

            if new_iter:
                to_iter = new_iter
            new_iter = self.to_add_drag_item(to_tree,
                                             to_model,
                                             to_iter,
                                             pos,
                                             None,
                                             row=row)

        return True
Пример #2
0
    def add_m3u(self, from_model, from_iter, to_model, to_iter, pos):
        if ((from_model.get_value(from_iter, 0).lower().endswith(".m3u")
             or from_model.get_value(from_iter, 0).lower().endswith(".m3u8"))
                and from_model.get_model() is not to_model):
            m3u_file_path = from_model.get_value(from_iter, 5)
            m3u_title = from_model.get_value(from_iter, 0)

            if m3u_file_path.startswith("http"):
                return None

            paths = m3u_reader(m3u_file_path)
            paths.insert(0, os.path.splitext(m3u_title)[0])
            list = paths[0].split("/")
            name = list[len(list) - 2]
            parent = FModel(name)
            new_iter = None
            for i, path in enumerate(paths):
                if not i:
                    bean = FModel(path)
                else:
                    bean = FModel(path, path).parent(parent)

                row = self.get_row_from_bean(bean)

                if new_iter:
                    to_iter = new_iter
                new_iter = self.to_add_drag_item(to_model,
                                                 to_iter,
                                                 pos,
                                                 None,
                                                 row=row)

            return True
Пример #3
0
    def on_add_files(self, paths=None, tab_name=None):

        if not paths:
            paths = file_chooser_dialog(_("Choose file to open"),
                                        FC().last_dir)
            copy_paths = copy.deepcopy(paths)
            for i, path in enumerate(copy_paths):
                if path.lower().endswith(".m3u") or path.lower().endswith(
                        ".m3u8"):
                    paths[i:i + 1] = m3u_reader(path)
                    if len(copy_paths) == 1:
                        ext = os.path.splitext(path)[1]
                        tab_name = os.path.basename(path)[:-len(ext)]
                    break
        if paths:
            if paths[0]:
                if isinstance(paths[0], list):
                    path = paths[0][0]
                else:
                    path = paths[0]
            else:
                if isinstance(path, list):
                    path = paths[1][0]
                else:
                    path = paths[1]

            if path:
                list_path = path.split("/")
                name = list_path[len(list_path) - 2]
                if not tab_name:
                    tab_name = os.path.split(os.path.dirname(path))[1]
                FC().last_dir = path[:path.rfind("/")]
                self.append_to_new_notebook(tab_name, [])
                parent = FModel(name)
                self.append_to_current_notebook([parent])
            else:
                self.append_to_new_notebook(tab_name, [])
                parent = FModel(tab_name)
                self.append_to_current_notebook([parent])

            beans = []
            for path in paths:
                text = None
                if isinstance(path, list):
                    text = path[1]
                    path = path[0]
                    bean = FModel(path, path).add_is_file(True)
                else:
                    bean = FModel(path, path).parent(parent).add_is_file(True)
                if text:
                    bean.text = text
                beans.append(bean)
            if not beans:
                self.append_to_current_notebook([
                    FModel(
                        _("Nothing found to play in the file(s)") + paths[0])
                ])
            else:
                self.append_to_current_notebook(beans)
Пример #4
0
 def on_add_files(self, paths=None, tab_name=None):
     
     if not paths:       
         paths = file_chooser_dialog(_("Choose file to open"), FC().last_dir)
         if not paths: return
     copy_paths = copy.deepcopy(paths)
     
     for i, path in enumerate(copy_paths):
         if path.lower().endswith(".m3u") or path.lower().endswith(".m3u8"):
             paths[i:i + 1] = m3u_reader(path)
             if len(copy_paths) == 1:
                 ext = os.path.splitext(path)[1]
                 tab_name = os.path.basename(path)[:-len(ext)]
             break
     
     if paths:
         if paths[0]:
             if isinstance(paths[0], list):
                 path = paths[0][0]
             else:
                 path = paths[0]
         else:
             if isinstance(path, list):
                 path = paths[1][0]
             else:
                 path = paths[1]
            
         if path:
             list_path = path.split("/")
             name = list_path[len(list_path) - 2]
             if not tab_name:
                 tab_name = os.path.split(os.path.dirname(path))[1]
             FC().last_dir = path[:path.rfind("/")]
             self.append_to_new_notebook(tab_name, [])
             parent = FModel(name)
             self.append_to_current_notebook([parent])
         else:
             self.append_to_new_notebook(tab_name, [])
             parent = FModel(tab_name)
             self.append_to_current_notebook([parent])
                           
         beans = []
         for path in paths:
             text = None 
             if isinstance(path, list):
                 text = path[1]
                 path = path[0]
                 bean = FModel(path, path).add_is_file(True)
             else:
                 bean = FModel(path, path).parent(parent).add_is_file(True)
             if text: 
                 bean.text = text
             beans.append(bean)
         if not beans:
             self.append_to_current_notebook([FModel(_("Nothing found to play in the file(s)") + paths[0])])
         else:
             self.append_to_current_notebook(beans)
Пример #5
0
 def add_m3u(self, from_model=None, from_iter=None, to_tree=None, to_model=None,
             to_iter=None, pos=None, row=None):
     if row:
         if get_file_extension(row[self.path[0]]) in [".m3u", ".m3u8"]:
             m3u_file_path = row[self.path[0]]
             m3u_title = row[self.text[0]]
         else:
             return
     else:
         if ((from_model.get_value(from_iter, 0).lower().endswith(".m3u") 
         or from_model.get_value(from_iter, 0).lower().endswith(".m3u8"))
         and from_model.get_model() is not to_model):
                 m3u_file_path = from_model.get_value(from_iter, self.path[0])
                 m3u_title = from_model.get_value(from_iter, self.text[0])
         else:
             return
         
         if m3u_file_path.startswith("http//"):
             return None
         
     paths = m3u_reader(m3u_file_path)
     paths.insert(0, os.path.splitext(m3u_title)[0])
     first_path = paths[0][0] if isinstance(paths[0], list) else paths[0]
     if first_path:
         list_path = first_path[0].split("/")
         name = list_path[len(list_path) - 2]
         parent = FModel(name)
         
     new_iter = None
     for i, path in enumerate(paths):
         if isinstance(path, list):
             text = path[1]
             path = path[0]
             bean = FModel(path, path).add_is_file(True)
             if text: bean.text = text
             
                     
         elif not i:
             bean = FModel(_("m3u playlist: ") + path).add_is_file(False).add_font("bold")
         else:
             bean = FModel(path, path).add_is_file(True).parent(parent)
         
         row = self.fill_beans_and_get_rows([bean])[0]                               
                    
         if new_iter:
             to_iter = new_iter
         new_iter = self.to_add_drag_item(to_tree, to_model, to_iter, pos, None,  row=row)
         
     return True
Пример #6
0
    def add_m3u(self, from_model=None, from_iter=None, to_tree=None, to_model=None,
                to_iter=None, pos=None, row=None):
        if row:
            m3u_file_path = row[self.path[0]]
            m3u_title = row[self.text[0]]

        else:
            if from_model.get_model() is not to_model:
                m3u_file_path = from_model.get_value(from_iter, self.path[0])
                m3u_title = from_model.get_value(from_iter, self.text[0])
            else:
                return
            
        if m3u_file_path.startswith("http//"):
            return None
            
        paths = m3u_reader(m3u_file_path)
        paths.insert(0, [None, os.path.splitext(m3u_title)[0]])
            
        new_iter = None
        for i, path in enumerate(paths):
            if i == 0:
                bean = FModel(_("m3u playlist: ") + path[1]).add_is_file(False).add_font("bold")
            else:
                text = path[1]
                path = path[0]
                bean = FModel(path, path).add_is_file(True)
                if path.startswith("http"):
                    bean.add_type(FTYPE_RADIO)
                if text: bean.text = text
                        
            row = self.fill_beans_and_get_rows([bean])[0]                               
                       
            if new_iter:
                to_iter = new_iter
            new_iter = self.to_add_drag_item(to_tree, to_model, to_iter, pos, None,  row=row)
            
        return True
Пример #7
0
 def add_m3u(self, from_model, from_iter, to_model, to_iter, pos):
     if (from_model.get_value(from_iter, 0).lower().endswith(".m3u") 
     or from_model.get_value(from_iter, 0).lower().endswith(".m3u8")):
         logging.info("m3u is found")
         m3u_file_path = from_model.get_value(from_iter, 5)
         m3u_title = from_model.get_value(from_iter, 0)
         paths = m3u_reader(m3u_file_path)
         paths.insert(0, os.path.splitext(m3u_title)[0])
         list = paths[0].split("/")
         name = list[len(list) - 2]
         parent = FModel(name)
         new_iter = None
         for i, path in enumerate(paths):
             if not i:
                 bean = FModel(path)
             else:
                 bean = FModel(path, path).parent(parent)
             
             row = self.get_row_from_bean(bean)
             if new_iter:
                 to_iter = new_iter
             new_iter = self.to_add_drug_item(to_model, to_iter, None,  pos, row=row)
             
         return True