don't redownload file

This commit is contained in:
l 2017-12-21 19:25:11 +01:00
parent d079758203
commit 38db700aca
2 changed files with 19 additions and 14 deletions

View File

@ -1,2 +1,7 @@
# supeapp.py # supeapp.py - Supeapp python client
Supeapp python client
Since SupeApp/Supe.me/Supe.io has closed so I'm disclosing this publicly.
SupeApp was a Social Networking app like Snapchat where users (mainly well-known VIP/Models) could post public/private media for free or by paid subscription.
To convince free users to buy subscriptions, paid media were displayed blurred and with a "Pay now" dialog on top.
The blurring effect was done client-side so I realized a PoC python client to call the API directly and store the clear media.

View File

@ -8,7 +8,7 @@ API_HEADERS = {
'User-Agent': 'okhttp/3.6.0', 'User-Agent': 'okhttp/3.6.0',
'Platform-Name': 'Android 8.0.0', 'Platform-Name': 'Android 8.0.0',
'Application-Version': '1.1.2', 'Application-Version': '1.1.2',
'Device-Name': 'OnePlus ONEPLUS A3003', 'Device-Name': 'OnePlus ONEPLUS A0001',
'Authorization': 'Bearer {}'.format(os.environ['SUPE_TOKEN']), 'Authorization': 'Bearer {}'.format(os.environ['SUPE_TOKEN']),
'Accept': 'application/vnd.api.v3+json', 'Accept': 'application/vnd.api.v3+json',
'Content-Type': 'application/json' 'Content-Type': 'application/json'
@ -26,12 +26,13 @@ def download(media_url, cwd=expanduser("~")):
filename = media_url.split("/")[-1] filename = media_url.split("/")[-1]
file_path = join(cwd, filename) file_path = join(cwd, filename)
r = requests.get(media_url, stream=True) if not os.path.isfile(file_path):
if r.status_code == 403: r = requests.get(media_url, stream=True)
raise Exception("Access Denied") if r.status_code == 403:
with open(file_path, 'wb') as fh: raise Exception("Access Denied")
for chunk in r.iter_content(chunk_size=1024): with open(file_path, 'wb') as fh:
fh.write(chunk) for chunk in r.iter_content(chunk_size=1024):
fh.write(chunk)
def get_pubblishers(): def get_pubblishers():
obj = request("me/inbox/publishers?type=broadcast", method='GET') obj = request("me/inbox/publishers?type=broadcast", method='GET')
@ -41,24 +42,23 @@ def get_pubblishers():
print(user['id'],user['username']) print(user['id'],user['username'])
profile_pic = user['_embedded']['profileAsset']['filename'] profile_pic = user['_embedded']['profileAsset']['filename']
cwd = join("./media",str(user['id'])) cwd = join("./media",str(user['username']))
if not os.path.isdir(cwd): if not os.path.isdir(cwd):
os.mkdir(cwd) os.mkdir(cwd)
download(profile_pic, cwd=cwd) download(profile_pic, cwd=cwd)
get_pubblisher_video(user['id']) get_pubblisher_video(user['id'], cwd)
def get_pubblisher_video(pub_id): def get_pubblisher_video(pub_id, cwd):
obj = request("me/inbox/publisher/{}?type=broadcast".format(pub_id), method='GET') obj = request("me/inbox/publisher/{}?type=broadcast".format(pub_id), method='GET')
posts = obj['_embedded']['items'] posts = obj['_embedded']['items']
for post in posts: for post in posts:
print(post['id'],post['type'],post['caption']) print(post['id'],post['type'])
media = post['_embedded']['asset']['filename'] media = post['_embedded']['asset']['filename']
cwd = join("./media",str(pub_id))
if not os.path.isdir(cwd): if not os.path.isdir(cwd):
os.mkdir(cwd) os.mkdir(cwd)