Файлы
Переход в файловый контекст
Иногда возникает необходимость скачать бинарный файл (например, архив с документами) с сайта донора и сохранить результат в хранилище или на локальный диск. Для этого нам нужно перейти в файловый контекст, используя команду file. Эта команда работает только в блоковом контексте и требует наличия в регистре закодированного в base64 содержимого бинарного файла.
Давайте попробуем это на примере. Мы должны загрузить файл, перейти в блок с закодированным содержимым, отпарсить содержимое блока в регистр и перейти в file контекст:
# ЗАГРУЖАЕМ ФАЙЛ
- walk:
to: http://www.td-systems.com/download/pw.zip
do:
# ПЕРЕХОДИМ В БЛОК С ЗАКОДИРОВАННЫМ В BASE64 СОДЕРЖИМЫМ
- find:
path: file
do:
# ПАРСИМ СОДЕРЖИМОЕ
- parse
# ПЕРЕХОДИМ В ФАЙЛОВЫЙ КОНТЕКСТ
- file:
do:
# СОХРАНЯЕМ ИЛИ ТРАНСФЕРИМ ФАЙЛ
Сохраняем файл
Итак, нам нужно сохранить файл. Можно сохранить его в локальный файл на компьютере (доступно только в скомпилированном диггере), в облачное хранилище (на данный момент поддерживается: Amazon S3, Yandex Object Storage) или на любой FTP сервер. Для сохранения файла используется команда save.
Команда поддерживает следующие параметры:
Параметр | Описание |
---|---|
ext | Расширение, определяющее тип сохраняемого файла. Если опущено, используется значение по умалчанию "ext". |
to | Тип хранилища. В данный момент поддерживаются следующие типы: file, s3, yandex и ftp. |
Тип file сохраняет файл на локальный диск. Этот тип будет работать только в скомпилированных парсерах. При использовании хранилища подобного типа, требуются следующие параметры:
Параметр | Описание |
---|---|
name | Имя файла без расширения. Если не задано, будет сгенерировано уникальное имя. |
path | Путь до директории, куда нужно сохранить файл. Если не задано, файл будет сохранен в текущую директорию. |
# ЗАГРУЖАЕМ ФАЙЛ
- walk:
to: http://www.td-systems.com/download/pw.zip
do:
# ПЕРЕХОДИМ В БЛОК С ЗАКОДИРОВАННЫМ В BASE64 СОДЕРЖИМЫМ
- find:
path: file
do:
# ПАРСИМ СОДЕРЖИМОЕ
- parse
# ПЕРЕХОДИМ В ФАЙЛОВЫЙ КОНТЕКСТ
- file:
do:
# СОХРАНЯЕМ ФАЙЛ (e://myfiles/somescript.zip)
- save:
to: file
ext: zip
name: somescript
path: 'e://myfiles'
Тип s3 сохраняет файл в облачное хранилище Amazon S3. При использовании хранилища подобного типа, требуются следующие параметры:
Параметр | Описание |
---|---|
key | Ключ доступа к AWS S3. Обязательный параметр. |
secret | Секрет для доступа к AWS S3. Обязательный параметр. |
region | Регион в AWS S3. Обязательный параметр. |
bucket | Имя бакета в AWS S3. Обязательный параметр. |
token | Токен для доступа в AWS S3. Необязательный параметр. |
name | Имя файла без расширения. Если не задано, будет сгенерировано уникальное имя. |
path | Путь до директории, куда нужно сохранить файл. Если не задано, файл будет сохранен в рутовую директорию бакета. |
# ЗАГРУЖАЕМ ФАЙЛ
- walk:
to: http://www.td-systems.com/download/pw.zip
do:
# ПЕРЕХОДИМ В БЛОК С ЗАКОДИРОВАННЫМ В BASE64 СОДЕРЖИМЫМ
- find:
path: file
do:
# ПАРСИМ СОДЕРЖИМОЕ
- parse
# ПЕРЕХОДИМ В ФАЙЛОВЫЙ КОНТЕКСТ
- file:
do:
# СОХРАНЯЕМ ФАЙЛ В ХРАНИЛИЩЕ S3 (/scripts/myscript.zip)
- save:
to: s3
key: AWSAJJDJJSJDJDJFK
secret: AWSSERETTDHFJJJDJSKFJFJSJJFJJGKRI
region: us-east-1
bucket: mybucket
name: myscript
ext: zip
path: '/scripts'
Тип yandex сохраняет файл в облачное хранилище Yandex Object Storage. При использовании хранилища подобного типа, требуются следующие параметры:
Параметр | Описание |
---|---|
key | Ключ доступа к Yandex Object Storage. Обязательный параметр. |
secret | Секрет для доступа к Yandex Object Storage. Обязательный параметр. |
region | Регион в Yandex Object Storage. Обязательный параметр. |
bucket | Имя бакета в Yandex Object Storage. Обязательный параметр. |
token | Токен для доступа в Yandex Object Storage. Необязательный параметр. |
name | Имя файла без расширения. Если не задано, будет сгенерировано уникальное имя. |
path | Путь до директории, куда нужно сохранить файл. Если не задано, файл будет сохранен в рутовую директорию бакета. |
# ЗАГРУЖАЕМ ФАЙЛ
- walk:
to: http://www.td-systems.com/download/pw.zip
do:
# ПЕРЕХОДИМ В БЛОК С ЗАКОДИРОВАННЫМ В BASE64 СОДЕРЖИМЫМ
- find:
path: file
do:
# ПАРСИМ СОДЕРЖИМОЕ
- parse
# ПЕРЕХОДИМ В ФАЙЛОВЫЙ КОНТЕКСТ
- file:
do:
# СОХРАНЯЕМ ФАЙЛ В ХРАНИЛИЩЕ YANDEX (/scripts/myscript.zip)
- save:
to: yandex
key: AWSAJJDJJSJDJDJFK
secret: AWSSERETTDHFJJJDJSKFJFJSJJFJJGKRI
region: ru-central1
bucket: mybucket
name: myscript
ext: zip
path: '/scripts'
Тип ftp сохраняет файл на указанный FTP сервер. При использовании хранилища подобного типа, требуются следующие параметры:
Параметр | Описание |
---|---|
host | IP адрес или имя хоста FTP сервера. Обязательный параметр. |
port | Порт FTP сервера, если не указан, используется стандартный порт 21. Необязательный параметр. |
username | Имя пользователя для доступа к FTP серверу, если не указан, используется пустая строка вместо имени пользователя. Необязательный параметр. |
password | Пароль пользователя для доступа к FTP серверу, если не указан, используется пустая строка вместо пароля. Необязательный параметр. |
name | Имя файла без расширения. Если не задано, будет сгенерировано уникальное имя. |
path | Путь до директории, куда нужно сохранить файл. Если не задано, файл будет сохранен в текущую директорию FTP сервера после логина. |
# ЗАГРУЖАЕМ ФАЙЛ
- walk:
to: http://www.td-systems.com/download/pw.zip
do:
# ПЕРЕХОДИМ В БЛОК С ЗАКОДИРОВАННЫМ В BASE64 СОДЕРЖИМЫМ
- find:
path: file
do:
# ПАРСИМ СОДЕРЖИМОЕ
- parse
# ПЕРЕХОДИМ В ФАЙЛОВЫЙ КОНТЕКСТ
- file:
do:
# СОХРАНЯЕМ ФАЙЛ НА FTP (scripts/myscript.zip)
- save:
to: ftp
host: ftp.mywebsite.com
port: 21
username: user1
password: mysecretpassword
name: myscript
ext: zip
path: 'scripts'
Примите во внимание, что если ваш диггер работает в облаке, при трансфере файлов в облачные хранилища и FTP используется квота на трафик, соответствующая вашему тарифному плану. К примеру, на бесплатном плане квота составляет 10 мегабайт в месяц. При достижении лимита, файлы перестанут сохраняться в облачном хранилище / FTP. Также файлы не будут сохраняться, если ваш диггер находится в режиме отладки.
Далее мы рассмотрим функции, предназначенные для работы с сайтами новостей и статьями.