本帖最后由 xczxczxcz 于 2018-11-7 07:06 编辑
回复 3# zhanglei1371
【发现在不同时间段,文件格式会变,当变成M4A格式后,文件名的判断会变成文件名的前一格,特修改一下,如有其它问题可以说一下,因这不是俺的菜,不会对它长期测试】
加了点美化,使下载过程看得更清楚。只针对 ‘https://ting55.com/book/10733’这个有声小说。其它类似。若下载显大片红色错误。则关掉下载。网站已暂进屏了下载。404。过段时间再下。同时程序也会停止。下载的起始页和终止页自行修正。下载的文件保存在脚本目录的《音频》文件中。
单线程下载。多线程可能会很快被杀死。下载没添加进度条。若停电或其它意外退出,会下载文件产生许多没后缀的文件。是没有完成的缓存文件。删除即可。其实加个后缀就可用。
个人认为下载 只需 PS Aria2c IDM 即可。都支持命令行。
凑合写了个,能正常下载。但不保证 win7 能正常用。win8以上没问题。据说有写给xp的POWERSHELL。- # 下载所有指定的网页找出音频文件,为防下载过快,采用单线程下载。
- mkdir "$env:temp\ting55" -force
- $env:Ting55="$env:temp\ting55"
- mkdir ".\音频" -force
-
- ni "$env:Ting55\Down.txt" -type file -force
- $url="https://ting55.com/book/10733-"
- $Save="$env:Ting55\web.txt"
- $client=new-object System.Net.WebClient
- for($i=1; $i -le 935; $i++){ #该循环可写成函数块,以便其它页面调用
- $fullurl=$url+$i
- $Link=$null
- Write-host "处理 第 $i 章 $fullurl" -fore darkcyan
- $Client.DownloadFile("$fullurl","$Save")
- ((gc "$env:Ting55\web.txt" -enc utf8) -replace ("var a={[\w]{1,}:`"http","`r`n@@@") -replace ("`"};ting55_play","`r`n")) |sc "$env:Ting55\ani.txt" -enc Default
- $Link=((gc "$env:Ting55\ani.txt") -match "^@@@").replace('@@@','http')
- if($Link -eq $null){
- Write-host "第 $i 页下载停止" -fore red
- pause
- }
- $NameRef=$Link.split("/")[-1].trim() #完整文件名和后缀
- $str=$NameRef.split("?")[0].trim()
- if($str -eq $null){
- $ext=$NameRef.split(".")[-1].trim()
- $http=$Link
- } else {
- $ext=$str.split(".")[-1].trim()
- $http=$Link.split("?")[0].trim()
- }
- $Name=[string]$i + "." + $ext
- Write-Host "$http" -fore DarkGreen
- Invoke-WebRequest -Uri "$Link" -Outfile ".\音频\$Name"
- }
- ri "$env:temp\ting55" -Recurse -force
- pause
复制代码 ============= |