2487 lines
103 KiB
Plaintext
2487 lines
103 KiB
Plaintext
.版本 2
|
||
.支持库 edroptarget
|
||
.支持库 iext
|
||
.支持库 EThread
|
||
.支持库 spec
|
||
|
||
.程序集 窗口程序集_窗口1
|
||
.程序集变量 集句柄, 整数型
|
||
.程序集变量 工作中, 逻辑型
|
||
.程序集变量 工作线程池EX, 鱼刺类_线程池Ex
|
||
.程序集变量 ww, 未闻花名花见皮肤
|
||
|
||
.子程序 _窗口1_创建完毕
|
||
|
||
ww.皮肤加载 (2, , , , 真)
|
||
' 网络版授权验证 (假, “f28ba622a3ef3abf0a419f5cd6b548396dbcd7bd0d25fc815b6256be1db23421d3a329637cdb54f61e492184d1602670dff739ec7bd2847d67b98f0bff373646”)
|
||
.如果真 (信息框 (“此程序仅用于学习、技术交流,请勿用于非法!如出现任何问题后果自负!” + #换行符 + “ ”, #确认取消钮, “免责声明!!!”, ) = #取消钮)
|
||
结束 ()
|
||
.如果真结束
|
||
|
||
全目录临时 = 取运行目录 () + “\XYZ\临时”
|
||
全目录状态 = 取运行目录 () + “\XYZ\数据状态”
|
||
全PIC = 取运行目录 () + “\XYZ\生成订单图片”
|
||
.如果真 (文件是否存在 (全目录临时) = 假)
|
||
目录_创建 (全目录临时)
|
||
.如果真结束
|
||
.如果真 (文件是否存在 (全目录状态) = 假)
|
||
目录_创建 (全目录状态)
|
||
.如果真结束
|
||
.如果真 (文件是否存在 (全PIC) = 假)
|
||
目录_创建 (全PIC)
|
||
.如果真结束
|
||
|
||
拖放对象1.注册拖放控件 (超级列表框1.取窗口句柄 ())
|
||
状态条1.置文本 (0, “双击列表指定数据行,查询账号详情....”)
|
||
数据写入列表 ()
|
||
启动线程 (&商品列表, , )
|
||
Gdip开始 ()
|
||
配置_读取_易语言组件 (窗口1)
|
||
|
||
.子程序 _超级列表框1_右键单击表项
|
||
|
||
弹出菜单 (菜单, , )
|
||
|
||
.子程序 _拖放对象1_得到文件
|
||
.参数 接收到的文件路径, 文本型
|
||
.局部变量 i, 文本型
|
||
.局部变量 第一次分割, 文本型, , "0"
|
||
.局部变量 第二次分割, 文本型, , "3"
|
||
.局部变量 N, 整数型
|
||
.局部变量 索引, 整数型
|
||
.局部变量 计次1, 整数型
|
||
.局部变量 计次2, 整数型
|
||
.局部变量 临时数组, 文本型, , "0"
|
||
.局部变量 文本数组, 文本型, , "0"
|
||
|
||
i = 到文本 (读入文件 (接收到的文件路径))
|
||
文本数组 = 分割文本 (i, #换行符, )
|
||
.计次循环首 (取数组成员数 (文本数组), 计次1)
|
||
系统_处理事件 ()
|
||
索引 = 超级列表框1.插入表项 (, , , , , )
|
||
超级列表框1.置标题 (索引, 0, 到文本 (索引 + 1))
|
||
超级列表框1.置标题 (索引, 1, 文本数组 [计次1])
|
||
超级列表框1.置状态图片 (索引, 1)
|
||
系统_处理事件 ()
|
||
.计次循环尾 ()
|
||
超级列表框1.允许重画 () ' 恢复自动重画
|
||
超级列表框1.发送信息 (277, 7, 0) ' 显示最后一行
|
||
清除数组 (文本数组)
|
||
|
||
.子程序 _删除当前_被选择
|
||
.局部变量 i, 整数型
|
||
.局部变量 局_保存文本, 鱼刺类_输出文本
|
||
.局部变量 局_保存目录, 文本型
|
||
|
||
超级列表框1.删除表项 (超级列表框1.现行选中项)
|
||
.计次循环首 (超级列表框1.取表项数 (), i)
|
||
系统_处理事件 ()
|
||
超级列表框1.置标题 (i - 1, 0, 到文本 (i))
|
||
.计次循环尾 ()
|
||
.计次循环首 (超级列表框1.取表项数 (), i)
|
||
系统_处理事件 ()
|
||
超级列表框1.置状态图片 (i - 1, 1)
|
||
超级列表框1.置标题 (i - 1, 0, 到文本 (i))
|
||
.计次循环尾 ()
|
||
|
||
|
||
.子程序 _删除勾选_被选择
|
||
.局部变量 表项数, 整数型
|
||
.局部变量 m, 整数型
|
||
.局部变量 i, 整数型
|
||
.局部变量 局_保存目录, 文本型
|
||
.局部变量 局_保存文本, 鱼刺类_输出文本
|
||
|
||
表项数 = 超级列表框1.取表项数 ()
|
||
.计次循环首 (表项数, m)
|
||
系统_处理事件 ()
|
||
.如果真 (超级列表框1.取当前状态图片 (表项数 - m) = 1)
|
||
超级列表框1.删除表项 (表项数 - m)
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
.计次循环首 (超级列表框1.取表项数 (), i)
|
||
系统_处理事件 ()
|
||
超级列表框1.置状态图片 (i - 1, 1)
|
||
超级列表框1.置标题 (i - 1, 0, 到文本 (i))
|
||
.计次循环尾 ()
|
||
|
||
|
||
.子程序 _清空CK_被选择
|
||
.局部变量 局_保存目录, 文本型
|
||
|
||
超级列表框1.全部删除 ()
|
||
局_保存目录 = 取运行目录 () + “\斗鱼CK\” + 时间_格式化 (取现行时间 (), “MM.dd-”) + “斗鱼CK.txt”
|
||
删除文件 (局_保存目录)
|
||
|
||
.子程序 _按钮_刷新商品_被单击
|
||
|
||
启动线程 (&商品列表, , )
|
||
|
||
.子程序 商品列表
|
||
.局部变量 str, 文本型
|
||
.局部变量 yyjson, json对象
|
||
.局部变量 价格, 文本型
|
||
.局部变量 N, 整数型
|
||
.局部变量 commodityName, 文本型
|
||
.局部变量 commodityId, 文本型
|
||
.局部变量 列表NUM, 整数型
|
||
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/activity/peacematch/storehome?manualID=1W0yGkOdDbAXb&rid=9263298”, , , , , “Host: www.douyu.com” + #换行符 + “Connection: keep-alive” + #换行符 + “sec-ch-ua: ” + #引号 + “Not_A Brand” + #引号 + “;v=” + #引号 + “8” + #引号 + “, ” + #引号 + “Chromium” + #引号 + “;v=” + #引号 + “120” + #引号 + “, ” + #引号 + “Google Chrome” + #引号 + “;v=” + #引号 + “120” + #引号 + “” + #换行符 + “Accept: application/json, text/plain, */*” + #换行符 + “sec-ch-ua-mobile: ?0” + #换行符 + “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” + #换行符 + “sec-ch-ua-platform: ” + #引号 + “Windows” + #引号 + “” + #换行符 + “Sec-Fetch-Site: same-origin” + #换行符 + “Sec-Fetch-Mode: cors” + #换行符 + “Sec-Fetch-Dest: empty” + #换行符 + “Referer: https://www.douyu.com/pages/live-peace-pel/web/shop”))
|
||
yyjson.清空 ()
|
||
.如果真 (yyjson.解析 (str) = 假)
|
||
提示框 (“商品列表解析失败”, , , , 2000)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
组合框1.清空 ()
|
||
状态条1.置文本 (0, “正在刷新列表商品....”)
|
||
.计次循环首 (yyjson.取成员数 (“data/list”), N)
|
||
commodityId = yyjson.取文本 (“data/list/” + 到文本 (N - 1) + “/commodityId”)
|
||
commodityName = yyjson.取文本 (“data/list/” + 到文本 (N - 1) + “/commodityName”)
|
||
价格 = yyjson.取文本 (“data/list/” + 到文本 (N - 1) + “/score”)
|
||
组合框1.插入项目 (N - 1, commodityName + “一” + 价格 + “一” + commodityId, )
|
||
系统_处理事件 ()
|
||
.计次循环尾 ()
|
||
组合框1.现行选中项 = 0
|
||
状态条1.置文本 (0, “列表商品刷新完成”)
|
||
|
||
.子程序 _获取绑定二维码_被选择
|
||
|
||
启动线程 (&取二维码, , )
|
||
|
||
.子程序 取二维码
|
||
.局部变量 ctn1, 文本型
|
||
.局部变量 返回CK, 文本型
|
||
.局部变量 局ID, 文本型
|
||
.局部变量 str2, 文本型
|
||
.局部变量 局_CK, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 局_CCK, 文本型
|
||
.局部变量 ctn2, 文本型
|
||
.局部变量 manualID, 文本型
|
||
.局部变量 actAlias, 文本型
|
||
.局部变量 str3, 文本型
|
||
.局部变量 yyjson, json对象
|
||
.局部变量 绑定url, 文本型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 绑定游戏昵称, 文本型
|
||
.局部变量 局_斗鱼昵称, 文本型
|
||
.局部变量 图片句柄, 整数型
|
||
|
||
局_文本 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
局_斗鱼昵称 = 局_F [1]
|
||
局_CCK = 局_F [3]
|
||
|
||
str = 到文本 (网页_访问_对象 (“https://www.douyu.com/curl/csrfApi/getCsrfCookie?”, , , 局_CCK, 返回CK, #常量1))
|
||
调试输出 (局_CCK, 返回CK)
|
||
' 调试输出 (str)
|
||
状态条1.置文本 (0, “生成1-> ” + str)
|
||
ctn1 = 文本_取出中间文本 (返回CK, “acf_ccn=”, “;”)
|
||
.如果 (ctn1 ≠ “”)
|
||
str2 = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/livenc/asubscribe/userSubStatus”, 1, “subscribe=cmn&ctn=” + ctn1, 返回CK, 局_CK, #常量1))
|
||
状态条1.置文本 (0, “生成二维码-> ” + str2)
|
||
' 调试输出 (str2)
|
||
.如果 (寻找文本 (str2, “error” + #引号 + “:0”, , 假) ≠ -1)
|
||
ctn2 = 文本_取出中间文本 (局_CK, “acf_ccn=”, “;”)
|
||
' 调试输出 (“ctn2---”, ctn2)
|
||
全临界.进入 ()
|
||
超级列表框1.置标题 (超级列表框1.现行选中项, 5, ctn2)
|
||
全临界.退出 ()
|
||
|
||
manualID = “mgJwBOaZ11ZDp”
|
||
actAlias = “20260226ZMGDG”
|
||
|
||
str3 = 到文本 (网页_访问_对象 (“https://www.douyu.com/japi/carnivalApi/tencent/roleParam”, 1, “actAlias=” + actAlias + “&ctn=” + ctn2, 局_CCK, , #常量3))
|
||
' 调试输出 (str3)
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str3)
|
||
绑定url = yyjson.取文本 (“data/url”)
|
||
' 调试输出 (“绑定url-> ”, 绑定url)
|
||
.如果 (绑定url = “”)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “获取二维码失败”)
|
||
|
||
.否则
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “绑定二维码已生成”)
|
||
' 图片框3.图片 = 文转图片E (局_斗鱼昵称)
|
||
图片框1.图片 = 文本生成二维码图片 (绑定url, , , , , 10)
|
||
状态条1.置文本 (1, “斗鱼名:” + 局_斗鱼昵称)
|
||
|
||
绑定游戏昵称 = 检测是否绑定游戏账号 (局_CCK)
|
||
窗口_置信息3 (超级列表框1.现行选中项, 1, 绑定游戏昵称)
|
||
检测账号 (局_CK, ctn2)
|
||
.如果结束
|
||
|
||
|
||
.否则
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, str2)
|
||
.如果结束
|
||
|
||
.否则
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, 编码_usc2到ansi (str))
|
||
.如果结束
|
||
|
||
|
||
.子程序 检测账号, , , 通过兑换检测账号
|
||
.参数 参_cook, 文本型
|
||
.参数 参_ctn, 文本型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 ctnEX, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 局_xy, 文本型
|
||
.局部变量 商品表, 文本型
|
||
.局部变量 商品组, 文本型, , "0"
|
||
.局部变量 要兑换的商品名称, 文本型
|
||
.局部变量 要兑换的商品价格, 文本型
|
||
.局部变量 要兑换的商品ID, 文本型
|
||
.局部变量 roleName, 文本型
|
||
.局部变量 str2, 文本型
|
||
.局部变量 局_bin, 字节集
|
||
.局部变量 生成者, 文本型
|
||
.局部变量 优化价格, 文本型
|
||
.局部变量 areaName, 文本型
|
||
.局部变量 platName, 文本型
|
||
.局部变量 msg, 文本型
|
||
|
||
商品表 = 组合框1.取项目文本 (组合框1.现行选中项)
|
||
商品组 = 分割文本 (商品表, “一”, )
|
||
.如果真 (取数组成员数 (商品组) < 3)
|
||
状态条1.置文本 (0, “商品格式错误x”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
|
||
' 要兑换的商品名称 = 商品组 [1]
|
||
' 要兑换的商品价格 = 商品组 [2]nZALooPn0kZPW&ditchname=pass0&roomId=999
|
||
要兑换的商品ID = 商品组 [3]
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “检测账号...”)
|
||
状态条1.置文本 (0, “正在检测账号-> ”)
|
||
' manualID=G4KA4Qnz4LDp7
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/activity/peace/exchange”, 1, “manualID=1W0yGkOdDbAXb&rid=999&commodityID=” + 要兑换的商品ID + “&token%5Berror%5D%5Bcode%5D=-1&token%5Bdata%5D=&ctn=” + 参_ctn, 参_cook + “; acf_ccn=” + 参_ctn, , #常量7, 局_xy))
|
||
' 调试输出 (取程序名称 (1), str)
|
||
状态条1.置文本 (0, “检测账号:” + str)
|
||
.如果真 (寻找文本 (str, “需要开通精英手册”, , 假) ≠ -1 或 寻找文本 (str, “服务器繁忙”, , 假) ≠ -1 或 寻找文本 (str, “不在时间范围内”, , 假) ≠ -1)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “账号有效”)
|
||
' ’str2 = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/japi/carnivalApi/tencent/bindInfo?actAlias=20220616CJSZU”, , , 参_cook, , #常量3))
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
|
||
' msg = 文本_取出中间文本 (str, “msg” + #引号 + “:” + #引号, #引号)
|
||
.' 如果真 (msg = “”)
|
||
' 窗口_置状态信息 (超级列表框1.现行选中项, 2, “账号异常”)
|
||
' 返回 ()
|
||
.如果真结束
|
||
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “账号异常:” + str)
|
||
|
||
.子程序 检测是否绑定游戏账号, 文本型
|
||
.参数 参_CK, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 roleName, 文本型
|
||
|
||
' https://www.douyu.com/wgapi/ordnc/live/memberthird/tencent/bindInfo?actAlias=20260226ZMGDG
|
||
' https://www.douyu.com/wgapi/ordnc/live/memberthird/tencent/bindInfo?gameId=cjm
|
||
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/live/memberthird/tencent/bindInfo?actAlias=20260226ZMGDG”, , , 参_CK, , #常量3))
|
||
|
||
状态条1.置文本 (0, “查绑游戏名-> ” + str)
|
||
' {"error":0,"msg":"success","data":{"bindAccount":1,"bindRole":1,"bindAct":1,"needBindRole":null,"txAct":{"txActId":2811,"gameId":"cjm","gameName":"和平精英","bindType":1},"gameAccount":{"bindType":2,"type":"","faceuri":"https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTI4cIOxb4f7vpSkqYCIIvY1EJTgkhS0ZhVzzJSl2LzDpUzVBJKiaDjvuzpdS6cadAvA6bnrYwZ7jlQ/132","nick":"zicoo"},"gameRole":{"roleName":"白菜被拱了呀","areaName":"微信","platName":"安卓(android)","partitionName":""},"isGranted":null,"gameAuthScene":null,"canChangeRole":0,"changeRoleWaitTime":2490528},"redirectUrl":null}
|
||
|
||
roleName = 文本_取出中间文本 (str, “roleName” + #引号 + “:” + #引号, #引号)
|
||
.如果真 (roleName ≠ “”)
|
||
返回 (roleName)
|
||
.如果真结束
|
||
|
||
返回 (“NULL”)
|
||
|
||
.子程序 _确认绑定_被选择
|
||
|
||
启动线程 (&完成绑定, , )
|
||
|
||
.子程序 完成绑定
|
||
.局部变量 str2, 文本型
|
||
.局部变量 cvl_csrf_token, 文本型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 返回CK, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 绑定游戏昵称, 文本型
|
||
.局部变量 msg, 文本型
|
||
.局部变量 ctnEX, 文本型
|
||
.局部变量 返回游戏name, 文本型
|
||
.局部变量 str_0, 文本型
|
||
.局部变量 roleName, 文本型
|
||
.局部变量 nick, 文本型
|
||
.局部变量 areaName, 文本型
|
||
.局部变量 platName, 文本型
|
||
|
||
局_文本 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
|
||
ctnEX = 超级列表框1.取标题 (超级列表框1.现行选中项, 5)
|
||
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
局_Cookie = 局_F [3]
|
||
' https://www.douyu.com/japi/carnivalApi/v2/tencent/bindInfo?actAlias=20260120QYOOB
|
||
' 这个是新版的号得查询’str_0 = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/japi/carnivalApi/v2/tencent/bindInfo?actAlias=20260120QYOOB”, , , 局_Cookie, , #常量3))
|
||
|
||
str_0 = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/live/memberthird/tencent/bindInfo?actAlias=20260226ZMGDG”, , , 局_Cookie, , #常量3))
|
||
|
||
roleName = 文本_取出中间文本 (str_0, “roleName” + #引号 + “:” + #引号, #引号)
|
||
nick = 文本_取出中间文本 (str_0, “nick” + #引号 + “:” + #引号, #引号)
|
||
areaName = 文本_取出中间文本 (str_0, “areaName” + #引号 + “:” + #引号, #引号)
|
||
platName = 文本_取出中间文本 (str_0, “platName” + #引号 + “:” + #引号, #引号)
|
||
|
||
标签_状态.标题 = “昵称:” + nick + #换行符 + “游戏名称:” + roleName + #换行符 + “平台:” + areaName + #换行符 + “手机:” + platName
|
||
.如果真 (信息框 (“是否绑定:” + roleName, #确认取消钮, , ) = #取消钮)
|
||
提示框 (“取消绑定:” + roleName, , , , 1000)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/japi/carnival/nc/common/generateCsrf”, 1, “{}”, 局_Cookie, 返回CK, #常量3))
|
||
cvl_csrf_token = 文本_取出中间文本 (返回CK, “cvl_csrf_token=”, “;”)
|
||
状态条1.置文本 (0, “取token-> ” + str)
|
||
' 调试输出 (cvl_csrf_token)
|
||
' 输出调试 (“cvl_csrf_token-”, cvl_csrf_token)
|
||
.如果真 (cvl_csrf_token = “”)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 1, str)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
' 确认绑定
|
||
str2 = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/japi/carnivalApi/tencent/bind”, 1, “actAlias=20260226ZMGDG&csrfToken=” + cvl_csrf_token, 局_Cookie + “; cvl_csrf_token=” + cvl_csrf_token, , #常量3))
|
||
状态条1.置文本 (0, “确认绑定-> ” + str2)
|
||
' 调试输出 (str2)
|
||
.如果真 (寻找文本 (str2, “error” + #引号 + “:0”, , 假) ≠ -1)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 1, nick + “:绑定成功,生成二维码”)
|
||
程序_延时 (500)
|
||
窗口_置信息3 (超级列表框1.现行选中项, 1, roleName)
|
||
程序_延时 (1000)
|
||
电竞手册二维码30 (ctnEX, 局_Cookie)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
msg = 文本_取出中间文本 (str2, “msg” + #引号 + “:” + #引号, #引号)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 1, msg)
|
||
信息框 (msg, 0, , )
|
||
|
||
' 绑定成功 {"error":0,"msg":"success","data":null,"redirectUrl":null}
|
||
' {"error":1006,"msg":"CSRF校验不通过!","data":null}
|
||
' {"error":-200001,"msg":"当前账号处于换绑周期冷却期,不可换绑","data":{},"redirectUrl":null}
|
||
' 输出调试 (“str5确认绑定-”, str5)
|
||
|
||
.子程序 电竞手册二维码30
|
||
.参数 参_ctn, 文本型
|
||
.参数 参_Cookie, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 str2, 文本型
|
||
.局部变量 yyjson, json对象
|
||
.局部变量 付款30链接, 文本型
|
||
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/japi/oms/web/peace/time”, , , 参_Cookie + “; ” + “acf_ccn=” + 参_ctn, , #常量4))
|
||
状态条1.置文本 (0, “取acf_ccn-> ” + str)
|
||
.如果真 (寻找文本 (str, “error” + #引号 + “:0”, , 假) ≠ -1)
|
||
' {"bizType":"peacePel","biz":{"actAlias":"20260226ZMGDG","amount":3000,"roomId":9263298},"ctn":"47493c6cf9c8461cd6d500d9853c45cf"}
|
||
' {"bizType":"peacePel","biz":{"actAlias":"20260226ZMGDG","amount":3000,"roomId":9263298},"ctn":"47493c6cf9c8461cd6d500d9853c45cf"}
|
||
str2 = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/japi/oms/web/pay/getQrCode”, 1, “{” + #引号 + “bizType” + #引号 + “:” + #引号 + “peacePel” + #引号 + “,” + #引号 + “biz” + #引号 + “:{” + #引号 + “actAlias” + #引号 + “:” + #引号 + “20260226ZMGDG” + #引号 + “,” + #引号 + “amount” + #引号 + “:3000,” + #引号 + “roomId” + #引号 + “:9263298},” + #引号 + “ctn” + #引号 + “:” + #引号 + 参_ctn + #引号 + “}”, 参_Cookie + “; ” + “acf_ccn=” + 参_ctn, , #常量4))
|
||
状态条1.置文本 (0, “开通电竞手册-> ” + str2)
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str2)
|
||
付款30链接 = yyjson.取文本 (“data/qr”)
|
||
.如果真 (付款30链接 ≠ “”)
|
||
图片框1.图片 = 文本生成二维码图片 (付款30链接, , , , , 10)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “电竞手册二维码已生成”)
|
||
状态条1.置文本 (1, “开通电竞手册,30元支付宝付款码”)
|
||
' 标签反馈.标题 = “开通宝典,30元支付宝付款码”
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, str2)
|
||
|
||
.如果真结束
|
||
|
||
|
||
.子程序 _开通精英手册30_被选择
|
||
|
||
启动线程 (&查积分记录, , )
|
||
程序_延时 (2000)
|
||
启动线程 (&开通30精英, , )
|
||
|
||
.子程序 开通30精英
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 ctnEX, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 str2, 文本型
|
||
.局部变量 yyjson, json对象
|
||
.局部变量 付款30链接, 文本型
|
||
|
||
局_文本 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
|
||
ctnEX = 超级列表框1.取标题 (超级列表框1.现行选中项, 5)
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
局_Cookie = 局_F [3]
|
||
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/japi/oms/web/peace/item”, 1, “{” + #引号 + “itemId” + #引号 + “:1,” + #引号 + “ctn” + #引号 + “:” + #引号 + ctnEX + #引号 + “}”, 局_Cookie + “; ” + “acf_ccn=” + ctnEX, , #常量4))
|
||
状态条1.置文本 (0, “取acf_ccn-> ” + str)
|
||
.如果真 (寻找文本 (str, “error” + #引号 + “:0”, , 假) ≠ -1)
|
||
str2 = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/japi/oms/web/pay/getQrCode”, 1, “{” + #引号 + “bizType” + #引号 + “:” + #引号 + “peace” + #引号 + “,” + #引号 + “biz” + #引号 + “:{” + #引号 + “actAlias” + #引号 + “:” + #引号 + “20260120QYOOB” + #引号 + “,” + #引号 + “amount” + #引号 + “:3000,” + #引号 + “roomId” + #引号 + “:9263298},” + #引号 + “ctn” + #引号 + “:” + #引号 + ctnEX + #引号 + “}”, 局_Cookie + “; ” + “acf_ccn=” + ctnEX, , #常量4))
|
||
状态条1.置文本 (0, “开通手册-> ” + str2)
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str2)
|
||
付款30链接 = yyjson.取文本 (“data/qr”)
|
||
' 输出调试 (“30元支付宝付款码-> ”, 付款30链接)
|
||
.如果真 (付款30链接 ≠ “”)
|
||
图片框1.图片 = 文本生成二维码图片 (付款30链接, , , , , 10)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “宝典二维码已生成”)
|
||
状态条1.置文本 (1, “开通宝典,30元支付宝付款码”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, str2)
|
||
|
||
.如果真结束
|
||
|
||
|
||
.子程序 _充值鱼翅_被选择
|
||
.局部变量 返回积分, 文本型
|
||
|
||
返回积分 = 查积分记录 ()
|
||
.如果真 (返回积分 = “NULL”)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “未开通电竞手册”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
.如果真 (到整数 (返回积分) < 10)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “未开通电竞手册”)
|
||
.如果真 (信息框 (“积分:” + 返回积分 + “,是否充值?”, #信息图标 + #确认钮 + #取消钮, , ) = #取消钮)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
.如果真结束
|
||
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “已开通积分:” + 返回积分)
|
||
程序_延时 (1000)
|
||
启动线程 (&鱼翅充值, , )
|
||
|
||
.子程序 鱼翅充值
|
||
.局部变量 str, 文本型
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 鱼刺付款码, 文本型
|
||
.局部变量 鱼刺token, 文本型
|
||
.局部变量 局_bool, 逻辑型
|
||
|
||
局_文本 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
' pay_type=1 支付宝支付 pay_type=2 微信支付
|
||
|
||
局_Cookie = 局_F [3]
|
||
str = 到文本 (网页_访问_对象 (“https://cz.douyu.com/m/gold/getQrCode”, 1, “pay_type=1&product_id=DYTV_Product_Gold_1&number=” + 删首尾空 (编辑框_充值金额.内容) + “&toname=&source=dy_box”, 局_Cookie, , #常量2))
|
||
|
||
鱼刺付款码 = 编码_usc2到ansi (文本_取出中间文本 (str, “code_url” + #引号 + “:” + #引号, #引号))
|
||
鱼刺token = 文本_取出中间文本 (str, “token” + #引号 + “:” + #引号, #引号)
|
||
状态条1.置文本 (0, “鱼翅码-> ” + str)
|
||
.如果真 (鱼刺付款码 ≠ “”)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “鱼翅充值码已生成”)
|
||
图片框1.图片 = 文本生成二维码图片 (鱼刺付款码, , , , , 10)
|
||
状态条1.置文本 (1, “鱼翅” + 编辑框_充值金额.内容 + “元,支付宝付款码”)
|
||
程序_延时 (1000)
|
||
检测鱼刺充值状态 (鱼刺token, 超级列表框1.现行选中项, 局_Cookie)
|
||
程序_延时 (2000)
|
||
直接送礼物 (局_Cookie, 超级列表框1.现行选中项)
|
||
程序_延时 (3000)
|
||
.计次循环首 (3, )
|
||
查积分记录 ()
|
||
.计次循环尾 ()
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, str)
|
||
|
||
.子程序 检测鱼刺充值状态
|
||
.参数 参_token, 文本型, 可空
|
||
.参数 参_索引, 整数型
|
||
.参数 参_cook, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 局_余额, 整数型
|
||
.局部变量 局_工作, 逻辑型
|
||
.局部变量 an, 整数型
|
||
.局部变量 msg, 文本型
|
||
.局部变量 yyjson, json对象
|
||
|
||
' 检测充值鱼刺成功 '{"error":0,"data":{"state":2,"order_id":"7682614632081039361001","quantity":10,"nickname":"用户27335596"}}
|
||
局_工作 = 真
|
||
.判断循环首 (局_工作 = 真)
|
||
_原子递增 (an)
|
||
str = 到文本 (网页_访问_对象 (“https://cz.douyu.com/item/gold/account”, , , 参_cook, , #常量2))
|
||
' '调试输出 (str)
|
||
状态条1.置文本 (0, “[” + 到文本 (an) + “]检测鱼翅充值-> ” + str)
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str)
|
||
局_余额 = yyjson.取整数 (“data/gold”)
|
||
' 调试输出 (“局_余额”, 局_余额)
|
||
窗口_置状态信息 (参_索引, 1, “[” + 到文本 (an) + “]检测鱼翅充值”)
|
||
.如果真 (局_余额 > 0)
|
||
窗口_置状态信息 (参_索引, 1, “鱼刺余额:” + 到文本 (局_余额))
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
程序_延时 (2000)
|
||
.判断循环尾 ()
|
||
|
||
.子程序 直接送礼物
|
||
.参数 参_cook, 文本型
|
||
.参数 参_索引, 整数型
|
||
.局部变量 str, 文本型
|
||
.局部变量 局_充值数, 整数型
|
||
|
||
局_充值数 = 到整数 (删首尾空 (编辑框_充值金额.内容))
|
||
|
||
' 正常返回'{"error":0,"msg":"success","data":{"priceType":2,"sb":0,"noble_gold":0,"ry":0,"noble_gold_black":0,"gid":22171,"gx":0,"num":1,"messages":["type@=dgb/rid@=9263298/gfid@=22171/gs@=0/uid@=460469086/bg@=1/nn@=用户470321034/ic@=avatar@Sdefault@S14/eid@=0/eic@=20051/level@=2/dw@=0/gfcnt@=1/hits@=1/bcnt@=1/bst@=6/ct@=0/el@=/cm@=0/bnn@=/bl@=0/brid@=0/hc@=/sahf@=0/fc@=0/bnid@=1/bnl@=1/receive_uid@=335920043/receive_nn@=若若跑的贼快/pfm@=3175/pma@=454872551/mss@=454872569/skinid@=1890/bcst@=1/bsfl@=1/"],"toast":""}}
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/japi/gift/donate/mainsite/v3”, 1, “giftId=24767&giftCount=” + 到文本 (局_充值数) + “&roomId=9263298&bizExt=%7B%22isMainGift%22%3A1%7D&skinId=3850”, 参_cook, , #常量9))
|
||
状态条1.置文本 (0, “送礼物-> ” + str)
|
||
|
||
.如果真 (寻找文本 (str, “error” + #引号 + “:0”, , 假) ≠ -1)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “送礼物成功”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
窗口_置状态信息 (参_索引, 2, str)
|
||
|
||
.子程序 _赠送冠军烟花_被选择
|
||
|
||
启动线程 (&送礼物, , )
|
||
|
||
.子程序 送礼物
|
||
.局部变量 str, 文本型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 局_充值数, 整数型
|
||
|
||
局_充值数 = 到整数 (删首尾空 (编辑框_充值金额.内容))
|
||
|
||
局_文本 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
局_Cookie = 局_F [3]
|
||
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/japi/gift/donate/mainsite/v3”, 1, “giftId=24767&giftCount=” + 到文本 (局_充值数) + “&roomId=9263298&bizExt=%7B%22isMainGift%22%3A1%7D&skinId=3850”, 局_Cookie, , #常量9))
|
||
|
||
' 调试输出 (str)
|
||
状态条1.置文本 (0, “送礼物-> ” + str)
|
||
' 正常返回'{"error":0,"msg":"success","data":{"priceType":2,"sb":0,"noble_gold":0,"ry":0,"noble_gold_black":0,"gid":22171,"gx":0,"num":1,"messages":["type@=dgb/rid@=9263298/gfid@=22171/gs@=0/uid@=460469086/bg@=1/nn@=用户470321034/ic@=avatar@Sdefault@S14/eid@=0/eic@=20051/level@=2/dw@=0/gfcnt@=1/hits@=1/bcnt@=1/bst@=6/ct@=0/el@=/cm@=0/bnn@=/bl@=0/brid@=0/hc@=/sahf@=0/fc@=0/bnid@=1/bnl@=1/receive_uid@=335920043/receive_nn@=若若跑的贼快/pfm@=3175/pma@=454872551/mss@=454872569/skinid@=1890/bcst@=1/bsfl@=1/"],"toast":""}}
|
||
.如果真 (寻找文本 (str, “error” + #引号 + “:0”, , 假) ≠ -1)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “送礼物成功”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, str)
|
||
|
||
.子程序 _查询手册积分_被选择
|
||
|
||
启动线程 (&查手册积分, , )
|
||
|
||
.子程序 查手册积分
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 ctnEX, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 userid, 文本型
|
||
.局部变量 diff, 文本型
|
||
|
||
局_文本 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
|
||
ctnEX = 超级列表框1.取标题 (超级列表框1.现行选中项, 5)
|
||
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
userid = 局_F [2]
|
||
局_Cookie = 局_F [3]
|
||
|
||
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/japi/oms/web/peace/credit/diff”, 1, “{” + #引号 + “userId” + #引号 + “:” + #引号 + userid + #引号 + “,” + #引号 + “ctn” + #引号 + “:” + #引号 + ctnEX + #引号 + “}”, 局_Cookie, , #常量5))
|
||
|
||
' '{"error":0,"msg":"success","data":{"diff":300}
|
||
状态条1.置文本 (0, “查积分-> ” + str)
|
||
diff = 文本_取出中间文本 (str, “diff” + #引号 + “:”, “}”)
|
||
.如果真 (diff ≠ “”)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 5, “积分:” + diff)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 5, str)
|
||
|
||
.子程序 _一键查询积分_被选择
|
||
.局部变量 p, 整数型
|
||
|
||
.计次循环首 (超级列表框1.取表项数 (), p)
|
||
.如果真 (超级列表框1.取当前状态图片 (p - 1) = 1)
|
||
启动线程 (&查积分记录_线程, p - 1, )
|
||
程序_延时 (10)
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
|
||
.子程序 查积分记录_线程
|
||
.参数 参_索引E, 整数型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 uid, 文本型
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 ctnEX, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 balance, 文本型
|
||
|
||
全临界.进入 ()
|
||
局_文本 = 超级列表框1.取标题 (参_索引E, 1)
|
||
ctnEX = 超级列表框1.取标题 (参_索引E, 5)
|
||
全临界.退出 ()
|
||
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
窗口_置状态信息 (参_索引E, 2, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
uid = 局_F [2]
|
||
局_Cookie = 局_F [3]
|
||
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/activity/peacematch/score/balance”, , , 局_Cookie, , “Host: www.douyu.com” + #换行符 + “Connection: keep-alive” + #换行符 + “sec-ch-ua-platform: ” + #引号 + “Windows” + #引号 + “” + #换行符 + “User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36” + #换行符 + “Accept: application/json, text/plain, */*” + #换行符 + “sec-ch-ua: ” + #引号 + “Not(A:Brand” + #引号 + “;v=” + #引号 + “99” + #引号 + “, ” + #引号 + “Google Chrome” + #引号 + “;v=” + #引号 + “133” + #引号 + “, ” + #引号 + “Chromium” + #引号 + “;v=” + #引号 + “133” + #引号 + “” + #换行符 + “sec-ch-ua-mobile: ?0” + #换行符 + “Sec-Fetch-Site: same-origin” + #换行符 + “Sec-Fetch-Mode: cors” + #换行符 + “Sec-Fetch-Dest: empty” + #换行符 + “Referer: https://www.douyu.com/pages/live-peace-pel/web/point-detail?roomId=9263298&isAnchorSide=0”))
|
||
balance = 文本_取出中间文本 (str, “balance” + #引号 + “:”, “,”)
|
||
状态条1.置文本 (0, “积分记录-> ” + str)
|
||
|
||
.如果 (balance ≠ “”)
|
||
窗口_置状态信息 (参_索引E, 2, “记录积分:” + balance)
|
||
.否则
|
||
窗口_置状态信息 (参_索引E, 2, “NULL”)
|
||
.如果结束
|
||
|
||
返回 ()
|
||
|
||
.子程序 查积分记录, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 uid, 文本型
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 ctnEX, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 balance, 文本型
|
||
|
||
局_文本 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
|
||
ctnEX = 超级列表框1.取标题 (超级列表框1.现行选中项, 5)
|
||
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “Cookie格式错误”)
|
||
返回 (“NULL”)
|
||
.如果真结束
|
||
|
||
uid = 局_F [2]
|
||
局_Cookie = 局_F [3]
|
||
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/japi/oms/web/peace/credit/balance”, 1, “{” + #引号 + “uid” + #引号 + “:” + #引号 + uid + #引号 + “,” + #引号 + “ctn” + #引号 + “:” + #引号 + ctnEX + #引号 + “}”, 局_Cookie, , #常量6))
|
||
balance = 文本_取出中间文本 (str, “balance” + #引号 + “:”, “,”)
|
||
状态条1.置文本 (0, “积分记录-> ” + str)
|
||
|
||
.如果真 (balance ≠ “”)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “记录积分:” + balance)
|
||
返回 (balance)
|
||
.如果真结束
|
||
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “NULL”)
|
||
返回 (“NULL”)
|
||
|
||
.子程序 _兑换商品_被选择
|
||
|
||
启动线程 (&商品兑换, , )
|
||
|
||
.子程序 Getctn, 文本型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_CCK, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 返回CK, 文本型
|
||
.局部变量 ctn1, 文本型
|
||
.局部变量 ctn2, 文本型
|
||
.局部变量 局_CK, 文本型
|
||
.局部变量 str2, 文本型
|
||
|
||
局_文本 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
返回 (“”)
|
||
.如果真结束
|
||
|
||
局_CCK = 局_F [3]
|
||
|
||
str = 到文本 (网页_访问_对象 (“https://www.douyu.com/curl/csrfApi/getCsrfCookie?”, , , 局_CCK, 返回CK, #常量1))
|
||
ctn1 = 文本_取出中间文本 (返回CK, “acf_ccn=”, “;”)
|
||
.如果真 (ctn1 ≠ “”)
|
||
str2 = 到文本 (网页_访问_对象 (“https://www.douyu.com/wgapi/livenc/asubscribe/userSubStatus”, 1, “subscribe=cmn&ctn=” + ctn1, 返回CK, 局_CK, #常量1))
|
||
' 调试输出 (局_CK)
|
||
.如果真 (寻找文本 (str, “error” + #引号 + “:0”, , 假) ≠ -1)
|
||
ctn2 = 文本_取出中间文本 (局_CK, “acf_ccn=”, “;”)
|
||
返回 (ctn2)
|
||
.如果真结束
|
||
|
||
返回 (“”)
|
||
|
||
.如果真结束
|
||
|
||
返回 (“”)
|
||
|
||
.子程序 Getcsrf_token, 文本型
|
||
.参数 参_CK, 文本型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_CCK, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 str, 文本型
|
||
.局部变量 返回CK, 文本型
|
||
.局部变量 csrf_token, 文本型
|
||
|
||
str = 到文本 (网页_访问_对象 (“https://www.douyu.com/japi/carnival/nc/common/generateCsrf”, 1, “{}”, 参_CK, 返回CK, #常量10))
|
||
csrf_token = 文本_取出中间文本 (返回CK, “cvl_csrf_token=”, “;”)
|
||
' '调试输出 (返回CK, , , csrf_token)
|
||
返回 (csrf_token)
|
||
|
||
.子程序 Getctn2, 文本型
|
||
.参数 参_ck, 文本型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_CCK, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 返回CK, 文本型
|
||
.局部变量 ctn1, 文本型
|
||
.局部变量 ctn2, 文本型
|
||
.局部变量 局_CK, 文本型
|
||
.局部变量 str2, 文本型
|
||
|
||
str = 到文本 (网页_访问_对象 (“https://www.douyu.com/curl/csrfNlApi/getCsrfCookie”, , , 参_ck, 返回CK, “Host: www.douyu.com” + #换行符 + “Connection: keep-alive” + #换行符 + “sec-ch-ua-platform: ” + #引号 + “Windows” + #引号 + “” + #换行符 + “User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36” + #换行符 + “Accept: application/json, text/plain, */*” + #换行符 + “sec-ch-ua: ” + #引号 + “Not(A:Brand” + #引号 + “;v=” + #引号 + “99” + #引号 + “, ” + #引号 + “Google Chrome” + #引号 + “;v=” + #引号 + “133” + #引号 + “, ” + #引号 + “Chromium” + #引号 + “;v=” + #引号 + “133” + #引号 + “” + #换行符 + “sec-ch-ua-mobile: ?0” + #换行符 + “Sec-Fetch-Site: same-origin” + #换行符 + “Sec-Fetch-Mode: cors” + #换行符 + “Sec-Fetch-Dest: empty” + #换行符 + “Referer: https://www.douyu.com/pages/ord-task-center?clientType=web&panelSource=1&rid=0”))
|
||
ctn1 = _取单条Cookie (返回CK, “acf_ccn”, 真)
|
||
调试输出 (取程序名称 (1), ctn1)
|
||
返回 (ctn1)
|
||
|
||
.子程序 商品兑换
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 ctnEX, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 局_xy, 文本型
|
||
.局部变量 商品表, 文本型
|
||
.局部变量 商品组, 文本型, , "0"
|
||
.局部变量 要兑换的商品名称, 文本型
|
||
.局部变量 要兑换的商品价格, 文本型
|
||
.局部变量 要兑换的商品ID, 文本型
|
||
.局部变量 roleName, 文本型
|
||
.局部变量 str2, 文本型
|
||
.局部变量 局_bin, 字节集
|
||
.局部变量 生成者, 文本型
|
||
.局部变量 优化价格, 文本型
|
||
.局部变量 areaName, 文本型
|
||
.局部变量 platName, 文本型
|
||
.局部变量 COOK, 文本型
|
||
.局部变量 局_F2, 文本型, , "0"
|
||
.局部变量 局_文本EX, 文本型
|
||
.局部变量 局_用户名, 文本型
|
||
.局部变量 csrf_token, 文本型
|
||
.局部变量 body, 文本型
|
||
.局部变量 randstr, 文本型
|
||
.局部变量 sendxy, 文本型
|
||
.局部变量 yyjson, json对象
|
||
.局部变量 返回ck, 文本型
|
||
.局部变量 acf_ccn, 文本型
|
||
|
||
' 局_文本EX = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
|
||
' 局_F2 = 分割文本 (局_文本EX, “----”, )
|
||
.' 如果真 (取数组成员数 (局_F2) < 3)
|
||
' 返回 ()
|
||
.如果真结束
|
||
|
||
' 局_用户名 = 局_F2 [1]
|
||
|
||
商品表 = 组合框1.取项目文本 (组合框1.现行选中项)
|
||
商品组 = 分割文本 (商品表, “一”, )
|
||
.如果真 (取数组成员数 (商品组) < 3)
|
||
状态条1.置文本 (0, “商品格式错误x”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
要兑换的商品名称 = 商品组 [1]
|
||
要兑换的商品价格 = 商品组 [2]
|
||
要兑换的商品ID = 商品组 [3]
|
||
|
||
状态条1.置文本 (0, “正在兑换商品-> ” + 要兑换的商品ID)
|
||
|
||
局_文本 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 4, “Cookie格式错误”)
|
||
状态条1.置文本 (0, “Cookie格式错误x ”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
局_用户名 = 局_F [1]
|
||
局_Cookie = 局_F [3]
|
||
|
||
acf_ccn = Getctn2 (局_Cookie)
|
||
csrf_token = Getcsrf_token (局_Cookie)
|
||
调试输出 (“acf_ccn---”, acf_ccn, , csrf_token)
|
||
COOK = 局_Cookie + “; cvl_csrf_token=” + csrf_token + “; acf_ccn=” + acf_ccn
|
||
|
||
|
||
' acf_ccn=9d396bf724108c36e71e34ba695adf58; acf_auth=4c35XAUqQT9Eew3DCKAvPZepvpY7BpbfJ7SsOaE%2FXKN8SAWGrJiM7Xqvxinz%2FyLCM9TzKW2JVmo781McjcCD%2F8f%2FxGgRGVe424OaeBJcQlOC7dEoA5YRkrk; acf_jwt_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJtZDUifQ.eyJ1aWQiOjUwMjU0NjEzOSwiY3QiOjAsInN1YiI6InN0IiwiYXVkIjpbImR5Iiwibm9uZSJdLCJiaXoiOjEsImx0a2lkIjo5MDQzNDY3OCwic3RrIjoiMTcwN2QyMmFjMWRmYWRhZSIsImV4cCI6MTc3NjQ4ODMwNSwiaWF0IjoxNzc1ODgzNTA1LCJrZXkiOiJkeS1qd3QtbWQ1In0.Nzk4NDAyMWY4NzgyZDA2YTQwZTIxODc3YzBkZGQwN2Q; cvl_csrf_token=21e65606ae0a47c38ce6fbb1e3d26106; acf_ccn=cvl_csrf_token=21e65606ae0a47c38ce6fbb1e3d26106; 9d396bf724108c36e71e34ba695adf58
|
||
' 调试输出 (COOK)
|
||
置随机数种子 ()
|
||
randstr = 文本_取随机字符 (16, 位或 (1, 2, 4))
|
||
sendxy = 子文本替换 (#常量12, “[randstr]”, “qQizD2s4FNFzSTsG”, , , 真)
|
||
|
||
body = 文本_替换 (#常量14, , , , “[randstr]”, randstr, “[manualID]”, “1W0yGkOdDbAXb”, “[商品ID]”, 要兑换的商品ID, “[token]”, acf_ccn)
|
||
' 调试输出 (body)
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/activity/peacematch/exchange”, 1, body, COOK, 返回ck, sendxy, 局_xy))
|
||
' 调试输出 (“兑换商品-> ” + str)
|
||
状态条1.置文本 (0, “兑换商品-> ” + str)
|
||
.如果真 (寻找文本 (str, “error” + #引号 + “:0”, , 假) ≠ -1)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “兑换成功:” + 要兑换的商品名称)
|
||
.计次循环首 (3, )
|
||
str2 = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/live/memberthird/tencent/bindInfo?actAlias=20260226ZMGDG”, , , 局_Cookie, , #常量3))
|
||
.如果真 (str2 ≠ “”)
|
||
跳出循环 ()
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
|
||
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str2)
|
||
roleName = yyjson.取文本 (“data/gameRole/roleName”)
|
||
.如果 (roleName ≠ “”)
|
||
全线程临界.进入 ()
|
||
优化价格 = 取文本左边 (要兑换的商品价格, 取文本长度 (要兑换的商品价格) - 1)
|
||
保存日志2 (时间_到文本 (取现行时间 (), 1) + “ ” + 局_用户名 + “----” + roleName + “----” + 要兑换的商品名称 + “----” + 优化价格)
|
||
局_bin = 文转图片P (要兑换的商品名称 + “ ” + #换行符 + 时间_格式化 (取现行时间 (), “yyyy年MM月dd日”, “ hh:mm:ss”, 真) + #换行符 + “兑换账号:” + roleName + “(” + 局_用户名 + “)”)
|
||
全线程临界.退出 ()
|
||
剪辑板_置图片 (局_bin)
|
||
提示框 (“兑换成功,图片已复制”, , , , 1000)
|
||
|
||
.否则
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “兑换成功,获取昵称失败”)
|
||
|
||
.如果结束
|
||
|
||
返回 ()
|
||
|
||
.如果真结束
|
||
|
||
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, str)
|
||
|
||
.子程序 查积分记录EX, 文本型, , 1W0yGkOdDbAXb
|
||
.参数 参_uid, 文本型
|
||
.参数 参_CK, 文本型
|
||
.参数 参_ctnEX, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 balance, 文本型
|
||
.局部变量 yyjson, json对象
|
||
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/activity/peacematch/getUserInfo?manualID=1W0yGkOdDbAXb”, , , 参_CK, , #常量6))
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str)
|
||
balance = yyjson.取文本 (“data/userInfo/manualScore”)
|
||
状态条1.置文本 (0, “积分记录-> ” + str)
|
||
返回 (balance)
|
||
|
||
.子程序 _图片框1_被双击, 逻辑型
|
||
.参数 横向位置, 整数型
|
||
.参数 纵向位置, 整数型
|
||
.参数 功能键状态, 整数型
|
||
|
||
.如果真 (图片框1.图片 = { })
|
||
提示框 (“请先生成后,再复制二维码”, , , , 1000)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
剪辑板_置图片 (图片框1.图片)
|
||
' 剪辑板_置图片 (图片_后台截图 (图片框4.取窗口句柄 ()))
|
||
提示框 (“二维码已复制”, , , , 1000)
|
||
|
||
.子程序 _超级列表框1_被双击, 逻辑型
|
||
.参数 横向位置, 整数型
|
||
.参数 纵向位置, 整数型
|
||
.参数 功能键状态, 整数型
|
||
|
||
启动线程 (&子程序标签更新, , )
|
||
|
||
.子程序 子程序标签更新
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_uid, 文本型
|
||
.局部变量 nick, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 roleName, 文本型
|
||
.局部变量 余额, 文本型
|
||
.局部变量 areaName, 文本型
|
||
.局部变量 platName, 文本型
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 局_ctn, 文本型
|
||
.局部变量 yyjson, json对象
|
||
|
||
局_文本 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
|
||
局_ctn = 超级列表框1.取标题 (超级列表框1.现行选中项, 5)
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
状态条1.置文本 (0, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
局_uid = 局_F [2]
|
||
局_Cookie = 局_F [3]
|
||
' 'https://www.douyu.com/japi/carnivalApi/tencent/bindInfo?actAlias=20260120QYOOB
|
||
' 这个回头调整 str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/japi/carnivalApi/v2/tencent/bindInfo?actAlias=cjm”, , , 局_Cookie, , #常量3))
|
||
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/live/memberthird/tencent/bindInfo?actAlias=20260226ZMGDG”, , , 局_Cookie, , #常量3))
|
||
调试输出 (取程序名称 (1), str)
|
||
状态条1.置文本 (0, “是否绑定-> ” + str)
|
||
' {"error":0,"msg":"success","data":{"bindAccount":1,"bindRole":1,"bindAct":1,"needBindRole":null,"txAct":{"txActId":2811,"gameId":"cjm","gameName":"和平精英","bindType":1},"gameAccount":{"bindType":2,"type":"","faceuri":"https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTI4cIOxb4f7vpSkqYCIIvY1EJTgkhS0ZhVzzJSl2LzDpUzVBJKiaDjvuzpdS6cadAvA6bnrYwZ7jlQ/132","nick":"zicoo"},"gameRole":{"roleName":"白菜被拱了呀","areaName":"微信","platName":"安卓(android)","partitionName":""},"i sGranted":null,"gameAuthScene":null,"canChangeRole":0,"changeRoleWaitTime":2490528},"redirectUrl":null}
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str)
|
||
|
||
roleName = yyjson.取文本 (“data/gameRole/roleName”)
|
||
' 文本_取出中间文本 (str, “roleName” + #引号 + “:” + #引号, #引号)
|
||
nick = yyjson.取文本 (“data/gameAccount/nick”)
|
||
' 文本_取出中间文本 (str, “nick” + #引号 + “:” + #引号, #引号)
|
||
areaName = yyjson.取文本 (“data/gameRole/areaName”)
|
||
' 文本_取出中间文本 (str, “areaName” + #引号 + “:” + #引号, #引号)
|
||
platName = yyjson.取文本 (“data/gameRole/platName”)
|
||
' 文本_取出中间文本 (str, “platName” + #引号 + “:” + #引号, #引号)
|
||
余额 = 查积分记录EX (局_uid, 局_Cookie, 局_ctn)
|
||
|
||
标签_昵称.标题 = “账号:” + 局_F [1] + “<->” + “余额:” + 余额
|
||
标签_状态.标题 = “昵称:” + nick + #换行符 + “游戏名称:” + roleName + #换行符 + “平台:” + areaName + #换行符 + “设备:” + platName
|
||
超级列表框1.置标题 (超级列表框1.现行选中项, 2, roleName)
|
||
|
||
.子程序 _标签_状态_被双击, 逻辑型
|
||
.参数 横向位置, 整数型
|
||
.参数 纵向位置, 整数型
|
||
.参数 功能键状态, 整数型
|
||
|
||
剪辑板_置图片 (快照 (标签_状态.取窗口句柄 (), , ))
|
||
提示框 (“图片已复制”, , , , 1000)
|
||
|
||
.子程序 _窗口1_可否被关闭, 逻辑型
|
||
|
||
.如果 (信息框 (“确定要退出程序吗?”, #信息图标 + #确认钮 + #取消钮, , ) = #确认钮)
|
||
返回 (真)
|
||
.否则
|
||
返回 (假)
|
||
.如果结束
|
||
|
||
|
||
.子程序 _窗口1_将被销毁
|
||
|
||
配置_保存_易语言组件 (窗口1)
|
||
Gdip结束 ()
|
||
数据写出列表 ()
|
||
|
||
.子程序 _按钮_结算_被单击
|
||
|
||
启动线程 (&子程序结算, , )
|
||
|
||
.子程序 子程序结算
|
||
.局部变量 str, 文本型
|
||
.局部变量 局_1, 文本型, , "0"
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 N, 整数型
|
||
.局部变量 局_NUM, 整数型
|
||
.局部变量 局_日志路径, 文本型
|
||
.局部变量 局_标识, 文本型, , "0"
|
||
.局部变量 局_文本1, 文本型
|
||
.局部变量 局_文本2, 文本型
|
||
.局部变量 局_返回余额, 整数型
|
||
|
||
局_日志路径 = 取运行目录 () + “\” + 时间_格式化 (取现行时间 (), “MM.dd-”) + “兑换日志.log”
|
||
str = 编码_Utf8到Ansi (读入文件 (局_日志路径))
|
||
.如果真 (str = “”)
|
||
提示框 (“生成日志后,再结算金额...”, , , , 1000)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
文本_取中间_批量 (str, “---------------------------------------------已结算----以上合计金额:”, #换行符, 局_标识)
|
||
.如果真 (取数组成员数 (局_标识) < 1)
|
||
' 提示框 (“生成日志后,再结算金额”, , , , 2000)
|
||
局_F = 分割文本 (str, #换行符, )
|
||
.计次循环首 (取数组成员数 (局_F), N)
|
||
局_返回余额 = 子程序处理余额 (局_F [N])
|
||
_原子运算 (局_NUM, 局_返回余额)
|
||
系统_处理事件 ()
|
||
.计次循环尾 ()
|
||
保存日志2 (#换行符 + #换行符 + “---------------------------------------------已结算----以上合计金额:” + 到文本 (局_NUM) + #换行符 + #换行符)
|
||
提示框 (“结算完成:” + 到文本 (局_NUM), , , , 2000)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
|
||
.如果真 (局_标识 [取数组成员数 (局_标识)] ≠ “”)
|
||
局_文本1 = “---------------------------------------------已结算----以上合计金额:” + 局_标识 [取数组成员数 (局_标识)]
|
||
局_1 = 分割文本 (str, 局_文本1, )
|
||
局_文本2 = 局_1 [取数组成员数 (局_1)]
|
||
.如果真 (局_文本2 ≠ “”)
|
||
局_F = 分割文本 (局_文本2, #换行符, )
|
||
.计次循环首 (取数组成员数 (局_F), N)
|
||
局_返回余额 = 子程序处理余额 (局_F [N])
|
||
_原子运算 (局_NUM, 局_返回余额)
|
||
系统_处理事件 ()
|
||
.计次循环尾 ()
|
||
.如果真 (局_NUM ≤ 0)
|
||
提示框 (“未达到结算条件!”, , , , 2000)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
保存日志2 (#换行符 + #换行符 + “---------------------------------------------已结算----以上合计金额:” + 到文本 (局_NUM) + #换行符 + #换行符)
|
||
清除数组 (局_1)
|
||
清除数组 (局_F)
|
||
提示框 (“结算完成:” + 到文本 (局_NUM), , , , 2000)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
提示框 (“未达到结算条件!”, , , , 2000)
|
||
|
||
.如果真结束
|
||
|
||
|
||
.子程序 子程序处理余额, 整数型
|
||
.参数 参_数据, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 N, 整数型
|
||
|
||
局_F = 分割文本 (参_数据, “----”, )
|
||
.如果真 (取数组成员数 (局_F) = 4)
|
||
返回 (到整数 (局_F [4]))
|
||
.如果真结束
|
||
|
||
返回 (0)
|
||
|
||
.子程序 _按钮_统计_被单击
|
||
.局部变量 str, 文本型
|
||
.局部变量 局_日志路径, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 P, 整数型
|
||
.局部变量 局_返回余额, 整数型
|
||
.局部变量 局_NUM, 整数型
|
||
|
||
局_日志路径 = 取运行目录 () + “\” + 时间_格式化 (取现行时间 (), “MM.dd-”) + “兑换日志.log”
|
||
str = 编码_Utf8到Ansi (读入文件 (局_日志路径))
|
||
局_F = 分割文本 (str, #换行符, )
|
||
.计次循环首 (取数组成员数 (局_F), P)
|
||
局_返回余额 = 子程序处理余额 (局_F [P])
|
||
_原子运算 (局_NUM, 局_返回余额)
|
||
系统_处理事件 ()
|
||
.计次循环尾 ()
|
||
保存日志2 (#换行符 + #换行符 + “*************************************************今日统计总金额:” + 到文本 (局_NUM) + #换行符 + #换行符)
|
||
信息框 (时间_格式化 (取现行时间 (), “MM.dd-”) + “统计总金额:” + 到文本 (局_NUM), 0, , )
|
||
|
||
|
||
.子程序 _读取Cookie_被选择
|
||
.局部变量 局_保存目录, 文本型
|
||
.局部变量 局_文本数据, 文本型
|
||
.局部变量 局_文本数组, 文本型, , "0"
|
||
.局部变量 局_索引, 整数型
|
||
.局部变量 P, 整数型
|
||
.局部变量 N, 整数型
|
||
.局部变量 局_3, 文本型, , "0"
|
||
|
||
局_保存目录 = 取运行目录 () + “\斗鱼CK\” + 时间_格式化 (取现行时间 (), “MM.dd-”) + “斗鱼CK.txt”
|
||
.如果真 (文件是否存在 (局_保存目录) = 假)
|
||
提示框 (“Cookie文件不存在!” + #换行符 + 局_保存目录, , , , 2000)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
|
||
局_文本数据 = 到文本 (读入文件 (局_保存目录))
|
||
局_文本数组 = 分割文本 (局_文本数据, #换行符, )
|
||
.计次循环首 (取数组成员数 (局_文本数组), P)
|
||
判断重复列表 (局_文本数组 [P])
|
||
系统_处理事件 ()
|
||
.计次循环尾 ()
|
||
.计次循环首 (超级列表框1.取表项数 (), N)
|
||
系统_处理事件 ()
|
||
超级列表框1.置状态图片 (N - 1, 1)
|
||
超级列表框1.置标题 (N - 1, 0, 到文本 (N))
|
||
.计次循环尾 ()
|
||
|
||
.子程序 判断重复列表
|
||
.参数 参_内容, 文本型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_用户, 文本型
|
||
.局部变量 _索引, 整数型
|
||
.局部变量 局_索引2, 整数型
|
||
.局部变量 P, 整数型
|
||
|
||
_索引 = 超级列表框1.查找表项 (参_内容, , , 1)
|
||
.如果 (_索引 = -1)
|
||
局_索引2 = 超级列表框1.插入表项 (, , , , , )
|
||
超级列表框1.置标题 (局_索引2, 0, 到文本 (局_索引2 + 1))
|
||
超级列表框1.置标题 (局_索引2, 1, 参_内容)
|
||
超级列表框1.置状态图片 (局_索引2, 1)
|
||
|
||
.否则
|
||
超级列表框1.置标题 (_索引, 1, 参_内容)
|
||
.如果结束
|
||
|
||
|
||
.子程序 _同步删除Cookie_被选择
|
||
.局部变量 局_保存目录, 文本型
|
||
.局部变量 局_保存文本, 鱼刺类_输出文本
|
||
.局部变量 i, 整数型
|
||
.局部变量 P, 整数型
|
||
|
||
局_保存目录 = 取运行目录 () + “\斗鱼CK\” + 时间_格式化 (取现行时间 (), “MM.dd-”) + “斗鱼CK.txt”
|
||
超级列表框1.删除表项 (超级列表框1.现行选中项)
|
||
删除文件 (局_保存目录)
|
||
程序_延时 (500)
|
||
局_保存目录 = 取运行目录 () + “\斗鱼CK\”
|
||
.计次循环首 (超级列表框1.取表项数 (), i)
|
||
系统_处理事件 ()
|
||
局_保存文本.写文本行 (超级列表框1.取标题 (i - 1, 1), 时间_格式化 (取现行时间 (), “MM.dd-”) + “斗鱼CK”, 局_保存目录, “.txt”)
|
||
.计次循环尾 ()
|
||
.计次循环首 (超级列表框1.取表项数 (), P)
|
||
系统_处理事件 ()
|
||
超级列表框1.置状态图片 (P - 1, 1)
|
||
超级列表框1.置标题 (P - 1, 0, 到文本 (P))
|
||
.计次循环尾 ()
|
||
|
||
提示框 (“同步完成”, , , , 1000)
|
||
|
||
.子程序 保存日志
|
||
.参数 参_str, 文本型
|
||
.局部变量 filename, 文本型
|
||
.局部变量 保存到文件, 鱼刺类_输出文本
|
||
|
||
filename = 时间_格式化 (取现行时间 (), “MM.dd-”) + “流程日志”
|
||
保存到文件.写文本行 (参_str, filename, 取运行目录 () + “\”, “.log”)
|
||
|
||
.子程序 保存日志2
|
||
.参数 参_str, 文本型
|
||
.局部变量 filename, 文本型
|
||
.局部变量 保存到文件, 鱼刺类_输出文本
|
||
|
||
filename = 时间_格式化 (取现行时间 (), “MM.dd-”) + “兑换日志”
|
||
保存到文件.写文本行 (参_str, filename, 取运行目录 () + “\”, “.log”)
|
||
' 保存到文件.关闭所有文件占用 ()
|
||
|
||
.子程序 数据写入列表, , , APP
|
||
.局部变量 文件号, 整数型
|
||
.局部变量 文件名, 文本型
|
||
.局部变量 状态数组, 文本型, , "0"
|
||
.局部变量 文本数组, 文本型, , "0"
|
||
.局部变量 M, 整数型
|
||
.局部变量 N, 整数型
|
||
.局部变量 局_状态图片, 整数型
|
||
|
||
文件名 = 全目录临时 + “\临时ck.txt”
|
||
文件号 = 打开文件 (文件名, , )
|
||
移到文件首 (文件号)
|
||
处理事件 ()
|
||
.判断循环首 (取反 (是否在文件尾 (文件号, 真)))
|
||
重定义数组 (状态数组, 假, 0)
|
||
重定义数组 (文本数组, 假, 0)
|
||
状态数组 = 分割文本 (读入一行 (文件号), “$”, )
|
||
.如果真 (取数组成员数 (状态数组) ≥ 2)
|
||
.如果 (状态数组 [1] = “x”)
|
||
局_状态图片 = 1
|
||
.否则
|
||
局_状态图片 = 0
|
||
.如果结束
|
||
文本数组 = 分割文本 (状态数组 [2], “|||”, )
|
||
M = 超级列表框1.插入表项 (, , , , , )
|
||
|
||
超级列表框1.置状态图片 (M, 局_状态图片)
|
||
.计次循环首 (取数组成员数 (文本数组), N)
|
||
系统_处理事件 ()
|
||
超级列表框1.置标题 (M, N - 1, 文本数组 [N])
|
||
.如果真 (N = 20) ' 填充满一页就手动重画
|
||
超级列表框1.禁止重画 ()
|
||
.如果真结束
|
||
.如果真 (N % 100 = 0) ' 每100次插入 换一次姿势 ``233333
|
||
超级列表框1.允许重画 ()
|
||
超级列表框1.发送信息 (277, 7, 0) ' 显示最后一行
|
||
超级列表框1.禁止重画 ()
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
|
||
|
||
|
||
.如果真结束
|
||
|
||
.判断循环尾 ()
|
||
关闭文件 (文件号)
|
||
超级列表框1.允许重画 () ' 恢复自动重画
|
||
超级列表框1.发送信息 (277, 7, 0) ' 显示最后一行
|
||
|
||
.子程序 数据写出列表, , , APP
|
||
.局部变量 文件名, 文本型
|
||
.局部变量 读入账号, 文本型
|
||
.局部变量 n, 整数型
|
||
.局部变量 临时文件名, 文本型
|
||
.局部变量 文件号, 整数型
|
||
.局部变量 文本, 文本型
|
||
.局部变量 空, 字节集
|
||
.局部变量 局_状态图片, 文本型
|
||
|
||
临时文件名 = 全目录临时 + “\临时ck.txt”
|
||
文件号 = 打开文件 (临时文件名, 4, )
|
||
_处理事件 ()
|
||
文本 = “”
|
||
|
||
.计次循环首 (超级列表框1.取表项数 (), n)
|
||
系统_处理事件 ()
|
||
.判断开始 (超级列表框1.取当前状态图片 (n - 1) = 1)
|
||
局_状态图片 = “x”
|
||
|
||
.默认
|
||
局_状态图片 = “y”
|
||
.判断结束
|
||
|
||
文本 = 局_状态图片 + “$” + 超级列表框1.取标题 (n - 1, 0) + “|||” + 超级列表框1.取标题 (n - 1, 1) + “|||” + 超级列表框1.取标题 (n - 1, 2) + “|||” + 超级列表框1.取标题 (n - 1, 3) + “|||” + 超级列表框1.取标题 (n - 1, 4) + “|||” + 超级列表框1.取标题 (n - 1, 5) + “|||” + 超级列表框1.取标题 (n - 1, 6)
|
||
|
||
写文本行 (文件号, 文本)
|
||
.计次循环尾 ()
|
||
关闭文件 (文件号)
|
||
|
||
.子程序 _标签_昵称_被双击, 逻辑型, , https://livelink.qq.com/act/a20200527midgroupage/pc/?sig=0d29d14f3e9bdb05f7f091340952054f&faceUrl=https%3A%2F%2Fapic.douyucdn.cn%2Fupload%2Favatar%2Fdefault%2F15_middle.jpg&code=wW6EhNWpLEVNHKEMfB9vaEWKPdowIikRqFJI0IKm%2BcxGa%2B8OEPhyF%2BZ58W80CrGigCGtLddIofBcnRkylmccKw%3D%3D&redirectUrl=null&t=1661433534&livePlatId=douyu&nickName=%E7%94%A8%E6%88%B702435853&actId=2811&gameIdList=cjm
|
||
.参数 横向位置, 整数型
|
||
.参数 纵向位置, 整数型
|
||
.参数 功能键状态, 整数型
|
||
.局部变量 str, 文本型, , , 昵称:null <-> 余额:null
|
||
|
||
str = 删首尾空 (文本_取出中间文本 (标签_昵称.标题, “账号:”, “<->”))
|
||
置剪辑板文本 (str)
|
||
提示框 (str + “ 已复制”, , , , 1000)
|
||
|
||
.子程序 _按钮_关闭_被单击, , , 测试
|
||
|
||
_扫码框.可视 = 假
|
||
工作中 = 假
|
||
关闭线程句柄 (集句柄)
|
||
强制结束线程 (集句柄)
|
||
|
||
.子程序 _扫码登录_被选择
|
||
|
||
' 载入 (窗口_扫码, , 真)
|
||
_扫码框.可视 = 真
|
||
标签显示.可视 = 假
|
||
按钮_刷新.可视 = 假
|
||
按钮_刷新.禁止 = 真
|
||
启动线程 (&getscanEX, , 集句柄)
|
||
|
||
.子程序 getscanEX, 逻辑型, , 获取扫码
|
||
.局部变量 str, 文本型
|
||
.局部变量 yyjson, json对象
|
||
.局部变量 surl, 文本型
|
||
.局部变量 code, 文本型
|
||
.局部变量 bool, 逻辑型
|
||
.局部变量 局_Code, 文本型
|
||
.局部变量 局_msg, 文本型
|
||
.局部变量 局_LoginUrl, 文本型
|
||
.局部变量 CK, 文本型
|
||
|
||
图片框2.图片 = { }
|
||
网页_清除Cookie (“passport.douyu.com”)
|
||
标签_反馈.标题 = “正在二维码...”
|
||
网页_访问_对象 (“https://passport.douyu.com/index/login?passport_reg_callback=PASSPORT_REG_SUCCESS_CALLBACK&passport_login_callback=PASSPORT_LOGIN_SUCCESS_CALLBACK&passport_close_callback=PASSPORT_CLOSE_CALLBACK&passport_dp_callback=PASSPORT_DP_CALLBACK&type=login&client_id=1&state=https%3A%2F%2Fwww.douyu.com%2F&source=click_topnavi_login”, , , “dy_did=05444ffb59d181b4d194b59900011601; acf_did=05444ffb59d181b4d194b59900011601; Hm_lpvt_e99aee90ec1b2106afe7ec3b199020a7=” + 到文本 (时间_取现行时间戳1 (假)), , #常量8)
|
||
程序_延时 (1000)
|
||
str = 编码_usc2到ansi (到文本 (网页_访问_对象 (“https://passport.douyu.com/scan/generateCode”, 1, “client_id=1&isMultiAccount=0”, “dy_did=05444ffb59d181b4d194b59900011601; acf_did=05444ffb59d181b4d194b59900011601; Hm_lpvt_e99aee90ec1b2106afe7ec3b199020a7=” + 到文本 (时间_取现行时间戳1 (假)), , #扫码XY1)))
|
||
|
||
' “dy_did=05444ffb59d181b4d194b59900011601; acf_did=05444ffb59d181b4d194b59900011601; Hm_lpvt_e99aee90ec1b2106afe7ec3b199020a7=” + 到文本 (时间_取现行时间戳1 (假))
|
||
|
||
' 调试输出 (str)
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str)
|
||
surl = yyjson.取文本 (“data/url”)
|
||
局_Code = yyjson.取文本 (“data/code”)
|
||
.如果真 (surl = “” 或 局_Code = “”)
|
||
标签_反馈.标题 = “请关闭后重新生成二维码!”
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
图片框2.图片 = 文本生成二维码图片 (surl, , , , , 20)
|
||
标签_反馈.标题 = “二维码已生成,请在手机上确认!”
|
||
|
||
工作中 = 真
|
||
.判断循环首 (工作中 = 真)
|
||
bool = scanauthEX (局_Code, 局_msg, 局_LoginUrl)
|
||
.如果真 (bool = 真)
|
||
跳出循环 ()
|
||
.如果真结束
|
||
|
||
.如果真 (寻找文本 (局_msg, “code不存在或者是已经过期”, , 假) ≠ -1)
|
||
关闭线程句柄 (集句柄)
|
||
强制结束线程 (集句柄)
|
||
标签显示.可视 = 真
|
||
按钮_刷新.可视 = 真
|
||
按钮_刷新.禁止 = 假
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
程序_延时 (1000)
|
||
系统_处理事件 ()
|
||
.判断循环尾 ()
|
||
Login_douEX (局_LoginUrl)
|
||
返回 (真)
|
||
|
||
.子程序 scanauthEX, 逻辑型, , 检测是否扫码
|
||
.参数 参_code, 文本型
|
||
.参数 返回msg, 文本型, 参考
|
||
.参数 返回登录url, 文本型, 参考
|
||
.局部变量 str, 文本型
|
||
.局部变量 yyjson, json对象
|
||
.局部变量 局_msg, 文本型
|
||
.局部变量 局surl, 文本型
|
||
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://passport.douyu.com/japi/scan/auth?time=” + 时间_取现行时间戳 () + “&code=” + 参_code, , , , , #扫码XY1))
|
||
' 调试输出 (“参_code---”, 参_code)
|
||
' 调试输出 (str)
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str)
|
||
返回msg = yyjson.取文本 (“msg”)
|
||
返回登录url = yyjson.取文本 (“data/url”)
|
||
标签_反馈.标题 = “>>>>” + 返回msg
|
||
.如果真 (返回登录url ≠ “”)
|
||
标签_反馈.标题 = “扫码成功,正在登录...”
|
||
返回 (真)
|
||
.如果真结束
|
||
|
||
返回 (假)
|
||
|
||
.子程序 Login_douEX, , , 登录斗鱼
|
||
.参数 参_url, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 局_索引, 整数型
|
||
.局部变量 局_COOK, 文本型
|
||
.局部变量 acf_uid, 文本型
|
||
.局部变量 acf_nickname, 文本型
|
||
.局部变量 解析CK, 类_Cookie
|
||
|
||
str = 编码_usc2到ansi (到文本 (网页_访问_对象 (参_url + “&callback=appClient_json_callback&_=” + 时间_取现行时间戳 (), , , , 局_COOK, #扫码登录)))
|
||
' 调试输出 (str)
|
||
' 调试输出 (“局_COOK---”, 局_COOK)
|
||
.如果真 (局_COOK ≠ “”)
|
||
标签_反馈.标题 = “>>>扫码登录成功!”
|
||
acf_uid = 网页_取单条Cookie (局_COOK, “acf_uid”, 真)
|
||
|
||
acf_nickname = 编码_URL解码 (网页_取单条Cookie (局_COOK, “acf_nickname”, 真), 真)
|
||
局_索引 = 超级列表框1.插入表项 (, , , , , )
|
||
超级列表框1.置标题 (局_索引, 0, 到文本 (局_索引 + 1))
|
||
超级列表框1.置标题 (局_索引, 1, acf_nickname + “----” + acf_uid + “----” + 局_COOK)
|
||
超级列表框1.置状态图片 (局_索引, 1)
|
||
超级列表框1.保证显示 (局_索引)
|
||
工作中 = 假
|
||
_扫码框.可视 = 假
|
||
|
||
.如果真结束
|
||
|
||
|
||
.子程序 _按钮_刷新_被单击
|
||
|
||
标签显示.可视 = 假
|
||
按钮_刷新.可视 = 假
|
||
按钮_刷新.禁止 = 真
|
||
启动线程 (&getscanEX, , 集句柄)
|
||
|
||
.子程序 _图片框2_被双击, 逻辑型
|
||
.参数 横向位置, 整数型
|
||
.参数 纵向位置, 整数型
|
||
.参数 功能键状态, 整数型
|
||
|
||
剪辑板_置图片 (图片框2.图片)
|
||
提示框 (“图片已复制”, , , , 1000)
|
||
|
||
.子程序 __扫码框_鼠标左键被按下, 逻辑型
|
||
.参数 横向位置, 整数型
|
||
.参数 纵向位置, 整数型
|
||
.参数 功能键状态, 整数型
|
||
|
||
窗口1.发送信息 (161, 2, 0)
|
||
|
||
.子程序 _粘贴Cookie_被选择
|
||
.局部变量 文本数组, 文本型, , "0"
|
||
.局部变量 计次1, 整数型
|
||
.局部变量 计次2, 整数型
|
||
.局部变量 临时数组, 文本型, , "0"
|
||
.局部变量 索引, 整数型
|
||
.局部变量 i, 文本型
|
||
.局部变量 总数数组, 文本型, , "0"
|
||
.局部变量 内容, 文本型
|
||
.局部变量 X, 整数型
|
||
.局部变量 状态数组, 文本型, , "0"
|
||
.局部变量 N, 整数型
|
||
.局部变量 M, 整数型
|
||
.局部变量 判断数据, 文本型
|
||
|
||
' 下面的是粘贴根据“----“判断是否是一条或者两条数据
|
||
i = 取剪辑板文本 ()
|
||
.如果真 (i = “”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
文本数组 = 分割文本 (i, #换行符, )
|
||
.计次循环首 (取数组成员数 (文本数组), X)
|
||
.如果真 (文本数组 [X] ≠ “”)
|
||
M = 超级列表框1.插入表项 (, , , , , )
|
||
超级列表框1.置状态图片 (M, 1)
|
||
超级列表框1.置标题 (M, 0, 到文本 (M + 1))
|
||
超级列表框1.置标题 (M, 1, 文本数组 [X])
|
||
.如果真结束
|
||
|
||
系统_处理事件 ()
|
||
.计次循环尾 ()
|
||
超级列表框1.允许重画 () ' 恢复自动重画
|
||
超级列表框1.发送信息 (277, 7, 0) ' 显示最后一行
|
||
|
||
清除数组 (文本数组)
|
||
返回 ()
|
||
|
||
.子程序 _搜索游戏名_被选择
|
||
.局部变量 索引EX, 整数型
|
||
.局部变量 str, 文本型
|
||
|
||
输入框 (“查找包含游戏名的字符”, “查找游戏名”, , str, , )
|
||
.如果真 (str = “”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
索引EX = 超级列表框1.查找表项 (str, , 假, 2)
|
||
.如果真 (索引EX ≠ -1)
|
||
超级列表框1.保证显示 (索引EX)
|
||
超级列表框1.选择表项 (索引EX)
|
||
.如果真结束
|
||
|
||
返回 ()
|
||
|
||
.子程序 _搜索状态_被选择
|
||
.局部变量 索引EX, 整数型
|
||
.局部变量 str, 文本型
|
||
|
||
输入框 (“查找包含状态的字符”, “查找状态”, , str, , )
|
||
.如果真 (str = “”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
索引EX = 超级列表框1.查找表项 (str, , 假, 4)
|
||
.如果真 (索引EX ≠ -1)
|
||
超级列表框1.保证显示 (索引EX)
|
||
超级列表框1.选择表项 (索引EX)
|
||
.如果真结束
|
||
|
||
返回 ()
|
||
|
||
|
||
.子程序 子程序检测账号EX
|
||
.参数 参_索引, 整数型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_CCK, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 返回CK, 文本型
|
||
|
||
全检车临界.进入 ()
|
||
局_文本 = 超级列表框1.取标题 (参_索引, 1)
|
||
全检车临界.退出 ()
|
||
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
窗口_置状态信息 (参_索引, 2, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
局_CCK = 局_F [3]
|
||
str = 到文本 (网页_访问_对象 (“https://www.douyu.com/curl/csrfApi/getCsrfCookie?”, , , 局_CCK, , #常量1))
|
||
' 调试输出 (str)
|
||
状态条1.置文本 (0, “生成1-> ” + 编码_usc2到ansi (str))
|
||
.判断开始 (寻找文本 (str, “-99”, , 假) ≠ -1)
|
||
窗口_置状态信息 (参_索引, 1, “账号未登录”)
|
||
返回 ()
|
||
|
||
.判断 (寻找文本 (str, “无效”, , 假) ≠ -1)
|
||
窗口_置状态信息 (参_索引, 1, “账号无效”)
|
||
返回 ()
|
||
|
||
.默认
|
||
窗口_置状态信息 (参_索引, 1, “账号正常”)
|
||
.判断结束
|
||
|
||
返回 ()
|
||
|
||
.子程序 _一键检测账号_被选择
|
||
.局部变量 p, 整数型
|
||
|
||
.计次循环首 (超级列表框1.取表项数 (), p)
|
||
.如果真 (超级列表框1.取当前状态图片 (p - 1) = 1)
|
||
启动线程 (&子程序检测账号EX, p - 1, )
|
||
程序_延时 (10)
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
|
||
|
||
.子程序 _全选_被选择
|
||
.局部变量 P, 整数型
|
||
|
||
.计次循环首 (超级列表框1.取表项数 (), P)
|
||
系统_处理事件 ()
|
||
超级列表框1.置状态图片 (P - 1, 1)
|
||
.计次循环尾 ()
|
||
|
||
.子程序 _反选_被选择
|
||
.局部变量 P, 整数型
|
||
|
||
.计次循环首 (超级列表框1.取表项数 (), P)
|
||
系统_处理事件 ()
|
||
.如果 (超级列表框1.取当前状态图片 (P - 1) = 0)
|
||
超级列表框1.置状态图片 (P - 1, 1)
|
||
|
||
.否则
|
||
超级列表框1.置状态图片 (P - 1, 0)
|
||
.如果结束
|
||
|
||
.计次循环尾 ()
|
||
|
||
|
||
.子程序 _一键获取游戏名_被选择
|
||
.局部变量 p, 整数型
|
||
|
||
.计次循环首 (超级列表框1.取表项数 (), p)
|
||
.如果真 (超级列表框1.取当前状态图片 (p - 1) = 1)
|
||
启动线程 (&子程序获取昵称EX, p - 1, )
|
||
程序_延时 (10)
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
|
||
.子程序 子程序获取昵称EX
|
||
.参数 索引EX, 整数型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_uid, 文本型
|
||
.局部变量 nick, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 roleName, 文本型
|
||
.局部变量 余额, 文本型
|
||
.局部变量 areaName, 文本型
|
||
.局部变量 platName, 文本型
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 局_ctn, 文本型
|
||
|
||
全临界.进入 ()
|
||
局_文本 = 超级列表框1.取标题 (索引EX, 1)
|
||
局_ctn = 超级列表框1.取标题 (索引EX, 5)
|
||
全临界.退出 ()
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
状态条1.置文本 (0, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
局_uid = 局_F [2]
|
||
局_Cookie = 局_F [3]
|
||
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/live/memberthird/tencent/bindInfo?actAlias=20260226ZMGDG”, , , 局_Cookie, , #常量3))
|
||
' 调试输出 (str)
|
||
全临界.进入 ()
|
||
状态条1.置文本 (0, “是否绑定-> ” + str)
|
||
roleName = 文本_取出中间文本 (str, “roleName” + #引号 + “:” + #引号, #引号)
|
||
超级列表框1.置标题 (索引EX, 2, roleName)
|
||
全临界.退出 ()
|
||
|
||
' {"error":0,"msg":"success","data":{"bindAccount":1,"bindRole":1,"bindAct":1,"needBindRole":null,"txAct":{"txActId":2811,"gameId":"cjm","gameName":"和平精英","bindType":1},"gameAccount":{"bindType":2,"type":"","faceuri":"https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTI4cIOxb4f7vpSkqYCIIvY1EJTgkhS0ZhVzzJSl2LzDpUzVBJKiaDjvuzpdS6cadAvA6bnrYwZ7jlQ/132","nick":"zicoo"},"gameRole":{"roleName":"白菜被拱了呀","areaName":"微信","platName":"安卓(android)","partitionName":""},"isGranted":null,"gameAuthScene":null,"canChangeRole":0,"changeRoleWaitTime":2490528},"redirectUrl":null}
|
||
|
||
|
||
' nick = 文本_取出中间文本 (str, “nick” + #引号 + “:” + #引号, #引号)
|
||
' areaName = 文本_取出中间文本 (str, “areaName” + #引号 + “:” + #引号, #引号)
|
||
' platName = 文本_取出中间文本 (str, “platName” + #引号 + “:” + #引号, #引号)
|
||
|
||
|
||
.子程序 _按钮_刷新商品1_被单击
|
||
|
||
启动线程 (&商品加列表, , )
|
||
|
||
.子程序 商品加列表
|
||
.局部变量 局_商品名, 文本型
|
||
|
||
局_商品名 = 组合框1.取项目文本 (组合框1.现行选中项)
|
||
超级列表框1.置标题 (超级列表框1.现行选中项, 3, 局_商品名)
|
||
|
||
.子程序 _按钮_启动_被单击
|
||
|
||
.判断开始 (按钮_启动.标题 = “批量兑换商品[列表勾选]”)
|
||
.如果真 (超级列表框1.取表项数 () ≤ 0)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
按钮_启动.禁止 = 真
|
||
.如果真 (线程_创建 (&工作线程) = 假)
|
||
按钮_启动.禁止 = 假
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
.判断 (按钮_启动.标题 = “停止兑换商品”)
|
||
按钮_启动.禁止 = 真
|
||
按钮_启动.标题 = “停 止 中...”
|
||
全工作中 = 假
|
||
工作线程池EX.销毁 ()
|
||
返回 ()
|
||
.默认
|
||
|
||
.判断结束
|
||
|
||
|
||
.子程序 工作线程
|
||
.局部变量 bool, 逻辑型
|
||
.局部变量 int, 整数型
|
||
.局部变量 任务数, 整数型
|
||
.局部变量 局_文本txt, 文本型
|
||
.局部变量 局_data, 文本型
|
||
.局部变量 返回用户名, 文本型
|
||
.局部变量 返回Cookie, 文本型
|
||
.局部变量 返回商品名称, 文本型
|
||
.局部变量 返回商品价格, 文本型
|
||
.局部变量 返回商品ID, 文本型
|
||
|
||
全定时数 = 0
|
||
按钮_启动.标题 = “兑换中...”
|
||
状态条1.置文本 (0, “线程启动中...”)
|
||
bool = 工作线程池EX.创建 (50, 50, , 真, , 1024 × 128)
|
||
.如果真 (bool = 假)
|
||
状态条1.置文本 (0, “初始化工作线程池失败!”)
|
||
按钮_启动.标题 = “批量兑换商品[列表勾选]”
|
||
按钮_启动.禁止 = 假
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
全工作中 = 真
|
||
按钮_启动.标题 = “停止兑换商品”
|
||
按钮_启动.禁止 = 假
|
||
|
||
int = 0
|
||
.判断循环首 (全工作中 = 真)
|
||
任务数 = 工作线程池EX.取_执行线程数 () + 工作线程池EX.取_队列任务数 ()
|
||
任务数 = 工作线程池EX.取_最大线程容量 () - 任务数
|
||
.如果真 (任务数 > 0)
|
||
.如果真 (超级列表框1.取当前状态图片 (int) = 1)
|
||
工作线程池EX.投递任务 (&线程子程序, int)
|
||
.如果真结束
|
||
|
||
int = int + 1
|
||
|
||
.如果真结束
|
||
|
||
.如果真 (int ≥ 超级列表框1.取表项数 ())
|
||
跳出循环 ()
|
||
.如果真结束
|
||
|
||
_延迟 (1)
|
||
.判断循环尾 ()
|
||
.循环判断首 ()
|
||
程序_延时 (300)
|
||
.循环判断尾 (工作线程池EX.取_是否完全空闲 () = 假)
|
||
状态条1.置文本 (0, “正在销毁工作线程池...”)
|
||
工作线程池EX.销毁 ()
|
||
状态条1.置文本 (0, “销毁工作线程池成功!”)
|
||
按钮_启动.标题 = “批量兑换商品[列表勾选]”
|
||
按钮_启动.禁止 = 假
|
||
状态条1.置文本 (0, “执行停止完毕!”)
|
||
.如果真 (选择框_定时抢购.选中 = 真)
|
||
时钟1.时钟周期 = 0
|
||
选择框_定时抢购.选中 = 假
|
||
状态条1.置文本 (1, “定时操作完毕!”)
|
||
.如果真结束
|
||
|
||
|
||
.子程序 处理Cookie, 逻辑型
|
||
.参数 参_data, 文本型
|
||
.参数 返回用户名, 文本型, 参考
|
||
.参数 返回Cookie, 文本型, 参考
|
||
.局部变量 F_F, 文本型, , "0"
|
||
|
||
F_F = 分割文本 (参_data, “----”, )
|
||
.如果真 (取数组成员数 (F_F) < 3)
|
||
返回Cookie = “Cookie格式错误”
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
返回用户名 = F_F [1]
|
||
返回Cookie = F_F [3]
|
||
返回 (真)
|
||
|
||
.子程序 处理商品, 逻辑型
|
||
.参数 参_data, 文本型
|
||
.参数 返回商品名称, 文本型, 参考
|
||
.参数 返回商品价格, 文本型, 参考
|
||
.参数 返回商品ID, 文本型, 参考
|
||
.局部变量 F_F, 文本型, , "0"
|
||
|
||
F_F = 分割文本 (参_data, “一”, )
|
||
.如果真 (取数组成员数 (F_F) < 3)
|
||
返回商品ID = “商品格式错误”
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
返回商品名称 = F_F [1]
|
||
返回商品价格 = F_F [2]
|
||
返回商品ID = F_F [3]
|
||
返回 (真)
|
||
|
||
.子程序 子程序等待定时, , , 暂不使用
|
||
.局部变量 P, 整数型
|
||
.局部变量 N, 整数型
|
||
.局部变量 局_兑换状态, 文本型
|
||
|
||
.计次循环首 (到整数 (删首尾空 (编辑框_定时秒.内容)), P)
|
||
系统_处理事件 ()
|
||
状态条1.置文本 (0, “已设置定时:” + 编辑框_定时秒.内容 + “秒,开始计时/” + 到文本 (P))
|
||
程序_延时 (1000)
|
||
.计次循环尾 ()
|
||
.计次循环首 (超级列表框1.取表项数 (), N)
|
||
系统_处理事件 ()
|
||
全临界.进入 ()
|
||
局_兑换状态 = 超级列表框1.取标题 (N - 1, 4)
|
||
全临界.退出 ()
|
||
.如果真 (局_兑换状态 ≠ “兑换成功”)
|
||
超级列表框1.置状态图片 (N - 1, 1)
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
|
||
.子程序 线程子程序
|
||
.参数 参_索引, 整数型
|
||
.局部变量 局_data, 文本型
|
||
.局部变量 F_F, 文本型, , "0"
|
||
.局部变量 局_ctnEX, 文本型
|
||
.局部变量 csrf_token, 文本型
|
||
.局部变量 randstr, 文本型
|
||
.局部变量 heardes, 文本型
|
||
.局部变量 body, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 局_xy, 文本型
|
||
.局部变量 roleName, 文本型
|
||
.局部变量 str2, 文本型
|
||
.局部变量 areaName, 文本型
|
||
.局部变量 platName, 文本型
|
||
.局部变量 优化价格, 文本型
|
||
.局部变量 局_bin, 字节集
|
||
.局部变量 局_文本txt, 文本型
|
||
.局部变量 F_F2, 文本型, , "0"
|
||
.局部变量 ctnEX, 文本型
|
||
.局部变量 COOK, 文本型
|
||
.局部变量 yyjson, json对象
|
||
.局部变量 error, 文本型
|
||
.局部变量 msg, 文本型
|
||
.局部变量 i, 整数型
|
||
.局部变量 返回用户名, 文本型
|
||
.局部变量 返回Cookie, 文本型
|
||
.局部变量 返回商品名称, 文本型
|
||
.局部变量 返回商品价格, 文本型
|
||
.局部变量 返回商品ID, 文本型
|
||
.局部变量 acf_ccn, 文本型
|
||
|
||
.如果真 (全工作中 = 假)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
全线程临界.进入 ()
|
||
超级列表框1.置状态图片 (参_索引, 0)
|
||
局_data = 超级列表框1.取标题 (参_索引, 1)
|
||
局_文本txt = 超级列表框1.取标题 (参_索引, 3)
|
||
超级列表框1.保证显示 (参_索引)
|
||
全线程临界.退出 ()
|
||
.如果真 (处理Cookie (局_data, 返回用户名, 返回Cookie) = 假)
|
||
窗口_置状态信息 (参_索引, 1, 返回Cookie)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
.如果真 (处理商品 (局_文本txt, 返回商品名称, 返回商品价格, 返回商品ID) = 假)
|
||
窗口_置状态信息 (参_索引, 1, 返回商品ID)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
|
||
acf_ccn = Getctn2 (返回Cookie)
|
||
csrf_token = Getcsrf_token (返回Cookie)
|
||
COOK = 返回Cookie + “; cvl_csrf_token=” + csrf_token + “; acf_ccn=” + acf_ccn
|
||
|
||
' randstr = 文本_取随机字符 (16, 位或 (1, 2, 4))
|
||
heardes = 子文本替换 (#常量12, “[randstr]”, “qQizD2s4FNFzSTsG”, , , 真)
|
||
|
||
body = 文本_替换 (#常量14, , , , “[randstr]”, “qQizD2s4FNFzSTsG”, “[manualID]”, “1W0yGkOdDbAXb”, “[商品ID]”, 返回商品ID, “[token]”, acf_ccn)
|
||
' 调试输出 (body)
|
||
|
||
|
||
|
||
.判断循环首 (真)
|
||
.如果真 (全工作中 = 假)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
i = i + 1
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/activity/peacematch/exchange”, 1, body, COOK, , heardes))
|
||
' str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/activity/peacematch/exchange”, 1, body, COOK, , heardes))
|
||
' '调试输出 (str)
|
||
' '状态条1.置文本 (0, “【” + 到文本 (i) + “】-> ” + str)
|
||
窗口_置状态信息 (参_索引, 1, “【” + 到文本 (i) + “】-> ” + str)
|
||
.如果真 (寻找文本 (str, “无效”, , 假) ≠ -1 或 寻找文本 (str, “点击太快”, , 假) ≠ -1 或 str = “”)
|
||
csrf_token = 超级列表框1.取标题 (参_索引, 6)
|
||
' csrf_token = Getcsrf_token222 (局_Cookie)
|
||
.如果真 (csrf_token ≠ “”)
|
||
COOK = 选择 (ctnEX ≠ “”, 返回Cookie + “; acf_ccn=” + ctnEX + “; cvl_csrf_token=” + csrf_token, 返回Cookie + “; cvl_csrf_token=” + csrf_token)
|
||
|
||
randstr = 文本_取随机字符 (16, 位或 (1, 2, 4))
|
||
heardes = 子文本替换 (#常量12, “[randstr]”, “qQizD2s4FNFzSTsG”, , , 真)
|
||
' ’下次更新这里 替换#常量11得提交内容 里面得房间ID
|
||
body = 文本_替换 (#常量14, , , , “[randstr]”, “qQizD2s4FNFzSTsG”, “[manualID]”, “1W0yGkOdDbAXb”, “[商品ID]”, 返回商品ID, “[token]”, acf_ccn)
|
||
|
||
.如果真结束
|
||
|
||
.如果真结束
|
||
|
||
.如果真 (寻找文本 (str, “error” + #引号 + “:0”, , 假) ≠ -1)
|
||
跳出循环 ()
|
||
.如果真结束
|
||
|
||
系统_处理事件 ()
|
||
.判断循环尾 ()
|
||
|
||
.如果 (寻找文本 (str, “error” + #引号 + “:0”, , 假) ≠ -1)
|
||
窗口_置状态信息 (参_索引, 1, “兑换成功”)
|
||
.计次循环首 (2, )
|
||
str2 = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/live/memberthird/tencent/bindInfo?actAlias=20260226ZMGDG”, , , 返回Cookie, , #常量3))
|
||
.如果真 (str2 ≠ “”)
|
||
跳出循环 ()
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
.如果真 (str2 ≠ “”)
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str2)
|
||
roleName = yyjson.取文本 (“data/gameRole/roleName”)
|
||
全线程临界.进入 ()
|
||
优化价格 = 取文本左边 (返回商品价格, 取文本长度 (返回商品价格) - 1)
|
||
保存日志2 (时间_到文本 (取现行时间 (), 1) + “ ” + 返回用户名 + “----” + roleName + “----” + 返回商品名称 + “----” + 优化价格)
|
||
局_bin = 文转图片P (返回商品名称 + “ ” + #换行符 + 时间_格式化 (取现行时间 (), “yyyy年MM月dd日”, “ hh:mm:ss”, 真) + #换行符 + “兑换账号:” + roleName + “(” + 返回用户名 + “)”)
|
||
写到文件_ (全PIC + “\” + roleName + “-” + 返回商品名称 + “.png”, 局_bin)
|
||
全线程临界.退出 ()
|
||
.如果真结束
|
||
|
||
|
||
.否则
|
||
窗口_置状态信息 (参_索引, 1, str)
|
||
|
||
.如果结束
|
||
|
||
|
||
.子程序 Getcsrf_token222, 文本型
|
||
.参数 参_Cookie, 文本型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_CCK, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 str, 文本型
|
||
.局部变量 返回CK, 文本型
|
||
.局部变量 csrf_token, 文本型
|
||
|
||
str = 到文本 (网页_访问_对象 (“https://www.douyu.com/japi/carnival/nc/common/generateCsrf”, 1, , 参_Cookie, 返回CK, #常量10))
|
||
csrf_token = 文本_取出中间文本 (返回CK, “cvl_csrf_token=”, “;”)
|
||
' '调试输出 (“csrf_token---”, csrf_token)
|
||
返回 (csrf_token)
|
||
|
||
.子程序 _一键查询换绑时间_被选择
|
||
.局部变量 p, 整数型
|
||
|
||
.计次循环首 (超级列表框1.取表项数 (), p)
|
||
系统_处理事件 ()
|
||
.如果真 (超级列表框1.取当前状态图片 (p - 1) = 1)
|
||
启动线程 (&子程序查换绑时间, p - 1, )
|
||
程序_延时 (10)
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
|
||
.子程序 子程序查换绑时间
|
||
.参数 索引E, 整数型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_ctn, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_uid, 文本型
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 yyjson, json对象
|
||
.局部变量 changeRoleWaitTime, 整数型
|
||
.局部变量 timetxt, 文本型
|
||
.局部变量 局_txt, 文本型
|
||
|
||
全临界.进入 ()
|
||
局_文本 = 超级列表框1.取标题 (索引E, 1)
|
||
局_ctn = 超级列表框1.取标题 (索引E, 5)
|
||
全临界.退出 ()
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
状态条1.置文本 (0, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
局_uid = 局_F [2]
|
||
局_Cookie = 局_F [3]
|
||
' 'actAlias=20220616CJSZU
|
||
' actAlias=20260120QYOOB
|
||
' actAlias=20250213NQCYX
|
||
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/live/memberthird/tencent/bindInfo?actAlias=20260226ZMGDG”, , , 局_Cookie, , #常量3))
|
||
调试输出 (str)
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str)
|
||
|
||
changeRoleWaitTime = yyjson.取整数 (“data/changeRoleWaitTime”)
|
||
.如果真 (到文本 (changeRoleWaitTime) = “”)
|
||
窗口_置状态信息 (索引E, 2, “查询失败”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
|
||
timetxt = 时间_秒到时分秒格式 (changeRoleWaitTime)
|
||
窗口_置状态信息 (索引E, 2, “释放时间:” + timetxt)
|
||
|
||
|
||
|
||
.子程序 _一键查询限兑商品_被选择
|
||
.局部变量 p, 整数型
|
||
|
||
.计次循环首 (超级列表框1.取表项数 (), p)
|
||
系统_处理事件 ()
|
||
.如果真 (超级列表框1.取当前状态图片 (p - 1) = 1)
|
||
启动线程 (&子程序查限兑商品, p - 1, )
|
||
程序_延时 (10)
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
|
||
.子程序 子程序查限兑商品
|
||
.参数 索引E, 整数型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_ctn, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_uid, 文本型
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 yyjson, json对象
|
||
.局部变量 changeRoleWaitTime, 整数型
|
||
.局部变量 timetxt, 文本型
|
||
.局部变量 zy数, 整数型
|
||
.局部变量 statustxt, 文本型
|
||
.局部变量 P, 整数型
|
||
.局部变量 F_F, 文本型, , "0"
|
||
.局部变量 commodityName, 文本型
|
||
.局部变量 排序E, 文本型
|
||
|
||
全临界.进入 ()
|
||
局_文本 = 超级列表框1.取标题 (索引E, 1)
|
||
局_ctn = 超级列表框1.取标题 (索引E, 5)
|
||
全临界.退出 ()
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
状态条1.置文本 (0, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
局_uid = 局_F [2]
|
||
局_Cookie = 局_F [3]
|
||
|
||
' data.list[21].status = 0
|
||
' manualID=G4KA4Qnz4LDp7
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/activity/peace/storehome?manualID=G4KA4Qnz4LDp7&rid=9263298”, , , 局_Cookie, , #常量3))
|
||
' 调试输出 (str)
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str)
|
||
zy数 = yyjson.取成员数 (“data/list”)
|
||
.计次循环首 (zy数, P)
|
||
系统_处理事件 ()
|
||
statustxt = yyjson.取文本 (“data/list/” + 到文本 (P - 1) + “/status”)
|
||
.如果真 (statustxt = “1”)
|
||
commodityName = yyjson.取文本 (“data/list/” + 到文本 (P - 1) + “/commodityName”)
|
||
加入成员 (F_F, commodityName)
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
.如果真 (取数组成员数 (F_F) < 1)
|
||
窗口_置状态信息 (索引E, 2, “无限制商品”)
|
||
' 状态条1.置文本 (0, “限兑-> 无限制商品”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
排序E = 数组_合并 (F_F, “,”)
|
||
窗口_置状态信息 (索引E, 2, “限兑*” + 到文本 (取数组成员数 (F_F)) + “:” + 排序E)
|
||
' 状态条1.置文本 (0, “限兑*” + 到文本 (取数组成员数 (F_F)) + “:” + 排序E)
|
||
返回 ()
|
||
|
||
.子程序 _一键查询鱼刺余额_被选择
|
||
.局部变量 p, 整数型
|
||
|
||
.计次循环首 (超级列表框1.取表项数 (), p)
|
||
.如果真 (超级列表框1.取当前状态图片 (p - 1) = 1)
|
||
启动线程 (&子程序查询鱼刺, p - 1, )
|
||
程序_延时 (100)
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
|
||
.子程序 子程序查询鱼刺
|
||
.参数 索引E
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_ctn, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_uid, 文本型
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 yyjson, json对象
|
||
.局部变量 局_余额, 文本型
|
||
|
||
全临界.进入 ()
|
||
局_文本 = 超级列表框1.取标题 (索引E, 1)
|
||
局_ctn = 超级列表框1.取标题 (索引E, 5)
|
||
全临界.退出 ()
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
状态条1.置文本 (0, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
局_uid = 局_F [2]
|
||
局_Cookie = 局_F [3]
|
||
窗口_置状态信息 (索引E, 1, “查询鱼刺余额...”)
|
||
str = 到文本 (网页_访问_对象 (“https://cz.douyu.com/item/gold/account”, , , 局_Cookie, , #常量2))
|
||
' 调试输出 (str)
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str)
|
||
局_余额 = yyjson.取文本 (“data/gold”)
|
||
窗口_置状态信息 (索引E, 1, “鱼刺余额:” + 到文本 (局_余额))
|
||
|
||
|
||
.子程序 _时钟1_周期事件
|
||
.局部变量 设置定时关闭, 文本型
|
||
.局部变量 动态时间, 文本型
|
||
.局部变量 设置定时开始, 文本型
|
||
|
||
设置定时开始 = 删首尾空 (编辑框_时.内容) + “:” + 删首尾空 (编辑框_分.内容) + “:” + 删首尾空 (编辑框_秒.内容) + “:”
|
||
动态时间 = 时间_格式化 (取现行时间 (), , “hh:mm:ss”, 真)
|
||
状态条1.置文本 (1, “[定时脚本]动态时间:” + 动态时间)
|
||
.如果真 (动态时间 = 设置定时开始)
|
||
_按钮_启动_被单击 ()
|
||
.如果真结束
|
||
|
||
|
||
.子程序 _选择框_定时抢购_被单击
|
||
|
||
.如果 (选择框_定时抢购.选中 = 真)
|
||
_全选_被选择 ()
|
||
时钟1.时钟周期 = 1000
|
||
状态条1.置文本 (1, “已开启定时抢购√”)
|
||
|
||
.否则
|
||
时钟1.时钟周期 = 0
|
||
状态条1.置文本 (1, “已关闭定时抢购×”)
|
||
工作中 = 假
|
||
工作线程池EX.销毁 ()
|
||
.如果结束
|
||
|
||
|
||
.子程序 _开通电竞手册30_被选择
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 ctnEX, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_Cookie, 文本型
|
||
|
||
局_文本 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
|
||
ctnEX = 超级列表框1.取标题 (超级列表框1.现行选中项, 5)
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
局_Cookie = 局_F [3]
|
||
电竞手册二维码30 (ctnEX, 局_Cookie)
|
||
|
||
|
||
.子程序 _一键查询兑换记录_被选择
|
||
.局部变量 p, 整数型
|
||
|
||
.计次循环首 (超级列表框1.取表项数 (), p)
|
||
.如果真 (超级列表框1.取当前状态图片 (p - 1) = 1)
|
||
启动线程 (&子程序查询兑换记录, p - 1, )
|
||
程序_延时 (100)
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
|
||
|
||
.子程序 子程序查询兑换记录
|
||
.参数 索引E
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_ctn, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_uid, 文本型
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 yyjson, json对象
|
||
.局部变量 局_余额, 文本型
|
||
.局部变量 zy数, 整数型
|
||
.局部变量 P, 整数型
|
||
.局部变量 F_F, 文本型, , "0"
|
||
.局部变量 commodityName, 文本型
|
||
.局部变量 排序E, 文本型
|
||
|
||
全临界.进入 ()
|
||
局_文本 = 超级列表框1.取标题 (索引E, 1)
|
||
局_ctn = 超级列表框1.取标题 (索引E, 5)
|
||
全临界.退出 ()
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
状态条1.置文本 (0, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
局_uid = 局_F [2]
|
||
局_Cookie = 局_F [3]
|
||
窗口_置状态信息 (索引E, 1, “查询兑换记录...”)
|
||
' manualID=G4KA4Qnz4LDp7
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wgapi/ordnc/activity/peacematch/exchangeList?manualID=1W0yGkOdDbAXb&limit=15&offset=0”, , , 局_Cookie, , #常量3))
|
||
调试输出 (str)
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str)
|
||
zy数 = yyjson.取成员数 (“data/list”)
|
||
.计次循环首 (zy数, P)
|
||
commodityName = yyjson.取文本 (“data/list/” + 到文本 (P - 1) + “/commodityName”)
|
||
加入成员 (F_F, commodityName)
|
||
.计次循环尾 ()
|
||
.如果真 (取数组成员数 (F_F) < 1)
|
||
窗口_置状态信息 (索引E, 2, “无兑换记录”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
排序E = 数组_合并 (F_F, “,”)
|
||
窗口_置状态信息 (索引E, 2, “记录*” + 到文本 (取数组成员数 (F_F)) + “:” + 排序E)
|
||
|
||
|
||
|
||
.子程序 _充值鱼刺Api_被选择
|
||
.局部变量 返回积分, 文本型
|
||
.局部变量 局_充值账号, 文本型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 返回充值前余额, 文本型
|
||
.局部变量 返回充值后余额, 文本型
|
||
.局部变量 冲之前余额, 文本型
|
||
.局部变量 充值后余额, 文本型
|
||
|
||
局_文本 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
|
||
局_充值账号 = 文本_取左边 (局_文本, “----”)
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “Cookie格式错误”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
局_Cookie = 局_F [3]
|
||
|
||
' 返回积分 = 查积分记录 ()
|
||
.' 如果真 (返回积分 = “NULL”)
|
||
' 窗口_置状态信息 (超级列表框1.现行选中项, 2, “未开通精英手册”)
|
||
' 返回 ()
|
||
.如果真结束
|
||
|
||
.' 如果真 (到整数 (返回积分) < 10)
|
||
' 窗口_置状态信息 (超级列表框1.现行选中项, 2, “未开通精英手册”)
|
||
.' 如果真 (信息框 (“积分:” + 返回积分 + “,是否充值?”, #信息图标 + #确认钮 + #取消钮, , ) = #取消钮)
|
||
' 返回 ()
|
||
.如果真结束
|
||
|
||
.如果真结束
|
||
|
||
|
||
|
||
返回充值前余额 = 查询鱼刺余额 (局_Cookie)
|
||
冲之前余额 = 到文本 (到整数 (返回充值前余额) ÷ 100)
|
||
.如果真 (冲之前余额 = “”)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “查询余额失败”)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
.如果真 (信息框 (“充值数量:” + 编辑框_充值金额.内容 + “,是否充值?”, #信息图标 + #确认钮 + #取消钮, , ) = #取消钮)
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “充值前鱼刺:” + 冲之前余额 + “,正在充值...”)
|
||
程序_延时 (1000)
|
||
.如果真 (api充值 (超级列表框1.现行选中项, 局_充值账号) = 真)
|
||
.计次循环首 (10, )
|
||
返回充值后余额 = 查询鱼刺余额 (局_Cookie)
|
||
充值后余额 = 到文本 (到整数 (返回充值后余额) ÷ 100)
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “充值前鱼刺:” + 冲之前余额 + “,等待充值后余额:” + 充值后余额)
|
||
.如果真 (充值后余额 ≠ 冲之前余额)
|
||
跳出循环 ()
|
||
.如果真结束
|
||
程序_延时 (1000)
|
||
.计次循环尾 ()
|
||
窗口_置状态信息 (超级列表框1.现行选中项, 2, “充值成功后鱼刺:” + 充值后余额)
|
||
程序_延时 (1000)
|
||
直接送礼物 (局_Cookie, 超级列表框1.现行选中项)
|
||
程序_延时 (2000)
|
||
.计次循环首 (3, )
|
||
查积分记录 ()
|
||
.计次循环尾 ()
|
||
.如果真结束
|
||
|
||
|
||
.子程序 api充值, 逻辑型
|
||
.参数 参_索引, 整数型
|
||
.参数 参_充值账号, 文本型
|
||
.局部变量 timestamp, 文本型
|
||
.局部变量 random, 文本型
|
||
.局部变量 订单时间ordersn, 文本型
|
||
.局部变量 secretKey, 文本型
|
||
.局部变量 sign, 文本型
|
||
.局部变量 body, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 yyjson, json对象
|
||
.局部变量 ordersn, 文本型
|
||
.局部变量 bool, 逻辑型
|
||
.局部变量 i, 整数型
|
||
.局部变量 局_充值数量, 文本型
|
||
.局部变量 返回err0, 文本型
|
||
.局部变量 dealer_id, 文本型
|
||
|
||
dealer_id = 删全部空 (编辑框_经销商ID.内容)
|
||
secretKey = 删全部空 (编辑框_API密钥.内容)
|
||
.如果真 (dealer_id = “”)
|
||
窗口_置状态信息 (参_索引, 2, “请设置经销商ID~!”)
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
.如果真 (secretKey = “”)
|
||
窗口_置状态信息 (参_索引, 2, “请设置API密钥~!”)
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
局_充值数量 = 删全部空 (编辑框_充值金额.内容)
|
||
.如果真 (局_充值数量 = “”)
|
||
窗口_置状态信息 (参_索引, 2, “请设置充值数量~!”)
|
||
返回 (假)
|
||
.如果真结束
|
||
|
||
timestamp = 时间_取现行时间戳 ()
|
||
random = 文本_取随机字符 (13, 位或 (1, 2))
|
||
订单时间ordersn = timestamp
|
||
sign = 校验_取md5_文本 (secretKey + “dealer_id=” + dealer_id + “&game_id=37¬ify_url=https://www.baidu.com&number=” + 局_充值数量 + “&ordersn=” + 订单时间ordersn + “&random=” + random + “&rid=” + 参_充值账号 + “&rules_id=317&server=默认区服×tamp=” + timestamp + secretKey, 真, 真)
|
||
|
||
body = “dealer_id=” + dealer_id + “&game_id=37¬ify_url=https://www.baidu.com&number=” + 局_充值数量 + “&ordersn=” + 订单时间ordersn + “&random=” + random + “&rid=” + 参_充值账号 + “&rules_id=317&server=默认区服×tamp=” + timestamp + “&signature=” + sign
|
||
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“http://api.hapu.cc/order/createOrder”, 1, body, , , “User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36” + #换行符 + “Content-Type: application/x-www-form-urlencoded”))
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str)
|
||
ordersn = yyjson.取文本 (“ordersn”)
|
||
.如果真 (ordersn ≠ “”)
|
||
窗口_置状态信息 (参_索引, 2, “api下单成功”)
|
||
返回 (真)
|
||
|
||
.如果真结束
|
||
|
||
窗口_置状态信息 (参_索引, 2, “api下单失败:” + 编码_usc2到ansi (str))
|
||
返回 (假)
|
||
|
||
' {"status":200,"msg":"成功","ordersn":"1746864258996","fy_order_id":"20250510160420546837090","money":"0.980"}
|
||
|
||
.子程序 查询充值结果, 逻辑型, , {"status":200,"msg":"成功","ordersn":"1746864258996","fy_order_id":"20250510160420546837090","money":"0.980"}
|
||
.参数 参_ordersn, 文本型
|
||
.参数 返回err0, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 body, 文本型
|
||
.局部变量 random, 文本型
|
||
.局部变量 timestamp, 文本型
|
||
.局部变量 secretKey, 文本型
|
||
.局部变量 sign, 文本型
|
||
.局部变量 yyjson, json对象
|
||
.局部变量 msg, 文本型
|
||
|
||
timestamp = 时间_取现行时间戳 ()
|
||
random = 文本_取随机字符 (13, 位或 (1, 2))
|
||
secretKey = “403710daec035bbd94e30cefb337b6ccded16dbf”
|
||
sign = 校验_取md5_文本 (secretKey + “dealer_id=129873564&ordersn=” + 参_ordersn + “&random=” + random + “×tamp=” + timestamp + secretKey, 真, 真)
|
||
|
||
body = “dealer_id=129873564&ordersn=” + 参_ordersn + “&random=” + random + “×tamp=” + timestamp + “&signature=” + sign
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“http://api.hapu.cc/order/getorder”, 1, body, , , “User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36” + #换行符 + “Content-Type: application/x-www-form-urlencoded”))
|
||
' 调试输出 (str)
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str)
|
||
msg = yyjson.取文本 (“msg”)
|
||
返回err0 = msg
|
||
.如果真 (msg = “成功”)
|
||
返回 (真)
|
||
.如果真结束
|
||
|
||
返回 (假)
|
||
|
||
.子程序 查询鱼刺余额, 文本型, , {"status":200,"msg":"成功","ordersn":"1746864258996","fy_order_id":"20250510160420546837090","money":"0.980"}
|
||
.参数 参_Cookie, 文本型
|
||
.局部变量 str, 文本型
|
||
.局部变量 yyjson, json对象
|
||
.局部变量 count, 文本型
|
||
|
||
.计次循环首 (3, )
|
||
str = 编码_Utf8到Ansi (网页_访问_对象 (“https://www.douyu.com/wjapi/nc/exchange/fim?appCode=YJTX”, , , 参_Cookie, , “Host: www.douyu.com” + #换行符 + “Connection: keep-alive” + #换行符 + “sec-ch-ua-platform: ” + #引号 + “Windows” + #引号 + “” + #换行符 + “User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36” + #换行符 + “Accept: application/json, text/plain, */*” + #换行符 + “Referer: https://www.douyu.com/member/walletcenter”))
|
||
.如果真 (str ≠ “”)
|
||
跳出循环 ()
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
调试输出 (str)
|
||
yyjson.清空 ()
|
||
yyjson.解析 (str)
|
||
count = yyjson.取文本 (“data/count”)
|
||
返回 (count)
|
||
|
||
|
||
.子程序 _一键获取兑换csrftoken_被选择
|
||
.局部变量 p, 整数型
|
||
|
||
.计次循环首 (超级列表框1.取表项数 (), p)
|
||
系统_处理事件 ()
|
||
.如果真 (超级列表框1.取当前状态图片 (p - 1) = 1)
|
||
启动线程 (&Getcsrf_token3333, p - 1, )
|
||
程序_延时 (10)
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
|
||
|
||
.子程序 Getcsrf_token3333
|
||
.参数 参_索引, 整数型
|
||
.局部变量 局_文本, 文本型
|
||
.局部变量 局_Cookie, 文本型
|
||
.局部变量 局_F, 文本型, , "0"
|
||
.局部变量 str, 文本型
|
||
.局部变量 返回CK, 文本型
|
||
.局部变量 csrf_token, 文本型
|
||
|
||
' 超级列表框1.置状态图片 (参_索引, 0)
|
||
局_文本 = 超级列表框1.取标题 (参_索引, 1)
|
||
局_F = 分割文本 (局_文本, “----”, )
|
||
.如果真 (取数组成员数 (局_F) < 3)
|
||
全Fast_list.进入写锁 ()
|
||
超级列表框1.置标题 (参_索引, 4, “Cookie无效”)
|
||
全Fast_list.退出写锁 ()
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
|
||
局_Cookie = 局_F [3]
|
||
str = 到文本 (网页_访问_对象 (“https://www.douyu.com/japi/carnival/nc/common/generateCsrf”, 1, , 局_Cookie, 返回CK, #常量10))
|
||
|
||
csrf_token = 文本_取出中间文本 (返回CK, “cvl_csrf_token=”, “;”)
|
||
状态条1.置文本 (0, “#” + 到文本 (参_索引) + “=>” + csrf_token)
|
||
' 调试输出 (csrf_token)
|
||
.如果真 (csrf_token ≠ “”)
|
||
全Fast_list.进入写锁 ()
|
||
超级列表框1.置标题 (参_索引, 4, “获取csrf_token成功”)
|
||
超级列表框1.置标题 (参_索引, 6, csrf_token)
|
||
全Fast_list.退出写锁 ()
|
||
返回 ()
|
||
.如果真结束
|
||
|
||
全Fast_list.进入写锁 ()
|
||
超级列表框1.置标题 (参_索引, 4, str)
|
||
全Fast_list.退出写锁 ()
|
||
|
||
|
||
.子程序 __________________________________
|
||
|
||
|
||
|
||
.子程序 _取单条Cookie, 文本型, 公开, 从左往右获取
|
||
.参数 Cookie, 文本型
|
||
.参数 名称, 文本型
|
||
.参数 不附带名称, 逻辑型, 可空
|
||
.局部变量 t, 文本型
|
||
|
||
Cookie = 删首尾空 (Cookie)
|
||
.如果真 (取文本右边 (Cookie, 1) ≠ “;”)
|
||
Cookie = Cookie + “; ”
|
||
.如果真结束
|
||
t = 单条Cookie (Cookie, 名称)
|
||
.判断开始 (不附带名称 或 t = “”)
|
||
返回 (t)
|
||
.默认
|
||
返回 (名称 + “=” + t)
|
||
.判断结束
|
||
|
||
|
||
.子程序 单条Cookie, 文本型
|
||
.参数 原Cookies, 文本型
|
||
.参数 单条Cookie名称, 文本型
|
||
.局部变量 Cookies, 文本型, , "0"
|
||
.局部变量 i, 整数型
|
||
.局部变量 Name, 文本型
|
||
|
||
Cookies = 分割文本 (原Cookies, “;”, )
|
||
.计次循环首 (取数组成员数 (Cookies), i)
|
||
Name = 文本_取左边 (删首尾空 (Cookies [i]), “=”, , )
|
||
.如果真 (到小写 (Name) = 到小写 (单条Cookie名称))
|
||
.如果真 (寻找文本 (删首尾空 (Cookies [i]), “:”, , 假) ≠ -1)
|
||
返回 (文本_取出中间文本 (删首尾空 (Cookies [i]), “=”, “:”, , ))
|
||
.如果真结束
|
||
返回 (文本_取右边 (删首尾空 (Cookies [i]), “=”, , ))
|
||
|
||
.如果真结束
|
||
|
||
.计次循环尾 ()
|
||
返回 (“”)
|
||
|
||
|