Войти

Показать полную графическую версию : [решено] Парс ссылки для загрузки файла


Страниц : 1 [2]

NickM
04-11-2024, 15:53
Вот этот параметр искал по интернету, сайтов 20 облазил перечитал, не смог найти. Искал как в целом работать с фильтрами. »
about_Comparison_Operators (https://learn.microsoft.com/ru-ru/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1)

Этот код не отработал. »
Что именно не отработало? Какую ошибку Вы получили?

Немного переписал ваш первый вариант »
Понятно.

a1ek9
04-11-2024, 16:02
Что именно не отработало? Какую ошибку Вы получили? »
Сам код рабочий, только фильтр подправить. Я этот код оборачиваю в cmd. Видимо там что-то накосячил. сейчас проверил.
about_Comparison_Operators »
За линк, спасибо)

a1ek9
08-11-2024, 20:53
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 находит но надо править регулярками я не умею(

NickM
08-11-2024, 21:51
Не подскажите как извлечь все таки ссылку на переадресацию? »
Не совсем понятно, что Вы хотите получить:

$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, где первые включают все выпуски, в том числе альфа/ бета/ тестовые, а вторые - только крайний релиз.

a1ek9
09-11-2024, 11:59
Возможно, что Вы ещё не поняли, что на 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

Ну, получите Вы этот тэг и дальше что? »
Я не силен в скриптах. Как-то лучше сделать можно?

NickM
09-11-2024, 13:47
Как-то лучше сделать можно? »
Сделать что?

Возможно, что Вы ещё не поняли, что на github.com существуют URL'ы /releases, и существуют /releases/latest, где первые включают все выпуски, в том числе альфа/ бета/ тестовые, а вторые - только крайний релиз. »
вот именно поэтому хочу загружать только стабильные версии программ, а в /releases попадают все, как вы и сказали. »
а вторые - только крайний релиз. »

a1ek9
09-11-2024, 13:50
Сделать что? »
получить только крайний релиз. »

NickM
09-11-2024, 13:52
Вот же!
$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)
Копируете нужную ссылку, запускаете скрипт, на выходе, в буфере обмена, получите искомое - ссылку на переадресацию.

Sham
20-11-2024, 07:26
ТСу видимо нужен 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

a1ek9
05-12-2024, 20:51
Доброго времени суток! Подскажите пожалуйста как избавиться от этого кошечка?
Конкретно у меня появляется
@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

Sham
06-12-2024, 06:54
избавиться от этого кошечка »
пробуйте добавить к iwr -UseBasicParsing или в настройках IE (типа "обозревателя") что-то есть запретное, если установлен до сих пор.




© OSzone.net 2001-2012