mirror of
				https://github.com/KevinMidboe/Spotify-Bot.git
				synced 2025-10-29 18:00:15 +00:00 
			
		
		
		
	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:
		
							
								
								
									
										1
									
								
								.cache-ribe1912
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.cache-ribe1912
									
									
									
									
									
										Normal 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
									
								
							
							
						
						
									
										8
									
								
								config.py
									
									
									
									
									
										Normal 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' | ||||||
							
								
								
									
										38
									
								
								spotify.py
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								spotify.py
									
									
									
									
									
								
							| @@ -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
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								test.py
									
									
									
									
									
								
							| @@ -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) |  | ||||||
		Reference in New Issue
	
	Block a user