d818d1758f
* beta host * Refactor: url -> path (#757) * refactor: url -> path * clean up * fix: json branch * PagePlugin (#769) * paginated novel support * fix: truyenfull * fix: tunovel, remove pageList * parsePage support for webtest (#773) * add parsePage api * add parsePage UI * add totalPages * (FR src) Beta plugin & Added filters (#775) * noveldeglace: - added filters - added latest - defaultCover fallback - change id to noveldeglace.com - added complementary infos in summary - added cover artist - chapters are now parts - show volume number for multi volume novels - better search - fix search page number - refactored for plugin beta - releaseDate as Date.toString() - separted parseNovels - separated getCheerio - loadedCheerio => $ for shorter lines & simpler test on web * chireads: - fix different parsing for mobile version - added filters - added author - added status - added released date - refactored for plugin beta - separted parseNovels - separated getCheerio - loadedCheerio => $ for shorter lines & simpler test on web * wpmangastream => lightnovelwp rework & new sources (#776) * Added sources: - Knoxt (EN) - Baca Light Novel (ID) - AllNovelRead (ES) - DaoTranslate (EN) - جنة الروايات (AR) - Universal Novel (EN) - NovelTR (TR) old sources auto-generated: - GenesisTls (EN) - NobleMTL (EN) wpmangastream => lightnovelwp: - added doc - added filters in a separte file - semi-automatic filter generator - made it compatible with version 1.0.X and 1.1.X versions of the theme - loadedCheerio => $ - icons in "/icons/lightnovel/id.png" - code cleanup * removed auto-implemented sources * Added README.md to lightnovelwp * removed ai generated text for kolnovel * added novelsknight * added centralNovel * pandamtl accual name * adding folder plugin/arabic * Fix: Vietnamese plugins (#777) * fix: lightnovelvn * add nettruyen * add truyenchu * fix: truyenconect * Fix: Migrate plugins (#771) * Add novel.ovh (#756) * fix * test * fix * date fix + master merge (#761) * date fix * Added Brazilian Portuguese E-Novel (#758) * fixed single digit dates (#767) Co-authored-by: NaddH1 <naderhorani@hotmail.com> * fix * test * fix order * Update renovels.ts * require_chapters * Delete plugins/english/genesistl.broken.ts * Update novelTL.ts --------- Co-authored-by: NaddH1 <naderhorani@hotmail.com> * (src update) ENG (#772) * allnovelfull * bestlightnovel * divinedaolibrary * earlynovel * lightnovelpub * L * M * novelbin * novelfull * novelbuddy * N S * novel updates * async sleep * rename file * pagePlugin * Feat: minify js dir (#781) * Multisrc: HotNovelPub (#784) * HotNovelPub * fix search * Squashed commit of the following: commit 3b759c68eddc06c0adfb959f775de069a85adca7 Author: nyagami <hoangquan05112002@gmail.com> Date: Sat Feb 17 20:33:47 2024 +0700 Feat: minify js dir (#781) * jsmin changed to terser * test * why I did it. * test * Update ranobelib.ts * fix page * Update ranobelib.ts * updated modules * Update terser.json Co-authored-by: nyagami <hoangquan05112002@gmail.com> * Update scripts/multisrc/hotnovelpub/template.ts Co-authored-by: nyagami <hoangquan05112002@gmail.com> * terser api --------- Co-authored-by: nyagami <hoangquan05112002@gmail.com> * Added sources & fix sources (#787) * lightnovelwp: - fix author name - added more localisation of strings - README typo - error on !r.ok new message * noveldeglace: - fix chapterNumber for parts - better dates - better search * Added sources: - White Moonlight Novels (EN) - System Translation (EN) * Resized centralnovel.png * Add Faqwiki.us source (#792) * Add Faqwiki.us source (beta branch) * Fix Path, Fix Chapter Parsing, Fix Novel Title * search novel path fix * fix chapter parsing. some chapter in this site store their whole text in 1-4 <p>, * Add WTR-LAB Source (#797) * Add WTR-LAB Source (Beta Branch) * Add other language from WTR-LAB source * change lang to sourceLang * remove id es tr lang from WTR-LAB * Update plugins/english/wtrlab.ts agree Co-authored-by: nyagami <hoangquan05112002@gmail.com> * Update plugins/english/wtrlab.ts agree Co-authored-by: nyagami <hoangquan05112002@gmail.com> --------- Co-authored-by: nyagami <hoangquan05112002@gmail.com> * revert: scripts to master --------- Co-authored-by: Justin COLLON <48163201+error7404@users.noreply.github.com> Co-authored-by: Rider21 <58046032+Rider21@users.noreply.github.com> Co-authored-by: NaddH1 <naderhorani@hotmail.com> Co-authored-by: K1ngfish3r <trulyihu@gmail.com> Co-authored-by: bregassa <bregas.sat1@gmail.com>
363 lines
20 KiB
HTML
363 lines
20 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<link rel="shortcut icon" sizes="128x128" type="image/png" href="/static/ico.png" defer />
|
|
<link rel="stylesheet" href="/static/css/bootstrap.min.css">
|
|
<link rel="stylesheet" href="/static/css/mdb5.css">
|
|
<link rel="stylesheet/less" type="text/css" href="/static/css/index.less" />
|
|
<link rel="stylesheet/less" type="text/css" href="/static/css/accordion.less" />
|
|
<script src="/static/js/less.js"></script>
|
|
<script src="static/md5Themes/themes.js"></script>
|
|
<script src="/static/js/jquery.min.js"></script>
|
|
<script src="/static/js/html-sanitize.js" defer></script>
|
|
<script src="/static/js/bootstrap.min.js" defer></script>
|
|
<script src="/static/js/mdb5.js" defer></script>
|
|
<script src="/static/js/accordion.js" defer></script>
|
|
<script src="/static/js/index.js" defer></script>
|
|
<title>Testing plugin</title>
|
|
</head>
|
|
|
|
<body class="darkmode">
|
|
<nav class="navbar">
|
|
<form class="form-inline">
|
|
<input id="plugin" class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
|
|
<button class="btn btn-outline-success my-2 my-sm-0" type="button" id="clear-search">Clear</button>
|
|
<div id="search-results">
|
|
<div id="turnoff-catch"></div>
|
|
</div>
|
|
<div id="loadedplugin"></div>
|
|
</form>
|
|
<div class="input-group">
|
|
<div class="input-group-append">
|
|
<label class="input-group-text" for="language">Language</label>
|
|
</div>
|
|
<select class="custom-select" id="language">
|
|
<option value="">Any</option>
|
|
</select>
|
|
</div>
|
|
<button class="btn btn-secondary" id="darkstyletoggle" style="float:left;" onclick="toggleDarkMode(this)">Light
|
|
mode</div>
|
|
<script>
|
|
const toggleDarkMode = (btn) => {
|
|
if (document.body.classList.contains("darkmode")) {
|
|
document.body.classList.remove("darkmode");
|
|
btn.innerText = "Dark mode";
|
|
} else {
|
|
document.body.classList.add("darkmode")
|
|
btn.innerText = "Light mode";
|
|
}
|
|
}
|
|
</script>
|
|
</nav>
|
|
<div id="test-container">
|
|
<main-accordion class="accordion tests-accordion">
|
|
<accordion-box class="accordion-box" id="headerChanger" collapsed>
|
|
<accordion-header>
|
|
Headers
|
|
</accordion-header>
|
|
<accordion-content>
|
|
<div id="headerinfos">
|
|
<div class="headerinfo" data-headername="User-Agent">
|
|
<span class="headername">User-Agent</span><b>:</b>
|
|
<span class="headervalue"></span>
|
|
</div>
|
|
<div class="headerinfo">
|
|
<span class="headername">Cookie</span><b>: </b>
|
|
<span class="headervalue" contenteditable="true"></span>
|
|
</div>
|
|
</div>
|
|
<button id="addheaderbtn" class="btn-secondary pl-1 pr-1">Add header</button>
|
|
<button id="copyascode" class="btn-secondary pl-1 pr-1">Copy as code</button>
|
|
<div id="headersnotcopied">Remember to copy the headers into the plugin file after changing them!
|
|
</div>
|
|
<div id="headerscopied" display="none">Copied</div>
|
|
</accordion-content>
|
|
</accordion-box>
|
|
<accordion-box id="popularNovels" collapsed>
|
|
<accordion-header>
|
|
popularNovels
|
|
</accordion-header>
|
|
<accordion-content>
|
|
<div style="display: inline-block;" class="modal-container">
|
|
<button id="filters-btn" type="button" class="btn btn-primary" data-toggle="modal"
|
|
data-target="#filtersModal">
|
|
Filters
|
|
</button>
|
|
<div class="modal fade" id="filtersModal" tabindex="-1" role="dialog"
|
|
aria-labelledby="filtersModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="filterModalLabel">Filters</h5>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary"
|
|
data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="inline-container fetch-btn">
|
|
<button type="button" class="btn btn-primary popularNovels-btn">fetch</button>
|
|
</div>
|
|
<div class="inline-container page-select">
|
|
<select>
|
|
<option>1</option>
|
|
</select>
|
|
<span class="page-the-same-warn"></span>
|
|
</div>
|
|
<div class="inline-slider-checkbox">
|
|
<label>
|
|
<input type="checkbox" id="latest-switch" />
|
|
<span>Popular</span>
|
|
</label>
|
|
</div>
|
|
<div class="spinner-border" role="status">
|
|
<span class="sr-only">Loading...</span>
|
|
</div>
|
|
<div class="novel-list">
|
|
</div>
|
|
</accordion-content>
|
|
</accordion-box>
|
|
<accordion-box id="searchNovels" collapsed>
|
|
<accordion-header>
|
|
searchNovels
|
|
</accordion-header>
|
|
<accordion-content>
|
|
<div class="searchbar">
|
|
<div class="input-group">
|
|
<input type="text" class="form-control" placeholder="searchTerm">
|
|
<div class="input-group-append fetch-btn">
|
|
<button class="btn btn-primary searchNovels-btn" type="button">search</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="inline-container page-select">
|
|
<select>
|
|
<option>1</option>
|
|
</select>
|
|
<span class="page-the-same-warn"></span>
|
|
</div>
|
|
<div class="spinner-border" role="status">
|
|
<span class="sr-only">Loading...</span>
|
|
</div>
|
|
<div class="novel-list">
|
|
</div>
|
|
</accordion-content>
|
|
</accordion-box>
|
|
<accordion-box id="parseNovel" collapsed>
|
|
<accordion-header>
|
|
parseNovel (and first page)
|
|
</accordion-header>
|
|
<accordion-content>
|
|
<div class="input-group">
|
|
<input type="text" class="form-control" placeholder="novel path" id="parse-novel-path">
|
|
<div class="input-group-append">
|
|
<button class="btn btn-primary parseNovel-btn" type="button"
|
|
id="parse-novel-btn">fetch</button>
|
|
</div>
|
|
</div>
|
|
<div class="spinner-border" role="status">
|
|
<span class="sr-only">Loading...</span>
|
|
</div>
|
|
<div class="parsed-novel-info">
|
|
<div class="novel-item">
|
|
</div>
|
|
<div class="chapter-list-container">
|
|
<div class="chapter-list">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</accordion-content>
|
|
</accordion-box>
|
|
<accordion-box id="parsePage" class="d-none" collapsed>
|
|
<accordion-header>
|
|
parsePage
|
|
</accordion-header>
|
|
<accordion-content>
|
|
<div class="input-group">
|
|
<input type="text" class="form-control w-75" placeholder="novel path" id="parse-page-novel-path">
|
|
<input type="text" class="form-control w-25" placeholder="page" id="parse-page-index">
|
|
<div class="input-group-append">
|
|
<button class="btn btn-primary parsePage-btn" type="button"
|
|
id="parse-page-btn">fetch</button>
|
|
</div>
|
|
</div>
|
|
<div class="spinner-border" role="status">
|
|
<span class="sr-only">Loading...</span>
|
|
</div>
|
|
<div class="parsed-page-info">
|
|
<div class="latest-chapter-item">
|
|
</div>
|
|
<div class="chapter-list-container">
|
|
<div class="chapter-list">
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</accordion-content>
|
|
</accordion-box>
|
|
<accordion-box id="parseChapter" collapsed>
|
|
<accordion-header>
|
|
parseChapter
|
|
</accordion-header>
|
|
<accordion-content>
|
|
<div class="input-group">
|
|
<input type="text" class="form-control" placeholder="chapter path" id="chapter-parse-path">
|
|
<div class="input-group-append">
|
|
<button class="btn btn-primary parseChapter-btn" type="button"
|
|
id="chapter-parse-btn">fetch</button>
|
|
</div>
|
|
</div>
|
|
<div id="preview-toggler">
|
|
<div class="slider-checkbox">
|
|
<label>
|
|
<input type="checkbox" id="raw-preview-switch" />
|
|
<span>Raw</span>
|
|
</label>
|
|
</div>
|
|
<div class="slider-checkbox">
|
|
<label>
|
|
<input type="checkbox" id="sanitize-preview-html" />
|
|
<span>Sanitized HTML</span>
|
|
</label>
|
|
</div>
|
|
<div id="scaled-info"></div>
|
|
<div class="modal-container">
|
|
<button type="button" class="btn btn-primary" data-toggle="modal"
|
|
data-target="#settingsModal">
|
|
Preview settings
|
|
</button>
|
|
<div class="modal fade" id="settingsModal" tabindex="-1" role="dialog"
|
|
aria-labelledby="settingsModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog" role="document">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title" id="settingsModalLabel">Settings</h5>
|
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div>
|
|
<label class="filter-label">Preview Size</label>
|
|
<div id="size-input">
|
|
<div>
|
|
<select id="size-preset">
|
|
<option value="800,1200">Default</option>
|
|
<option value="2200,2480">8" Fold</option>
|
|
<option value="1536,2048">Nexus 9 (Tablet)</option>
|
|
<option value="1440,2560">Pixel XL</option>
|
|
<option value="1440,3120">Pixel 6 Pro</option>
|
|
<option value="1080,2400">Pixel 6</option>
|
|
<option value="1080,2340">Pixel 5</option>
|
|
<option value="1440,3040">Pixel 4 XL</option>
|
|
<option value="1080,2280">Pixel 4</option>
|
|
<option value="1080,2160">Pixel 3</option>
|
|
<option value="1080,1920">Pixel 2</option>
|
|
<option value="768,1280">Nexus 4</option>
|
|
<option value="720,1280">720p</option>
|
|
<option value="480,854">480p</option>
|
|
<option value="480,800">Nexus One</option>
|
|
<option value="320,480">320p</option>
|
|
</select>
|
|
<div class="btn btn-primary" id="load-preset-size">Load preset
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<input type="number" id="width-input"
|
|
style="display:inline-block" />
|
|
<input type="number" id="height-input"
|
|
style="display:inline-block" />
|
|
<div class="btn btn-primary" id="swap-iframe-size">Rotate</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<label class="filter-label">Theme</label>
|
|
<div id="theme-picker">
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<label class="filter-label">Background Color</label>
|
|
<input type="text" id="bgc-input" />
|
|
</div>
|
|
<div>
|
|
<label class="filter-label">Text Color</label>
|
|
<input type="text" id="txt-input" />
|
|
</div>
|
|
<div>
|
|
<label class="filter-label">Text Align</label>
|
|
<select id="ta-input" class="custom-select">
|
|
<option value="left" selected>Left</option>
|
|
<option value="right">Right</option>
|
|
<option value="center">Center</option>
|
|
<option value="justify">Justify</option>
|
|
</select>
|
|
</div>
|
|
<div>
|
|
<label class="filter-label">Font Size</label>
|
|
<input type="number" id="fs-input" />
|
|
</div>
|
|
<div>
|
|
<label class="filter-label">Line Height</label>
|
|
<input step="0.1" type="number" id="lh-input" />
|
|
</div>
|
|
<hr />
|
|
<div>
|
|
<label class="filter-label">Custom CSS</label>
|
|
<textarea rows="5" id="css-ta"></textarea>
|
|
</div>
|
|
<hr />
|
|
<div>
|
|
<label class="filter-label">Custom JS</label>
|
|
<textarea rows="5" id="js-ta"></textarea>
|
|
</div>
|
|
<hr />
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary"
|
|
data-dismiss="modal">Close</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="spinner-border" role="status">
|
|
<span class="sr-only">Loading...</span>
|
|
</div>
|
|
<div class="form-group" id="chapter-viewer">
|
|
</div>
|
|
</accordion-content>
|
|
</accordion-box>
|
|
<accordion-box id="fetchImage" collapsed>
|
|
<accordion-header>
|
|
fetchImage
|
|
</accordion-header>
|
|
<accordion-content>
|
|
<div class="input-group">
|
|
<input type="text" class="form-control" placeholder="image url (should be in chapterText)">
|
|
<div class="input-group-append">
|
|
<button class="btn btn-primary fetchImage-btn" type="button">fetch</button>
|
|
</div>
|
|
</div>
|
|
<div class="spinner-border" role="status">
|
|
<span class="sr-only">Loading...</span>
|
|
</div>
|
|
<img src="" style="min-height: 300px; max-width: 450px;" alt="">
|
|
</accordion-content>
|
|
</accordion-box>
|
|
</main-accordion>
|
|
</body>
|
|
|
|
</html> |