Descarga música de GoEar!

Hace mucho tiempo desarrollé un pequeño programa para descargar música de GoEar y luego de ver un post de Cyb3rPunk me di cuenta que el programa ya no funcionaba asi decidi actualizarlo y aqui lo tienen funciona perfectamente

import re
import urllib2
from xml.dom import minidom

def extract_id(url_song):
	id_song = re.search('listen/?[a-z0-9]*/?', url_song)
	id_song = str(id_song.group(0))[7:14]
	return id_song    	 

def extract_path(url_song):
	id_song = extract_id(url_song)
	#antiguas formas para descargar las canciones pero la hellocalsec a veces funciona
	#url_xml = "http://www.goear.com/files/xmlfiles/" + id_song[0:1] + "/secm" + id_song + ".xml"
	#url_xml = "http://www.goear.com/hellocalsec.php?f="+id_song
	url_xml = "http://www.goear.com/localtrackhost.php?f="+id_song
	response = urllib2.urlopen(url_xml)
	xml_data = minidom.parse(response)
	response.close()
	url_data = xml_data.toxml()
	
	inicio_path = url_data.find('path=')
	fin_path = url_data.find('.mp3')
	path = url_data[inicio_path+6: fin_path+4]
	#print "+++"+path
	inicio_artist = url_data.find('artist=')
	fin_artist = url_data.find('bild=')
	artist = url_data[inicio_artist+8: fin_artist-2]
	print "Artist="+artist
	inicio_title = url_data.find('title=')
	fin_title = url_data.find('/><song')	
	title = url_data[inicio_title+7: fin_title-10]
	print "Title="+title  
	song_name = artist+' - '+title+'.mp3'
	return (path, song_name)
	
def download(pgbDownload, URL):
	path ,song_name = extract_path(URL)
	song = open(song_name, 'wb')
	response = urllib2.urlopen(path)
	headers = response.info()
	size_file = int(headers['Content-Length'])	
	song.write(response.read(1024))
	i = 1024
	pgbDownload.SetRange(size_file)
	pgbDownload.SetValue(i)
	while i <= size_file:
		song.write(response.read(1024))
		i += 1024
		pgbDownload.SetValue(i)

Este archivo lo guardan como my_goear.py

y su entorno gráfico:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# generated by wxGlade 0.6.3 on Wed Jul  8 13:34:08 2009

import wx
from my_goear import *
# begin wxGlade: extracode
# end wxGlade

class MyFrame(wx.Frame):
    def __init__(self, *args, **kwds):
        # begin wxGlade: MyFrame.__init__
        kwds["style"] = wx.ICONIZE|wx.CAPTION|wx.MINIMIZE|wx.CLOSE_BOX|wx.MINIMIZE_BOX|wx.MAXIMIZE_BOX|wx.SYSTEM_MENU|wx.RESIZE_BORDER|wx.CLIP_CHILDREN
        wx.Frame.__init__(self, *args, **kwds)
        self.label_1 = wx.StaticText(self, -1, "URL Goear.com")
        self.txtURL = wx.TextCtrl(self, -1, "")
        self.btnNew = wx.Button(self, wx.ID_NEW, "")
        self.label_2 = wx.StaticText(self, -1, "by Tabris!")
        self.pgbDownload = wx.Gauge(self, -1, 10)
        self.btnDownload = wx.Button(self, -1, "Descargar")
        self.btnDownload.Bind(wx.EVT_BUTTON, self.click_en_btnDownload)
        self.btnNew.Bind(wx.EVT_BUTTON, self.click_en_btnNew)
        
        self.__set_properties()
        self.__do_layout()
        # end wxGlade
    def click_en_btnDownload(self, event):
        url = self.txtURL.GetValue()
        print url
        download(self.pgbDownload, url)

    def click_en_btnNew(self, event):
        self.txtURL.SetValue('')
        self.pgbDownload.SetRange(0)
        self.pgbDownload.SetValue(0)
        
    def __set_properties(self):
        # begin wxGlade: MyFrame.__set_properties
        self.SetTitle("My Goear")
        #_icon = wx.EmptyIcon()
        #_icon.CopyFromBitmap(wx.Bitmap(u"afi.jpg", wx.BITMAP_TYPE_ANY))
        #self.SetIcon(_icon)
        self.SetSize((490, 68))
        self.label_1.SetMinSize((100, 17))
        self.txtURL.SetMinSize((200, 27))
        # end wxGlade
    

    def __do_layout(self):
        # begin wxGlade: MyFrame.__do_layout
        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        grid_sizer_1 = wx.GridSizer(2, 3, 0, 0)
        grid_sizer_1.Add(self.label_1, 0, wx.ADJUST_MINSIZE|wx.FIXED_MINSIZE, 0)
        grid_sizer_1.Add(self.txtURL, 0, wx.ALIGN_CENTER_VERTICAL|wx.ADJUST_MINSIZE, 0)
        grid_sizer_1.Add(self.btnNew, 0, wx.ADJUST_MINSIZE, 0)
        grid_sizer_1.Add(self.label_2, 0, wx.ADJUST_MINSIZE, 0)
        grid_sizer_1.Add(self.pgbDownload, 0, wx.EXPAND|wx.ADJUST_MINSIZE, 0)
        grid_sizer_1.Add(self.btnDownload, 0, wx.ADJUST_MINSIZE, 0)
        sizer_1.Add(grid_sizer_1, 1, 0, 0)
        self.SetSizer(sizer_1)
        self.Layout()
        self.SetSize((490, 68))
        # end wxGlade

# end of class MyFrame

if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    frmDialog = MyFrame(None, -1, "")
    app.SetTopWindow(frmDialog)
    frmDialog.Show()
    app.MainLoop()

y este lo guardan como wxMyGoear.py(por cierto tienen que tener instalada la librería wx, que se instala con)
sudo apt-get install python-wxgtk2.8
Para ejecutarlo desde una consola:
python wxMyGoear.py

o si desean pueden descargar el script: Descarga

Anuncios

0 Responses to “Descarga música de GoEar!”



  1. Dejar un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s





A %d blogueros les gusta esto: