Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Парс ссылки для загрузки файла

Ответить
Настройки темы
PowerShell - [решено] Парс ссылки для загрузки файла

Аватара для a1ek9

Пользователь


Сообщения: 59
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: a1ek9
Дата: 26-08-2024
Добрый день! Не подскажите, почему парсит ссылку с портабл версией а не с инсталером?
Код: Выделить весь код
@echo off
@for /f "tokens=* usebackq" %%f in (`powershell -command "(wget "https://librewolf.net/installation/windows/").links | ? 'class' -eq 'jsx-3135004230 button text-gray focus:ring primary  ' | select -exp href"`) do @set var=%%f
echo %var%
pause
Пробовал по разному, захват происходит либо второй ссылки, либо вовсе четвёртую(
Вот эту нужно поймать:
Код: Выделить весь код
href="https://gitlab.com/api/v4/projects/44042130/packages/generic/librewolf/129.0.2-1/librewolf-129.0.2-1-windows-x86_64-setup.exe"

Отправлено: 13:59, 26-08-2024

 

Аватара для NickM

Ветеран


Contributor


Сообщения: 4446
Благодарности: 1053

Профиль | Отправить PM | Цитировать


Цитата a1ek9:
Вот этот параметр искал по интернету, сайтов 20 облазил перечитал, не смог найти. Искал как в целом работать с фильтрами. »
about_Comparison_Operators

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

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

Последний раз редактировалось NickM, 04-11-2024 в 16:00.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:53, 04-11-2024 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для a1ek9

Пользователь


Сообщения: 59
Благодарности: 1

Профиль | Отправить PM | Цитировать


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

Отправлено: 16:02, 04-11-2024 | #22


Аватара для a1ek9

Пользователь


Сообщения: 59
Благодарности: 1

Профиль | Отправить PM | Цитировать


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 находит но надо править регулярками я не умею(

Последний раз редактировалось a1ek9, 08-11-2024 в 21:01.


Отправлено: 20:53, 08-11-2024 | #23


Аватара для NickM

Ветеран


Contributor


Сообщения: 4446
Благодарности: 1053

Профиль | Отправить PM | Цитировать


Цитата a1ek9:
Не подскажите как извлечь все таки ссылку на переадресацию? »
Не совсем понятно, что Вы хотите получить:

Код: Выделить весь код
$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
Цитата a1ek9:
В данном случае, переадресация идет на »
Ну, получите Вы этот тэг и дальше что?

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

Последний раз редактировалось NickM, 08-11-2024 в 21:57.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:51, 08-11-2024 | #24


Аватара для a1ek9

Пользователь


Сообщения: 59
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата NickM:
Возможно, что Вы ещё не поняли, что на github.com существуют URL'ы /releases, и существуют /releases/latest, где первые включают все выпуски, в том числе альфа/ бета/ тестовые, а вторые - только крайний релиз. »
Понял, вот именно поэтому хочу загружать только стабильные версии программ, а в /releases попадают все, как вы и сказали. Спасибо вам, позже попробую)
Цитата NickM:
Ну, получите Вы этот тэг и дальше что? »
Код: Выделить весь код
@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
Цитата a1ek9:
Ну, получите Вы этот тэг и дальше что? »
Я не силен в скриптах. Как-то лучше сделать можно?

Последний раз редактировалось a1ek9, 09-11-2024 в 13:32.


Отправлено: 11:59, 09-11-2024 | #25


Аватара для NickM

Ветеран


Contributor


Сообщения: 4446
Благодарности: 1053

Профиль | Отправить PM | Цитировать


Цитата a1ek9:
Как-то лучше сделать можно? »
Сделать что?

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

Отправлено: 13:47, 09-11-2024 | #26


Аватара для a1ek9

Пользователь


Сообщения: 59
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата NickM:
Сделать что? »
получить
Цитата NickM:
только крайний релиз. »

Отправлено: 13:50, 09-11-2024 | #27


Аватара для NickM

Ветеран


Contributor


Сообщения: 4446
Благодарности: 1053

Профиль | Отправить PM | Цитировать


Вот же!
Цитата NickM:
Код: Выделить весь код
$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
»

Отправлено: 13:52, 09-11-2024 | #28


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Цитировать


Код: Выделить весь код
(iwr https://librewolf.net/installation/windows).links.where{$_.href -match 'gitlab.+exe$'}.href
Цитата NickM:
Вот же!
Код: Выделить весь код
# 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$}

Последний раз редактировалось SQLai Lama, 10-11-2024 в 18:35.


Отправлено: 17:27, 10-11-2024 | #29



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Парс ссылки для загрузки файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Скачивание файла\Парс строки из файла в переменную a1ek9 Скриптовые языки администрирования Windows 13 02-03-2024 11:38
Любой язык - [решено] RegExt для вытаскивания имени файла из ссылки Uragan66 Скриптовые языки администрирования Windows 6 23-06-2019 22:42
[решено] BSOD, изменение настроек Firefox, командная строка логов загрузки файла, вирус-ссылки JamesD Лечение систем от вредоносных программ 8 17-01-2018 09:23
Закачка файла, передача локальной ссылки в переменную andriy111 AutoIt 0 09-05-2013 22:06
как открыть окно для загрузки файла из JS? Vlad Drakula Вебмастеру 25 22-02-2007 13:04




 
Переход