一键提交吾爱悬赏贴撤销申请
本帖最后由 MyModHeaven 于 2024-1-24 08:08 编辑> 感觉原标题“吾爱悬赏贴一键撤销”有些歧义,容易让人误会,改成了“一键提交吾爱悬赏贴撤销申请”
# 介绍
我是一个把吾爱币都花在悬赏上的人,所以撤销未解答的悬赏贴就有点麻烦,就自己写了这个
用到了三个库:`datetime` `time` `selenium`
## slogn
一段简单的代码,实现一个简单的小功能
(这么贴心的功能,吾爱官方怎么没有呢?)
(看到管理误解了,我的意思不是自动撤销,而是自动获取用户未完结悬赏并在申请撤销悬赏专帖回复)
## 使用
1. 手动登录账号,控制台回车让程序继续运行
2. 程序会查找可以撤销的悬赏贴信息,根据要求的格式编写文本,并在2024年申请撤销悬赏专帖回复
3. 人工核对,手动提交
## 不足
1. 本人只有两页的悬赏贴子,所有有很多页悬赏贴的账号可能会有未知的错误
2. 功能过于简单
3. 感觉用油猴脚本是最简单的实现方式,奈何本人不会js
## 进化
这段代码是一年多以前写的,现在正在用`PySide6`重写,希望加上一些贴心小功能,而不是这么简单粗暴
# 代码
```python
import datetime
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
# 计算可撤销的最晚发帖日期
deadline = datetime.datetime.today() - datetime.timedelta(days=5)
url = 'https://www.52pojie.cn/home.php?mod=space&do=reward&view=me'
browser = webdriver.Chrome()
browser.get(url)
# 首次登录
next = input('登录完毕后,回车继续')
# cookies = browser.get_cookies()
# with open('d:/cookies.txt', 'w', encoding='utf-8') as f:
# f.write(str(cookies))
# # cookie登录
# with open('d:/cookies.txt', 'r', encoding='utf-8') as f:
# cookies = eval(f.read())
# browser.delete_all_cookies()
# for cookie in cookies:
# browser.add_cookie(cookie)
browser.refresh()
# 获取账号id
id = browser.find_element(By.XPATH, "//div[@id='um']/p/strong/a").text
_total_page = browser.find_element(By.XPATH, '//input[@title="输入页码,按回车快速跳转"]/../span').get_attribute('title')
total_page = int(_total_page.split(' '))
# 获取需要撤销的帖子信息
details = []
for page in range(total_page):
sleep(1) # 防止 429 Too Many Requests
browser.get(url + '&page=' + str(page + 1))
node_li = browser.find_elements(By.XPATH, "//ul[@class='rwdl cl']/li")
for li in node_li:
status = li.find_element(By.XPATH, "./div/em").text
if status == '已解决':
continue
link= li.find_element(By.XPATH, "./h4/a").get_attribute('href')
postDate = li.find_element(By.XPATH, "./p/span").text
# 判断帖子是否为 14 天内发布
day = datetime.datetime.strptime(postDate, '%Y-%m-%d')
if day > deadline:
continue
details.append((link, postDate))
# 打开申请撤销悬赏专帖
cancelUrl = 'https://www.52pojie.cn/thread-1875228-1-1.html'
browser.get(cancelUrl)
textarea = browser.find_element(By.XPATH, "//div[@id='fastposteditor']//textarea")
textarea.click()
# 判断当前年份
currentYear = datetime.datetime.now().year
if currentYear != 2024:
textarea.send_keys('注意,这是 2024 年的申请撤销悬赏专贴,请复制下面内容到本年的专贴下面回复')
textarea.send_keys(Keys.ENTER)
for det in details:
textarea.send_keys('申请撤销CB帖子地址:' + det)
textarea.send_keys(Keys.ENTER)
textarea.send_keys('申请人ID:' + id)
textarea.send_keys(Keys.ENTER)
textarea.send_keys('悬赏发布时间:' + det)
textarea.send_keys(Keys.ENTER)
textarea.send_keys('申请撤销理由:') # 理由请自行填写,需写清具体情况
textarea.send_keys(Keys.ENTER)
textarea.send_keys(Keys.ENTER)
# 展开评论内容,检查是否有错,修改撤销理由
browser.find_element(By.XPATH, "//div[@id='fastposteditor']/div/div/span/a").click()
next = input('''
--------------------------------
手动提交后,回车结束程序
--------------------------------
''')
``` 撤销悬赏第一条:
如没有满意答案,请在撤销理由中写清具体情况。
不能用未解决作为通用理由哦{:301_998:} {:1_893:} 果然是52.没有做不到的。只有想不到的....
关于这个悬赏。看到版主也特地开贴,要求回复根据格式。。。
理由确实因为各种原因。时间久了帖子沉了,甚至超过几个月后无法回复更加烂尾了。。。
归根原因是提出来的需求有点高,也在不合适的时间,采用了不合适的标题。
天时地利人和。。。 这也有工具,厉害 能不能自问自答奖励给自己? 这个牛啊~!{:1_921:}{:1_921:} 柒點 发表于 2024-1-23 22:16
撤销悬赏第一条:
不能用未解决作为通用理由哦
关注下,恶意不结帖撤销的给违规,严重的禁言, 这种破坏规则不公平的事情需要严肃处理。
所以楼主你觉得我为啥不在帖子里加一个自动撤销功能,还要人工审核来? 学到了,感谢呆佬 好好好,这么玩是吧,都干到自己头上了...
页:
[1]
2