Skip to content

Instantly share code, notes, and snippets.

@itsNikolay
Last active November 6, 2024 15:10
Show Gist options
  • Save itsNikolay/01c66e1b300de01ee97f20df39a8e78a to your computer and use it in GitHub Desktop.
Save itsNikolay/01c66e1b300de01ee97f20df39a8e78a to your computer and use it in GitHub Desktop.
https://turgenev.ashmanov.com/ API request for js, ruby
import fs from 'fs/promises';
import path from 'path';
import fetch from 'node-fetch';
import open from 'open';
const checkText = async (apiKey, apiType, text = null, url = null, tbclass = null, more = 0) => {
const uri = "https://turgenev.ashmanov.com/";
// Формируем параметры запроса
const params = new URLSearchParams({
api: apiType,
key: apiKey,
more,
...(text && { text }),
...(url && { url }),
...(tbclass && { tbclass }),
});
try {
// Выполняем POST-запрос с использованием fetch
const response = await fetch(uri, {
method: 'POST',
body: params,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
});
// Обработка ответа
if (!response.ok) {
throw new Error(`Ошибка сети: ${response.status} ${response.statusText}`);
}
const result = await response.json(); // Получаем JSON из ответа
console.log('Результат проверки:', JSON.stringify(result, null, 2));
if (result.error) {
console.error(`Ошибка: ${result.error}`);
} else {
console.log(`Ссылка: https://turgenev.ashmanov.com/?t=${result.link}`);
await open(`https://turgenev.ashmanov.com/?t=${result.link}`);
}
} catch (error) {
console.error(`Ошибка: ${error.message}`);
}
};
// Пример использования
const apiKey = 'KEY'; // Замените на ваш реальный API-ключ
const apiType = 'risk'; // Например, 'risk' или 'style'
// Укажите текст или URL, но не оба одновременно
const run = async () => {
const textFilePath = path.join(process.cwd(), 'text.txt'); // Путь к файлу text.txt
const text = (await fs.readFile(textFilePath, 'utf8')).replace(/\n/g, "<br />");
const url = null; // Например, "https://somesite.ru/nazvanie-razdela/stranica"
const tbclass = '.content'; // CSS-селектор для URL
const more = 1; // Установите 1 для детализированного ответа
await checkText(apiKey, apiType, text, url, tbclass, more);
};
run().catch(console.error);
// Использование:
// 1. создать файл text.txt с проверяемым текстом
// 2. запустить команду `node turgenev.js`
require 'net/http'
require 'uri'
require 'json'
def check_text(api_key, api_type, text: nil, url: nil, tbclass: nil, more: 0)
uri = URI("https://turgenev.ashmanov.com/")
# Формируем параметры запроса
params = {
'api' => api_type,
'key' => api_key,
'more' => more
}
params['text'] = text if text
params['url'] = url if url
params['tbclass'] = tbclass if tbclass
# Выполняем POST-запрос
response = Net::HTTP.post_form(uri, params)
# Обработка ответа
if response.is_a?(Net::HTTPSuccess)
result = JSON.parse(response.body)
if result['error']
puts "Ошибка: #{result['error']}"
else
puts "Результат проверки: #{result}"
# pretty_print(result)
puts JSON.pretty_generate(result)
puts "Ссылка: https://turgenev.ashmanov.com/?t=#{result['link']}"
system("open https://turgenev.ashmanov.com/?t=#{result['link']}")
end
else
puts "Ошибка сети: #{response.message}"
end
end
# Пример использования
api_key = 'YOUR_KEY'
# risk – «Общий риск»,
# frequency – «Повторы»,
# style – «Стилистика»,
# keywords – «Запросы»,
# formality – «Водность»,
# readability – «Удобочитаемость».
api_type = 'risk' # Например, 'risk' или 'style'
# Укажите текст или URL, но не оба одновременно
text = File.read('text.txt').gsub("\n", "<br />") # Например, 'text.txt'
url = nil # Например, "https://somesite.ru/nazvanie-razdela/stranica"
tbclass = '.content' # CSS-селектор для URL
more = 1 # Установите 1 для детализированного ответа
check_text(api_key, api_type, text: text, url: url, tbclass: tbclass, more: more)
# Использование%
# 1. создать файл text.txt с проверяемым текстом
# 2. запустить комманду `ruby turgenev.rb`
@itsNikolay
Copy link
Author

itsNikolay commented Nov 6, 2024

Результат запроса

{
  "link": "mbe04f51bd33874541f1ec305214c8721",
  "level": "средний",
  "details": [
    {
      "params": [
        {
          "value": "13.38",
          "name": "«Академическая тошнота»",
          "score": 2
        },
        {
          "value": "8.48",
          "name": "«Тошнота» словосочетаний",
          "score": 1
        },
        {
          "value": "6.40",
          "name": "«Классическая тошнота»",
          "score": 0
        },
        {
          "value": "Нет",
          "name": "Сверхчастые слова",
          "score": 0
        },
        {
          "value": "Нет",
          "name": "Сверхконцентрация «и»",
          "score": 0
        }
      ],
      "link": "dbe04f51bd33874541f1ec305214c8721",
      "block": "frequency",
      "sum": 3
    },
    {
      "params": [
        {
          "value": "0.01",
          "name": "Плотность стилистических проблем",
          "score": 0
        },
        {
          "value": 6,
          "name": "Количество стилистических проблем",
          "score": 0
        }
      ],
      "link": "sbe04f51bd33874541f1ec305214c8721",
      "block": "style",
      "sum": 0
    },
    {
      "params": [
        {
          "value": "0.27",
          "name": "Покрытие ключевыми словами",
          "score": 3
        }
      ],
      "link": "qbe04f51bd33874541f1ec305214c8721",
      "block": "keywords",
      "sum": 3
    },
    {
      "params": [
        {
          "value": "0.99",
          "name": "Доля содержательного текста",
          "score": 0
        },
        {
          "value": "0.42",
          "name": "Водность",
          "score": 0
        }
      ],
      "link": "fbe04f51bd33874541f1ec305214c8721",
      "block": "formality",
      "sum": 0
    },
    {
      "params": [
        {
          "value": "12.5",
          "name": "Индекс удобочитаемости ",
          "score": 0
        }
      ],
      "link": "rbe04f51bd33874541f1ec305214c8721",
      "block": "readability",
      "sum": 0
    }
  ],
  "risk": 6
}

Ссылка: https://turgenev.ashmanov.com/?t=xxxx

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment