예제 #1
0
    def __init__(self):

        gtk.VBox.__init__(self)

        self.toolbar = gtk.Toolbar()
        self.toolbar.modify_bg(0, get_colors("download"))

        self.label_titulo = None
        self.label_progreso = None
        self.progress = 0.0
        self.barra_progreso = None
        self.estado = False

        self.actualizador = False

        self.datostemporales = None
        self.ultimosdatos = None
        self.contadortestigo = 0

        self.video_item = None
        self.url = None
        self.titulo = None

        self.jamediayoutube = JAMediaYoutube()

        self.toolbar.insert(get_separador(draw=False,
            ancho=3, expand=False), -1)

        item = gtk.ToolItem()
        self.label_titulo = gtk.Label("")
        self.label_titulo.show()
        item.add(self.label_titulo)
        self.toolbar.insert(item, -1)

        self.toolbar.insert(get_separador(draw=False,
            ancho=3, expand=False), -1)

        item = gtk.ToolItem()
        self.label_progreso = gtk.Label("")
        self.label_progreso.show()
        item.add(self.label_progreso)
        self.toolbar.insert(item, -1)

        #self.toolbar.insert(G.get_separador(draw = False,
        #    ancho = 0, expand = True), -1)

        # FIXME: BUG. Las descargas no se cancelan.
        #archivo = os.path.join(BASE_PATH, "Iconos","stop.png")
        #boton = G.get_boton(archivo, flip = False,
        #    pixels = G.get_pixels(1))
        #boton.set_tooltip_text("Cancelar")
        #boton.connect("clicked", self.cancel_download)
        #self.toolbar.insert(boton, -1)

        #self.toolbar.insert(G.get_separador(draw = False,
        #    ancho = 3, expand = False), -1)

        self.barra_progreso = Progreso_Descarga()
        self.barra_progreso.show()

        self.pack_start(self.toolbar, False, False, 0)
        self.pack_start(self.barra_progreso, False, False, 0)

        self.show_all()

        self.jamediayoutube.connect("progress_download",
            self.__progress_download)
예제 #2
0
    def __init__(self):

        gtk.VBox.__init__(self)

        self.toolbar = gtk.Toolbar()
        self.toolbar.modify_bg(0, get_colors("download"))

        self.label_titulo = None
        self.label_progreso = None
        self.progress = 0.0
        self.barra_progreso = None
        self.estado = False

        self.actualizador = False

        self.datostemporales = None
        self.ultimosdatos = None
        self.contadortestigo = 0

        self.video_item = None
        self.url = None
        self.titulo = None

        from JAMediaYoutube import JAMediaYoutube
        self.jamediayoutube = JAMediaYoutube()

        self.toolbar.insert(get_separador(draw=False, ancho=3, expand=False),
                            -1)

        item = gtk.ToolItem()
        self.label_titulo = gtk.Label("")
        self.label_titulo.show()
        item.add(self.label_titulo)
        self.toolbar.insert(item, -1)

        self.toolbar.insert(get_separador(draw=False, ancho=3, expand=False),
                            -1)

        item = gtk.ToolItem()
        self.label_progreso = gtk.Label("")
        self.label_progreso.show()
        item.add(self.label_progreso)
        self.toolbar.insert(item, -1)

        #self.toolbar.insert(G.get_separador(draw = False,
        #    ancho = 0, expand = True), -1)

        # FIXME: BUG. Las descargas no se cancelan.
        #archivo = os.path.join(BASE_PATH, "Iconos","stop.png")
        #boton = G.get_boton(archivo, flip = False,
        #    pixels = G.get_pixels(1))
        #boton.set_tooltip_text("Cancelar")
        #boton.connect("clicked", self.cancel_download)
        #self.toolbar.insert(boton, -1)

        #self.toolbar.insert(G.get_separador(draw = False,
        #    ancho = 3, expand = False), -1)

        self.barra_progreso = Progreso_Descarga()
        self.barra_progreso.show()

        self.pack_start(self.toolbar, False, False, 0)
        self.pack_start(self.barra_progreso, False, False, 0)

        self.show_all()

        self.jamediayoutube.connect("progress_download",
                                    self.__progress_download)
예제 #3
0
class Toolbar_Descarga(gtk.VBox):

    __gsignals__ = {
    'end': (gobject.SIGNAL_RUN_FIRST,
        gobject.TYPE_NONE, [])}

    def __init__(self):

        gtk.VBox.__init__(self)

        self.toolbar = gtk.Toolbar()
        self.toolbar.modify_bg(0, get_colors("download"))

        self.label_titulo = None
        self.label_progreso = None
        self.progress = 0.0
        self.barra_progreso = None
        self.estado = False

        self.actualizador = False

        self.datostemporales = None
        self.ultimosdatos = None
        self.contadortestigo = 0

        self.video_item = None
        self.url = None
        self.titulo = None

        self.jamediayoutube = JAMediaYoutube()

        self.toolbar.insert(get_separador(draw=False,
            ancho=3, expand=False), -1)

        item = gtk.ToolItem()
        self.label_titulo = gtk.Label("")
        self.label_titulo.show()
        item.add(self.label_titulo)
        self.toolbar.insert(item, -1)

        self.toolbar.insert(get_separador(draw=False,
            ancho=3, expand=False), -1)

        item = gtk.ToolItem()
        self.label_progreso = gtk.Label("")
        self.label_progreso.show()
        item.add(self.label_progreso)
        self.toolbar.insert(item, -1)

        #self.toolbar.insert(G.get_separador(draw = False,
        #    ancho = 0, expand = True), -1)

        # FIXME: BUG. Las descargas no se cancelan.
        #archivo = os.path.join(BASE_PATH, "Iconos","stop.png")
        #boton = G.get_boton(archivo, flip = False,
        #    pixels = G.get_pixels(1))
        #boton.set_tooltip_text("Cancelar")
        #boton.connect("clicked", self.cancel_download)
        #self.toolbar.insert(boton, -1)

        #self.toolbar.insert(G.get_separador(draw = False,
        #    ancho = 3, expand = False), -1)

        self.barra_progreso = Progreso_Descarga()
        self.barra_progreso.show()

        self.pack_start(self.toolbar, False, False, 0)
        self.pack_start(self.barra_progreso, False, False, 0)

        self.show_all()

        self.jamediayoutube.connect("progress_download",
            self.__progress_download)

    def __handle(self):
        """
        Verifica que se esté descargando el archivo.
        """
        if self.ultimosdatos != self.datostemporales:
            self.ultimosdatos = self.datostemporales
            self.contadortestigo = 0
        else:
            self.contadortestigo += 1
        if self.contadortestigo > 15:
            print "\nNo se pudo controlar la descarga de:"
            print ("%s %s\n") % (self.titulo, self.url)
            self.__cancel_download()
            return False
        return True

    def __progress_download(self, widget, progress):
        """
        Muestra el progreso de la descarga.
        """
        self.datostemporales = progress
        datos = progress.split(" ")

        if datos[0] == '[youtube]':
            dat = progress.split('[youtube]')[1]
            if self.label_progreso.get_text() != dat:
                self.label_progreso.set_text(dat)
        elif datos[0] == '[download]':
            dat = progress.split('[download]')[1]
            if self.label_progreso.get_text() != dat:
                self.label_progreso.set_text(dat)
        elif datos[0] == '\r[download]':
            porciento = 0.0
            if "%" in datos[2]:
                porciento = datos[2].split("%")[0]
            elif "%" in datos[3]:
                porciento = datos[3].split("%")[0]

            porciento = float(porciento)
            self.barra_progreso.set_progress(valor=int(porciento))

            if porciento >= 100.0:  # nunca llega
                self.__cancel_download()
                return False
            else:
                dat = progress.split("[download]")[1]
                if self.label_progreso.get_text() != dat:
                    self.label_progreso.set_text(dat)

        if "100.0%" in progress.split(" "):
            self.__cancel_download()
            return False
        if not self.get_visible():
            self.show()
        return True

    def __cancel_download(self, button=None, event=None):
        """
        Cancela la descarga actual.
        """
        # FIXME: No funciona correctamente, la descarga continúa.
        if self.actualizador:
            gobject.source_remove(self.actualizador)
            self.actualizador = False
        try:
            self.jamediayoutube.reset()
        except:
            pass
        try:
            self.video_item.destroy()
        except:
            pass
        self.estado = False
        self.emit("end")
        return False

    def download(self, video_item):
        """
        Comienza a descargar un video-item.
        """
        self.estado = True
        self.progress = 0.0
        self.datostemporales = None
        self.ultimosdatos = None
        self.contadortestigo = 0

        self.video_item = video_item
        self.url = video_item.videodict["url"]
        self.titulo = video_item.videodict["titulo"]

        texto = self.titulo
        if len(self.titulo) > 30:
            texto = str(self.titulo[0:30]) + " . . . "

        self.label_titulo.set_text(texto)
        self.jamediayoutube.download(self.url, self.titulo)

        if self.actualizador:
            gobject.source_remove(self.actualizador)
            self.actualizador = False

        self.actualizador = gobject.timeout_add(1000, self.__handle)
        self.show_all()
예제 #4
0
class Toolbar_Descarga(gtk.VBox):

    __gsignals__ = {'end': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, [])}

    def __init__(self):

        gtk.VBox.__init__(self)

        self.toolbar = gtk.Toolbar()
        self.toolbar.modify_bg(0, get_colors("download"))

        self.label_titulo = None
        self.label_progreso = None
        self.progress = 0.0
        self.barra_progreso = None
        self.estado = False

        self.actualizador = False

        self.datostemporales = None
        self.ultimosdatos = None
        self.contadortestigo = 0

        self.video_item = None
        self.url = None
        self.titulo = None

        from JAMediaYoutube import JAMediaYoutube
        self.jamediayoutube = JAMediaYoutube()

        self.toolbar.insert(get_separador(draw=False, ancho=3, expand=False),
                            -1)

        item = gtk.ToolItem()
        self.label_titulo = gtk.Label("")
        self.label_titulo.show()
        item.add(self.label_titulo)
        self.toolbar.insert(item, -1)

        self.toolbar.insert(get_separador(draw=False, ancho=3, expand=False),
                            -1)

        item = gtk.ToolItem()
        self.label_progreso = gtk.Label("")
        self.label_progreso.show()
        item.add(self.label_progreso)
        self.toolbar.insert(item, -1)

        #self.toolbar.insert(G.get_separador(draw = False,
        #    ancho = 0, expand = True), -1)

        # FIXME: BUG. Las descargas no se cancelan.
        #archivo = os.path.join(BASE_PATH, "Iconos","stop.png")
        #boton = G.get_boton(archivo, flip = False,
        #    pixels = G.get_pixels(1))
        #boton.set_tooltip_text("Cancelar")
        #boton.connect("clicked", self.cancel_download)
        #self.toolbar.insert(boton, -1)

        #self.toolbar.insert(G.get_separador(draw = False,
        #    ancho = 3, expand = False), -1)

        self.barra_progreso = Progreso_Descarga()
        self.barra_progreso.show()

        self.pack_start(self.toolbar, False, False, 0)
        self.pack_start(self.barra_progreso, False, False, 0)

        self.show_all()

        self.jamediayoutube.connect("progress_download",
                                    self.__progress_download)

    def download(self, video_item):
        """
        Comienza a descargar un video-item.
        """
        self.estado = True
        self.progress = 0.0
        self.datostemporales = None
        self.ultimosdatos = None
        self.contadortestigo = 0

        self.video_item = video_item
        self.url = video_item.videodict["url"]
        self.titulo = video_item.videodict["titulo"]

        texto = self.titulo
        if len(self.titulo) > 30:
            texto = str(self.titulo[0:30]) + " . . . "

        self.label_titulo.set_text(texto)
        self.jamediayoutube.download(self.url, self.titulo)

        if self.actualizador:
            gobject.source_remove(self.actualizador)

        self.actualizador = gobject.timeout_add(1000, self.__handle)

        self.show_all()

    def __handle(self):
        """
        Verifica que se esté descargando el archivo.
        """
        if self.ultimosdatos != self.datostemporales:
            self.ultimosdatos = self.datostemporales
            self.contadortestigo = 0
        else:
            self.contadortestigo += 1

        if self.contadortestigo > 15:
            print "\nNo se pudo controlar la descarga de:"
            print("%s %s\n") % (self.titulo, self.url)
            self.__cancel_download()
            return False

        return True

    def __progress_download(self, widget, progress):
        """
        Muestra el progreso de la descarga.
        """
        self.datostemporales = progress
        datos = progress.split(" ")

        if datos[0] == '[youtube]':
            dat = progress.split('[youtube]')[1]
            if self.label_progreso.get_text() != dat:
                self.label_progreso.set_text(dat)

        elif datos[0] == '[download]':
            dat = progress.split('[download]')[1]
            if self.label_progreso.get_text() != dat:
                self.label_progreso.set_text(dat)

        elif datos[0] == '\r[download]':
            porciento = 0.0

            if "%" in datos[2]:
                porciento = datos[2].split("%")[0]
            elif "%" in datos[3]:
                porciento = datos[3].split("%")[0]

            porciento = float(porciento)
            self.barra_progreso.set_progress(valor=int(porciento))

            if porciento >= 100.0:  # nunca llega
                self.__cancel_download()
                return False
            else:
                dat = progress.split("[download]")[1]
                if self.label_progreso.get_text() != dat:
                    self.label_progreso.set_text(dat)

        if "100.0%" in progress.split(" "):
            self.__cancel_download()
            return False

        if not self.get_visible():
            self.show()

        return True

    def __cancel_download(self, button=None, event=None):
        """
        Cancela la descarga actual.
        """
        # FIXME: No funciona correctamente, la descarga continúa.
        if self.actualizador:
            gobject.source_remove(self.actualizador)
            self.actualizador = False
        try:
            self.jamediayoutube.reset()

        except:
            pass

        try:
            self.video_item.destroy()
        except:
            pass

        self.estado = False
        self.emit("end")
        return False