Skip to content

Instantly share code, notes, and snippets.

@hallazzang
Created May 12, 2015 16:32
Show Gist options
  • Save hallazzang/2e40530538c39d4454d2 to your computer and use it in GitHub Desktop.
Save hallazzang/2e40530538c39d4454d2 to your computer and use it in GitHub Desktop.
Kakaostory like bot example
# coding: utf-8
import requests
import time
class KakaoStoryAPI(object):
def __init__(self, cookie):
self.headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:37.0) Gecko/20100101 Firefox/37.0',
'Accept': 'application/json',
'Accept-Language': 'ko',
'X-Kakao-ApiLevel': 19,
'X-Kakao-DeviceInfo': 'web:-;-;-',
'X-Requested-With': 'XMLHttpRequest',
'Referer': 'https://story.kakao.com/',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Cookie': cookie
}
def feeds(self):
url = 'https://story.kakao.com/a/feeds?_={}'.format(self.make_timestamp())
response = requests.get(url, headers=self.headers)
if response.status_code == 200:
return response.json()['feeds']
def post_emotion(self, feed_id, emotion):
url = 'https://story.kakao.com/a/activities/{}/like?_={}'.format(feed_id, self.make_timestamp())
data = {'emotion': emotion}
response = requests.post(url, headers=self.headers, data=data)
if response.status_code == 200:
return response.json()['liked'] == True
def delete_emotion(self, feed_id):
url = 'https://story.kakao.com/a/activities/{}/like?_={}'.format(feed_id, self.make_timestamp())
response = requests.delete(url, headers=self.headers)
if response.status_code == 200:
return response.json()['liked'] == False
@staticmethod
def make_timestamp():
return '{:.5f}'.format(time.time()).replace('.', '')
client = KakaoStoryAPI('Your Cookie Here') # Edit this line!
for feed in client.feeds():
if not feed['liked']:
if client.post_emotion(feed['feed_id'], 'like') == True:
print 'successfully posted emotion.'
else:
print 'an error occurred while posting emotion.'
time.sleep(0.5)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment