返回列表

帖子详情

示例

[多线程]多线程下载视频示例代码

作者:管理员发布:2026-05-27 20:01:00浏览:4
采集.yc文件源码:
// 函数 开始采集 () {

HTTP请求配置类 http

http.设置协议头 ("referer", "https://www.kuaishou.com")

http.设置协议头 ("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36")

http.设置协议头 ("Content-Type", "application/json")

http.设置协议头 ("cookie", "kpf=PC_WEB; clientid=3; did=web_5d3bdc356992bfef878b5ddec3a8ae52; kwpsecproductname=kuaishou-vision; kwpsecproductname=kuaishou-vision; kwssectoken=tWI6s133pFYGdOlnk27W8Yh4wjadSi58QyxnwAZJR3YxGwREGwdZcW84IvHBJzTUoPWXpNJR4RFm5j3kd1mbmw==; kwscode=a715a587d1b6832f2760590584b05c42663b5eae5c68614a6b055f2e0f6069b7; userId=1769754385; kuaishou.server.webday7_st=ChprdWFpc2hvdS5zZXJ2ZXIud2ViZGF5Ny5zdBKwAfxHb0hb2_OFK-7qVuxfubkfd0gGRO3-smyRIBOrGHjicM3gH6yluCW54YZLv_EVJuokpwdGZDlwfbhTnAzZKXjHmaxjW45EyQqIMpxB5UKiHHyCFa0Mg38QKTKHv2QnbUUSaDp6a346sHlog57ajZstrqJgSbpz1t00oYB_jNk5THreOWHl6ONe-TIqdN8SwVy4z8dtiBP8ZwSrLvWG-_tQQfX7W8Mtopl9Okn5N2mGGhKG8p8rMjDoYek0YnysLxOh1qsiINRkaUkfZFkGkVVMDON8n-C7RFXE5zkxJMBFDTVWCxNVKAUwAQ; kuaishou.server.webday7_ph=6ba1efb55416780c324b67019913536a6579; ktrace-context=1|MS44Nzg0NzI0NTc4Nzk2ODY5Ljk0OTg2NDg0LjE3Nzk4ODI0NzI3ODEuODgzNTQ3NA==|MS44Nzg0NzI0NTc4Nzk2ODY5LjQ0MzI5NDY1LjE3Nzk4ODI0NzI3ODEuODgzNTQ3NQ==|0|webservice-user-growth-node|webservice|true|src-Js; kpn=KUAISHOU_VISION; kwfv1=PnGU+9+Y8008S+nH0U+0mjPf8fP08f+98f+nLlwnrIP9+Sw/ZFGfzY+eGlGf+f+e4SGfbYP0QfGnLFwBLU80mYGAc7+/WMP/+DGAYfG/rIP/W9GnbD8eZE+9PU80ZE+04f8/WFP9r9P/rl8/8SPnrlP0b0+9HlPe40PeQ0PAHIP9bjwe8Y80Y08f80G/Y0wBzD80ZAP/8D+eqU+fPEG9+jPI==; kwssectoken=YCShcw/Q39nO9WdJne+PmaytHwVM9J98hNTxlvbUziXP2lxs05qe0kTEAlYUUtkl7XX9zY0hc/oUPwTZOrTuaw==; kwscode=221e9b74fd391ece5b7009f34d24ccb1e330605d70e7fcab17150fd8c6f4f944")

文本 关键字 = "歌曲"

//文本 body = "{\"keyword\":\"" + 关键字 + "\",\"page\":\"search\",\"webPageArea\":\"\",\"pcursor\":\"\"}"

文本 body = r"({"keyword":"歌曲","page":"search","webPageArea":"","pcursor":""})"

//文本 body = r"({"keyword":"歌曲", "page":"search", "webPageArea":"", "pcursor":""})"

按钮开始采集.启用 = 假

按钮开始采集.标题 = "采集中..."

文本 源码 = HTTP请求_文本 ("POST", "https://www.kuaishou.com/rest/v/search/feed", body, http)

输出 (源码)

JSON类 json

json.解析 (源码)


整数 i = 0

列表视图1.清空 ()

循环 (json.取数量 ("feeds"), i) {

小数 时长 = 文本转小数 (json.取文本 ("feeds["+到文本 (i)+"].photo.duration"))

时长 = 时长/1000

小数 秒_ = 取整 (时长) / 60

列表视图1.添加行 (到文本 (i+1), json.取文本 ("feeds["+到文本 (i)+"].photo.photoH265Urls[1].url"), 到文本 (秒_) + ":" + 到文本 (取整 (时长) % 60))

}

按钮开始采集.启用 = 真

按钮开始采集.标题 = "开始采集"

}




函数 下载视频 (整数 行索引, 文本 视频地址) {

HTTP请求配置类 配置

数组 协议头[][] = [

["accept", "*/*"],

["accept-encoding", "identity;q=1, *;q=0"],

["accept-language", "zh-CN,zh;q=0.9"],

["origin", "https://www.kuaishou.com"],

["referer", "https://www.kuaishou.com/"],

["sec-ch-ua", "\"Chromium\";v=\"144\", \"Not:A-Brand\";v=\"99\""],

["sec-ch-ua-mobile", "?0"],

["sec-ch-ua-platform", "\"Windows\""],

["sec-fetch-dest", "video"],

["sec-fetch-mode", "cors"],

["sec-fetch-site", "cross-site"],

["user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36"],

["range", "bytes=0-"]

]

配置.设置协议头数组 (协议头)

配置.设置Cookie字符串 ("kpf=PC_WEB; clientid=3; did=web_5d3bdc356992bfef878b5ddec3a8ae52; kwpsecproductname=kuaishou-vision; kwpsecproductname=kuaishou-vision; kwssectoken=tWI6s133pFYGdOlnk27W8Yh4wjadSi58QyxnwAZJR3YxGwREGwdZcW84IvHBJzTUoPWXpNJR4RFm5j3kd1mbmw==; kwscode=a715a587d1b6832f2760590584b05c42663b5eae5c68614a6b055f2e0f6069b7; userId=1769754385; kuaishou.server.webday7_st=ChprdWFpc2hvdS5zZXJ2ZXIud2ViZGF5Ny5zdBKwAfxHb0hb2_OFK-7qVuxfubkfd0gGRO3-smyRIBOrGHjicM3gH6yluCW54YZLv_EVJuokpwdGZDlwfbhTnAzZKXjHmaxjW45EyQqIMpxB5UKiHHyCFa0Mg38QKTKHv2QnbUUSaDp6a346sHlog57ajZstrqJgSbpz1t00oYB_jNk5THreOWHl6ONe-TIqdN8SwVy4z8dtiBP8ZwSrLvWG-_tQQfX7W8Mtopl9Okn5N2mGGhKG8p8rMjDoYek0YnysLxOh1qsiINRkaUkfZFkGkVVMDON8n-C7RFXE5zkxJMBFDTVWCxNVKAUwAQ; kuaishou.server.webday7_ph=6ba1efb55416780c324b67019913536a6579; ktrace-context=1|MS44Nzg0NzI0NTc4Nzk2ODY5Ljk0OTg2NDg0LjE3Nzk4ODI0NzI3ODEuODgzNTQ3NA==|MS44Nzg0NzI0NTc4Nzk2ODY5LjQ0MzI5NDY1LjE3Nzk4ODI0NzI3ODEuODgzNTQ3NQ==|0|webservice-user-growth-node|webservice|true|src-Js; kpn=KUAISHOU_VISION; kwfv1=PnGU+9+Y8008S+nH0U+0mjPf8fP08f+98f+nLlwnrIP9+Sw/ZFGfzY+eGlGf+f+e4SGfbYP0QfGnLFwBLU80mYGAc7+/WMP/+DGAYfG/rIP/W9GnbD8eZE+9PU80ZE+04f8/WFP9r9P/rl8/8SPnrlP0b0+9HlPe40PeQ0PAHIP9bjwe8Y80Y08f80G/Y0wBzD80ZAP/8D+eqU+fPEG9+jPI==; kwssectoken=YCShcw/Q39nO9WdJne+PmaytHwVM9J98hNTxlvbUziXP2lxs05qe0kTEAlYUUtkl7XX9zY0hc/oUPwTZOrTuaw==; kwscode=221e9b74fd391ece5b7009f34d24ccb1e330605d70e7fcab17150fd8c6f4f944")

字节集 视频数据 = HTTP请求_字节集 ("GET", 视频地址, "", 配置, &回调函数, 行索引)

如果 (写出字节集文件 ("D:/vdemo/viode_"+到文本 (行索引+1)+".mp4", 视频数据)){

列表视图1.设置子项 (行索引, 3, "下载完毕")

}否则{

列表视图1.设置子项 (行索引, 3, "下载失败")

}

}


函数 回调函数 (整数 已下载, 整数 总大小, 整数 行索引) {

如果 (总大小 > 0) {

小数 百分比 = 已下载 * 100 ÷ 总大小

进度条1.当前值 = 百分比

列表视图1.设置子项 (行索引, 3, 到文本 (百分比) + "%")

} 否则 {

输出 ("第:"+行索引+" 出错")

}


}


函数 启动线程方式 () {

数组 线程句柄[]

整数 i = 0

循环 (列表视图1.项目数, i) {

数组 行数据[] = 列表视图1.取行数据 (i)

文本 视频数据 = 到文本 (行数据[1])

如果 (视频数据 ≠ ""){

数组添加 (线程句柄, 启动线程 (&下载视频, i, 视频数据))

}

}

等待所有线程 (线程句柄)

}


main.yc文件代码:

//函数 主窗口.创建完毕 () {

列表视图1.添加列 ("序号", 70)

列表视图1.添加列 ("视频地址", 300)

列表视图1.添加列 ("视频时长", 200)

列表视图1.添加列 ("下载进度", 80)


}


函数 按钮_一键下载.单击 () {

启动线程方式 ()


}


函数 按钮开始采集.单击 () {

启动线程 (&开始采集)

}


B0DF9F6B1B5D30AFD7B443921A184244.png


B0DF9F6B1B5D30AFD7B443921A184244.png

评论