greeple
Gold Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору вот так вот для потплеера работает Код: $url = Read-Host "URL" $pot_exe = "путь до\PotPlayerMini64.exe" $usag = "/user_agent=`"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36`"" $regex = "(?<=\?t=)\d{1,2}h?\d{0,2}m?\d{0,2}s?" if ($url -match $regex) { $t = $matches[0] } else { $t = "0" } $hours = [int]([regex]::Match($t, '\d+h').Value.TrimEnd('h')) $minutes = [int]([regex]::Match($t, '\d+m').Value.TrimEnd('m')) $seconds = [int]([regex]::Match($t, '\d+s').Value.TrimEnd('s')) $time = ($hours * 3600) + ($minutes * 60) + $seconds $link = & yt-dlp -g $url if ($LASTEXITCODE -ne 0) { Write-Host "" Write-Host "This video is unavailable" -ForegroundColor Red Write-Host "=========================" Read-Host "Press Enter to exit" exit } Start-Process "$pot_exe" -ArgumentList "$link", "$usag", "/seek=$time" | или вот такой вариант (позже возможно будет покороче) Код: $url = Read-Host "URL" if ($url -like "*?t=*") { $hms = $url | Select-String -Pattern "(?<=t=)(\d{1,2})h?(\d{0,2})m?(\d{0,2})s?" -AllMatches $1 = $hms.Matches.Groups[1].Value $2 = $hms.Matches.Groups[2].Value $3 = $hms.Matches.Groups[3].Value if (($hms.Matches.Value -like "*h*") -and ($hms.Matches.Value -like "*m*")) {$time = (New-TimeSpan -Hours $1 -Minutes $2 -Seconds $3).TotalSeconds} elseif (($hms.Matches.Value -like "*h*") -and ($hms.Matches.Value -notlike "*m*")) {$time = (New-TimeSpan -Hours $1 -Seconds $2).TotalSeconds} elseif ($hms.Matches.Value -like "*m*") {$time = (New-TimeSpan -Minutes $1 -Seconds $3).TotalSeconds} else {$time = $1} } $link = & yt-dlp -g $url Start-Process "путь до \PotPlayerMini64.exe" -ArgumentList "$link", "/user_agent=`"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36`"", "/seek=$time" | жалко название в потплеер не прикрутить из yt-dlp есть же /title="title" я что то сразу не заметил в vlc можно таким флагом добавить --meta-title="test", а в yt-dlp получить название так -e только там с кодировкой русских символов проблемы почему то, в консоли норм показывает, а когда в vlc передаёшь они кракозябрами такой вот скрипт с названием, позже может найдется решение Код: [Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("windows-1251") $url = Read-Host "URL" $regex = "(?<=\?t=)\d{1,2}h?\d{0,2}m?\d{0,2}s?" if ($url -match $regex) { $t = $matches[0] } else { $t = "0" } $hours = [int]([regex]::Match($t, '\d+h').Value.TrimEnd('h')) $minutes = [int]([regex]::Match($t, '\d+m').Value.TrimEnd('m')) $seconds = [int]([regex]::Match($t, '\d+s').Value.TrimEnd('s')) $time = ($hours * 3600) + ($minutes * 60) + $seconds $link = & yt-dlp -g $url $title = & yt-dlp -e $url if ($LASTEXITCODE -ne 0) { Write-Host "" Write-Host "This video is unavailable" -ForegroundColor Red Write-Host "=========================" Read-Host "Press Enter to exit" exit } Start-Process "путь до \vlc\vlc.exe" -ArgumentList "--start-time=$time", "$link", ":http-user-agent=`"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36`"", "--meta-title=`"$title`"" | Добавлено: решилось с кодировкой, вначале скрипта добавить вот это на win10 на других наверно тоже [Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("windows-1251") но вот эти варианты с utf не дают нормальных символов [Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("utf-8") [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 а вот такой [Console]::outputEncoding = [System.Text.Encoding]::GetEncoding('cp866') он так же показывает как и без записей, значит он по умолчанию и есть в консоли (я просто никогда с кодировками не имел дело) сверху добавил в последний скрипт кодировку сюда тоже добавлю написал такой батник, копируешь ссылку, кликаешь по батнику, он запускает видео из вк с юзерагентом в потплеер с названием видео Код: >nul chcp 1251 for /f "delims=" %%i in (' mshta "javascript:var x=clipboardData.getData('text');if(x) new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(x);close();" ') do set clip=%%i for /f "delims=" %%i in ('yt-dlp.exe -g "%clip%"') do set link=%%i for /f "delims=" %%i in ('yt-dlp.exe -e "%clip%"') do set title=%%i start /D "C:\путь до плеера\PotPlayer\" PotPlayerMini64.exe "%link%" /user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36" /title="%title%" exit |
| Всего записей: 5561 | Зарегистр. 11-02-2020 | Отправлено: 19:29 14-05-2023 | Исправлено: greeple, 22:23 15-05-2023 |
|