Advertisement
Guest User

pyth script error 400

a guest
Jul 27th, 2024
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.30 KB | Software | 0 0
  1. I got error 400 on both of the scripts. This under is the new one.
  2. import tkinter as tk
  3. from spotipy import Spotify
  4. from spotipy.oauth2 import SpotifyOAuth
  5. import requests
  6. from bs4 import BeautifulSoup
  7.  
  8. # Initialize Spotify client (use your own credentials)
  9. sp = Spotify(auth_manager=SpotifyOAuth(client_id="42f9c566eb7b40718d13647621001bd1",
  10. client_secret="d7e829af9e41480ea75d26fda9f27143",
  11. redirect_uri="https://dlucigithub.github.io/Spoti2Lite-project/",
  12. scope="user-library-read"))
  13.  
  14. class MusicApp:
  15. def __init__(self):
  16. self.root = tk.Tk()
  17. self.root.title("Music Streaming Lite")
  18. self.root.geometry("800x600")
  19.  
  20. # Create windows
  21. self.create_search_window()
  22. self.create_track_window()
  23. self.create_lyrics_window()
  24. self.create_playlist_window()
  25. self.create_profile_window()
  26. self.create_settings_window()
  27.  
  28. def create_search_window(self):
  29. self.search_frame = tk.Frame(self.root, bg='lightgrey')
  30. self.search_frame.pack(fill=tk.BOTH, expand=True)
  31.  
  32. self.search_entry = tk.Entry(self.search_frame, width=50)
  33. self.search_entry.pack(pady=20)
  34.  
  35. self.search_button = tk.Button(self.search_frame, text="Search", command=self.search_song)
  36. self.search_button.pack(pady=10)
  37.  
  38. def create_track_window(self):
  39. self.track_frame = tk.Frame(self.root, bg='white')
  40. self.track_frame.pack(fill=tk.BOTH, expand=True)
  41.  
  42. self.track_label = tk.Label(self.track_frame, text="Track Details")
  43. self.track_label.pack(pady=20)
  44.  
  45. def create_lyrics_window(self):
  46. self.lyrics_frame = tk.Frame(self.root, bg='white')
  47. self.lyrics_frame.pack(fill=tk.BOTH, expand=True)
  48.  
  49. self.lyrics_text = tk.Text(self.lyrics_frame, wrap=tk.WORD)
  50. self.lyrics_text.pack(expand=True, fill=tk.BOTH, padx=10, pady=10)
  51.  
  52. def create_playlist_window(self):
  53. self.playlist_frame = tk.Frame(self.root, bg='lightgreen')
  54. self.playlist_frame.pack(fill=tk.BOTH, expand=True)
  55.  
  56. self.playlist_box = tk.Listbox(self.playlist_frame)
  57. self.playlist_box.pack(expand=True, fill=tk.BOTH, padx=10, pady=10)
  58.  
  59. self.show_saved_tracks_button = tk.Button(self.playlist_frame, text="Show Saved Tracks", command=self.fetch_saved_tracks)
  60. self.show_saved_tracks_button.pack(pady=10)
  61.  
  62. def create_profile_window(self):
  63. self.profile_frame = tk.Frame(self.root, bg='lightblue')
  64. self.profile_frame.pack(fill=tk.BOTH, expand=True)
  65.  
  66. self.profile_label = tk.Label(self.profile_frame, text="User Profile")
  67. self.profile_label.pack(pady=20)
  68.  
  69. def create_settings_window(self):
  70. self.settings_frame = tk.Frame(self.root, bg='lightyellow')
  71. self.settings_frame.pack(fill=tk.BOTH, expand=True)
  72.  
  73. self.settings_label = tk.Label(self.settings_frame, text="Settings")
  74. self.settings_label.pack(pady=20)
  75.  
  76. def fetch_saved_tracks(self):
  77. results = sp.current_user_saved_tracks()
  78. self.playlist_box.delete(0, tk.END)
  79. for idx, item in enumerate(results['items']):
  80. track = item['track']
  81. self.playlist_box.insert(tk.END, f"{idx}. {track['artists'][0]['name']} – {track['name']}")
  82.  
  83. def search_song(self):
  84. song_name = self.search_entry.get()
  85. track = sp.search(q=song_name, type='track', limit=1)
  86. if track['tracks']['items']:
  87. track_info = track['tracks']['items'][0]
  88. track_name = track_info['name']
  89. artist_name = track_info['artists'][0]['name']
  90. self.track_label.config(text=f"{track_name} by {artist_name}")
  91. lyrics = self.get_lyrics(track_name, artist_name)
  92. self.lyrics_text.delete(1.0, tk.END)
  93. self.lyrics_text.insert(tk.END, lyrics)
  94. else:
  95. self.track_label.config(text="Track not found")
  96. self.lyrics_text.delete(1.0, tk.END)
  97. self.lyrics_text.insert(tk.END, "Lyrics not found")
  98.  
  99. def get_lyrics(self, track_name, artist_name):
  100. base_url = "https://api.genius.com"
  101. headers = {"Authorization": "Bearer XWnfwIb83SbmPxl5iBYt4sRBuBKgwXQ9w2_USDabEIP2UQDRCDi5EUQQdtXu7NOW"}
  102. search_url = f"{base_url}/search"
  103. data = {'q': f"{track_name} {artist_name}"}
  104.  
  105. response = requests.get(search_url, params=data, headers=headers)
  106. json_data = response.json()
  107. if json_data['response']['hits']:
  108. song_info = json_data['response']['hits'][0]['result']
  109. song_url = song_info['url']
  110.  
  111. lyrics_response = requests.get(song_url)
  112. return self.parse_lyrics(lyrics_response.text)
  113. else:
  114. return "Lyrics not found"
  115.  
  116. def parse_lyrics(self, html):
  117. soup = BeautifulSoup(html, 'html.parser')
  118. lyrics_div = soup.find('div', class_='lyrics') or soup.find('div', class_='SongPage__Section__Container')
  119. lyrics = lyrics_div.get_text() if lyrics_div else "Error: Lyrics not found."
  120. return lyrics
  121.  
  122. def run(self):
  123. self.root.mainloop()
  124.  
  125. if __name__ == "__main__":
  126. app = MusicApp()
  127. app.run()
  128.  
  129.  
  130. **OLD SCRIPT**:
  131.  
  132. # Spoti2lite
  133.  
  134. # --------------- #
  135. # Libraries
  136.  
  137. import tkinter as tk
  138. from tkinter import ttk
  139. import spotipy
  140. from spotipy.oauth2 import SpotifyOAuth
  141. import requests
  142. import time
  143. from bs4 import BeautifulSoup
  144. import threading
  145. import webbrowser
  146.  
  147. # Functions
  148.  
  149. def initialize_spotify(client_id, client_secret, redirect_uri, scope):
  150. try:
  151. auth_manager = SpotifyOAuth(
  152. client_id=client_id,
  153. client_secret=client_secret,
  154. redirect_uri=redirect_uri,
  155. scope=scope
  156. )
  157. auth_url = auth_manager.get_authorize_url()
  158. webbrowser.open(auth_url)
  159.  
  160. # Manual input of the URL after redirection
  161. redirect_response = input("Paste the full redirect URL here: ")
  162. auth_manager.get_access_token(redirect_response)
  163.  
  164. spotify = spotipy.Spotify(auth_manager=auth_manager)
  165. return spotify
  166. except spotipy.oauth2.SpotifyOauthError as e:
  167. print(f"OAuth Error: {e}")
  168. return None
  169.  
  170. def get_saved_tracks(spotify):
  171. if spotify is None:
  172. print("Spotify client is not initialized.")
  173. return []
  174.  
  175. try:
  176. results = spotify.current_user_saved_tracks()
  177. tracks = []
  178. for idx, item in enumerate(results['items']):
  179. track = item['track']
  180. tracks.append(f"{idx}. {track['artists'][0]['name']} – {track['name']}")
  181. return tracks
  182. except Exception as e:
  183. print(f"Error retrieving saved tracks: {e}")
  184. return []
  185.  
  186. def search_song(spotify, song_name):
  187. if spotify is None:
  188. print("Spotify client is not initialized.")
  189. return None
  190.  
  191. try:
  192. results = spotify.search(q=song_name, type='track', limit=1)
  193. if results['tracks']['items']:
  194. track = results['tracks']['items'][0]
  195. return track
  196. else:
  197. return None
  198. except Exception as e:
  199. print(f"Error searching for song: {e}")
  200. return None
  201.  
  202. def get_lyrics(genius_api_token, track_name, artist_name):
  203. base_url = "https://api.genius.com"
  204. headers = {"Authorization": f"Bearer {genius_api_token}"}
  205. search_url = f"{base_url}/search"
  206. data = {'q': f"{track_name} {artist_name}"}
  207.  
  208. response = requests.get(search_url, params=data, headers=headers)
  209. json_data = response.json()
  210. if json_data['response']['hits']:
  211. song_info = json_data['response']['hits'][0]['result']
  212. song_url = song_info['url']
  213.  
  214. lyrics_response = requests.get(song_url)
  215. return parse_lyrics(lyrics_response.text)
  216. else:
  217. return "Lyrics not found."
  218.  
  219. def parse_lyrics(html):
  220. soup = BeautifulSoup(html, 'html.parser')
  221. lyrics_div = soup.find('div', class_='lyrics') or soup.find('div', class_='SongPage__Section__Container')
  222. lyrics = lyrics_div.get_text() if lyrics_div else "Error: Lyrics not found."
  223. return lyrics
  224.  
  225. def update_playback_time(playback_label, playback_time):
  226. while True:
  227. if playback_time[0] > 0:
  228. playback_time[0] += 1
  229. minutes, seconds = divmod(playback_time[0], 60)
  230. current_time = f"{minutes:02}:{seconds:02}"
  231. playback_label.config(text=f"Playback Time: {current_time}")
  232. time.sleep(1)
  233.  
  234. # UI Scripts
  235.  
  236. class MusicApp(tk.Tk):
  237. def __init__(self, spotify, genius_api_token):
  238. super().__init__()
  239. self.title("Music Streaming App")
  240. self.geometry("800x600")
  241. self.spotify = spotify
  242. self.genius_api_token = genius_api_token
  243. self.playback_time = [0] # Use a list to allow updates from the thread
  244. self.is_playing = False
  245. self.create_widgets()
  246. self.playback_time_thread = threading.Thread(target=update_playback_time, args=(self.playback_label, self.playback_time))
  247. self.playback_time_thread.daemon = True
  248. self.playback_time_thread.start()
  249.  
  250. def create_widgets(self):
  251. self.search_frame = tk.Frame(self, bg='lightgrey')
  252. self.lyrics_frame = tk.Frame(self, bg='white')
  253. self.playback_frame = tk.Frame(self, bg='lightblue')
  254. self.playlist_frame = tk.Frame(self, bg='lightgreen')
  255.  
  256. self.search_frame.pack(fill=tk.BOTH, expand=True)
  257. self.lyrics_frame.pack(fill=tk.BOTH, expand=True)
  258. self.playback_frame.pack(fill=tk.BOTH, expand=True)
  259. self.playlist_frame.pack(fill=tk.BOTH, expand=True)
  260.  
  261. self.search_entry = tk.Entry(self.search_frame, width=50)
  262. self.search_entry.pack(pady=20)
  263.  
  264. self.search_button = tk.Button(self.search_frame, text="Search", command=self.search_song)
  265. self.search_button.pack(pady=10)
  266.  
  267. self.lyrics_text = tk.Text(self.lyrics_frame, wrap=tk.WORD)
  268. self.lyrics_text.pack(expand=True, fill=tk.BOTH, padx=10, pady=10)
  269.  
  270. self.playback_label = tk.Label(self.playback_frame, text="Playback Time: 00:00")
  271. self.playback_label.pack(pady=20)
  272.  
  273. self.playlist_box = tk.Listbox(self.playlist_frame)
  274. self.playlist_box.pack(expand=True, fill=tk.BOTH, padx=10, pady=10)
  275.  
  276. self.controls_frame = tk.Frame(self.playback_frame, bg='lightblue')
  277. self.controls_frame.pack(pady=10)
  278.  
  279. self.play_button = tk.Button(self.controls_frame, text="Play", command=self.play_music)
  280. self.play_button.pack(side=tk.LEFT, padx=10)
  281.  
  282. self.pause_button = tk.Button(self.controls_frame, text="Pause", command=self.pause_music)
  283. self.pause_button.pack(side=tk.LEFT, padx=10)
  284.  
  285. self.skip_button = tk.Button(self.controls_frame, text="Skip", command=self.skip_music)
  286. self.skip_button.pack(side=tk.LEFT, padx=10)
  287.  
  288. self.saved_tracks_button = tk.Button(self.search_frame, text="Show Saved Tracks", command=self.show_saved_tracks)
  289. self.saved_tracks_button.pack(pady=10)
  290.  
  291. def search_song(self):
  292. song_name = self.search_entry.get()
  293. track = search_song(self.spotify, song_name)
  294. if track:
  295. track_name = track['name']
  296. artist_name = track['artists'][0]['name']
  297.  
  298. lyrics = get_lyrics(self.genius_api_token, track_name, artist_name)
  299. self.lyrics_text.delete(1.0, tk.END)
  300. self.lyrics_text.insert(tk.END, lyrics)
  301. self.add_to_playlist(track_name)
  302. else:
  303. self.lyrics_text.delete(1.0, tk.END)
  304. self.lyrics_text.insert(tk.END, "Song not found.")
  305.  
  306. def show_saved_tracks(self):
  307. saved_tracks = get_saved_tracks(self.spotify)
  308. self.lyrics_text.delete(1.0, tk.END)
  309. if saved_tracks:
  310. for track in saved_tracks:
  311. self.lyrics_text.insert(tk.END, track + "\n")
  312. else:
  313. self.lyrics_text.insert(tk.END, "No saved tracks found.")
  314.  
  315. def add_to_playlist(self, track_name):
  316. self.playlist_box.insert(tk.END, track_name)
  317.  
  318. def play_music(self):
  319. if not self.is_playing:
  320. self.is_playing = True
  321. self.playback_time[0] = 0 # Reset playback time
  322. # Implement real play functionality with Spotify API if available
  323.  
  324. def pause_music(self):
  325. if self.is_playing:
  326. self.is_playing = False
  327. # Implement real pause functionality with Spotify API if available
  328.  
  329. def skip_music(self):
  330. if self.is_playing:
  331. self.is_playing = False
  332. # Implement real skip functionality with Spotify API if available
  333.  
  334. if __name__ == "__main__":
  335. SPOTIFY_CLIENT_ID = '42f9c566eb7b40718d13647621001bd1'
  336. SPOTIFY_CLIENT_SECRET = 'd7e829af9e41480ea75d26fda9f27143'
  337. SPOTIFY_REDIRECT_URI = 'https://dlucigithub.github.io/Spoti2Lite-project/'
  338. SCOPE = "user-library-read"
  339. GENIUS_API_TOKEN = 'XWnfwIb83SbmPxl5iBYt4sRBuBKgwXQ9w2_USDabEIP2UQDRCDi5EUQQdtXu7NOW'
  340.  
  341. spotify = initialize_spotify(SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET, SPOTIFY_REDIRECT_URI, SCOPE)
  342.  
  343. if spotify:
  344. app = MusicApp(spotify, GENIUS_API_TOKEN)
  345. app.mainloop()
  346. else:
  347. print("Failed to initialize Spotify client.")
  348.  
Tags: pyth
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement