Skip to content

Commit

Permalink
优化对评论验证码的处理逻辑
Browse files Browse the repository at this point in the history
  • Loading branch information
Hsury committed Dec 19, 2018
1 parent 214f6a9 commit b7161c2
Show file tree
Hide file tree
Showing 3 changed files with 782 additions and 777 deletions.
4 changes: 2 additions & 2 deletions README.md
Expand Up @@ -5,7 +5,7 @@
<h1 align="center">- Bilibili Toolkit -</h1>

<p align="center">
<img src="https://img.shields.io/badge/version-2018.12.18-green.svg?longCache=true&style=for-the-badge">
<img src="https://img.shields.io/badge/version-2018.12.19-green.svg?longCache=true&style=for-the-badge">
<img src="https://img.shields.io/badge/license-SATA-blue.svg?longCache=true&style=for-the-badge">
</p>

Expand All @@ -32,7 +32,7 @@
|follow |2018/7/8 |关注 |
|danmaku_post |2018/8/28 |弹幕发送 |
|comment_like |2018/6/27 |评论点赞 |
|comment_post |2018/12/18 |评论发表 |
|comment_post |2018/12/19 |评论发表 |
|dynamic_like |2018/6/29 |动态点赞 |
|dynamic_repost |2018/10/13 |动态转发 |
|dynamic_purge |2018/11/24 |动态清理 |
Expand Down
53 changes: 29 additions & 24 deletions bilibili.py
Expand Up @@ -39,7 +39,7 @@
__author__ = "Hsury"
__email__ = "i@hsury.com"
__license__ = "SATA"
__version__ = "2018.12.18"
__version__ = "2018.12.19"

class Bilibili():
app_key = "1d8b6e7d45233436"
Expand Down Expand Up @@ -215,7 +215,7 @@ def recognize_captcha(image):
headers = {'Content-type': "application/x-www-form-urlencoded"}
response = self._requests("post", url, data=payload, headers=headers)
while True:
if response:
if response and response.get("code") is not None:
if response['code'] == -105:
url = f"{self.protocol}://passport.bilibili.com/captcha"
headers = {'Host': "passport.bilibili.com"}
Expand Down Expand Up @@ -370,7 +370,7 @@ def watch(self, aid):
# aid = 稿件av号
url = f"{self.protocol}://api.bilibili.com/x/web-interface/view?aid={aid}"
response = self._requests("get", url)
if response:
if response and response.get("data") is not None:
cid = response['data']['cid']
duration = response['data']['duration']
else:
Expand Down Expand Up @@ -575,7 +575,7 @@ def danmaku_post(self, aid, message, moment=-1):
# moment = 弹幕发送时间
url = f"{self.protocol}://api.bilibili.com/x/web-interface/view?aid={aid}"
response = self._requests("get", url)
if response:
if response and response.get("data") is not None:
oid = response['data']['cid']
duration = response['data']['duration']
else:
Expand Down Expand Up @@ -686,12 +686,18 @@ def comment_post(self, otype, oid, message, floor=0, critical=1):
success = 0
while success < delta_floor:
response = self._requests("post", url, data=payload, headers=headers)
if response and response.get("code") == 0:
success += 1
self._log(f"作品{oid}提交评论\"{message}\"({success}/{delta_floor})成功")
else:
self._log(f"作品{oid}提交评论\"{message}\"({success + 1}/{delta_floor})失败 {response}")
time.sleep(10)
if response and response.get("code") is not None:
if response['code'] == 0:
success += 1
self._log(f"作品{oid}提交评论\"{message}\"({success}/{delta_floor})成功")
continue
elif response['code'] == 12015:
self._log(f"作品{oid}提交评论\"{message}\"({success + 1}/{delta_floor})时出现验证码, 1分钟后重试")
time.sleep(60)
continue
else:
self._log(f"作品{oid}提交评论\"{message}\"({success + 1}/{delta_floor})失败 {response}")
time.sleep(1)
if not floor:
break
else:
Expand Down Expand Up @@ -1062,29 +1068,29 @@ def delay_wrapper(func, interval, args_list=[()], shuffle=True):
if config['watch']['enable']:
threads.append(threading.Thread(target=delay_wrapper, args=(instance.watch, 5, list(zip(config['watch']['aid'])))))
if config['like']['enable']:
threads.append(threading.Thread(target=delay_wrapper, args=(instance.like, 10, list(zip(config['like']['aid'])))))
threads.append(threading.Thread(target=delay_wrapper, args=(instance.like, 5, list(zip(config['like']['aid'])))))
if config['reward']['enable']:
threads.append(threading.Thread(target=delay_wrapper, args=(instance.reward, 10, list(zip(config['reward']['aid'], config['reward']['double'])))))
threads.append(threading.Thread(target=delay_wrapper, args=(instance.reward, 5, list(zip(config['reward']['aid'], config['reward']['double'])))))
if config['favour']['enable']:
threads.append(threading.Thread(target=delay_wrapper, args=(instance.favour, 10, list(zip(config['favour']['aid'])))))
threads.append(threading.Thread(target=delay_wrapper, args=(instance.favour, 5, list(zip(config['favour']['aid'])))))
if config['combo']['enable']:
threads.append(threading.Thread(target=delay_wrapper, args=(instance.combo, 10, list(zip(config['combo']['aid'])))))
threads.append(threading.Thread(target=delay_wrapper, args=(instance.combo, 5, list(zip(config['combo']['aid'])))))
if config['share']['enable']:
threads.append(threading.Thread(target=delay_wrapper, args=(instance.share, 10, list(zip(config['share']['aid'])))))
threads.append(threading.Thread(target=delay_wrapper, args=(instance.share, 5, list(zip(config['share']['aid'])))))
if config['follow']['enable']:
threads.append(threading.Thread(target=delay_wrapper, args=(instance.follow, 10, list(zip(config['follow']['mid'], config['follow']['secret'])))))
threads.append(threading.Thread(target=delay_wrapper, args=(instance.follow, 5, list(zip(config['follow']['mid'], config['follow']['secret'])))))
if config['danmaku_post']['enable']:
threads.append(threading.Thread(target=delay_wrapper, args=(instance.danmaku_post, 10, list(zip(config['danmaku_post']['aid'], config['danmaku_post']['message'], config['danmaku_post']['moment'])))))
threads.append(threading.Thread(target=delay_wrapper, args=(instance.danmaku_post, 5, list(zip(config['danmaku_post']['aid'], config['danmaku_post']['message'], config['danmaku_post']['moment'])))))
if config['comment_like']['enable']:
threads.append(threading.Thread(target=delay_wrapper, args=(instance.comment_like, 10, list(zip(config['comment_like']['otype'], config['comment_like']['oid'], config['comment_like']['rpid'])))))
threads.append(threading.Thread(target=delay_wrapper, args=(instance.comment_like, 5, list(zip(config['comment_like']['otype'], config['comment_like']['oid'], config['comment_like']['rpid'])))))
if config['comment_post']['enable']:
threads.append(threading.Thread(target=delay_wrapper, args=(instance.comment_post, 60, list(zip(config['comment_post']['otype'], config['comment_post']['oid'], config['comment_post']['message'], config['comment_post']['floor'], config['comment_post']['critical'])))))
threads.append(threading.Thread(target=delay_wrapper, args=(instance.comment_post, 5, list(zip(config['comment_post']['otype'], config['comment_post']['oid'], config['comment_post']['message'], config['comment_post']['floor'], config['comment_post']['critical'])))))
# for comment in zip(config['comment_post']['otype'], config['comment_post']['oid'], config['comment_post']['message'], config['comment_post']['floor'], config['comment_post']['critical']):
# threads.append(threading.Thread(target=instance.comment_post, args=(comment[0], comment[1], comment[2], comment[3], comment[4])))
if config['dynamic_like']['enable']:
threads.append(threading.Thread(target=delay_wrapper, args=(instance.dynamic_like, 10, list(zip(config['dynamic_like']['did'])))))
threads.append(threading.Thread(target=delay_wrapper, args=(instance.dynamic_like, 5, list(zip(config['dynamic_like']['did'])))))
if config['dynamic_repost']['enable']:
threads.append(threading.Thread(target=delay_wrapper, args=(instance.dynamic_repost, 10, list(zip(config['dynamic_repost']['did'], config['dynamic_repost']['message'], config['dynamic_repost']['ats'])))))
threads.append(threading.Thread(target=delay_wrapper, args=(instance.dynamic_repost, 5, list(zip(config['dynamic_repost']['did'], config['dynamic_repost']['message'], config['dynamic_repost']['ats'])))))
if config['dynamic_purge']['enable']:
threads.append(threading.Thread(target=instance.dynamic_purge))
if config['mall_rush']['enable']:
Expand All @@ -1111,6 +1117,7 @@ def delay_wrapper(func, interval, args_list=[()], shuffle=True):
}

def main():
print(f"{banner}\n{__doc__}\n版本: {__version__}\n")
config_file = sys.argv[1] if len(sys.argv) > 1 else "config.toml"
try:
config = toml.load(config_file)
Expand Down Expand Up @@ -1271,9 +1278,7 @@ def main():
live_tool_process.terminate()

if __name__ == "__main__":
print(f"{banner}\n{__doc__}\n版本: {__version__}\n")
if platform.system() == "Windows":
freeze_support()
freeze_support()
main()
if platform.system() == "Windows":
os.system("pause >nul | set /p =请按任意键退出")

0 comments on commit b7161c2

Please sign in to comment.