feat: Plugins (#465)

* update

* gitignore

* base file

* template

* json generator

* remove valid method

* Update README.md

README

* update template

* Update README.md

* update template

* not support async arrow function

* remove valid method

* basic plugin validation.

* Update README.md

* update template

* Update README.md

* add fetchFile lib. empy .language file

* comment fetch

* update

* comment fetch

* auto comment, update template, template.min

* Update README.md

* add option to test

* reset version

* Update README.md

* small fix for LightNovelReader

* comment fetch

* minor: LL date format

* refactor: rename project, remove html2text lib

* fix: error if there's no plugin changed

* implement cookies bypass

* update template.min.js

* add syosetu

* fix: get last file in case removing.
shorter id

* shoter native language name

* change app project name

* testing with UI would be less painful :)

* remove console.log

* Update README.md for UI testing

* fix Syosetu

* remove try catch

* add ranobehub

* add json for ranobehub

* wrong icon path :D

* fix ranobehub

* fix status ranobe

* add french

* fix css

* add chireads

* add indonesian

* add sakura novel

* add sakuranovel json

* add spanish

* add skynovels

* fix skynovels

* add agitoon

* add turkish

* add epiknovel

* add portuguese

* update template

* cheerio_space

* add novel Fullme

* minor

* lol, this source havent been finished before. cant help

* cant bypass this

* add hasutl

* novelasligera not working properly

* add novelpub, but no searching

* add jaomix

* fix jaomix

* add ranoberf

* add indowebnovel

* add novelringan

* add noveldeglace

* search not work for this

* add oasisTL, this should have better popularNovels

* add tunovelaligera

* this source need to fix search

* add bestlightnovel

* add comrade mao

* minor fix

* add divinedaolibrary

* add freewebnovel

* lol xD

* minor

* update json

* fix icon novelawuxia

* update site in for pluginItem

* some changes for more convenient

* remove try catch

* Update README.md

* remove

* Update README.md

* trying to use pre-commit

* update README

* feat: .env for repo config

* add foxaholic (#2)

* rebase fox

* fox officially 1.0.0

---------

Co-authored-by: K1ngfish3r <trulyihu@gmail.com>
This commit is contained in:
nyagami
2023-05-08 08:43:09 +07:00
committed by GitHub
parent d0f049c0b8
commit 8522c89195
70 changed files with 9958 additions and 2 deletions
+49 -2
View File
@@ -1,11 +1,58 @@
# LNReader Sources
# LNReader Plugins
<p>
<img alt="GitHub issues by-label" src="https://img.shields.io/github/issues/lnreader/lnreader-sources/Source%20Request?color=success&label=source%20requests">
<img alt="GitHub issues by-label" src="https://img.shields.io/github/issues/lnreader/lnreader-sources/Bug?color=red&label=bugs">
</p>
Repository to host source related issues, and requests for [LNReader](https://github.com/LNReader/lnreader).
Repository to host plugins and related issues, and requests for [LNReader](https://github.com/LNReader/lnreader).
## Contributing
1. Please use this [template](./template.js) or [template.min](./template.min.js)
2. Choose your language in [./plugins](./plugins)
+ If your language doenst exist, please request us. We will add it soon.
3. Write your scripts
+ See example: [Hako](./plugins/vietnamese/LNHako.js)
## Test your script
We use expressjs to make an UI web for testing.
1. Installing
```
npm install
```
2. Running
```
nodemon index.js
```
+ Then open http://localhost:3000
3. Testing
+ Find you plugin
+ Check if all functions of your plugin work properly
#### No need to reload webpage after changing your plugin script.
- One more thing: you can use [cheerio_space](./cheerio_space) to build functions without requesting to the site.
----------
If you want to test plugin in app side, remember to config these things.
in [.env](./.env)
```
GITHUB_USERNAME='nyagami'
GITHUB_REPOSITORY='plugins'
GITHUB_BRANCH='main'
```
in [pluginManager.ts](https://github.com/nyagami/lnreader/blob/install_sources/src/plugins/pluginManager.ts)
```ts
const fetchPlugins = async () => {
const availablePlugins: Record<Languages, Array<PluginItem>> = await fetch(
'https://raw.githubusercontent.com/nyagami/plugins/main/plugins/plugins.min.json',
).then(res => res.json());
return availablePlugins;
};
```
----------
The developer of this application does not have any affiliation with the content providers available.