Пользовательский загрузчик
Пользовательская система загрузчика в ShareX позволяет пользователям загружать изображения/тексты/файлы на хостинг или сокращать/обмениваться URL. Эта функция в основном используется пользователями, которые размещают свои собственные услуги хостинга.
Вы можете экспортировать ваш пользовательский загрузчик с расширением .sxcu
, что позволит пользователям просто дважды щелкнуть по этому файлу, чтобы использовать пользовательский загрузчик.
Если тип назначения настроен, ShareX также может установить этот пользовательский загрузчик в качестве выбранного пользовательского загрузчика и изменить текущее место назначения на этот пользовательский загрузчик, поэтому пользователям не потребуется дополнительная настройка для его использования.
В списке пользовательских загрузчиков будет использоваться это имя. Поле "Имя" является необязательным. Если оставить его пустым, ShareX будет автоматически использовать домен URL запроса в качестве имени. Рекомендуется оставить поле имени пустым, если у вас нет нескольких загрузчиков, использующих один и тот же домен.
Например, если URL запроса https://example.com/upload.php
и поле name пустое, то в списке пользовательских загрузчиков будет использовано имя example.com.
Тип назначения используется, когда пользователи импортируют пользовательский загрузчик, дважды щелкнув по файлу .sxcu.
Список доступных методов HTTP-запросов:
Если запрос не имеет тела и будут использоваться только параметры, то предпочтительнее использовать метод GET
. Если тело запроса содержит данные формы (multipart/form-data)
, то предпочтительнее метод POST
.
Запрос будет отправлен на этот URL.
Пример: https://example.com/upload.php
Параметры будут использоваться для создания строки запроса URL.
Для загрузчика текста или сократителя URL в качестве значения можно использовать синтаксис {input}
для ввода текста или URL.
Вы также можете использовать динамические значения, например %mo
, чтобы получить текущий месяц и т. д.
Например, если вы зададите такие параметры:
Имя | Значение |
---|---|
api_key | eUM14R4g4pMS |
частный | правда |
Тогда при отправке запроса строка запроса будет добавлена к URL-адресу следующим образом:
https://example.com/upload.php?api_key=eUM14R4g4pMs&private=true
Заголовки могут использоваться для передачи дополнительной информации при запросе. Чаще всего API используют заголовки для авторизации.
Заголовки запроса по умолчанию тоже можно переопределить, например, так:
Пример базовой аутентификации доступа:
Имя | Значение |
---|---|
Авторизация | Basic {base64:USERNAME:PASSWORD} |
Пример ключа API:
Имя | Значение |
---|---|
api_key | eUM14R4g4pMS |
Поддерживаемые типы тел запросов:
Чаще всего, если метод запроса API - GET
, то с параметрами используется тело No body
. Если метод запроса - POST
, то используется
тело формы (multipart/form-data)
. Но это не всегда так, поэтому вы должны проверить документацию API, чтобы убедиться, что ожидает запрос.
Для загрузчика текста или сократителя URL в качестве значения можно использовать синтаксис {input}
для ввода текста или URL.
Это поле может использоваться только в том случае, если Body
- это данные формы (multipart/form-data)
.
Например, в этом HTML-коде: <input type="file" name="file_image">
имя формы файла - file_image
.
Эти текстовые поля можно использовать для разбора ответа, чтобы получить результат в виде URL. Если ответ содержит только URL, то в текстовое поле URL ничего писать не нужно.
Не забудьте также разобрать сообщение об ошибке, чтобы ShareX мог показать пользователям удобное сообщение об ошибке.
Существует специальный синтаксис, который можно использовать для выполнения некоторых задач, например, для разбора URL из ответов JSON.
Этот синтаксис используется в следующих разделах, за некоторыми исключениями:
Например, синтаксис, включающий разбор ответа, можно использовать только в разделах URL, как и ожидалось.
Примечание: Если вы хотите использовать {
, }
, |
или \
символы в любой из поддерживаемых синтаксисом секций, вы можете экранировать их с помощью \
символа. Например: \{
Список всех доступных синтаксисов с примерами использования вы найдете внизу.
Если ответ содержит только имя файла (или id) и вы хотите добавить его к домену, то можете использовать этот синтаксис.
Но если ответ содержит только полный URL, то вам не нужно использовать этот синтаксис, потому что пустое текстовое поле URL будет использовать ответ автоматически.
Синтаксис:
{response}
Пример URL:
https://example.com/{response}
Может использоваться для получения URL перенаправления. Если перенаправления не произошло, то это будет просто URL запроса.
Syntax:
{responseurl}
Example URL:
{responseurl}
Can be used to get specific response header value.
Syntax:
{header:name}
Example URL:
{header:location}
You can use JsonPath to parse URL from JSON response.
Syntax:
{json:jsonPath}
{json:input|jsonPath}
Example:
{
"status": 200,
"data": {
"link": "https:\/\/example.com\/image.png"
}
}
{json:data.link}
Example 2:
{
"success": true,
"files": [
{
"name": "image.png",
"url": "https://example.com/image.png"
}
]
}
{json:files[0].url}
You can use XPath to parse URL from XML response.
Syntax:
{xml:xpath}
{xml:input|xpath}
Example:
<?xml version="1.0" encoding="UTF-8"?>
<files>
<file>
<name>image.png</name>
<url>https://example.com/image.png</url>
</file>
</files>
{xml:/files/file[1]/url}
If response is not JSON or XML then you can use Regular expression (Regex) to parse response text.
While writing regex pattern don't forget to escape {
, }
, |
, \
characters with \
.
Syntax:
{regex:regexPattern}
{regex:regexPattern|groupIndex}
{regex:regexPattern|groupName}
{regex:input|regexPattern|groupIndex}
{regex:input|regexPattern|groupName}
Example:
{regex:(?<=href=").+(?=")}
Example with group index:
{regex:href="(.+)"|1}
Example with group name:
{regex:href="(?<url>.+)"|url}
If you are using text custom uploader then this syntax will be replaced with text which you gonna upload, if it is URL shortener or URL sharing service then syntax will be replaced with URL. This syntax mainly used as argument value.
Syntax:
{input}
Example argument:
Name | Value |
---|---|
text | {input} |
This syntax will be replaced with file name. Most of the time you don't need to use this syntax because when doing multipart/form-data file upload, file name already included in request.
Syntax:
{filename}
Example argument:
Name | Value |
---|---|
title | {filename} |
If you would like to use random domain each upload you can use this syntax.
Syntax:
{random:value1|value2|value3}
Example URL:
https://{random:subdomain1|subdomain2}.{random:domain1|domain2|domain3}.com/{json:files[0].url}
This will show window with all values as buttons. So you can select dynamically which text input to use. This syntax can be useful if you have multiple domains and would like to select specific domain each upload.
Syntax:
{select:value1|value2|value3}
Example URL:
https://{select:domain1.com|domain2.com|domain3.com}/{json:files[0].url}
This will show input box for user to input text. This syntax can be used if user prefer to write different value for argument or URL part each upload.
First parameter is window title, second parameter is default text for input box. Both parameter is optional.
Syntax:
{inputbox}
{inputbox:title}
{inputbox:title|default text}
Example URL:
https://{inputbox:Input subdomain|i}.example.com/{json:files[0].url}
Encode text to Base64.
Syntax:
{base64:text}
Example header:
Name | Value |
---|---|
Authorization | Basic {base64:username:password} |
ShareX custom uploader (SXCU) files are JSON files at their core.
Example JSON schema looks like this:
{
"Version": "14.0.0",
"Name": "Example",
"DestinationType": "ImageUploader, TextUploader, FileUploader",
"RequestMethod": "POST",
"RequestURL": "https://example.com/upload.php",
"Parameters": {
"Parameter1": "Value1",
"Parameter2": "Value2",
"Parameter3": "Value3"
},
"Headers": {
"Header1": "Value1",
"Header2": "Value2",
"Header3": "Value3"
},
"Body": "MultipartFormData",
"Arguments": {
"Argument1": "Value1",
"Argument2": "Value2",
"Argument3": "Value3"
},
"FileFormName": "file",
"URL": "{json:url}",
"ThumbnailURL": "{json:thumbnail_url}",
"DeletionURL": "{json:deletion_url}",
"ErrorMessage": "{json:error}"
}
Enums: