From d07975820375c9bc6f87c41f67699af8715b434b Mon Sep 17 00:00:00 2001 From: l Date: Thu, 21 Dec 2017 18:09:30 +0100 Subject: [PATCH] supeapp PoC --- .gitignore | 3 +++ supeapp.py | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 supeapp.py diff --git a/.gitignore b/.gitignore index 7bbc71c..13d87a6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +TOKEN +media/ + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/supeapp.py b/supeapp.py new file mode 100644 index 0000000..315658a --- /dev/null +++ b/supeapp.py @@ -0,0 +1,69 @@ +import requests +import os +from os.path import expanduser, join + +API_DOMAIN = "http://api.supe.io/" + +API_HEADERS = { + 'User-Agent': 'okhttp/3.6.0', + 'Platform-Name': 'Android 8.0.0', + 'Application-Version': '1.1.2', + 'Device-Name': 'OnePlus ONEPLUS A3003', + 'Authorization': 'Bearer {}'.format(os.environ['SUPE_TOKEN']), + 'Accept': 'application/vnd.api.v3+json', + 'Content-Type': 'application/json' +} + +# Standard code for making request \o/ +def request(endpoint, data={}, headers={}, method='POST'): + headers.update(API_HEADERS) + r = requests.request(method, API_DOMAIN+endpoint, data=data, headers=headers) + if r.status_code == 200: + return r.json() + return None + +def download(media_url, cwd=expanduser("~")): + filename = media_url.split("/")[-1] + file_path = join(cwd, filename) + + r = requests.get(media_url, stream=True) + if r.status_code == 403: + raise Exception("Access Denied") + with open(file_path, 'wb') as fh: + for chunk in r.iter_content(chunk_size=1024): + fh.write(chunk) + +def get_pubblishers(): + obj = request("me/inbox/publishers?type=broadcast", method='GET') + users = obj['_embedded']['items'] + + for user in users: + print(user['id'],user['username']) + + profile_pic = user['_embedded']['profileAsset']['filename'] + cwd = join("./media",str(user['id'])) + if not os.path.isdir(cwd): + os.mkdir(cwd) + + download(profile_pic, cwd=cwd) + + get_pubblisher_video(user['id']) + + +def get_pubblisher_video(pub_id): + obj = request("me/inbox/publisher/{}?type=broadcast".format(pub_id), method='GET') + posts = obj['_embedded']['items'] + + for post in posts: + print(post['id'],post['type'],post['caption']) + + media = post['_embedded']['asset']['filename'] + cwd = join("./media",str(pub_id)) + if not os.path.isdir(cwd): + os.mkdir(cwd) + + print("Downloading {}".format(post['_embedded']['asset']['type'])) + download(media, cwd=cwd) + + +get_pubblishers() \ No newline at end of file