Esquema de Entrada
O Scrapeless lê o arquivo INPUT_SCHEMA.json
localizado no diretório raiz do projeto e gera automaticamente uma interface de usuário com base neste arquivo para inserir os parâmetros necessários pelo Actor. Isso simplifica a configuração para desenvolvedores e torna as opções de entrada mais acessíveis para não desenvolvedores.
Principais propósitos:
- Validação de Entrada Usado para garantir que os dados passados para o Actor estejam conformes à estrutura predefinida e às regras de validação, melhorando a estabilidade e confiabilidade durante a execução.
- Geração de IU A plataforma gera automaticamente uma interface de configuração gráfica com base no esquema de entrada, facilitando para os usuários preencher e gerenciar os parâmetros de entrada.
- Suporte de Integração O Scrapeless pode gerar automaticamente código de invocação e conectores com base no esquema de entrada, simplificando como os sistemas externos chamam e se integram ao Actor.
Esquema de Entrada define os parâmetros de entrada para um Actor. É um objeto JSON composto por vários tipos de campo suportados pela plataforma Scrapeless. Com base no Esquema de Entrada, o Scrapeless analisa automaticamente os parâmetros e gera uma interface de usuário correspondente.
Abaixo está uma IU gerada a partir de um Esquema de Entrada.
A definição do Esquema de Entrada é a seguinte:
{
"title": "Google Trends Input",
"type": "object",
"required": [
"q",
"data_type"
],
"properties": {
"q": {
"title": "Search Query",
"description": "Parameter defines the query or queries you want to search. You can use anything that you would use in a regular Google Trends search. The maximum number of queries per search is 5 (this only applies to `interest_over_time` and `compared_breakdown_by_region` data_type, other types of data will only accept 1 query per search).",
"type": "string",
"default": "Mercedes-Benz,BMW X5"
},
"data_type": {
"title": "Data Type",
"description": "The supported types are: `autocomplete`,`interest_over_time`,`compared_breakdown_by_region`,`interest_by_subregion`,`related_queries`,`related_topics`.",
"type": "string",
"default": "interest_over_time",
"enum": [
{
"label": "Auto complete",
"value": "autocomplete"
},
{
"label": "Interest over time",
"value": "interest_over_time"
},
{
"label": "Compared breakdown by region",
"value": "compared_breakdown_by_region"
},
{
"label": "Interest by region",
"value": "interest_by_subregion"
},
{
"label": "Related queries",
"value": "related_queries"
},
{
"label": "Related topics",
"value": "related_topics"
}
]
},
"date": {
"title": "Date",
"description": "The supported dates are: `now 1-H`, `now 4-H`, `now 1-d`, `now 7-d`, `today 1-m`, `today 3-m`, `today 12-m`, `today 5-y`, `all`.\n\nYou can also pass custom values:\n\nDates from 2004 to present: `yyyy-mm-dd yyyy-mm-dd` (e.g. `2021-10-15 2022-05-25`)\nDates with hours within a week range: `yyyy-mm-ddThh yyyy-mm-ddThh` (e.g. `2022-05-19T10 2022-05-24T22`). Hours will be calculated depending on the tz (time zone) parameter.",
"type": "string",
"default": "today 1-m"
},
"hl": {
"title": "Language",
"description": "Parameter defines the language to use for the Google Trends search. It's a two-letter language code. (e.g., `en` for English, `es` for Spanish, or `fr` for French).",
"type": "string",
"default": "en"
},
"tz": {
"title": "Time Zone",
"description": "time zone offset. default is `420`.",
"type": "string",
"default": "420"
}
// ...
}
}
Os dados do objeto de entrada transmitidos na interface da IU são os seguintes:
{
"q": "Mercedes-Benz,BMW X5",
"data_type": "interest_over_time",
"date": "today 1-m",
"hl": "en",
"tz": "420",
"geo": "",
"cat": "",
"property": "",
"is_return_raw_html": "1"
}
A seguir, vamos aprender mais sobre as especificações relevantes do Esquema de Entrada.
Especificação
Estrutura
{
"title": "Title",
"type": "object",
"required": [], // Quais campos são obrigatórios
"properties": {} // defina os campos de entrada aqui
}
Propriedade | Tipo | Obrigatório | Descrição |
---|---|---|---|
title | String | Sim | Qualquer texto para descrever seu esquema de entrada. |
type | String | Sim | Este é um valor fixo, sempre “object”. |
required | String | Sim | Uma matriz de strings, cada string é o nome de uma propriedade obrigatória. |
properties | String | Sim | Um objeto, as chaves são os nomes das propriedades, os valores são as definições das propriedades. |
Campos
Cada campo inserido precisa ser definido como propriedades. Os campos podem ter tipos inteiro, string, array, booleano, objeto e outros. Os detalhes são os seguintes:
Propriedade | Valor | Obrigatório | Descrição |
---|---|---|---|
type | Um dos integer , string , array , boolean , object | Sim | As restrições do tipo de campo não podem ser misturadas. |
title | String | Sim | Título do campo |
description | String | Sim | As descrições dos campos são exibidas como texto de ajuda na IU. Você pode usar o formato Markdown para escrever essas descrições. |
default | Consistente com type | Não | Valor padrão do campo |
unit | String | Não | Unidade de exibição do campo |
minimum | Number | Não | Valor mínimo do campo |
maximum | Number | Não | Valor máximo do campo |
enum | Array | Não | Valores de enumeração de campo (opções de enum) |
Exemplos de Renderização
String
Exemplo de Entrada: Definimos um campo de entrada padrão com as seguintes propriedades: o tipo é string
, o título é Nome de Usuário
, a descrição é Nome de Usuário é o nome de usuário do usuário
, o valor padrão é Sou um valor padrão
e o comprimento máximo é 20
.
{
"title": "Test Input",
"type": "object",
"required": [
"username"
],
"properties": {
"username": {
"title": "Username",
"description": "Username is the username of the user",
"type": "string",
"default": "I'm a default value",
"maximum": 20
}
}
}
Resultado da renderização:
Exemplo de seleção de país:
Neste exemplo, definimos um campo de entrada de seleção de país. Seu tipo é string
, o valor padrão é china
e uma enumeração de valores possíveis é fornecida.
{
"title": "Test Input Select",
"type": "object",
"required": [
"country"
],
"properties": {
"country": {
"title": "Country",
"type": "string",
"description": "Country selection",
"default": "china",
"enum": [
{
"label": "China",
"value": "china"
},
{
"label": "United States",
"value": "usa"
},
{
"label": "United Kingdom",
"value": "uk"
}
]
}
}
}
Resultado da renderização:
Integer
Exemplo:
No esquema abaixo, o tipo de entrada é restrito a integer
, com valores máximo e mínimo definidos.
{
"title": "Test Input Number",
"type": "object",
"required": [
"age"
],
"properties": {
"age": {
"title": "Age",
"type": "integer",
"description": "Age is the age of the user",
"default": 18,
"minimum": 12,
"maximum": 100
}
}
}
Resultado da renderização:
Boolean
Exemplo:
No exemplo abaixo, o tipo de entrada é restrito a boolean
e seu valor padrão é definido como true
.
{
"title": "Test Input Boolean",
"type": "boolean",
"required": [
"print_log"
],
"properties": {
"print_log": {
"title": "Print Log",
"type": "boolean",
"description": "Print Log is the print log of the user",
"default": true
}
}
}
Resultado da renderização:
Array
Exemplo:
No exemplo abaixo, o tipo de entrada é restrito a array
e um valor padrão é fornecido.
{
"title": "Test Input Array",
"type": "array",
"required": [
"user_tags"
],
"properties": {
"user_tags": {
"title": "User Tags",
"type": "array",
"description": "User Tags is the tags of the user",
"default": [
"user",
"admin"
]
}
}
}
Resultado da renderização:
Object
Exemplo:
No exemplo abaixo, o tipo de entrada é restrito a object
e um valor padrão é fornecido.
{
"title": "Test Input Object",
"type": "object",
"required": [
"user_info"
],
"properties": {
"user_info": {
"title": "User Info",
"type": "object",
"description": "User Info is the info of the user",
"default": {
"name": "John Doe",
"age": 20,
"email": "john.doe@example.com"
}
}
}
}
Resultado da renderização: