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

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

Ответить
Настройки темы
PowerShell - Получение контента, сжатого в Brotli

Старожил


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

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


Добрый день всем!
Кто в теме, подскажите, пожалуйста, если на Powershell возможность получить контент веб страницы, сжатой алгоритмом Brotli ?
Имеется ввиду получение текста в читаемой кодировке.

Отправлено: 09:50, 27-03-2020

 

Ветеран


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

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


Uragan66, пример url приведите.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:19, 27-03-2020 | #2



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

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


Старожил


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

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


Iska, по некоторым причинам не хотелось бы светить url.
Написал Вам на e-mail. Посмотрите, пожалуйста, почту.

Отправлено: 14:55, 27-03-2020 | #3


Ветеран


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

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


Uragan66, спасибо, посмотрел.

Как я понимаю, что-то делалось (отсюда: Add support for brotli compression to Web Cmdeltes · Issue #4947 · PowerShell/PowerShell · GitHub):
Цитата:
Latest nightly w/ merged dotnetcore2.1-rc1 include System.Compression.Brotli
но от меня сие, увы, слишком далеко.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:00, 27-03-2020 | #4


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Iska:
что-то делалось (отсюда: »
Да, в версии PS 6.1 появилась поддержка Brotli
т.е. можно тот пример из ссылки использовать так:
Код: Выделить весь код
Invoke-WebRequest https://www.bayden.com/test/brotliimg.aspx -Headers @{'Accept-Encoding'='br'} -OutFile C:\temp\brotli.jpg
а потом распаковать файл примерно таким скриптом:
Код: Выделить весь код
param(
	$infile = 'C:\temp\brotli.jpg',
	$outfile = 'C:\temp\brotli_out.jpg'
)

function BrotliDecompress {
	param (
		[parameter(Mandatory=$true)]
		[string]$a,
		[parameter(Mandatory=$true)]
		[string]$b
	)
	$in = [io.filestream]::new($a, [io.filemode]::open)
	$out = [io.filestream]::new($b, [io.filemode]::create)
	$decompress = [io.compression.brotlistream]::new(
		$in,[io.compression.compressionmode]::decompress
	)
	$decompress.copyto($out)
	$in.dispose()
	$out.dispose()
}

BrotliDecompress $infile $outfile

-------
scio me nihil scire. Ѫ

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

Отправлено: 18:01, 27-03-2020 | #5


Ветеран


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

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


YuS_2, я правильно понимаю, что, в принципе, те же действия можно проделать и с потоком в памяти (без участия внешних промежуточных файлов)?
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:52, 27-03-2020 | #6


Аватара для YuS_2

Crazy


Contributor


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

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


Цитата Iska:
я правильно понимаю, что, в принципе, те же действия можно проделать и с потоком в памяти (без участия внешних промежуточных файлов)? »
Да, конечно. Перегрузка [io.compression.brotlistream]::new говорит о том, что главное, чтобы тип данных потока соответствовал System.IO.Stream, а откуда он будет поступать - неважно.

Цитата:
Поток - это абстракция последовательности байтов, например файла, устройства ввода-вывода, межпроцессного канала связи или сокета TCP/IP. Класс Stream и его производные классы предоставляют общее представление этих различных типов входных и выходных данных и изолируют программиста от конкретных деталей операционной системы и базовых устройств.

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 27-03-2020 в 21:33.

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

Отправлено: 21:25, 27-03-2020 | #7


Старожил


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

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


Iska, YuS_2, спасибо большое за помощь!
Получилось отлично, на выходе файл в нужной кодировке.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:01, 27-03-2020 | #8


Ветеран


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

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


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

Отправлено: 22:58, 27-03-2020 | #9


Старожил


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

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


С потоком памяти не сообразил как правильно сделать, написал код с темп файлом:
Код: Выделить весь код
param(
	$infile = "$file.FullName",
	$outfile = 'I:\brotli_out.txt'
)

function BrotliDecompress {
	param (
		[parameter(Mandatory=$true)]
		[string]$a,
		[parameter(Mandatory=$true)]
		[string]$b
	)
	$in = [io.filestream]::new($a, [io.filemode]::open)
	$out = [io.filestream]::new($b, [io.filemode]::create)
	$decompress = [io.compression.brotlistream]::new(
		$in,[io.compression.compressionmode]::decompress
	)
	$decompress.copyto($out)
	$in.dispose()
	$out.dispose()
}
$file = New-TemporaryFile
Invoke-WebRequest -Uri "какой-то сайт" -Headers @{"method"="GET"; "accept"="text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3"; "referer"="другая страница сайта"; "accept-encoding"="gzip, deflate, br"; "accept-language"="ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7"} -OutFile $file.FullName

BrotliDecompress $file.FullName $outfile
Remove-Item $file.FullName -errorAction silentlycontinue

Отправлено: 07:40, 28-03-2020 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Установка - [решено] Создание универсального сжатого ISO образа Windows 10 AIO Juriyx Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 9 29-10-2018 15:18
Браузер Edge получил поддержку открытого алгоритма сжатия Google Brotli OSZone News Новости и события Microsoft 1 27-12-2016 20:34
[решено] Случайно попала жидкость от сжатого воздуха monster Материнские платы и память 5 27-07-2013 19:51
Защита контента Dragon7 Вебмастеру 13 15-07-2011 03:40
Уценка контента оператором united Мобильные ОС, смартфоны и планшеты 6 17-10-2008 15:23




 
Переход