testing out python alternative

This commit is contained in:
2019-07-06 13:30:02 +02:00
parent e0121c82bc
commit a1374ebf4d

87
main.py Normal file
View File

@@ -0,0 +1,87 @@
import requests
from redis import Redis
import pickle
from urllib.parse import urljoin, quote
import os
from pprint import pprint
BASE_URL = 'https://api.kevinmidboe.com/'
AUTHORIZATION_TOKEN = None
CACHE_FILE = './cache.pickle'
CACHE = Redis(host='localhost', port=6379, db=0)
def writeObjectToCache(key, obj):
print('object to cache', obj)
pickledObj = pickle.dumps(obj)
CACHE.set(key, pickledObj)
def readCache(key):
value = CACHE.get(key)
return pickle.loads(value)
def flushCache():
CACHE.flushdb(0)
def releaseFromCache(request):
return False
def authenticateSeasoned(username, password):
global AUTHORIZATION_TOKEN
uri = urljoin(BASE_URL, '/api/v1/user/login')
payload = { 'username': username, 'password': password }
r = requests.post(uri, data=payload)
data = r.json()
AUTHORIZATION_TOKEN = data['token']
def fetchRequests(pages=1):
uri = urljoin(BASE_URL, '/api/v2/request')
r = requests.get(uri)
return r.json()
def releasesFromRequest(request):
uri = urljoin(BASE_URL, '/api/v1/pirate/search?query=' + quote(request['title']))
cacheHit = readCache(uri)
if cacheHit:
return cacheHit
headers = { 'authorization': AUTHORIZATION_TOKEN }
r = requests.get(uri, headers=headers)
if r.status_code == requests.codes.unauthorized:
print('uath')
authenticateSeasoned('kevin', 'test123')
releasesFromRequest(request)
return
elif r.status_code == requests.codes.ok:
response = r.json()
writeObjectToCache(uri, response)
return response
else:
return None
def main():
requests = fetchRequests()
results = requests['results']
totalPages = requests['total_pages']
mediaWithReleases = []
for result in results:
releases = releasesFromRequest(result)
mediaWithReleases.append({'rel': releases, 'media': result})
pprint(mediaWithReleases[:3])
for l in mediaWithReleases[:3]:
if len(l['rel']['results']) > 0:
print(l['rel']['results'][0]['release_type'])
print(totalPages)
if __name__ == '__main__':
main()