Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- iFunny API (Android App)
- """
- from urllib2 import Request, urlopen, URLError
- import requests, time, json, random
- class API:
- API_BASE = 'https://api.ifunny.mobi/'
- API_VERSION = 'v4'
- DEFAULT_AUTH_TOKEN = 'NThGQ0Q5NkZFRDQ2RTkwN0NFODNEN0Y3QzM1QjYyRTc0QjVEMTE2REI4NEEyREE0OUZGQUI1MjA5NTQyQTBGQV9Nc09JSjM5UTI4OjY0MDcwYThkZjM3ZTk5NjE5OWVkNWUyNjdiN2E2OTNjYTFjN2E2ODM='
- DEFAULT_USER_AGENT = 'iFunny/4.4.2 android/5.0'
- def __init__(self, AUTH_TOKEN=None, API_BASE=API_BASE, API_VERSION=API_VERSION, DEFAULT_AUTH_TOKEN=DEFAULT_AUTH_TOKEN, DEFAULT_USER_AGENT=DEFAULT_USER_AGENT):
- self.API_BASE = API_BASE
- self.API_VERSION = API_VERSION
- self.API_URL = API_BASE + API_VERSION
- self.DEFAULT_AUTH_HEADER = 'Basic ' + DEFAULT_AUTH_TOKEN
- self.DEFAULT_USER_AGENT = DEFAULT_USER_AGENT
- self.AUTH_TOKEN = AUTH_TOKEN
- def get_headers(self):
- if self.AUTH_TOKEN:
- headers = {
- "Authorization": "Bearer " + self.AUTH_TOKEN,
- "user-agent": self.DEFAULT_USER_AGENT
- }
- else:
- headers = {
- "Authorization": self.DEFAULT_AUTH_HEADER,
- "user-agent": self.DEFAULT_USER_AGENT
- }
- return headers
- def do_get(self, endpoint, params=None):
- headers = self.get_headers()
- url = self.API_URL + endpoint
- res = requests.get(url, params=params, headers=headers)
- return res.json()
- def do_post(self, endpoint, data=None, files=None):
- headers = self.get_headers()
- url = self.API_URL + endpoint
- res = requests.post(url, data=data, files=files, headers=headers)
- return res.json()
- def do_put(self, endpoint, data=None, params=None):
- headers = self.get_headers()
- url = self.API_URL + endpoint
- res = requests.put(url, data=data, params=params, headers=headers)
- return res.json()
- def do_delete(self, endpoint):
- headers = self.get_headers()
- url = self.API_URL + endpoint
- res = requests.delete(url, headers=headers)
- return res.json()
- def login(self, email, password):
- if self.AUTH_TOKEN is None:
- data = {
- "grant_type": "password",
- "username": email,
- "password": password
- }
- res = self.do_post('/oauth2/token', data)
- if res.has_key('access_token'):
- self.AUTH_TOKEN = res['access_token']
- return self.AUTH_TOKEN
- else:
- return False
- else:
- return self.AUTH_TOKEN
- def get_account(self):
- if self.AUTH_TOKEN:
- return self.do_get('/account')
- else:
- return False
- def nick_exists(self, nick):
- res = self.do_get('/users/nicks_available', params={ 'nick': nick })
- return res['data']['available']
- def sugguest_tags(self, query=None):
- if query:
- return self.do_get('/tags/suggested', params={'q': query })
- else:
- return False
- def get_memes(self, limit=48, category=None):
- if category == 'popular' or category == 'new':
- return self.do_get('/sources/memes', params={'limit': limit, 'cat': category})
- else:
- return self.do_get('/sources/memes', params={'limit': limit})
- def get_task_status(self, taskID):
- return self.do_get('/tasks/' + taskID)
- def get_content(self, contentID):
- return self.do_get('/content/' + contentID)
- def get_content_comments(self, contentID, limit=40):
- return self.do_get('/content/' + contentID + '/comments', params={'limit': limit})
- def post_content(self, image, type='pic', tags=[], top_text=None, bottom_text=None):
- data = {
- "type": type,
- "tags": json.dumps(tags),
- "top_text": top_text,
- "bottom_text": bottom_text
- }
- files = {
- "image": open(image, 'rb')
- }
- return self.do_post('/content', data=data, files=files)
- def post_feeds_collective(self, limit=20):
- return self.do_post('/feeds/collective', data={'limit': limit})
- def post_comment(self, contentID, text=None):
- if contentID and text:
- return self.do_post('/content/' + contentID + '/comments', data={'text':text})
- else:
- return False
- def put_add_smile(self, contentID, fromLoc='coll'):
- if contentID:
- return self.do_put('/content/' + contentID + '/smiles?from=' + fromLoc)
- else:
- return False
- def put_add_unsmile(self, contentID, fromLoc='coll'):
- if contentID:
- return self.do_put('/content/' + contentID + '/unsmiles?from=' + fromLoc)
- else:
- return False
- def put_add_smile_comment(self, contentID, commentID):
- if contentID and commentID:
- return self.do_put('/content/' + contentID + '/comments/' + commentID + '/smile')
- else:
- return False
- def put_add_unsmile_comment(self, contentID, commentID):
- if contentID and commentID:
- return self.do_put('/content/' + contentID + '/comments/' + commentID + '/unsmile')
- else:
- return False
- def delete_smile(self, contentID, fromLoc='coll'):
- if contentID:
- return self.do_delete('/content/' + contentID + '/smiles?from=' + fromLoc)
- else:
- return False
- def delete_unsmile(self, contentID, fromLoc='coll'):
- if contentID:
- return self.do_delete('/content/' + contentID + '/unsmiles?from=' + fromLoc)
- else:
- return False
- def delete_smile_comment(self, contentID, commentID):
- if contentID and commentID:
- return self.do_delete('/content/' + contentID + '/comments/' + commentID + '/smiles')
- else:
- return False
- def delete_unsmile_comment(self, contentID, commentID):
- if contentID and commentID:
- return self.do_delete('/content/' + contentID + '/comments/' + commentID + '/unsmiles')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement