Exemplo n.º 1
0
 def get(self, **kwargs):
     """
         Reads in the json feed and updates _raw attribute
     """
     client = Client(access_token=self.access_token)
     self.tracks = client.get(self.endpoint, limit=kwargs.get('limit', 200), offset=kwargs.get('offset', 0))
     return self.tracks
Exemplo n.º 2
0
def test_put_metadata_with_track_uri():
    cl = Client(client_id=CLIENT_ID,
                client_secret=CLIENT_SECRET,
                access_token=ACCESS_TOKEN)
    res = cl.get("/tracks/%s" % TRACK_ID)
    res = cl.put(res.uri, metadata={"title": "updated with track.uri"})
    assert res.status_code == 200
Exemplo n.º 3
0
def test_put_track_metadata():
    cl = Client(client_id=CLIENT_ID,
                client_secret=CLIENT_SECRET,
                access_token=ACCESS_TOKEN)
    res = cl.put("/tracks/%s" % TRACK_ID,
                 metadata={"title": "hello live test"})
    assert res.status_code == 200
Exemplo n.º 4
0
 def __init__(self):
     # Initialize the auth - we will want to get a non-expiring token
     # You can read and see flow here: http://developers.soundcloud.com/docs/api/guide#authentication
     self.sc = Client(client_id=settings.SOUNDCLOUD_CLIENT,
                      client_secret=settings.SOUNDCLOUD_SECRET,
                      redirect_uri=settings.SOUNDCLOUD_REDIRECT,
                      scope='non-expiring')
Exemplo n.º 5
0
 def get(pk, auth):
     client = Client(client_id=auth.key, client_secret=auth.secret)
     response = client.get(
         '/tracks/' + pk,
     )
     response = json.loads(response.raw_data)
     return response
Exemplo n.º 6
0
class SoundCloudAuth(TemplateView):
    """
        Authentication view for SC using OAuth - this is basically just here
        to generate an access token as they don't have a console like Facebook
        to quickly create one manually.

        Since we are likely to need this in future might as well create it in
        a class view now
    """

    template_name = 'radio/auth.html'

    def __init__(self):
        # Initialize the auth - we will want to get a non-expiring token
        # You can read and see flow here: http://developers.soundcloud.com/docs/api/guide#authentication
        self.sc = Client(client_id=settings.SOUNDCLOUD_CLIENT,
                         client_secret=settings.SOUNDCLOUD_SECRET,
                         redirect_uri=settings.SOUNDCLOUD_REDIRECT,
                         scope='non-expiring')

    def get_context_data(self, **kwargs):
        context = super(SoundCloudAuth, self).get_context_data(**kwargs)
        context['auth_url'] = self.sc.authorize_url()
        return context

    def get(self, request, *args, **kwargs):
        context = self.get_context_data(**kwargs)
        code = request.GET.get('code', None)

        if code is not None:
            access_token = self.sc.exchange_token(code)
            context['access_token'] = access_token

        return self.render_to_response(context)
Exemplo n.º 7
0
 def get(self, **kwargs):
     """
         Reads in the json feed and updates _raw attribute
     """
     client = Client(access_token=self.access_token)
     self.tracks = client.get(self.endpoint,
                              limit=kwargs.get('limit', 200),
                              offset=kwargs.get('offset', 0))
     return self.tracks
Exemplo n.º 8
0
def test_get_tracks():
    cl = Client(client_id=CLIENT_ID,
                client_secret=CLIENT_SECRET,
                access_token=ACCESS_TOKEN)
    res = cl.get("/me/tracks")
    assert res.status_code == 200

    track_ids = [track.id for track in res]
    print(track_ids)
Exemplo n.º 9
0
    def __init__(self):
        CLIENT_ID = os.environ.get('SOUNDCLOUD_ID')
        CLIENT_SECRET = os.environ.get('SOUNDCLOUD_SECRET')
        CLIENT_EMAIL = os.environ.get('SOUNDCLOUD_EMAIL')
        CLIENT_PASSWORD = os.environ.get('SOUNDCLOUD_PASSWORD')

        self.client = Client(client_id=CLIENT_ID,
                             client_secret=CLIENT_SECRET,
                             username=CLIENT_EMAIL,
                             password=CLIENT_PASSWORD)
Exemplo n.º 10
0
    def post(self, request, *args, **kwargs):

        #client = Client(client_id=CLIENT_ID,
         #               client_secret=CLIENT_SECRET,
          #              redirect_uri=REDIRECT_URL)


        client = Client(client_id=YOUR_CLIENT_ID)
        tracks = client.get('/tracks', limit=10)

        HttpResponseRedirect(client.authorize_url())
Exemplo n.º 11
0
    def list(params, auth):
        if params['page_token'] == '':
            params['page_token'] = 1

        client = Client(client_id=auth.key, client_secret=auth.secret)
        response = client.get(
            '/tracks/',
            q=params['query'],
            limit=params['page_size'],
            offset=(int(params['page_token']) - 1) * int(params['page_size']),
        )
        return json.loads(response.raw_data)
Exemplo n.º 12
0
    def list(params, auth):
        if params['page_token'] == '':
            params['page_token'] = 1

        client = Client(client_id=auth.key, client_secret=auth.secret)
        response = client.get(
            '/tracks/',
            q=params['query'],
            limit=params['page_size'],
            offset=(int(params['page_token']) - 1) * int(params['page_size']),
        )
        return json.loads(response.raw_data)
Exemplo n.º 13
0
 def sync(cls):
     client = Client(client_id=app.config['SOUNDCLOUD_APP_KEY_ID'],
                     client_secret=app.config['SOUNDCLOUD_APP_KEY_SECRET'],
                     username=app.config['SOUNDCLOUD_USERNAME'],
                     password=app.config['SOUNDCLOUD_PASSWORD'])
     cls.upload_files(client)
     cls.sync_upload_state(client)
Exemplo n.º 14
0
 def __init__(self, user, pw):
     self.auth(user, pw)
     """ Authentification """
     client = Client(client_id='00d3fbad6f8ab649c131d0e558f8387d',
                     client_secret='8b7d292013c5f4ddbbacccfee6059a54',
                     username=str(user),
                     password=str(pw))
Exemplo n.º 15
0
 def __init__(self):
     # Initialize the auth - we will want to get a non-expiring token
     # You can read and see flow here: http://developers.soundcloud.com/docs/api/guide#authentication
     self.sc = Client(
         client_id=settings.SOUNDCLOUD_CLIENT,
         client_secret=settings.SOUNDCLOUD_SECRET,
         redirect_uri=settings.SOUNDCLOUD_REDIRECT,
         scope='non-expiring'
     )
Exemplo n.º 16
0
	def __init__(self):
		CLIENT_ID = os.environ.get('SOUNDCLOUD_ID')
		CLIENT_SECRET = os.environ.get('SOUNDCLOUD_SECRET')
		CLIENT_EMAIL = os.environ.get('SOUNDCLOUD_EMAIL')
		CLIENT_PASSWORD = os.environ.get('SOUNDCLOUD_PASSWORD')


		self.client = Client(
		    client_id=CLIENT_ID,
		 	client_secret=CLIENT_SECRET,
		    username=CLIENT_EMAIL,
		    password=CLIENT_PASSWORD
		)
Exemplo n.º 17
0
class SoundCloudAuth(TemplateView):
    """
        Authentication view for SC using OAuth - this is basically just here
        to generate an access token as they don't have a console like Facebook
        to quickly create one manually.

        Since we are likely to need this in future might as well create it in
        a class view now
    """

    template_name = 'radio/auth.html'

    def __init__(self):
        # Initialize the auth - we will want to get a non-expiring token
        # You can read and see flow here: http://developers.soundcloud.com/docs/api/guide#authentication
        self.sc = Client(
            client_id=settings.SOUNDCLOUD_CLIENT,
            client_secret=settings.SOUNDCLOUD_SECRET,
            redirect_uri=settings.SOUNDCLOUD_REDIRECT,
            scope='non-expiring'
        )

    def get_context_data(self, **kwargs):
        context = super(SoundCloudAuth, self).get_context_data(**kwargs)
        context['auth_url'] = self.sc.authorize_url()
        return context

    def get(self, request, *args, **kwargs):
        context = self.get_context_data(**kwargs)
        code = request.GET.get('code', None)

        if code is not None:
            access_token = self.sc.exchange_token(code)
            context['access_token'] = access_token

        return self.render_to_response(context)
Exemplo n.º 18
0
def sc_get_client():
    from mixtape.models import SoundCloudInfo
    from soundcloud import Client
    from django.conf import settings
    data = SoundCloudInfo.objects.filter(active=True)
    if data:
        data = data[0]
        creds = {
            'client_id': data.client_id,
            'client_secret': data.client_secret,
            'username': data.username,
            'password': data.password,
        }
        return Client(**creds)
    else:
        return None
Exemplo n.º 19
0
class CloudClient():
    def __init__(self):
        CLIENT_ID = os.environ.get('SOUNDCLOUD_ID')
        CLIENT_SECRET = os.environ.get('SOUNDCLOUD_SECRET')
        CLIENT_EMAIL = os.environ.get('SOUNDCLOUD_EMAIL')
        CLIENT_PASSWORD = os.environ.get('SOUNDCLOUD_PASSWORD')

        self.client = Client(client_id=CLIENT_ID,
                             client_secret=CLIENT_SECRET,
                             username=CLIENT_EMAIL,
                             password=CLIENT_PASSWORD)

    def post_track(self, filepath):
        track = self.client.post('/tracks',
                                 track={
                                     'title': 'SampleTrack',
                                     'sharing': 'private',
                                     'asset_data': open(filepath, 'rb')
                                 })
Exemplo n.º 20
0
class CloudClient():

	def __init__(self):
		CLIENT_ID = os.environ.get('SOUNDCLOUD_ID')
		CLIENT_SECRET = os.environ.get('SOUNDCLOUD_SECRET')
		CLIENT_EMAIL = os.environ.get('SOUNDCLOUD_EMAIL')
		CLIENT_PASSWORD = os.environ.get('SOUNDCLOUD_PASSWORD')


		self.client = Client(
		    client_id=CLIENT_ID,
		 	client_secret=CLIENT_SECRET,
		    username=CLIENT_EMAIL,
		    password=CLIENT_PASSWORD
		)

	def post_track(self, filepath):
		track = self.client.post('/tracks', track={
		    'title': 'SampleTrack',
		    'sharing': 'private',
		    'asset_data': open(filepath, 'rb')
		})
Exemplo n.º 21
0
class SoundcloudObject:
    def __init__(self, user, pw):
        self.auth(user, pw)
        """ Authentification """
        client = Client(client_id='00d3fbad6f8ab649c131d0e558f8387d',
                        client_secret='8b7d292013c5f4ddbbacccfee6059a54',
                        username=str(user),
                        password=str(pw))

    def auth(self, user, pw):
        self.client = Client(client_id='00d3fbad6f8ab649c131d0e558f8387d',
                             client_secret='8b7d292013c5f4ddbbacccfee6059a54',
                             username=str(user),
                             password=str(pw))

    def favorites(self, limit):
        tracks = self.client.get('/me/favorites', limit=limit)
        return tracks

    def username(self):
        return self.client.get('/me').username

    def user(self, url):
        user = self.client.get('/resolve', url=url)
        artist_username = str(user.username)
        global mypath
        mypath = "C:\\Users\\" + wuser + "\\Music\\" + artist_username
        if not path.exists(mypath): makedirs(mypath)
        id = str(user.id)
        request = '/users/' + id + '/tracks'
        tracks = self.client.get(request)
        return tracks

    def download(self):
        thread = threading.Thread(target=self.dl_thread)
        thread.start()

    def dl_thread(self):
        for track in tracks:
            no = tracks.index(track)
            if not no in to_dl:
                continue
            global title
            title_c = str(no) + "_title_label"
            title = container[title_c].label.cget("text")
            info.configure(text='Downloading  ' + title)
            global artist
            artist_c = str(no) + "_artist_label"
            artist = container[artist_c].label.cget("text")
            cover_url = track.artwork_url  #low-res
            global cover
            cover = cover_url.replace("large", "t500x500")  #high-res
            stream_url = self.client.get(track.stream_url,
                                         allow_redirects=False)
            global url
            url = stream_url.location.replace('https', 'http')
            filename = title + format
            global fullfilename
            fullfilename = path.join(mypath, filename)
            #             while progressbar["value"] < 99 :
            #                 pass
            urllib.request.urlretrieve(url,
                                       fullfilename,
                                       reporthook=self.progress)
            self.add_tags(title, artist, cover, fullfilename)
            info.configure(text='Done.')
            progressbar["value"] = 0

    def progress(self, count, blocksize, totalsize):
        """ count : number of blocks downloaded ; blockSize : size of a single block (8192) ; total size of the file. urlretrieve update the content constantly"""

        bytesdownloaded = blocksize * count
        mbdownloaded = bytesdownloaded / 1024 / 1024
        mbsize = float(blocksize) / float(totalsize)
        totalsize = totalsize / 1024 / 1024
        percent = mbsize * 100
        progressbar.step(percent)

    def add_tags(self, title, artist, cover, fullfilename):
        file = MP3(fullfilename, ID3=ID3)

        try:
            file.add_tags()
        except error:
            pass
        #Cover
        file.tags.add(
            APIC(
                encoding=3,  # 3 is for utf-8
                mime='image/png',  # image/jpeg or image/png
                type=3,  # 3 is for the cover image
                desc=u'Cover',
                data=urllib.request.urlopen(cover).read()))
        #Title
        file.tags.add(TIT2(encoding=3, text=title))
        #Artist
        file.tags.add(TPE1(encoding=3, text=artist))

        file.save()
Exemplo n.º 22
0
 def __init__(self):
     # Initialize the auth - we will want to get a non-expiring token
     # You can read and see flow here: http://developers.soundcloud.com/docs/api/guide#authentication
     super(SoundCloudBaseView, self).__init__()
     self.sc = Client(access_token=settings.SOUNDCLOUD_ACCESS_TOKEN, )
Exemplo n.º 23
0
def test_get_track_detail():
    cl = Client(client_id=CLIENT_ID,
                client_secret=CLIENT_SECRET,
                access_token=ACCESS_TOKEN)
    res = cl.get("/tracks/%s" % TRACK_ID)
    assert res.status_code == 200
Exemplo n.º 24
0
 def get(pk, auth):
     client = Client(client_id=auth.key, client_secret=auth.secret)
     response = client.get('/tracks/' + pk, )
     response = json.loads(response.raw_data)
     return response
Exemplo n.º 25
0
Arquivo: oauth.py Projeto: uemurax/scc
def get_access_token(client_id, client_secret, redirect_url, url_handler, input_code):
    """Create an access token"""
    client = Client(client_id=client_id, client_secret=client_secret, redirect_url=redirect_url, scope="")
    url_handler(client.authorize_url())
    code = input_code()
    return client.exchange_token(code)
Exemplo n.º 26
0
Arquivo: oauth.py Projeto: uemurax/scc
def test(access_token):
    client = Client(access_token=access_token)
    username = client.get("/me").username
    print("Hi, {username}! You've successfully authenticated.".format(username=username))
Exemplo n.º 27
0
            print(' 😟')
            print('error retrieving resolved url %s' % resolved_url)
            print('retrieving url %s' % resolved_url.url)
            if os.path.exists(temp):
                os.remove(temp)
        # else:
        #     print(' 😊')

    return file_name


if not os.path.exists(TRACKS_DIR):
    os.makedirs(TRACKS_DIR)

client = Client(client_id=CLIENT_ID,
                client_secret=CLIENT_SECRET,
                username=USERNAME,
                password=PASSWORD)
now = datetime.datetime.now(pytz.utc)

for set_url in sys.argv[1:]:
    fg = FeedGenerator()
    fg.load_extension('podcast', atom=True, rss=True)

    try:
        res = client.get('/resolve', url=set_url)
    except Exception as err:
        print('error resolving url %s' % set_url)
        continue

    fg.id(set_url)
# -*- coding: utf-8 -*-
import urllib
from mutagen.mp3 import MP3
from mutagen.id3 import ID3, APIC, error, TIT2, TPE1
from progressbar import FileTransferSpeed,Percentage,ProgressBar
from soundcloud import Client

# Authentification

client = Client(client_id='YOUR_CLIENT_ID',
                client_secret='YOU_CLIENT_SECRET',
                username='******',
                password='******')

print ('Hello',client.get('/me').username,',','showing your recently favorited songs :')

                           
favorites = client.get('/me/favorites', limit=30)   # shows a list with your last 30 favorited songs
for track in favorites:
    a=str(1+favorites.index(track))+'.'
    title = track.title
    artist = track.user["username"]    
    print(a,title,' by ',username)
    
print()
n = int(input('How many songs would you like to download ?'))
print()
numbers = input('Songs to be excluded: ').split(",")

def progress(count, blockSize, totalSize):
    """ count : number of blocks downloaded ; blockSize : size of a single block (8192) ; total size of the file. urlretrieve update the content constantly"""
Exemplo n.º 29
0
import urllib
import os
from mutagen.mp3 import MP3
from mutagen.id3 import ID3, APIC, error, TIT2, TPE1
from progressbar import FileTransferSpeed, Percentage, ProgressBar
from soundcloud import Client

# Authentification
client = Client(client_id='YOUR_CLIENT_ID',
                client_secret='YOU_CLIENT_SECRET',
                username='******',
                password='******')

# Welcome
print 'Hello %s' % client.get('/me').username

# Directory to download songs to
download_location = 'music/'

# Make music directory if needed
if not os.path.exists(download_location):
    os.makedirs(download_location)

def progress(count, blockSize, totalSize):
    """ count : number of blocks downloaded ; blockSize : size of a single block (8192) ; total size of the file. urlretrieve update the content constantly"""
    total = totalSize//blockSize 		#  number of blocks it will take to download the entire file
    percent = int(100*count//total)     #  current percentage downloaded
    pbar.update(percent)   				#  update the progress bar by 1% if reached

# Get the favorites and go!
favorites = client.get('/me/favorites', limit=1000)
Exemplo n.º 30
0
    def get(self, request, *args, **kwargs):
        client = Client(client_id=CLIENT_ID)
        tracks = client.get('/tracks', limit=10)

        context = locals()
        return render(request, self.template_name, context)
Exemplo n.º 31
0
from soundcloud import Client
from secrets import soundcloudSecrets

# Create a new client that uses the user credentials oauth flow
client = Client(client_id=soundcloudSecrets['APP_ID'],
                client_secret=soundcloudSecrets['APP_SECRET'],
                username=soundcloudSecrets['USERNAME'],
                password=soundcloudSecrets['PASSWORD'])


def postSoundcloud(barbershopID, audioPath):
    track = client.post('/tracks',
                        track={
                            'title': "BARBERSHOP'D " + str(barbershopID),
                            'sharing': 'public',
                            'asset_data': open(audioPath, 'rb')
                        })
    soundcloudURL = track.permalink_url
    return soundcloudURL


if __name__ == '__main__':
    postSoundcloud("TESTID", "../audioOutput.wav")
Exemplo n.º 32
0
 def auth(self, user, pw):
     self.client = Client(client_id='00d3fbad6f8ab649c131d0e558f8387d',
                          client_secret='8b7d292013c5f4ddbbacccfee6059a54',
                          username=str(user),
                          password=str(pw))