import arlo
This commit is contained in:
0
channel/toutiao/__init__.py
Normal file
0
channel/toutiao/__init__.py
Normal file
BIN
channel/toutiao/__pycache__/__init__.cpython-312.pyc
Normal file
BIN
channel/toutiao/__pycache__/__init__.cpython-312.pyc
Normal file
Binary file not shown.
BIN
channel/toutiao/__pycache__/toutiao.cpython-312.pyc
Normal file
BIN
channel/toutiao/__pycache__/toutiao.cpython-312.pyc
Normal file
Binary file not shown.
82
channel/toutiao/toutiao.py
Normal file
82
channel/toutiao/toutiao.py
Normal file
@ -0,0 +1,82 @@
|
||||
from DrissionPage import Chromium, ChromiumOptions
|
||||
from DrissionPage.errors import ElementNotFoundError
|
||||
|
||||
from database.tcontentdispatch.model import TContentDispatch
|
||||
from log.log_manager import log
|
||||
|
||||
|
||||
class Toutiao:
|
||||
def __init__(self, article: TContentDispatch):
|
||||
self.article = article
|
||||
co = ChromiumOptions().auto_port() # auto_port后需要重新登录账号
|
||||
# co = ChromiumOptions()
|
||||
self.browser = Chromium(addr_or_opts=co)
|
||||
self.tab = self.browser.latest_tab
|
||||
self.tab.get('https://mp.toutiao.com/')
|
||||
|
||||
def need_login(self):
|
||||
self.tab.wait(5)
|
||||
try:
|
||||
login_dialog = self.tab.ele('.login-wrap')
|
||||
log(login_dialog.html)
|
||||
return True
|
||||
except ElementNotFoundError:
|
||||
return False
|
||||
|
||||
def login_with_password(self):
|
||||
try:
|
||||
# 1. 点击‘密码登录’按钮,切换到密码登录界面
|
||||
password_login_btn = self.tab.ele('.web-login-other-login-method__list__item__icon web-login-other-login-method__list__item__icon__account_pwd')
|
||||
password_login_btn.click()
|
||||
# 2. 输入账号
|
||||
username_input_box = self.tab.ele('.web-login-normal-input__input')
|
||||
username_input_box.input('17704081680')
|
||||
# 3. 输入密码
|
||||
password_input_box = self.tab.ele('.web-login-button-input__input')
|
||||
password_input_box.input('G*9dkvm834;.,[')
|
||||
# 4. 勾选同意协议
|
||||
agree_checkbox = self.tab.ele('.web-login-confirm-info__checkbox')
|
||||
agree_checkbox.click()
|
||||
# 5. 点击登录按钮
|
||||
login_btn = self.tab.ele('.web-login-button')
|
||||
login_btn.click()
|
||||
except ElementNotFoundError:
|
||||
log('尝试进行账号登录,但登录界面元素未找到')
|
||||
|
||||
|
||||
def publish(self):
|
||||
try:
|
||||
# 1. 处理登录
|
||||
if self.need_login():
|
||||
self.login_with_password()
|
||||
# 2. 新建文章
|
||||
new_article_btn = self.tab.ele('.byte-menu-inline base_creation_tab').ele('.byte-menu-item')
|
||||
new_article_btn.click()
|
||||
# 3. 输入标题
|
||||
title_input_box = self.tab.ele('.editor-title autofit-textarea-wrapper').ele('tag:textarea')
|
||||
title_input_box.input(self.article.title)
|
||||
# 4. 输入正文
|
||||
content_input_area = self.tab.ele('.ProseMirror')
|
||||
if self.article.ai_content:
|
||||
content_input_area.input(self.article.ai_content)
|
||||
else:
|
||||
content_input_area.input(self.article.content)
|
||||
# 5. 等待10秒,文章会自动保存到草稿箱
|
||||
self.tab.wait(10)
|
||||
except (ElementNotFoundError, AttributeError):
|
||||
log('发布文章出现异常')
|
||||
finally:
|
||||
# 6. 结束
|
||||
self.finish()
|
||||
|
||||
def finish(self):
|
||||
# 关闭浏览器
|
||||
self.browser.quit()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
article = TContentDispatch()
|
||||
article.title = '今日新鲜事'
|
||||
article.content = '当地时间29日,阿塞拜疆总统阿利耶夫称,阿克套空难原因系飞机“遭受来自地面的攻击受损”,飞机在俄境内格罗兹尼附近尾部遭地面射击严重破坏且失去控制。'
|
||||
toutiao = Toutiao(article)
|
||||
toutiao.publish()
|
||||
Reference in New Issue
Block a user