Напиши расширение для турбоварп где будет через лю...

Создано: 16 августа 2025 г.

Отвечено с использованием GPT-4o от Chat01

Вопрос

Напиши расширение для турбоварп где будет через любое апи поиска без подписок токенов и тд отдавать json по запросу (блок (json по запросу (запрос)))

Ответ

Вот пример расширения для TurboWarp, реализующего блок json по запросу (запрос) с использованием свободного API, которое не требует токена, подписки или регистрации. Мы будем использовать открытое API, например DuckDuckGo Instant Answer API, которое отдаёт JSON по запросу.


🧩 Расширение TurboWarp: JSON по запросу

📦 Что делает

Добавляет блок:

(json по запросу [запрос])

Который возвращает JSON-ответ на основе строки запроса.

✅ Преимущества

  • Без токена и подписки
  • Работает через DuckDuckGo API (или другой открытый)
  • Прост в использовании

📄 Код расширения

javascript
class JsonSearchExtension { getInfo() { return { id: 'jsonSearch', name: 'JSON Поисковик', blocks: [ { opcode: 'getJson', blockType: Scratch.BlockType.REPORTER, text: 'json по запросу [QUERY]', arguments: { QUERY: { type: Scratch.ArgumentType.STRING, defaultValue: 'котики', }, }, }, ], }; } async getJson(args) { const query = encodeURIComponent(args.QUERY.trim()); const url = `https://api.duckduckgo.com/?q=${query}&format=json&no_redirect=1&no_html=1`; try { const response = await fetch(url); if (!response.ok) throw new Error(`Ошибка: ${response.status}`); const data = await response.json(); // Возврат в виде JSON-строки (ограничено Scratch) return JSON.stringify(data); } catch (error) { return `Ошибка: ${error.message}`; } } } Scratch.extensions.register(new JsonSearchExtension());

🚀 Как использовать

  1. Перейди в TurboWarp Editor.
  2. Открой «Расширения» → «Загрузить расширение по URL» и вставь ссылку на этот файл (нужно разместить его где-то, например на GitHub Pages или RawGit).
  3. Используй блок json по запросу (что-то) — он вернёт строку с JSON-ответом.

🛠 Примеры запросов

  • котики
  • погода в Москве
  • кто такой Эйнштейн

⚠️ Ограничения

  • API DuckDuckGo отдаёт полезную информацию, но не всегда структурировано.
  • Scratch/TurboWarp не может напрямую парсить JSON в поля — нужно парсить вручную через блоки.

Хочешь, чтобы я добавил поддержку разбора JSON прямо в блоки (например, доставал поле AbstractText или RelatedTopics)?

Вопрос

faled of fetch

Ответ

Если у тебя не работает fetch (получаешь ошибку failed to fetch), возможные причины:


🧩 Возможные причины ошибки failed to fetch

1. TurboWarp блокирует fetch

  • TurboWarp ограничивает доступ к небезопасным или не CORS-совместимым API.
  • DuckDuckGo API (https://api.duckduckgo.com) не поддерживает CORS, и не будет работать в браузере напрямую.

🔧 Решение:

  • Используй прокси-сервер с CORS.
  • Или выбери другое открытое API, поддерживающее CORS.

✅ Альтернатива с CORS: API https://api.publicapis.org/entries

Это открытый API со списком публичных API. Поддерживает CORS, работает без токена.

Обновлённый код:

javascript
class JsonSearchExtension { getInfo() { return { id: 'jsonSearch', name: 'JSON Поисковик', blocks: [ { opcode: 'getJson', blockType: Scratch.BlockType.REPORTER, text: 'json по запросу [QUERY]', arguments: { QUERY: { type: Scratch.ArgumentType.STRING, defaultValue: 'cat', }, }, }, ], }; } async getJson(args) { const query = encodeURIComponent(args.QUERY.trim()); const url = `https://api.publicapis.org/entries?title=${query}`; try { const response = await fetch(url); if (!response.ok) throw new Error(`Ошибка: ${response.status}`); const data = await response.json(); return JSON.stringify(data.entries.slice(0, 3)); // Ограничим до 3 результатов } catch (error) { return `Ошибка: ${error.message}`; } } } Scratch.extensions.register(new JsonSearchExtension());

🧪 Пример запроса

  • cat
  • weather
  • news

📥 Хочешь API без прокси?

Можно использовать https://api.dictionaryapi.dev/ — тоже не требует токена и работает с CORS.

Хочешь, чтобы я переписал код под этот словарь API или другой, безопасный для использования?

Поделиться этим Q&A