抖音无水印下载工具,抖音/快手/头条/哔哩/西瓜,易语言框架分享
<p>下载地址:https://www.pan38.com/share.php?code=bVqJK 提取码:8888</p><p>这个工具基本可以解析全平台的短视频,一般我们保存短视频都会发现视频左上角或者右上角会显示平台的水印内容,我们想要二次剪辑感觉很麻烦,用这个工具,不管是直播间还是短视频都可以统统无水印下载。</p>
<p>源码部分:【仅供学习参考】</p>
<p>.版本 2</p>
<p>.支持库 iext</p>
<p>.支持库 iext2</p>
<p>.程序集 窗口程序集_启动窗口</p>
<p>.程序集变量 DVD, 播放器</p>
<p>.程序集变量 待解析网址, 文本型, , , 分享时网址</p>
<p>.程序集变量 所属平台, 文本型, , , 抖/快/B...</p>
<p>.程序集变量 类型, 整数型, , , 1.jpg,2.mp4,3.mp3</p>
<p>.程序集变量 网址, 文本型, , , 下载直链</p>
<p>.程序集变量 重试次数, 整数型, , , 接口1连接失败重试</p>
<p>.程序集变量 现所在行, 整数型, , , 解析历史</p>
<p>.子程序 __启动窗口_创建完毕</p>
<p>DVD.创建 (_启动窗口.取窗口句柄 (), 18, 18, 268, 476, )</p>
<p>DVD.界面模式 (“none”)</p>
<p>多线程模块_启动线程 (&预加载, , , , )</p>
<p>返回 ()</p>
<p>.子程序 预加载, , , 配置项等等</p>
<p>.局部变量 i, 整数型</p>
<p>.局部变量 json, 类_json, 静态</p>
<p>.局部变量 啥接口, 文本型</p>
<p>.如果真 (目录_是否存在 (取运行目录 () + “\已解析视频\”) = 假)</p>
<p>创建目录 (取运行目录 () + “\已解析视频\”)</p>
<p>写到文件 (取运行目录 () + “\已解析视频\配置.ini”, #配置本)</p>
<p>.如果真结束</p>
<p>.如果真 (文件是否存在 (取运行目录 () + “\已解析视频\配置.ini”) = 假)</p>
<p>写到文件 (取运行目录 () + “\已解析视频\配置.ini”, #配置本)</p>
<p>.如果真结束</p>
<p>啥接口 = 读配置项 (取运行目录 () + “\已解析视频\配置.ini”, “视频解析”, “默认接口”, )</p>
<p>编辑框1_播放次.内容 = 读配置项 (取运行目录 () + “\已解析视频\配置.ini”, “视频解析”, “重复播放”, )</p>
<p>.如果真 (啥接口 = “1”)</p>
<p>单选框_接口1.选中 = 真</p>
<p>.如果真结束</p>
<p>.如果真 (啥接口 = “2”)</p>
<p>单选框_接口2.选中 = 真</p>
<p>.如果真结束</p>
<p>.如果真 (啥接口 = “3”)</p>
<p>单选框_接口3.选中 = 真</p>
<p>.如果真结束</p>
<p>.如果真 (啥接口 = “4”)</p>
<p>单选框_接口4.选中 = 真</p>
<p>.如果真结束</p>
<p>.如果 (读配置项 (取运行目录 () + “\已解析视频\配置.ini”, “视频解析”, “自动下载”, ) = “真”)</p>
<p>选择框_下载.选中 = 真</p>
<p>.否则</p>
<p>选择框_下载.选中 = 假</p>
<p>.如果结束</p>
<p>.如果 (读配置项 (取运行目录 () + “\已解析视频\配置.ini”, “视频解析”, “自动播放”, ) = “真”)</p>
<p>选择框_播放.选中 = 真</p>
<p>.否则</p>
<p>选择框_播放.选中 = 假</p>
<p>.如果结束</p>
<p>DVD.播放次数 (到整数 (读配置项 (取运行目录 () + “\已解析视频\配置.ini”, “视频解析”, “重复播放”, )))</p>
<p>.计次循环首 (25, i) ' 读取最近解析历史数据</p>
<p>json.解析 (读配置项 (取运行目录 () + “\已解析视频\配置.ini”, “解析历史”, “数据” + 到文本 (i), ), , )</p>
<p>.如果真 (json.取通用属性 (“视频地址”, ) ≠ “”)</p>
<p>超级列表框1.插入表项 (0, , , , , )</p>
<p>超级列表框1.置标题 (0, 0, 到文本 (超级列表框1.取表项数 ()))</p>
<p>超级列表框1.置标题 (0, 1, json.取通用属性 (“['标题']”, ))</p>
<p>超级列表框1.置标题 (0, 2, “旧数据”)</p>
<p>超级列表框1.置标题 (0, 3, json.取通用属性 (“['视频地址']”, ))</p>
<p>超级列表框1.置标题 (0, 4, json.取通用属性 (“['配音地址']”, ))</p>
<p>超级列表框1.置标题 (0, 5, json.取通用属性 (“['封面地址']”, ))</p>
<p>超级列表框1.置标题 (0, 6, json.取通用属性 (“['直链地址']”, ))</p>
<p>.如果真结束</p>
<p>处理事件 ()</p>
<p>.计次循环尾 ()</p>
<p>现所在行 = 到整数 (读配置项 (取运行目录 () + “\已解析视频\配置.ini”, “解析历史”, “现所在行”, ))</p>
<p>.如果真 (现所在行 ≥ 25)</p>
<p>现所在行 = 1</p>
<p>写配置项 (取运行目录 () + “\已解析视频\配置.ini”, “解析历史”, “现所在行”, 到文本 (现所在行))</p>
<p>.如果真结束</p>
<p>连接服务器 ()</p>
<p>返回 ()</p>
<p>.子程序 连接服务器, , , 接口1专用</p>
<p>.局部变量 局_计时开始, 日期时间型</p>
<p>.局部变量 连接状态, 逻辑型</p>
<p>.如果真 (单选框_接口1.选中)</p>
<p>局_计时开始 = 取现行时间 ()</p>
<p>.如果真 (客户1.连接 (“a.cnxw.site”, 19730) = 假)</p>
<p>标签_提示.标题 = “接口1,连接失败,正在重试!”</p>
<p>连接状态 = 真</p>
<p>.如果真结束</p>
<p>.如果 (连接状态 = 假)</p>
<p>标题 = “视频解析 V3.0 公益版 - 在线中”</p>
<p>.否则</p>
<p>标签_提示.标题 = “服务器连接失败,10秒后自动尝试连接”</p>
<p>时钟2.时钟周期 = 10000</p>
<p>.如果结束</p>
<p>.如果真结束</p>
<p>返回 ()</p>
<p>.子程序 多平台解析, , , 接口1由 精易用户 qq261583065 提供</p>
<p>.局部变量 待发送数据, 字节集, 静态</p>
<p>待发送数据 = 到字节集 (所属平台 + “:” + 待解析网址)</p>
<p>客户1.发送数据 (待发送数据)</p>
<p>返回 ()</p>
<p>.子程序 _客户1_数据到达, , , 接口1由 精易用户 qq261583065 提供</p>
<p>.局部变量 js, 类_json, 静态</p>
<p>.局部变量 返回值, 文本型</p>
<p>按钮_添加.标题 = “解 析”</p>
<p>按钮_添加.禁止 = 假</p>
<p>返回值 = 文本_替换 (编码_Utf8到Ansi (客户1.取回数据 ()), , , , 字符 (10), “”, 字符 (13), “”, “ ”, “”, , , , )</p>
<p>js.解析 (返回值, , )</p>
<p>.如果 (js.取通用属性 (“code”, ) = “1”)</p>
<p>标签_详细.标题 = js.取数据文本 ()</p>
<p>编辑框_标题.内容 = js.取通用属性 (“标题”, )</p>
<p>编辑框_封面.内容 = js.取通用属性 (“封面”, )</p>
<p>编辑框_直链1.内容 = js.取通用属性 (“视频”, )</p>
<p>编辑框_直链2.内容 = js.取通用属性 (“音频”, )</p>
<p>标签_提示.标题 = “解 析 成 功”</p>
<p>时钟1.时钟周期 = 1000</p>
<p>js.清除 ()</p>
<p>.否则</p>
<p>.如果真 (js.取通用属性 (“code”, ) ≠ “5”)</p>
<p>标签_详细.标题 = js.取数据文本 ()</p>
<p>js.清除 ()</p>
<p>.如果真结束</p>
<p>.如果结束</p>
<p>返回 ()</p>
<p>.子程序 阿怪API解析, , , 接口2由 api.aagtool.top 提供</p>
<p>.局部变量 返回值, 文本型</p>
<p>.局部变量 json, 类_json, 静态</p>
<p>返回值 = 编码_Utf8到Ansi (网页_访问_对象 (“https://api.aagtool.top/api/” + 所属平台 + “?url=” + 待解析网址 + “/”, 0, , , , “User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203”, , , , , , , , , , , , , ))</p>
<p>json.解析 (返回值, , )</p>
<p>按钮_添加.禁止 = 假</p>
<p>按钮_添加.标题 = “解 析”</p>
<p>标签_详细.标题 = 返回值</p>
<p>.如果真 (json.取通用属性 (“code”, ) = “1”)</p>
<p>标签_提示.标题 = “请 稍 候 再 试”</p>
<p>标签_详细.标题 = 返回值</p>
<p>返回 ()</p>
<p>.如果真结束</p>
<p>编辑框_标题.内容 = json.取通用属性 (“title”, )</p>
<p>.如果真 (所属平台 = “dywsyjx”) ' 抖音</p>
<p>编辑框_直链1.内容 = json.取通用属性 (“url”, )</p>
<p>.如果真结束</p>
<p>.如果真 (所属平台 = “bzspjx”) ' B站</p>
<p>编辑框_直链1.内容 = json.取通用属性 (“url”, )</p>
<p>.如果真结束</p>
<p>.如果真 (所属平台 = “kswsyjx”) ' 快手</p>
<p>编辑框_直链1.内容 = json.取通用属性 (“url1”, )</p>
<p>编辑框_直链2.内容 = json.取通用属性 (“url2”, )</p>
<p>.如果真结束</p>
<p>.如果真 (所属平台 = “bzspjx” 或 所属平台 = “kswsyjx”)</p>
<p>编辑框_封面.内容 = json.取通用属性 (“videocoverurl”, )</p>
<p>.如果真结束</p>
<p>标签_提示.标题 = “解 析 成 功”</p>
<p>json.清除 ()</p>
<p>时钟1.时钟周期 = 1000</p>
<p>返回 ()</p>
<p>.子程序 抖音解析, , , 接口3由 api2.52jan.com 提供 真批量解析 仅限抖音</p>
<p>.局部变量 返回值, 文本型</p>
<p>.局部变量 json, 类_json</p>
<p>' 真批量解析,前提是得拿到视频的ID ,video_list= 这样能官方批量解析,本人在这只做单条解析用</p>
<p>按钮_添加.禁止 = 假</p>
<p>按钮_添加.标题 = “解 析”</p>
<p>返回值 = 编码_Utf8到Ansi (网页_访问_对象 (待解析网址, 0, , , , “User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203”, , , 真, , , , , , , , , , ))</p>
<p>返回值 = 文本_取出中间文本 (返回值, “video/”, “/?”, , )</p>
<p>返回值 = 编码_Utf8到Ansi (网页_访问_对象 (“http://api2.52jan.com/video_info”, 1, “video_list=[” + 返回值 + “]”, , , , , , , , , , , , , , , , ))</p>
<p>json.解析 (返回值, , )</p>
<p>.如果真 (json.取通用属性 (“['aweme_details'].video['play_addr']['url_list']”, ) ≠ “”)</p>
<p>编辑框_标题.内容 = json.取通用属性 (“['aweme_details'].desc”, )</p>
<p>编辑框_直链1.内容 = json.取通用属性 (“['aweme_details'].video['play_addr']['url_list'][” + 到文本 (json.成员数 (“['aweme_details'].video['play_addr']['url_list']”) - 1) + “]”, )</p>
<p>编辑框_直链2.内容 = json.取通用属性 (“['aweme_details'].video['play_addr']['url_list']”, )</p>
<p>标签_提示.标题 = “解 析 成 功”</p>
<p>时钟1.时钟周期 = 500</p>
<p>.如果真结束</p>
<p>标签_详细.标题 = json.取数据文本 ()</p>
<p>json.清除 ()</p>
<p>' 调试输出 (“视频作者:” + json.取通用属性 (“['aweme_details'].author.nickname”, ))</p>
<p>返回 ()</p>
<p>.子程序 多平台API, , , 接口4 由 精易用户 qq261583065 提供</p>
<p>.局部变量 局_提交协议头, 文本型</p>
<p>.局部变量 局_结果, 字节集</p>
<p>.局部变量 局_返回, 文本型</p>
<p>.局部变量 js, 类_json, 静态</p>
<p>.局部变量 json, 类_json, 静态</p>
<p>按钮_添加.禁止 = 假</p>
<p>按钮_添加.标题 = “解 析”</p>
<p>局_提交协议头 = “User-Agent: Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1”</p>
<p>局_结果 = 网页_访问 (“http://jx.cnxw.site/” + 待解析网址, 1, , , , 局_提交协议头, , 真, , , , , , )</p>
<p>局_返回 = 到文本 (编码_Utf8到Ansi (局_结果))</p>
<p>js.解析 (局_返回, , )</p>
<p>.如果 (js.取通用属性 (“code”, ) = “1”)</p>
<p>.如果真 (js.取通用属性 (“message”, ) = “成功”)</p>
<p>json.解析 (js.取通用属性 (“text”, ), , )</p>
<p>编辑框_标题.内容 = json.取通用属性 (“标题”, )</p>
<p>编辑框_封面.内容 = json.取通用属性 (“封面”, )</p>
<p>编辑框_直链1.内容 = json.取通用属性 (“视频”, )</p>
<p>编辑框_直链2.内容 = json.取通用属性 (“音频”, )</p>
<p>标签_提示.标题 = “解 析 成 功”</p>
<p>时钟1.时钟周期 = 1000</p>
<p>json.清除 ()</p>
<p>.如果真结束</p>
<p>标签_详细.标题 = js.取数据文本 ()</p>
<p>返回 ()</p>
<p>.否则</p>
<p>.如果真 (js.取通用属性 (“code”, ) ≠ “5”)</p>
<p>标签_详细.标题 = js.取数据文本 ()</p>
<p>js.清除 ()</p>
<p>.如果真结束</p>
<p>.如果结束</p>
<p>返回 ()</p>
<p>.子程序 _按钮_添加_被单击, , , 一键解析不同平台</p>
<p>按钮_添加.禁止 = 真</p>
<p>按钮_添加.标题 = “解 析 中”</p>
<p>标签_提示.标题 = “正在提交解析中...”</p>
<p>待解析网址 = 正则_匹配单个 (标签_待解释.标题, 1, )</p>
<p>.如果真 (待解析网址 = “1”)</p>
<p>按钮_添加.标题 = “解 析”</p>
<p>按钮_添加.禁止 = 假</p>
<p>返回 ()</p>
<p>.如果真结束</p>
<p>编辑框_标题.内容 = “”</p>
<p>编辑框_封面.内容 = “”</p>
<p>编辑框_直链1.内容 = “”</p>
<p>编辑框_直链2.内容 = “”</p>
<p>.如果真 (单选框_接口1.选中 = 真)</p>
<p>.如果真 (文本_寻找文本 (待解析网址, “douyin”, , ) ≠ -1) ' 抖音</p>
<p>所属平台 = “抖音”</p>
<p>.如果真结束</p>
<p>.如果真 (文本_寻找文本 (待解析网址, “kuaishou”, , ) ≠ -1) ' 快手</p>
<p>所属平台 = “快手”</p>
<p>.如果真结束</p>
<p>.如果真 (文本_寻找文本 (待解析网址, “bilibili”, , ) ≠ -1) ' B站</p>
<p>所属平台 = “哔哩哔哩”</p>
<p>.如果真结束</p>
<p>.如果真 (文本_寻找文本 (待解析网址, “ixigua”, , ) ≠ -1) ' 西瓜</p>
<p>所属平台 = “西瓜视频”</p>
<p>.如果真结束</p>
<p>.如果真 (文本_寻找文本 (待解析网址, “toutiao”, , ) ≠ -1) ' 头条</p>
<p>所属平台 = “今日头条”</p>
<p>.如果真结束</p>
<p>.如果真 (文本_寻找文本 (待解析网址, “weibo”, , ) ≠ -1) ' 微博</p>
<p>所属平台 = “微博”</p>
<p>.如果真结束</p>
<p>.如果真 (文本_寻找文本 (待解析网址, “haokan”, , ) ≠ -1) ' 好看</p>
<p>所属平台 = “好看视频”</p>
<p>.如果真结束</p>
<p>标签_详细.标题 = “正在提交解析: ” + 所属平台 + #换行符 + 待解析网址</p>
<p>多线程模块_启动线程 (&多平台解析, , , , )</p>
<p>返回 ()</p>
<p>.如果真结束</p>
<p>.如果真 (单选框_接口2.选中 = 真)</p>
<p>.如果真 (文本_寻找文本 (待解析网址, “douyin”, , ) ≠ -1) ' 抖音</p>
<p>所属平台 = “dywsyjx”</p>
<p>.如果真结束</p>
<p>.如果真 (文本_寻找文本 (待解析网址, “kuaishou”, , ) ≠ -1) ' 快手</p>
<p>所属平台 = “kswsyjx”</p>
<p>.如果真结束</p>
<p>.如果真 (文本_寻找文本 (待解析网址, “bilibili”, , ) ≠ -1) ' B站</p>
<p>所属平台 = “bzspjx”</p>
<p>.如果真结束</p>
<p>标签_详细.标题 = “正在提交解析: ” + 所属平台 + #换行符 + 待解析网址</p>
<p>多线程模块_启动线程 (&阿怪API解析, , , , )</p>
<p>返回 ()</p>
<p>.如果真结束</p>
<p>.如果真 (单选框_接口3.选中 = 真)</p>
<p>标签_详细.标题 = “正在提交解析: ” + #换行符 + 待解析网址</p>
<p>多线程模块_启动线程 (&抖音解析, , , , )</p>
<p>返回 ()</p>
<p>.如果真结束</p>
<p>.如果真 (单选框_接口4.选中 = 真)</p>
<p>标签_详细.标题 = “正在提交解析: ” + #换行符 + 待解析网址</p>
<p>多线程模块_启动线程 (&多平台API, , , , )</p>
<p>.如果真结束</p>
<p>返回 ()</p>
<p>.子程序 正则_匹配单个, 文本型, , 匹配 粘贴过来的 各平台网址 提取网址</p>
<p>.参数 源文本, 文本型, , 欲被匹配的文本</p>
<p>.参数 匹配索引, 整数型, , 表达式的索引,从1开始将代表为子匹配文本的索引。</p>
<p>.参数 子匹配索引, 整数型, 可空, 可空。 子表达式的索引,从1开始将代表为子匹配文本的索引</p>
<p>.局部变量 局_正则, 正则表达式类</p>
<p>.如果真 (局_正则.创建 (“+://[^\s]*”, 源文本, 假, 假, 真, 真) = 假)</p>
<p>信息框 (“正则创建失败,请检查正则表达式语句是否有误!”, #错误图标, , )</p>
<p>返回 (“1”)</p>
<p>.如果真结束</p>
<p>.如果真 (局_正则.取匹配数量 () = 0)</p>
<p>信息框 (“网址不正确,请粘贴分享时的网址!”, #错误图标, , )</p>
<p>返回 (“1”)</p>
<p>.如果真结束</p>
<p>.如果真 (匹配索引 < 1)</p>
<p>信息框 (“参数二 - 匹配索引必须大于0。”, #错误图标, , )</p>
<p>返回 (“1”)</p>
<p>.如果真结束</p>
<p>.判断开始 (匹配索引 > 0 且 子匹配索引 > 0) ' 如果 匹配索引 和 子匹配索引 都大于0,则匹配子匹配文本</p>
<p>返回 (局_正则.取子匹配文本 (匹配索引, 子匹配索引, ))</p>
<p>.判断 (匹配索引 > 0) ' 如果只有匹配索引大于0,则返回指定的匹配文本</p>
<p>返回 (局_正则.取匹配文本 (匹配索引, ))</p>
<p>.默认</p>
<p>.判断结束</p>
<p>返回 (“1”)</p>
<p>.子程序 _按钮_粘贴_被单击, , , 粘贴分享过来的网址</p>
<p>标签_待解释.标题 = 删首尾空 (取剪辑板文本 ())</p>
<p>标签_提示.标题 = “支持多平台”</p>
<p>返回 ()</p>
<p>.子程序 _超级列表框1_左键单击表项, , , 左键单击 把信息显示到左下方</p>
<p>.如果真 (超级列表框1.取标题 (超级列表框1.现行选中项, 1) ≠ “”)</p>
<p>编辑框_标题.内容 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)</p>
<p>编辑框_封面.内容 = 超级列表框1.取标题 (超级列表框1.现行选中项, 5)</p>
<p>编辑框_直链1.内容 = 超级列表框1.取标题 (超级列表框1.现行选中项, 3)</p>
<p>编辑框_直链2.内容 = 超级列表框1.取标题 (超级列表框1.现行选中项, 4)</p>
<p>标签_待解释.标题 = 超级列表框1.取标题 (超级列表框1.现行选中项, 6)</p>
<p>标签_提示.标题 = “左键双击 播放视频 / 右键单击 下载视频”</p>
<p>标签_详细.标题 = 编辑框_标题.内容 + #换行符 + 超级列表框1.取标题 (超级列表框1.现行选中项, 6) + #换行符 + “直链1:” + 编辑框_直链1.内容 + #换行符 + “直链2:” + #换行符 + 编辑框_直链2.内容 + #换行符 + “封面地址:” + #换行符 + 编辑框_封面.内容</p>
<p>.如果真结束</p>
<p>返回 ()</p>
<p>.子程序 _超级列表框1_右键单击表项, , , 右键单击 下载视频</p>
<p>.如果真 (超级列表框1.取标题 (超级列表框1.现行选中项, 3) ≠ “”)</p>
<p>标签_提示.标题 = “视频正在下载...”</p>
<p>类型 = 2</p>
<p>网址 = 超级列表框1.取标题 (超级列表框1.现行选中项, 3)</p>
<p>多线程模块_启动线程 (&文件下载, , , , )</p>
<p>.如果真结束</p>
<p>返回 ()</p>
<p>.子程序 _超级列表框1_被双击, 逻辑型, , 左键双击播放视频</p>
<p>.参数 横向位置, 整数型</p>
<p>.参数 纵向位置, 整数型</p>
<p>.参数 功能键状态, 整数型</p>
<p>.如果真 (编辑框_直链1.内容 ≠ “”)</p>
<p>处理事件 ()</p>
<p>DVD.地址 (编辑框_直链1.内容)</p>
<p>标签_提示.标题 = “正在播放...”</p>
<p>标签_详细.标题 = 编辑框_标题.内容 + #换行符 + 编辑框_直链1.内容</p>
<p>.如果真结束</p>
<p>返回 (真)</p>
<p>.子程序 文件下载, , , 视频下载</p>
<p>.局部变量 类别, 文本型</p>
<p>.局部变量 i, 整数型</p>
<p>处理事件 ()</p>
<p>.如果真 (目录_是否存在 (取运行目录 () + “\已解析视频”) = 假)</p>
<p>创建目录 (取运行目录 () + “\已解析视频”)</p>
<p>.如果真结束</p>
<p>.如果真 (类型 = 1)</p>
<p>类别 = “.jpg”</p>
<p>.如果真结束</p>
<p>.如果真 (类型 = 2)</p>
<p>类别 = “.mp4”</p>
<p>.如果真结束</p>
<p>.如果真 (类型 = 3)</p>
<p>类别 = “.mp3”</p>
<p>.如果真结束</p>
<p>网页_断点续传 (网址, 取运行目录 () + “\已解析视频\” + 到文本 (类型) + “_” + 到文本 (取现行时间 ()) + 类别, 到整数 (&下载回调))</p>
<p>超级列表框1.置标题 (超级列表框1.现行选中项, 2, “已下载”)</p>
<p>返回 ()</p>
<p>.子程序 下载回调, , , 下载进度</p>
<p>.参数 待下载文件总长度, 整数型</p>
<p>.参数 已下载总长度, 整数型</p>
<p>处理事件 ()</p>
<p>进度条_下载进度.位置 = 四舍五入 (指针_到长整数型_汇编 (已下载总长度) ÷ 指针_到长整数型_汇编 (待下载文件总长度) × 100, )</p>
<p>.如果真 (进度条_下载进度.位置 = 100)</p>
<p>标签_提示.标题 = “视频已下载完成”</p>
<p>标签_详细.标题 = “已下载到:” + 取运行目录 () + “\已解析视频”</p>
<p>.如果真结束</p>
<p>返回 ()</p>
<p>.子程序 _选择框_下载_被单击, , , 开关自动下载</p>
<p>.如果 (选择框_下载.选中 = 真)</p>
<p>写配置项 (取运行目录 () + “\已解析视频\配置.ini”, “视频解析”, “自动下载”, “真”)</p>
<p>标签_提示.标题 = “自动下载 已开启”</p>
<p>.否则</p>
<p>写配置项 (取运行目录 () + “\已解析视频\配置.ini”, “视频解析”, “自动下载”, “假”)</p>
<p>标签_提示.标题 = “自动下载 已关闭”</p>
<p>.如果结束</p>
<p>返回 ()</p>
<p>.子程序 _选择框_播放_被单击, , , 开关自动播放</p>
<p>.如果 (选择框_播放.选中 = 真)</p>
<p>写配置项 (取运行目录 () + “\已解析视频\配置.ini”, “视频解析”, “自动播放”, “真”)</p>
<p>标签_提示.标题 = “自动播放 已开启”</p>
<p>.否则</p>
<p>写配置项 (取运行目录 () + “\已解析视频\配置.ini”, “视频解析”, “自动播放”, “假”)</p>
<p>标签_提示.标题 = “自动播放 已关闭”</p>
<p>.如果结束</p>
<p>返回 ()</p>
<p>.子程序 _单选框_接口1_被单击, , , 选择接口1 服务</p>
<p>写配置项 (取运行目录 () + “\已解析视频\配置.ini”, “视频解析”, “默认接口”, “1”)</p>
<p>多线程模块_启动线程 (&连接服务器, , , , )</p>
<p>标签_提示.标题 = “接口1 采用客户Duan 连接方式”</p>
<p>返回 ()</p>
<p>.子程序 _单选框_接口2_被单击, , , 选译接口2 服务</p>
<p>写配置项 (取运行目录 () + “\已解析视频\配置.ini”, “视频解析”, “默认接口”, “2”)</p>
<p>标签_提示.标题 = “接口2 采用网页APi 连接方式”</p>
<p>客户1.断开连接 ()</p>
<p>返回 ()</p>
<p>.子程序 _单选框_接口3_被单击, , , 选译接口3 服务</p>
<p>写配置项 (取运行目录 () + “\已解析视频\配置.ini”, “视频解析”, “默认接口”, “3”)</p>
<p>标签_提示.标题 = “接口3 仅限 抖音解析”</p>
<p>客户1.断开连接 ()</p>
<p>返回 ()</p>
<p>.子程序 _单选框_接口4_被单击, , , 选译接口4 服务</p>
<p>写配置项 (取运行目录 () + “\已解析视频\配置.ini”, “视频解析”, “默认接口”, “4”)</p>
<p>标签_提示.标题 = “接口3、接口1同源 采用 网页API方式”</p>
<p>客户1.断开连接 ()</p>
<p>返回 ()</p>
<p>.子程序 _标签9_鼠标左键被放开, 逻辑型, , 打开已下载目录</p>
<p>.参数 横向位置, 整数型</p>
<p>.参数 纵向位置, 整数型</p>
<p>.参数 功能键状态, 整数型</p>
<p>.如果真 (目录_是否存在 (取运行目录 () + “\已解析视频”) = 假)</p>
<p>创建目录 (取运行目录 () + “\已解析视频”)</p>
<p>.如果真结束</p>
<p>标签_提示.标题 = “正在打开下载目录”</p>
<p>文件_执行 (取运行目录 () + “\已解析视频”, , 0)</p>
<p>返回 ()</p>
<p>.子程序 _图片框1_鼠标左键被放开, 逻辑型, , 二开请保留原作者信息</p>
<p>.参数 横向位置, 整数型</p>
<p>.参数 纵向位置, 整数型</p>
<p>.参数 功能键状态, 整数型</p>
<p>图片框1.可视 = 假</p>
<p>标签_提示.标题 = “开发不易,且行且珍惜”</p>
<p>标签_详细.标题 = #换行符 + “ 接口1 由 bbs.125.la/?278535 提供” + #换行符 + #换行符 + “ 接口2 阿怪 api.aagtool.top 提供” + #换行符 + #换行符 + “接口3 由 api2.52jan.com 提供” + #换行符 + #换行符 + “ 非常感谢他们的大无私精神!”</p>
<p>返回 ()</p>
<p>.子程序 _时钟1_周期事件, , , 自动下载和播放用</p>
<p>.局部变量 json, 类_json, 静态</p>
<p>超级列表框1.插入表项 (, , , , , )</p>
<p>超级列表框1.置标题 (0, 0, 到文本 (超级列表框1.取表项数 ()))</p>
<p>超级列表框1.置标题 (0, 1, 编辑框_标题.内容)</p>
<p>超级列表框1.置标题 (0, 2, “待下载”)</p>
<p>超级列表框1.置标题 (0, 3, 编辑框_直链1.内容)</p>
<p>超级列表框1.置标题 (0, 4, 编辑框_直链2.内容)</p>
<p>超级列表框1.置标题 (0, 5, 编辑框_封面.内容)</p>
<p>超级列表框1.置标题 (0, 6, 待解析网址) ' 原来链</p>
<p>.如果真 (超级列表框1.取表项数 () > 25)</p>
<p>超级列表框1.删除表项 (25)</p>
<p>.如果真结束</p>
<p>.如果真 (选择框_下载.选中)</p>
<p>类型 = 2</p>
<p>网址 = 编辑框_直链1.内容</p>
<p>多线程模块_启动线程 (&文件下载, , , , )</p>
<p>超级列表框1.置标题 (0, 2, “已下载”)</p>
<p>.如果真结束</p>
<p>.如果真 (选择框_播放.选中)</p>
<p>DVD.地址 (编辑框_直链1.内容)</p>
<p>.如果真结束</p>
<p>json.加成员 (编辑框_标题.内容, “标题”, , )</p>
<p>json.加成员 (编辑框_直链1.内容, “视频地址”, , )</p>
<p>json.加成员 (编辑框_直链2.内容, “配音地址”, , )</p>
<p>json.加成员 (编辑框_封面.内容, “封面地址”, , )</p>
<p>json.加成员 (待解析网址, “直链地址”, , )</p>
<p>写配置项 (取运行目录 () + “\已解析视频\配置.ini”, “解析历史”, “数据” + 到文本 (现所在行), json.取数据文本 ())</p>
<p>现所在行 = 现所在行 + 1</p>
<p>写配置项 (取运行目录 () + “\已解析视频\配置.ini”, “解析历史”, “现所在行”, 到文本 (现所在行))</p>
<p>json.清除 ()</p>
<p>时钟1.时钟周期 = 0</p>
<p>返回 ()</p>
<p>.子程序 _时钟2_周期事件, , , 自动重连服务器,接口1用</p>
<p>多线程模块_启动线程 (&连接服务器, , , , )</p>
<p>.如果真 (重试次数 = 3)</p>
<p>客户1.断开连接 ()</p>
<p>标签_提示.标题 = “已重试N多次无法连接服务器,请使用接口2”</p>
<p>重试次数 = 0</p>
<p>时钟2.时钟周期 = 0</p>
<p>返回 ()</p>
<p>.如果真结束</p>
<p>重试次数 = 重试次数 + 1</p>
<p>时钟2.时钟周期 = 0</p>
<p>.子程序 _标签下载1_鼠标左键被放开, 逻辑型, , 下载</p>
<p>.参数 横向位置, 整数型</p>
<p>.参数 纵向位置, 整数型</p>
<p>.参数 功能键状态, 整数型</p>
<p>类型 = 1</p>
<p>网址 = 编辑框_封面.内容</p>
<p>多线程模块_启动线程 (&文件下载, , , , )</p>
<p>.子程序 _标签下载2_鼠标左键被放开, 逻辑型, , 下载</p>
<p>.参数 横向位置, 整数型</p>
<p>.参数 纵向位置, 整数型</p>
<p>.参数 功能键状态, 整数型</p>
<p>类型 = 2</p>
<p>网址 = 编辑框_直链1.内容</p>
<p>多线程模块_启动线程 (&文件下载, , , , )</p>
<p>.子程序 _标签下载3_鼠标左键被放开, 逻辑型, , 下载</p>
<p>.参数 横向位置, 整数型</p>
<p>.参数 纵向位置, 整数型</p>
<p>.参数 功能键状态, 整数型</p>
<p>类型 = 2</p>
<p>网址 = 编辑框_直链2.内容</p>
<p>多线程模块_启动线程 (&文件下载, , , , )</p>
<p>.子程序 _标签_赞助_鼠标左键被放开, 逻辑型, , 二开请保留原作者信息</p>
<p>.参数 横向位置, 整数型</p>
<p>.参数 纵向位置, 整数型</p>
<p>.参数 功能键状态, 整数型</p>
<p>图片框1.调整层次 (1)</p>
<p>图片框1.可视 = 真</p>
<p>标签_提示.标题 = “赞助点呗 谢谢”</p>
<p>标签_详细.标题 = #换行符 + “ 本程序 由 JCOS https://bbs.125.la/?578637 开发” + #换行符 + #换行符 + “ 请且用且珍惜 有条件的赏包烟 谢谢!”</p>
<p>返回 ()</p>
<p>.子程序 _标签_复标题_鼠标左键被放开, 逻辑型, , 复制</p>
<p>.参数 横向位置, 整数型</p>
<p>.参数 纵向位置, 整数型</p>
<p>.参数 功能键状态, 整数型</p>
<p>置剪辑板文本 (编辑框_标题.内容)</p>
<p>标签_提示.标题 = “已复制 标题”</p>
<p>.子程序 _标签_复封面_鼠标左键被放开, 逻辑型, , 复制</p>
<p>.参数 横向位置, 整数型</p>
<p>.参数 纵向位置, 整数型</p>
<p>.参数 功能键状态, 整数型</p>
<p>置剪辑板文本 (编辑框_封面.内容)</p>
<p>标签_提示.标题 = “已复制 封面地址”</p>
<p>.子程序 _标签_复直链1_鼠标左键被放开, 逻辑型, , 复制</p>
<p>.参数 横向位置, 整数型</p>
<p>.参数 纵向位置, 整数型</p>
<p>.参数 功能键状态, 整数型</p>
<p>置剪辑板文本 (编辑框_直链1.内容)</p>
<p>标签_提示.标题 = “已复制 直链地址”</p>
<p>.子程序 _标签_复直链2_鼠标左键被放开, 逻辑型, , 复制</p>
<p>.参数 横向位置, 整数型</p>
<p>.参数 纵向位置, 整数型</p>
<p>.参数 功能键状态, 整数型</p>
<p>置剪辑板文本 (编辑框_直链2.内容)</p>
<p>标签_提示.标题 = “已复制 连接地址”</p>
<p>.子程序 _标签_随机_鼠标左键被放开, 逻辑型, , 可用于游戏</p>
<p>.参数 横向位置, 整数型</p>
<p>.参数 纵向位置, 整数型</p>
<p>.参数 功能键状态, 整数型</p>
<p>.局部变量 json, 类_json, 静态</p>
<p>.局部变量 返回值, 文本型</p>
<p>返回值 = 编码_utf8到gb2312 (到文本 (网页_访问_对象 (“https://api.aagtool.top/api/sjsfz?country=cn”, 0, , , , “User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203”, , , , , , , , , , , , , )))</p>
<p>json.解析 (返回值, , )</p>
<p>.如果真 (json.取通用属性 (“code”, ) = “1”)</p>
<p>标签_提示.标题 = “请 稍 候 再 试”</p>
<p>标签_详细.标题 = json.取通用属性 (“message”, )</p>
<p>返回 ()</p>
<p>.如果真结束</p>
<p>标签_提示.标题 = json.取通用属性 (“user”, ) + “ :” + json.取通用属性 (“userid”, )</p>
<p>置剪辑板文本 (标签_提示.标题)</p>
<p>标签_详细.标题 = “已复制到剪辑板” + #换行符 + 返回值</p>
<p>返回 ()</p>
<p>.子程序 _标签_详细_被双击, 逻辑型, , 复制详情</p>
<p>.参数 横向位置, 整数型</p>
<p>.参数 纵向位置, 整数型</p>
<p>.参数 功能键状态, 整数型</p>
<p>置剪辑板文本 (标签_详细.标题)</p>
<p>标签_提示.标题 = “已把详情 复制到剪辑板”</p>
<p>.子程序 _编辑框1_播放次_内容被改变, , , 视频重复播放次数</p>
<p>写配置项 (取运行目录 () + “\已解析视频\配置.ini”, “视频解析”, “重复播放”, 编辑框1_播放次.内容)</p>
<p>DVD.播放次数 (到整数 (编辑框1_播放次.内容))</p>
<p>.子程序 __启动窗口_将被销毁, , , 退出程序</p>
<p>客户1.断开连接 ()</p>
<p>DVD.销毁 ()</p>
<p>处理事件 ()</p>
<p>结束 ()</p>
<p><img src="https://img2024.cnblogs.com/blog/3661544/202506/3661544-20250619114518544-2002231404.png"></p><br><br>
来源:https://www.cnblogs.com/qianqian3378/p/18936240
頁:
[1]