class Test1AccessTokenSecret(unittest.TestCase): def setUp(self): try: file = open('API.keys', 'r+') except IOError: print("You need to put key/secret in API.keys") raise except: print("Unexpected error:", sys.exc_info()[0]) else: data = json.load(file) file.close() self.plurk = PlurkAPI(data["CONSUMER_KEY"], data["CONSUMER_SECRET"]) def teardown(self): pass def test_invalid_access_key(self): self.plurk.authorize("foor", "bar") r = self.plurk.callAPI('/APP/Profile/getOwnProfile') self.assertIsNone(r) err = self.plurk.error() self.assertEqual(err['code'], "400") self.assertEqual(err['reason'], "BAD REQUEST") self.assertEqual(err['content']['error_text'], "40106:invalid access token")
class Test1AccessTokenSecret(unittest.TestCase): def setUp(self): pass def teardown(self): pass def test_invalid_access_key(self): self.plurk = PlurkAPI("key", "secret") self.plurk.authorize("foor", "bar") r = self.plurk.callAPI('/APP/Profile/getOwnProfile') self.assertIsNone(r) err = self.plurk.error() self.assertEqual(err['code'], 400) self.assertEqual(err['reason'], "BAD REQUEST") self.assertEqual(err['content']['error_text'], "40106:invalid access token")
class Test1AccessTokenSecret(unittest.TestCase): def setUp(self): pass def teardown(self): pass def test_invalid_access_key(self): self.plurk = PlurkAPI("key", "secret") self.plurk.authorize("foor", "bar") r = self.plurk.callAPI('/APP/Profile/getOwnProfile') self.assertIsNone(r) err = self.plurk.error() self.assertEqual(err['code'], 400) self.assertEqual(err['reason'], "BAD REQUEST") self.assertEqual(err['content']['error_text'], "40106:invalid access token")
def hello(event, context): load_dotenv() plurkAPI = PlurkAPI(os.environ['PLURK_APP_KEY'], os.environ['PLURK_SECRET']) plurkAPI.authorize(os.environ['PLURK_ACCESS_TOKEN'], os.environ['PLRUK_ACCESS_SECRET']) query = os.environ['QUERY'] max_size = int(os.environ['MAX_SIZE']) offset = 0 while offset < max_size: results = plurkAPI.callAPI('/APP/PlurkSearch/search', options={ 'query': query, 'offset': offset }) filtered = list(filter(sould_replurk, results['plurks'])) if not filtered: break plurk_ids = list(map(lambda x: x['plurk_id'], filtered)) #print(plurk_ids) plurkAPI.callAPI('/APP/Timeline/replurk', options={'ids': json.dumps(plurk_ids)}) offset += results['last_offset']
all_plurks = re.sub("\n[A-Za-z0-9_]*:", "\n", all_plurks) with open("data/" + i[1] + "_about.txt", "w") as f: f.write(about.encode("utf-8")) with open("data/" + i[1] + "_content.txt", "w") as f: f.write(all_plurks.encode("utf-8")) OAUTH_REQUEST_TOKEN = "https://www.plurk.com/OAuth/request_token" OAUTH_kCCESS_TOKEN = "https://www.plurk.com/OAuth/access_token" key = "5JyesLyP14Hl" secret = "sZbmxdVjYVjzkkJQ1LgK6z3dr8L1WwBs" token = "xexYrByo6gIC" token_secret = "XS6HdIwMX05wTUrTU1DGhalEz0jCuf31" plurk = PlurkAPI(key, secret) plurk.authorize(token, token_secret) if (args.keyword == ""): if int(args.friends_n) == 0: if int(args.plurks_n) != 0: my_Profile = plurk.callAPI("/APP/Profile/getPublicProfile", options={"user_id": args.user}) my_id = my_Profile["user_info"]["id"] friends_list = [(my_id, args.user)] get_friends_data(friends_list) exit() else: print("GG") exit() if int(args.plurks_n) == 0: print("GG")
#!/usr/bin/python # -*- coding:utf-8 -*- import re import json import urllib2 import telepot import time import pprint from plurk_oauth import PlurkAPI from ConfigParser import SafeConfigParser parser = SafeConfigParser() parser.read('apitoken.txt') plurk = PlurkAPI(parser.get('plurk', 'appkey'), parser.get('plurk', 'appsecret')) plurk.authorize(parser.get('plurk', 'usertoken'), parser.get('plurk', 'usersecret')) try: comet = plurk.callAPI('/APP/Realtime/getUserChannel') except: while True: comet = plurk.callAPI('/APP/Realtime/getUserChannel') if 'channel_name' in comet: break comet_channel = comet.get('comet_server') + "&new_offset=%d" jsonp_re = re.compile('CometChannel.scriptCallback\((.+)\);\s*') new_offset = -50 def handle(msg): #debug用 #pprint.pprint(msg)
#!/usr/bin/python # -*- coding:utf-8 -*- import re import json import urllib.request import random from itertools import islice #import oauth2 as oauth import sys from plurk_oauth import PlurkAPI plurk = PlurkAPI('APP_KEY', 'APP_SECRET') plurk.authorize('ACCEESS_TOKEN', 'ACCESS_TOKEN_SECRET') comet = plurk.callAPI('/APP/Realtime/getUserChannel') comet_channel = comet.get('comet_server') + "&new_offset=%d" jsonp_re = re.compile('CometChannel.scriptCallback\((.+)\);\s*'); keywords = [u'什麼', u'甚麼', u'what', u'?', u'?', u'沙小', u'啥'] others = dict({u'儚い': '* https://emos.plurk.com/03860276d09cb8c3af57f4e1f67d7a10_w48_h48.gif ** https://emos.plurk.com/03860276d09cb8c3af57f4e1f67d7a10_w48_h48.gif ** https://emos.plurk.com/03860276d09cb8c3af57f4e1f67d7a10_w48_h48.gif * 儚い~ * https://emos.plurk.com/03860276d09cb8c3af57f4e1f67d7a10_w48_h48.gif ** https://emos.plurk.com/03860276d09cb8c3af57f4e1f67d7a10_w48_h48.gif ** https://emos.plurk.com/03860276d09cb8c3af57f4e1f67d7a10_w48_h48.gif *', u'小薰': '......つ!!!! 小千...(臉紅 https://emos.plurk.com/3110c3c233c48956057ec5c4628e3629_w39_h48.png', u'kaoru': '什麼事? 可愛的小貓咪?', u'喵': '\nhttps://emos.plurk.com/2855722f8a0cac58d9503de3999e3a16_w46_h48.jpeg 喔呀,可愛的小貓咪有什麼事呢? 這麼大的雨,待在這裡可是會感冒的喔?\nhttps://emos.plurk.com/cbf27bddd90675c4baf25fc7ce9c9ee9_w48_h47.jpeg ...薰,你在做什麼?\nhttps://emos.plurk.com/c998f6c405b82415369ee41a5cecb8bb_w48_h48.gif 呦,千聖,我打算給迷失的小貓咪找個家哦\nhttps://emos.plurk.com/2c98e01f6ab8b6483815c43b263e76fc_w47_h48.jpeg ...傘給我\nhttps://emos.plurk.com/8737ccc164cff4da40a56e1048e6d55e_w44_h48.jpeg ?\nhttps://emos.plurk.com/fff851e041880f422788fbc81f1ee159_w45_h48.jpeg 把傘給我幫你拿,這樣你也比較輕鬆吧?', u'貓咪': '\n哎呀 看來又有一隻小貓咪因為我的美麗 被奪去了心神\n啊~ 太美也是一種罪惡啊', u'嗚欸': '啊,花音,你又迷路了嗎?', u'嗚誒': '啊,花音,你又迷路了嗎? 我們一起走吧', u'莎莎': '我的名字不叫莎莎喔,小貓咪', u'千聖': '千聖是我的幼馴染呢,你也喜歡她嗎? 我也是呢 (自豪+儚い閃光',
class PlurkBot: def __init__(self): self.startTime = datetime.now(gmt8) self.p = PlurkAPI() self.p.authorize() if self.p.is_authorized(): print('%s, authorization completed' % now_str()) else: raise RuntimeError('authorize fail') def getActive(self): return self.p.callAPI('/APP/Alerts/getActive') def addAsFriend(self, uid): return self.p.callAPI('/APP/Alerts/addAsFriend', {'user_id': uid}) def poll_getPlurks(self, options): return self.p.callAPI('/APP/Polling/getPlurks', options) def responseAdd(self, plurkId, content, qualifier=':'): options = { 'plurk_id': plurkId, 'content': content, 'qualifier': qualifier } return self.p.callAPI('/APP/Responses/responseAdd', options) def check_notify_and_add_friend(self, logFile): t_str = now_str() alerts = self.getActive() logFile.log('%s, getActive, getAlert=%d' % (t_str, len(alerts))) for alert in alerts: print('notify type: %s' % alert['type']) if alert['type'] == 'friendship_request': uid = alert['from_user']['id'] logFile.log('%s, addAsFriend, uid=%d' % (t_str, uid)) self.addAsFriend(uid) def fetch_newer_plurks( self, offset, logFile, plurkFile): # start from offset to now, return plurks t_str = now_str() options = { 'offset': offset, 'limit': '20', 'minimal_data': 'true', 'minimal_user': '******' } data = self.poll_getPlurks( options) # offset = datetime.isoformat(timespec='seconds') ls = [] for pk in data['plurks']: plurkFile.log('%s, %s, uid=%d, pkid=%d, %r' % (t_str, gmt2offset(pk['posted']), pk['user_id'], pk['plurk_id'], pk['content_raw'])) ls.append(pk['plurk_id']) logFile.log('%s, Poll/getPlurks, %s, plurk=%d, pks=%s' % (t_str, offset, len(data['plurks']), ls)) return data['plurks'] # def fetch_period_plurks(self,dt1,dt2): # start from dt1 to dt2, return plurks # loader = [] # dt = dt1 # while dt < dt2: # pks = self.fetch_newer_plurks(dt2offset(dt),logFile,plurkFile) # print('from %s, get %d plurk' % (dt2offset(dt), len(pks))) # dt = get_plurk_post_time(pks[-1:]) # update last time # print('last time in plurk: %s' % dt2offset(dt)) # if dt < dt2: # add all # loader = loader + pks # else: # overhead # for pk in pks: # t = get_plurk_post_time(pk) # if t < dt2: # print('add plurk, plurkId=%d, postTime=%s' % (pk['plurk_id '], pk['posted'])) # loader.append(pk) # else: # break # print('get %d plurk' % len(loader)) # return loader def test_keywords(self, keywordList, string): for i in range(len(keywordList)): if keywordList[i] in string: return True, i + 1 return False, None def timeline_detect(self, logFile, plurkFile): pks = self.fetch_newer_plurks(ts2offset(now() - 62), logFile, plurkFile) keywordList = ['!占星骰', '!占星骰', '#召喚占星骰', '[召喚占星骰]', '召喚占星骰'] for pk in pks: b, i = self.test_keywords(keywordList, pk['content_raw']) if b: print('has keyword') self.reply_astroDice(pk['plurk_id'], i, logFile) def reply_astroDice(self, plurkId, keywordId, logFile): tpl = dice() content = dice2str(tpl) logFile.log('%s, responseAdd, keyword=%d, pkid=%d, dice(%s)' % (now_str(), keywordId, plurkId, str(tpl))) self.responseAdd(plurkId, content)
import json def usage(): print('''Help Information: -h: Show help information ''') if __name__ == '__main__': try: opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help", "output="]) except getopt.GetoptError as err: print(str(err)) # will print something like "option -a not recognized" usage() sys.exit(2) with open('API.keys', 'r+') as f: data = json.load(f) plurk = PlurkAPI(data["CONSUMER_KEY"], data["CONSUMER_SECRET"]) if data.get('ACCESS_TOKEN'): plurk.authorize(data["ACCESS_TOKEN"], data["ACCESS_TOKEN_SECRET"]) else: plurk.authorize() data["ACCESS_TOKEN"] = plurk._oauth.oauth_token['oauth_token'] data["ACCESS_TOKEN_SECRET"] = plurk._oauth.oauth_token['oauth_token_secret'] f.seek(0) json.dump(data, f) print(plurk.callAPI('/APP/Profile/getOwnProfile'))
def usage(): print('''Help Information: -h: Show help information ''') if __name__ == '__main__': try: opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help", "output="]) except getopt.GetoptError as err: print(str(err)) # will print something like "option -a not recognized" usage() sys.exit(2) with open('API.keys', 'r+') as f: data = json.load(f) plurk = PlurkAPI(data["CONSUMER_KEY"], data["CONSUMER_SECRET"]) if data.get('ACCESS_TOKEN'): plurk.authorize(data["ACCESS_TOKEN"], data["ACCESS_TOKEN_SECRET"]) else: plurk.authorize() data["ACCESS_TOKEN"] = plurk._oauth.oauth_token['oauth_token'] data["ACCESS_TOKEN_SECRET"] = plurk._oauth.oauth_token[ 'oauth_token_secret'] f.seek(0) json.dump(data, f) print(plurk.callAPI('/APP/Profile/getOwnProfile'))
import base36 import urllib.request as urllib2 import sys import json from datetime import datetime import datetime from html.parser import HTMLParser with open('token.json', 'r') as reader: Tjs = json.loads(reader.read()) TOKEN = Tjs['Discord']['Token'] ChannelID = Tjs['Discord']['ChannelID'] plurk = PlurkAPI(Tjs['Plurk']['APP_KEY'], Tjs['Plurk']['APP_SECRET']) plurk.authorize(Tjs['Plurk']['ACCEESS_TOKEN'], Tjs['Plurk']['ACCESS_TOKEN_SECRET']) Client = discord.Client() bot = commands.Bot(command_prefix=Tjs['Discord']['Prefix']) BlockedUser = dict() def GetPlurkss(): return plurk.callAPI('/APP/Timeline/getPlurks', options={ 'limit': '1', 'minimal_data': 'false', 'minimal_user': '******' })
yin_yang_yao(input_list_summed[4], compute_move=True), yin_yang_yao(input_list_summed[5], compute_move=True), ) change_to = baguaToHexagram(strToBagua(up)+strToBagua(down)) return this_hexa, change_to config = configparser.RawConfigParser() config.read('config.ini') App_key = config.get('SECRET', 'App_key') App_secret = config.get('SECRET', 'App_secret') oauth_token_secret = config.get('SECRET', 'oauth_token_secret') oauth_token = config.get('SECRET', 'oauth_token') print('Authorizing...') plurk = PlurkAPI(App_key, App_secret) plurk.authorize(oauth_token, oauth_token_secret) # Do some tests for a certain fixed plurk (https://www.plurk.com/p/mpxyit) req = plurk.callAPI('/APP/Timeline/getPlurk/?plurk_id={}'.format(1373830661)) content_raw = req['plurk']['content_raw'] content = req['plurk']['content'] is_ask = isAsking(content_raw) if(is_ask): h, t = is_ask hexagram_raw = content.split('<br />')[h:t+1] hexagram_list = [[swapRndnum(int(y.split(' ')[-2][-2])) for y in c.split('<')[1:]] for c in hexagram_raw ] print(listToHexagram(hexagram_list)) '''