Can now add songs to playlist, with any spotify URL, from desktop app or browser. Need to wait for facebook to start working on the chat-bot

This commit is contained in:
Adrian
2018-03-30 13:11:00 +02:00
parent 001caf5e78
commit 86fea244dd
4 changed files with 26 additions and 51 deletions

1
.cache-ribe1912 Normal file
View File

@@ -0,0 +1 @@
{"access_token": "BQDD6iS0idy9_aS8ckrfEp9NbWbVI5udyc2E4V7LUUPMG60kvk5Pry13QsHmOMOKv5O5D7XGT6UeGs25-DqtM4LgFkgztCay2p_n9C6FvDrJYmvgBMivJQOpUWK1TiNRl4vbGKazb7_n_vTmuLfs8QqUtshwFuuIO4MrL2vYkcbupRI", "expires_in": 3600, "expires_at": 1522411741, "token_type": "Bearer", "scope": "playlist-modify-public", "refresh_token": "AQCCEkzHmh5Vdbn1a6Y1ZV_0_uXApmRYHNk7zrLaC6sZxernecjXe-v2U3aqoFoE-cZssf-UxL9xpGDsubptEef29ig0ZmxVJT3nmEWau14jKFj8DW0NbjcVGVdBKSXg7Uo"}

8
config.py Normal file
View File

@@ -0,0 +1,8 @@
import os
username = 'ribe1912'
clientID = '9f8caa1d3bb44187854c5282f94f83b2'
#damn os-function doesn't work
clientSecret = os.environ.get('client_secret')
clientSecret = 'fa0dd2c91ca045dbb53e158e49f1aa3d'
redirectUri = 'https://blooming-refuge-48604.herokuapp.com/'
playlistID = 'https://open.spotify.com/user/ribe1912/playlist/0mTtRpipjSnsq3Rgd12CQu'

View File

@@ -2,56 +2,52 @@ import pprint
import sys import sys
import spotipy import spotipy
import os import os
import config as cnf
import spotipy.util as util import spotipy.util as util
def getKeysAndPlaylist():
clientID = '9f8caa1d3bb44187854c5282f94f83b2'
clientSecret = os.environ.get('client_secret')
print("HHEHEHEHEHE")
print(clientSecret)
redirectUri = 'https://blooming-refuge-48604.herokuapp.com/'
playlistID = 'https://open.spotify.com/user/ribe1912/playlist/0mTtRpipjSnsq3Rgd12CQu'
return clientID, clientSecret, redirectUri, playlistID
def getUsernameAndLinks(): def getUsernameAndLinks():
if len(sys.argv) > 2: username = cnf.username
username = sys.argv[1] if len(sys.argv) > 1:
trackLinks = sys.argv[2:] trackLinks = sys.argv[1:]
else: else:
print("Usage: %s username playlist_id track_id ..." % (sys.argv[0],)) print("Usage: %s track_id ..." % (sys.argv[0],))
sys.exit() sys.exit()
return username, trackLinks return username, trackLinks
def checkAndConvertLink(trackLinks): def checkAndConvertLink(trackLinks):
linkString = trackLinks[0] linkString = trackLinks[0]
#'?' + str is added to the hyperlink when copying songs from the app / desktop. Remove this to run in webbrowser #Just getting the base-62 number out of the spotify link so that links from browser, desktop and app can be used
trackStringIndex = linkString.find('track/')
questionMarkIndex = linkString.find('?') questionMarkIndex = linkString.find('?')
print(trackStringIndex)
print(questionMarkIndex)
if questionMarkIndex != -1: if questionMarkIndex != -1:
trackLinks = [linkString[0:questionMarkIndex]] #Only supports adding one song at a time so far. print("Getting the base-62 numbers out of hyperlink")
trackLinks = [linkString[trackStringIndex + len('track/'): questionMarkIndex]] #Only supports adding one song at a time so far.
else: else:
print("Link format is already in base-62 form")
pass pass
return trackLinks return trackLinks
def addSongToPlaylist(): def addSongToPlaylist():
#Get keys which allows to connect to the Spotify app
clientID, clientSecret, redirectUri, playlistID = getKeysAndPlaylist()
username, trackLinks = getUsernameAndLinks() username, trackLinks = getUsernameAndLinks()
trackLink = checkAndConvertLink(trackLinks) trackLinks = checkAndConvertLink(trackLinks)
#This gets the authentication needed to add song to the user's playlist #This gets the authentication needed to add song to the user's playlist
scope = 'playlist-modify-public' scope = 'playlist-modify-public'
token = util.prompt_for_user_token(username, scope, client_id=clientID, client_secret=clientSecret, redirect_uri = redirectUri) token = util.prompt_for_user_token(username, scope, client_id=cnf.clientID, client_secret=cnf.clientSecret, redirect_uri = cnf.redirectUri)
if token: if token:
sp = spotipy.Spotify(token) sp = spotipy.Spotify(token)
sp.trace = False sp.trace = False
sp.trace_out = False sp.trace_out = False
#Append to spotify playlist #Append to spotify playlist
results = sp.user_playlist_add_tracks(username, playlistID, trackLinks) results = sp.user_playlist_add_tracks(cnf.username, cnf.playlistID, trackLinks)
print(results) print(results)
else: else:
print("Can't get token for", username) print("Can't get token for", username)

30
test.py
View File

@@ -1,30 +0,0 @@
# Creates a playlist for a user
import pprint
import sys
import os
import subprocess
import spotipy
import spotipy.util as util
if len(sys.argv) > 2:
username = sys.argv[1]
playlist_name = sys.argv[2]
playlist_description = sys.argv[3]
else:
print("Usage: %s username playlist-name playlist-description" % (sys.argv[0],))
sys.exit()
scope = 'playlist-modify-public'
token = util.prompt_for_user_token(username, scope, client_id='9f8caa1d3bb44187854c5282f94f83b2',client_secret='fa0dd2c91ca045dbb53e158e49f1aa3d',redirect_uri='https://blooming-refuge-48604.herokuapp.com/')
if token:
sp = spotipy.Spotify(auth=token)
sp.trace = False
playlists = sp.user_playlist_create(username, playlist_name,
playlist_description)
pprint.pprint(playlists)
else:
print("Can't get token for", username)