您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Извлекает главы с royalroad.com и сохраняет их в FB2 или TXT
Скрипт предназначен для сбора и сохранения произведений (fiction) с литературного портала royalroad.com
. Он встраивает на страницу кастомный пользовательский интерфейс, который позволяет пользователю выбрать диапазон глав, загрузить их содержимое и скомпилировать в единый файл для офлайн-чтения в форматах FB2 (FictionBook) или TXT (простой текст).
Инициализация и кэширование (initialize
):
parseBookInfo
для извлечения информации: название, автор, аннотация, жанры и, что особенно важно, полный список глав.GM_setValue
), используя URL произведения в качестве ключа. При последующих посещениях этой же страницы данные мгновенно загружаются из кэша (GM_getValue
), что значительно ускоряет работу и снижает количество сетевых запросов. Предусмотрены кнопки для принудительного обновления и полной очистки кэша.Парсинг данных (parseBookInfo
, parseChaptersFromScript
):
cleanAnnotationHtml
для удаления лишних тегов и атрибутов.<script>
, содержащий JavaScript-объект window.chapters
. С помощью регулярного выражения из этого объекта извлекается JSON-массив со всеми главами, их названиями и URL. Этот подход является чрезвычайно эффективным и надежным.Обработка и сбор глав (processChapters
):
GM_xmlhttpRequest
.div.chapter-content
проходит тщательную очистку функцией cleanupHtml
. Эта функция удаляет все ненужные элементы (рекламу, навигацию, комментарии, заметки автора), а также "разворачивает" теги <span>
и удаляет лишние атрибуты (class
, id
, style
), оставляя только чистое форматирование (теги <p>
).Генерация файлов (generateFb2
, generateTxt
):
<description>
метаданными (название, автор, жанры, аннотация) и формирует тело книги (<body>
), где каждая глава представлена в виде отдельной секции (<section>
).Пользовательский интерфейс (UI) и управление состоянием:
makeDraggable
).State Machine
) для управления логикой работы. В зависимости от текущего состояния (например, IDLE
, PROCESSING
, GENERATING
), элементы интерфейса (кнопки, селекторы) автоматически блокируются или разблокируются, а пользователю выводится актуальная информация о ходе процесса.royalroad.com
(например, https://www.royalroad.com/fiction/12345/some-title
).window.chapters
для получения списка глав является главным техническим преимуществом. Это избавляет от необходимости постраничной загрузки и парсинга таблицы, делая инициализацию почти мгновенной.cleanupHtml
использует четкий список селекторов для удаления всех посторонних элементов, что обеспечивает высокое качество и чистоту итогового файла, свободного от "мусора".GM_*
API для сохранения данных о книге между сессиями — отличная практика, которая повышает удобство использования скрипта для часто скачиваемых произведений.Фрагмент структуры генерируемого 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>fantasy</genre>
<genre>adventure</genre>
<author><nickname>Some Author</nickname></author>
<book-title>Title of The Book</book-title>
<annotation><p>The annotation text goes here, properly formatted.</p></annotation>
<lang>en</lang>
</title-info>
<document-info>
<date value="2025-10-14">2025-10-14</date>
<version>0.1</version>
</document-info>
</description>
<body>
<section>
<title><p>Chapter 1: The Beginning</p></title>
<p>First paragraph of the chapter.</p>
<p>Second paragraph of the chapter.</p>
</section>
<section>
<title><p>Chapter 2: A New Path</p></title>
<p>Content of the second chapter...</p>
</section>
</body>
</FictionBook>
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址