重构,精简相关代码,更新ddddocr
This commit is contained in:
parent
c82d11ff4b
commit
610a6cd329
@ -1,29 +1,21 @@
|
|||||||
import json
|
import json
|
||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
import traceback
|
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from utility import encrypt, cap_recognize
|
from utility import encrypt, cap_recognize
|
||||||
|
def study(username,password):
|
||||||
|
# 返回1:成功
|
||||||
def study(username, password, ua):
|
# 返回0:失败
|
||||||
# return 1:success;0:fail
|
|
||||||
url = ''
|
|
||||||
tryTime = 0
|
tryTime = 0
|
||||||
|
url = ''
|
||||||
while tryTime < 4:
|
while tryTime < 4:
|
||||||
try:
|
try:
|
||||||
bjySession = requests.session()
|
bjySession = requests.session() # 创建会话
|
||||||
bjySession.timeout = 5 # set session timeout
|
bjySession.timeout = 5 # 设置会话超时
|
||||||
bjySession.headers.update({"User-Agent": ua, })
|
bjySession.headers.update({"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', })
|
||||||
touch = bjySession.get(url="https://m.bjyouth.net/site/login")
|
touch = bjySession.get(url="https://m.bjyouth.net/site/login")
|
||||||
capUrl = "https://m.bjyouth.net" + re.findall(
|
capUrl = "https://m.bjyouth.net" + re.findall(r'src="(/site/captcha.+)" alt=', touch.text)[0]
|
||||||
r'src="(/site/captcha.+)" alt=', touch.text)[0]
|
|
||||||
if "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQD5uIDebA2qU746e/NVPiQSBA0Q" not in touch.text:
|
|
||||||
print("记录的公钥没有出现")
|
|
||||||
capText = cap_recognize(bjySession.get(url=capUrl).content)
|
capText = cap_recognize(bjySession.get(url=capUrl).content)
|
||||||
# print(f'验证码识别: {capText}')
|
|
||||||
login_r = bjySession.post('https://m.bjyouth.net/site/login',
|
login_r = bjySession.post('https://m.bjyouth.net/site/login',
|
||||||
data={
|
data={
|
||||||
'_csrf_mobile': bjySession.cookies.get_dict()['_csrf_mobile'],
|
'_csrf_mobile': bjySession.cookies.get_dict()['_csrf_mobile'],
|
||||||
@ -31,7 +23,6 @@ def study(username, password, ua):
|
|||||||
'Login[username]': encrypt(username),
|
'Login[username]': encrypt(username),
|
||||||
'Login[verifyCode]': capText
|
'Login[verifyCode]': capText
|
||||||
})
|
})
|
||||||
|
|
||||||
if login_r.text == '8':
|
if login_r.text == '8':
|
||||||
print('Login:识别的验证码错误')
|
print('Login:识别的验证码错误')
|
||||||
continue
|
continue
|
||||||
@ -40,9 +31,9 @@ def study(username, password, ua):
|
|||||||
raise Exception('Login:账号密码错误')
|
raise Exception('Login:账号密码错误')
|
||||||
print('登录成功')
|
print('登录成功')
|
||||||
r = json.loads(bjySession.get("https://m.bjyouth.net/dxx/course").text)
|
r = json.loads(bjySession.get("https://m.bjyouth.net/dxx/course").text)
|
||||||
# "rize" LOL
|
|
||||||
if 'newCourse' not in r:
|
if 'newCourse' not in r:
|
||||||
print(r)
|
print(r)
|
||||||
|
# newCourse滞后于course中的课程,所以这里用course中的最新课程
|
||||||
url = r['data']['data'][0]['url']
|
url = r['data']['data'][0]['url']
|
||||||
title = r['data']['data'][0]['title']
|
title = r['data']['data'][0]['title']
|
||||||
courseId = r['data']['data'][0]['id']
|
courseId = r['data']['data'][0]['id']
|
||||||
@ -50,51 +41,38 @@ def study(username, password, ua):
|
|||||||
except:
|
except:
|
||||||
time.sleep(3)
|
time.sleep(3)
|
||||||
tryTime += 1
|
tryTime += 1
|
||||||
print(traceback.format_exc())
|
|
||||||
|
|
||||||
if not url:
|
if not url:
|
||||||
print('登入失败,退出')
|
print('登入失败,退出')
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
orgIdTemp = ''
|
info = bjySession.get('https://m.bjyouth.net/dxx/my').json()['data']
|
||||||
orgPattern = re.compile(r'\(|(\s*(\d+)\s*)|\)') # 组织id应该是被括号包的
|
name = info['name'].split('(')[0]
|
||||||
learnedInfo = 'https://m.bjyouth.net/dxx/my-study?page=1&limit=15&year=' + time.strftime("%Y", time.localtime())
|
org = info['org'].split('(')[0]
|
||||||
haveLearned = bjySession.get(learnedInfo).json()
|
print(f'当前用户: {name} {org}')
|
||||||
|
|
||||||
orgID = ""
|
|
||||||
try:
|
|
||||||
orgIdTemp = orgPattern.search(haveLearned['data'][0]['orgname'])
|
|
||||||
orgID = orgIdTemp.group(1)
|
|
||||||
except:
|
|
||||||
print('获取组织id-2')
|
|
||||||
orgIdTemp = orgPattern.search(bjySession.get('https://m.bjyouth.net/dxx/my').json()['data']['org'])
|
|
||||||
if orgIdTemp:
|
|
||||||
orgID = orgIdTemp.group(1)
|
|
||||||
|
|
||||||
if not orgID:
|
|
||||||
orgID = '172442'
|
|
||||||
print(f"无法获取orgID")
|
|
||||||
|
|
||||||
nOrgID = int(bjySession.get('https://m.bjyouth.net/dxx/is-league').text)
|
nOrgID = int(bjySession.get('https://m.bjyouth.net/dxx/is-league').text)
|
||||||
|
|
||||||
|
learnedInfo = 'https://m.bjyouth.net/dxx/my-study?page=1&limit=15&year=' + time.strftime("%Y", time.localtime())
|
||||||
|
haveLearned = bjySession.get(learnedInfo).json()
|
||||||
|
|
||||||
if f"学习课程:《{title}》" in list(map(lambda x: x['text'], haveLearned['data'])):
|
if f"学习课程:《{title}》" in list(map(lambda x: x['text'], haveLearned['data'])):
|
||||||
print(f'{title} 在运行前已完成,退出')
|
print(f'{title} 在运行前已完成,退出')
|
||||||
return 1
|
return 1
|
||||||
study_url = f"https://m.bjyouth.net/dxx/check"
|
study_url = f"https://m.bjyouth.net/dxx/check"
|
||||||
r = bjySession.post(study_url, json={"id": str(courseId), "org_id": int(nOrgID)}) # payload
|
r = bjySession.post(study_url, json={"id": str(courseId), "org_id": int(nOrgID)}) # payload
|
||||||
|
|
||||||
if r.text:
|
if r.text:
|
||||||
print(f'Unexpected response: {r.text}')
|
print(f'开始学习{title}')
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
haveLearned = bjySession.get(learnedInfo).json()
|
haveLearned = bjySession.get(learnedInfo).json()
|
||||||
|
|
||||||
if int(orgID) != nOrgID:
|
|
||||||
raise Exception('组织id不匹配,如果看到这个请开个issue说下')
|
|
||||||
|
|
||||||
if f"学习课程:《{title}》" in list(map(lambda x: x['text'], haveLearned['data'])):
|
if f"学习课程:《{title}》" in list(map(lambda x: x['text'], haveLearned['data'])):
|
||||||
print(f'{title} 成功完成学习')
|
print(f'{title} 成功完成学习')
|
||||||
return 1
|
return 1
|
||||||
else:
|
else:
|
||||||
print(f'完成{title}, 但未在检查中确认')
|
print(f'完成{title}, 但未在已学习列表中找到, 请手动检查')
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
study('16634486740','Anye20031003')
|
1127
ddddocr.py
1127
ddddocr.py
File diff suppressed because it is too large
Load Diff
24
main.py
24
main.py
@ -1,24 +0,0 @@
|
|||||||
import os
|
|
||||||
import time
|
|
||||||
import sys
|
|
||||||
from study import study
|
|
||||||
|
|
||||||
ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
|
|
||||||
|
|
||||||
accounts=[('*********', '*********')]
|
|
||||||
print(f'账号数量:{len(accounts)}')
|
|
||||||
successful = 0
|
|
||||||
count = 0
|
|
||||||
for username, password in accounts:
|
|
||||||
if username=='********':
|
|
||||||
continue
|
|
||||||
count += 1
|
|
||||||
print(f'--User {count}--')
|
|
||||||
if study(username, password, ua):
|
|
||||||
successful += 1
|
|
||||||
|
|
||||||
failed = count - successful
|
|
||||||
print('--Summary--')
|
|
||||||
print(f'成功:{successful},失败:{failed}')
|
|
||||||
if failed != 0:
|
|
||||||
raise Exception(f'有{failed}个失败!')
|
|
Loading…
x
Reference in New Issue
Block a user