class v_skytube(QtGui.QDialog): def __init__(self, parent=None): QtGui.QWidget.__init__(self,parent) self.vskytube = Ui_Form() self.vskytube.setupUi(self) self.connect(self.vskytube.btn_valida,QtCore.SIGNAL('clicked()'), self.valida) self.resize(579,66) self.vskytube.label_7.setStyleSheet("color:grey;") self.setWindowTitle('SkyTube Download v.1.1') self.setMaximumSize(579,250) self.setMinimumSize(579,66) self.vskytube.groupBox.setVisible(False) self.connect(self.vskytube.btn_valida_2,QtCore.SIGNAL('clicked()'), self.descarga) self.connect(self.vskytube.btn_vlc,QtCore.SIGNAL('clicked()'), self.AbreVLC) self.connect(self.vskytube.btn_otro,QtCore.SIGNAL('clicked()'), self.muestra) self.vskytube.lbl_desc.setVisible(False) self.vskytube.btn_vlc.setVisible(False) self.vskytube.btn_otro.setVisible(False) self.connect(self.vskytube.btn_folder,QtCore.SIGNAL('clicked()'), self.folder) def folder(self): perfil = (os.path.join (os.environ['USERPROFILE'],'videos')) subprocess.Popen('explorer ' + str(perfil)) def descarga(self): try: self.vskytube.lineEdit.setVisible(False) self.vskytube.btn_valida.setVisible(False) self.vskytube.label_7.setVisible(False) self.vskytube.lbl_desc.setStyleSheet("color:red;") self.vskytube.lbl_desc.setText('Tu video se esta descargado, puede tardar varios minutos ...') self.vskytube.lbl_desc.setVisible(True) self.resize(579,66) QtGui.QMessageBox.about(self,'Empezando Descarga ... ','La descarga puede tardar varios minutos, dependiendo de tu conexion ...') global url os.system('skytubec.exe ' + url) self.vskytube.lbl_desc.setStyleSheet("color:green;") self.vskytube.lbl_desc.setText('Tu video se descargo correctamente ...') self.vskytube.btn_vlc.setVisible(True) self.vskytube.btn_otro.setVisible(True) if os.path.isfile('c:\progra~1\VideoLAN\VLC\\vlc.exe') or os.path.isfile('c:\progra~2\VideoLAN\VLC\\vlc.exe'): self.vskytube.btn_vlc.setEnabled(True) else: self.vskytube.btn_vlc.setEnabled(False) except Exception as e: QtGui.QMessageBox.about(self,'Error Descarga', str(e)) def muestra(self): self.vskytube.lineEdit.setVisible(True) self.vskytube.btn_valida.setVisible(True) self.vskytube.label_7.setVisible(True) self.vskytube.lbl_desc.setVisible(False) self.vskytube.btn_vlc.setVisible(False) self.vskytube.btn_otro.setVisible(False) self.vskytube.groupBox.setVisible(False) self.vskytube.lineEdit.clear() def AbreVLC(self): best = video.getbest(preftype="mp4") titulo = best.title titulo = str(titulo).replace('"','') perfil = (os.path.join (os.environ['USERPROFILE'],'videos')) #QtGui.QMessageBox.about(self,'ff','"' + os.path.abspath(os.path.dirname(__file__)) + '\\videos\\' + best.title + '.' + best.extension + '"' ) if os.path.isfile('c:\progra~1\VideoLAN\VLC\\vlc.exe'): subprocess.Popen('c:\progra~1\VideoLAN\VLC\\vlc.exe "' +str(perfil) + '\\' + titulo + '.' + best.extension + '"' ) else: subprocess.Popen('c:\progra~2\VideoLAN\VLC\\vlc.exe "' + str(perfil) + '\\' + titulo + '.' + best.extension + '"' ) def valida(self): try: self.vskytube.groupBox.setVisible(False) self.resize(579,66) self.vskytube.lbl_imagen.setText('sin imagen') if os.path.isfile(os.path.dirname(sys.executable)+ '\\skytube.jpg'): os.remove(os.path.dirname(sys.executable) + '\\skytube.jpg') self.vskytube.groupBox.setVisible(True) video_id = self.vskytube.lineEdit.text() if video_id.split('?v=') == 1: video_id = video_id.split('?v=') if len(video_id) == 1: global url url= 'http://www.youtube.com/watch?v=' + video_id[1] else: global url url= 'http://www.youtube.com/watch?v=' + video_id global video video = Pafy(url) best = video.getbest(preftype="mp4") self.vskytube.lbl_calidad.setText(best.resolution + ' Extencion: ' + best.extension) self.vskytube.groupBox.setStyleSheet("color:green;") self.vskytube.groupBox.setTitle(video.title) self.vskytube.lbl_autor.setText(video.author) self.vskytube.lbl_duracion.setText(video.duration) self.vskytube.lbl_id.setText(video.videoid) self.vskytube.lbl_rating.setText(str(video.rating)) self.vskytube.lbl_visto.setText(str(video.viewcount)) self.resize(579,250) #os.chdir(os.path.dirname(sys.executable)) url = video.thumb file = ('skytube.jpg') urllib.request.urlretrieve(url, file) img = (os.path.dirname(sys.executable) + '\skytube.jpg') #img = (video.thumb) #self.vskytube.lbl_imagen.setText('<img src="'+ img +'" />') self.vskytube.lbl_imagen.setPixmap(QtGui.QPixmap(img)) except Exception as e: QtGui.QMessageBox.about(self,'Error SkyTube ',' No existe el video favor de verificar.') QtGui.QMessageBox.about(self,'Error SkyTube ',str(e))
class v_skytube(QtWidgets.QDialog): def __init__(self, parent=None): QtWidgets.QWidget.__init__(self, parent) self.vskytube = Ui_Form() self.vskytube.setupUi(self) self.resize(613, 473) self.setWindowTitle('SkyTube Download v.' + __version__) self.setMaximumSize(613, 473) self.setMinimumSize(613, 473) self.vskytube.btn_valida_2.clicked.connect(self.descarga) self.vskytube.btn_valida.clicked.connect(self.valida) self.vskytube.ck_lst_auto.setEnabled(False) self.vskytube.treeView.doubleClicked.connect(self.directorio) self.vskytube.treeView.clicked.connect(self.directorio2) self.vskytube.lineEdit.returnPressed.connect(self.valida) self.vskytube.btn_add_video.clicked.connect(self.add) self.vskytube.btn_folder_2.clicked.connect(self.folder) self.vskytube.btn_paypal.clicked.connect(self.donapaypal) self.vskytube.ck_captura.stateChanged['int'].connect(self.CapturaClip) self.vskytube.ck_vlc.stateChanged['int'].connect(self.vlc_checked) self.vskytube.lst_encola.itemClicked['QListWidgetItem*'].connect( self.valida_lista) self.vskytube.lst_encola.itemDoubleClicked['QListWidgetItem*'].connect( self.elimina_item) self.vskytube.btn_de_item.clicked.connect(self.elimina_item) self.vskytube.btn_add_lista.clicked.connect(self.valida_descarga) self.vskytube.btn_google.clicked.connect(self.social_google) self.vskytube.btn_twitter.clicked.connect(self.social_twitter) self.vskytube.btn_facebook.clicked.connect(self.social_facebook) self.vskytube.btn_play.clicked.connect(self.btn_play) self.vskytube.web.showFullScreen() self.vskytube.ck_play.setChecked(True) self.vskytube.ck_play.clicked.connect(self.cambia_icono_play) self.vskytube.groupBox_3.setVisible(False) self.check_for_updates() self.vskytube.btn_actualiza.clicked.connect(self.actualiza_version) self.vskytube.btn_ayuda.clicked.connect(self.ayuda) self.vskytube.web.settings().setAttribute( QtWebKit.QWebSettings.PluginsEnabled, True) self.vskytube.web.settings().setAttribute( QtWebKit.QWebSettings.JavascriptEnabled, True) self.vskytube.web.settings().setAttribute( QtWebKit.QWebSettings.JavascriptCanOpenWindows, True) self.vskytube.web.setUrl( QtCore.QUrl("http://skytube.me/static/skytube/img/logo.png")) self.vskytube.lineEdit.setPlaceholderText( 'https://www.youtube.com/watch?v=p5RobDomh5U') self.oculta() self.vskytube.lbl_desc.setStyleSheet("color:red;") self.vskytube.p_bar.setMinimum(0) self.process = QtCore.QProcess() self.setclipboard() self.crea_directorio() self.vlc() def ayuda(self): link_ayuda = str( urllib.request.urlopen(__ayuda__).read().decode("utf8")) webbrowser.open(link_ayuda) def actualiza_version(self): self.vskytube.lbl_barr.setVisible(True) self.vskytube.p_bar.setVisible(True) self.vskytube.lbl_desc.setStyleSheet("color:red;") self.vskytube.lbl_desc.setText( 'Descargando Nueva Version de SkyTube ... ') self.vskytube.lbl_desc.setVisible(True) self.vskytube.p_bar.setMinimum(0) skytube_install = str( urllib.request.urlopen(__instalador__).read().decode("utf8")) file = skytube_install.split('/') if 'win32' in self.sistema() or 'win64' in self.sistema(): desc = skytube_install + '.exe' filename = file[5] + '.exe' urllib.request.urlretrieve(desc, filename, reporthook=self.funcionprogreso) QtCore.QCoreApplication.processEvents() QtWidgets.QMessageBox.about(self, 'Descargando Nueva Version ', 'Finalizo la descarga de ' + filename) self.process.start(filename) sys.exit(0) # "#### Funcion proporcionada por Luis Francisco Cesar - Enki Comunidad Python en español. def funcionprogreso(self, bloque, tamano_bloque, tamano_total): velocidad_descarga = 0 tiempo_faltante = 0 cant_descargada = bloque * tamano_bloque self.vskytube.p_bar.setMinimum(0) self.vskytube.p_bar.setMaximum(tamano_total) cant_descargada = bloque * tamano_bloque cant_descargada_MB = round(((cant_descargada / 1024) / 1024), 2) tamano_total_MB = round(((tamano_total / 1024) / 1024), 2) cant_descargada_KB = (cant_descargada / 1024) tamano_total_KB = (tamano_total / 1024) elapsed = time.clock() if elapsed > 0: velocidad_descarga = round((cant_descargada_KB / elapsed), 2) if velocidad_descarga > 0: tiempo_faltante = abs( round(((tamano_total_KB - cant_descargada_KB) / velocidad_descarga), 1)) self.vskytube.lbl_barr.setText( str('\r %s MB / %s MB - %s kb/s - %s seg' % (cant_descargada_MB, tamano_total_MB, velocidad_descarga, tiempo_faltante))) self.vskytube.lbl_barr.repaint() self.vskytube.p_bar.setValue(cant_descargada) QtCore.QCoreApplication.processEvents() def check_for_updates(self): """Funcion para mostrar nueva version, proporcianada por Juancalos Paco Comunidad python espanol""" version_local = __version__ version_web = str( urllib.request.urlopen(__source__).read().decode("utf8")) if version_local != version_web: m = "Hay una Nueva Version! <br> Nueva Version: " + version_web + " Version Actual: " + version_local self.vskytube.btn_actualiza.setVisible(True) self.vskytube.btn_actualiza.setText('Actualiza V.' + version_web) else: m = "Tu Version esta Actualizada !<br>Por favor concidera una Donacion al proyecto <br> Muchas Gracias!" self.vskytube.btn_actualiza.setVisible(False) return QtWidgets.QMessageBox.information( self, 'SkyTube Download Version ' + version_local, "<b>" + m) def cambia_icono_play(self): if self.vskytube.ck_play.isChecked(): play_ok = QtGui.QIcon() play_ok.addPixmap(QtGui.QPixmap("imagenes/reproduce.png")) self.vskytube.btn_play.setIcon(play_ok) else: play_no = QtGui.QIcon() play_no.addPixmap(QtGui.QPixmap("imagenes/loading.png")) self.vskytube.btn_play.setIcon(play_no) def webVid(self, video, imagen, vevo): self.vskytube.groupBox_3.setVisible(False) if self.vskytube.ck_play.isChecked(): autoplay = 'controls autoplay' else: autoplay = '' if vevo == 'ok': self.vskytube.web.setHtml(''' <!DOCTYPE html> <html> <head> <link href="http://expocoin.com/software/skytube/video-js.css" rel="stylesheet" type="text/css"> <script src="http://expocoin.com/software/skytube/video.js"></script> <script> videojs.options.flash.swf = "http://expocoin.com/software/skytube/video-js.swf"; </script> </head> <body> <video id="example_video_1" class="video-js" controls="controls"''' + autoplay + ''' width="551" height="251" data-setup='{}'> <source src="''' + video + '''" type="video/mp4"></video> </body> </html> ''') else: self.vskytube.web.load(QtCore.QUrl(video)) self.vskytube.web.show() QtCore.QCoreApplication.processEvents() # revisado Linux, Windows def formato_combo(self): self.vskytube.lbl_barr.setVisible(True) self.vskytube.p_bar.setVisible(True) self.vskytube.lbl_desc.setStyleSheet("color:red;") self.vskytube.lbl_desc.setText('Descargando ffmpeg ... ') self.vskytube.lbl_desc.setVisible(True) self.vskytube.p_bar.setMinimum(0) if 'win32' in self.sistema() or 'win64' in self.sistema(): desc = 'https://dl.dropboxusercontent.com/s/lxkyob6uypwewrc/ffmpeg.exe?dl=1&token_hash=AAEj_dwaE9372Y7tytJC_3kl0UtVKbH924p6ZjDFmmqf9A' filename = 'ffmpeg.exe' QtCore.QCoreApplication.processEvents() urllib.request.urlretrieve(desc, filename, reporthook=self.funcionprogreso) QtWidgets.QMessageBox.about(self, 'Descarga ..', 'Finalizo la descarga de FFMPEG ') # revisado Linux, Windows def setclipboard(self): global data data = QtWidgets.QApplication.clipboard() data = data.setText('skylar') # revisado Linux, Windows def elimina_item(self): try: for index in range(self.vskytube.lst_encola.count()): if self.vskytube.lst_encola.currentItem().text( ) == self.vskytube.lst_encola.item(index).text(): respuesta = QtWidgets.QMessageBox.question( self, 'Elimina Link ', 'Estas seguro de Eliminar el Link \n' + self.vskytube.lst_encola.item(index).text() + ' ?', QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No) if respuesta == QtWidgets.QMessageBox.Yes: item = self.vskytube.lst_encola.takeItem(index) del item # self.vskytube.groupBox.setVisible(False) except: QtWidgets.QMessageBox.about(self, 'Error Link', 'No hay Link Que eliminar') def ejecutaExe(self, var_archivo): if 'win32' in self.sistema() or 'win64' in self.sistema(): startupinfo = subprocess.STARTUPINFO() startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW with (subprocess.Popen(var_archivo, stdout=subprocess.PIPE, startupinfo=startupinfo)): return else: os.system('chmod +x ffmpeg') output = subprocess.check_output(var_archivo, shell=True) def ffmpeg(self): if 'win32' in self.sistema() or 'win64' in self.sistema(): if self.formato() == 'mp3': if os.path.isfile('ffmpeg.exe'): return True else: respuesta = QtWidgets.QMessageBox.question( self, 'Descarga Mp3 ', 'Necesitas ffmpeg para descargar MP3 \n' 'Quieres descargarlo? ', QtWidgets.QMessageBox.Yes, QtWidgets.QMessageBox.No) if respuesta == QtWidgets.QMessageBox.Yes: self.formato_combo() return True else: return False else: return True def descarga_lista(self): self.vskytube.p_bar.setMinimum(0) if self.ffmpeg(): pass else: return self.vskytube.ck_captura.setChecked(False) items = [] for index in range(self.vskytube.lst_encola.count()): video_id = self.vskytube.lst_encola.item(index).text() video_id = video_id.split('|id:') items.append(video_id[1]) url = str(items) self.vskytube.lbl_barr.setVisible(True) self.vskytube.p_bar.setVisible(True) QtCore.QCoreApplication.processEvents() QtWidgets.QMessageBox.about( self, 'Comenzando Descarga', 'Tu lista empezara a Descargarce, esto va a tardar varios minutos.' ) for i in items: self.vskytube.lbl_desc.setStyleSheet("color:red;") self.vskytube.p_bar.setMinimum(0) if self.formato() == 'mp3': desc = 'http://skytube.me/descarga/' + i + '/2' extension = 'm4a' else: desc = 'http://skytube.me/descarga/' + i + '/1' extension = 'mp4' if 'win32' in self.sistema() or 'win64' in self.sistema(): filename = os.path.join(os.environ['USERPROFILE'], 'videos') + '\\' + \ video_id[0] + '.' + extension self.vskytube.lbl_desc.setText('Descargando ...' + video_id[0]) urllib.request.urlretrieve(desc, filename, reporthook=self.funcionprogreso) if self.formato() == 'mp3' and self.sistema() == 'win32': m4a = os.path.join(os.environ['USERPROFILE'], 'videos') + '\\' + \ video_id[0] + '.m4a' mp3 = os.path.join(os.environ['USERPROFILE'], 'videos') + '\\' + \ video_id[0] + '.mp3' self.ejecutaExe('ffmpeg.exe -i \"%s\" -y \"%s\"' % (m4a, mp3)) os.remove(filename) QtWidgets.QMessageBox.about(self, 'Descarga Completada', 'La Lista se Descargo Correctamente..') self.setclipboard() self.vskytube.lineEdit.clear() self.oculta() self.crea_directorio() QtCore.QCoreApplication.processEvents() self.muestra() self.vskytube.lst_encola.clear() def add(self): try: video_id = self.vskytube.lineEdit.text() if len(video_id.split('list=')) == 2: video_id = video_id.split('list=') if len(video_id) == 2: QtWidgets.QMessageBox.about( self, 'PlayList Detectada! ', 'Estas apunto de agregar una Lista de ' 'reproduccion, \n esto puede tardar varios minutos!') playlist = pafy.get_playlist(__youtube__ + '/playlist?list=' + video_id[1]) num = 0 for i in range(len(playlist['items'])): global url url = __youtube__ + '/watch?v=' + playlist['items'][ num]['pafy'].videoid print(url) items = [] for index in range(self.vskytube.lst_encola.count()): items.append( self.vskytube.lst_encola.item(index).text()) existe = 'No' for i in items: if url == i: existe = 'Si' if existe == 'No': self.setclipboard() video = pafy.new(url) if video: url_img = video.title self.vskytube.lst_encola.addItem( self.limpia(url_img) + '|id:' + video.videoid) self.vskytube.tabWidget.setCurrentIndex(1) QtCore.QCoreApplication.processEvents() else: self.setclipboard() QtWidgets.QMessageBox.about( self, ' Alerta Link! ', 'Este Link ya fue agregado a la lista!') num += 1 self.vskytube.lineEdit.clear() url_vid = 'about:blank' return if len(video_id.split('v=')) == 2: video_id = video_id.split('v=') if len(video_id) == 2: global url url = __youtube__ + '/watch?v=' + video_id[1] url_vid = __youtube__ + '/embed/' + video_id[1] else: global url url = __youtube__ + '/watch?v=' + video_id url_vid = __youtube__ + '/embed/' + video_id else: self.setclipboard() self.vskytube.lineEdit.clear() QtWidgets.QMessageBox.about(self, 'Alerta Link! ', 'Link No valido!') return items = [] for index in range(self.vskytube.lst_encola.count()): items.append(self.vskytube.lst_encola.item(index).text()) existe = 'No' for i in items: if url == i: existe = 'Si' if existe == 'No': self.setclipboard() video = pafy.new(url) if video: url_img = video.title self.vskytube.lst_encola.addItem( self.limpia(url_img) + '|id:' + video.videoid) self.vskytube.tabWidget.setCurrentIndex(1) self.vskytube.lineEdit.clear() else: self.vskytube.lineEdit.clear() self.setclipboard() QtWidgets.QMessageBox.about( self, 'Alerta Link! ', 'Este Link ya fue agregado a la lista!') except: self.vskytube.lineEdit.setText('Link No Valido') self.setclipboard() def clipboard(self): global data data = QtWidgets.QApplication.clipboard() data = data.text() if len(data) == 11: item = __youtube__ + ('/watch?v=' + data) self.vskytube.lineEdit.setText(item) if self.vskytube.ck_lst_auto.isChecked(): self.add() timer = QtCore.QTimer() timer.stop() self.CapturaClip() if len(str(data).split('?v=')) == 2: data = str(data).split('?v=') if len(data) == 2: item = (__youtube__ + '/watch?v=' + data[1]) self.vskytube.lineEdit.setText(item) if self.vskytube.ck_lst_auto.isChecked(): self.add() timer = QtCore.QTimer() timer.stop() self.CapturaClip() else: timer = QtCore.QTimer() timer.stop() self.CapturaClip() def CapturaClip(self): if self.vskytube.ck_captura.isChecked(): global timer timer = QtCore.QTimer() timer.start(3000) timer.timeout.connect(self.clipboard) self.vskytube.ck_lst_auto.setEnabled(True) else: self.vskytube.ck_lst_auto.setEnabled(False) self.vskytube.ck_lst_auto.setChecked(False) timer = QtCore.QTimer() self.setclipboard() timer.stop() def crea_directorio(self): if 'win32' in self.sistema() or 'win64' in self.sistema(): self.vskytube.lbl_perfil.setText( (os.path.join(os.environ['USERPROFILE'], 'videos'))) if 'darwin' in self.sistema(): self.vskytube.lbl_perfil.setText( (os.path.join(os.environ['HOME'], 'Movies'))) if 'linux' in self.sistema(): if os.path.isdir(os.path.join(os.environ['HOME'], 'Movies')): self.vskytube.lbl_perfil.setText( (os.path.join(os.environ['HOME'], 'Movies'))) else: os.system('mkdir $HOME/Movies') self.vskytube.lbl_perfil.setText( (os.path.join(os.environ['HOME'], 'Movies'))) global fileSystemModel fileSystemModel = QtWidgets.QFileSystemModel(self.vskytube.treeView) fileSystemModel.setReadOnly(True) if 'win32' in self.sistema() or 'win64' in self.sistema(): fileSystemModel.setRootPath( str((os.path.join(os.environ['USERPROFILE'], 'videos')))) indexRoot = fileSystemModel.index(fileSystemModel.rootPath()) self.vskytube.treeView.setModel(fileSystemModel) self.vskytube.treeView.setRootIndex(indexRoot) elif 'darwin' in self.sistema() or 'linux' in self.sistema(): fileSystemModel.setRootPath( str((os.path.join(os.environ['HOME'], 'Movies')))) indexRoot = fileSystemModel.index(fileSystemModel.rootPath()) self.vskytube.treeView.setModel(fileSystemModel) self.vskytube.treeView.setRootIndex(indexRoot) self.vskytube.treeView.setColumnHidden(1, True) self.vskytube.treeView.setColumnHidden(2, True) self.vskytube.treeView.setColumnHidden(3, True) self.vskytube.treeView.setHeaderHidden(True) def oculta(self): self.vskytube.lbl_barr.setVisible(False) self.vskytube.p_bar.setVisible(False) self.vskytube.lbl_desc.setVisible(False) self.vskytube.btn_valida_2.setEnabled(False) def donapaypal(self): QtWidgets.QMessageBox.information( self, 'Donacion PayPal', 'Gracias por conciderar hacer una donacion al proyecto SkyTube \n Todo el dinero seran utilizado para el Hosting \ \n Muchas Gracias =)' ) webbrowser.open( 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2K6Y3B8AG39DQ' ) @QtCore.pyqtSlot(QtCore.QModelIndex) def directorio(self, index): if self.vskytube.ck_vlc.isChecked(): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) self.directorio_vlc(filePath) self.vskytube.web.setHtml(''' <!DOCTYPE html> <h1><center> SkyTube Play d(-_-)b </h1></center> <br> Reproduciendo ''' + filePath + ''' </html> ''') return if 'win32' in self.sistema() or 'win64' in self.sistema(): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) os.startfile(filePath) if 'darwin' in self.sistema(): if os.path.isdir('/Applications/VLC.app'): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) os.system( 'open -a /Applications/VLC.app/Contents/MacOS/VLC "' + filePath + '"') else: QtWidgets.QMessageBox.about(self, '\nError VlC', 'Para poder reproducir los videos desde SkyTube necesitas VLC \n tus videos estan en la siguiente ruta:\n\n ' \ + str((os.path.join(os.environ['HOME'], 'Movies')))) if 'linux' in self.sistema(): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) self.process.start('xdg-open "' + filePath + '"') self.vskytube.web.setHtml(''' <!DOCTYPE html> <h1><center> SkyTube Play d(-_-)b </h1></center> <br> Reproduciendo ''' + filePath + ''' </html> ''') @QtCore.pyqtSlot(QtCore.QModelIndex) def directorio2(self, index): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) self.vskytube.lbl_autor_3.setText(filePath) self.vskytube.groupBox_3.setVisible(True) if self.vskytube.ck_play.isChecked(): play_ok = QtGui.QIcon() play_ok.addPixmap(QtGui.QPixmap("imagenes/reproduce.png")) self.vskytube.btn_play.setIcon(play_ok) else: play_no = QtGui.QIcon() play_no.addPixmap(QtGui.QPixmap("imagenes/loading.png")) self.vskytube.btn_play.setIcon(play_no) def btn_play(self): filePath = self.vskytube.lbl_autor_3.text() self.webVid(filePath, 'imagen', 'ok') self.vskytube.lbl_desc.setText(filePath) self.vskytube.lbl_desc.setVisible(True) self.vskytube.tabWidget.setCurrentIndex(0) def directorio_vlc(self, video_vlc): if 'win32' in self.sistema() or 'win64' in self.sistema(): if os.path.isfile('c:\progra~1\VideoLAN\VLC\\vlc.exe'): video_vlc = video_vlc.replace('/', '\\') self.process.start('c:\progra~1\VideoLAN\VLC\\vlc.exe "' + video_vlc + '"') elif os.path.isfile('c:\progra~2\VideoLAN\VLC\\vlc.exe'): self.process.start('c:\progra~2\VideoLAN\VLC\\vlc.exe "' + video_vlc + '"') if 'darwin' in self.sistema(): if os.path.isdir('/Applications/VLC.app'): self.process.start( 'open -a /Applications/VLC.app/Contents/MacOS/VLC "' + video_vlc + '"') if 'linux' in self.sistema(): self.process.start('vlc "' + video_vlc + '"') def vlc(self): if os.path.isdir('/Applications/VLC.app') or os.path.isfile( '/usr/bin/vlc') or os.path.isfile( 'c:\progra~1\VideoLAN\VLC\\vlc.exe') or os.path.isfile( 'c:\progra~2\VideoLAN\VLC\\vlc.exe'): self.vskytube.ck_vlc.setChecked(True) vlc_ok = QtGui.QIcon() vlc_ok.addPixmap(QtGui.QPixmap("imagenes/vlc_ok.png")) self.vskytube.ck_vlc.setIcon(vlc_ok) else: vlc_no = QtGui.QIcon() vlc_no.addPixmap(QtGui.QPixmap("imagenes/vlc.png")) self.vskytube.ck_vlc.setIcon(vlc_no) self.vskytube.ck_vlc.setEnabled(False) def vlc_checked(self): if self.vskytube.ck_vlc.isChecked(): vlc_ok = QtGui.QIcon() vlc_ok.addPixmap(QtGui.QPixmap("imagenes/vlc_ok.png")) self.vskytube.ck_vlc.setIcon(vlc_ok) else: vlc_no = QtGui.QIcon() vlc_no.addPixmap(QtGui.QPixmap("imagenes/vlc.png")) self.vskytube.ck_vlc.setIcon(vlc_no) def social_google(self): webbrowser.open('https://plus.google.com/114802605768559072519') def social_facebook(self): webbrowser.open('https://www.facebook.com/xskylarx') def social_twitter(self): webbrowser.open('https://www.twitter.com/xskylarx') def folder(self): if 'win32' in self.sistema() or 'win64' in self.sistema(): perfil = (os.path.join(os.environ['USERPROFILE'], 'videos')) self.process.start('explorer ' + str(perfil)) if 'darwin' in self.sistema(): perfil = (os.path.join(os.environ['HOME'], 'Movies')) self.process.start('open ' + str(perfil)) if 'linux' in self.sistema(): perfil = (os.path.join(os.environ['HOME'], 'Movies')) self.process.start('xdg-open "' + perfil + '"') def descarga(self): try: self.vskytube.lineEdit.setEnabled(False) self.vskytube.p_bar.setMinimum(0) if self.ffmpeg(): pass else: return self.vskytube.lbl_barr.setVisible(True) self.vskytube.p_bar.setVisible(True) QtWidgets.QMessageBox.about( self, 'Empezando Descarga ... ', 'La descarga puede tardar varios minutos, dependiendo de tu conexion ...' ) filename = os.path.join(os.environ['USERPROFILE'], 'videos') + '\\' + self.vskytube.lbl_desc.text() + \ '.' + self.formato() if self.formato() == 'mp3': filename = os.path.join(os.environ['USERPROFILE'], 'videos') + '\\' + self.vskytube.lbl_desc.text() + \ '.m4a' self.vskytube.btn_valida_2.setEnabled(False) urllib.request.urlretrieve(self.vskytube.lbl_descarga.text() + '2', filename, reporthook=self.funcionprogreso) m4a = os.path.join( os.environ['USERPROFILE'], 'videos') + '\\' + self.vskytube.lbl_desc.text() + '.m4a' mp3 = os.path.join( os.environ['USERPROFILE'], 'videos') + '\\' + self.vskytube.lbl_desc.text() + '.mp3' self.ejecutaExe('ffmpeg.exe -i \"%s\" -y \"%s\"' % (m4a, mp3)) os.remove(filename) else: self.vskytube.btn_valida_2.setEnabled(False) urllib.request.urlretrieve(self.vskytube.lbl_descarga.text() + '1', filename, reporthook=self.funcionprogreso) self.setclipboard() self.vskytube.lineEdit.clear() QtWidgets.QMessageBox.about(self, 'Descarga Finalizada', ' Tu descarga Finalizo') self.crea_directorio() self.vskytube.lineEdit.setEnabled(True) self.vskytube.p_bar.setVisible(False) self.vskytube.lbl_barr.setVisible(False) QtCore.QCoreApplication.processEvents() except Exception as e: QtWidgets.QMessageBox.about(self, 'Error Descarga', str(e)) self.vskytube.lineEdit.setEnabled(True) def sistema(self): return sys.platform def muestra(self): QtCore.QCoreApplication.processEvents() self.vskytube.lineEdit.setVisible(True) self.vskytube.btn_valida.setVisible(True) self.vskytube.ck_lst_auto.setVisible(True) self.vskytube.ck_captura.setVisible(True) # self.vskytube.lbl_desc.setVisible(False) self.vskytube.lbl_barr.setVisible(False) self.vskytube.p_bar.setVisible(False) self.vskytube.lineEdit.clear() def formato(self): formato = self.vskytube.f_box.currentText() return formato def valida_descarga(self): try: url = '' for index in range(self.vskytube.lst_encola.count()): url = self.vskytube.lst_encola.item(index).text() video_id = url.split('|id:') url = video_id[1] if url == '': QtWidgets.QMessageBox.about(self, 'Error Lista vacia', 'No hay Links para procesar') else: self.descarga_lista() except Exception as e: QtWidgets.QMessageBox.about( self, 'Error en Link ', 'El Link : ' + url + ' No existe..\n Se eliminara de la lista..\n Por favor Vuelve a descargar la lista ' + e) def limpia(self, titulo): titulo = str(titulo).replace('.', '') titulo = str(titulo).replace('"', '') titulo = str(titulo).replace(':', '') titulo = str(titulo).replace('_', '') titulo = str(titulo).replace('-', '') titulo = str(titulo).replace(';', '') titulo = str(titulo).replace('|', '') titulo = str(titulo).replace("'", '') titulo = str(titulo).replace("+", '') titulo = str(titulo).replace("!", '') titulo = str(titulo).replace("/", '') titulo = str(titulo).replace("\\", '') titulo = str(titulo).replace("*", '') titulo = str(titulo).replace("#", '') titulo = str(titulo).replace("%", '') titulo = str(titulo).replace("&", '') titulo = str(titulo).replace("(", '') titulo = str(titulo).replace(")", '') titulo = str(titulo).replace("?", '') titulo = str(titulo).replace("¿", '') titulo = str(titulo).replace("¡", '') titulo = str(titulo).replace("[", '') titulo = str(titulo).replace("]", '') titulo = str(titulo).replace("{", '') titulo = str(titulo).replace("}", '') titulo = str(titulo).replace("=", '') titulo = str(titulo).replace("~", '') titulo = str(titulo).replace("<", '') titulo = str(titulo).replace(">", '') return titulo def valida_lista(self): try: self.vskytube.web.load(QtCore.QUrl('about:blank')) self.vskytube.web.show() item = self.vskytube.lst_encola.currentItem() url = item.text() video_id = url.split('|id:') url_vid = 'http://skytube.me/descarga/' + video_id[1] + '/1' self.vskytube.lbl_desc.setText(video_id[0]) self.vskytube.lbl_desc.setVisible(True) self.webVid(url_vid, '', 'ok') self.vskytube.tabWidget.setCurrentIndex(0) except Exception as e: QtWidgets.QMessageBox.about( self, 'Error en Link ', 'El Link : ' + item.text() + 'No existe..\n Se eliminara de la lista..' + str(e)) self.elimina_item() def valida(self): try: video_id = self.vskytube.lineEdit.text() if len(video_id) == 11: url = __youtube__ + '/watch?v=' + video_id url_vid = __youtube__ + '/embed/' + video_id if len(video_id.split('list=')) == 2: video_id = video_id.split('list=') print(video_id) if len(video_id) == 2: self.add() url_vid = 'about:blank' return 'termine' sys.exit(0) if len(video_id.split('v=')) == 2: video_id = video_id.split('v=') if len(video_id) == 2: global url url = __youtube__ + '/watch?v=' + video_id[1] url_vid = __youtube__ + '/embed/' + video_id[1] else: global url url = __youtube__ + '/watch?v=' + video_id url_vid = __youtube__ + '/embed/' + video_id global video global best video = pafy.new(url) url_img = video.title url_id = video.videoid self.vskytube.lbl_desc.setText(self.limpia(url_img)) self.vskytube.lbl_descarga.setText('http://skytube.me/descarga/' + url_id + '/') best = video.getbest(preftype='mp4') self.vskytube.btn_valida_2.setVisible(True) if 'VEVO' in video.author: self.webVid(best.url, self.limpia(url_img), 'ok') else: self.webVid(url_vid, self.limpia(url_img), 'no') self.vskytube.tabWidget.setCurrentIndex(0) self.vskytube.btn_valida_2.setEnabled(True) self.vskytube.lbl_desc.setVisible(True) self.vskytube.lineEdit.clear() except Exception as e: QtWidgets.QMessageBox.about( self, 'Error SkyTube ', ' No existe el video favor de verificar.') QtWidgets.QMessageBox.about(self, 'Error SkyTube', str(e))
class v_skytube(QtGui.QDialog): def __init__(self, parent=None): QtGui.QWidget.__init__(self,parent) self.vskytube = Ui_Form() self.vskytube.setupUi(self) self.connect(self.vskytube.btn_valida,QtCore.SIGNAL('clicked()'), self.valida) self.resize(579,66) self.vskytube.label_7.setStyleSheet("color:grey;") self.setWindowTitle('SkyTube Download v.1.2') self.setMaximumSize(832,250) self.setMinimumSize(579,66) self.vskytube.groupBox.setVisible(False) self.connect(self.vskytube.btn_valida_2,QtCore.SIGNAL('clicked()'), self.descarga) self.connect(self.vskytube.btn_vlc,QtCore.SIGNAL('clicked()'), self.AbreVLC) self.connect(self.vskytube.btn_otro,QtCore.SIGNAL('clicked()'), self.muestra) self.vskytube.lbl_desc.setVisible(False) self.vskytube.btn_vlc.setVisible(False) self.vskytube.btn_otro.setVisible(False) self.connect(self.vskytube.btn_folder,QtCore.SIGNAL('clicked()'), self.crea_directorio) self.vskytube.treeView.doubleClicked.connect(self.directorio) #self.vskytube.la.doubleClicked.connect(self.directorio) self.vskytube.treeView.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.setStyleSheet("background-image: url('imagenes/skylogo.png');") self.connect(self.vskytube.btn_folder_2,QtCore.SIGNAL('clicked()'), self.folder) def crea_directorio(self): if self.vskytube.btn_folder.text() == '>': self.resize(832,250) self.vskytube.treeView.setVisible(True) self.vskytube.lbl_perfil.setVisible(True) self.vskytube.btn_folder_2.setVisible(True) self.vskytube.btn_folder.setText('<') self.vskytube.btn_folder.setToolTip('Motrar Videos') self.vskytube.lbl_perfil.setText((os.path.join (os.environ['USERPROFILE'],'videos'))) else: self.resize(579,66) self.vskytube.treeView.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.btn_folder.setText('>') self.vskytube.btn_folder.setToolTip('Ocultar Videos') self.vskytube.lbl_perfil.setVisible(False) fileSystemModel = QtGui.QFileSystemModel(self.vskytube.treeView) fileSystemModel.setReadOnly(True) root = fileSystemModel.setRootPath((os.path.join (os.environ['USERPROFILE'],'videos'))) self.vskytube.treeView.setModel(fileSystemModel) self.vskytube.treeView.setRootIndex(root) self.vskytube.treeView.setColumnHidden(1,True) self.vskytube.treeView.setColumnHidden(2,True) self.vskytube.treeView.setColumnHidden(3,True) self.vskytube.treeView.setHeaderHidden(True) def directorio(self, mensaje): if os.path.isfile('c:\progra~1\VideoLAN\VLC\\vlc.exe'): subprocess.Popen('c:\progra~1\VideoLAN\VLC\\vlc.exe "' + str((os.path.join (os.environ['USERPROFILE'],'videos'))) + '\\' +str(mensaje.data()) + '"' ) elif os.path.isfile('c:\progra~2\VideoLAN\VLC\\vlc.exe'): subprocess.Popen('c:\progra~2\VideoLAN\VLC\\vlc.exe "' + str((os.path.join (os.environ['USERPROFILE'],'videos'))) + '\\' +str(mensaje.data()) + '"') else: QtGui.QMessageBox.about(self,'\nError VlC','Para poder reproducir los videos desde SkyTube necesitas VLC \n tus videos estan en la siguiente ruta:\n\n '\ + str((os.path.join (os.environ['USERPROFILE'],'videos')))) def folder(self): perfil = (os.path.join (os.environ['USERPROFILE'],'videos')) subprocess.Popen('explorer ' + str(perfil)) def descarga(self): try: self.vskytube.lineEdit.setVisible(False) self.vskytube.btn_valida.setVisible(False) self.vskytube.label_7.setVisible(False) self.vskytube.btn_folder.setVisible(False) self.vskytube.treeView.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.groupBox.setVisible(False) self.vskytube.lbl_desc.setStyleSheet("color:red;") self.vskytube.lbl_desc.setText('Tu video se esta descargado, puede tardar varios minutos ...') self.vskytube.lbl_desc.setVisible(True) self.resize(579,66) QtGui.QMessageBox.about(self,'Empezando Descarga ... ','La descarga puede tardar varios minutos, dependiendo de tu conexion ...') global url os.system('skytubec.exe ' + url) self.vskytube.lbl_desc.setStyleSheet("color:green;") self.vskytube.lbl_desc.setText('Tu video se descargo correctamente ...') self.vskytube.btn_vlc.setVisible(True) self.vskytube.btn_otro.setVisible(True) if os.path.isfile('c:\progra~1\VideoLAN\VLC\\vlc.exe') or os.path.isfile('c:\progra~2\VideoLAN\VLC\\vlc.exe'): self.vskytube.btn_vlc.setEnabled(True) else: self.vskytube.btn_vlc.setEnabled(False) except Exception as e: QtGui.QMessageBox.about(self,'Error Descarga', str(e)) def muestra(self): self.vskytube.lineEdit.setVisible(True) self.vskytube.btn_valida.setVisible(True) self.vskytube.label_7.setVisible(True) self.vskytube.btn_folder.setVisible(True) self.vskytube.lbl_desc.setVisible(False) self.vskytube.btn_vlc.setVisible(False) self.vskytube.btn_otro.setVisible(False) self.vskytube.groupBox.setVisible(False) self.vskytube.lineEdit.clear() def AbreVLC(self): best = video.getbest(preftype="mp4") titulo = best.title titulo = str(titulo).replace('.','') titulo = str(titulo).replace('"','') titulo = str(titulo).replace(':','') titulo = str(titulo).replace('_','') titulo = str(titulo).replace('-','') titulo = str(titulo).replace(';','') titulo = str(titulo).replace('|','') titulo = str(titulo).replace("'",'') titulo = str(titulo).replace("+",'') titulo = str(titulo).replace("!",'') titulo = str(titulo).replace("/",'') titulo = str(titulo).replace("\\",'') perfil = (os.path.join (os.environ['USERPROFILE'],'videos')) #QtGui.QMessageBox.about(self,'ff','"' + os.path.abspath(os.path.dirname(__file__)) + '\\videos\\' + best.title + '.' + best.extension + '"' ) if os.path.isfile('c:\progra~1\VideoLAN\VLC\\vlc.exe'): subprocess.Popen('c:\progra~1\VideoLAN\VLC\\vlc.exe "' +str(perfil) + '\\' + titulo + '.' + best.extension + '"' ) else: subprocess.Popen('c:\progra~2\VideoLAN\VLC\\vlc.exe "' + str(perfil) + '\\' + titulo + '.' + best.extension + '"' ) def valida(self): try: if self.vskytube.btn_folder.text() == '<': self.vskytube.btn_folder.setText('>') self.vskytube.treeView.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) else: pass self.vskytube.groupBox.setVisible(False) self.resize(579,66) self.vskytube.lbl_imagen.setText('sin imagen') if os.path.isfile(os.path.dirname(sys.executable)+ '\\skytube.jpg'): os.remove(os.path.dirname(sys.executable) + '\\skytube.jpg') self.vskytube.groupBox.setVisible(True) video_id = self.vskytube.lineEdit.text() if video_id.split('?v=') == 1: video_id = video_id.split('?v=') if len(video_id) == 1: global url url= 'http://www.youtube.com/watch?v=' + video_id[1] else: global url url= 'http://www.youtube.com/watch?v=' + video_id global video video = Pafy(url) best = video.getbest(preftype="mp4") self.vskytube.lbl_calidad.setText(best.resolution + ' Extencion: ' + best.extension) self.vskytube.groupBox.setStyleSheet("color:green;") self.vskytube.groupBox.setTitle(video.title) self.vskytube.lbl_autor.setText(video.author) self.vskytube.lbl_duracion.setText(video.duration) self.vskytube.lbl_id.setText(video.videoid) self.vskytube.lbl_rating.setText(str(video.rating)) self.vskytube.lbl_visto.setText(str(video.viewcount)) self.resize(579,250) #os.chdir(os.path.dirname(sys.executable)) url = video.thumb file = ('skytube.jpg') urllib.request.urlretrieve(url, file) img = (os.path.dirname(sys.executable) + '\skytube.jpg') #img = (video.thumb) #self.vskytube.lbl_imagen.setText('<img src="'+ img +'" />') self.vskytube.lbl_imagen.setPixmap(QtGui.QPixmap(img)) except Exception as e: QtGui.QMessageBox.about(self,'Error SkyTube ',' No existe el video favor de verificar.') QtGui.QMessageBox.about(self,'Error SkyTube ',str(e))
class v_skytube(QtGui.QDialog): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.vskytube = Ui_Form() self.vskytube.setupUi(self) self.resize(585, 121) self.vskytube.label_7.setStyleSheet("color:grey;") self.setWindowTitle('SkyTube Download v.1.5') self.setMaximumSize(880, 321) self.setMinimumSize(489, 48) self.vskytube.groupBox.setVisible(False) self.connect(self.vskytube.btn_valida_2, QtCore.SIGNAL('clicked()'), self.descarga) self.connect(self.vskytube.btn_valida, QtCore.SIGNAL('clicked()'), self.valida) self.vskytube.lbl_desc.setVisible(False) self.vskytube.ck_lst_auto.setEnabled(False) self.connect(self.vskytube.btn_folder, QtCore.SIGNAL('clicked()'), self.crea_directorio) self.vskytube.treeView.doubleClicked.connect(self.directorio) self.vskytube.lineEdit.returnPressed.connect(self.valida) self.vskytube.treeView.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.setStyleSheet("background-image: url('imagenes/skylogo.png');") self.connect(self.vskytube.btn_folder_2, QtCore.SIGNAL('clicked()'), self.folder) self.connect(self.vskytube.btn_add_video, QtCore.SIGNAL('clicked()'), self.add) self.connect(self.vskytube.btn_add, QtCore.SIGNAL('clicked()'), self.crea_lista) self.connect(self.vskytube.btn_paypal, QtCore.SIGNAL('clicked()'), self.donapaypal) self.connect(self.vskytube.ck_captura, QtCore.SIGNAL('stateChanged(int)'), self.CapturaClip) self.connect(self.vskytube.ck_vlc, QtCore.SIGNAL('stateChanged(int)'), self.vlc_checked) self.connect(self.vskytube.lst_encola, QtCore.SIGNAL('itemClicked(QListWidgetItem*)'), self.valida_lista) self.connect(self.vskytube.lst_encola, QtCore.SIGNAL('itemDoubleClicked(QListWidgetItem*)'), self.elimina_item) self.connect(self.vskytube.btn_de_item, QtCore.SIGNAL('clicked()'), self.elimina_item) self.connect(self.vskytube.btn_add_lista, QtCore.SIGNAL('clicked()'), self.valida_descarga) self.connect(self.vskytube.btn_google, QtCore.SIGNAL('clicked()'), self.social_google) self.connect(self.vskytube.btn_twitter, QtCore.SIGNAL('clicked()'), self.social_twitter) self.connect(self.vskytube.btn_facebook, QtCore.SIGNAL('clicked()'), self.social_facebook) self.vskytube.lineEdit.setPlaceholderText( ' Escribe o pega la direccion de tu video y da enter ..') self.oculta() self.vskytube.p_bar.setMinimum(0) self.process = QtCore.QProcess() self.setclipboard() self.vlc() #"#### Funcion proporcionada por Luis Francisco Cesar - Enki Comunidad Python en español. def funcionprogreso(self, bloque, tamano_bloque, tamano_total): velocidad_descarga = 0 tiempo_faltante = 0 cant_descargada = bloque * tamano_bloque self.vskytube.p_bar.setMinimum(0) self.vskytube.p_bar.setMaximum(tamano_total) cant_descargada = bloque * tamano_bloque cant_descargada_MB = round(((cant_descargada / 1024) / 1024), 2) tamano_total_MB = round(((tamano_total / 1024) / 1024), 2) cant_descargada_KB = (cant_descargada / 1024) tamano_total_KB = (tamano_total / 1024) elapsed = time.clock() if elapsed > 0: velocidad_descarga = round((cant_descargada_KB / elapsed), 2) if velocidad_descarga > 0: tiempo_faltante = abs( round(((tamano_total_KB - cant_descargada_KB) / velocidad_descarga), 1)) self.vskytube.lbl_barr.setText( str('\r %s MB / %s MB - %s kbps/s - %s seg' % (cant_descargada_MB, tamano_total_MB, velocidad_descarga, tiempo_faltante))) self.vskytube.lbl_barr.repaint() self.vskytube.p_bar.setValue(cant_descargada) QtCore.QCoreApplication.processEvents() # revisado Linux, Windows def formato_combo(self): self.vskytube.lineEdit.setVisible(False) self.vskytube.btn_valida.setVisible(False) self.vskytube.label_7.setVisible(False) self.vskytube.btn_folder.setVisible(False) self.vskytube.treeView.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.groupBox.setVisible(False) self.vskytube.groupBox_2.setVisible(False) self.vskytube.btn_add.setVisible(False) self.vskytube.ck_lst_auto.setVisible(False) self.vskytube.ck_captura.setVisible(False) self.vskytube.lbl_barr.setVisible(True) self.vskytube.p_bar.setVisible(True) self.resize(489, 82) self.vskytube.lbl_desc.setStyleSheet("color:red;") self.vskytube.lbl_desc.setText('Descargando ffmpeg ... ') self.vskytube.lbl_desc.setVisible(True) self.vskytube.p_bar.setMinimum(0) if 'win32' in self.sistema() or 'win64' in self.sistema(): desc = 'https://dl.dropboxusercontent.com/s/lxkyob6uypwewrc/ffmpeg.exe?dl=1&token_hash=AAEj_dwaE9372Y7tytJC_3kl0UtVKbH924p6ZjDFmmqf9A' filename = 'ffmpeg.exe' if 'darwin' in self.sistema(): desc = 'https://dl.dropboxusercontent.com/s/ux463io3iyybh74/ffmpeg?dl=1&token_hash=AAHE6cs1LXreRN_mspjpLA_w7oaucYFUKeqxFJXZL8rh0Q' filename = 'ffmpeg' QtCore.QCoreApplication.processEvents() #QtGui.QMessageBox.about(self,'Descarga ..', 'Comenzara la descarga de FFMPEG ') urllib.request.urlretrieve(desc, filename, reporthook=self.funcionprogreso) QtGui.QMessageBox.about(self, 'Descarga ..', 'Finalizo la descarga de FFMPEG ') # revisado Linux, Windows def setclipboard(self): global data data = QtGui.QApplication.clipboard() data = data.setText('skylar') #revisado Linux, Windows def elimina_item(self): try: for index in range(self.vskytube.lst_encola.count()): if self.vskytube.lst_encola.currentItem().text( ) == self.vskytube.lst_encola.item(index).text(): respuesta = QtGui.QMessageBox.question( self, 'Elimina Link ', 'Estas seguro de Eliminar el Link \n' + self.vskytube.lst_encola.item(index).text() + ' ?', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if respuesta == QtGui.QMessageBox.Yes: item = self.vskytube.lst_encola.takeItem(index) del item self.vskytube.groupBox.setVisible(False) except: QtGui.QMessageBox.about(self, 'Error Link', 'No hay Link Que eliminar') def ejecutaExe(self, var_archivo): if 'win32' in self.sistema() or 'win64' in self.sistema(): startupinfo = subprocess.STARTUPINFO() startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW with (subprocess.Popen(var_archivo, stdout=subprocess.PIPE, startupinfo=startupinfo)): return else: os.system('chmod +x ffmpeg') output = subprocess.check_output(var_archivo, shell=True) def descarga_lista(self): if 'win32' in self.sistema() or 'win64' in self.sistema(): if self.formato() == 'mp3': if os.path.isfile('ffmpeg.exe'): pass else: respuesta = QtGui.QMessageBox.question( self, 'Descarga Mp3 ', 'Necesitas ffmpeg para descargar MP3 \n' 'Quieres descargarlo? ', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if respuesta == QtGui.QMessageBox.Yes: self.formato_combo() else: return if 'darwin' in self.sistema(): if self.formato() == 'mp3': if os.path.isfile('ffmpeg'): pass else: respuesta = QtGui.QMessageBox.question( self, 'Descarga Mp3 ', 'Necesitas ffmpeg para descargar MP3 \n' 'Quieres descargarlo? ', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if respuesta == QtGui.QMessageBox.Yes: self.formato_combo() else: return self.vskytube.ck_captura.setChecked(False) items = [] for index in range(self.vskytube.lst_encola.count()): items.append(self.vskytube.lst_encola.item(index).text()) url = str(items) self.vskytube.lineEdit.setVisible(False) self.vskytube.btn_valida.setVisible(False) self.vskytube.label_7.setVisible(False) self.vskytube.btn_folder.setVisible(False) self.vskytube.treeView.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.groupBox.setVisible(False) self.vskytube.groupBox_2.setVisible(False) self.vskytube.btn_add.setVisible(False) self.vskytube.ck_lst_auto.setVisible(False) self.vskytube.ck_captura.setVisible(False) self.vskytube.lbl_barr.setVisible(True) self.vskytube.p_bar.setVisible(True) self.resize(489, 82) QtCore.QCoreApplication.processEvents() QtGui.QMessageBox.about( self, 'Comenzando Descarga', 'Tu lista empezara a Descargarce, esto va a tardar varios minutos.' ) for i in items: self.vskytube.lbl_desc.setStyleSheet("color:red;") self.vskytube.lbl_desc.setVisible(True) self.vskytube.p_bar.setMinimum(0) video = Pafy(i) if self.formato() == 'mp3': bestaudio = video.getbestaudio() size = bestaudio.get_filesize() titulo = bestaudio.title extension = bestaudio.extension desc = bestaudio.url else: stream = video.getbest(preftype=self.formato()) size = stream.get_filesize() titulo = stream.title extension = stream.extension desc = stream.url titulo = str(titulo).replace('.', '') titulo = str(titulo).replace('"', '') titulo = str(titulo).replace(':', '') titulo = str(titulo).replace('_', '') titulo = str(titulo).replace('-', '') titulo = str(titulo).replace(';', '') titulo = str(titulo).replace('|', '') titulo = str(titulo).replace("'", '') titulo = str(titulo).replace("+", '') titulo = str(titulo).replace("!", '') titulo = str(titulo).replace("/", '') titulo = str(titulo).replace("\\", '') titulo = str(titulo).replace("*", '') titulo = str(titulo).replace("#", '') titulo = str(titulo).replace("%", '') titulo = str(titulo).replace("&", '') titulo = str(titulo).replace("(", '') titulo = str(titulo).replace(")", '') titulo = str(titulo).replace("?", '') titulo = str(titulo).replace("¿", '') titulo = str(titulo).replace("¡", '') titulo = str(titulo).replace("[", '') titulo = str(titulo).replace("]", '') titulo = str(titulo).replace("{", '') titulo = str(titulo).replace("}", '') titulo = str(titulo).replace("=", '') titulo = str(titulo).replace("~", '') titulo = str(titulo).replace("<", '') titulo = str(titulo).replace(">", '') if 'win32' in self.sistema() or 'win64' in self.sistema(): filename = os.path.join( os.environ['USERPROFILE'], 'videos') + '\\' + titulo + '.' + extension else: filename = os.path.join( os.environ['HOME'], 'Movies') + '/' + titulo + '.' + extension self.vskytube.lbl_desc.setText('Descargando ...' + titulo) urllib.request.urlretrieve(desc, filename, reporthook=self.funcionprogreso) if self.formato() == 'mp3': if self.sistema() == 'win32': m4a = os.path.join( os.environ['USERPROFILE'], 'videos') + '\\' + titulo + '.' + extension mp3 = os.path.join(os.environ['USERPROFILE'], 'videos') + '\\' + titulo + '.mp3' self.ejecutaExe('ffmpeg.exe -i \"%s\" -y \"%s\"' % (m4a, mp3)) os.remove(filename) if 'darwin' in self.sistema(): m4a = os.path.join( os.environ['HOME'], 'Movies') + '/' + titulo + '.' + extension mp3 = os.path.join(os.environ['HOME'], 'Movies') + '/' + titulo + '.mp3' self.ejecutaExe('./ffmpeg -i \"%s\" -y \"%s\"' % (m4a, mp3)) os.remove(filename) QtGui.QMessageBox.about(self, 'Descarga Completada', 'La Lista se Descargo Correctamente..') self.setclipboard() self.vskytube.lineEdit.clear() self.crea_directorio() self.resize(880, 321) QtCore.QCoreApplication.processEvents() self.muestra() self.vskytube.lst_encola.clear() def add(self): try: video_id = self.vskytube.lineEdit.text() if len(video_id) == 11: url = 'http://www.youtube.com/watch?v=' + video_id elif len(str(video_id).split('?v=')) == 2: video_id = video_id.split('?v=') else: self.setclipboard() self.vskytube.lineEdit.clear() QtGui.QMessageBox.about(self, 'Alerta Link! ', 'Link No valido!') return if len(video_id) == 2: url = 'http://www.youtube.com/watch?v=' + video_id[1] else: url = 'http://www.youtube.com/watch?v=' + video_id items = [] for index in range(self.vskytube.lst_encola.count()): items.append(self.vskytube.lst_encola.item(index).text()) existe = 'No' for i in items: if url == i: existe = 'Si' if existe == 'No': self.setclipboard() if Pafy(url): self.vskytube.lst_encola.addItem(url) self.vskytube.lineEdit.clear() else: self.vskytube.lineEdit.clear() self.setclipboard() QtGui.QMessageBox.about( self, 'Alerta Link! ', 'Este Link ya fue agregado a la lista!') except: self.vskytube.lineEdit.setText('Link No Valido') self.setclipboard() def clipboard(self): global data data = QtGui.QApplication.clipboard() data = data.text() if len(data) == 11: item = ('http://www.youtube.com/watch?v=' + data) self.vskytube.lineEdit.setText(item) if self.vskytube.ck_lst_auto.isChecked(): self.add() timer = QtCore.QTimer() timer.stop() self.CapturaClip() if len(str(data).split('?v=')) == 2: data = str(data).split('?v=') if len(data) == 2: item = ('http://www.youtube.com/watch?v=' + data[1]) self.vskytube.lineEdit.setText(item) if self.vskytube.ck_lst_auto.isChecked(): self.add() timer = QtCore.QTimer() timer.stop() self.CapturaClip() else: timer = QtCore.QTimer() timer.stop() self.CapturaClip() def CapturaClip(self): if self.vskytube.ck_captura.isChecked(): global timer timer = QtCore.QTimer() timer.start(3000) timer.connect(timer, QtCore.SIGNAL("timeout()"), self.clipboard) self.vskytube.ck_lst_auto.setEnabled(True) else: self.vskytube.ck_lst_auto.setEnabled(False) self.vskytube.ck_lst_auto.setChecked(False) timer = QtCore.QTimer() self.setclipboard() timer.stop() def crea_directorio(self): if self.vskytube.btn_folder.text() == '>': self.oculta() self.resize(880, 321) self.vskytube.treeView.setVisible(True) self.vskytube.lbl_perfil.setVisible(True) self.vskytube.btn_folder_2.setVisible(True) self.vskytube.btn_folder.setText('<') self.vskytube.btn_folder.setToolTip('Motrar Videos') if 'win32' in self.sistema() or 'win64' in self.sistema(): self.vskytube.lbl_perfil.setText( (os.path.join(os.environ['USERPROFILE'], 'videos'))) if 'darwin' in self.sistema(): self.vskytube.lbl_perfil.setText( (os.path.join(os.environ['HOME'], 'Movies'))) if 'linux' in self.sistema(): if os.path.isdir(os.path.join(os.environ['HOME'], 'Movies')): self.vskytube.lbl_perfil.setText( (os.path.join(os.environ['HOME'], 'Movies'))) else: os.system('mkdir $HOME/Movies') self.vskytube.lbl_perfil.setText( (os.path.join(os.environ['HOME'], 'Movies'))) else: self.resize(585, 121) self.vskytube.treeView.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_folder.setText('>') self.vskytube.btn_folder.setToolTip('Ocultar Videos') self.vskytube.lbl_perfil.setVisible(False) global fileSystemModel fileSystemModel = QtGui.QFileSystemModel(self.vskytube.treeView) fileSystemModel.setReadOnly(True) if 'win32' in self.sistema() or 'win64' in self.sistema(): fileSystemModel.setRootPath( str((os.path.join(os.environ['USERPROFILE'], 'videos')))) indexRoot = fileSystemModel.index(fileSystemModel.rootPath()) self.vskytube.treeView.setModel(fileSystemModel) self.vskytube.treeView.setRootIndex(indexRoot) elif 'darwin' in self.sistema() or 'linux' in self.sistema(): fileSystemModel.setRootPath( str((os.path.join(os.environ['HOME'], 'Movies')))) indexRoot = fileSystemModel.index(fileSystemModel.rootPath()) self.vskytube.treeView.setModel(fileSystemModel) self.vskytube.treeView.setRootIndex(indexRoot) self.vskytube.treeView.setColumnHidden(1, True) self.vskytube.treeView.setColumnHidden(2, True) self.vskytube.treeView.setColumnHidden(3, True) self.vskytube.treeView.setHeaderHidden(True) def crea_lista(self): if self.vskytube.btn_add.text() == '>': self.oculta() self.resize(880, 321) self.vskytube.lst_encola.setVisible(True) self.vskytube.btn_add_lista.setVisible(True) self.vskytube.btn_add_video.setVisible(True) self.vskytube.btn_de_item.setVisible(True) self.vskytube.btn_add.setText('<') self.vskytube.btn_folder.setToolTip('Mostrar Lista') else: self.resize(585, 121) self.vskytube.lst_encola.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_add_lista.setVisible(False) self.vskytube.btn_add_video.setVisible(False) self.vskytube.btn_de_item.setVisible(False) self.vskytube.btn_add.setText('>') self.vskytube.btn_folder.setToolTip('Ocultar Lista') def oculta(self): self.vskytube.lst_encola.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_add_lista.setVisible(False) self.vskytube.btn_add_video.setVisible(False) self.vskytube.btn_add.setText('>') self.vskytube.btn_folder.setToolTip('Ocultar Lista') self.vskytube.treeView.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.btn_folder.setText('>') self.vskytube.btn_folder.setToolTip('Ocultar Videos') self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_de_item.setVisible(False) self.vskytube.lbl_barr.setVisible(False) self.vskytube.p_bar.setVisible(False) def donapaypal(self): QtGui.QMessageBox.information( self, 'Donacion PayPal', 'Gracias por conciderar hacer una donacion al proyecto SkyTube \n Todo el dinero seran utilizado para el Hosting \ \n Muchas Gracias =)' ) webbrowser.open( 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2K6Y3B8AG39DQ' ) @QtCore.pyqtSlot(QtCore.QModelIndex) def directorio(self, index): if self.vskytube.ck_vlc.isChecked(): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) self.directorio_vlc(filePath) return if 'win32' in self.sistema() or 'win64' in self.sistema(): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) os.startfile(filePath) if 'darwin' in self.sistema(): if os.path.isdir('/Applications/VLC.app'): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) os.system( 'open -a /Applications/VLC.app/Contents/MacOS/VLC "' + filePath + '"') else: QtGui.QMessageBox.about(self,'\nError VlC','Para poder reproducir los videos desde SkyTube necesitas VLC \n tus videos estan en la siguiente ruta:\n\n '\ + str((os.path.join (os.environ['HOME'],'Movies')))) if 'linux' in self.sistema(): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) self.process.start('xdg-open "' + filePath + '"') def directorio_vlc(self, video_vlc): if 'win32' in self.sistema() or 'win64' in self.sistema(): if os.path.isfile('c:\progra~1\VideoLAN\VLC\\vlc.exe'): video_vlc = video_vlc.replace('/', '\\') self.process.start('c:\progra~1\VideoLAN\VLC\\vlc.exe "' + video_vlc + '"') elif os.path.isfile('c:\progra~2\VideoLAN\VLC\\vlc.exe'): self.process.start('c:\progra~2\VideoLAN\VLC\\vlc.exe "' + video_vlc + '"') if 'darwin' in self.sistema(): if os.path.isdir('/Applications/VLC.app'): self.process.start( 'open -a /Applications/VLC.app/Contents/MacOS/VLC "' + video_vlc + '"') if 'linux' in self.sistema(): self.process.start('vlc "' + video_vlc + '"') def vlc(self): if os.path.isdir('/Applications/VLC.app') or os.path.isfile( '/usr/bin/vlc') or os.path.isfile( 'c:\progra~1\VideoLAN\VLC\\vlc.exe') or os.path.isfile( 'c:\progra~2\VideoLAN\VLC\\vlc.exe'): self.vskytube.ck_vlc.setChecked(True) vlc_ok = QtGui.QIcon() vlc_ok.addPixmap(QtGui.QPixmap("imagenes/vlc_ok.png")) self.vskytube.ck_vlc.setIcon(vlc_ok) else: vlc_no = QtGui.QIcon() vlc_no.addPixmap(QtGui.QPixmap("imagenes/vlc.png")) self.vskytube.ck_vlc.setIcon(vlc_no) self.vskytube.ck_vlc.setEnabled(False) def vlc_checked(self): if self.vskytube.ck_vlc.isChecked(): vlc_ok = QtGui.QIcon() vlc_ok.addPixmap(QtGui.QPixmap("imagenes/vlc_ok.png")) self.vskytube.ck_vlc.setIcon(vlc_ok) else: vlc_no = QtGui.QIcon() vlc_no.addPixmap(QtGui.QPixmap("imagenes/vlc.png")) self.vskytube.ck_vlc.setIcon(vlc_no) def social_google(self): webbrowser.open('https://plus.google.com/114802605768559072519') def social_facebook(self): webbrowser.open('https://www.facebook.com/xskylarx') def social_twitter(self): webbrowser.open('https://www.twitter.com/xskylarx') def folder(self): if 'win32' in self.sistema() or 'win64' in self.sistema(): perfil = (os.path.join(os.environ['USERPROFILE'], 'videos')) self.process.start('explorer ' + str(perfil)) if 'darwin' in self.sistema(): perfil = (os.path.join(os.environ['HOME'], 'Movies')) self.process.start('open ' + str(perfil)) if 'linux' in self.sistema(): perfil = (os.path.join(os.environ['HOME'], 'Movies')) self.process.start('xdg-open "' + perfil + '"') def descarga(self): try: self.vskytube.p_bar.setMinimum(0) if 'win32' in self.sistema() or 'win64' in self.sistema(): if self.formato() == 'mp3': if os.path.isfile('ffmpeg.exe'): pass else: respuesta = QtGui.QMessageBox.question( self, 'Descarga Mp3 ', 'Necesitas ffmpeg para descargar MP3 \n' 'Quieres descargarlo? ', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if respuesta == QtGui.QMessageBox.Yes: self.formato_combo() else: return if 'darwin' in self.sistema(): if self.formato() == 'mp3': if os.path.isfile('ffmpeg'): pass else: respuesta = QtGui.QMessageBox.question( self, 'Descarga Mp3 ', 'Necesitas ffmpeg para descargar MP3 \n' 'Quieres descargarlo? ', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if respuesta == QtGui.QMessageBox.Yes: self.formato_combo() else: return video = Pafy(url) if self.formato() == 'mp3': bestaudio = video.getbestaudio() size = bestaudio.get_filesize() titulo = bestaudio.title extension = bestaudio.extension desc = bestaudio.url else: stream = video.getbest(preftype=self.formato()) size = stream.get_filesize() titulo = stream.title extension = stream.extension desc = stream.url self.vskytube.lineEdit.setVisible(False) self.vskytube.btn_valida.setVisible(False) self.vskytube.label_7.setVisible(False) self.vskytube.btn_folder.setVisible(False) self.vskytube.treeView.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.groupBox.setVisible(False) self.vskytube.groupBox_2.setVisible(False) self.vskytube.btn_add.setVisible(False) self.vskytube.ck_lst_auto.setVisible(False) self.vskytube.ck_captura.setVisible(False) self.vskytube.lbl_desc.setStyleSheet("color:red;") self.vskytube.lbl_desc.setText('Descargando ...' + titulo) self.vskytube.lbl_desc.setVisible(True) self.vskytube.lbl_barr.setVisible(True) self.vskytube.p_bar.setVisible(True) self.resize(489, 82) QtGui.QMessageBox.about( self, 'Empezando Descarga ... ', 'La descarga puede tardar varios minutos, dependiendo de tu conexion ...' ) titulo = str(titulo).replace('.', '') titulo = str(titulo).replace('"', '') titulo = str(titulo).replace(':', '') titulo = str(titulo).replace('_', '') titulo = str(titulo).replace('-', '') titulo = str(titulo).replace(';', '') titulo = str(titulo).replace('|', '') titulo = str(titulo).replace("'", '') titulo = str(titulo).replace("+", '') titulo = str(titulo).replace("!", '') titulo = str(titulo).replace("/", '') titulo = str(titulo).replace("\\", '') titulo = str(titulo).replace("*", '') titulo = str(titulo).replace("#", '') titulo = str(titulo).replace("%", '') titulo = str(titulo).replace("&", '') titulo = str(titulo).replace("(", '') titulo = str(titulo).replace(")", '') titulo = str(titulo).replace("?", '') titulo = str(titulo).replace("¿", '') titulo = str(titulo).replace("¡", '') titulo = str(titulo).replace("[", '') titulo = str(titulo).replace("]", '') titulo = str(titulo).replace("{", '') titulo = str(titulo).replace("}", '') titulo = str(titulo).replace("=", '') titulo = str(titulo).replace("~", '') titulo = str(titulo).replace("<", '') titulo = str(titulo).replace(">", '') if 'win32' in self.sistema() or 'win64' in self.sistema(): filename = os.path.join( os.environ['USERPROFILE'], 'videos') + '\\' + titulo + '.' + extension else: filename = os.path.join( os.environ['HOME'], 'Movies') + '/' + titulo + '.' + extension urllib.request.urlretrieve(desc, filename, reporthook=self.funcionprogreso) if self.formato() == 'mp3': if 'win32' in self.sistema() or 'win64' in self.sistema(): m4a = os.path.join( os.environ['USERPROFILE'], 'videos') + '\\' + titulo + '.' + extension mp3 = os.path.join(os.environ['USERPROFILE'], 'videos') + '\\' + titulo + '.mp3' self.ejecutaExe('ffmpeg.exe -i \"%s\" -y \"%s\"' % (m4a, mp3)) os.remove(filename) if 'darwin' in self.sistema(): m4a = os.path.join( os.environ['HOME'], 'Movies') + '/' + titulo + '.' + extension mp3 = os.path.join(os.environ['HOME'], 'Movies') + '/' + titulo + '.mp3' self.ejecutaExe('./ffmpeg -i \"%s\" -y \"%s\"' % (m4a, mp3)) os.remove(filename) self.setclipboard() self.vskytube.lineEdit.clear() QtGui.QMessageBox.about(self, 'Descarga Finalizada', ' Tu descarga Finalizo') self.crea_directorio() self.resize(880, 321) QtCore.QCoreApplication.processEvents() self.muestra() except Exception as e: QtGui.QMessageBox.about(self, 'Error Descarga', str(e)) def sistema(self): return sys.platform def muestra(self): QtCore.QCoreApplication.processEvents() self.vskytube.lineEdit.setVisible(True) self.vskytube.btn_valida.setVisible(True) self.vskytube.label_7.setVisible(True) self.vskytube.btn_folder.setVisible(True) self.vskytube.groupBox_2.setVisible(True) self.vskytube.btn_add.setVisible(True) self.vskytube.ck_lst_auto.setVisible(True) self.vskytube.ck_captura.setVisible(True) self.vskytube.lbl_desc.setVisible(False) self.vskytube.groupBox.setVisible(False) self.vskytube.lbl_barr.setVisible(False) self.vskytube.p_bar.setVisible(False) self.vskytube.lineEdit.clear() def formato(self): formato = self.vskytube.f_box.currentText() return formato def valida_descarga(self): try: url = '' for index in range(self.vskytube.lst_encola.count()): url = self.vskytube.lst_encola.item(index).text() if url == '': QtGui.QMessageBox.about(self, 'Error Lista vacia', 'No hay Links para procesar') else: self.descarga_lista() except Exception as e: QtGui.QMessageBox.about( self, 'Error en Link ', 'El Link : ' + url + ' No existe..\n Se eliminara de la lista..\n Por favor Vuelve a descargar la lista ' ) def valida_lista(self): try: self.vskytube.groupBox.setVisible(False) self.vskytube.lbl_imagen.setText('sin imagen') if os.path.isfile( os.path.dirname(sys.executable) + '\\skytube.jpg'): os.remove(os.path.dirname(sys.executable) + '\\skytube.jpg') if os.path.isfile('/tmp/skytube.jpg'): os.remove('/tmp/skytube.jpg') item = self.vskytube.lst_encola.currentItem() url = item.text() video = Pafy(url) best = video.getbest(preftype=self.formato()) if self.formato() == 'mp3': self.vskytube.lbl_calidad.setText(' Extencion: mp3') else: self.vskytube.lbl_calidad.setText(best.resolution + ' Extencion: ' + best.extension) self.vskytube.groupBox.setTitle(video.title) self.vskytube.lbl_autor.setText(video.author) self.vskytube.lbl_duracion.setText(video.duration) self.vskytube.lbl_id.setText(video.videoid) self.vskytube.lbl_rating.setText(str(video.rating)) self.vskytube.lbl_visto.setText(str(video.viewcount)) self.vskytube.btn_valida_2.setVisible(False) url = video.thumb if 'win32' in self.sistema() or 'win64' in self.sistema(): file = ('skytube.jpg') if 'linux' in self.sistema(): file = ('/tmp/skytube.jpg') if 'darwin' in self.sistema(): file = ('skytube.jpg') urllib.request.urlretrieve(url, file) if 'win32' in self.sistema() or 'win64' in self.sistema(): img = (os.path.dirname(sys.executable) + '\skytube.jpg') if 'linux' in self.sistema(): img = ('/tmp/skytube.jpg') if 'darwin' in self.sistema(): img = ('/skytube.jpg') self.vskytube.lbl_imagen.setPixmap(QtGui.QPixmap(img)) self.vskytube.groupBox.setVisible(True) except Exception as e: self.vskytube.groupBox.setVisible(False) QtGui.QMessageBox.about( self, 'Error en Link ', 'El Link : ' + item.text() + ' No existe..\n Se eliminara de la lista..' + str(e)) self.elimina_item() def valida(self): try: self.oculta() self.vskytube.groupBox.setVisible(False) self.resize(585, 121) self.vskytube.lbl_imagen.setText('sin imagen') if os.path.isfile( os.path.dirname(sys.executable) + '\\skytube.jpg'): os.remove(os.path.dirname(sys.executable) + '\\skytube.jpg') if os.path.isfile('/tmp/skytube.jpg'): os.remove('/tmp/skytube.jpg') self.vskytube.groupBox.setVisible(True) video_id = self.vskytube.lineEdit.text() if len(video_id) == 11: url = 'http://www.youtube.com/watch?v=' + video_id if video_id.split('?v=') == 1: video_id = video_id.split('?v=') if len(video_id) == 1: global url url = 'http://www.youtube.com/watch?v=' + video_id[1] else: global url url = 'http://www.youtube.com/watch?v=' + video_id global video video = Pafy(url) best = video.getbest(preftype=self.formato()) if self.formato() == 'mp3': self.vskytube.lbl_calidad.setText(' Extencion: mp3') else: self.vskytube.lbl_calidad.setText(best.resolution + ' Extencion: ' + best.extension) self.vskytube.groupBox.setTitle(video.title) self.vskytube.lbl_autor.setText(video.author) self.vskytube.lbl_duracion.setText(video.duration) self.vskytube.lbl_id.setText(video.videoid) self.vskytube.lbl_rating.setText(str(video.rating)) self.vskytube.lbl_visto.setText(str(video.viewcount)) self.resize(579, 288) self.vskytube.btn_valida_2.setVisible(True) url_img = video.thumb if 'win32' in self.sistema() or 'win64' in self.sistema(): file = ('skytube.jpg') if 'linux' in self.sistema(): file = ('/tmp/skytube.jpg') if 'darwin' in self.sistema(): file = ('skytube.jpg') urllib.request.urlretrieve(url_img, file) if 'win32' in self.sistema() or 'win64' in self.sistema(): img = (os.path.dirname(sys.executable) + '\skytube.jpg') if 'linux' in self.sistema(): img = ('/tmp/skytube.jpg') if 'darwin' in self.sistema(): img = ('/skytube.jpg') self.vskytube.lbl_imagen.setPixmap(QtGui.QPixmap(img)) except Exception as e: QtGui.QMessageBox.about(self, 'Error SkyTube ', ' No existe el video favor de verificar.') QtGui.QMessageBox.about(self, 'Error SkyTube ', str(e))
class v_skytube(QtGui.QDialog): def __init__(self, parent=None): QtGui.QWidget.__init__(self,parent) self.vskytube = Ui_Form() self.vskytube.setupUi(self) self.resize(585,121) self.vskytube.label_7.setStyleSheet("color:grey;") self.setWindowTitle('SkyTube Download v.1.5') self.setMaximumSize(880,321) self.setMinimumSize(489,48) self.vskytube.groupBox.setVisible(False) self.connect(self.vskytube.btn_valida_2,QtCore.SIGNAL('clicked()'), self.descarga) self.connect(self.vskytube.btn_valida,QtCore.SIGNAL('clicked()'), self.valida) self.vskytube.lbl_desc.setVisible(False) self.vskytube.ck_lst_auto.setEnabled(False) self.connect(self.vskytube.btn_folder,QtCore.SIGNAL('clicked()'), self.crea_directorio) self.vskytube.treeView.doubleClicked.connect(self.directorio) self.vskytube.lineEdit.returnPressed.connect(self.valida) self.vskytube.treeView.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.setStyleSheet("background-image: url('imagenes/skylogo.png');") self.connect(self.vskytube.btn_folder_2,QtCore.SIGNAL('clicked()'), self.folder) self.connect(self.vskytube.btn_add_video, QtCore.SIGNAL('clicked()'), self.add) self.connect(self.vskytube.btn_add, QtCore.SIGNAL('clicked()'), self.crea_lista) self.connect(self.vskytube.btn_paypal, QtCore.SIGNAL('clicked()'), self.donapaypal) self.connect(self.vskytube.ck_captura, QtCore.SIGNAL('stateChanged(int)'), self.CapturaClip) self.connect(self.vskytube.ck_vlc, QtCore.SIGNAL('stateChanged(int)'), self.vlc_checked) self.connect(self.vskytube.lst_encola, QtCore.SIGNAL('itemClicked(QListWidgetItem*)'), self.valida_lista) self.connect(self.vskytube.lst_encola, QtCore.SIGNAL('itemDoubleClicked(QListWidgetItem*)'), self.elimina_item) self.connect(self.vskytube.btn_de_item, QtCore.SIGNAL('clicked()'), self.elimina_item) self.connect(self.vskytube.btn_add_lista, QtCore.SIGNAL('clicked()'), self.valida_descarga) self.connect(self.vskytube.btn_google, QtCore.SIGNAL('clicked()'), self.social_google) self.connect(self.vskytube.btn_twitter, QtCore.SIGNAL('clicked()'), self.social_twitter) self.connect(self.vskytube.btn_facebook, QtCore.SIGNAL('clicked()'), self.social_facebook) self.vskytube.lineEdit.setPlaceholderText(' Escribe o pega la direccion de tu video y da enter ..') self.oculta() self.vskytube.p_bar.setMinimum(0) self.process = QtCore.QProcess() self.setclipboard() self.vlc() #"#### Funcion proporcionada por Luis Francisco Cesar - Enki Comunidad Python en español. def funcionprogreso(self,bloque, tamano_bloque, tamano_total): velocidad_descarga = 0 tiempo_faltante = 0 cant_descargada = bloque * tamano_bloque self.vskytube.p_bar.setMinimum(0) self.vskytube.p_bar.setMaximum(tamano_total) cant_descargada = bloque * tamano_bloque cant_descargada_MB = round(((cant_descargada/1024)/1024),2) tamano_total_MB = round(((tamano_total/1024)/1024),2) cant_descargada_KB = (cant_descargada/1024) tamano_total_KB = (tamano_total/1024) elapsed = time.clock() if elapsed>0: velocidad_descarga=round((cant_descargada_KB/elapsed),2) if velocidad_descarga>0: tiempo_faltante=abs(round(((tamano_total_KB - cant_descargada_KB) / velocidad_descarga),1)) self.vskytube.lbl_barr.setText(str('\r %s MB / %s MB - %s kbps/s - %s seg' % (cant_descargada_MB, tamano_total_MB,velocidad_descarga,tiempo_faltante))) self.vskytube.lbl_barr.repaint() self.vskytube.p_bar.setValue(cant_descargada) QtCore.QCoreApplication.processEvents() # revisado Linux, Windows def formato_combo(self): self.vskytube.lineEdit.setVisible(False) self.vskytube.btn_valida.setVisible(False) self.vskytube.label_7.setVisible(False) self.vskytube.btn_folder.setVisible(False) self.vskytube.treeView.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.groupBox.setVisible(False) self.vskytube.groupBox_2.setVisible(False) self.vskytube.btn_add.setVisible(False) self.vskytube.ck_lst_auto.setVisible(False) self.vskytube.ck_captura.setVisible(False) self.vskytube.lbl_barr.setVisible(True) self.vskytube.p_bar.setVisible(True) self.resize(489,82) self.vskytube.lbl_desc.setStyleSheet("color:red;") self.vskytube.lbl_desc.setText('Descargando ffmpeg ... ') self.vskytube.lbl_desc.setVisible(True) self.vskytube.p_bar.setMinimum(0) if 'win32' in self.sistema() or 'win64' in self.sistema(): desc = 'https://dl.dropboxusercontent.com/s/lxkyob6uypwewrc/ffmpeg.exe?dl=1&token_hash=AAEj_dwaE9372Y7tytJC_3kl0UtVKbH924p6ZjDFmmqf9A' filename = 'ffmpeg.exe' if 'darwin' in self.sistema(): desc = 'https://dl.dropboxusercontent.com/s/ux463io3iyybh74/ffmpeg?dl=1&token_hash=AAHE6cs1LXreRN_mspjpLA_w7oaucYFUKeqxFJXZL8rh0Q' filename = 'ffmpeg' QtCore.QCoreApplication.processEvents() #QtGui.QMessageBox.about(self,'Descarga ..', 'Comenzara la descarga de FFMPEG ') urllib.request.urlretrieve(desc, filename,reporthook=self.funcionprogreso) QtGui.QMessageBox.about(self,'Descarga ..', 'Finalizo la descarga de FFMPEG ') # revisado Linux, Windows def setclipboard(self): global data data = QtGui.QApplication.clipboard() data = data.setText('skylar') #revisado Linux, Windows def elimina_item(self): try: for index in range(self.vskytube.lst_encola.count()): if self.vskytube.lst_encola.currentItem().text() == self.vskytube.lst_encola.item(index).text(): respuesta = QtGui.QMessageBox.question(self, 'Elimina Link ', 'Estas seguro de Eliminar el Link \n' + self.vskytube.lst_encola.item(index).text() + ' ?', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if respuesta == QtGui.QMessageBox.Yes: item = self.vskytube.lst_encola.takeItem(index) del item self.vskytube.groupBox.setVisible(False) except: QtGui.QMessageBox.about(self,'Error Link','No hay Link Que eliminar') def ejecutaExe(self,var_archivo): if 'win32' in self.sistema() or 'win64' in self.sistema(): startupinfo = subprocess.STARTUPINFO() startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW with (subprocess.Popen(var_archivo, stdout=subprocess.PIPE, startupinfo=startupinfo)): return else: os.system('chmod +x ffmpeg') output = subprocess.check_output(var_archivo, shell=True) def descarga_lista(self): if 'win32' in self.sistema() or 'win64' in self.sistema(): if self.formato() == 'mp3': if os.path.isfile('ffmpeg.exe'): pass else: respuesta = QtGui.QMessageBox.question(self, 'Descarga Mp3 ', 'Necesitas ffmpeg para descargar MP3 \n' 'Quieres descargarlo? ', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if respuesta == QtGui.QMessageBox.Yes: self.formato_combo() else: return if 'darwin' in self.sistema(): if self.formato() == 'mp3': if os.path.isfile('ffmpeg'): pass else: respuesta = QtGui.QMessageBox.question(self, 'Descarga Mp3 ', 'Necesitas ffmpeg para descargar MP3 \n' 'Quieres descargarlo? ', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if respuesta == QtGui.QMessageBox.Yes: self.formato_combo() else: return self.vskytube.ck_captura.setChecked(False) items = [] for index in range(self.vskytube.lst_encola.count()): items.append(self.vskytube.lst_encola.item(index).text()) url = str(items) self.vskytube.lineEdit.setVisible(False) self.vskytube.btn_valida.setVisible(False) self.vskytube.label_7.setVisible(False) self.vskytube.btn_folder.setVisible(False) self.vskytube.treeView.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.groupBox.setVisible(False) self.vskytube.groupBox_2.setVisible(False) self.vskytube.btn_add.setVisible(False) self.vskytube.ck_lst_auto.setVisible(False) self.vskytube.ck_captura.setVisible(False) self.vskytube.lbl_barr.setVisible(True) self.vskytube.p_bar.setVisible(True) self.resize(489,82) QtCore.QCoreApplication.processEvents() QtGui.QMessageBox.about(self,'Comenzando Descarga','Tu lista empezara a Descargarce, esto va a tardar varios minutos.') for i in items: self.vskytube.lbl_desc.setStyleSheet("color:red;") self.vskytube.lbl_desc.setVisible(True) self.vskytube.p_bar.setMinimum(0) video =Pafy(i) if self.formato() == 'mp3': bestaudio = video.getbestaudio() size = bestaudio.get_filesize() titulo = bestaudio.title extension = bestaudio.extension desc = bestaudio.url else: stream = video.getbest(preftype=self.formato()) size = stream.get_filesize() titulo = stream.title extension = stream.extension desc = stream.url titulo = str(titulo).replace('.','') titulo = str(titulo).replace('"','') titulo = str(titulo).replace(':','') titulo = str(titulo).replace('_','') titulo = str(titulo).replace('-','') titulo = str(titulo).replace(';','') titulo = str(titulo).replace('|','') titulo = str(titulo).replace("'",'') titulo = str(titulo).replace("+",'') titulo = str(titulo).replace("!",'') titulo = str(titulo).replace("/",'') titulo = str(titulo).replace("\\",'') titulo = str(titulo).replace("*",'') titulo = str(titulo).replace("#",'') titulo = str(titulo).replace("%",'') titulo = str(titulo).replace("&",'') titulo = str(titulo).replace("(",'') titulo = str(titulo).replace(")",'') titulo = str(titulo).replace("?",'') titulo = str(titulo).replace("¿",'') titulo = str(titulo).replace("¡",'') titulo = str(titulo).replace("[",'') titulo = str(titulo).replace("]",'') titulo = str(titulo).replace("{",'') titulo = str(titulo).replace("}",'') titulo = str(titulo).replace("=",'') titulo = str(titulo).replace("~",'') titulo = str(titulo).replace("<",'') titulo = str(titulo).replace(">",'') if 'win32' in self.sistema() or 'win64' in self.sistema(): filename = os.path.join (os.environ['USERPROFILE'],'videos') + '\\' + titulo + '.' + extension else: filename = os.path.join (os.environ['HOME'],'Movies') + '/' + titulo + '.' + extension self.vskytube.lbl_desc.setText('Descargando ...' + titulo ) urllib.request.urlretrieve(desc, filename,reporthook=self.funcionprogreso) if self.formato() == 'mp3': if self.sistema() == 'win32': m4a = os.path.join (os.environ['USERPROFILE'],'videos') + '\\' + titulo + '.' + extension mp3 = os.path.join (os.environ['USERPROFILE'],'videos') + '\\' + titulo + '.mp3' self.ejecutaExe('ffmpeg.exe -i \"%s\" -y \"%s\"' % (m4a , mp3)) os.remove(filename) if 'darwin' in self.sistema(): m4a = os.path.join (os.environ['HOME'],'Movies') + '/' + titulo + '.' + extension mp3 = os.path.join (os.environ['HOME'],'Movies') + '/' + titulo + '.mp3' self.ejecutaExe('./ffmpeg -i \"%s\" -y \"%s\"' % (m4a , mp3)) os.remove(filename) QtGui.QMessageBox.about(self,'Descarga Completada', 'La Lista se Descargo Correctamente..') self.setclipboard() self.vskytube.lineEdit.clear() self.crea_directorio() self.resize(880,321) QtCore.QCoreApplication.processEvents() self.muestra() self.vskytube.lst_encola.clear() def add(self): try: video_id = self.vskytube.lineEdit.text() if len(video_id) == 11: url= 'http://www.youtube.com/watch?v=' + video_id elif len(str(video_id).split('?v=')) == 2: video_id = video_id.split('?v=') else: self.setclipboard() self.vskytube.lineEdit.clear() QtGui.QMessageBox.about(self,'Alerta Link! ','Link No valido!' ) return if len(video_id) == 2: url= 'http://www.youtube.com/watch?v=' + video_id[1] else: url= 'http://www.youtube.com/watch?v=' + video_id items = [] for index in range(self.vskytube.lst_encola.count()): items.append(self.vskytube.lst_encola.item(index).text()) existe = 'No' for i in items: if url == i: existe = 'Si' if existe == 'No': self.setclipboard() if Pafy(url): self.vskytube.lst_encola.addItem(url) self.vskytube.lineEdit.clear() else: self.vskytube.lineEdit.clear() self.setclipboard() QtGui.QMessageBox.about(self,'Alerta Link! ','Este Link ya fue agregado a la lista!' ) except: self.vskytube.lineEdit.setText('Link No Valido') self.setclipboard() def clipboard(self): global data data = QtGui.QApplication.clipboard() data = data.text() if len(data) == 11: item = ('http://www.youtube.com/watch?v=' + data) self.vskytube.lineEdit.setText(item) if self.vskytube.ck_lst_auto.isChecked(): self.add() timer = QtCore.QTimer() timer.stop() self.CapturaClip() if len(str(data).split('?v=')) == 2: data = str(data).split('?v=') if len(data) == 2: item = ('http://www.youtube.com/watch?v=' + data[1]) self.vskytube.lineEdit.setText(item) if self.vskytube.ck_lst_auto.isChecked(): self.add() timer = QtCore.QTimer() timer.stop() self.CapturaClip() else: timer = QtCore.QTimer() timer.stop() self.CapturaClip() def CapturaClip(self): if self.vskytube.ck_captura.isChecked(): global timer timer = QtCore.QTimer() timer.start(3000) timer.connect(timer,QtCore.SIGNAL("timeout()"), self.clipboard) self.vskytube.ck_lst_auto.setEnabled(True) else: self.vskytube.ck_lst_auto.setEnabled(False) self.vskytube.ck_lst_auto.setChecked(False) timer = QtCore.QTimer() self.setclipboard() timer.stop() def crea_directorio(self): if self.vskytube.btn_folder.text() == '>': self.oculta() self.resize(880,321) self.vskytube.treeView.setVisible(True) self.vskytube.lbl_perfil.setVisible(True) self.vskytube.btn_folder_2.setVisible(True) self.vskytube.btn_folder.setText('<') self.vskytube.btn_folder.setToolTip('Motrar Videos') if 'win32' in self.sistema() or 'win64' in self.sistema(): self.vskytube.lbl_perfil.setText((os.path.join (os.environ['USERPROFILE'],'videos'))) if 'darwin' in self.sistema(): self.vskytube.lbl_perfil.setText((os.path.join (os.environ['HOME'],'Movies'))) if 'linux' in self.sistema(): if os.path.isdir(os.path.join (os.environ['HOME'],'Movies')): self.vskytube.lbl_perfil.setText((os.path.join (os.environ['HOME'],'Movies'))) else: os.system('mkdir $HOME/Movies') self.vskytube.lbl_perfil.setText((os.path.join (os.environ['HOME'],'Movies'))) else: self.resize(585,121) self.vskytube.treeView.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_folder.setText('>') self.vskytube.btn_folder.setToolTip('Ocultar Videos') self.vskytube.lbl_perfil.setVisible(False) global fileSystemModel fileSystemModel = QtGui.QFileSystemModel(self.vskytube.treeView) fileSystemModel.setReadOnly(True) if 'win32' in self.sistema() or 'win64' in self.sistema(): fileSystemModel.setRootPath(str((os.path.join (os.environ['USERPROFILE'],'videos')))) indexRoot = fileSystemModel.index(fileSystemModel.rootPath()) self.vskytube.treeView.setModel(fileSystemModel) self.vskytube.treeView.setRootIndex(indexRoot) elif 'darwin' in self.sistema() or 'linux' in self.sistema(): fileSystemModel.setRootPath(str((os.path.join (os.environ['HOME'],'Movies')))) indexRoot = fileSystemModel.index(fileSystemModel.rootPath()) self.vskytube.treeView.setModel(fileSystemModel) self.vskytube.treeView.setRootIndex(indexRoot) self.vskytube.treeView.setColumnHidden(1,True) self.vskytube.treeView.setColumnHidden(2,True) self.vskytube.treeView.setColumnHidden(3,True) self.vskytube.treeView.setHeaderHidden(True) def crea_lista(self): if self.vskytube.btn_add.text() == '>': self.oculta() self.resize(880,321) self.vskytube.lst_encola.setVisible(True) self.vskytube.btn_add_lista.setVisible(True) self.vskytube.btn_add_video.setVisible(True) self.vskytube.btn_de_item.setVisible(True) self.vskytube.btn_add.setText('<') self.vskytube.btn_folder.setToolTip('Mostrar Lista') else: self.resize(585,121) self.vskytube.lst_encola.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_add_lista.setVisible(False) self.vskytube.btn_add_video.setVisible(False) self.vskytube.btn_de_item.setVisible(False) self.vskytube.btn_add.setText('>') self.vskytube.btn_folder.setToolTip('Ocultar Lista') def oculta(self): self.vskytube.lst_encola.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_add_lista.setVisible(False) self.vskytube.btn_add_video.setVisible(False) self.vskytube.btn_add.setText('>') self.vskytube.btn_folder.setToolTip('Ocultar Lista') self.vskytube.treeView.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.btn_folder.setText('>') self.vskytube.btn_folder.setToolTip('Ocultar Videos') self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_de_item.setVisible(False) self.vskytube.lbl_barr.setVisible(False) self.vskytube.p_bar.setVisible(False) def donapaypal(self): QtGui.QMessageBox.information(self,'Donacion PayPal','Gracias por conciderar hacer una donacion al proyecto SkyTube \n Todo el dinero seran utilizado para el Hosting \ \n Muchas Gracias =)') webbrowser.open('https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2K6Y3B8AG39DQ') @QtCore.pyqtSlot(QtCore.QModelIndex) def directorio(self, index): if self.vskytube.ck_vlc.isChecked(): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) self.directorio_vlc(filePath) return if 'win32' in self.sistema() or 'win64' in self.sistema(): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) os.startfile(filePath) if 'darwin' in self.sistema(): if os.path.isdir('/Applications/VLC.app'): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) os.system('open -a /Applications/VLC.app/Contents/MacOS/VLC "' + filePath + '"') else: QtGui.QMessageBox.about(self,'\nError VlC','Para poder reproducir los videos desde SkyTube necesitas VLC \n tus videos estan en la siguiente ruta:\n\n '\ + str((os.path.join (os.environ['HOME'],'Movies')))) if 'linux' in self.sistema(): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) self.process.start('xdg-open "' + filePath + '"') def directorio_vlc(self, video_vlc): if 'win32' in self.sistema() or 'win64' in self.sistema(): if os.path.isfile('c:\progra~1\VideoLAN\VLC\\vlc.exe'): video_vlc = video_vlc.replace('/', '\\') self.process.start('c:\progra~1\VideoLAN\VLC\\vlc.exe "' + video_vlc + '"') elif os.path.isfile('c:\progra~2\VideoLAN\VLC\\vlc.exe'): self.process.start('c:\progra~2\VideoLAN\VLC\\vlc.exe "' + video_vlc + '"') if 'darwin' in self.sistema(): if os.path.isdir('/Applications/VLC.app'): self.process.start('open -a /Applications/VLC.app/Contents/MacOS/VLC "' + video_vlc + '"') if 'linux' in self.sistema(): self.process.start('vlc "' + video_vlc + '"') def vlc(self): if os.path.isdir('/Applications/VLC.app') or os.path.isfile('/usr/bin/vlc') or os.path.isfile('c:\progra~1\VideoLAN\VLC\\vlc.exe') or os.path.isfile('c:\progra~2\VideoLAN\VLC\\vlc.exe'): self.vskytube.ck_vlc.setChecked(True) vlc_ok = QtGui.QIcon() vlc_ok.addPixmap(QtGui.QPixmap("imagenes/vlc_ok.png")) self.vskytube.ck_vlc.setIcon(vlc_ok) else: vlc_no = QtGui.QIcon() vlc_no.addPixmap(QtGui.QPixmap("imagenes/vlc.png")) self.vskytube.ck_vlc.setIcon(vlc_no) self.vskytube.ck_vlc.setEnabled(False) def vlc_checked(self): if self.vskytube.ck_vlc.isChecked(): vlc_ok = QtGui.QIcon() vlc_ok.addPixmap(QtGui.QPixmap("imagenes/vlc_ok.png")) self.vskytube.ck_vlc.setIcon(vlc_ok) else: vlc_no = QtGui.QIcon() vlc_no.addPixmap(QtGui.QPixmap("imagenes/vlc.png")) self.vskytube.ck_vlc.setIcon(vlc_no) def social_google(self): webbrowser.open('https://plus.google.com/114802605768559072519') def social_facebook(self): webbrowser.open('https://www.facebook.com/xskylarx') def social_twitter(self): webbrowser.open('https://www.twitter.com/xskylarx') def folder(self): if 'win32' in self.sistema() or 'win64' in self.sistema(): perfil = (os.path.join (os.environ['USERPROFILE'],'videos')) self.process.start('explorer ' + str(perfil)) if 'darwin' in self.sistema(): perfil = (os.path.join (os.environ['HOME'],'Movies')) self.process.start('open ' + str(perfil)) if 'linux' in self.sistema(): perfil = (os.path.join (os.environ['HOME'],'Movies')) self.process.start('xdg-open "' + perfil + '"') def descarga(self): try: self.vskytube.p_bar.setMinimum(0) if 'win32' in self.sistema() or 'win64' in self.sistema(): if self.formato() == 'mp3': if os.path.isfile('ffmpeg.exe'): pass else: respuesta = QtGui.QMessageBox.question(self, 'Descarga Mp3 ', 'Necesitas ffmpeg para descargar MP3 \n' 'Quieres descargarlo? ', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if respuesta == QtGui.QMessageBox.Yes: self.formato_combo() else: return if 'darwin' in self.sistema(): if self.formato() == 'mp3': if os.path.isfile('ffmpeg'): pass else: respuesta = QtGui.QMessageBox.question(self, 'Descarga Mp3 ', 'Necesitas ffmpeg para descargar MP3 \n' 'Quieres descargarlo? ', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if respuesta == QtGui.QMessageBox.Yes: self.formato_combo() else: return video =Pafy(url) if self.formato() == 'mp3': bestaudio = video.getbestaudio() size = bestaudio.get_filesize() titulo = bestaudio.title extension = bestaudio.extension desc = bestaudio.url else: stream = video.getbest(preftype=self.formato()) size = stream.get_filesize() titulo = stream.title extension = stream.extension desc = stream.url self.vskytube.lineEdit.setVisible(False) self.vskytube.btn_valida.setVisible(False) self.vskytube.label_7.setVisible(False) self.vskytube.btn_folder.setVisible(False) self.vskytube.treeView.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.groupBox.setVisible(False) self.vskytube.groupBox_2.setVisible(False) self.vskytube.btn_add.setVisible(False) self.vskytube.ck_lst_auto.setVisible(False) self.vskytube.ck_captura.setVisible(False) self.vskytube.lbl_desc.setStyleSheet("color:red;") self.vskytube.lbl_desc.setText('Descargando ...' + titulo ) self.vskytube.lbl_desc.setVisible(True) self.vskytube.lbl_barr.setVisible(True) self.vskytube.p_bar.setVisible(True) self.resize(489,82) QtGui.QMessageBox.about(self,'Empezando Descarga ... ','La descarga puede tardar varios minutos, dependiendo de tu conexion ...') titulo = str(titulo).replace('.','') titulo = str(titulo).replace('"','') titulo = str(titulo).replace(':','') titulo = str(titulo).replace('_','') titulo = str(titulo).replace('-','') titulo = str(titulo).replace(';','') titulo = str(titulo).replace('|','') titulo = str(titulo).replace("'",'') titulo = str(titulo).replace("+",'') titulo = str(titulo).replace("!",'') titulo = str(titulo).replace("/",'') titulo = str(titulo).replace("\\",'') titulo = str(titulo).replace("*",'') titulo = str(titulo).replace("#",'') titulo = str(titulo).replace("%",'') titulo = str(titulo).replace("&",'') titulo = str(titulo).replace("(",'') titulo = str(titulo).replace(")",'') titulo = str(titulo).replace("?",'') titulo = str(titulo).replace("¿",'') titulo = str(titulo).replace("¡",'') titulo = str(titulo).replace("[",'') titulo = str(titulo).replace("]",'') titulo = str(titulo).replace("{",'') titulo = str(titulo).replace("}",'') titulo = str(titulo).replace("=",'') titulo = str(titulo).replace("~",'') titulo = str(titulo).replace("<",'') titulo = str(titulo).replace(">",'') if 'win32' in self.sistema() or 'win64' in self.sistema(): filename = os.path.join (os.environ['USERPROFILE'],'videos') + '\\' + titulo + '.' + extension else: filename = os.path.join (os.environ['HOME'],'Movies') + '/' + titulo + '.' + extension urllib.request.urlretrieve(desc, filename,reporthook=self.funcionprogreso) if self.formato() == 'mp3': if 'win32' in self.sistema() or 'win64' in self.sistema(): m4a = os.path.join (os.environ['USERPROFILE'],'videos') + '\\' + titulo + '.' + extension mp3 = os.path.join (os.environ['USERPROFILE'],'videos') + '\\' + titulo + '.mp3' self.ejecutaExe('ffmpeg.exe -i \"%s\" -y \"%s\"' % (m4a , mp3)) os.remove(filename) if 'darwin' in self.sistema(): m4a = os.path.join (os.environ['HOME'],'Movies') + '/' + titulo + '.' + extension mp3 = os.path.join (os.environ['HOME'],'Movies') + '/' + titulo + '.mp3' self.ejecutaExe('./ffmpeg -i \"%s\" -y \"%s\"' % (m4a , mp3)) os.remove(filename) self.setclipboard() self.vskytube.lineEdit.clear() QtGui.QMessageBox.about(self,'Descarga Finalizada', ' Tu descarga Finalizo') self.crea_directorio() self.resize(880,321) QtCore.QCoreApplication.processEvents() self.muestra() except Exception as e: QtGui.QMessageBox.about(self,'Error Descarga', str(e)) def sistema(self): return sys.platform def muestra(self): QtCore.QCoreApplication.processEvents() self.vskytube.lineEdit.setVisible(True) self.vskytube.btn_valida.setVisible(True) self.vskytube.label_7.setVisible(True) self.vskytube.btn_folder.setVisible(True) self.vskytube.groupBox_2.setVisible(True) self.vskytube.btn_add.setVisible(True) self.vskytube.ck_lst_auto.setVisible(True) self.vskytube.ck_captura.setVisible(True) self.vskytube.lbl_desc.setVisible(False) self.vskytube.groupBox.setVisible(False) self.vskytube.lbl_barr.setVisible(False) self.vskytube.p_bar.setVisible(False) self.vskytube.lineEdit.clear() def formato(self): formato = self.vskytube.f_box.currentText() return formato def valida_descarga(self): try: url = '' for index in range(self.vskytube.lst_encola.count()): url = self.vskytube.lst_encola.item(index).text() if url == '': QtGui.QMessageBox.about(self,'Error Lista vacia','No hay Links para procesar') else: self.descarga_lista() except Exception as e: QtGui.QMessageBox.about(self,'Error en Link ','El Link : ' + url + ' No existe..\n Se eliminara de la lista..\n Por favor Vuelve a descargar la lista ') def valida_lista(self): try: self.vskytube.groupBox.setVisible(False) self.vskytube.lbl_imagen.setText('sin imagen') if os.path.isfile(os.path.dirname(sys.executable)+ '\\skytube.jpg'): os.remove(os.path.dirname(sys.executable) + '\\skytube.jpg') if os.path.isfile('/tmp/skytube.jpg'): os.remove('/tmp/skytube.jpg') item = self.vskytube.lst_encola.currentItem() url = item.text() video = Pafy(url) best = video.getbest(preftype=self.formato()) if self.formato() == 'mp3': self.vskytube.lbl_calidad.setText(' Extencion: mp3') else: self.vskytube.lbl_calidad.setText(best.resolution + ' Extencion: ' + best.extension) self.vskytube.groupBox.setTitle(video.title) self.vskytube.lbl_autor.setText(video.author) self.vskytube.lbl_duracion.setText(video.duration) self.vskytube.lbl_id.setText(video.videoid) self.vskytube.lbl_rating.setText(str(video.rating)) self.vskytube.lbl_visto.setText(str(video.viewcount)) self.vskytube.btn_valida_2.setVisible(False) url = video.thumb if 'win32' in self.sistema() or 'win64' in self.sistema(): file = ('skytube.jpg') if 'linux' in self.sistema(): file = ('/tmp/skytube.jpg') if 'darwin' in self.sistema(): file = ('skytube.jpg') urllib.request.urlretrieve(url, file) if 'win32' in self.sistema() or 'win64' in self.sistema(): img = (os.path.dirname(sys.executable) + '\skytube.jpg') if 'linux' in self.sistema(): img = ('/tmp/skytube.jpg') if 'darwin' in self.sistema(): img = ('/skytube.jpg') self.vskytube.lbl_imagen.setPixmap(QtGui.QPixmap(img)) self.vskytube.groupBox.setVisible(True) except Exception as e: self.vskytube.groupBox.setVisible(False) QtGui.QMessageBox.about(self,'Error en Link ','El Link : ' + item.text() + ' No existe..\n Se eliminara de la lista..' + str(e)) self.elimina_item() def valida(self): try: self.oculta() self.vskytube.groupBox.setVisible(False) self.resize(585,121) self.vskytube.lbl_imagen.setText('sin imagen') if os.path.isfile(os.path.dirname(sys.executable)+ '\\skytube.jpg'): os.remove(os.path.dirname(sys.executable) + '\\skytube.jpg') if os.path.isfile('/tmp/skytube.jpg'): os.remove('/tmp/skytube.jpg') self.vskytube.groupBox.setVisible(True) video_id = self.vskytube.lineEdit.text() if len(video_id) == 11: url= 'http://www.youtube.com/watch?v=' + video_id if video_id.split('?v=') == 1: video_id = video_id.split('?v=') if len(video_id) == 1: global url url= 'http://www.youtube.com/watch?v=' + video_id[1] else: global url url= 'http://www.youtube.com/watch?v=' + video_id global video video = Pafy(url) best = video.getbest(preftype=self.formato()) if self.formato() == 'mp3': self.vskytube.lbl_calidad.setText(' Extencion: mp3') else: self.vskytube.lbl_calidad.setText(best.resolution + ' Extencion: ' + best.extension) self.vskytube.groupBox.setTitle(video.title) self.vskytube.lbl_autor.setText(video.author) self.vskytube.lbl_duracion.setText(video.duration) self.vskytube.lbl_id.setText(video.videoid) self.vskytube.lbl_rating.setText(str(video.rating)) self.vskytube.lbl_visto.setText(str(video.viewcount)) self.resize(579,288) self.vskytube.btn_valida_2.setVisible(True) url_img = video.thumb if 'win32' in self.sistema() or 'win64' in self.sistema(): file = ('skytube.jpg') if 'linux' in self.sistema(): file = ('/tmp/skytube.jpg') if 'darwin' in self.sistema(): file = ('skytube.jpg') urllib.request.urlretrieve(url_img, file) if 'win32' in self.sistema() or 'win64' in self.sistema(): img = (os.path.dirname(sys.executable) + '\skytube.jpg') if 'linux' in self.sistema(): img = ('/tmp/skytube.jpg') if 'darwin' in self.sistema(): img = ('/skytube.jpg') self.vskytube.lbl_imagen.setPixmap(QtGui.QPixmap(img)) except Exception as e: QtGui.QMessageBox.about(self,'Error SkyTube ', ' No existe el video favor de verificar.') QtGui.QMessageBox.about(self,'Error SkyTube ', str(e))
class v_skytube(QtGui.QDialog): def __init__(self, parent=None): QtGui.QWidget.__init__(self,parent) self.vskytube = Ui_Form() self.vskytube.setupUi(self) self.resize(585,121) self.vskytube.label_7.setStyleSheet("color:grey;") self.setWindowTitle('SkyTube Download v.1.4') self.setMaximumSize(880,321) self.setMinimumSize(489,48) self.vskytube.groupBox.setVisible(False) self.connect(self.vskytube.btn_valida_2,QtCore.SIGNAL('clicked()'), self.descarga) self.connect(self.vskytube.btn_valida,QtCore.SIGNAL('clicked()'), self.valida) self.vskytube.lbl_desc.setVisible(False) self.vskytube.ck_lst_auto.setEnabled(False) self.connect(self.vskytube.btn_folder,QtCore.SIGNAL('clicked()'), self.crea_directorio) self.vskytube.treeView.doubleClicked.connect(self.directorio) self.vskytube.lineEdit.returnPressed.connect(self.valida) self.vskytube.treeView.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.setStyleSheet("background-image: url('imagenes/skylogo.png');") self.connect(self.vskytube.btn_folder_2,QtCore.SIGNAL('clicked()'), self.folder) self.connect(self.vskytube.btn_add_video, QtCore.SIGNAL('clicked()'), self.add) self.connect(self.vskytube.btn_add, QtCore.SIGNAL('clicked()'), self.crea_lista) self.connect(self.vskytube.btn_paypal, QtCore.SIGNAL('clicked()'), self.donapaypal) self.connect(self.vskytube.ck_captura, QtCore.SIGNAL('stateChanged(int)'), self.CapturaClip) self.connect(self.vskytube.ck_vlc, QtCore.SIGNAL('stateChanged(int)'), self.vlc_checked) self.connect(self.vskytube.lst_encola, QtCore.SIGNAL('itemClicked(QListWidgetItem*)'), self.valida_lista) self.connect(self.vskytube.lst_encola, QtCore.SIGNAL('itemDoubleClicked(QListWidgetItem*)'), self.elimina_item) self.connect(self.vskytube.btn_de_item, QtCore.SIGNAL('clicked()'), self.elimina_item) self.connect(self.vskytube.btn_add_lista, QtCore.SIGNAL('clicked()'), self.valida_descarga) self.connect(self.vskytube.btn_google, QtCore.SIGNAL('clicked()'), self.social_google) self.connect(self.vskytube.btn_twitter, QtCore.SIGNAL('clicked()'), self.social_twitter) self.connect(self.vskytube.btn_facebook, QtCore.SIGNAL('clicked()'), self.social_facebook) self.vskytube.lineEdit.setPlaceholderText(' Escribe o pega la direccion de tu video y da enter ..') self.oculta() self.process = QtCore.QProcess() self.setclipboard() self.vlc() # revisado Linux, Windows def setclipboard(self): global data data = QtGui.QApplication.clipboard() data = data.setText('skylar') #revisado Linux, Windows def elimina_item(self): try: for index in range(self.vskytube.lst_encola.count()): if self.vskytube.lst_encola.currentItem().text() == self.vskytube.lst_encola.item(index).text(): respuesta = QtGui.QMessageBox.question(self, 'Elimina Link ', 'Estas seguro de Eliminar el Link \n' + self.vskytube.lst_encola.item(index).text() + ' ?', QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) if respuesta == QtGui.QMessageBox.Yes: item = self.vskytube.lst_encola.takeItem(index) del item self.vskytube.groupBox.setVisible(False) except: QtGui.QMessageBox.about(self,'Error Link','No hay Link Que eliminar') def descarga_lista(self): self.vskytube.ck_captura.setChecked(False) QtGui.QMessageBox.about(self,'Comenzando Descarga','Tu lista empezara a Descargarce, esto va a tardar varios minutos.') items = [] for index in range(self.vskytube.lst_encola.count()): items.append(self.vskytube.lst_encola.item(index).text()) url = str(items) url = url.replace('[','') url = url.replace(']','') url = url.replace("'","") url = url.replace(" ","") if 'win32' or 'win64' in self.sistema(): os.system('skytubec.exe ' + url + ' ' + self.formato()) if 'darwin' in self.sistema(): os.system('skytubec.exe ' + url) if 'linux' in self.sistema(): os.system('xterm -e "skytubec ' + url + ' ' + self.formato() + '"') QtGui.QMessageBox.about(self,'Descarga Completada', 'La Lista se Descargo Correctamente..') self.vskytube.groupBox.setVisible(False) self.crea_directorio() self.vskytube.lst_encola.clear() def add(self): try: video_id = self.vskytube.lineEdit.text() if len(video_id) == 11: url= 'http://www.youtube.com/watch?v=' + video_id elif len(str(video_id).split('?v=')) == 2: video_id = video_id.split('?v=') else: self.setclipboard() self.vskytube.lineEdit.clear() QtGui.QMessageBox.about(self,'Alerta Link! ','Link No valido!' ) return if len(video_id) == 2: url= 'http://www.youtube.com/watch?v=' + video_id[1] else: url= 'http://www.youtube.com/watch?v=' + video_id items = [] for index in range(self.vskytube.lst_encola.count()): items.append(self.vskytube.lst_encola.item(index).text()) existe = 'No' for i in items: if url == i: existe = 'Si' if existe == 'No': self.setclipboard() if Pafy(url): self.vskytube.lst_encola.addItem(url) self.vskytube.lineEdit.clear() else: self.vskytube.lineEdit.clear() self.setclipboard() QtGui.QMessageBox.about(self,'Alerta Link! ','Este Link ya fue agregado a la lista!' ) except: self.vskytube.lineEdit.setText('Link No Valido') self.setclipboard() def clipboard(self): global data data = QtGui.QApplication.clipboard() data = data.text() if len(data) == 11: item = ('http://www.youtube.com/watch?v=' + data) self.vskytube.lineEdit.setText(item) if self.vskytube.ck_lst_auto.isChecked(): self.add() timer = QtCore.QTimer() timer.stop() self.CapturaClip() if len(str(data).split('?v=')) == 2: data = str(data).split('?v=') if len(data) == 2: item = ('http://www.youtube.com/watch?v=' + data[1]) self.vskytube.lineEdit.setText(item) if self.vskytube.ck_lst_auto.isChecked(): self.add() timer = QtCore.QTimer() timer.stop() self.CapturaClip() else: timer = QtCore.QTimer() timer.stop() self.CapturaClip() def CapturaClip(self): if self.vskytube.ck_captura.isChecked(): global timer timer = QtCore.QTimer() timer.start(3000) timer.connect(timer,QtCore.SIGNAL("timeout()"), self.clipboard) self.vskytube.ck_lst_auto.setEnabled(True) else: self.vskytube.ck_lst_auto.setEnabled(False) self.vskytube.ck_lst_auto.setChecked(False) timer = QtCore.QTimer() self.setclipboard() timer.stop() def crea_directorio(self): if self.vskytube.btn_folder.text() == '>': self.oculta() self.resize(880,321) self.vskytube.treeView.setVisible(True) self.vskytube.lbl_perfil.setVisible(True) self.vskytube.btn_folder_2.setVisible(True) self.vskytube.btn_folder.setText('<') self.vskytube.btn_folder.setToolTip('Motrar Videos') if 'win32' or 'win64' in self.sistema(): self.vskytube.lbl_perfil.setText((os.path.join (os.environ['USERPROFILE'],'videos'))) if 'darwin' in self.sistema(): self.vskytube.lbl_perfil.setText((os.path.join (os.environ['HOME'],'Movies'))) if 'linux' in self.sistema(): if os.path.isdir(os.path.join (os.environ['HOME'],'Movies')): self.vskytube.lbl_perfil.setText((os.path.join (os.environ['HOME'],'Movies'))) else: os.system('mkdir $HOME/Movies') self.vskytube.lbl_perfil.setText((os.path.join (os.environ['HOME'],'Movies'))) else: self.resize(585,121) self.vskytube.treeView.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_folder.setText('>') self.vskytube.btn_folder.setToolTip('Ocultar Videos') self.vskytube.lbl_perfil.setVisible(False) global fileSystemModel fileSystemModel = QtGui.QFileSystemModel(self.vskytube.treeView) fileSystemModel.setReadOnly(True) if 'win32' or 'win64' in self.sistema(): fileSystemModel.setRootPath(str((os.path.join (os.environ['USERPROFILE'],'videos')))) indexRoot = fileSystemModel.index(fileSystemModel.rootPath()) self.vskytube.treeView.setModel(fileSystemModel) self.vskytube.treeView.setRootIndex(indexRoot) elif 'darwin' or 'linux' in self.sistema(): fileSystemModel.setRootPath(str((os.path.join (os.environ['HOME'],'Movies')))) indexRoot = fileSystemModel.index(fileSystemModel.rootPath()) self.vskytube.treeView.setModel(fileSystemModel) self.vskytube.treeView.setRootIndex(indexRoot) self.vskytube.treeView.setColumnHidden(1,True) self.vskytube.treeView.setColumnHidden(2,True) self.vskytube.treeView.setColumnHidden(3,True) self.vskytube.treeView.setHeaderHidden(True) def crea_lista(self): if self.vskytube.btn_add.text() == '>': self.oculta() self.resize(880,321) self.vskytube.lst_encola.setVisible(True) self.vskytube.btn_add_lista.setVisible(True) self.vskytube.btn_add_video.setVisible(True) self.vskytube.btn_de_item.setVisible(True) self.vskytube.btn_add.setText('<') self.vskytube.btn_folder.setToolTip('Mostrar Lista') else: self.resize(585,121) self.vskytube.lst_encola.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_add_lista.setVisible(False) self.vskytube.btn_add_video.setVisible(False) self.vskytube.btn_de_item.setVisible(False) self.vskytube.btn_add.setText('>') self.vskytube.btn_folder.setToolTip('Ocultar Lista') def oculta(self): self.vskytube.lst_encola.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_add_lista.setVisible(False) self.vskytube.btn_add_video.setVisible(False) self.vskytube.btn_add.setText('>') self.vskytube.btn_folder.setToolTip('Ocultar Lista') self.vskytube.treeView.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.btn_folder.setText('>') self.vskytube.btn_folder.setToolTip('Ocultar Videos') self.vskytube.lbl_perfil.setVisible(False) self.vskytube.btn_de_item.setVisible(False) def donapaypal(self): QtGui.QMessageBox.information(self,'Donacion PayPal','Gracias por conciderar hacer una donacion al proyecto SkyTube \n Todo el dinero seran utilizado para el Hosting \ \n Muchas Gracias =)') webbrowser.open('https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=2K6Y3B8AG39DQ') @QtCore.pyqtSlot(QtCore.QModelIndex) def directorio(self, index): if self.vskytube.ck_vlc.isChecked(): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) self.directorio_vlc(filePath) return if 'win32' or 'win64' in self.sistema(): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) os.startfile(filePath) if 'darwin' in self.sistema(): if os.path.isdir('/Applications/VLC.app'): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) os.system('open -a /Applications/VLC.app/Contents/MacOS/VLC "' + filePath + '"') else: QtGui.QMessageBox.about(self,'\nError VlC','Para poder reproducir los videos desde SkyTube necesitas VLC \n tus videos estan en la siguiente ruta:\n\n '\ + str((os.path.join (os.environ['HOME'],'Movies')))) if 'linux' in self.sistema(): indexItem = fileSystemModel.index(index.row(), 0, index.parent()) filePath = fileSystemModel.filePath(indexItem) self.process.start('xdg-open "' + filePath + '"') def directorio_vlc(self, video_vlc): if 'win32' or 'win64' in self.sistema(): if os.path.isfile('c:\progra~1\VideoLAN\VLC\\vlc.exe'): video_vlc = video_vlc.replace('/', '\\') self.process.start('c:\progra~1\VideoLAN\VLC\\vlc.exe "' + video_vlc + '"') elif os.path.isfile('c:\progra~2\VideoLAN\VLC\\vlc.exe'): self.process.start('c:\progra~2\VideoLAN\VLC\\vlc.exe "' + video_vlc + '"') if 'darwin' in self.sistema(): if os.path.isdir('/Applications/VLC.app'): self.process.start('open -a /Applications/VLC.app/Contents/MacOS/VLC "' + video_vlc + '"') if 'linux' in self.sistema(): self.process.start('vlc "' + video_vlc + '"') def vlc(self): if os.path.isdir('/Applications/VLC.app') or os.path.isfile('/usr/bin/vlc') or os.path.isfile('c:\progra~1\VideoLAN\VLC\\vlc.exe') or os.path.isfile('c:\progra~2\VideoLAN\VLC\\vlc.exe'): self.vskytube.ck_vlc.setChecked(True) vlc_ok = QtGui.QIcon() vlc_ok.addPixmap(QtGui.QPixmap("imagenes/vlc_ok.png")) self.vskytube.ck_vlc.setIcon(vlc_ok) else: vlc_no = QtGui.QIcon() vlc_no.addPixmap(QtGui.QPixmap("imagenes/vlc.png")) self.vskytube.ck_vlc.setIcon(vlc_no) self.vskytube.ck_vlc.setEnabled(False) def vlc_checked(self): if self.vskytube.ck_vlc.isChecked(): vlc_ok = QtGui.QIcon() vlc_ok.addPixmap(QtGui.QPixmap("imagenes/vlc_ok.png")) self.vskytube.ck_vlc.setIcon(vlc_ok) else: vlc_no = QtGui.QIcon() vlc_no.addPixmap(QtGui.QPixmap("imagenes/vlc.png")) self.vskytube.ck_vlc.setIcon(vlc_no) def social_google(self): webbrowser.open('https://plus.google.com/114802605768559072519') def social_facebook(self): webbrowser.open('https://www.facebook.com/xskylarx') def social_twitter(self): webbrowser.open('https://www.twitter.com/xskylarx') def folder(self): if 'win32' or 'win64' in self.sistema(): perfil = (os.path.join (os.environ['USERPROFILE'],'videos')) self.process.start('explorer ' + str(perfil)) if 'darwin' in self.sistema(): perfil = (os.path.join (os.environ['HOME'],'Movies')) self.process.start('open ' + str(perfil)) if 'linux' in self.sistema(): perfil = (os.path.join (os.environ['HOME'],'Movies')) self.process.start('xdg-open "' + perfil + '"') def descarga(self): try: self.vskytube.lineEdit.setVisible(False) self.vskytube.btn_valida.setVisible(False) self.vskytube.label_7.setVisible(False) self.vskytube.btn_folder.setVisible(False) self.vskytube.treeView.setVisible(False) self.vskytube.btn_folder_2.setVisible(False) self.vskytube.lbl_perfil.setVisible(False) self.vskytube.groupBox.setVisible(False) self.vskytube.groupBox_2.setVisible(False) self.vskytube.btn_add.setVisible(False) self.vskytube.ck_lst_auto.setVisible(False) self.vskytube.ck_captura.setVisible(False) self.vskytube.lbl_desc.setStyleSheet("color:red;") self.vskytube.lbl_desc.setText('Tu video se esta descargado, puede tardar varios minutos ...') self.vskytube.lbl_desc.setVisible(True) self.resize(489,48) QtGui.QMessageBox.about(self,'Empezando Descarga ... ','La descarga puede tardar varios minutos, dependiendo de tu conexion ...') global url if 'win32' or 'win64' in self.sistema(): os.system('skytubec.exe ' + url + ' ' + self.formato()) if 'darwin' in self.sistema(): os.system('python3 skytubec.py ' + url + ' ' + self.formato()) if 'linux' in self.sistema(): os.system('xterm -e "skytubec ' + url + ' ' + self.formato() + '"') self.setclipboard() self.vskytube.lineEdit.clear() QtGui.QMessageBox.about(self,'Descarga Finalizada', ' Tu descarga Finalizo') self.crea_directorio() self.resize(880,321) self.muestra() except Exception as e: QtGui.QMessageBox.about(self,'Error Descarga', str(e)) def sistema(self): return sys.platform def muestra(self): self.vskytube.lineEdit.setVisible(True) self.vskytube.btn_valida.setVisible(True) self.vskytube.label_7.setVisible(True) self.vskytube.btn_folder.setVisible(True) self.vskytube.groupBox_2.setVisible(True) self.vskytube.btn_add.setVisible(True) self.vskytube.ck_lst_auto.setVisible(True) self.vskytube.ck_captura.setVisible(True) self.vskytube.lbl_desc.setVisible(False) self.vskytube.groupBox.setVisible(False) self.vskytube.lineEdit.clear() def formato(self): if self.vskytube.r_3gp.isChecked(): return '3gp' if self.vskytube.r_flv.isChecked(): return 'flv' if self.vskytube.r_webm.isChecked(): return 'webm' if self.vskytube.r_mp4.isChecked(): return 'mp4' def valida_descarga(self): try: url = '' for index in range(self.vskytube.lst_encola.count()): url = self.vskytube.lst_encola.item(index).text() if url == '': QtGui.QMessageBox.about(self,'Error Lista vacia','No hay Links para procesar') else: self.descarga_lista() except Exception as e: QtGui.QMessageBox.about(self,'Error en Link ','El Link : ' + url + ' No existe..\n Se eliminara de la lista..\n Por favor Vuelve a descargar la lista ') def valida_lista(self): try: self.vskytube.groupBox.setVisible(False) self.vskytube.lbl_imagen.setText('sin imagen') if os.path.isfile(os.path.dirname(sys.executable)+ '\\skytube.jpg'): os.remove(os.path.dirname(sys.executable) + '\\skytube.jpg') if os.path.isfile('/tmp/skytube.jpg'): os.remove('/tmp/skytube.jpg') item = self.vskytube.lst_encola.currentItem() url = item.text() video = Pafy(url) best = video.getbest(preftype=self.formato()) self.vskytube.lbl_calidad.setText(best.resolution + ' Extencion: ' + best.extension) self.vskytube.groupBox.setTitle(video.title) self.vskytube.lbl_autor.setText(video.author) self.vskytube.lbl_duracion.setText(video.duration) self.vskytube.lbl_id.setText(video.videoid) self.vskytube.lbl_rating.setText(str(video.rating)) self.vskytube.lbl_visto.setText(str(video.viewcount)) self.vskytube.btn_valida_2.setVisible(False) url = video.thumb if 'win32' or 'win64' in self.sistema(): file = ('skytube.jpg') if 'linux' in self.sistema(): file = ('/tmp/skytube.jpg') urllib.request.urlretrieve(url, file) if 'win32' or 'win64' in self.sistema(): img = (os.path.dirname(sys.executable) + '\skytube.jpg') if 'linux' in self.sistema(): img = ('/tmp/skytube.jpg') self.vskytube.lbl_imagen.setPixmap(QtGui.QPixmap(img)) self.vskytube.groupBox.setVisible(True) except Exception as e: self.vskytube.groupBox.setVisible(False) QtGui.QMessageBox.about(self,'Error en Link ','El Link : ' + item.text() + ' No existe..\n Se eliminara de la lista..' + str(e)) self.elimina_item() def valida(self): try: self.oculta() self.vskytube.groupBox.setVisible(False) self.resize(585,121) self.vskytube.lbl_imagen.setText('sin imagen') if os.path.isfile(os.path.dirname(sys.executable)+ '\\skytube.jpg'): os.remove(os.path.dirname(sys.executable) + '\\skytube.jpg') if os.path.isfile('/tmp/skytube.jpg'): os.remove('/tmp/skytube.jpg') self.vskytube.groupBox.setVisible(True) video_id = self.vskytube.lineEdit.text() if len(video_id) == 11: url= 'http://www.youtube.com/watch?v=' + video_id if video_id.split('?v=') == 1: video_id = video_id.split('?v=') if len(video_id) == 1: global url url= 'http://www.youtube.com/watch?v=' + video_id[1] else: global url url= 'http://www.youtube.com/watch?v=' + video_id global video video = Pafy(url) best = video.getbest(preftype=self.formato()) self.vskytube.lbl_calidad.setText(best.resolution + ' Extencion: ' + best.extension) self.vskytube.groupBox.setTitle(video.title) self.vskytube.lbl_autor.setText(video.author) self.vskytube.lbl_duracion.setText(video.duration) self.vskytube.lbl_id.setText(video.videoid) self.vskytube.lbl_rating.setText(str(video.rating)) self.vskytube.lbl_visto.setText(str(video.viewcount)) self.resize(579,288) self.vskytube.btn_valida_2.setVisible(True) url_img = video.thumb if 'win32' or 'win64' in self.sistema(): file = ('skytube.jpg') if 'linux' in self.sistema(): file = ('/tmp/skytube.jpg') urllib.request.urlretrieve(url_img, file) if 'win32' or 'win64' in self.sistema(): img = (os.path.dirname(sys.executable) + '\skytube.jpg') if 'linux' in self.sistema(): img = ('/tmp/skytube.jpg') self.vskytube.lbl_imagen.setPixmap(QtGui.QPixmap(img)) except Exception as e: QtGui.QMessageBox.about(self,'Error SkyTube ', ' No existe el video favor de verificar.') QtGui.QMessageBox.about(self,'Error SkyTube ', str(e))