mirror of
				https://github.com/KevinMidboe/fetch-the-release.git
				synced 2025-10-29 17:40:23 +00:00 
			
		
		
		
	testing out python alternative
This commit is contained in:
		
							
								
								
									
										87
									
								
								main.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								main.py
									
									
									
									
									
										Normal 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() | ||||||
		Reference in New Issue
	
	Block a user