Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 09/07/2011, à 18:03

toitoinebzh

[script] telecharger de la musique sur jamendo

bonjour,

je vous présente un script que j'ai fait en python
il sert tout simplement à télécharger la musique, les albums, les playlists, les artistes ainsi que les images associés présents sur jamendo
vous pouvez aussi télécharger le top d'un classement

par exemple vous pouvez télécharger en une ligne de code, tout les albums avec leurs couvertures de plusieurs artistes

je débute en programmation et c'est mon premier vrai programme qui sert à quelque chose
je suis ouvert a toutes critiques, je pense que le programme pourrait être améliorer
il y a par exemple des fonctions qui se ressemblent pas mal
mais je n'ai plus de temps a consacrer a ce projet

j'ai tenté de faire l'interface graphique avec quelques soucis
http://forum.ubuntu-fr.org/viewtopic.php?id=552391
http://forum.ubuntu-fr.org/viewtopic.php?id=542551
si j'ai un peu de temps j'essayerai de m'y remettre


voila le code (vous avez besoin de regarder uniquement les 10 dernières lignes pour pouvoir l'utiliser)

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
#       toitoinebzh@jabber.fr
#       This program is free software; you can redistribute it and/or modify
#       it under the terms of the GNU General Public License as published by
#       the Free Software Foundation; either version 2 of the License, or
#       (at your option) any later version.
#
#       This program is distributed in the hope that it will be useful,
#       but WITHOUT ANY WARRANTY; without even the implied warranty of
#       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#       GNU General Public License for more details.
#
#       You should have received a copy of the GNU General Public License
#       along with this program; if not, write to the Free Software
#       Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#       MA 02110-1301, USA.
#
#

# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#    Functions
# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def control_url(url):
    """ Function doc

    @param PARAM: DESCRIPTION
    @return RETURN: DESCRIPTION
    """
    # example : url='http://www.jamendo.com/fr/track/635693'
    url=str(url)
    info=url.split('/')
    list_format=['playlist','album','artist','track']
    if info[-2] in list_format    :
        return [info[-2], info[-1]]
    else:
        return  [None,None] #'Mauvais format url'
        
def download_url(url,directory):
    """ Function doc

    @param PARAM: DESCRIPTION
    @return RETURN: DESCRIPTION
    """
    
    data=control_url(url)  # example : data = ['track','1234']  ; data = ['artist', 'echo.lali']
    #print data
    
    if data[0]=='playlist':
        obj=Playlist(data[1])
        obj.download(directory)
    elif data[0]=='album':
        obj=Album(data[1])
        obj.download(directory)
    elif data[0]=='artist':
        obj=Artist(data[1])
        obj.download(directory)
    elif data[0]=='track':
        obj=Music(data[1])
        obj.download(directory)
    else :
        print 'Mauvais format url'
        pass

def download_top(data,directory):
    """ Function doc

    @param PARAM: DESCRIPTION
    @return RETURN: DESCRIPTION
    """
    # example : data = ['track','?n=2&order=ratingmonth_desc']
    
    if data[0]=='playlist':
        obj=Top_Playlist(data[1])
        obj.download(directory)
    elif data[0]=='album':
        obj=Top_Album(data[1])
        obj.download(directory)
    elif data[0]=='artist':
        obj=Top_Artist(data[1])
        obj.download(directory)
    elif data[0]=='track':
        obj=Top_Music(data[1])
        obj.download(directory)
    else :
        print 'Mauvais format url'
        pass
    
def pause():
    """ Function doc

    @param PARAM: DESCRIPTION
    @return RETURN: DESCRIPTION
    """
    
    Pause=1.1  # second
    time.sleep(Pause)

def image_size():
    """ Function doc

    @param PARAM: DESCRIPTION
    @return RETURN: DESCRIPTION
    """
    # 100 200 300 400 500 600 
    return '600'  # max 600 ?
    
def streamencoding():
    """ Function doc

    @param PARAM: DESCRIPTION
    @return RETURN: DESCRIPTION
    """
    # mp31 ogg2
    return 'mp31'
    
def file_format():
    """ Function doc

    @param PARAM: DESCRIPTION
    @return RETURN: DESCRIPTION
    """
    # .mp3 .ogg
    return '.mp3'
    
def make_directory(directory):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """

        if not os.path.exists(directory):
            os.makedirs(directory)
            
# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#    Classes
# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
class Music(object):
    """ Class doc """


    def __init__ (self,id,name='',duration='0',stream='',url=''):
        """ Class initialiser """
        self.id=id
        self.name=name
        self.duration=duration
        self.stream=stream
        self.url=url

        if self.name=='':
            self.initialize()
            print self.__str__()

        pass

    def __str__(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """

        return  'Name : '+self.name +'\n' + \
                'Duration : '+time.strftime('%M:%S', time.gmtime(int(self.duration))) +'\n' + \
                'Stream : '+self.stream +'\n' + \
                'Url : '+self.url +'\n'
                
    def initialize(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """
        
        
        #
        link = 'http://api.jamendo.com/en/get2/name+duration+stream+url/track/plain/?id='+self.id+'&streamencoding='+streamencoding()
        page=urllib.urlopen(link)
        strpage=page.read()
        page.close()
        infos= strpage.split('\t')

        self.name=infos[0]
        self.duration=infos[1]
        self.stream=infos[2]
        self.url=infos[3]
        
        pause()



    def download(self,directory):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """

        self.dir=directory
        make_directory(self.dir)
        
        dowload_url=self.stream
        #print unicode(self.dir+self.name+file_format())
        print self.dir+self.name+file_format() #unicode ?, fichier.decode('utf8')
        location=self.dir+ self.name + file_format()
        urllib.urlretrieve(dowload_url, location )
        print self.name+' : [OK]'

        pause()
        pass

# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

class Playlist(object):
    """ Class doc """

    def __init__ (self,id,name='',duration='0',tracks=[]):
        """ Class initialiser """
        self.id=id
        self.name=name
        self.duration=duration
        self.tracks=tracks

        if self.name=='':
            self.initialize()
            print self.__str__()

        pass

    def __str__(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """
        txt=''
        for song in self.tracks:
            txt=txt+song.name+'\n'
            
        return  'Name : '+self.name + '\n' + \
                'Duration : '+time.strftime('%H:%M:%S', time.gmtime(int(self.duration))) + '\n' + \
                '\n' + \
                txt

    def initialize(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """

        
        #
        link = 'http://api.jamendo.com/get2/id+name+duration+stream+url/track/plain/?playlist_id='+self.id+'&n=all'
        page=urllib.urlopen(link)
        strpage=page.read()
        page.close()

        for line in strpage.split('\n'):
            infos= line.split('\t')
            print infos,self.id
            id=infos[0]
            name=infos[1]
            duration=infos[2]
            stream=infos[3]
            url=infos[4]
            
            local_music=Music(id,name,duration,stream,url)
            self.tracks.append( local_music )
            
            pause()
        
        #
        link = 'http://api.jamendo.com/en/get2/name+duration/playlist/plain/?id='+self.id
        page=urllib.urlopen(link)
        strpage=page.read()
        page.close()
        infos= strpage.split('\t')

        self.name=infos[0]
        self.duration=infos[1]

        pause()

    def download(self,directory):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """

        self.dir=os.path.join(directory,self.name+os.sep)
        make_directory(self.dir)

        # to get music
        for song in self.tracks:
            song.download(self.dir)

# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

class Album(object):
    """ Class doc """

    def __init__ (self,id,name='',duration='0',image='',url='',genre='',tracks=[]):
        """ Class initialiser """
        self.id=id
        self.name=name
        self.duration=duration
        self.image=image
        self.url=url
        self.genre=genre
        self.tracks=tracks

        if self.name=='':
            self.initialize()
            print self.__str__()
            
        pass



    def __str__(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """
        
        txt=''
        for song in self.tracks:
            txt=txt+song.name+'\n'
            
        return  'Name : '+self.name + '\n' + \
                'Duration : '+time.strftime('%H:%M:%S', time.gmtime(int(self.duration))) + '\n' + \
                'Image : '+self.image + '\n' + \
                'Url : '+self.url + '\n' + \
                'Genre : '+self.genre + '\n' + \
                '\n' + \
                txt

    def initialize(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """
        
        #
        link = 'http://api.jamendo.com/en/get2/name+duration+image+url+genre/album/plain/?id='+self.id+'&imagesize='+image_size() 
        page=urllib.urlopen(link)
        strpage=page.read()
        page.close()
        infos= strpage.split('\t')

        self.name=infos[0]
        self.duration=infos[1]
        self.image=infos[2]
        self.url=infos[3]
        self.genre=infos[4]

        pause()
        
        # 
        link = 'http://api.jamendo.com/get2/id+name+duration+stream+url/track/plain/?album_id='+self.id+'&n=all'
        page=urllib.urlopen(link)
        strpage=page.read()
        page.close()

        for line in strpage.split('\n'):
            infos= line.split('\t')
            #print infos
            id=infos[0]
            name=infos[1]
            duration=infos[2]
            stream=infos[3]
            url=infos[4]
            
            local_music=Music(id,name,duration,stream,url)
            self.tracks.append( local_music )

            pause()

    def download(self,directory):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """

        self.dir=os.path.join(directory,self.name+os.sep)
        make_directory(self.dir)

        # to get music
        for song in self.tracks:
            song.download(self.dir)

        # to get cover
        cover_url=self.image
        destination=self.dir + 'cover.jpg'
        urllib.urlretrieve(cover_url, destination)
        print '\n>>> Cover : OK <<<'
        pause()
        pass
        
# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

class Artist(object):
    """ Class doc """

    def __init__ (self,idstr,name='',image='',url='',genre='',albums=[]):
        """ Class initialiser """
        self.idstr=idstr
        self.name=name
        self.image=image
        self.url=url
        self.genre=genre
        self.albums=albums

        if self.name=='':
            self.initialize()
            print self.__str__()

        pass


    def __str__(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """
        txt=''
        for album in self.albums:
            txt=txt + album.name + '\n'
            
        return  'Name : '+self.name + '\n' + \
                'Image : '+self.image + '\n' + \
                'Url : '+self.url + '\n' + \
                'Genre : '+self.genre + '\n' + \
                '\n' + \
                txt

    def initialize(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """
        #
        link = 'http://api.jamendo.com/get2/id/album/plain/?artist_idstr='+self.idstr
        page=urllib.urlopen(link)
        strpage=page.read()
        page.close()
        
        for line in strpage.split('\n'):
            infos= line.split('\t')

            id=infos[0]
            
            local_album=Album(id,tracks=[])
            self.albums.append( local_album )

            pause()
            
        #
        link = 'http://api.jamendo.com/en/get2/name+image+url+genre/artist/plain/?idstr='+self.idstr
        page=urllib.urlopen(link)
        strpage=page.read()
        page.close()
        infos= strpage.split('\t')

        self.name=infos[0]
        self.image=infos[1]
        self.url=infos[2]
        self.genre=infos[3]

        pause()

    def download(self,directory):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """

        self.dir=os.path.join(directory,self.name+os.sep)
        make_directory(self.dir)

        # to get music
        for album in self.albums:
            album.download(self.dir)
            
        # to get cover
        cover_url=self.image
        destination=self.dir + 'cover.jpg'
        urllib.urlretrieve(cover_url, destination)
        print '\n>>> Cover : OK <<<'
        pause()
        pass
            

# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

class Top_Music(object):
    """ Class doc """

    def __init__ (self,info,name='',duration='0',tracks=[]):
        """ Class initialiser """
        self.info='http://api.jamendo.com/get2/id+name+duration+stream+url/track/plain/'+info+'&streamencoding='+streamencoding()   #?n=50&order=ratingmonth_desc
        self.name=name
        self.duration=duration
        self.tracks=tracks

        if self.name=='':
            self.initialize()
            print self.__str__()
        pass

    def __str__(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """
        
        txt=''
        for song in self.tracks:
            txt=txt + song.name + '\n'
            
        return  'Name : '+self.name + '\n' + \
                'Duration : '+time.strftime('%H:%M:%S', time.gmtime(int(self.duration))) + '\n' + \
                '\n' + \
                txt

    def initialize(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """
        #
        link = self.info
        page=urllib.urlopen(link)
        strpage=page.read()
        page.close()

        for line in strpage.split('\n'):
            infos= line.split('\t')

            id=infos[0]
            name=infos[1]
            duration=infos[2]
            stream=infos[3]
            url=infos[4]
            
            local_music=Music(id,name,duration,stream,url)
            self.tracks.append( local_music )

            pause()
        #    
        self.name='Top_Music_'+time.strftime("%Y_%m_%d__%H%M", time.gmtime())

        duration=0
        for song in self.tracks:
            duration=duration+int(song.duration)
        self.duration=duration

    def download(self,directory):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """

        self.dir=os.path.join(directory,self.name+os.sep)
        make_directory(self.dir)

        # to get music
        for song in self.tracks:
            song.download(self.dir)


# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

class Top_Album(object):
    """ Class doc """

    def __init__ (self,info,name='',duration='0',albums=[]):
        """ Class initialiser """
        self.info='http://api.jamendo.com/get2/id/album/plain/'+info   #?n=50&order=ratingmonth_desc
        self.name=name
        self.duration=duration
        self.albums=albums

        if self.name=='':
            self.initialize()
            print self.__str__()
        pass

    def __str__(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """
        txt=''
        for album in self.albums:
            txt=txt+ album.name +'\n'
            
        return  'Name : '+self.name + '\n' + \
                'Duration : '+time.strftime('%H:%M:%S', time.gmtime(int(self.duration))) + '\n' + \
                '\n' + \
                txt

    def initialize(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """
        #
        link = self.info
        page=urllib.urlopen(link)
        strpage=page.read()
        page.close()

        for line in strpage.split('\n'):
            infos= line.split('\t')

            id=infos[0]
            
            local_album=Album(id,tracks=[])
            self.albums.append( local_album  )

            pause()
        
        #
        self.name='Top_Album_'+time.strftime("%Y_%m_%d__%H%M", time.gmtime())

        duration=0
        for album in self.albums:
            duration=duration+int(album.duration)
        self.duration=duration

    def download(self,directory):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """

        self.dir=os.path.join(directory,self.name+os.sep)
        make_directory(self.dir)

        # to get music
        for album in self.albums:
            album.download(self.dir)

# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

class Top_Playlist(object):
    """ Class doc """

    def __init__ (self,info,name='',duration='0',playlists=[]):
        """ Class initialiser """
        self.info='http://api.jamendo.com/get2/id/playlist/plain/'+info   #?n=50&order=ratingmonth_desc
        self.name=name
        self.duration=duration
        self.playlists=playlists

        if self.name=='':
            self.initialize()
            print self.__str__()
        pass

    def __str__(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """
        txt=''
        for playlist in self.playlists:
            txt=txt+ playlist.name+'\n'

        return  'Name : '+self.name + '\n' + \
                'Duration : '+time.strftime('%H:%M:%S', time.gmtime(int(self.duration))) + '\n' + \
                '\n' + \
                txt

    def initialize(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """
        #
        link = self.info
        page=urllib.urlopen(link)
        strpage=page.read()
        page.close()

        for line in strpage.split('\n'):
            infos= line.split('\t')

            id=infos[0]
            
            local_playlist=Playlist(id,tracks=[])
            self.playlists.append( local_playlist  )

            pause()
        
        #
        self.name='Top_Playlist_'+time.strftime("%Y_%m_%d__%H%M", time.gmtime())

        duration=0
        for playlist in self.playlists:
            duration=duration+int(playlist.duration)
        self.duration=duration

    def download(self,directory):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """

        self.dir=os.path.join(directory,self.name+os.sep)
        make_directory(self.dir)
        
        # to get music
        for playlist in self.playlists:
            playlist.download(self.dir)

# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

class Top_Artist(object):
    """ Class doc """

    def __init__ (self,info,name='',artists=[]):
        """ Class initialiser """
        self.info='http://api.jamendo.com/get2/idstr/artist/plain/'+info   #?n=50&order=ratingmonth_desc
        self.name=name
        self.artists=artists

        if self.name=='':
            self.initialize()
            print self.__str__()
        pass

    def __str__(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """
        txt=''
        for artist in self.artists:
            txt=txt+ artist.name +'\n'
            
        return  'Name : '+self.name + '\n' + \
                txt

    def initialize(self):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """
        #
        link = self.info
        page=urllib.urlopen(link)
        strpage=page.read()
        page.close()

        for line in strpage.split('\n'):
            infos= line.split('\t')

            idstr=infos[0]
            
            local_artist=Artist(idstr,albums=[])
            self.artists.append( local_artist  )

            pause()
        
        #
        self.name='Top_Artist_'+time.strftime("%Y_%m_%d__%H%M", time.gmtime())

    def download(self,directory):
        """ Function doc

        @param PARAM: DESCRIPTION
        @return RETURN: DESCRIPTION
        """

        self.dir=os.path.join(directory,self.name+os.sep)
        make_directory(self.dir)

        # to get music
        for artist in self.artists:
            artist.download(self.dir)
            
# %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
def help():
    """ Function doc

    @param PARAM: DESCRIPTION
    @return RETURN: DESCRIPTION
    """

    # python jamdowload.py --url http://www.jamendo.com/fr/playlist/209 --dir /home/antoine/jamdowload/
    # python jamdowload.py --top ['track','?n=10&order=ratingmonth_desc']  --dir /home/antoine/jamdowload/
    txt=u'Logiciel de téléchargement de musiques sur Jamendo \n' + \
             u'\n' + \
             u'toitoinebzh@jabber.fr \n' + \
             u'\n' + \
             u'--help : affiche l aide \n' + \
             u'--dir : pour définir le dossier de destination \n' + \
             u'--url : pour télécharger une chanson, un album, un artiste, une playlist à ' + \
             u'partir de son url sur jamendo \n' +\
             u'--top : pour télécharger le top du classement \n' + \
             u'\t le paramètre doit être entré sous la forme [type, classement] \n' +\
             u'\t le type peut être track (musique), playlist, artist, album \n' +\
             u'\t des informations sont disponibles sur jamendo.com pour définir son classement personnalisé \n' + \
             u'\n' + \
             u'exemples : \n' + \
             u'*telecharger a partir de l url de l artiste, musique, album, playlist* \n' + \
             u'\t python jamdowload.py --url http://www.jamendo.com/fr/playlist/209 --dir /home/antoine/jamdowload/ \n' + \
             u'\n' +\
             u'*telecharger le top du des albums, musiques, artiste* \n' + \
             u'exemple ici les 10 chansons les plus populaires du mois \n' + \
             u'\t python jamdowload.py --top [\'track\',\'?n=10&order=ratingmonth_desc\']  --dir /home/antoine/jamdowload/ \n'
    
    return txt
    
import urllib, time, os, sys, getopt

def main():
    #directory=os.getcwd()   # ou par exemple  '/home/antoine/musique/'

    # telecharger a partir de l'url de l'artiste, musique, album, playlist
    # exemple ici la playlist avec id=209
    #url='http://www.jamendo.com/fr/playlist/209'
    #download_url(url,directory)
    
    # telecharger le top du des albums, musiques, artistes
    # exemple ici les 10 chansons les plus populaires du mois
    #top = ['track','?n=10&order=ratingmonth_desc']
    #download_top(top,directory)
        
    try:
        opts, args = getopt.getopt(sys.argv[1:], "hdut", ["help", "dir=", "url=", "top="])
    except getopt.GetoptError, err:
        print str(err)
        print help()
        exit(1)
        
    mode=''
    directory=''
    url=''
    top=['','']
    mode=''
    for opt, arg in opts:
        #print opt, arg
        if opt in ("-h", "--help"):
            print help()
            exit(1)
        if opt in ("-d", "--dir"):
            directory=arg
        if opt in ("-u", "--url"):
            url=arg
            mode='url'
        if opt in ("-t", "--top"):
            top=[s.strip() for s in arg[1:-1].split(',')]
            mode='top'
    
    #print directory, mode, url, top
    
    try:
        if mode=='url':
            download_url(url,directory)
        elif mode=='top':
            download_top(top,directory)
        else:
                        print help()
    except:
        pass
    
    return 0

if __name__ == '__main__':
    main()

bon téléchargement wink

Dernière modification par toitoinebzh (Le 10/07/2011, à 19:57)

Hors ligne

#2 Le 09/07/2011, à 22:56

wido

Re : [script] telecharger de la musique sur jamendo

Bonjour,
excellent ton script, pourrais-tu ajouter un help dans ton script si tu y arrives.

Hors ligne

#3 Le 10/07/2011, à 20:00

toitoinebzh

Re : [script] telecharger de la musique sur jamendo

salut
c'est bon c'est fait (un nouveau truc que ej viens d'apprendre smile )
j'ai mis a jour le script dans le premier post
voila ce que renvoie l'aide

Logiciel de téléchargement de musiques sur Jamendo 

toitoinebzh@jabber.fr 

--help : affiche l aide 
--dir : pour définir le dossier de destination 
--url : pour télécharger une chanson, un album, un artiste, une playlist à partir de son url sur jamendo 
--top : pour télécharger le top du classement 
     le paramètre doit être entré sous la forme [type, classement] 
     le type peut être track (musique), playlist, artist, album 
     des informations sont disponibles sur jamendo.com pour définir son classement personnalisé 

exemples : 
*telecharger a partir de l url de l artiste, musique, album, playlist* 
python jamdowload.py --url http://www.jamendo.com/fr/playlist/209 --dir /home/antoine/jamdowload/ 

*telecharger le top du des albums, musiques, artiste* 
exemple ici les 10 chansons les plus populaires du mois 
python jamdowload.py --top ['track','?n=10&order=ratingmonth_desc']  --dir /home/antoine/jamdowload/ 

[antoine@Orwell jamdowload]$ ./jamdowload.py --help
Logiciel de téléchargement de musiques sur Jamendo 

toitoinebzh@jabber.fr 

--help : affiche l aide 
--dir : pour définir le dossier de destination 
--url : pour télécharger une chanson, un album, un artiste, une playlist à partir de son url sur jamendo 
--top : pour télécharger le top du classement 
     le paramètre doit être entré sous la forme [type, classement] 
     le type peut être track (musique), playlist, artist, album 
     des informations sont disponibles sur jamendo.com pour définir son classement personnalisé 

exemples : 
*telecharger a partir de l url de l artiste, musique, album, playlist* 
     python jamdowload.py --url http://www.jamendo.com/fr/playlist/209 --dir /home/antoine/jamdowload/ 

*telecharger le top du des albums, musiques, artiste* 
exemple ici les 10 chansons les plus populaires du mois 
     python jamdowload.py --top ['track','?n=10&order=ratingmonth_desc']  --dir /home/antoine/jamdowload/

la seul chose qui reste a faire est
- de lire l'aide ici
- ouvrir un fichier texte et l'enregistrer en tant que jamdowload.py
le script est maintenant utilisable a partir du terminal wink

Dernière modification par toitoinebzh (Le 10/07/2011, à 20:01)

Hors ligne