1
1
from uuid import uuid4
2
2
3
- import os
3
+ import os , urllib . request , logging , json , sys , base64
4
4
from telegram .ext import Updater , CommandHandler , MessageHandler , Filters , InlineQueryHandler
5
5
from telegram import InputTextMessageContent , InlineQueryResultArticle
6
- import urllib .request
7
- import logging
8
- import json
9
- import sys
10
- import base64
11
6
12
7
# Enable logging
13
8
logging .basicConfig (format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' , level = logging .INFO )
@@ -45,11 +40,16 @@ def get_auth_token():
45
40
auth_request = urllib .request .Request ("https://accounts.spotify.com/api/token" , data = request_body )
46
41
auth_request .add_header ("Authorization" , "Basic " + auth_token_encoded .decode ())
47
42
48
- auth_response = json .loads (urllib .request .urlopen (auth_request ).read ())
43
+ try :
44
+ auth_response = json .loads (urllib .request .urlopen (auth_request ).read ())
45
+ except urllib .error .HTTPError as err :
46
+ print (err .read ())
47
+
49
48
access_token = auth_response ["access_token" ]
49
+
50
50
return access_token
51
51
52
- def search (query , query_type ):
52
+ def search (query , query_type , auth_token ):
53
53
# replace all spaces with %20 as per Spotify Web API
54
54
search_query = query .lower ().strip ().replace (" " , "%20" )
55
55
api_base_url = "https://api.spotify.com/v1/search?q="
@@ -63,7 +63,6 @@ def search(query, query_type):
63
63
search_url = search_types [query_type ]
64
64
65
65
request = urllib .request .Request (search_url )
66
- auth_token = get_auth_token ()
67
66
request .add_header ("Authorization" , "Bearer " + auth_token )
68
67
69
68
try :
@@ -85,17 +84,21 @@ def search(query, query_type):
85
84
86
85
# main function to handle all inline queries
87
86
def inlinequery (bot , update ):
87
+
88
+ print ("New query started" )
88
89
query = update .inline_query .query
89
90
results = list ()
90
91
types = ['Track' , 'Artist' , 'Album' , 'Playlist' ]
91
92
93
+ auth_token = get_auth_token ()
94
+
92
95
# if empty query, return blank results to prevent unnecessary Spotify API calls
93
96
if query == '' :
94
97
return results
95
98
else :
96
99
# each new value will show up in the response to the user
97
100
for _type in types :
98
- response = search (query , _type .lower ())
101
+ response = search (query , _type .lower (), auth_token )
99
102
if response is not None :
100
103
results .append (InlineQueryResultArticle (id = uuid4 (),
101
104
title = _type ,
0 commit comments