Парсер ранобэ.рф — FB2 & TXT

Парсер текста форматах FB2 и TXT с страницы сайта ранобэ.рф в форматах FB2 и TXT

作者
Идзуми Сэна
日安装量
0
总安装量
3
评分
0 0 0
版本
0.121
创建于
2025-10-12
更新于
2025-10-12
大小
29.8 KB
许可证
暂无
适用于

Назначение

Скрипт предназначен для работы на сайте ранобэ.рф (кириллический домен) и предоставляет функционал для скачивания литературных произведений. Он позволяет пользователям извлекать полные метаданные, включая обложку, и контент глав, а затем компилировать их в единый файл формата FB2 или TXT для удобного чтения в оффлайн-режиме.


Ключевые функции

1. Продвинутый парсинг данных из JSON (__NEXT_DATA__)

  • Основной метод сбора данных: Ключевой особенностью скрипта является его способность парсить JSON-объект из тега <script id="__NEXT_DATA__">, который используется на сайтах, созданных с помощью фреймворка Next.js. Этот подход позволяет получить практически всю необходимую информацию о произведении (название, автор, аннотация, жанры, серия, дата публикации, URL обложки и полный список глав) одним действием, без необходимости сложного и хрупкого DOM-скрейпинга. Это делает сбор данных чрезвычайно быстрым и устойчивым к незначительным изменениям в верстке сайта.
  • Резервный DOM-парсинг: В качестве дополнения скрипт также анализирует видимые элементы страницы для извлечения информации, которая может отсутствовать в JSON, например, страна-производитель.

2. Управление состоянием и пользовательский интерфейс (UI)

  • Конечный автомат: Логика работы скрипта построена на основе конечного автомата (State), который управляет жизненным циклом от инициализации до генерации файла. Функция setState() централизованно переключает состояния и соответствующим образом обновляет интерфейс, блокируя или активируя элементы управления.
  • Интерактивная панель: Скрипт создает плавающую и перетаскиваемую панель управления (createUI()). Панель содержит все необходимые элементы: селекторы для выбора диапазона глав, поле для настройки задержки, опции очистки текста и управления кэшем.

3. Кэширование данных

  • Использование GM_setValue / GM_getValue: Скрипт реализует персистентное кэширование. После первой успешной инициализации все собранные метаданные и список глав сохраняются в хранилище UserScript с использованием URL книги в качестве ключа. При последующих посещениях страницы данные мгновенно загружаются из кэша, что устраняет необходимость повторных сетевых запросов. Пользователю доступны кнопки для принудительного обновления или полной очистки кэша.

4. Комплексная генерация FB2 с обложкой

  • generateFb2(...): Функция формирует высококачественный FB2-файл, включающий расширенный набор метаданных:
    • Несколько тегов <genre>.
    • Информацию о серии (<sequence>).
    • Дату публикации (<date>).
  • Встраивание обложки: Скрипт асинхронно загружает изображение обложки (getBase64Image), кодирует его в Base64 и встраивает непосредственно в FB2-файл в виде бинарного блока (<binary id="cover.jpg" ...>). Это обеспечивает полную автономность файла и корректное отображение обложки во всех читалках.

5. Управление процессом загрузки

  • processChapters(format): Основной цикл загрузки глав, построенный на async/await. Он итерируется по выбранному диапазону, загружая страницы с настраиваемой задержкой.
  • Возможность остановки: Реализована функция "мягкой" остановки. Пользователь может прервать процесс загрузки, и скрипт немедленно перейдет к генерации файла из уже скачанных глав, а не просто прекратит работу.

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

  1. Откройте страницу произведения или любой его главы на сайте ранобэ.рф.
  2. В правом верхнем углу появится панель управления. Нажмите кнопку «Инициализировать».
  3. Скрипт автоматически определит основную страницу произведения, соберет все данные и заполнит списки глав (при первом запуске это может занять несколько секунд, при последующих — данные будут загружены из кэша).
  4. Выберите начальную и конечную главы, настройте задержку и другие опции.
  5. Нажмите «Скачать FB2» или «Скачать TXT».
  6. Наблюдайте за прогрессом. В любой момент можно нажать «Остановить и скачать собранное».
  7. По завершении браузер автоматически предложит сохранить готовый файл.

Особенности

  • Современный подход к парсингу: Использование __NEXT_DATA__ является наиболее эффективным и надежным методом для сайтов на Next.js, что выгодно отличает этот скрипт.
  • Полноценный FB2: Генерация FB2-файла с полным набором метаданных и встроенной обложкой ставит его на один уровень с профессиональными конвертерами.
  • Персистентный кэш: В отличие от localStorage, хранилище GM_* обеспечивает более надежное и долговечное кэширование данных.
  • Гибкое управление: Возможность "мягкой" остановки, обновления и очистки кэша предоставляет пользователю полный контроль над процессом.
  • Универсальность: Скрипт корректно работает вне зависимости от того, открыта ли главная страница произведения или страница одной из его глав, автоматически находя нужный URL.

Пример выходных данных (FB2)

Фрагмент сгенерированного FB2-файла с обложкой и серией:

<?xml version="1.0" encoding="UTF-8"?>
<FictionBook xmlns="[http://www.gribuser.ru/xml/fictionbook/2.0](http://www.gribuser.ru/xml/fictionbook/2.0)" xmlns:l="[http://www.w3.org/1999/xlink](http://www.w3.org/1999/xlink)">
<description>
    <title-info>
        <genre>sf_fantasy</genre>
        <genre>love_roman</genre>
        <author><first-name>Имя Автора</first-name></author>
        <book-title>Название Произведения</book-title>
        <sequence name="Название Серии" />
        <lang>ru</lang>
        <annotation><p><b>Страна:</b> Корея</p>Текст аннотации...</annotation>
        <coverpage><image l:href="#cover.jpg"/></coverpage>
        <date value="2025-10-12">2025-10-12</date>
    </title-info>
    <document-info>
        <date value="2025-10-12">2025-10-12</date>
        <version>0.1</version>
    </document-info>
</description>
<body>
    <section><title><p>Глава 1</p></title><p>Текст главы...</p></section>
    </body>
<binary id="cover.jpg" content-type="image/jpeg">/9j/4AAQSkZJRgABAQEASABIAAD/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAAB... (длинная строка Base64)</binary>
</FictionBook>

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址