綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[教程] 使用 Powershell 下載 XVideos 影片

[複製連結] 查看: 2772|回覆: 0|好評: 0
跳轉到指定樓層
樓主
tomboliu | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2021-2-14 17:04

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
本帖最後由 tomboliu 於 2021-3-19 21:41 編輯

一般的HLS串流伺服器,將完整影片切段時,都會產生一個 .m3u8 的影片清單檔案

XVideos 的串流伺服器以及處理播放影片的 JavaScript  會先輸出一個 hls.m3u8 檔案
裡面會列出不同解析度影片的影片清單檔案
再下載你想要的解析度清單檔案後,可以得到影片的網址,而且影片長度、影片網址是有規則的
我們就從這規則來下載影片

$Min 是影片分鐘數(只取分鐘)
$Sec 是影片不足一分鐘的秒數
$Last 是計算總共有多少影片,我要用 For Loop 來進行批次下載
Round() 是四捨五入函式,數值加上 0.5 ,再進行四捨五入就會變成無條件進位;如果要變成無條件捨去,就改成減 0.5

$BasePath 是收集影片的目錄
$Folder 是要存放目前抓取影片的目錄名稱
$Referer 是這部影片的網頁
$BaseURL 就是前面講的影片網址

PS.這個程式的前題是,你要先用瀏覽器找到 任一 .ts 影片網址。當然,要解析網頁內容,取得 hls.m3u8 網址及內容,也不困難就是了(這部分有時間再說)
  1. # Download xvideos 影片
  2. # 從影片網址取得批次網址
  3. # 每段影片都是 10秒,所以從影片長度可以計算出迴圈批次數量 $Last = 分鐘數 * 6 + 秒數/10(無條件進位)
  4. $Min = 36
  5. $Sec = 34
  6. $Last = $Min * 6 + [Math]::Round($Sec/10+0.5)
  7. $BasePath = "C:TEMPAV"
  8. $Folder = "紗凪美羽 前AKB48偶像下海拍AV"
  9. $Referer = "https://www.xvideos.com/video51328297/_-_-_akb48_av"
  10. $BaseURL = "https://hls-hw.xvideos-cdn.com/videos/hls/df/fc/87/dffc8767f17e4e4b04e201cc40da752f/hls-720p-6875f0.ts?e=1613299588&l=0&h=2373aaf0681fcf309163f6005f1b2d1c"
  11. $BaseURL = $BaseURL -Replace [regex]"0.ts","{0}.ts"
  12. $AllProtocols = [System.Net.SecurityProtocolType]"Ssl3,Tls,Tls11,Tls12"
  13. [System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols
  14. If(Test-Path -Path "$BasePath$Folder"){
  15.     Write-Host "目錄已存在" -ForegroundColor Cyan
  16. }Else{
  17.     Write-Host "建立目錄"
  18.     New-Item -Path $BasePath -Name $Folder -ItemType Container
  19. }
  20. # 因為影片編號是 0 開始,所以最後一個影片會小於 $Last ,而不是小於等於 $Last
  21. For($Loop=0; $Loop -lt $Last ;$Loop++){
  22.     $Download = New-Object System.Net.WebClient
  23.     $URL = $BaseURL -f $Loop
  24.     $URL
  25.     $Download.Headers.Add("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36")
  26.     $Download.Headers.Add("Referer",$Referer);
  27.     $FileName = "{0:d4}.mp4" -f $Loop
  28.     $Download.DownloadFile($URL , "$BasePath$Folder$FileName")
  29. }
複製代碼





PS. 本篇僅討論 PowerShell 程式喔!




「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)

評分

參與人數 4碎鑽 +3 幫助 +4 收起 理由
balala + 1 + 1 非常讃
bos747 + 1 + 1 非常讃
jacksonlao57 + 1 偶像,看完你的內容,讓我找到了活著的意義.
jia4568tw + 1 + 1 非常讃

查看全部評分

收藏收藏2 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則