Заметки · 14.08.2023

Хоть в рамку и на стену

Сегодня обращу Ваше внимание на сервис создания скриншотов Интернет-сайтов s-shot.ru, который предоставляет свободный (но ограниченный) доступ к своему API. Подробнее читаем документацию, изучаем тарифы и ограничения.

Теперь попробуем сделать снимок сайта с помощью сервиса s-shot.ru и скрипта PS1.

Для начала определимся с переменными. Исходя из документации для полноразмерного скриншота сайта нам нужны: размер, разрешение, формат конечного файла и адрес сайта. Создаём переменные:

# Предлагаем пользователю ввести адрес сайта #
$targetURI = Read-Host "Адрес сайта"

# Задаём ширину изображения #
$resolution = 2560

# Задаём формат файла, дату и генерируем имя файла #
$getdate = Get-Date -Format "ddMMyyyyHHmmss"
$fileformat = "jpeg"
$filename = "$getdate.$fileformat"

Ширину скриншота возьмём самую максимальную из заявленных в комбо-боксе на сайте — 2560 px. Формат файла будет Jpeg (ещё сервисом s-shot.ru поддерживается png) и, соответственно, выходной файл будет именоваться текущей датой/временем с расширением jpeg.

Осталось самое важное — отправить запрос и получить скриншот:

# Скачать скриншот сайта #
wget "http://mini.s-shot.ru/$resolution/$resolution/$fileformat/?$targetURI" -OutFile "$filename"

Как только скрипт отработает, в папке рядом со скриптом будет создан скриншот указанного пользователем сайта.

Целиком исходный код скрипта PS1 может выглядеть так:

[System.Console]::Title = "Скриншот сайта"
$targetURI = Read-Host "Адрес сайта"
$resolution = 2560
$getdate = Get-Date -Format "ddMMyyyyHHmmss"
$fileformat = "jpeg"
$filename = "$getdate.$fileformat"
wget "http://mini.s-shot.ru/$resolution/$resolution/$fileformat/?$targetURI" -OutFile "$filename"