Advertisement
Guest User

iFunny API

a guest
Dec 6th, 2015
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.24 KB | None | 0 0
  1. """
  2.    iFunny API (Android App)
  3. """
  4. from urllib2 import Request, urlopen, URLError
  5. import requests, time, json, random
  6.  
  7. class API:
  8.  
  9.     API_BASE = 'https://api.ifunny.mobi/'
  10.     API_VERSION = 'v4'
  11.     DEFAULT_AUTH_TOKEN = 'NThGQ0Q5NkZFRDQ2RTkwN0NFODNEN0Y3QzM1QjYyRTc0QjVEMTE2REI4NEEyREE0OUZGQUI1MjA5NTQyQTBGQV9Nc09JSjM5UTI4OjY0MDcwYThkZjM3ZTk5NjE5OWVkNWUyNjdiN2E2OTNjYTFjN2E2ODM='
  12.     DEFAULT_USER_AGENT = 'iFunny/4.4.2 android/5.0'
  13.  
  14.     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):
  15.         self.API_BASE = API_BASE
  16.         self.API_VERSION = API_VERSION
  17.         self.API_URL = API_BASE + API_VERSION
  18.         self.DEFAULT_AUTH_HEADER = 'Basic ' + DEFAULT_AUTH_TOKEN
  19.         self.DEFAULT_USER_AGENT = DEFAULT_USER_AGENT
  20.         self.AUTH_TOKEN = AUTH_TOKEN
  21.  
  22.     def get_headers(self):
  23.         if self.AUTH_TOKEN:
  24.             headers = {
  25.                 "Authorization": "Bearer " + self.AUTH_TOKEN,
  26.                 "user-agent": self.DEFAULT_USER_AGENT
  27.             }
  28.         else:
  29.             headers = {
  30.                 "Authorization": self.DEFAULT_AUTH_HEADER,
  31.                 "user-agent": self.DEFAULT_USER_AGENT
  32.             }
  33.         return headers
  34.  
  35.     def do_get(self, endpoint, params=None):
  36.         headers = self.get_headers()
  37.         url = self.API_URL + endpoint
  38.         res = requests.get(url, params=params, headers=headers)
  39.         return res.json()
  40.  
  41.     def do_post(self, endpoint, data=None, files=None):
  42.         headers = self.get_headers()
  43.         url = self.API_URL + endpoint
  44.         res = requests.post(url, data=data, files=files, headers=headers)
  45.         return res.json()
  46.  
  47.     def do_put(self, endpoint, data=None, params=None):
  48.         headers = self.get_headers()
  49.         url = self.API_URL + endpoint
  50.         res = requests.put(url, data=data, params=params, headers=headers)
  51.         return res.json()
  52.  
  53.     def do_delete(self, endpoint):
  54.         headers = self.get_headers()
  55.         url = self.API_URL + endpoint
  56.         res = requests.delete(url, headers=headers)
  57.         return res.json()
  58.  
  59.     def login(self, email, password):
  60.         if self.AUTH_TOKEN is None:
  61.             data = {
  62.                 "grant_type": "password",
  63.                 "username": email,
  64.                 "password": password
  65.             }
  66.             res = self.do_post('/oauth2/token', data)
  67.             if res.has_key('access_token'):
  68.                 self.AUTH_TOKEN = res['access_token']
  69.                 return self.AUTH_TOKEN
  70.             else:
  71.                 return False
  72.         else:
  73.             return self.AUTH_TOKEN
  74.    
  75.     def get_account(self):
  76.         if self.AUTH_TOKEN:
  77.             return self.do_get('/account')
  78.         else:
  79.             return False
  80.    
  81.     def nick_exists(self, nick):
  82.         res = self.do_get('/users/nicks_available', params={ 'nick': nick })
  83.         return res['data']['available']
  84.    
  85.     def sugguest_tags(self, query=None):
  86.         if query:
  87.             return self.do_get('/tags/suggested', params={'q': query })
  88.         else:
  89.             return False
  90.    
  91.     def get_memes(self, limit=48, category=None):
  92.         if category == 'popular' or category == 'new':
  93.             return self.do_get('/sources/memes', params={'limit': limit, 'cat': category})
  94.         else:
  95.             return self.do_get('/sources/memes', params={'limit': limit})
  96.    
  97.     def get_task_status(self, taskID):
  98.         return self.do_get('/tasks/' + taskID)
  99.    
  100.     def get_content(self, contentID):
  101.         return self.do_get('/content/' + contentID)
  102.    
  103.     def get_content_comments(self, contentID, limit=40):
  104.         return self.do_get('/content/' + contentID + '/comments', params={'limit': limit})
  105.    
  106.     def post_content(self, image, type='pic', tags=[], top_text=None, bottom_text=None):
  107.         data = {
  108.             "type": type,
  109.             "tags": json.dumps(tags),
  110.             "top_text": top_text,
  111.             "bottom_text": bottom_text
  112.         }
  113.         files = {
  114.             "image": open(image, 'rb')
  115.         }
  116.         return self.do_post('/content', data=data, files=files)
  117.  
  118.     def post_feeds_collective(self, limit=20):
  119.         return self.do_post('/feeds/collective', data={'limit': limit})
  120.    
  121.     def post_comment(self, contentID, text=None):
  122.         if contentID and text:
  123.             return self.do_post('/content/' + contentID + '/comments', data={'text':text})
  124.         else:
  125.             return False
  126.    
  127.     def put_add_smile(self, contentID, fromLoc='coll'):
  128.         if contentID:
  129.             return self.do_put('/content/' + contentID + '/smiles?from=' + fromLoc)
  130.         else:
  131.             return False
  132.    
  133.     def put_add_unsmile(self, contentID, fromLoc='coll'):
  134.         if contentID:
  135.             return self.do_put('/content/' + contentID + '/unsmiles?from=' + fromLoc)
  136.         else:
  137.             return False
  138.    
  139.     def put_add_smile_comment(self, contentID, commentID):
  140.         if contentID and commentID:
  141.             return self.do_put('/content/' + contentID + '/comments/' + commentID + '/smile')
  142.         else:
  143.             return False
  144.    
  145.     def put_add_unsmile_comment(self, contentID, commentID):
  146.         if contentID and commentID:
  147.             return self.do_put('/content/' + contentID + '/comments/' + commentID + '/unsmile')
  148.         else:
  149.             return False
  150.    
  151.     def delete_smile(self, contentID, fromLoc='coll'):
  152.         if contentID:
  153.             return self.do_delete('/content/' + contentID + '/smiles?from=' + fromLoc)
  154.         else:
  155.             return False
  156.    
  157.     def delete_unsmile(self, contentID, fromLoc='coll'):
  158.         if contentID:
  159.             return self.do_delete('/content/' + contentID + '/unsmiles?from=' + fromLoc)
  160.         else:
  161.             return False
  162.    
  163.     def delete_smile_comment(self, contentID, commentID):
  164.         if contentID and commentID:
  165.             return self.do_delete('/content/' + contentID + '/comments/' + commentID + '/smiles')
  166.         else:
  167.             return False
  168.    
  169.     def delete_unsmile_comment(self, contentID, commentID):
  170.         if contentID and commentID:
  171.             return self.do_delete('/content/' + contentID + '/comments/' + commentID + '/unsmiles')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement