Показать полную графическую версию : [решено] Парс ссылки для загрузки файла
Вот этот параметр искал по интернету, сайтов 20 облазил перечитал, не смог найти. Искал как в целом работать с фильтрами. »
about_Comparison_Operators (https://learn.microsoft.com/ru-ru/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1)
Этот код не отработал. »
Что именно не отработало? Какую ошибку Вы получили?
Немного переписал ваш первый вариант »
Понятно.
Что именно не отработало? Какую ошибку Вы получили? »
Сам код рабочий, только фильтр подправить. Я этот код оборачиваю в cmd. Видимо там что-то накосячил. сейчас проверил.
about_Comparison_Operators »
За линк, спасибо)
NickM, Добрый вечер! Не подскажите как извлечь все таки ссылку на переадресацию? Не везде указывают beta,pre-release и так далее..Invoke-WebRequest -Uri https://github.com/paintdotnet/release/releases/latest
В данном случае, переадресация идет на https://github.com/paintdotnet/release/releases/tag/v5.0.13
или думаю в окне cmd парс сделать, через find находит но надо править регулярками я не умею(
Не подскажите как извлечь все таки ссылку на переадресацию? »
Не совсем понятно, что Вы хотите получить:
$assets = (iwr https://api.github.com/repos/paintdotnet/release/releases/latest| ConvertFrom-Json).assets| Where-Object {$_.name -like "*.x64.zip"}; $downloadurls = $assets.browser_download_url; $downloadurls[0]
https://github.com/paintdotnet/release/releases/download/v5.0.13/paint.net.5.0.13.install.x64.zip
В данном случае, переадресация идет на »
Ну, получите Вы этот тэг и дальше что?
$tag = ((iwr https://github.com/paintdotnet/release/releases/latest).links |? {$_ }).href | Select-String '\/tag\/'; ($tag -split ('\/'))[0,5]
v5.0.13
Возможно, что Вы ещё не поняли, что на github.com существуют URL'ы /releases, и существуют /releases/latest, где первые включают все выпуски, в том числе альфа/ бета/ тестовые, а вторые - только крайний релиз.
Возможно, что Вы ещё не поняли, что на github.com существуют URL'ы /releases, и существуют /releases/latest, где первые включают все выпуски, в том числе альфа/ бета/ тестовые, а вторые - только крайний релиз. »
Понял, вот именно поэтому хочу загружать только стабильные версии программ, а в /releases попадают все, как вы и сказали. Спасибо вам, позже попробую)
Ну, получите Вы этот тэг и дальше что? »
@for /f "tokens=* usebackq" %%f in (`powershell -command "$tag = ((iwr https://github.com/paintdotnet/release/releases/latest).links |? {$_ }).href | Select-String '\/tag\/'; ($tag -split ('\/'))[0,5]"`) do @set var1=%%f
@for /f "tokens=* usebackq" %%f in (`powershell -command "((Invoke-WebRequest -Uri https://github.com/paintdotnet/release/releases/expanded_assets/%var1%).Links |? {$_ -match 'install.x64.zip\b'}).href"`) do @set var=%%f
Ну, получите Вы этот тэг и дальше что? »
Я не силен в скриптах. Как-то лучше сделать можно?
Как-то лучше сделать можно? »
Сделать что?
Возможно, что Вы ещё не поняли, что на github.com существуют URL'ы /releases, и существуют /releases/latest, где первые включают все выпуски, в том числе альфа/ бета/ тестовые, а вторые - только крайний релиз. »
вот именно поэтому хочу загружать только стабильные версии программ, а в /releases попадают все, как вы и сказали. »
а вторые - только крайний релиз. »
Сделать что? »
получить только крайний релиз. »
Вот же!
$assets = (iwr https://api.github.com/repos/paintdotnet/release/releases/latest| ConvertFrom-Json).assets| Where-Object {$_.name -like "*.x64.zip"}; $downloadurls = $assets.browser_download_url; $downloadurls[0]
https://github.com/paintdotnet/release/releases/download/v5.0.13/paint.net.5.0.13.install.x64.zip »
SQLai Lama
10-11-2024, 17:27
(iwr https://librewolf.net/installation/windows).links.where{$_.href -match 'gitlab.+exe$'}.href
Вот же!
# choco install yq
(iwr https://api.github.com/repos/paintdotnet/release/releases/latest).content | yq -o=json -r '[.assets[]|select(.name=="*x64.zip").browser_download_url]|.[0]'
Ну или нативными средствами одной строкой, без разбиения на подкоманды:
(ConvertFrom-Json (iwr https://api.github.com/repos/paintdotnet/release/releases/latest).content).assets.browser_download_url.where{$_ -like '*.install.x64.zip$}
Uragan66
19-11-2024, 18:24
Не подскажите как извлечь все таки ссылку на переадресацию? »
a1ek9, могу предложить такой код:
[System.Net.ServicePointManager]::SecurityProtocol = @("Tls12","Tls11","Tls","Ssl3")
function Get-TargetLink {[CmdletBinding()]
param(
[Parameter ( Mandatory , ValueFromPipeline )]
[ValidateNotNullOrEmpty()][Uri]$Url
)
try {
$webRequest = [net.WebRequest]::Create($url)
$webRequest.Timeout = 12288
[string]$webRequest.GetResponse().ResponseUri
}catch { Write-verbose "$url`n$_" }
finally {if ($webRequest) { $webRequest.Abort()}}
}
$aContent = Get-Clipboard -Format 'Text' -TextFormatType 'UnicodeText'
$aContent | ForEach {Get-TargetLink $_ -Verbose} | Set-Clipboard
[console]::beep(500,1000)
Копируете нужную ссылку, запускаете скрипт, на выходе, в буфере обмена, получите искомое - ссылку на переадресацию.
ТСу видимо нужен HTTP-заголовок Location.
для старых версий PS (iwr -uri https://github.com/paintdotnet/release/releases/latest -MaximumRedirection 0 -method HEAD -ea SilentlyContinue).headers.location
для новых PS core (со SkipHttpErrorCheck иначе ругается) (iwr -uri https://github.com/paintdotnet/release/releases/latest -MaximumRedirection 0 -method HEAD -ea SilentlyContinue -SkipHttpErrorCheck).headers.location
Доброго времени суток! Подскажите пожалуйста как избавиться от этого кошечка?
Конкретно у меня появляется
@for /f "tokens=* usebackq" %%f in (`powershell -command "((iwr https://sdi-tool.org/download/).Links | ? {$_.'href' -match 'https://sdi-tool.org/releases/SDI_R' -and $_.'class' -eq 'download_button'}).href"`) do @set var=%%f
избавиться от этого кошечка »
пробуйте добавить к iwr -UseBasicParsing или в настройках IE (типа "обозревателя") что-то есть запретное, если установлен до сих пор.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.