#! python3
# -*- coding:utf-8 -*-
import requests
import re
import hashlib
import json
import time
class tieba:
# 填入自己的cookie中的bduss
bduss = ''
# 填入自己的百度id
myid = ''
url = 'http://tieba.baidu.com/home/main?un=' + myid + '&fr=index'
headers = {'Cookie': 'BDUSS=' + bduss}
lists = []
def __init__(self):
self.get_list()
def chlis(self, kw):
for i in range(len(self.lists)):
if self.lists[i]['name'] == kw:
self.lists[i]['is_sign'] = 1
def get_list(self):
r = requests.get(self.url, headers=self.headers)
rul = re.findall(r'forumArr":(\[.+?), "ihome"', r.text)[0]
ruls = re.findall(r'{.+?}', rul)
for i in ruls:
one = eval(i)
self.lists.append(
{'name': one['forum_name'], 'is_sign': one['is_sign']})
def getPostDita(self, kws):
tbs = requests.get('http://tieba.baidu.com/dc/common/tbs',
headers=self.headers).json()['tbs']
get_fid_url = 'http://tieba.baidu.com/f/commit/share/fnameShareApi?ie=utf-8&fname=%s' % kws
fid = requests.get(get_fid_url, headers=self.headers).json()[
'data']['fid']
return {'fid': fid, 'kw': kws, 'BDUSS': self.bduss, 'tbs': tbs}
def getData(self, postDict):
p_sign = "BDUSS={BDUSS}fid={fid}kw={kw}tbs={tbs}tiebaclient!!!"
postDict['sign'] = hashlib.md5(p_sign.format(
**postDict).encode('utf-8')).hexdigest().upper()
return postDict
def sign(self, kw):
postDict = self.getPostDita(kw)
postData = self.getData(postDict)
r = requests.post(
'http://c.tieba.baidu.com/c/c/forum/sign', data=postData)
info = r.json()
if info['error_code'] == '0':
self.chlis(kw)
print('Success:%s' % kw)
return 0
else:
print('Fail:%s' % kw)
return 1
def main():
tb = tieba()
flag = 1
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))
print('********************')
while flag:
flag = sum([tb.sign(k['name']) for k in tb.lists if not k['is_sign']])
print('********************\nAll Finished!\n\n')
if __name__ == '__main__':
main()