diff --git a/.run/A3MangaGenerator.run.xml b/.run/A3MangaGenerator.run.xml
deleted file mode 100644
index 20a4a7526..000000000
--- a/.run/A3MangaGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/BakaMangaGenerator.run.xml b/.run/BakaMangaGenerator.run.xml
deleted file mode 100644
index 3166fb8f9..000000000
--- a/.run/BakaMangaGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/BakkinGenerator.run.xml b/.run/BakkinGenerator.run.xml
deleted file mode 100644
index 077e52980..000000000
--- a/.run/BakkinGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/BilibiliGenerator.run.xml b/.run/BilibiliGenerator.run.xml
deleted file mode 100644
index 35d79c7d4..000000000
--- a/.run/BilibiliGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/ChanGenerator.run.xml b/.run/ChanGenerator.run.xml
deleted file mode 100644
index f4f915b37..000000000
--- a/.run/ChanGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/ComiCakeGenerator.run.xml b/.run/ComiCakeGenerator.run.xml
deleted file mode 100644
index b033d1410..000000000
--- a/.run/ComiCakeGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/ComicGammaGenerator.run.xml b/.run/ComicGammaGenerator.run.xml
deleted file mode 100644
index 8b8c6d2be..000000000
--- a/.run/ComicGammaGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/EroMuseGenerator.run.xml b/.run/EroMuseGenerator.run.xml
deleted file mode 100644
index fe4ababf5..000000000
--- a/.run/EroMuseGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/FMReaderGenerator.run.xml b/.run/FMReaderGenerator.run.xml
deleted file mode 100644
index efc32a260..000000000
--- a/.run/FMReaderGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/FansubsCatGenerator.run.xml b/.run/FansubsCatGenerator.run.xml
deleted file mode 100644
index 3609da5d0..000000000
--- a/.run/FansubsCatGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/FlixScansGenerator.run.xml b/.run/FlixScansGenerator.run.xml
deleted file mode 100644
index bbb4ce682..000000000
--- a/.run/FlixScansGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/FoolSlideGenerator.run.xml b/.run/FoolSlideGenerator.run.xml
deleted file mode 100644
index 044043f70..000000000
--- a/.run/FoolSlideGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/GattsuGenerator.run.xml b/.run/GattsuGenerator.run.xml
deleted file mode 100644
index 771b6a20e..000000000
--- a/.run/GattsuGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/GigaViewerGenerator.run.xml b/.run/GigaViewerGenerator.run.xml
deleted file mode 100644
index f51346317..000000000
--- a/.run/GigaViewerGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/GroupLeGenerator.run.xml b/.run/GroupLeGenerator.run.xml
deleted file mode 100644
index 4f5aeff14..000000000
--- a/.run/GroupLeGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/GuyaGenerator.run.xml b/.run/GuyaGenerator.run.xml
deleted file mode 100644
index b24a84cec..000000000
--- a/.run/GuyaGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/HeanCmsGenerator.run.xml b/.run/HeanCmsGenerator.run.xml
deleted file mode 100644
index f3b736bdd..000000000
--- a/.run/HeanCmsGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/HentaiHandGenerator.run.xml b/.run/HentaiHandGenerator.run.xml
deleted file mode 100644
index af0be7fcc..000000000
--- a/.run/HentaiHandGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/KemonoGenerator.run.xml b/.run/KemonoGenerator.run.xml
deleted file mode 100644
index c68bc4a86..000000000
--- a/.run/KemonoGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/LibGenerator.run.xml b/.run/LibGenerator.run.xml
deleted file mode 100644
index b65311b42..000000000
--- a/.run/LibGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/MCCMSGenerator.run.xml b/.run/MCCMSGenerator.run.xml
deleted file mode 100644
index 054dc8fc1..000000000
--- a/.run/MCCMSGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/MMRCMSGenerator.run.xml b/.run/MMRCMSGenerator.run.xml
deleted file mode 100644
index 81eaf7690..000000000
--- a/.run/MMRCMSGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/MadThemeGenerator.run.xml b/.run/MadThemeGenerator.run.xml
deleted file mode 100644
index 2124d454f..000000000
--- a/.run/MadThemeGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/MangAdventureGenerator.run.xml b/.run/MangAdventureGenerator.run.xml
deleted file mode 100644
index 521635b46..000000000
--- a/.run/MangAdventureGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/MangaBoxGenerator.run.xml b/.run/MangaBoxGenerator.run.xml
deleted file mode 100644
index f6c2f5537..000000000
--- a/.run/MangaBoxGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/MangaCatalogGenerator.run.xml b/.run/MangaCatalogGenerator.run.xml
deleted file mode 100644
index 551633cfd..000000000
--- a/.run/MangaCatalogGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/MangaHubGenerator.run.xml b/.run/MangaHubGenerator.run.xml
deleted file mode 100644
index f9af265a8..000000000
--- a/.run/MangaHubGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/MangaMainacGenerator.run.xml b/.run/MangaMainacGenerator.run.xml
deleted file mode 100644
index 05aedc7ee..000000000
--- a/.run/MangaMainacGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/MangaRawGenerator.run.xml b/.run/MangaRawGenerator.run.xml
deleted file mode 100644
index 792265395..000000000
--- a/.run/MangaRawGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/MangaReaderGenerator.run.xml b/.run/MangaReaderGenerator.run.xml
deleted file mode 100644
index f92f92a8c..000000000
--- a/.run/MangaReaderGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/MangaSarGenerator.run.xml b/.run/MangaSarGenerator.run.xml
deleted file mode 100644
index 06529fe67..000000000
--- a/.run/MangaSarGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/MangaWorldGenerator.run.xml b/.run/MangaWorldGenerator.run.xml
deleted file mode 100644
index f8a837107..000000000
--- a/.run/MangaWorldGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/MonochromeGenerator.run.xml b/.run/MonochromeGenerator.run.xml
deleted file mode 100644
index 11059802d..000000000
--- a/.run/MonochromeGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/MyMangaCMSGenerator.run.xml b/.run/MyMangaCMSGenerator.run.xml
deleted file mode 100644
index 861655d3d..000000000
--- a/.run/MyMangaCMSGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/NepNepGenerator.run.xml b/.run/NepNepGenerator.run.xml
deleted file mode 100644
index 2792cfeb8..000000000
--- a/.run/NepNepGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/OtakuSanctuaryGenerator.run.xml b/.run/OtakuSanctuaryGenerator.run.xml
deleted file mode 100644
index 3cc3e7220..000000000
--- a/.run/OtakuSanctuaryGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/PaprikaAltGenerator.run.xml b/.run/PaprikaAltGenerator.run.xml
deleted file mode 100644
index 88fb4350f..000000000
--- a/.run/PaprikaAltGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/PaprikaGenerator.run.xml b/.run/PaprikaGenerator.run.xml
deleted file mode 100644
index 6475c4950..000000000
--- a/.run/PaprikaGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/PizzaReaderGenerator.run.xml b/.run/PizzaReaderGenerator.run.xml
deleted file mode 100644
index 392c3d85c..000000000
--- a/.run/PizzaReaderGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/ReadAllComicsGenerator.run.xml b/.run/ReadAllComicsGenerator.run.xml
deleted file mode 100644
index f37bf1f8f..000000000
--- a/.run/ReadAllComicsGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/ReaderFrontGenerator.run.xml b/.run/ReaderFrontGenerator.run.xml
deleted file mode 100644
index 20e8685d7..000000000
--- a/.run/ReaderFrontGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/SinMHGenerator.run.xml b/.run/SinMHGenerator.run.xml
deleted file mode 100644
index fb16f608a..000000000
--- a/.run/SinMHGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/WPComicsGenerator.run.xml b/.run/WPComicsGenerator.run.xml
deleted file mode 100644
index a03ca1563..000000000
--- a/.run/WPComicsGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/WebtoonsGenerator.run.xml b/.run/WebtoonsGenerator.run.xml
deleted file mode 100644
index 9dbe554c3..000000000
--- a/.run/WebtoonsGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/WebtoonsTranslateGenerator.run.xml b/.run/WebtoonsTranslateGenerator.run.xml
deleted file mode 100644
index a7ade27bb..000000000
--- a/.run/WebtoonsTranslateGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/ZMangaGenerator.run.xml b/.run/ZMangaGenerator.run.xml
deleted file mode 100644
index e47185c93..000000000
--- a/.run/ZMangaGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/ZbuluGenerator.run.xml b/.run/ZbuluGenerator.run.xml
deleted file mode 100644
index 7374b7d71..000000000
--- a/.run/ZbuluGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.run/ZeistMangaGenerator.run.xml b/.run/ZeistMangaGenerator.run.xml
deleted file mode 100644
index 59bd062e9..000000000
--- a/.run/ZeistMangaGenerator.run.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
deleted file mode 100644
index c0001e988..000000000
--- a/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,126 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-## Our Pledge
-
-We as members, contributors, and leaders pledge to make participation in our
-community a harassment-free experience for everyone, regardless of age, body
-size, visible or invisible disability, ethnicity, sex characteristics, gender
-identity and expression, level of experience, education, socio-economic status,
-nationality, personal appearance, race, caste, color, religion, or sexual identity
-and orientation.
-
-We pledge to act and interact in ways that contribute to an open, welcoming,
-diverse, inclusive, and healthy community.
-
-## Our Standards
-
-Examples of behavior that contributes to a positive environment for our
-community include:
-
-* Demonstrating empathy and kindness toward other people
-* Being respectful of differing opinions, viewpoints, and experiences
-* Giving and gracefully accepting constructive feedback
-* Accepting responsibility and apologizing to those affected by our mistakes,
- and learning from the experience
-* Focusing on what is best not just for us as individuals, but for the
- overall community
-
-Examples of unacceptable behavior include:
-
-* The use of sexualized language or imagery, and sexual attention or
- advances of any kind
-* Trolling, insulting or derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or email
- address, without their explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
- professional setting
-
-## Enforcement Responsibilities
-
-Community moderators are responsible for clarifying and enforcing our standards of
-acceptable behavior and will take appropriate and fair corrective action in
-response to any behavior that they deem inappropriate, threatening, offensive,
-or harmful.
-
-Community moderators have the right and responsibility to remove, edit, or reject
-comments, commits, code, wiki edits, issues, and other contributions that are
-not aligned to this Code of Conduct, and will communicate reasons for moderation
-decisions when appropriate.
-
-## Scope
-
-This Code of Conduct applies within all community spaces, and also applies when
-an individual is officially representing the community in public spaces.
-Examples of representing our community include using an official e-mail address,
-posting via an official social media account, or acting as an appointed
-representative at an online or offline event.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported to the community moderators responsible for enforcement at
-the [Tachiyomi Discord server](https://discord.gg/tachiyomi).
-All complaints will be reviewed and investigated promptly and fairly.
-
-All community moderators are obligated to respect the privacy and security of the
-reporter of any incident.
-
-## Enforcement Guidelines
-
-Community moderators will follow these Community Impact Guidelines in determining
-the consequences for any action they deem in violation of this Code of Conduct:
-
-### 1. Correction
-
-**Community Impact**: Use of inappropriate language or other behavior deemed
-unprofessional or unwelcome in the community.
-
-**Consequence**: A private, written warning from community moderators, providing
-clarity around the nature of the violation and an explanation of why the
-behavior was inappropriate. A public apology may be requested.
-
-### 2. Warning
-
-**Community Impact**: A violation through a single incident or series
-of actions.
-
-**Consequence**: A warning with consequences for continued behavior. No
-interaction with the people involved, including unsolicited interaction with
-those enforcing the Code of Conduct, for a specified period of time. This
-includes avoiding interactions in community spaces as well as external channels
-like social media. Violating these terms may lead to a temporary or
-permanent ban.
-
-### 3. Temporary Ban
-
-**Community Impact**: A serious violation of community standards, including
-sustained inappropriate behavior.
-
-**Consequence**: A temporary ban from any sort of interaction or public
-communication with the community for a specified period of time. No public or
-private interaction with the people involved, including unsolicited interaction
-with those enforcing the Code of Conduct, is allowed during this period.
-Violating these terms may lead to a permanent ban.
-
-### 4. Permanent Ban
-
-**Community Impact**: Demonstrating a pattern of violation of community
-standards, including sustained inappropriate behavior, harassment of an
-individual, or aggression toward or disparagement of classes of individuals.
-
-**Consequence**: A permanent ban from any sort of public interaction within
-the community.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/),
-version 2.1, available at
-[v2.1](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html).
-
-Community Impact Guidelines were inspired by
-[Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
-
-For answers to common questions about this code of conduct, see the FAQ at
-[FAQ](https://www.contributor-covenant.org/faq). Translations are available
-at [translations](https://www.contributor-covenant.org/translations).
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 5528943c9..5a16bc391 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,63 +1,45 @@
# Contributing
-This guide have some instructions and tips on how to create a new Tachiyomi extension. Please **read it carefully** if you're a new contributor or don't have any experience on the required languages and knowledges.
+This guide have some instructions and tips on how to create a new Tachiyomi extension. Please **read
+it carefully** if you're a new contributor or don't have any experience on the required languages
+and knowledges.
-This guide is not definitive and it's being updated over time. If you find any issue on it, feel free to report it through a [Meta Issue](https://github.com/tachiyomiorg/tachiyomi-extensions/issues/new?assignees=&labels=Meta+request&template=request_meta.yml) or fixing it directly by submitting a Pull Request.
+This guide is not definitive and it's being updated over time. If you find any issue on it, feel
+free to report it through a [Meta Issue](https://github.com/keiyoushi/extensions-source/issues/new?assignees=&labels=Meta+request&template=06_request_meta.yml)
+or fixing it directly by submitting a Pull Request.
## Table of Contents
-- [Contributing](#contributing)
- - [Table of Contents](#table-of-contents)
- - [Prerequisites](#prerequisites)
- - [Tools](#tools)
- - [Cloning the repository](#cloning-the-repository)
- - [Getting help](#getting-help)
- - [Writing an extension](#writing-an-extension)
- - [Setting up a new Gradle module](#setting-up-a-new-gradle-module)
- - [Loading a subset of Gradle modules](#loading-a-subset-of-gradle-modules)
- - [Extension file structure](#extension-file-structure)
- - [AndroidManifest.xml](#androidmanifestxml)
- - [build.gradle](#buildgradle)
- - [Core dependencies](#core-dependencies)
- - [Extension API](#extension-api)
- - [DataImage library](#dataimage-library)
- - [i18n library](#i18n-library)
- - [Additional dependencies](#additional-dependencies)
- - [Extension main class](#extension-main-class)
- - [Main class key variables](#main-class-key-variables)
- - [Extension call flow](#extension-call-flow)
- - [Popular Manga](#popular-manga)
- - [Latest Manga](#latest-manga)
- - [Manga Search](#manga-search)
- - [Filters](#filters)
- - [Manga Details](#manga-details)
- - [Chapter](#chapter)
- - [Chapter Pages](#chapter-pages)
- - [Misc notes](#misc-notes)
- - [Advanced Extension features](#advanced-extension-features)
- - [URL intent filter](#url-intent-filter)
- - [Update strategy](#update-strategy)
- - [Renaming existing sources](#renaming-existing-sources)
- - [Multi-source themes](#multi-source-themes)
- - [The directory structure](#the-directory-structure)
- - [Development workflow](#development-workflow)
- - [Scaffolding overrides](#scaffolding-overrides)
- - [Additional Notes](#additional-notes)
- - [Running](#running)
- - [Debugging](#debugging)
- - [Android Debugger](#android-debugger)
- - [Logs](#logs)
- - [Inspecting network calls](#inspecting-network-calls)
- - [Using external network inspecting tools](#using-external-network-inspecting-tools)
- - [Setup your proxy server](#setup-your-proxy-server)
- - [OkHttp proxy setup](#okhttp-proxy-setup)
- - [Building](#building)
- - [Submitting the changes](#submitting-the-changes)
- - [Pull Request checklist](#pull-request-checklist)
+1. [Prerequisites](#prerequisites)
+ 1. [Tools](#tools)
+ 2. [Cloning the repository](#cloning-the-repository)
+2. [Getting help](#getting-help)
+3. [Writing an extension](#writing-an-extension)
+ 1. [Setting up a new Gradle module](#setting-up-a-new-gradle-module)
+ 2. [Core dependencies](#core-dependencies)
+ 3. [Extension main class](#extension-main-class)
+ 4. [Extension call flow](#extension-call-flow)
+ 5. [Misc notes](#misc-notes)
+ 6. [Advanced extension features](#advanced-extension-features)
+4. [Multi-source themes](#multi-source-themes)
+ 1. [The directory structure](#the-directory-structure)
+ 2. [Development workflow](#development-workflow)
+ 3. [Scaffolding overrides](#scaffolding-overrides)
+ 4. [Additional Notes](#additional-notes)
+5. [Running](#running)
+6. [Debugging](#debugging)
+ 1. [Android Debugger](#android-debugger)
+ 2. [Logs](#logs)
+ 3. [Inspecting network calls](#inspecting-network-calls)
+ 4. [Using external network inspecting tools](#using-external-network-inspecting-tools)
+7. [Building](#building)
+8. [Submitting the changes](#submitting-the-changes)
+ 1. [Pull Request checklist](#pull-request-checklist)
## Prerequisites
-Before you start, please note that the ability to use following technologies is **required** and that existing contributors will not actively teach them to you.
+Before you start, please note that the ability to use following technologies is **required** and
+that existing contributors will not actively teach them to you.
- Basic [Android development](https://developer.android.com/)
- [Kotlin](https://kotlinlang.org/)
@@ -75,20 +57,20 @@ Before you start, please note that the ability to use following technologies is
### Cloning the repository
-Some alternative steps can be followed to ignore "repo" branch and skip unrelated sources, which will make it faster to pull, navigate and build. This will also reduce disk usage and network traffic.
+Some alternative steps can be followed to skip unrelated sources, which will make it faster to pull,
+navigate and build. This will also reduce disk usage and network traffic.
+
+**These steps are only needed when the repo is huge and contains a lot of sources. If the repo is
+small, just do a normal full clone instead.**
Steps
-1. Make sure to delete "repo" branch in your fork. You may also want to disable Actions in the repo settings.
-
- **Also make sure you are using the latest version of Git as many commands used here are pretty new.**
-
-2. Do a partial clone.
+1. Do a partial clone.
```bash
git clone --filter=blob:none --sparse
- cd tachiyomi-extensions/
+ cd extensions/
```
-3. Configure sparse checkout.
+2. Configure sparse checkout.
There are two modes of pattern matching. The default is cone (🔺) mode.
Cone mode enables significantly faster pattern matching for big monorepos
@@ -144,37 +126,34 @@ Some alternative steps can be followed to ignore "repo" branch and skip unrelate
Explanation: the rules are like `gitignore`. We first exclude all sources
while retaining project folders, then add the needed sources back manually.
-4. Configure remotes.
+3. Configure remotes.
```bash
# add upstream
- git remote add upstream
+ git remote add upstream
# optionally disable push to upstream
git remote set-url --push upstream no_pushing
- # ignore 'repo' branch of upstream
- # option 1: use negative refspec
- git config --add remote.upstream.fetch "^refs/heads/repo"
- # option 2: fetch master only (ignore all other branches)
- git config remote.upstream.fetch "+refs/heads/master:refs/remotes/upstream/master"
+ # optionally fetch main only (ignore all other branches)
+ git config remote.upstream.fetch "+refs/heads/main:refs/remotes/upstream/main"
# update remotes
git remote update
- # track master of upstream instead of fork
- git branch master -u upstream/master
+ # track main of upstream instead of fork
+ git branch main -u upstream/main
```
-5. Useful configurations. (optional)
+4. Useful configurations. (optional)
```bash
# prune obsolete remote branches on fetch
git config remote.origin.prune true
- # fast-forward only when pulling master branch
+ # fast-forward only when pulling main branch
git config pull.ff only
- # Add an alias to sync master branch without fetching useless blobs.
+ # Add an alias to sync main branch without fetching useless blobs.
# If you run `git pull` to fast-forward in a blobless clone like this,
# all blobs (files) in the new commits are still fetched regardless of
# sparse rules, which makes the local repo accumulate unused files.
- # Use `git sync-master` to avoid this. Be careful if you have changes
- # on master branch, which is not a good practice.
- git config alias.sync-master '!git switch master && git fetch upstream && git reset --keep FETCH_HEAD'
+ # Use `git sync-main` to avoid this. Be careful if you have changes
+ # on main branch, which is not a good practice.
+ git config alias.sync-main '!git switch main && git fetch upstream && git reset --keep FETCH_HEAD'
```
-6. Later, if you change the sparse checkout filter, run `git sparse-checkout reapply`.
+5. Later, if you change the sparse checkout filter, run `git sparse-checkout reapply`.
Read more on
[Git's object model](https://github.blog/2020-12-17-commits-are-snapshots-not-diffs/),
@@ -186,22 +165,28 @@ and [negative refspecs](https://github.blog/2020-10-19-git-2-29-released/#user-c
## Getting help
-- Join [the Discord server](https://discord.gg/tachiyomi) for online help and to ask questions while developing your extension. When doing so, please ask it in the `#programming` channel.
-- There are some features and tricks that are not explored in this document. Refer to existing extension code for examples.
+- Join [the Discord server](https://discord.gg/3FbCpdKbdY) for online help and to ask questions while
+developing your extension. When doing so, please ask it in the `#programming` channel.
+- There are some features and tricks that are not explored in this document. Refer to existing
+extension code for examples.
## Writing an extension
-The quickest way to get started is to copy an existing extension's folder structure and renaming it as needed. We also recommend reading through a few existing extensions' code before you start.
+The quickest way to get started is to copy an existing extension's folder structure and renaming it
+as needed. We also recommend reading through a few existing extensions' code before you start.
### Setting up a new Gradle module
-Each extension should reside in `src//`. Use `all` as `` if your target source supports multiple languages or if it could support multiple sources.
+Each extension should reside in `src//`. Use `all` as `` if your target
+source supports multiple languages or if it could support multiple sources.
-The `` used in the folder inside `src` should be the major `language` part. For example, if you will be creating a `pt-BR` source, use `` here as `pt` only. Inside the source class, use the full locale string instead.
+The `` used in the folder inside `src` should be the major `language` part. For example, if
+you will be creating a `pt-BR` source, use `` here as `pt` only. Inside the source class, use
+the full locale string instead.
### Loading a subset of Gradle modules
-By default, all individual and generated multisrc extensions are loaded for local development.
+By default, all individual and generated multisrc extensions are loaded for local development.
This may be inconvenient if you only need to work on one extension at a time.
To adjust which modules are loaded, make adjustments to the `settings.gradle.kts` file as needed.
@@ -238,8 +223,14 @@ src///
13 directories, 9 files
```
+`` should be an ISO 639-1 compliant language code (two letters or `all`). ``
+should be adapted from the site name, and can only contain lowercase ASCII letters and digits.
+Your extension code must be placed in the package `eu.kanade.tachiyomi.extension..`.
+
#### AndroidManifest.xml
-A minimal [Android manifest file](https://developer.android.com/guide/topics/manifest/manifest-intro) is needed for Android to recognize a extension when it's compiled into an APK file. You can also add intent filters inside this file (see [URL intent filter](#url-intent-filter) for more information).
+A minimal [Android manifest file](https://developer.android.com/guide/topics/manifest/manifest-intro)
+is needed for Android to recognize an extension when it's compiled into an APK file. You can also add
+intent filters inside this file (see [URL intent filter](#url-intent-filter) for more information).
#### build.gradle
Make sure that your new extension's `build.gradle` file follows the following structure:
@@ -247,7 +238,6 @@ Make sure that your new extension's `build.gradle` file follows the following st
```gradle
ext {
extName = ''
- pkgNameSuffix = '.'
extClass = '.'
extVersionCode = 1
isNsfw = true
@@ -256,26 +246,31 @@ ext {
apply from: "$rootDir/common.gradle"
```
-| Field | Description |
-| ----- | ----------- |
-| `extName` | The name of the extension. |
-| `pkgNameSuffix` | A unique suffix added to `eu.kanade.tachiyomi.extension`. The language and the site name should be enough. Remember your extension code implementation must be placed in this package. |
-| `extClass` | Points to the class that implements `Source`. You can use a relative path starting with a dot (the package name is the base path). This is used to find and instantiate the source(s). |
-| `extVersionCode` | The extension version code. This must be a positive integer and incremented with any change to the code. |
-| `libVersion` | (Optional, defaults to `1.4`) The version of the [extensions library](https://github.com/tachiyomiorg/extensions-lib) used. |
-| `isNsfw` | (Optional, defaults to `false`) Flag to indicate that a source contains NSFW content. |
+| Field | Description |
+|------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `extName` | The name of the extension. Should be romanized if site name is not in English. |
+| `extClass` | Points to the class that implements `Source`. You can use a relative path starting with a dot (the package name is the base path). This is used to find and instantiate the source(s). |
+| `extVersionCode` | The extension version code. This must be a positive integer and incremented with any change to the code. |
+| `libVersion` | (Optional, defaults to `1.4`) The version of the [extensions library](https://github.com/tachiyomiorg/extensions-lib) used. |
+| `isNsfw` | (Optional, defaults to `false`) Flag to indicate that a source contains NSFW content. |
-The extension's version name is generated automatically by concatenating `libVersion` and `extVersionCode`. With the example used above, the version would be `1.4.1`.
+The extension's version name is generated automatically by concatenating `libVersion` and `extVersionCode`.
+With the example used above, the version would be `1.4.1`.
### Core dependencies
#### Extension API
-Extensions rely on [extensions-lib](https://github.com/tachiyomiorg/extensions-lib), which provides some interfaces and stubs from the [app](https://github.com/tachiyomiorg/tachiyomi) for compilation purposes. The actual implementations can be found [here](https://github.com/tachiyomiorg/tachiyomi/tree/master/app/src/main/java/eu/kanade/tachiyomi/source). Referencing the actual implementation will help with understanding extensions' call flow.
+Extensions rely on [extensions-lib](https://github.com/tachiyomiorg/extensions-lib), which provides
+some interfaces and stubs from the [app](https://github.com/tachiyomiorg/tachiyomi) for compilation
+purposes. The actual implementations can be found [here](https://github.com/tachiyomiorg/tachiyomi/tree/master/app/src/main/java/eu/kanade/tachiyomi/source).
+Referencing the actual implementation will help with understanding extensions' call flow.
#### DataImage library
-[`lib-dataimage`](https://github.com/tachiyomiorg/tachiyomi-extensions/tree/master/lib/dataimage) is a library for handling [base 64 encoded image data](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) using an [OkHttp interceptor](https://square.github.io/okhttp/interceptors/).
+[`lib-dataimage`](https://github.com/keiyoushi/extensions-source/tree/main/lib/dataimage) is a library
+for handling [base 64 encoded image data](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs)
+using an [OkHttp interceptor](https://square.github.io/okhttp/interceptors/).
```gradle
dependencies {
@@ -285,7 +280,9 @@ dependencies {
#### i18n library
-[`lib-i18n`](https://github.com/tachiyomiorg/tachiyomi-extensions/tree/master/lib/i18n) is a library for handling internationalization in the sources. It allows loading `.properties` files with messages located under the `assets/i18n` folder of each extension, that can be used to translate strings under the source.
+[`lib-i18n`](https://github.com/keiyoushi/extensions-source/tree/main/lib/i18n) is a library for handling
+internationalization in the sources. It allows loading `.properties` files with messages located under
+the `assets/i18n` folder of each extension, that can be used to translate strings under the source.
```gradle
dependencies {
@@ -295,36 +292,41 @@ dependencies {
#### Additional dependencies
-If you find yourself needing additional functionality, you can add more dependencies to your `build.gradle` file.
-Many of [the dependencies](https://github.com/tachiyomiorg/tachiyomi/blob/master/app/build.gradle.kts) from the main Tachiyomi app are exposed to extensions by default.
+If you find yourself needing additional functionality, you can add more dependencies to your `build.gradle`
+file. Many of [the dependencies](https://github.com/tachiyomiorg/tachiyomi/blob/master/app/build.gradle.kts)
+from the main Tachiyomi app are exposed to extensions by default.
> [!NOTE]
> Several dependencies are already exposed to all extensions via Gradle's version catalog.
> To view which are available check the `gradle/libs.versions.toml` file.
-Notice that we're using `compileOnly` instead of `implementation` if the app already contains it. You could use `implementation` instead for a new dependency, or you prefer not to rely on whatever the main app has at the expense of app size.
+Notice that we're using `compileOnly` instead of `implementation` if the app already contains it.
+You could use `implementation` instead for a new dependency, or you prefer not to rely on whatever
+the main app has at the expense of app size.
> [!IMPORTANT]
-> Using `compileOnly` restricts you to versions that must be compatible with those used in [the latest stable version of Tachiyomi](https://github.com/tachiyomiorg/tachiyomi/releases/latest).
+> Using `compileOnly` restricts you to versions that must be compatible with those used in
+> [the latest stable version of Tachiyomi](https://github.com/tachiyomiorg/tachiyomi/releases/latest).
### Extension main class
-The class which is referenced and defined by `extClass` in `build.gradle`. This class should implement either `SourceFactory` or extend one of the `Source` implementations: `HttpSource` or `ParsedHttpSource`.
+The class which is referenced and defined by `extClass` in `build.gradle`. This class should implement
+either `SourceFactory` or extend one of the `Source` implementations: `HttpSource` or `ParsedHttpSource`.
-| Class | Description |
-| ----- | ----------- |
-|`SourceFactory`| Used to expose multiple `Source`s. Use this in case of a source that supports multiple languages or mirrors of the same website. For similar websites use [theme sources](#multi-source-themes). |
-| `HttpSource`| For online source, where requests are made using HTTP. |
-| `ParsedHttpSource`| Similar to `HttpSource`, but has methods useful for scraping pages. |
+| Class | Description |
+|--------------------|----------------------------------------------------------------------------------------------------------------------------------|
+| `SourceFactory` | Used to expose multiple `Source`s. Use this in case of a source that supports multiple languages or mirrors of the same website. |
+| `HttpSource` | For online source, where requests are made using HTTP. |
+| `ParsedHttpSource` | Similar to `HttpSource`, but has methods useful for scraping pages. |
#### Main class key variables
-| Field | Description |
-| ----- | ----------- |
-| `name` | Name displayed in the "Sources" tab in Tachiyomi. |
-| `baseUrl` | Base URL of the source without any trailing slashes. |
-| `lang` | An ISO 639-1 compliant language code (two letters in lower case in most cases, but can also include the country/dialect part by using a simple dash character). |
-| `id` | Identifier of your source, automatically set in `HttpSource`. It should only be manually overriden if you need to copy an existing autogenerated ID. |
+| Field | Description |
+|-----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `name` | Name displayed in the "Sources" tab in Tachiyomi. |
+| `baseUrl` | Base URL of the source without any trailing slashes. |
+| `lang` | An ISO 639-1 compliant language code (two letters in lower case in most cases, but can also include the country/dialect part by using a simple dash character). |
+| `id` | Identifier of your source, automatically set in `HttpSource`. It should only be manually overriden if you need to copy an existing autogenerated ID. |
### Extension call flow
@@ -332,40 +334,53 @@ The class which is referenced and defined by `extClass` in `build.gradle`. This
a.k.a. the Browse source entry point in the app (invoked by tapping on the source name).
-- The app calls `fetchPopularManga` which should return a `MangasPage` containing the first batch of found `SManga` entries.
- - This method supports pagination. When user scrolls the manga list and more results must be fetched, the app calls it again with increasing `page` values (starting with `page=1`). This continues while `MangasPage.hasNextPage` is passed as `true` and `MangasPage.mangas` is not empty.
-- To show the list properly, the app needs `url`, `title` and `thumbnail_url`. You **must** set them here. The rest of the fields could be filled later (refer to Manga Details below).
- - You should set `thumbnail_url` if is available, if not, `getMangaDetails` will be **immediately** called (this will increase network calls heavily and should be avoided).
+- The app calls `fetchPopularManga` which should return a `MangasPage` containing the first batch of
+found `SManga` entries.
+ - This method supports pagination. When user scrolls the manga list and more results must be fetched,
+ the app calls it again with increasing `page` values (starting with `page=1`). This continues while
+ `MangasPage.hasNextPage` is passed as `true` and `MangasPage.mangas` is not empty.
+- To show the list properly, the app needs `url`, `title` and `thumbnail_url`. You **must** set them
+here. The rest of the fields could be filled later (refer to Manga Details below).
+ - You should set `thumbnail_url` if is available, if not, `getMangaDetails` will be **immediately**
+ called (this will increase network calls heavily and should be avoided).
#### Latest Manga
-a.k.a. the Latest source entry point in the app (invoked by tapping on the "Latest" button beside the source name).
+a.k.a. the Latest source entry point in the app (invoked by tapping on the "Latest" button beside
+the source name).
- Enabled if `supportsLatest` is `true` for a source
- Similar to popular manga, but should be fetching the latest entries from a source.
#### Manga Search
-- When the user searches inside the app, `fetchSearchManga` will be called and the rest of the flow is similar to what happens with `fetchPopularManga`.
+- When the user searches inside the app, `fetchSearchManga` will be called and the rest of the flow
+is similar to what happens with `fetchPopularManga`.
- If search functionality is not available, return `Observable.just(MangasPage(emptyList(), false))`
- `getFilterList` will be called to get all filters and filter types.
##### Filters
-The search flow have support to filters that can be added to a `FilterList` inside the `getFilterList` method. When the user changes the filters' state, they will be passed to the `searchRequest`, and they can be iterated to create the request (by getting the `filter.state` value, where the type varies depending on the `Filter` used). You can check the filter types available [here](https://github.com/tachiyomiorg/tachiyomi/blob/master/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/Filter.kt) and in the table below.
+The search flow have support to filters that can be added to a `FilterList` inside the `getFilterList`
+method. When the user changes the filters' state, they will be passed to the `searchRequest`, and they
+can be iterated to create the request (by getting the `filter.state` value, where the type varies
+depending on the `Filter` used). You can check the filter types available [here](https://github.com/tachiyomiorg/tachiyomi/blob/master/source-api/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/Filter.kt)
+and in the table below.
-| Filter | State type | Description |
-| ------ | ---------- | ----------- |
-| `Filter.Header` | None | A simple header. Useful for separating sections in the list or showing any note or warning to the user. |
-| `Filter.Separator` | None | A line separator. Useful for visual distinction between sections. |
-| `Filter.Select` | `Int` | A select control, similar to HTML's ``. Only one item can be selected, and the state is the index of the selected one. |
-| `Filter.Text` | `String` | A text control, similar to HTML's ` `. |
-| `Filter.CheckBox` | `Boolean` | A checkbox control, similar to HTML's ` `. The state is `true` if it's checked. |
-| `Filter.TriState` | `Int` | A enhanced checkbox control that supports an excluding state. The state can be compared with `STATE_IGNORE`, `STATE_INCLUDE` and `STATE_EXCLUDE` constants of the class. |
-| `Filter.Group` | `List` | A group of filters (preferentially of the same type). The state will be a `List` with all the states. |
-| `Filter.Sort` | `Selection` | A control for sorting, with support for the ordering. The state indicates which item index is selected and if the sorting is `ascending`. |
+| Filter | State type | Description |
+|--------------------|-------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `Filter.Header` | None | A simple header. Useful for separating sections in the list or showing any note or warning to the user. |
+| `Filter.Separator` | None | A line separator. Useful for visual distinction between sections. |
+| `Filter.Select` | `Int` | A select control, similar to HTML's ``. Only one item can be selected, and the state is the index of the selected one. |
+| `Filter.Text` | `String` | A text control, similar to HTML's ` `. |
+| `Filter.CheckBox` | `Boolean` | A checkbox control, similar to HTML's ` `. The state is `true` if it's checked. |
+| `Filter.TriState` | `Int` | A enhanced checkbox control that supports an excluding state. The state can be compared with `STATE_IGNORE`, `STATE_INCLUDE` and `STATE_EXCLUDE` constants of the class. |
+| `Filter.Group` | `List` | A group of filters (preferentially of the same type). The state will be a `List` with all the states. |
+| `Filter.Sort` | `Selection` | A control for sorting, with support for the ordering. The state indicates which item index is selected and if the sorting is `ascending`. |
-All control filters can have a default state set. It's usually recommended if the source have filters to make the initial state match the popular manga list, so when the user open the filter sheet, the state is equal and represents the current manga showing.
+All control filters can have a default state set. It's usually recommended if the source have filters
+to make the initial state match the popular manga list, so when the user open the filter sheet, the
+state is equal and represents the current manga showing.
The `Filter` classes can also be extended, so you can create new custom filters like the `UriPartFilter`:
@@ -378,26 +393,35 @@ open class UriPartFilter(displayName: String, private val vals: Array 0.13.4.
+ - The default date has [changed](https://github.com/tachiyomiorg/tachiyomi/pull/7197) in
+ preview ≥ r4442 or stable > 0.13.4.
- In older versions, the default date is always the fetch date.
- In newer versions, this is the same if every (new) chapter has `0L` returned.
- - However, if the source only provides the upload date of the latest chapter, you can now set it to the latest chapter and leave other chapters default. The app will automatically set it (instead of fetch date) to every new chapter and leave old chapters' dates untouched.
+ - However, if the source only provides the upload date of the latest chapter, you can now set
+ it to the latest chapter and leave other chapters default. The app will automatically set it (instead of fetch date) to every new chapter and leave old chapters' dates untouched.
- `getChapterUrl` is called when the user taps "Open in WebView" in the reader.
- - If the source uses an API to fetch the data, consider overriding this method to return the chapter absolute URL in the website instead.
+ - If the source uses an API to fetch the data, consider overriding this method to return the
+ chapter absolute URL in the website instead.
- It defaults to the URL provided to the request in `pageListRequest`.
#### Chapter Pages
- When user opens a chapter, `getPageList` will be called and it will return a list of `Page`s.
-- While a chapter is open in the reader or is being downloaded, `fetchImageUrl` will be called to get URLs for each page of the manga if the `Page.imageUrl` is empty.
-- If the source provides all the `Page.imageUrl`'s directly, you can fill them and let the `Page.url` empty, so the app will skip the `fetchImageUrl` source and call directly `fetchImage`.
+- While a chapter is open in the reader or is being downloaded, `fetchImageUrl` will be called to get
+URLs for each page of the manga if the `Page.imageUrl` is empty.
+- If the source provides all the `Page.imageUrl`'s directly, you can fill them and let the `Page.url`
+empty, so the app will skip the `fetchImageUrl` source and call directly `fetchImage`.
- The `Page.url` and `Page.imageUrl` attributes **should be set as an absolute URL**.
- Chapter pages numbers start from `0`.
- The list of `Page`s should be returned already sorted, the `index` field is ignored.
@@ -449,9 +481,11 @@ them may cause you more headache than necessary.
#### URL intent filter
Extensions can define URL intent filters by defining it inside a custom `AndroidManifest.xml` file.
-For an example, refer to [the NHentai module's `AndroidManifest.xml` file](https://github.com/tachiyomiorg/tachiyomi-extensions/blob/master/src/all/nhentai/AndroidManifest.xml) and [its corresponding `NHUrlActivity` handler](https://github.com/tachiyomiorg/tachiyomi-extensions/blob/master/src/all/nhentai/src/eu/kanade/tachiyomi/extension/all/nhentai/NHUrlActivity.kt).
+(Example TBD.)
-To test if the URL intent filter is working as expected, you can try opening the website in a browser and navigating to the endpoint that was added as a filter or clicking a hyperlink. Alternatively, you can use the `adb` command below.
+To test if the URL intent filter is working as expected, you can try opening the website in a browser
+and navigating to the endpoint that was added as a filter or clicking a hyperlink. Alternatively,
+you can use the `adb` command below.
```console
$ adb shell am start -d "" -a android.intent.action.VIEW
@@ -467,27 +501,40 @@ $ adb shell am start -d "" -a android.intent.action.VIEW
#### Update strategy
-There is some cases where titles in a source will always only have the same chapter list (i.e. immutable), and don't need to be included in a global update of the app because of that, saving a lot of requests and preventing causing unnecessary damage to the source servers. To change the update strategy of a `SManga`, use the `update_strategy` field. You can find below a description of the current possible values.
+There is some cases where titles in a source will always only have the same chapter list
+(i.e. immutable), and don't need to be included in a global update of the app because of that, saving
+a lot of requests and preventing causing unnecessary damage to the source servers. To change the
+update strategy of a `SManga`, use the `update_strategy` field. You can find below a description of
+the current possible values.
-- `UpdateStrategy.ALWAYS_UPDATE`: Titles marked as always update will be included in the library update if they aren't excluded by additional restrictions.
-- `UpdateStrategy.ONLY_FETCH_ONCE`: Titles marked as only fetch once will be automatically skipped during library updates. Useful for cases where the series is previously known to be finished and have only a single chapter, for example.
+- `UpdateStrategy.ALWAYS_UPDATE`: Titles marked as always update will be included in the library
+update if they aren't excluded by additional restrictions.
+- `UpdateStrategy.ONLY_FETCH_ONCE`: Titles marked as only fetch once will be automatically skipped
+during library updates. Useful for cases where the series is previously known to be finished and have
+only a single chapter, for example.
If not set, it defaults to `ALWAYS_UPDATE`.
#### Renaming existing sources
-There is some cases where existing sources changes their name on the website. To correctly reflect these changes in the extension, you need to explicity set the `id` to the same old value, otherwise it will get changed by the new `name` value and users will be forced to migrate back to the source.
+There is some cases where existing sources changes their name on the website. To correctly reflect
+these changes in the extension, you need to explicity set the `id` to the same old value, otherwise
+it will get changed by the new `name` value and users will be forced to migrate back to the source.
-To get the current `id` value before the name change, you can search the source name in the [repository JSON file](https://github.com/tachiyomiorg/tachiyomi-extensions/blob/repo/index.json) by looking into the `sources` attribute of the extension. When you have the `id` copied, you can override it in the source:
+To get the current `id` value before the name change, you can search the source name in the [repository JSON file](https://github.com/keiyoushi/extensions/blob/repo/index.json)
+by looking into the `sources` attribute of the extension. When you have the `id` copied, you can
+override it in the source:
```kotlin
override val id: Long =
```
-Then the class name and the `name` attribute value can be changed. Also don't forget to update the extension name and class name in the individual Gradle file if it is not a multisrc extension.
+Then the class name and the `name` attribute value can be changed. Also don't forget to update the
+extension name and class name in the individual Gradle file.
> [!IMPORTANT]
-> The package name **needs** to be the same (even if it has the old name), otherwise users will not receive the extension update when it gets published in the repository. If you're changing the name of a multisrc source, you can manually set it in the generator class of the theme by using `pkgName = "oldpackagename"`.
+> The package name **needs** to be the same (even if it has the old name), otherwise users will not
+> receive the extension update when it gets published in the repository.
The `id` also needs to be explicity set to the old value if you're changing the `lang` attribute.
@@ -497,9 +544,14 @@ The `id` also needs to be explicity set to the old value if you're changing the
> a new `id` will be generated and users will be forced to migrate.
## Multi-source themes
-The `multisrc` module houses source code for generating extensions for cases where multiple source sites use the same site generator tool(usually a CMS) for bootsraping their website and this makes them similar enough to prompt code reuse through inheritance/composition; which from now on we will use the general **theme** term to refer to.
+The `multisrc` module houses source code for generating extensions for cases where multiple source
+sites use the same site generator tool (usually a CMS) for bootsraping their website and this makes
+them similar enough to prompt code reuse through inheritance/composition; which from now on we will
+use the general **theme** term to refer to.
-This module contains the *default implementation* for each theme and definitions for each source that builds upon that default implementation and also it's overrides upon that default implementation, all of this becomes a set of source code which then is used to generate individual extensions from.
+This module contains the *default implementation* for each theme and definitions for each source that
+builds upon that default implementation and also it's overrides upon that default implementation,
+all of this becomes a set of source code which then is used to generate individual extensions from.
### The directory structure
```console
@@ -554,15 +606,22 @@ multisrc
└── ThemeSourceGenerator.kt
```
-- `multisrc/src/main/java/eu/kanade/tachiyomi/multisrc//.kt` defines the the theme's default implementation.
-- `multisrc/src/main/java/eu/kanade/tachiyomi/multisrc//Generator.kt` defines the the theme's generator class, this is similar to a `SourceFactory` class.
-- `multisrc/overrides//default/res` is the theme's default icons, if a source doesn't have overrides for `res`, then default icons will be used.
-- `multisrc/overrides//default/additional.gradle` defines additional gradle code, this will be copied at the end of all generated sources from this theme.
-- `multisrc/overrides//` contains overrides for a source that is defined inside the `Generator.kt` class.
+- `multisrc/src/main/java/eu/kanade/tachiyomi/multisrc//.kt` defines the the theme's
+default implementation.
+- `multisrc/src/main/java/eu/kanade/tachiyomi/multisrc//Generator.kt` defines the the
+theme's generator class, this is similar to a `SourceFactory` class.
+- `multisrc/overrides//default/res` is the theme's default icons, if a source doesn't have
+overrides for `res`, then default icons will be used.
+- `multisrc/overrides//default/additional.gradle` defines additional gradle code, this will
+be copied at the end of all generated sources from this theme.
+- `multisrc/overrides//` contains overrides for a source that is defined inside
+the `Generator.kt` class.
- `multisrc/overrides///src` contains source overrides.
- `multisrc/overrides///res` contains override for icons.
-- `multisrc/overrides///additional.gradle` defines additional gradle code, this will be copied at the end of the generated gradle file below the theme's `additional.gradle`.
-- `multisrc/overrides///AndroidManifest.xml` is copied as an override to the default `AndroidManifest.xml` generation if it exists.
+- `multisrc/overrides///additional.gradle` defines additional gradle code, this
+will be copied at the end of the generated gradle file below the theme's `additional.gradle`.
+- `multisrc/overrides///AndroidManifest.xml` is copied as an override to the
+default `AndroidManifest.xml` generation if it exists.
> [!NOTE]
> Files ending with `Gen.kt` (i.e. `multisrc/src/main/java/eu/kanade/tachiyomi/multisrc//XxxGen.kt`)
@@ -573,19 +632,27 @@ There are three steps in running and testing a theme source:
1. Generate the sources
- **Option 1: Only generate sources from one theme**
- - **Method 1:** Find and run `Generator` run configuration form the `Run/Debug Configuration` menu.
- - **Method 2:** Directly run `.Generator.main` by pressing the play button in front of the method shown inside Android Studio's Code Editor to generate sources from the said theme.
+ - **Method 1:** Find and run `Generator` run configuration from the
+ `Run/Debug Configuration` menu.
+ - **Method 2:** Directly run `.Generator.main` by pressing the play
+ button in front of the method shown inside Android Studio's Code Editor to generate sources
+ from the said theme.
- **Option 2: Generate sources from all themes**
- - **Method 1:** Run `./gradlew multisrc:generateExtensions` from a terminal window to generate all sources.
- - **Method 2:** Directly run `Generator.GeneratorMain.main` by pressing the play button in front of the method shown inside Android Studio's Code Editor to generate all sources.
+ - **Method 1:** Run `./gradlew multisrc:generateExtensions` from a terminal window to
+ generate all sources.
+ - **Method 2:** Directly run `Generator.GeneratorMain.main` by pressing the play button
+ in front of the method shown inside Android Studio's Code Editor to generate all sources.
2. Sync gradle to import the new generated sources inside `generated-src`
- **Method 1:** Android Studio might prompt to sync the gradle. Click on `Sync Now`.
- - **Method 2:** Manually re-sync by opening `File` -> `Sync Project with Gradle Files` or by pressing `Alt+f` then `g`.
+ - **Method 2:** Manually re-sync by opening `File` -> `Sync Project with Gradle Files` or by
+ pressing `Alt+f` then `g`.
3. Build and test the generated Extention like normal `src` sources.
- - It's recommended to make changes here to skip going through step 1 and 2 multiple times, and when you are done, copying the changes back to `multisrc`.
+ - It's recommended to make changes here to skip going through step 1 and 2 multiple times, and
+ when you are done, copying the changes back to `multisrc`.
### Scaffolding overrides
-You can use this python script to generate scaffolds for source overrides. Put it inside `multisrc/overrides//` as `scaffold.py`.
+You can use this python script to generate scaffolds for source overrides.
+Put it inside `multisrc/overrides//` as `scaffold.py`.
```python
import os, sys
from pathlib import Path
@@ -612,19 +679,26 @@ with open(f"{package}/src/{source}.kt", "w") as f:
```
### Additional Notes
-- Generated sources extension version code is calculated as `baseVersionCode + overrideVersionCode + multisrcLibraryVersion`.
+- Generated sources extension version code is calculated as
+`baseVersionCode + overrideVersionCode + multisrcLibraryVersion`.
- Currently `multisrcLibraryVersion` is `0`
- When a new source is added, it doesn't need to set `overrideVersionCode` as it's default is `0`.
- - For each time a source changes in a way that should the version increase, `overrideVersionCode` should be increased by one.
- - When a theme's default implementation changes, `baseVersionCode` should be increased, the initial value should be `1`.
+ - For each time a source changes in a way that should the version increase, `overrideVersionCode`
+ should be increased by one.
+ - When a theme's default implementation changes, `baseVersionCode` should be increased, the
+ initial value should be `1`.
- For example, for a new theme with a new source, extention version code will be `0 + 0 + 1 = 1`.
- `IntelijConfigurationGeneratorMainKt` should be run on creating or removing a multisrc theme.
- - On removing a theme, you can manually remove the corresponding configuration in the `.run` folder instead.
- - Be careful if you're using sparse checkout. If other configurations are accidentally removed, `git add` the file you want and `git restore` the others. Another choice is to allow `/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/*` before running the generator.
+ - On removing a theme, you can manually remove the corresponding configuration in the `.run`
+ folder instead.
+ - Be careful if you're using sparse checkout. If other configurations are accidentally removed,
+ `git add` the file you want and `git restore` the others. Another choice is to allow
+ `/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/*` before running the generator.
## Running
-To make local development more convenient, you can use the following run configuration to launch Tachiyomi directly at the Browse panel:
+To make local development more convenient, you can use the following run configuration to launch
+Tachiyomi directly at the Browse panel:
![](https://i.imgur.com/STy0UFY.png)
@@ -649,9 +723,11 @@ And for a release build of Tachiyomi:
You can leverage the Android Debugger to step through your extension while debugging.
-You *cannot* simply use Android Studio's `Debug 'module.name'` -> this will most likely result in an error while launching.
+You *cannot* simply use Android Studio's `Debug 'module.name'` -> this will most likely result in an
+error while launching.
-Instead, once you've built and installed your extension on the target device, use `Attach Debugger to Android Process` to start debugging Tachiyomi.
+Instead, once you've built and installed your extension on the target device, use
+`Attach Debugger to Android Process` to start debugging Tachiyomi.
![](https://i.imgur.com/muhXyfu.png)
@@ -663,22 +739,31 @@ show up in the [`Logcat`](https://developer.android.com/studio/debug/am-logcat)
### Inspecting network calls
-One of the easiest way to inspect network issues (such as HTTP errors 404, 429, no chapter found etc.) is to use the [`Logcat`](https://developer.android.com/studio/debug/am-logcat) panel of Android Studio and filtering by the `OkHttpClient` tag.
+One of the easiest way to inspect network issues (such as HTTP errors 404, 429, no chapter found etc.)
+is to use the [`Logcat`](https://developer.android.com/studio/debug/am-logcat) panel of Android Studio
+and filtering by the `OkHttpClient` tag.
-To be able to check the calls done by OkHttp, you need to enable verbose logging in the app, that is not enabled by default and is only included in the Preview versions of Tachiyomi. To enable it, go to More -> Settings -> Advanced -> Verbose logging. After enabling it, don't forget to restart the app.
+To be able to check the calls done by OkHttp, you need to enable verbose logging in the app, that is
+not enabled by default and is only included in the Preview versions of Tachiyomi. To enable it, go to
+More -> Settings -> Advanced -> Verbose logging. After enabling it, don't forget to restart the app.
-Inspecting the Logcat allows you to get a good look at the call flow and it's more than enough in most cases where issues occurs. However, alternatively, you can also use an external tool like `mitm-proxy`. For that, refer to the subsequent sections.
+Inspecting the Logcat allows you to get a good look at the call flow and it's more than enough in most
+cases where issues occurs. However, alternatively, you can also use an external tool like `mitm-proxy`.
+For that, refer to the subsequent sections.
On newer Android Studio versions, you can use its built-in Network Inspector inside the
App Inspection tool window. This feature provides a nice GUI to inspect the requests made in the app.
-To use it, follow the [official documentation](https://developer.android.com/studio/debug/network-profiler) and select Tachiyomi package name in the process list.
+To use it, follow the [official documentation](https://developer.android.com/studio/debug/network-profiler)
+and select Tachiyomi package name in the process list.
### Using external network inspecting tools
-If you want to take a deeper look into the network flow, such as taking a look into the request and response bodies, you can use an external tool like `mitm-proxy`.
+If you want to take a deeper look into the network flow, such as taking a look into the request and
+response bodies, you can use an external tool like `mitm-proxy`.
#### Setup your proxy server
-We are going to use [mitm-proxy](https://mitmproxy.org/) but you can replace it with any other Web Debugger (i.e. Charles, Burp Suite, Fiddler etc). To install and execute, follow the commands bellow.
+We are going to use [mitm-proxy](https://mitmproxy.org/) but you can replace it with any other Web
+Debugger (i.e. Charles, Burp Suite, Fiddler etc). To install and execute, follow the commands below.
```console
Install the tool.
@@ -699,14 +784,14 @@ $ docker run --rm -it -p 8080:8080 \
After installing and running, open your browser and navigate to http://127.0.0.1:8081.
#### OkHttp proxy setup
-Since most of the manga sources are going to use HTTPS, we need to disable SSL verification in order to use the web debugger. For that, add this code to inside your source class:
-
+Since most of the manga sources are going to use HTTPS, we need to disable SSL verification in order
+to use the web debugger. For that, add this code to inside your source class:
```kotlin
-package eu.kanade.tachiyomi.extension.en.mangasource
-import eu.kanade.tachiyomi.multisrc.mangatheme.mangasource
+package eu.kanade.tachiyomi.extension.en.mysource
import android.annotation.SuppressLint
+import eu.kanade.tachiyomi.source.online.HttpSource
import okhttp3.OkHttpClient
import java.net.InetSocketAddress
import java.net.Proxy
@@ -716,11 +801,7 @@ import javax.net.ssl.SSLContext
import javax.net.ssl.TrustManager
import javax.net.ssl.X509TrustManager
-class MangaSource : MangaTheme(
- "MangaSource",
- "https://example.com",
- "en"
-) {
+class MySource : HttpSource() {
private fun OkHttpClient.Builder.ignoreAllSSLErrors(): OkHttpClient.Builder {
val naiveTrustManager = @SuppressLint("CustomX509TrustManager")
object : X509TrustManager {
@@ -746,26 +827,38 @@ class MangaSource : MangaTheme(
}
```
-Note: `10.0.2.2` is usually the address of your loopback interface in the android emulator. If Tachiyomi tells you that it's unable to connect to 10.0.2.2:8080 you will likely need to change it (the same if you are using hardware device).
+Note: `10.0.2.2` is usually the address of your loopback interface in the android emulator. If
+Tachiyomi tells you that it's unable to connect to 10.0.2.2:8080 you will likely need to change it
+(the same if you are using hardware device).
-If all went well, you should see all requests and responses made by the source in the web interface of `mitmweb`.
+If all went well, you should see all requests and responses made by the source in the web interface
+of `mitmweb`.
## Building
-APKs can be created in Android Studio via `Build > Build Bundle(s) / APK(s) > Build APK(s)` or `Build > Generate Signed Bundle / APK`.
+APKs can be created in Android Studio via `Build > Build Bundle(s) / APK(s) > Build APK(s)` or
+`Build > Generate Signed Bundle / APK`.
## Submitting the changes
-When you feel confident about your changes, submit a new Pull Request so your code can be reviewed and merged if it's approved. We encourage following a [GitHub Standard Fork & Pull Request Workflow](https://gist.github.com/Chaser324/ce0505fbed06b947d962) and following the good practices of the workflow, such as not commiting directly to `master`: always create a new branch for your changes.
+When you feel confident about your changes, submit a new Pull Request so your code can be reviewed
+and merged if it's approved. We encourage following a [GitHub Standard Fork & Pull Request Workflow](https://gist.github.com/Chaser324/ce0505fbed06b947d962)
+and following the good practices of the workflow, such as not commiting directly to `main`: always
+create a new branch for your changes.
-If you are more comfortable about using Git GUI-based tools, you can refer to [this guide](https://learntodroid.com/how-to-use-git-and-github-in-android-studio/) about the Git integration inside Android Studio, specifically the "How to Contribute to an to Existing Git Repository in Android Studio" section of the guide.
+If you are more comfortable about using Git GUI-based tools, you can refer to [this guide](https://learntodroid.com/how-to-use-git-and-github-in-android-studio/)
+about the Git integration inside Android Studio, specifically the "How to Contribute to an to Existing
+Git Repository in Android Studio" section of the guide.
> [!IMPORTANT]
> Make sure you have generated the extension icon using the linked Icon Generator tool in the [Tools](#tools)
> section. The icon **must follow the pattern** adopted by all other extensions: a square with rounded
> corners. Make sure to remove the generated `web_hi_res_512.png`.
-Please **do test your changes by compiling it through Android Studio** before submitting it. Obvious untested PRs will not be merged, such as ones created with the GitHub web interface. Also make sure to follow the PR checklist available in the PR body field when creating a new PR. As a reference, you can find it below.
+Please **do test your changes by compiling it through Android Studio** before submitting it. Obvious
+untested PRs will not be merged, such as ones created with the GitHub web interface. Also make sure
+to follow the PR checklist available in the PR body field when creating a new PR. As a reference, you
+can find it below.
### Pull Request checklist
diff --git a/README.md b/README.md
index f06855a21..2a9883b91 100644
--- a/README.md
+++ b/README.md
@@ -1,37 +1,18 @@
+### Please give the repo a :star:
+
| Build | Support Server |
|-------|---------|
-| [![CI](https://github.com/tachiyomiorg/tachiyomi-extensions/workflows/CI/badge.svg?event=push)](https://github.com/tachiyomiorg/tachiyomi-extensions/actions/workflows/build_push.yml) | [![Discord](https://img.shields.io/discord/349436576037732353.svg?label=discord&labelColor=7289da&color=2c2f33&style=flat)](https://discord.gg/tachiyomi) |
-
-# ![app icon](./.github/readme-images/app-icon.png)Tachiyomi Extensions
-Tachiyomi is a free and open source manga reader for Android 6.0 and above.
-
-This repository contains the available extension catalogues for the [Tachiyomi](https://github.com/tachiyomiorg/tachiyomi) app.
+| [![CI](https://github.com/keiyoushi/extensions-source/actions/workflows/build_push.yml/badge.svg)](https://github.com/keiyoushi/extensions-source/actions/workflows/build_push.yml) | [![Discord](https://img.shields.io/discord/1193460528052453448.svg?label=discord&labelColor=7289da&color=2c2f33&style=flat)](https://discord.gg/3FbCpdKbdY) |
# Usage
-Extension sources can be downloaded, installed, and uninstalled via the main Tachiyomi app. They are installed and uninstalled like regular apps, in `.apk` format.
-
-## Downloads
-
-If you prefer to directly download the APK files, they are available via https://tachiyomi.org/extensions/ or directly in this GitHub repository in the [`repo` branch](https://github.com/tachiyomiorg/tachiyomi-extensions/tree/repo/apk).
-
-# Requests
-
-To request a new source or bug fix, [create an issue](https://github.com/tachiyomiorg/tachiyomi-extensions/issues/new/choose).
-
-Note that requesting something does not imply that something will be added or fixed in a timely fashion or at all since the work is volunteer-based. Furthermore, some sources may be impossible to do or prohibitively difficult to maintain.
-
-If you would like to see a request fulfilled and have the necessary skills to do so, consider contributing! Issues are up-for-grabs for any developer if there is no assigned user already.
+https://github.com/keiyoushi/extensions/blob/main/README.md
# Contributing
Contributions are welcome!
-Check out the repo's [issue backlog](https://github.com/tachiyomiorg/tachiyomi-extensions/issues) for source requests and bug reports.
-
-To get started with development, see [CONTRIBUTING.md](./CONTRIBUTING.md).
-
-It might also be good to read our [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).
+Check out the repo's [issue backlog](https://github.com/keiyoushi/extensions-source/issues) for source requests and bug reports.
## License
@@ -51,4 +32,5 @@ It might also be good to read our [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md).
## Disclaimer
-The developer of this application does not have any affiliation with the content providers available.
+This project is not affiliated with Tachiyomi. Don't ask for help about these extensions at the official support means of Tachiyomi. All credits to the codebase goes to the original contributors.
+
diff --git a/REMOVED_SOURCES.md b/REMOVED_SOURCES.md
deleted file mode 100644
index d56c5dfff..000000000
--- a/REMOVED_SOURCES.md
+++ /dev/null
@@ -1,78 +0,0 @@
-**There is no timetable on when or if a source request may be filled (also applies to bug reports and enhancement requests).**
-
-### In General the following sources that won't be added as an extension
-- In general heavily paywalled sites
-- Sources that require cracking some app's source code (realistically, no one's going to put in the effort to do it)
-- Sources that are known for filling a lot of DMCA complaints over repositories on GitHub
-
-Here is a list of known sources that were removed.
-## Removed sources
-
-### Too difficult to maintain
-
-- Anchira https://github.com/tachiyomiorg/tachiyomi-extensions/pull/19149
-- Bakai https://github.com/tachiyomiorg/tachiyomi-extensions/pull/17890
-- Blackout Comics and Izakaya https://github.com/tachiyomiorg/tachiyomi-extensions/pull/18500
-- ColaManhua (COLA漫画) https://github.com/tachiyomiorg/tachiyomi-extensions/pull/11445
-- Comikey https://github.com/tachiyomiorg/tachiyomi-extensions/pull/11971
-- Constellar Scans https://github.com/tachiyomiorg/tachiyomi-extensions/pull/17277
-- CopyManga (æ‹·è´æ¼«ç”») https://github.com/tachiyomiorg/tachiyomi-extensions/pull/12376
-- Cứu Truyện https://github.com/tachiyomiorg/tachiyomi-extensions/pull/16654
-- Hentai Kai https://github.com/tachiyomiorg/tachiyomi-extensions/issues/9999
-- Hitomi.la https://github.com/tachiyomiorg/tachiyomi-extensions/pull/11613
-- HQ Dragon https://github.com/tachiyomiorg/tachiyomi-extensions/pull/7065
-- Japscan https://github.com/tachiyomiorg/tachiyomi-extensions/pull/17892
-- Koushoku https://github.com/tachiyomiorg/tachiyomi-extensions/pull/13329
-- LeerCapitulo https://github.com/tachiyomiorg/tachiyomi-extensions/pull/16255
-- Mangá Host https://github.com/tachiyomiorg/tachiyomi-extensions/pull/7065
-- Mangá Livre and Leitor.net https://github.com/tachiyomiorg/tachiyomi-extensions/pull/8679
-- MangaDig https://github.com/tachiyomiorg/tachiyomi-extensions/pull/14974
-- Mangas.pw (Mangas.in) https://github.com/tachiyomiorg/tachiyomi-extensions/pull/9489
-- MangaYabu! https://github.com/tachiyomiorg/tachiyomi-extensions/pull/9336
-- ManhuaScan https://github.com/tachiyomiorg/tachiyomi-extensions/pull/7129
-- ManhwaHot https://github.com/tachiyomiorg/tachiyomi-extensions/pull/7129
-- Mode Scanlator https://github.com/tachiyomiorg/tachiyomi-extensions/pull/17865
-- Neox/Nexo Scanlator https://github.com/tachiyomiorg/tachiyomi-extensions/pull/12695
-- Reaper Scans (EN) https://github.com/tachiyomiorg/tachiyomi-extensions/pull/16819
-- SuperMangás and SuperHentais https://github.com/tachiyomiorg/tachiyomi-extensions/pull/6348
-- TopToon+/Day Comics https://github.com/tachiyomiorg/tachiyomi-extensions/pull/10851
-- Tsuki Mangás https://github.com/tachiyomiorg/tachiyomi-extensions/pull/8609
-- Union Mangás https://github.com/tachiyomiorg/tachiyomi-extensions/pull/7065
-- YES Mangás https://github.com/tachiyomiorg/tachiyomi-extensions/pull/7065
-
-### Requested removal by the scanlator team
-
-- ARES Manga https://github.com/tachiyomiorg/tachiyomi-extensions/issues/15396
-- Astra Scans https://github.com/tachiyomiorg/tachiyomi-extensions/issues/13845
-- Dat-Gar Scan https://github.com/tachiyomiorg/tachiyomi-extensions/issues/18441
-- Gourmet Scans https://github.com/tachiyomiorg/tachiyomi-extensions/issues/6192
-- Hikari Scans https://github.com/tachiyomiorg/tachiyomi-extensions/issues/6611
-- Hunter Scans https://github.com/tachiyomiorg/tachiyomi-extensions/issues/12392
-- JuinJutsuReader https://github.com/tachiyomiorg/tachiyomi-extensions/issues/2958
-- Knightnoscanlation https://github.com/tachiyomiorg/tachiyomi-extensions/issues/4240
-- KomikTap/KomikTap.in https://github.com/tachiyomiorg/tachiyomi-extensions/issues/6133
-- Luminous Scans https://github.com/tachiyomiorg/tachiyomi-extensions/issues/9923
-- MangaPro https://github.com/tachiyomiorg/tachiyomi-extensions/issues/13989
-- MangaSY https://github.com/tachiyomiorg/tachiyomi-extensions/issues/12007
-- Mangawow https://github.com/tachiyomiorg/tachiyomi-extensions/issues/5367
-- MHScans https://github.com/tachiyomiorg/tachiyomi-extensions/issues/15319
-- Mono Manga https://github.com/tachiyomiorg/tachiyomi-extensions/issues/17634
-- Moon Daisy Scans https://github.com/tachiyomiorg/tachiyomi-extensions/issues/17929
-- NarTag https://github.com/tachiyomiorg/tachiyomi-extensions/issues/8038
-- Plot-twistnf-scans https://github.com/tachiyomiorg/tachiyomi-extensions/issues/4242
-- Realm Scans https://github.com/tachiyomiorg/tachiyomi-extensions/issues/15586
-- Remangas https://github.com/tachiyomiorg/tachiyomi-extensions/issues/18807
-- Reset Scans https://github.com/tachiyomiorg/tachiyomi-extensions/issues/13168
-- SetsuScans https://github.com/tachiyomiorg/tachiyomi-extensions/issues/11040
-- ShinobiScans https://github.com/tachiyomiorg/tachiyomi-extensions/issues/14457
-- XXX Yaoi https://github.com/tachiyomiorg/tachiyomi-extensions/issues/9535
-
-### Requested removal by copyright holders
-
-By request of [Kakao Entertainment](https://www.kakaoent.com/):
-
-- 1st Kiss-Manga
-- Bato.to
-- Mangadex
-- NewToki / ManaToki
-- S2Manga
diff --git a/common.gradle b/common.gradle
index 2ba07ee7a..0e2d7f801 100644
--- a/common.gradle
+++ b/common.gradle
@@ -25,11 +25,11 @@ android {
defaultConfig {
minSdkVersion AndroidConfig.minSdk
targetSdkVersion AndroidConfig.targetSdk
- applicationIdSuffix pkgNameSuffix
+ applicationIdSuffix project.parent.name + "." + project.name
versionCode extVersionCode
versionName project.ext.properties.getOrDefault("libVersion", "1.4") + ".$extVersionCode"
base {
- archivesName = "tachiyomi-$pkgNameSuffix-v$versionName"
+ archivesName = "tachiyomi-$applicationIdSuffix-v$versionName"
}
def readmes = project.projectDir.listFiles({ File file ->
file.name == "README.md" || file.name == "CHANGELOG.md"
diff --git a/gradlew.bat b/gradlew.bat
index 6689b85be..93e3f59f1 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -1,92 +1,92 @@
-@rem
-@rem Copyright 2015 the original author or authors.
-@rem
-@rem Licensed under the Apache License, Version 2.0 (the "License");
-@rem you may not use this file except in compliance with the License.
-@rem You may obtain a copy of the License at
-@rem
-@rem https://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-@rem
-
-@if "%DEBUG%"=="" @echo off
-@rem ##########################################################################
-@rem
-@rem Gradle startup script for Windows
-@rem
-@rem ##########################################################################
-
-@rem Set local scope for the variables with windows NT shell
-if "%OS%"=="Windows_NT" setlocal
-
-set DIRNAME=%~dp0
-if "%DIRNAME%"=="" set DIRNAME=.
-@rem This is normally unused
-set APP_BASE_NAME=%~n0
-set APP_HOME=%DIRNAME%
-
-@rem Resolve any "." and ".." in APP_HOME to make it shorter.
-for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
-
-@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
-
-@rem Find java.exe
-if defined JAVA_HOME goto findJavaFromJavaHome
-
-set JAVA_EXE=java.exe
-%JAVA_EXE% -version >NUL 2>&1
-if %ERRORLEVEL% equ 0 goto execute
-
-echo.
-echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:findJavaFromJavaHome
-set JAVA_HOME=%JAVA_HOME:"=%
-set JAVA_EXE=%JAVA_HOME%/bin/java.exe
-
-if exist "%JAVA_EXE%" goto execute
-
-echo.
-echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
-echo.
-echo Please set the JAVA_HOME variable in your environment to match the
-echo location of your Java installation.
-
-goto fail
-
-:execute
-@rem Setup the command line
-
-set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
-
-
-@rem Execute Gradle
-"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
-
-:end
-@rem End local scope for the variables with windows NT shell
-if %ERRORLEVEL% equ 0 goto mainEnd
-
-:fail
-rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
-rem the _cmd.exe /c_ return code!
-set EXIT_CODE=%ERRORLEVEL%
-if %EXIT_CODE% equ 0 set EXIT_CODE=1
-if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
-exit /b %EXIT_CODE%
-
-:mainEnd
-if "%OS%"=="Windows_NT" endlocal
-
-:omega
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%"=="" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if %ERRORLEVEL% equ 0 goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if %ERRORLEVEL% equ 0 goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/lib/unpacker/bin/main/eu/kanade/tachiyomi/lib/unpacker/SubstringExtractor.kt b/lib/unpacker/bin/main/eu/kanade/tachiyomi/lib/unpacker/SubstringExtractor.kt
deleted file mode 100644
index a5f43e017..000000000
--- a/lib/unpacker/bin/main/eu/kanade/tachiyomi/lib/unpacker/SubstringExtractor.kt
+++ /dev/null
@@ -1,34 +0,0 @@
-package eu.kanade.tachiyomi.lib.unpacker
-
-/**
- * A helper class to extract substrings efficiently.
- *
- * Note that all methods move [startIndex] over the ending delimiter.
- */
-class SubstringExtractor(private val text: String) {
- private var startIndex = 0
-
- fun skipOver(str: String) {
- val index = text.indexOf(str, startIndex)
- if (index == -1) return
- startIndex = index + str.length
- }
-
- fun substringBefore(str: String): String {
- val index = text.indexOf(str, startIndex)
- if (index == -1) return ""
- val result = text.substring(startIndex, index)
- startIndex = index + str.length
- return result
- }
-
- fun substringBetween(left: String, right: String): String {
- val index = text.indexOf(left, startIndex)
- if (index == -1) return ""
- val leftIndex = index + left.length
- val rightIndex = text.indexOf(right, leftIndex)
- if (rightIndex == -1) return ""
- startIndex = rightIndex + right.length
- return text.substring(leftIndex, rightIndex)
- }
-}
diff --git a/lib/unpacker/bin/main/eu/kanade/tachiyomi/lib/unpacker/Unpacker.kt b/lib/unpacker/bin/main/eu/kanade/tachiyomi/lib/unpacker/Unpacker.kt
deleted file mode 100644
index 1c4b5bd6c..000000000
--- a/lib/unpacker/bin/main/eu/kanade/tachiyomi/lib/unpacker/Unpacker.kt
+++ /dev/null
@@ -1,76 +0,0 @@
-package eu.kanade.tachiyomi.lib.unpacker
-
-/**
- * Helper class to unpack JavaScript code compressed by [packer](http://dean.edwards.name/packer/).
- *
- * Source code of packer can be found [here](https://github.com/evanw/packer/blob/master/packer.js).
- */
-object Unpacker {
-
- /**
- * Unpacks JavaScript code compressed by packer.
- *
- * Specify [left] and [right] to unpack only the data between them.
- *
- * Note: single quotes `\'` in the data will be replaced with double quotes `"`.
- */
- fun unpack(script: String, left: String? = null, right: String? = null): String =
- unpack(SubstringExtractor(script), left, right)
-
- /**
- * Unpacks JavaScript code compressed by packer.
- *
- * Specify [left] and [right] to unpack only the data between them.
- *
- * Note: single quotes `\'` in the data will be replaced with double quotes `"`.
- */
- fun unpack(script: SubstringExtractor, left: String? = null, right: String? = null): String {
- val packed = script
- .substringBetween("}('", ".split('|'),0,{}))")
- .replace("\\'", "\"")
-
- val parser = SubstringExtractor(packed)
- val data: String
- if (left != null && right != null) {
- data = parser.substringBetween(left, right)
- parser.skipOver("',")
- } else {
- data = parser.substringBefore("',")
- }
- if (data.isEmpty()) return ""
-
- val dictionary = parser.substringBetween("'", "'").split("|")
- val size = dictionary.size
-
- return wordRegex.replace(data) {
- val key = it.value
- val index = parseRadix62(key)
- if (index >= size) return@replace key
- dictionary[index].ifEmpty { key }
- }
- }
-
- private val wordRegex by lazy { Regex("""\w+""") }
-
- private fun parseRadix62(str: String): Int {
- var result = 0
- for (ch in str.toCharArray()) {
- result = result * 62 + when {
- ch.code <= '9'.code -> { // 0-9
- ch.code - '0'.code
- }
-
- ch.code >= 'a'.code -> { // a-z
- // ch - 'a' + 10
- ch.code - ('a'.code - 10)
- }
-
- else -> { // A-Z
- // ch - 'A' + 36
- ch.code - ('A'.code - 36)
- }
- }
- }
- return result
- }
-}
diff --git a/multisrc/build.gradle.kts b/multisrc/build.gradle.kts
index 7b2948f27..2f1bc16ee 100644
--- a/multisrc/build.gradle.kts
+++ b/multisrc/build.gradle.kts
@@ -35,7 +35,7 @@ dependencies {
// Note that this does not mean that generated sources are going to
// implement them too; this is just to be able to compile and generate sources.
rootProject.subprojects
- .filter { it.path.startsWith(":lib") }
+ .filter { it.path.startsWith(":lib:") }
.forEach(::implementation)
}
diff --git a/multisrc/overrides/a3manga/a3manga/res/web_hi_res_512.png b/multisrc/overrides/a3manga/a3manga/res/web_hi_res_512.png
deleted file mode 100644
index 678499563..000000000
Binary files a/multisrc/overrides/a3manga/a3manga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/a3manga/ngonphong/res/web_hi_res_512.png b/multisrc/overrides/a3manga/ngonphong/res/web_hi_res_512.png
deleted file mode 100644
index 6e3ea71cc..000000000
Binary files a/multisrc/overrides/a3manga/ngonphong/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/a3manga/ocumeo/res/web_hi_res_512.png b/multisrc/overrides/a3manga/ocumeo/res/web_hi_res_512.png
deleted file mode 100644
index dfff10b7b..000000000
Binary files a/multisrc/overrides/a3manga/ocumeo/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/a3manga/teamlanhlung/res/web_hi_res_512.png b/multisrc/overrides/a3manga/teamlanhlung/res/web_hi_res_512.png
deleted file mode 100644
index bc89f156a..000000000
Binary files a/multisrc/overrides/a3manga/teamlanhlung/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/bakamanga/manhwaxxl/res/web_hi_res_512.png b/multisrc/overrides/bakamanga/manhwaxxl/res/web_hi_res_512.png
deleted file mode 100644
index ba821393b..000000000
Binary files a/multisrc/overrides/bakamanga/manhwaxxl/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/bakkin/default/res/web_hi_res_512.png b/multisrc/overrides/bakkin/default/res/web_hi_res_512.png
deleted file mode 100644
index 2a5a78c7b..000000000
Binary files a/multisrc/overrides/bakkin/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/bakkin/ultralightscans/res/web_hi_res_512.png b/multisrc/overrides/bakkin/ultralightscans/res/web_hi_res_512.png
deleted file mode 100644
index 78cd17a58..000000000
Binary files a/multisrc/overrides/bakkin/ultralightscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/bilibili/bilibilimanga/res/web_hi_res_512.png b/multisrc/overrides/bilibili/bilibilimanga/res/web_hi_res_512.png
deleted file mode 100644
index b11094b2b..000000000
Binary files a/multisrc/overrides/bilibili/bilibilimanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/bilibili/default/res/web_hi_res_512.png b/multisrc/overrides/bilibili/default/res/web_hi_res_512.png
deleted file mode 100644
index a7e5653eb..000000000
Binary files a/multisrc/overrides/bilibili/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/comicgamma/webcomicgamma/res/web_hi_res_512.png b/multisrc/overrides/comicgamma/webcomicgamma/res/web_hi_res_512.png
deleted file mode 100644
index d2a131003..000000000
Binary files a/multisrc/overrides/comicgamma/webcomicgamma/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/comicgamma/webcomicgammaplus/res/web_hi_res_512.png b/multisrc/overrides/comicgamma/webcomicgammaplus/res/web_hi_res_512.png
deleted file mode 100644
index d009e4545..000000000
Binary files a/multisrc/overrides/comicgamma/webcomicgammaplus/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/eromuse/default/res/web_hi_res_512.png b/multisrc/overrides/eromuse/default/res/web_hi_res_512.png
deleted file mode 100644
index 7be23d2f2..000000000
Binary files a/multisrc/overrides/eromuse/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/eromuse/eightmuses/res/web_hi_res_512.png b/multisrc/overrides/eromuse/eightmuses/res/web_hi_res_512.png
deleted file mode 100644
index 6d603377b..000000000
Binary files a/multisrc/overrides/eromuse/eightmuses/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/eromuse/erofus/res/web_hi_res_512.png b/multisrc/overrides/eromuse/erofus/res/web_hi_res_512.png
deleted file mode 100644
index af8faeac6..000000000
Binary files a/multisrc/overrides/eromuse/erofus/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/fansubscat/fansubscat/res/web_hi_res_512.png b/multisrc/overrides/fansubscat/fansubscat/res/web_hi_res_512.png
deleted file mode 100644
index 9e00dbe6e..000000000
Binary files a/multisrc/overrides/fansubscat/fansubscat/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/fansubscat/fansubscathentai/res/web_hi_res_512.png b/multisrc/overrides/fansubscat/fansubscathentai/res/web_hi_res_512.png
deleted file mode 100644
index c2546bc59..000000000
Binary files a/multisrc/overrides/fansubscat/fansubscathentai/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/flixscans/flixscans/res/web_hi_res_512.png b/multisrc/overrides/flixscans/flixscans/res/web_hi_res_512.png
deleted file mode 100644
index 8ac2f0947..000000000
Binary files a/multisrc/overrides/flixscans/flixscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/flixscans/galaxymanga/res/web_hi_res_512.png b/multisrc/overrides/flixscans/galaxymanga/res/web_hi_res_512.png
deleted file mode 100644
index e37dad0c0..000000000
Binary files a/multisrc/overrides/flixscans/galaxymanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/fmreader/default/res/web_hi_res_512.png b/multisrc/overrides/fmreader/default/res/web_hi_res_512.png
deleted file mode 100644
index 1519d51a8..000000000
Binary files a/multisrc/overrides/fmreader/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/fmreader/epikmanga/res/web_hi_res_512.png b/multisrc/overrides/fmreader/epikmanga/res/web_hi_res_512.png
deleted file mode 100644
index f8d907de4..000000000
Binary files a/multisrc/overrides/fmreader/epikmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/fmreader/kisslove/res/web_hi_res_512.png b/multisrc/overrides/fmreader/kisslove/res/web_hi_res_512.png
deleted file mode 100644
index c9a9c3134..000000000
Binary files a/multisrc/overrides/fmreader/kisslove/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/fmreader/manga1000/res/web_hi_res_512.png b/multisrc/overrides/fmreader/manga1000/res/web_hi_res_512.png
deleted file mode 100644
index c9b408fa6..000000000
Binary files a/multisrc/overrides/fmreader/manga1000/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/fmreader/mangatr/res/web_hi_res_512.png b/multisrc/overrides/fmreader/mangatr/res/web_hi_res_512.png
deleted file mode 100644
index 35a7f9deb..000000000
Binary files a/multisrc/overrides/fmreader/mangatr/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/fmreader/rawlh/res/web_hi_res_512.png b/multisrc/overrides/fmreader/rawlh/res/web_hi_res_512.png
deleted file mode 100644
index 79d602018..000000000
Binary files a/multisrc/overrides/fmreader/rawlh/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/fmreader/saytruyen/res/web_hi_res_512.png b/multisrc/overrides/fmreader/saytruyen/res/web_hi_res_512.png
deleted file mode 100644
index a3c22ed92..000000000
Binary files a/multisrc/overrides/fmreader/saytruyen/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/anatanomotokare/res/web_hi_res_512.png b/multisrc/overrides/foolslide/anatanomotokare/res/web_hi_res_512.png
deleted file mode 100644
index e4db940d4..000000000
Binary files a/multisrc/overrides/foolslide/anatanomotokare/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/baixarhentai/res/web_hi_res_512.png b/multisrc/overrides/foolslide/baixarhentai/res/web_hi_res_512.png
deleted file mode 100644
index d1fca9c9b..000000000
Binary files a/multisrc/overrides/foolslide/baixarhentai/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/deathtollscans/res/web_hi_res_512.png b/multisrc/overrides/foolslide/deathtollscans/res/web_hi_res_512.png
deleted file mode 100644
index fce3855e9..000000000
Binary files a/multisrc/overrides/foolslide/deathtollscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/default/res/web_hi_res_512.png b/multisrc/overrides/foolslide/default/res/web_hi_res_512.png
deleted file mode 100644
index f6a0233e7..000000000
Binary files a/multisrc/overrides/foolslide/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/evilflowers/res/web_hi_res_512.png b/multisrc/overrides/foolslide/evilflowers/res/web_hi_res_512.png
deleted file mode 100644
index 55197a99f..000000000
Binary files a/multisrc/overrides/foolslide/evilflowers/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/hniscantrad/res/web_hi_res_512.png b/multisrc/overrides/foolslide/hniscantrad/res/web_hi_res_512.png
deleted file mode 100644
index 65e239da8..000000000
Binary files a/multisrc/overrides/foolslide/hniscantrad/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/lecercleduscan/res/web_hi_res_512.png b/multisrc/overrides/foolslide/lecercleduscan/res/web_hi_res_512.png
deleted file mode 100644
index 6be01acd6..000000000
Binary files a/multisrc/overrides/foolslide/lecercleduscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/lilyreader/res/web_hi_res_512.png b/multisrc/overrides/foolslide/lilyreader/res/web_hi_res_512.png
deleted file mode 100644
index 29709b5f4..000000000
Binary files a/multisrc/overrides/foolslide/lilyreader/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/mangascouts/res/web_hi_res_512.png b/multisrc/overrides/foolslide/mangascouts/res/web_hi_res_512.png
deleted file mode 100644
index efaa7f1a3..000000000
Binary files a/multisrc/overrides/foolslide/mangascouts/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/mangatellers/res/web_hi_res_512.png b/multisrc/overrides/foolslide/mangatellers/res/web_hi_res_512.png
deleted file mode 100644
index e40a6cb99..000000000
Binary files a/multisrc/overrides/foolslide/mangatellers/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/menudofansub/res/web_hi_res_512.png b/multisrc/overrides/foolslide/menudofansub/res/web_hi_res_512.png
deleted file mode 100644
index aac59dd15..000000000
Binary files a/multisrc/overrides/foolslide/menudofansub/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/nifteam/res/web_hi_res_512.png b/multisrc/overrides/foolslide/nifteam/res/web_hi_res_512.png
deleted file mode 100644
index 575982ef9..000000000
Binary files a/multisrc/overrides/foolslide/nifteam/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/powermangait/res/web_hi_res_512.png b/multisrc/overrides/foolslide/powermangait/res/web_hi_res_512.png
deleted file mode 100644
index a0fb44eb3..000000000
Binary files a/multisrc/overrides/foolslide/powermangait/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/rama/res/web_hi_res_512.png b/multisrc/overrides/foolslide/rama/res/web_hi_res_512.png
deleted file mode 100644
index e41de9e7b..000000000
Binary files a/multisrc/overrides/foolslide/rama/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/russification/res/web_hi_res_512.png b/multisrc/overrides/foolslide/russification/res/web_hi_res_512.png
deleted file mode 100644
index a23fdafe9..000000000
Binary files a/multisrc/overrides/foolslide/russification/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/foolslide/silentsky/res/web_hi_res_512.png b/multisrc/overrides/foolslide/silentsky/res/web_hi_res_512.png
deleted file mode 100644
index 64bafecb6..000000000
Binary files a/multisrc/overrides/foolslide/silentsky/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/gattsu/default/res/web_hi_res_512.png b/multisrc/overrides/gattsu/default/res/web_hi_res_512.png
deleted file mode 100644
index 52482b2d7..000000000
Binary files a/multisrc/overrides/gattsu/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/gattsu/hentaiseason/res/web_hi_res_512.png b/multisrc/overrides/gattsu/hentaiseason/res/web_hi_res_512.png
deleted file mode 100644
index b3e3b5ba7..000000000
Binary files a/multisrc/overrides/gattsu/hentaiseason/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/gattsu/universohentai/res/web_hi_res_512.png b/multisrc/overrides/gattsu/universohentai/res/web_hi_res_512.png
deleted file mode 100644
index 9ea229683..000000000
Binary files a/multisrc/overrides/gattsu/universohentai/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/gigaviewer/comicdays/res/web_hi_res_512.png b/multisrc/overrides/gigaviewer/comicdays/res/web_hi_res_512.png
deleted file mode 100644
index eb2b71413..000000000
Binary files a/multisrc/overrides/gigaviewer/comicdays/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/gigaviewer/comicgardo/res/web_hi_res_512.png b/multisrc/overrides/gigaviewer/comicgardo/res/web_hi_res_512.png
deleted file mode 100644
index 076ace3fa..000000000
Binary files a/multisrc/overrides/gigaviewer/comicgardo/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/gigaviewer/comiplex/res/web_hi_res_512.png b/multisrc/overrides/gigaviewer/comiplex/res/web_hi_res_512.png
deleted file mode 100644
index ce32c1d8c..000000000
Binary files a/multisrc/overrides/gigaviewer/comiplex/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/gigaviewer/corocoroonline/res/web_hi_res_512.png b/multisrc/overrides/gigaviewer/corocoroonline/res/web_hi_res_512.png
deleted file mode 100644
index 4155b33a2..000000000
Binary files a/multisrc/overrides/gigaviewer/corocoroonline/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/gigaviewer/default/res/web_hi_res_512.png b/multisrc/overrides/gigaviewer/default/res/web_hi_res_512.png
deleted file mode 100644
index 151769b0e..000000000
Binary files a/multisrc/overrides/gigaviewer/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/gigaviewer/kuragebunch/res/web_hi_res_512.png b/multisrc/overrides/gigaviewer/kuragebunch/res/web_hi_res_512.png
deleted file mode 100644
index 374bde806..000000000
Binary files a/multisrc/overrides/gigaviewer/kuragebunch/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/gigaviewer/magazinepocket/res/web_hi_res_512.png b/multisrc/overrides/gigaviewer/magazinepocket/res/web_hi_res_512.png
deleted file mode 100644
index 543956ca4..000000000
Binary files a/multisrc/overrides/gigaviewer/magazinepocket/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/gigaviewer/magcomi/res/web_hi_res_512.png b/multisrc/overrides/gigaviewer/magcomi/res/web_hi_res_512.png
deleted file mode 100644
index e807b364f..000000000
Binary files a/multisrc/overrides/gigaviewer/magcomi/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/gigaviewer/shonenjumpplus/res/web_hi_res_512.png b/multisrc/overrides/gigaviewer/shonenjumpplus/res/web_hi_res_512.png
deleted file mode 100644
index d6916e649..000000000
Binary files a/multisrc/overrides/gigaviewer/shonenjumpplus/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/gigaviewer/sundaywebevery/res/web_hi_res_512.png b/multisrc/overrides/gigaviewer/sundaywebevery/res/web_hi_res_512.png
deleted file mode 100644
index 877db8184..000000000
Binary files a/multisrc/overrides/gigaviewer/sundaywebevery/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/gigaviewer/tonarinoyoungjump/res/web_hi_res_512.png b/multisrc/overrides/gigaviewer/tonarinoyoungjump/res/web_hi_res_512.png
deleted file mode 100644
index e29bcbaf0..000000000
Binary files a/multisrc/overrides/gigaviewer/tonarinoyoungjump/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/grouple/allhentai/res/web_hi_res_512.png b/multisrc/overrides/grouple/allhentai/res/web_hi_res_512.png
deleted file mode 100644
index f73d9a578..000000000
Binary files a/multisrc/overrides/grouple/allhentai/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/grouple/mintmanga/res/web_hi_res_512.png b/multisrc/overrides/grouple/mintmanga/res/web_hi_res_512.png
deleted file mode 100644
index 659735502..000000000
Binary files a/multisrc/overrides/grouple/mintmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/grouple/readmanga/res/web_hi_res_512.png b/multisrc/overrides/grouple/readmanga/res/web_hi_res_512.png
deleted file mode 100644
index a2cba1ddc..000000000
Binary files a/multisrc/overrides/grouple/readmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/grouple/rumix/res/web_hi_res_512.png b/multisrc/overrides/grouple/rumix/res/web_hi_res_512.png
deleted file mode 100644
index 87cb89581..000000000
Binary files a/multisrc/overrides/grouple/rumix/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/grouple/selfmanga/res/web_hi_res_512.png b/multisrc/overrides/grouple/selfmanga/res/web_hi_res_512.png
deleted file mode 100644
index 85a865456..000000000
Binary files a/multisrc/overrides/grouple/selfmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/guya/dankefurslesen/res/web_hi_res_512.png b/multisrc/overrides/guya/dankefurslesen/res/web_hi_res_512.png
deleted file mode 100644
index 9edd4f98a..000000000
Binary files a/multisrc/overrides/guya/dankefurslesen/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/guya/default/res/web_hi_res_512.png b/multisrc/overrides/guya/default/res/web_hi_res_512.png
deleted file mode 100644
index b367e0c8c..000000000
Binary files a/multisrc/overrides/guya/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/guya/guya/res/web_hi_res_512.png b/multisrc/overrides/guya/guya/res/web_hi_res_512.png
deleted file mode 100644
index b367e0c8c..000000000
Binary files a/multisrc/overrides/guya/guya/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/guya/hachirumi/res/web_hi_res_512.png b/multisrc/overrides/guya/hachirumi/res/web_hi_res_512.png
deleted file mode 100644
index ca0f08f8c..000000000
Binary files a/multisrc/overrides/guya/hachirumi/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/guya/magicaltranslators/res/web_hi_res_512.png b/multisrc/overrides/guya/magicaltranslators/res/web_hi_res_512.png
deleted file mode 100755
index f14298820..000000000
Binary files a/multisrc/overrides/guya/magicaltranslators/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/heancms/default/res/web_hi_res_512.png b/multisrc/overrides/heancms/default/res/web_hi_res_512.png
deleted file mode 100644
index 42d475ae1..000000000
Binary files a/multisrc/overrides/heancms/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/heancms/omegascans/res/web_hi_res_512.png b/multisrc/overrides/heancms/omegascans/res/web_hi_res_512.png
deleted file mode 100644
index 22189cf74..000000000
Binary files a/multisrc/overrides/heancms/omegascans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/heancms/perfscan/res/web_hi_res_512.png b/multisrc/overrides/heancms/perfscan/res/web_hi_res_512.png
deleted file mode 100644
index dfdba5083..000000000
Binary files a/multisrc/overrides/heancms/perfscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/heancms/templescan/res/web_hi_res_512.png b/multisrc/overrides/heancms/templescan/res/web_hi_res_512.png
deleted file mode 100644
index 58e3613f9..000000000
Binary files a/multisrc/overrides/heancms/templescan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/heancms/yugenmangas/res/web_hi_res_512.png b/multisrc/overrides/heancms/yugenmangas/res/web_hi_res_512.png
deleted file mode 100644
index 6e3163991..000000000
Binary files a/multisrc/overrides/heancms/yugenmangas/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/hentaihand/hentaihand/res/web_hi_res_512.png b/multisrc/overrides/hentaihand/hentaihand/res/web_hi_res_512.png
deleted file mode 100644
index 9a2c58d6d..000000000
Binary files a/multisrc/overrides/hentaihand/hentaihand/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/hentaihand/hentaisphere/res/web_hi_res_512.png b/multisrc/overrides/hentaihand/hentaisphere/res/web_hi_res_512.png
deleted file mode 100644
index 0d9f6f3b7..000000000
Binary files a/multisrc/overrides/hentaihand/hentaisphere/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/hentaihand/manhwaclub/res/web_hi_res_512.png b/multisrc/overrides/hentaihand/manhwaclub/res/web_hi_res_512.png
deleted file mode 100644
index 2fa146c86..000000000
Binary files a/multisrc/overrides/hentaihand/manhwaclub/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/hentaihand/nhentaicom/res/web_hi_res_512.png b/multisrc/overrides/hentaihand/nhentaicom/res/web_hi_res_512.png
deleted file mode 100644
index f3e4f213f..000000000
Binary files a/multisrc/overrides/hentaihand/nhentaicom/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/hentaihand/readmanhwa/res/web_hi_res_512.png b/multisrc/overrides/hentaihand/readmanhwa/res/web_hi_res_512.png
deleted file mode 100644
index 2c4e51d3c..000000000
Binary files a/multisrc/overrides/hentaihand/readmanhwa/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/kemono/coomer/res/web_hi_res_512.png b/multisrc/overrides/kemono/coomer/res/web_hi_res_512.png
deleted file mode 100644
index 0f401f9eb..000000000
Binary files a/multisrc/overrides/kemono/coomer/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/kemono/default/res/web_hi_res_512.png b/multisrc/overrides/kemono/default/res/web_hi_res_512.png
deleted file mode 100644
index e5cbe8a72..000000000
Binary files a/multisrc/overrides/kemono/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/libgroup/hentailib/res/web_hi_res_512.png b/multisrc/overrides/libgroup/hentailib/res/web_hi_res_512.png
deleted file mode 100644
index ace364704..000000000
Binary files a/multisrc/overrides/libgroup/hentailib/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/libgroup/mangalib/res/web_hi_res_512.png b/multisrc/overrides/libgroup/mangalib/res/web_hi_res_512.png
deleted file mode 100644
index 4963da6f8..000000000
Binary files a/multisrc/overrides/libgroup/mangalib/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/libgroup/yaoilib/res/web_hi_res_512.png b/multisrc/overrides/libgroup/yaoilib/res/web_hi_res_512.png
deleted file mode 100644
index 6b6759355..000000000
Binary files a/multisrc/overrides/libgroup/yaoilib/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/adonisfansub/res/web_hi_res_512.png b/multisrc/overrides/madara/adonisfansub/res/web_hi_res_512.png
deleted file mode 100644
index d9c77d336..000000000
Binary files a/multisrc/overrides/madara/adonisfansub/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/adultwebtoon/res/web_hi_res_512.png b/multisrc/overrides/madara/adultwebtoon/res/web_hi_res_512.png
deleted file mode 100644
index 60fea3af4..000000000
Binary files a/multisrc/overrides/madara/adultwebtoon/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/akumanga/res/web_hi_res_512.png b/multisrc/overrides/madara/akumanga/res/web_hi_res_512.png
deleted file mode 100644
index ee37f2220..000000000
Binary files a/multisrc/overrides/madara/akumanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/akuzenaiarts/res/web_hi_res_512.png b/multisrc/overrides/madara/akuzenaiarts/res/web_hi_res_512.png
deleted file mode 100644
index 94e20bd1f..000000000
Binary files a/multisrc/overrides/madara/akuzenaiarts/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/allporncomic/res/web_hi_res_512.png b/multisrc/overrides/madara/allporncomic/res/web_hi_res_512.png
deleted file mode 100644
index 8a6d006d7..000000000
Binary files a/multisrc/overrides/madara/allporncomic/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/anikiga/res/web_hi_res_512.png b/multisrc/overrides/madara/anikiga/res/web_hi_res_512.png
deleted file mode 100644
index 425da497e..000000000
Binary files a/multisrc/overrides/madara/anikiga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/anisamanga/res/web_hi_res_512.png b/multisrc/overrides/madara/anisamanga/res/web_hi_res_512.png
deleted file mode 100644
index 673b88e3e..000000000
Binary files a/multisrc/overrides/madara/anisamanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/anshscans/res/web_hi_res_512.png b/multisrc/overrides/madara/anshscans/res/web_hi_res_512.png
deleted file mode 100644
index 2e76822bf..000000000
Binary files a/multisrc/overrides/madara/anshscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/apollcomics/res/web_hi_res_512.png b/multisrc/overrides/madara/apollcomics/res/web_hi_res_512.png
deleted file mode 100644
index fdc03274e..000000000
Binary files a/multisrc/overrides/madara/apollcomics/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/apolltoons/res/web_hi_res_512.png b/multisrc/overrides/madara/apolltoons/res/web_hi_res_512.png
deleted file mode 100644
index 6d285f76d..000000000
Binary files a/multisrc/overrides/madara/apolltoons/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/aquamanga/res/web_hi_res_512.png b/multisrc/overrides/madara/aquamanga/res/web_hi_res_512.png
deleted file mode 100644
index f2f4d1d98..000000000
Binary files a/multisrc/overrides/madara/aquamanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/arabtoons/res/web_hi_res_512.png b/multisrc/overrides/madara/arabtoons/res/web_hi_res_512.png
deleted file mode 100644
index c681a1ad1..000000000
Binary files a/multisrc/overrides/madara/arabtoons/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/araznovel/res/web_hi_res_512.png b/multisrc/overrides/madara/araznovel/res/web_hi_res_512.png
deleted file mode 100644
index 576ca90e4..000000000
Binary files a/multisrc/overrides/madara/araznovel/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/arcanescans/res/web_hi_res_512.png b/multisrc/overrides/madara/arcanescans/res/web_hi_res_512.png
deleted file mode 100644
index 87716454e..000000000
Binary files a/multisrc/overrides/madara/arcanescans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/archerscans/res/web_hi_res_512.png b/multisrc/overrides/madara/archerscans/res/web_hi_res_512.png
deleted file mode 100644
index d97452a25..000000000
Binary files a/multisrc/overrides/madara/archerscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/arthurscan/res/web_hi_res_512.png b/multisrc/overrides/madara/arthurscan/res/web_hi_res_512.png
deleted file mode 100644
index 7a7994716..000000000
Binary files a/multisrc/overrides/madara/arthurscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/astrallibrary/res/web_hi_res_512.png b/multisrc/overrides/madara/astrallibrary/res/web_hi_res_512.png
deleted file mode 100644
index 8de6c6ba1..000000000
Binary files a/multisrc/overrides/madara/astrallibrary/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/astralmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/astralmanga/res/web_hi_res_512.png
deleted file mode 100644
index e989911fb..000000000
Binary files a/multisrc/overrides/madara/astralmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/asurascansus/res/web_hi_res_512.png b/multisrc/overrides/madara/asurascansus/res/web_hi_res_512.png
deleted file mode 100644
index 688ccf4f0..000000000
Binary files a/multisrc/overrides/madara/asurascansus/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/atlantisscan/res/web_hi_res_512.png b/multisrc/overrides/madara/atlantisscan/res/web_hi_res_512.png
deleted file mode 100644
index 45c43a06a..000000000
Binary files a/multisrc/overrides/madara/atlantisscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/azmanhwa/res/web_hi_res_512.png b/multisrc/overrides/madara/azmanhwa/res/web_hi_res_512.png
deleted file mode 100644
index be3ae7464..000000000
Binary files a/multisrc/overrides/madara/azmanhwa/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/azora/res/web_hi_res_512.png b/multisrc/overrides/madara/azora/res/web_hi_res_512.png
deleted file mode 100644
index bb0f0d57e..000000000
Binary files a/multisrc/overrides/madara/azora/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/babelwuxia/res/web_hi_res_512.png b/multisrc/overrides/madara/babelwuxia/res/web_hi_res_512.png
deleted file mode 100644
index c7fba670a..000000000
Binary files a/multisrc/overrides/madara/babelwuxia/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/bakaman/res/web_hi_res_512.png b/multisrc/overrides/madara/bakaman/res/web_hi_res_512.png
deleted file mode 100644
index e5c98137b..000000000
Binary files a/multisrc/overrides/madara/bakaman/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/bakamh/res/web_hi_res_512.png b/multisrc/overrides/madara/bakamh/res/web_hi_res_512.png
deleted file mode 100644
index 938842a0d..000000000
Binary files a/multisrc/overrides/madara/bakamh/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/bananamanga/res/web_hi_res_512.png b/multisrc/overrides/madara/bananamanga/res/web_hi_res_512.png
deleted file mode 100644
index e07dd4031..000000000
Binary files a/multisrc/overrides/madara/bananamanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/barmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/barmanga/res/web_hi_res_512.png
deleted file mode 100644
index ccc6ce08b..000000000
Binary files a/multisrc/overrides/madara/barmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/bestmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/bestmanga/res/web_hi_res_512.png
deleted file mode 100644
index 31a327be2..000000000
Binary files a/multisrc/overrides/madara/bestmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/bestmanhua/res/web_hi_res_512.png b/multisrc/overrides/madara/bestmanhua/res/web_hi_res_512.png
deleted file mode 100644
index 6882d5de3..000000000
Binary files a/multisrc/overrides/madara/bestmanhua/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/birdtoon/res/web_hi_res_512.png b/multisrc/overrides/madara/birdtoon/res/web_hi_res_512.png
deleted file mode 100644
index 7f6a66fb2..000000000
Binary files a/multisrc/overrides/madara/birdtoon/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/blogmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/blogmanga/res/web_hi_res_512.png
deleted file mode 100644
index e9a3cf259..000000000
Binary files a/multisrc/overrides/madara/blogmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/bluesolo/res/web_hi_res_512.png b/multisrc/overrides/madara/bluesolo/res/web_hi_res_512.png
deleted file mode 100644
index e3f91b4ed..000000000
Binary files a/multisrc/overrides/madara/bluesolo/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/bokugentranslation/res/web_hi_res_512.png b/multisrc/overrides/madara/bokugentranslation/res/web_hi_res_512.png
deleted file mode 100644
index b50481c74..000000000
Binary files a/multisrc/overrides/madara/bokugentranslation/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/borutoexplorer/res/web_hi_res_512.png b/multisrc/overrides/madara/borutoexplorer/res/web_hi_res_512.png
deleted file mode 100644
index 2201d3d8d..000000000
Binary files a/multisrc/overrides/madara/borutoexplorer/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/boyslove/res/web_hi_res_512.png b/multisrc/overrides/madara/boyslove/res/web_hi_res_512.png
deleted file mode 100644
index 6297fb06d..000000000
Binary files a/multisrc/overrides/madara/boyslove/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/cat300/res/web_hi_res_512.png b/multisrc/overrides/madara/cat300/res/web_hi_res_512.png
deleted file mode 100644
index d1a00f726..000000000
Binary files a/multisrc/overrides/madara/cat300/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/catonheadtranslations/res/web_hi_res_512.png b/multisrc/overrides/madara/catonheadtranslations/res/web_hi_res_512.png
deleted file mode 100644
index b4ebe461a..000000000
Binary files a/multisrc/overrides/madara/catonheadtranslations/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/cattranslator/res/web_hi_res_512.png b/multisrc/overrides/madara/cattranslator/res/web_hi_res_512.png
deleted file mode 100644
index 881cdb0a4..000000000
Binary files a/multisrc/overrides/madara/cattranslator/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/cerisescans/res/web_hi_res_512.png b/multisrc/overrides/madara/cerisescans/res/web_hi_res_512.png
deleted file mode 100644
index 40e649e15..000000000
Binary files a/multisrc/overrides/madara/cerisescans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/cizgiromanarsivi/res/web_hi_res_512.png b/multisrc/overrides/madara/cizgiromanarsivi/res/web_hi_res_512.png
deleted file mode 100644
index 3d8565a10..000000000
Binary files a/multisrc/overrides/madara/cizgiromanarsivi/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/clovermanga/res/web_hi_res_512.png b/multisrc/overrides/madara/clovermanga/res/web_hi_res_512.png
deleted file mode 100644
index 53a1a272a..000000000
Binary files a/multisrc/overrides/madara/clovermanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/cocorip/res/web_hi_res_512.png b/multisrc/overrides/madara/cocorip/res/web_hi_res_512.png
deleted file mode 100644
index 50f591bdc..000000000
Binary files a/multisrc/overrides/madara/cocorip/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/coffeemanga/res/web_hi_res_512.png b/multisrc/overrides/madara/coffeemanga/res/web_hi_res_512.png
deleted file mode 100644
index 1dc0d24e4..000000000
Binary files a/multisrc/overrides/madara/coffeemanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/coffeemangatop/res/web_hi_res_512.png b/multisrc/overrides/madara/coffeemangatop/res/web_hi_res_512.png
deleted file mode 100644
index dae6bccb4..000000000
Binary files a/multisrc/overrides/madara/coffeemangatop/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/coloredmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/coloredmanga/res/web_hi_res_512.png
deleted file mode 100644
index 0d2534635..000000000
Binary files a/multisrc/overrides/madara/coloredmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/comicarab/res/web_hi_res_512.png b/multisrc/overrides/madara/comicarab/res/web_hi_res_512.png
deleted file mode 100644
index 41b33859c..000000000
Binary files a/multisrc/overrides/madara/comicarab/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/comicsvalley/res/web_hi_res_512.png b/multisrc/overrides/madara/comicsvalley/res/web_hi_res_512.png
deleted file mode 100644
index f38128a3f..000000000
Binary files a/multisrc/overrides/madara/comicsvalley/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/comicsworld/res/web_hi_res_512.png b/multisrc/overrides/madara/comicsworld/res/web_hi_res_512.png
deleted file mode 100644
index bde0e674d..000000000
Binary files a/multisrc/overrides/madara/comicsworld/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/comicznetv2/res/web_hi_res_512.png b/multisrc/overrides/madara/comicznetv2/res/web_hi_res_512.png
deleted file mode 100644
index 081e77762..000000000
Binary files a/multisrc/overrides/madara/comicznetv2/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/cookiekiara/res/web_hi_res_512.png b/multisrc/overrides/madara/cookiekiara/res/web_hi_res_512.png
deleted file mode 100644
index 8d8d9f2c1..000000000
Binary files a/multisrc/overrides/madara/cookiekiara/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/copypastescan/res/web_hi_res_512.png b/multisrc/overrides/madara/copypastescan/res/web_hi_res_512.png
deleted file mode 100644
index af8ece1f0..000000000
Binary files a/multisrc/overrides/madara/copypastescan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/creepyscans/res/web_hi_res_512.png b/multisrc/overrides/madara/creepyscans/res/web_hi_res_512.png
deleted file mode 100644
index 6ac625b8b..000000000
Binary files a/multisrc/overrides/madara/creepyscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/daprob/res/web_hi_res_512.png b/multisrc/overrides/madara/daprob/res/web_hi_res_512.png
deleted file mode 100644
index cd85d05ae..000000000
Binary files a/multisrc/overrides/madara/daprob/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/darkscans/res/web_hi_res_512.png b/multisrc/overrides/madara/darkscans/res/web_hi_res_512.png
deleted file mode 100644
index 012928faa..000000000
Binary files a/multisrc/overrides/madara/darkscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/decadencescans/res/web_hi_res_512.png b/multisrc/overrides/madara/decadencescans/res/web_hi_res_512.png
deleted file mode 100644
index 032a3db93..000000000
Binary files a/multisrc/overrides/madara/decadencescans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/default/additional.gradle b/multisrc/overrides/madara/default/additional.gradle
index 214a0df0e..48c2499a0 100644
--- a/multisrc/overrides/madara/default/additional.gradle
+++ b/multisrc/overrides/madara/default/additional.gradle
@@ -1,4 +1,4 @@
dependencies {
- implementation(project(":lib-cryptoaes"))
- implementation(project(":lib-randomua"))
+ implementation(project(":lib:cryptoaes"))
+ implementation(project(":lib:randomua"))
}
diff --git a/multisrc/overrides/madara/default/res/web_hi_res_512.png b/multisrc/overrides/madara/default/res/web_hi_res_512.png
deleted file mode 100644
index a62cfe72f..000000000
Binary files a/multisrc/overrides/madara/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/detectiveconanar/res/web_hi_res_512.png b/multisrc/overrides/madara/detectiveconanar/res/web_hi_res_512.png
deleted file mode 100644
index 3fb5ff0c0..000000000
Binary files a/multisrc/overrides/madara/detectiveconanar/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/diamondfansub/res/web_hi_res_512.png b/multisrc/overrides/madara/diamondfansub/res/web_hi_res_512.png
deleted file mode 100644
index bd53d5283..000000000
Binary files a/multisrc/overrides/madara/diamondfansub/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/dokkomanga/res/web_hi_res_512.png b/multisrc/overrides/madara/dokkomanga/res/web_hi_res_512.png
deleted file mode 100644
index 924bb7c0e..000000000
Binary files a/multisrc/overrides/madara/dokkomanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/doodmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/doodmanga/res/web_hi_res_512.png
deleted file mode 100644
index bbbb26f18..000000000
Binary files a/multisrc/overrides/madara/doodmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/doujinhentai/res/web_hi_res_512.png b/multisrc/overrides/madara/doujinhentai/res/web_hi_res_512.png
deleted file mode 100644
index b11aff911..000000000
Binary files a/multisrc/overrides/madara/doujinhentai/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/dragontea/res/web_hi_res_512.png b/multisrc/overrides/madara/dragontea/res/web_hi_res_512.png
deleted file mode 100644
index 845fde910..000000000
Binary files a/multisrc/overrides/madara/dragontea/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/dragontranslationnet/res/web_hi_res_512.png b/multisrc/overrides/madara/dragontranslationnet/res/web_hi_res_512.png
deleted file mode 100644
index b39ae07d2..000000000
Binary files a/multisrc/overrides/madara/dragontranslationnet/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/drakescans/res/web_hi_res_512.png b/multisrc/overrides/madara/drakescans/res/web_hi_res_512.png
deleted file mode 100644
index 144e10722..000000000
Binary files a/multisrc/overrides/madara/drakescans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/dreammanga/res/web_hi_res_512.png b/multisrc/overrides/madara/dreammanga/res/web_hi_res_512.png
deleted file mode 100644
index 5d2402819..000000000
Binary files a/multisrc/overrides/madara/dreammanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/dropescan/res/web_hi_res_512.png b/multisrc/overrides/madara/dropescan/res/web_hi_res_512.png
deleted file mode 100644
index ee89747c3..000000000
Binary files a/multisrc/overrides/madara/dropescan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/elitemanga/res/web_hi_res_512.png b/multisrc/overrides/madara/elitemanga/res/web_hi_res_512.png
deleted file mode 100644
index eee33c177..000000000
Binary files a/multisrc/overrides/madara/elitemanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/emperorscan/res/web_hi_res_512.png b/multisrc/overrides/madara/emperorscan/res/web_hi_res_512.png
deleted file mode 100644
index ea4563f31..000000000
Binary files a/multisrc/overrides/madara/emperorscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/empirewebtoon/res/web_hi_res_512.png b/multisrc/overrides/madara/empirewebtoon/res/web_hi_res_512.png
deleted file mode 100644
index f6793c742..000000000
Binary files a/multisrc/overrides/madara/empirewebtoon/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/eromiau/res/web_hi_res_512.png b/multisrc/overrides/madara/eromiau/res/web_hi_res_512.png
deleted file mode 100644
index 3056569c6..000000000
Binary files a/multisrc/overrides/madara/eromiau/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/esomanga/res/web_hi_res_512.png b/multisrc/overrides/madara/esomanga/res/web_hi_res_512.png
deleted file mode 100644
index 67088a0c7..000000000
Binary files a/multisrc/overrides/madara/esomanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/evascans/res/web_hi_res_512.png b/multisrc/overrides/madara/evascans/res/web_hi_res_512.png
deleted file mode 100644
index c25804179..000000000
Binary files a/multisrc/overrides/madara/evascans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/factmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/factmanga/res/web_hi_res_512.png
deleted file mode 100644
index 08868e573..000000000
Binary files a/multisrc/overrides/madara/factmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/falconmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/falconmanga/res/web_hi_res_512.png
deleted file mode 100644
index ac86b8566..000000000
Binary files a/multisrc/overrides/madara/falconmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/fayscans/res/web_hi_res_512.png b/multisrc/overrides/madara/fayscans/res/web_hi_res_512.png
deleted file mode 100644
index 618dcd51a..000000000
Binary files a/multisrc/overrides/madara/fayscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/finalscans/res/web_hi_res_512.png b/multisrc/overrides/madara/finalscans/res/web_hi_res_512.png
deleted file mode 100644
index 4a74da996..000000000
Binary files a/multisrc/overrides/madara/finalscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/firescans/res/web_hi_res_512.png b/multisrc/overrides/madara/firescans/res/web_hi_res_512.png
deleted file mode 100644
index e06e29a8a..000000000
Binary files a/multisrc/overrides/madara/firescans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/firstkissdashmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/firstkissdashmanga/res/web_hi_res_512.png
deleted file mode 100644
index c9559e92f..000000000
Binary files a/multisrc/overrides/madara/firstkissdashmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/firstkissmangablog/res/web_hi_res_512.png b/multisrc/overrides/madara/firstkissmangablog/res/web_hi_res_512.png
deleted file mode 100644
index a624bd17d..000000000
Binary files a/multisrc/overrides/madara/firstkissmangablog/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/firstkissmangaclub/res/web_hi_res_512.png b/multisrc/overrides/madara/firstkissmangaclub/res/web_hi_res_512.png
deleted file mode 100644
index 92587e7c0..000000000
Binary files a/multisrc/overrides/madara/firstkissmangaclub/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/firstkissmangatv/res/web_hi_res_512.png b/multisrc/overrides/madara/firstkissmangatv/res/web_hi_res_512.png
deleted file mode 100644
index 2f86f7755..000000000
Binary files a/multisrc/overrides/madara/firstkissmangatv/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/firstmanhwa/res/web_hi_res_512.png b/multisrc/overrides/madara/firstmanhwa/res/web_hi_res_512.png
deleted file mode 100644
index 0d4551248..000000000
Binary files a/multisrc/overrides/madara/firstmanhwa/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/fleurblanche/res/web_hi_res_512.png b/multisrc/overrides/madara/fleurblanche/res/web_hi_res_512.png
deleted file mode 100644
index 968834342..000000000
Binary files a/multisrc/overrides/madara/fleurblanche/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/flextapescans/res/web_hi_res_512.png b/multisrc/overrides/madara/flextapescans/res/web_hi_res_512.png
deleted file mode 100644
index 181cc58c6..000000000
Binary files a/multisrc/overrides/madara/flextapescans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/foxwhite/res/web_hi_res_512.png b/multisrc/overrides/madara/foxwhite/res/web_hi_res_512.png
deleted file mode 100644
index db22f79a9..000000000
Binary files a/multisrc/overrides/madara/foxwhite/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/frdashscan/res/web_hi_res_512.png b/multisrc/overrides/madara/frdashscan/res/web_hi_res_512.png
deleted file mode 100644
index 55ef17f48..000000000
Binary files a/multisrc/overrides/madara/frdashscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/freemanga/res/web_hi_res_512.png b/multisrc/overrides/madara/freemanga/res/web_hi_res_512.png
deleted file mode 100644
index 3f741f09c..000000000
Binary files a/multisrc/overrides/madara/freemanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/freemanhwa/res/web_hi_res_512.png b/multisrc/overrides/madara/freemanhwa/res/web_hi_res_512.png
deleted file mode 100644
index 15f3102c8..000000000
Binary files a/multisrc/overrides/madara/freemanhwa/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/freewebtooncoins/res/web_hi_res_512.png b/multisrc/overrides/madara/freewebtooncoins/res/web_hi_res_512.png
deleted file mode 100644
index af03ed77c..000000000
Binary files a/multisrc/overrides/madara/freewebtooncoins/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/galaxydegenscans/res/web_hi_res_512.png b/multisrc/overrides/madara/galaxydegenscans/res/web_hi_res_512.png
deleted file mode 100644
index 3fbec01bc..000000000
Binary files a/multisrc/overrides/madara/galaxydegenscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/gatemanga/res/web_hi_res_512.png b/multisrc/overrides/madara/gatemanga/res/web_hi_res_512.png
deleted file mode 100644
index 6a9a3dc69..000000000
Binary files a/multisrc/overrides/madara/gatemanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/gekkouscan/res/web_hi_res_512.png b/multisrc/overrides/madara/gekkouscan/res/web_hi_res_512.png
deleted file mode 100644
index 8ec9354b4..000000000
Binary files a/multisrc/overrides/madara/gekkouscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/girlslovemanga/res/web_hi_res_512.png b/multisrc/overrides/madara/girlslovemanga/res/web_hi_res_512.png
deleted file mode 100644
index 6f26e4d46..000000000
Binary files a/multisrc/overrides/madara/girlslovemanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/glorymanga/res/web_hi_res_512.png b/multisrc/overrides/madara/glorymanga/res/web_hi_res_512.png
deleted file mode 100644
index f42e96b35..000000000
Binary files a/multisrc/overrides/madara/glorymanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/goodgirlsscan/res/web_hi_res_512.png b/multisrc/overrides/madara/goodgirlsscan/res/web_hi_res_512.png
deleted file mode 100644
index f5ea283b4..000000000
Binary files a/multisrc/overrides/madara/goodgirlsscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/gooffansub/res/web_hi_res_512.png b/multisrc/overrides/madara/gooffansub/res/web_hi_res_512.png
deleted file mode 100644
index 0feb8d0a8..000000000
Binary files a/multisrc/overrides/madara/gooffansub/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/grabberzone/res/web_hi_res_512.png b/multisrc/overrides/madara/grabberzone/res/web_hi_res_512.png
deleted file mode 100644
index f831ed685..000000000
Binary files a/multisrc/overrides/madara/grabberzone/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/guncelmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/guncelmanga/res/web_hi_res_512.png
deleted file mode 100644
index 68a951953..000000000
Binary files a/multisrc/overrides/madara/guncelmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hadesnofansub/res/web_hi_res_512.png b/multisrc/overrides/madara/hadesnofansub/res/web_hi_res_512.png
deleted file mode 100644
index 5467903eb..000000000
Binary files a/multisrc/overrides/madara/hadesnofansub/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hadesnofansubhentai/res/web_hi_res_512.png b/multisrc/overrides/madara/hadesnofansubhentai/res/web_hi_res_512.png
deleted file mode 100644
index 5467903eb..000000000
Binary files a/multisrc/overrides/madara/hadesnofansubhentai/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/harimanga/res/web_hi_res_512.png b/multisrc/overrides/madara/harimanga/res/web_hi_res_512.png
deleted file mode 100644
index 36a125aa3..000000000
Binary files a/multisrc/overrides/madara/harimanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hattorimanga/res/web_hi_res_512.png b/multisrc/overrides/madara/hattorimanga/res/web_hi_res_512.png
deleted file mode 100644
index 89d2a6ba0..000000000
Binary files a/multisrc/overrides/madara/hattorimanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hayalistic/res/web_hi_res_512.png b/multisrc/overrides/madara/hayalistic/res/web_hi_res_512.png
deleted file mode 100644
index 4fece056a..000000000
Binary files a/multisrc/overrides/madara/hayalistic/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hentai20/res/web_hi_res_512.png b/multisrc/overrides/madara/hentai20/res/web_hi_res_512.png
deleted file mode 100644
index a108f7186..000000000
Binary files a/multisrc/overrides/madara/hentai20/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hentai3z/res/web_hi_res_512.png b/multisrc/overrides/madara/hentai3z/res/web_hi_res_512.png
deleted file mode 100644
index a6f227e83..000000000
Binary files a/multisrc/overrides/madara/hentai3z/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hentai4free/res/web_hi_res_512.png b/multisrc/overrides/madara/hentai4free/res/web_hi_res_512.png
deleted file mode 100644
index 13412e22b..000000000
Binary files a/multisrc/overrides/madara/hentai4free/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hentaicube/res/web_hi_res_512.png b/multisrc/overrides/madara/hentaicube/res/web_hi_res_512.png
deleted file mode 100644
index cc3958a38..000000000
Binary files a/multisrc/overrides/madara/hentaicube/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hentaimanga/res/web_hi_res_512.png b/multisrc/overrides/madara/hentaimanga/res/web_hi_res_512.png
deleted file mode 100644
index bc66167b8..000000000
Binary files a/multisrc/overrides/madara/hentaimanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hentairead/res/web_hi_res_512.png b/multisrc/overrides/madara/hentairead/res/web_hi_res_512.png
deleted file mode 100644
index 075e8bee4..000000000
Binary files a/multisrc/overrides/madara/hentairead/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hentaiscantrad/res/web_hi_res_512.png b/multisrc/overrides/madara/hentaiscantrad/res/web_hi_res_512.png
deleted file mode 100644
index 5302c3131..000000000
Binary files a/multisrc/overrides/madara/hentaiscantrad/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hentaiwebtoon/res/web_hi_res_512.png b/multisrc/overrides/madara/hentaiwebtoon/res/web_hi_res_512.png
deleted file mode 100644
index f4f560d71..000000000
Binary files a/multisrc/overrides/madara/hentaiwebtoon/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hentaixcomic/res/web_hi_res_512.png b/multisrc/overrides/madara/hentaixcomic/res/web_hi_res_512.png
deleted file mode 100644
index 9c8ca45e9..000000000
Binary files a/multisrc/overrides/madara/hentaixcomic/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hentaixdickgirl/res/web_hi_res_512.png b/multisrc/overrides/madara/hentaixdickgirl/res/web_hi_res_512.png
deleted file mode 100644
index 520536178..000000000
Binary files a/multisrc/overrides/madara/hentaixdickgirl/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hentaixyuri/res/web_hi_res_512.png b/multisrc/overrides/madara/hentaixyuri/res/web_hi_res_512.png
deleted file mode 100644
index 5da408088..000000000
Binary files a/multisrc/overrides/madara/hentaixyuri/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hentaizone/res/web_hi_res_512.png b/multisrc/overrides/madara/hentaizone/res/web_hi_res_512.png
deleted file mode 100644
index 1f002cf5e..000000000
Binary files a/multisrc/overrides/madara/hentaizone/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/herenscan/res/web_hi_res_512.png b/multisrc/overrides/madara/herenscan/res/web_hi_res_512.png
deleted file mode 100644
index e8a6308df..000000000
Binary files a/multisrc/overrides/madara/herenscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hipercool/res/web_hi_res_512.png b/multisrc/overrides/madara/hipercool/res/web_hi_res_512.png
deleted file mode 100644
index 0843ac4cb..000000000
Binary files a/multisrc/overrides/madara/hipercool/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hiperdex/res/web_hi_res_512.png b/multisrc/overrides/madara/hiperdex/res/web_hi_res_512.png
deleted file mode 100644
index 073470d4d..000000000
Binary files a/multisrc/overrides/madara/hiperdex/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/histoiredhentai/res/web_hi_res_512.png b/multisrc/overrides/madara/histoiredhentai/res/web_hi_res_512.png
deleted file mode 100644
index 15b33efd5..000000000
Binary files a/multisrc/overrides/madara/histoiredhentai/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hizomanga/res/web_hi_res_512.png b/multisrc/overrides/madara/hizomanga/res/web_hi_res_512.png
deleted file mode 100644
index 9a157af65..000000000
Binary files a/multisrc/overrides/madara/hizomanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hm2d/res/web_hi_res_512.png b/multisrc/overrides/madara/hm2d/res/web_hi_res_512.png
deleted file mode 100644
index 10f163e23..000000000
Binary files a/multisrc/overrides/madara/hm2d/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hmanhwa/res/web_hi_res_512.png b/multisrc/overrides/madara/hmanhwa/res/web_hi_res_512.png
deleted file mode 100644
index 5b9eddfde..000000000
Binary files a/multisrc/overrides/madara/hmanhwa/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/housemangas/res/web_hi_res_512.png b/multisrc/overrides/madara/housemangas/res/web_hi_res_512.png
deleted file mode 100644
index f91e7a213..000000000
Binary files a/multisrc/overrides/madara/housemangas/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/hreads/res/web_hi_res_512.png b/multisrc/overrides/madara/hreads/res/web_hi_res_512.png
deleted file mode 100644
index 4a179ddad..000000000
Binary files a/multisrc/overrides/madara/hreads/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/ikifeng/res/web_hi_res_512.png b/multisrc/overrides/madara/ikifeng/res/web_hi_res_512.png
deleted file mode 100644
index bb3c63f40..000000000
Binary files a/multisrc/overrides/madara/ikifeng/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/illusionscan/res/web_hi_res_512.png b/multisrc/overrides/madara/illusionscan/res/web_hi_res_512.png
deleted file mode 100644
index 87f603558..000000000
Binary files a/multisrc/overrides/madara/illusionscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/ilovemanhwa/res/web_hi_res_512.png b/multisrc/overrides/madara/ilovemanhwa/res/web_hi_res_512.png
deleted file mode 100644
index bf4ba350d..000000000
Binary files a/multisrc/overrides/madara/ilovemanhwa/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/immortalupdates/res/web_hi_res_512.png b/multisrc/overrides/madara/immortalupdates/res/web_hi_res_512.png
deleted file mode 100644
index ed173018e..000000000
Binary files a/multisrc/overrides/madara/immortalupdates/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/imperioscans/res/web_hi_res_512.png b/multisrc/overrides/madara/imperioscans/res/web_hi_res_512.png
deleted file mode 100644
index 33d7b045e..000000000
Binary files a/multisrc/overrides/madara/imperioscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/infrafandub/res/web_hi_res_512.png b/multisrc/overrides/madara/infrafandub/res/web_hi_res_512.png
deleted file mode 100644
index 84df1cfdf..000000000
Binary files a/multisrc/overrides/madara/infrafandub/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/inmortalscan/res/web_hi_res_512.png b/multisrc/overrides/madara/inmortalscan/res/web_hi_res_512.png
deleted file mode 100644
index 3cf25fe19..000000000
Binary files a/multisrc/overrides/madara/inmortalscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/instamanhwa/res/web_hi_res_512.png b/multisrc/overrides/madara/instamanhwa/res/web_hi_res_512.png
deleted file mode 100644
index 81bc4a6c4..000000000
Binary files a/multisrc/overrides/madara/instamanhwa/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/isekaiscancom/res/web_hi_res_512.png b/multisrc/overrides/madara/isekaiscancom/res/web_hi_res_512.png
deleted file mode 100644
index 6d008f059..000000000
Binary files a/multisrc/overrides/madara/isekaiscancom/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/isekaiscaneu/res/web_hi_res_512.png b/multisrc/overrides/madara/isekaiscaneu/res/web_hi_res_512.png
deleted file mode 100644
index 23fbe992d..000000000
Binary files a/multisrc/overrides/madara/isekaiscaneu/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/isekaiscanmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/isekaiscanmanga/res/web_hi_res_512.png
deleted file mode 100644
index 9c57e4179..000000000
Binary files a/multisrc/overrides/madara/isekaiscanmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/isekaiscantop/res/web_hi_res_512.png b/multisrc/overrides/madara/isekaiscantop/res/web_hi_res_512.png
deleted file mode 100644
index 8dd18f43e..000000000
Binary files a/multisrc/overrides/madara/isekaiscantop/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/itsyourrightmanhua/res/web_hi_res_512.png b/multisrc/overrides/madara/itsyourrightmanhua/res/web_hi_res_512.png
deleted file mode 100644
index a4aae16ee..000000000
Binary files a/multisrc/overrides/madara/itsyourrightmanhua/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/kamisamaexplorer/res/web_hi_res_512.png b/multisrc/overrides/madara/kamisamaexplorer/res/web_hi_res_512.png
deleted file mode 100644
index 1ca38eb53..000000000
Binary files a/multisrc/overrides/madara/kamisamaexplorer/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/karatcamscans/res/web_hi_res_512.png b/multisrc/overrides/madara/karatcamscans/res/web_hi_res_512.png
deleted file mode 100644
index f8dc87ea0..000000000
Binary files a/multisrc/overrides/madara/karatcamscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/kataitake/res/web_hi_res_512.png b/multisrc/overrides/madara/kataitake/res/web_hi_res_512.png
deleted file mode 100644
index 6b3e83781..000000000
Binary files a/multisrc/overrides/madara/kataitake/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/kawascans/res/web_hi_res_512.png b/multisrc/overrides/madara/kawascans/res/web_hi_res_512.png
deleted file mode 100644
index 8c3e900c2..000000000
Binary files a/multisrc/overrides/madara/kawascans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/kenhuascan/res/web_hi_res_512.png b/multisrc/overrides/madara/kenhuascan/res/web_hi_res_512.png
deleted file mode 100644
index 1d0dc80ea..000000000
Binary files a/multisrc/overrides/madara/kenhuascan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/kingsmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/kingsmanga/res/web_hi_res_512.png
deleted file mode 100644
index c15978aa1..000000000
Binary files a/multisrc/overrides/madara/kingsmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/kissmangain/res/web_hi_res_512.png b/multisrc/overrides/madara/kissmangain/res/web_hi_res_512.png
deleted file mode 100644
index 057c59e14..000000000
Binary files a/multisrc/overrides/madara/kissmangain/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/klikmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/klikmanga/res/web_hi_res_512.png
deleted file mode 100644
index 8a18d4dfe..000000000
Binary files a/multisrc/overrides/madara/klikmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/koinoboriscan/res/web_hi_res_512.png b/multisrc/overrides/madara/koinoboriscan/res/web_hi_res_512.png
deleted file mode 100644
index 54ec5ad66..000000000
Binary files a/multisrc/overrides/madara/koinoboriscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/komikchan/res/web_hi_res_512.png b/multisrc/overrides/madara/komikchan/res/web_hi_res_512.png
deleted file mode 100644
index 779a5a0a5..000000000
Binary files a/multisrc/overrides/madara/komikchan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/komikgue/res/web_hi_res_512.png b/multisrc/overrides/madara/komikgue/res/web_hi_res_512.png
deleted file mode 100644
index 2a283540a..000000000
Binary files a/multisrc/overrides/madara/komikgue/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/komikrame/res/web_hi_res_512.png b/multisrc/overrides/madara/komikrame/res/web_hi_res_512.png
deleted file mode 100644
index e6ebec60e..000000000
Binary files a/multisrc/overrides/madara/komikrame/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/ksgroupscans/res/web_hi_res_512.png b/multisrc/overrides/madara/ksgroupscans/res/web_hi_res_512.png
deleted file mode 100644
index e4994fbed..000000000
Binary files a/multisrc/overrides/madara/ksgroupscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/kunmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/kunmanga/res/web_hi_res_512.png
deleted file mode 100644
index 88a572a3e..000000000
Binary files a/multisrc/overrides/madara/kunmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/lalamanga/res/web_hi_res_512.png b/multisrc/overrides/madara/lalamanga/res/web_hi_res_512.png
deleted file mode 100644
index cb084c124..000000000
Binary files a/multisrc/overrides/madara/lalamanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/laramanga/res/web_hi_res_512.png b/multisrc/overrides/madara/laramanga/res/web_hi_res_512.png
deleted file mode 100644
index cbbda4348..000000000
Binary files a/multisrc/overrides/madara/laramanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/lectormangalat/res/web_hi_res_512.png b/multisrc/overrides/madara/lectormangalat/res/web_hi_res_512.png
deleted file mode 100644
index a1283b4ac..000000000
Binary files a/multisrc/overrides/madara/lectormangalat/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/leviatanscans/res/web_hi_res_512.png b/multisrc/overrides/madara/leviatanscans/res/web_hi_res_512.png
deleted file mode 100644
index 76b4aaaf1..000000000
Binary files a/multisrc/overrides/madara/leviatanscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/lhtranslation/res/web_hi_res_512.png b/multisrc/overrides/madara/lhtranslation/res/web_hi_res_512.png
deleted file mode 100644
index 4848e91b2..000000000
Binary files a/multisrc/overrides/madara/lhtranslation/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/lilymanga/res/web_hi_res_512.png b/multisrc/overrides/madara/lilymanga/res/web_hi_res_512.png
deleted file mode 100644
index f746f4918..000000000
Binary files a/multisrc/overrides/madara/lilymanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/lkscanlation/res/web_hi_res_512.png b/multisrc/overrides/madara/lkscanlation/res/web_hi_res_512.png
deleted file mode 100644
index 6883f143b..000000000
Binary files a/multisrc/overrides/madara/lkscanlation/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/lolicon/res/web_hi_res_512.png b/multisrc/overrides/madara/lolicon/res/web_hi_res_512.png
deleted file mode 100644
index 31dd8f75a..000000000
Binary files a/multisrc/overrides/madara/lolicon/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/lordmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/lordmanga/res/web_hi_res_512.png
deleted file mode 100644
index 67958d28d..000000000
Binary files a/multisrc/overrides/madara/lordmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/luffymanga/res/web_hi_res_512.png b/multisrc/overrides/madara/luffymanga/res/web_hi_res_512.png
deleted file mode 100644
index 61ff34eee..000000000
Binary files a/multisrc/overrides/madara/luffymanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/madaradex/res/web_hi_res_512.png b/multisrc/overrides/madara/madaradex/res/web_hi_res_512.png
deleted file mode 100644
index e0a57d19b..000000000
Binary files a/multisrc/overrides/madara/madaradex/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manga18fx/res/web_hi_res_512.png b/multisrc/overrides/madara/manga18fx/res/web_hi_res_512.png
deleted file mode 100644
index d00490515..000000000
Binary files a/multisrc/overrides/madara/manga18fx/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manga18x/res/web_hi_res_512.png b/multisrc/overrides/madara/manga18x/res/web_hi_res_512.png
deleted file mode 100644
index 99c220a07..000000000
Binary files a/multisrc/overrides/madara/manga18x/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manga247/res/web_hi_res_512.png b/multisrc/overrides/madara/manga247/res/web_hi_res_512.png
deleted file mode 100644
index ae5b6d652..000000000
Binary files a/multisrc/overrides/madara/manga247/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manga347/res/web_hi_res_512.png b/multisrc/overrides/madara/manga347/res/web_hi_res_512.png
deleted file mode 100644
index 317663ff5..000000000
Binary files a/multisrc/overrides/madara/manga347/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manga3asq/res/web_hi_res_512.png b/multisrc/overrides/madara/manga3asq/res/web_hi_res_512.png
deleted file mode 100644
index fa03dab05..000000000
Binary files a/multisrc/overrides/madara/manga3asq/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manga3s/res/web_hi_res_512.png b/multisrc/overrides/madara/manga3s/res/web_hi_res_512.png
deleted file mode 100644
index f49672635..000000000
Binary files a/multisrc/overrides/madara/manga3s/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manga68/res/web_hi_res_512.png b/multisrc/overrides/madara/manga68/res/web_hi_res_512.png
deleted file mode 100644
index 9caac9cbf..000000000
Binary files a/multisrc/overrides/madara/manga68/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaaction/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaaction/res/web_hi_res_512.png
deleted file mode 100644
index 545a85d46..000000000
Binary files a/multisrc/overrides/madara/mangaaction/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangabaz/res/web_hi_res_512.png b/multisrc/overrides/madara/mangabaz/res/web_hi_res_512.png
deleted file mode 100644
index c474381b7..000000000
Binary files a/multisrc/overrides/madara/mangabaz/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangabee/res/web_hi_res_512.png b/multisrc/overrides/madara/mangabee/res/web_hi_res_512.png
deleted file mode 100644
index cc60e72e2..000000000
Binary files a/multisrc/overrides/madara/mangabee/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangabin/res/web_hi_res_512.png b/multisrc/overrides/madara/mangabin/res/web_hi_res_512.png
deleted file mode 100644
index 9d71dd953..000000000
Binary files a/multisrc/overrides/madara/mangabin/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangabob/res/web_hi_res_512.png b/multisrc/overrides/madara/mangabob/res/web_hi_res_512.png
deleted file mode 100644
index b52395701..000000000
Binary files a/multisrc/overrides/madara/mangabob/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaboss/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaboss/res/web_hi_res_512.png
deleted file mode 100644
index abb0b4ad7..000000000
Binary files a/multisrc/overrides/madara/mangaboss/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangacc/res/web_hi_res_512.png b/multisrc/overrides/madara/mangacc/res/web_hi_res_512.png
deleted file mode 100644
index 32f995d77..000000000
Binary files a/multisrc/overrides/madara/mangacc/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangachill/res/web_hi_res_512.png b/multisrc/overrides/madara/mangachill/res/web_hi_res_512.png
deleted file mode 100644
index ab35cbb08..000000000
Binary files a/multisrc/overrides/madara/mangachill/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaclash/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaclash/res/web_hi_res_512.png
deleted file mode 100644
index 8213bf381..000000000
Binary files a/multisrc/overrides/madara/mangaclash/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaclashtv/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaclashtv/res/web_hi_res_512.png
deleted file mode 100644
index b64f6b956..000000000
Binary files a/multisrc/overrides/madara/mangaclashtv/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangacrab/res/web_hi_res_512.png b/multisrc/overrides/madara/mangacrab/res/web_hi_res_512.png
deleted file mode 100644
index ba40fa999..000000000
Binary files a/multisrc/overrides/madara/mangacrab/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangacrazy/res/web_hi_res_512.png b/multisrc/overrides/madara/mangacrazy/res/web_hi_res_512.png
deleted file mode 100644
index 2880c3b52..000000000
Binary files a/multisrc/overrides/madara/mangacrazy/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangacultivator/res/web_hi_res_512.png b/multisrc/overrides/madara/mangacultivator/res/web_hi_res_512.png
deleted file mode 100644
index b609a612a..000000000
Binary files a/multisrc/overrides/madara/mangacultivator/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangacv/res/web_hi_res_512.png b/multisrc/overrides/madara/mangacv/res/web_hi_res_512.png
deleted file mode 100644
index 69f7e480a..000000000
Binary files a/multisrc/overrides/madara/mangacv/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangadash1001com/res/web_hi_res_512.png b/multisrc/overrides/madara/mangadash1001com/res/web_hi_res_512.png
deleted file mode 100644
index a2cb2b986..000000000
Binary files a/multisrc/overrides/madara/mangadash1001com/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangadeemak/res/web_hi_res_512.png b/multisrc/overrides/madara/mangadeemak/res/web_hi_res_512.png
deleted file mode 100644
index 9e93102b1..000000000
Binary files a/multisrc/overrides/madara/mangadeemak/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangadinotop/res/web_hi_res_512.png b/multisrc/overrides/madara/mangadinotop/res/web_hi_res_512.png
deleted file mode 100644
index a624bd17d..000000000
Binary files a/multisrc/overrides/madara/mangadinotop/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangadistrict/res/web_hi_res_512.png b/multisrc/overrides/madara/mangadistrict/res/web_hi_res_512.png
deleted file mode 100644
index eb35fee9a..000000000
Binary files a/multisrc/overrides/madara/mangadistrict/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangadiyari/res/web_hi_res_512.png b/multisrc/overrides/madara/mangadiyari/res/web_hi_res_512.png
deleted file mode 100644
index 029668419..000000000
Binary files a/multisrc/overrides/madara/mangadiyari/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangadods/res/web_hi_res_512.png b/multisrc/overrides/madara/mangadods/res/web_hi_res_512.png
deleted file mode 100644
index bbe1e2fce..000000000
Binary files a/multisrc/overrides/madara/mangadods/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangadol/res/web_hi_res_512.png b/multisrc/overrides/madara/mangadol/res/web_hi_res_512.png
deleted file mode 100644
index 72dd69fbc..000000000
Binary files a/multisrc/overrides/madara/mangadol/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaeffect/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaeffect/res/web_hi_res_512.png
deleted file mode 100644
index 9756f350c..000000000
Binary files a/multisrc/overrides/madara/mangaeffect/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangafastcom/res/web_hi_res_512.png b/multisrc/overrides/madara/mangafastcom/res/web_hi_res_512.png
deleted file mode 100644
index 384825759..000000000
Binary files a/multisrc/overrides/madara/mangafastcom/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangafenix/res/web_hi_res_512.png b/multisrc/overrides/madara/mangafenix/res/web_hi_res_512.png
deleted file mode 100644
index ee8e959b3..000000000
Binary files a/multisrc/overrides/madara/mangafenix/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangafirstonline/res/web_hi_res_512.png b/multisrc/overrides/madara/mangafirstonline/res/web_hi_res_512.png
deleted file mode 100644
index 683aba87f..000000000
Binary files a/multisrc/overrides/madara/mangafirstonline/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaforfree/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaforfree/res/web_hi_res_512.png
deleted file mode 100644
index 4a3ce3884..000000000
Binary files a/multisrc/overrides/madara/mangaforfree/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaforfreecom/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaforfreecom/res/web_hi_res_512.png
deleted file mode 100644
index 194d7cb93..000000000
Binary files a/multisrc/overrides/madara/mangaforfreecom/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangafoxfull/res/web_hi_res_512.png b/multisrc/overrides/madara/mangafoxfull/res/web_hi_res_512.png
deleted file mode 100644
index 7025642f0..000000000
Binary files a/multisrc/overrides/madara/mangafoxfull/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangafreakonline/res/web_hi_res_512.png b/multisrc/overrides/madara/mangafreakonline/res/web_hi_res_512.png
deleted file mode 100644
index 47ca8336e..000000000
Binary files a/multisrc/overrides/madara/mangafreakonline/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangagalaxy/res/web_hi_res_512.png b/multisrc/overrides/madara/mangagalaxy/res/web_hi_res_512.png
deleted file mode 100644
index 45ee4d677..000000000
Binary files a/multisrc/overrides/madara/mangagalaxy/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangagg/res/web_hi_res_512.png b/multisrc/overrides/madara/mangagg/res/web_hi_res_512.png
deleted file mode 100644
index 64603da6e..000000000
Binary files a/multisrc/overrides/madara/mangagg/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangagoyaoi/res/web_hi_res_512.png b/multisrc/overrides/madara/mangagoyaoi/res/web_hi_res_512.png
deleted file mode 100644
index a9978cae1..000000000
Binary files a/multisrc/overrides/madara/mangagoyaoi/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangahentai/res/web_hi_res_512.png b/multisrc/overrides/madara/mangahentai/res/web_hi_res_512.png
deleted file mode 100644
index 5ddd93c8c..000000000
Binary files a/multisrc/overrides/madara/mangahentai/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangahubfr/res/web_hi_res_512.png b/multisrc/overrides/madara/mangahubfr/res/web_hi_res_512.png
deleted file mode 100644
index e6c32ebe8..000000000
Binary files a/multisrc/overrides/madara/mangahubfr/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangahz/res/web_hi_res_512.png b/multisrc/overrides/madara/mangahz/res/web_hi_res_512.png
deleted file mode 100644
index b33fe9a16..000000000
Binary files a/multisrc/overrides/madara/mangahz/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangak2/res/web_hi_res_512.png b/multisrc/overrides/madara/mangak2/res/web_hi_res_512.png
deleted file mode 100644
index c47749810..000000000
Binary files a/multisrc/overrides/madara/mangak2/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangakakalotio/res/web_hi_res_512.png b/multisrc/overrides/madara/mangakakalotio/res/web_hi_res_512.png
deleted file mode 100644
index 202ad7c00..000000000
Binary files a/multisrc/overrides/madara/mangakakalotio/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangakeyfi/res/web_hi_res_512.png b/multisrc/overrides/madara/mangakeyfi/res/web_hi_res_512.png
deleted file mode 100644
index 727e2b176..000000000
Binary files a/multisrc/overrides/madara/mangakeyfi/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangakik/res/web_hi_res_512.png b/multisrc/overrides/madara/mangakik/res/web_hi_res_512.png
deleted file mode 100644
index cfeb7b925..000000000
Binary files a/multisrc/overrides/madara/mangakik/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaking/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaking/res/web_hi_res_512.png
deleted file mode 100644
index 5a5a21245..000000000
Binary files a/multisrc/overrides/madara/mangaking/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangakiss/res/web_hi_res_512.png b/multisrc/overrides/madara/mangakiss/res/web_hi_res_512.png
deleted file mode 100644
index 03366a72a..000000000
Binary files a/multisrc/overrides/madara/mangakiss/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangakitsune/res/web_hi_res_512.png b/multisrc/overrides/madara/mangakitsune/res/web_hi_res_512.png
deleted file mode 100644
index 01e809369..000000000
Binary files a/multisrc/overrides/madara/mangakitsune/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangakl/res/web_hi_res_512.png b/multisrc/overrides/madara/mangakl/res/web_hi_res_512.png
deleted file mode 100644
index 16263c0f8..000000000
Binary files a/multisrc/overrides/madara/mangakl/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangakomi/res/web_hi_res_512.png b/multisrc/overrides/madara/mangakomi/res/web_hi_res_512.png
deleted file mode 100644
index 74cd477cf..000000000
Binary files a/multisrc/overrides/madara/mangakomi/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaland/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaland/res/web_hi_res_512.png
deleted file mode 100644
index e7d3a3f40..000000000
Binary files a/multisrc/overrides/madara/mangaland/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangalek/res/web_hi_res_512.png b/multisrc/overrides/madara/mangalek/res/web_hi_res_512.png
deleted file mode 100644
index 68bdb88c2..000000000
Binary files a/multisrc/overrides/madara/mangalek/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaleks/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaleks/res/web_hi_res_512.png
deleted file mode 100644
index 242a833da..000000000
Binary files a/multisrc/overrides/madara/mangaleks/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaleveling/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaleveling/res/web_hi_res_512.png
deleted file mode 100644
index 374b9f427..000000000
Binary files a/multisrc/overrides/madara/mangaleveling/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangalinkio/res/web_hi_res_512.png b/multisrc/overrides/madara/mangalinkio/res/web_hi_res_512.png
deleted file mode 100644
index 9bc3d12b6..000000000
Binary files a/multisrc/overrides/madara/mangalinkio/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangalionz/res/web_hi_res_512.png b/multisrc/overrides/madara/mangalionz/res/web_hi_res_512.png
deleted file mode 100644
index 2ffd12834..000000000
Binary files a/multisrc/overrides/madara/mangalionz/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangalord/res/web_hi_res_512.png b/multisrc/overrides/madara/mangalord/res/web_hi_res_512.png
deleted file mode 100644
index 2093e38dc..000000000
Binary files a/multisrc/overrides/madara/mangalord/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangamammy/res/web_hi_res_512.png b/multisrc/overrides/madara/mangamammy/res/web_hi_res_512.png
deleted file mode 100644
index afa989091..000000000
Binary files a/multisrc/overrides/madara/mangamammy/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangamaniacs/res/web_hi_res_512.png b/multisrc/overrides/madara/mangamaniacs/res/web_hi_res_512.png
deleted file mode 100644
index fbc87d5a9..000000000
Binary files a/multisrc/overrides/madara/mangamaniacs/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangamitsu/res/web_hi_res_512.png b/multisrc/overrides/madara/mangamitsu/res/web_hi_res_512.png
deleted file mode 100644
index af1672eaf..000000000
Binary files a/multisrc/overrides/madara/mangamitsu/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manganelobiz/res/web_hi_res_512.png b/multisrc/overrides/madara/manganelobiz/res/web_hi_res_512.png
deleted file mode 100644
index a624bd17d..000000000
Binary files a/multisrc/overrides/madara/manganelobiz/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manganelowebsite/res/web_hi_res_512.png b/multisrc/overrides/madara/manganelowebsite/res/web_hi_res_512.png
deleted file mode 100644
index c6bad55ed..000000000
Binary files a/multisrc/overrides/madara/manganelowebsite/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manganerds/res/web_hi_res_512.png b/multisrc/overrides/madara/manganerds/res/web_hi_res_512.png
deleted file mode 100644
index 723ae884e..000000000
Binary files a/multisrc/overrides/madara/manganerds/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaonelove/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaonelove/res/web_hi_res_512.png
deleted file mode 100644
index a14411700..000000000
Binary files a/multisrc/overrides/madara/mangaonelove/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaonlineteam/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaonlineteam/res/web_hi_res_512.png
deleted file mode 100644
index 228d458cd..000000000
Binary files a/multisrc/overrides/madara/mangaonlineteam/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaonlineteamunoriginal/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaonlineteamunoriginal/res/web_hi_res_512.png
deleted file mode 100644
index 24c0b68c3..000000000
Binary files a/multisrc/overrides/madara/mangaonlineteamunoriginal/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaowlblog/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaowlblog/res/web_hi_res_512.png
deleted file mode 100644
index 29e87c79b..000000000
Binary files a/multisrc/overrides/madara/mangaowlblog/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaowlio/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaowlio/res/web_hi_res_512.png
deleted file mode 100644
index 1b7dc6b6b..000000000
Binary files a/multisrc/overrides/madara/mangaowlio/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaowlus/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaowlus/res/web_hi_res_512.png
deleted file mode 100644
index 7f5c02843..000000000
Binary files a/multisrc/overrides/madara/mangaowlus/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangapt/res/web_hi_res_512.png b/multisrc/overrides/madara/mangapt/res/web_hi_res_512.png
deleted file mode 100644
index 2ad87b86c..000000000
Binary files a/multisrc/overrides/madara/mangapt/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangapure/res/web_hi_res_512.png b/multisrc/overrides/madara/mangapure/res/web_hi_res_512.png
deleted file mode 100644
index f8a8d7c11..000000000
Binary files a/multisrc/overrides/madara/mangapure/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaqueen/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaqueen/res/web_hi_res_512.png
deleted file mode 100644
index 174043d12..000000000
Binary files a/multisrc/overrides/madara/mangaqueen/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaqueencom/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaqueencom/res/web_hi_res_512.png
deleted file mode 100644
index b888d7534..000000000
Binary files a/multisrc/overrides/madara/mangaqueencom/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaqueenonline/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaqueenonline/res/web_hi_res_512.png
deleted file mode 100644
index ee69bd153..000000000
Binary files a/multisrc/overrides/madara/mangaqueenonline/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangarawinfo/res/web_hi_res_512.png b/multisrc/overrides/madara/mangarawinfo/res/web_hi_res_512.png
deleted file mode 100644
index a7b94c377..000000000
Binary files a/multisrc/overrides/madara/mangarawinfo/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaread/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaread/res/web_hi_res_512.png
deleted file mode 100644
index cc8cce49d..000000000
Binary files a/multisrc/overrides/madara/mangaread/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangareadorg/res/web_hi_res_512.png b/multisrc/overrides/madara/mangareadorg/res/web_hi_res_512.png
deleted file mode 100644
index 74db06f0b..000000000
Binary files a/multisrc/overrides/madara/mangareadorg/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangarockteam/res/web_hi_res_512.png b/multisrc/overrides/madara/mangarockteam/res/web_hi_res_512.png
deleted file mode 100644
index 66b69cfa9..000000000
Binary files a/multisrc/overrides/madara/mangarockteam/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangarockteamunoriginal/res/web_hi_res_512.png b/multisrc/overrides/madara/mangarockteamunoriginal/res/web_hi_res_512.png
deleted file mode 100644
index 86f271f4d..000000000
Binary files a/multisrc/overrides/madara/mangarockteamunoriginal/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangarocky/res/web_hi_res_512.png b/multisrc/overrides/madara/mangarocky/res/web_hi_res_512.png
deleted file mode 100644
index 2234decc8..000000000
Binary files a/multisrc/overrides/madara/mangarocky/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangarolls/res/web_hi_res_512.png b/multisrc/overrides/madara/mangarolls/res/web_hi_res_512.png
deleted file mode 100644
index 5bad8dd76..000000000
Binary files a/multisrc/overrides/madara/mangarolls/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangarose/res/web_hi_res_512.png b/multisrc/overrides/madara/mangarose/res/web_hi_res_512.png
deleted file mode 100644
index 4aba20450..000000000
Binary files a/multisrc/overrides/madara/mangarose/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangarosie/res/web_hi_res_512.png b/multisrc/overrides/madara/mangarosie/res/web_hi_res_512.png
deleted file mode 100644
index bad73d3e3..000000000
Binary files a/multisrc/overrides/madara/mangarosie/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaryu/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaryu/res/web_hi_res_512.png
deleted file mode 100644
index 552c952df..000000000
Binary files a/multisrc/overrides/madara/mangaryu/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangascantrad/res/web_hi_res_512.png b/multisrc/overrides/madara/mangascantrad/res/web_hi_res_512.png
deleted file mode 100644
index fb94be929..000000000
Binary files a/multisrc/overrides/madara/mangascantrad/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangasco/res/web_hi_res_512.png b/multisrc/overrides/madara/mangasco/res/web_hi_res_512.png
deleted file mode 100644
index d2b3a096d..000000000
Binary files a/multisrc/overrides/madara/mangasco/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangasehri/res/web_hi_res_512.png b/multisrc/overrides/madara/mangasehri/res/web_hi_res_512.png
deleted file mode 100644
index ca0dae173..000000000
Binary files a/multisrc/overrides/madara/mangasehri/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangasiro/res/web_hi_res_512.png b/multisrc/overrides/madara/mangasiro/res/web_hi_res_512.png
deleted file mode 100644
index 36df4d821..000000000
Binary files a/multisrc/overrides/madara/mangasiro/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangasnosekai/res/web_hi_res_512.png b/multisrc/overrides/madara/mangasnosekai/res/web_hi_res_512.png
deleted file mode 100644
index 840547ea9..000000000
Binary files a/multisrc/overrides/madara/mangasnosekai/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangasorigines/res/web_hi_res_512.png b/multisrc/overrides/madara/mangasorigines/res/web_hi_res_512.png
deleted file mode 100644
index 87dbfb91c..000000000
Binary files a/multisrc/overrides/madara/mangasorigines/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangasoriginesfr/res/web_hi_res_512.png b/multisrc/overrides/madara/mangasoriginesfr/res/web_hi_res_512.png
deleted file mode 100644
index f465790ac..000000000
Binary files a/multisrc/overrides/madara/mangasoriginesfr/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaspark/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaspark/res/web_hi_res_512.png
deleted file mode 100644
index 8c1d63630..000000000
Binary files a/multisrc/overrides/madara/mangaspark/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangastarz/res/web_hi_res_512.png b/multisrc/overrides/madara/mangastarz/res/web_hi_res_512.png
deleted file mode 100644
index 210e788b8..000000000
Binary files a/multisrc/overrides/madara/mangastarz/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangastic/res/web_hi_res_512.png b/multisrc/overrides/madara/mangastic/res/web_hi_res_512.png
deleted file mode 100644
index 731fa82eb..000000000
Binary files a/multisrc/overrides/madara/mangastic/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangasushi/res/web_hi_res_512.png b/multisrc/overrides/madara/mangasushi/res/web_hi_res_512.png
deleted file mode 100644
index 6abf5a153..000000000
Binary files a/multisrc/overrides/madara/mangasushi/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangatone/res/web_hi_res_512.png b/multisrc/overrides/madara/mangatone/res/web_hi_res_512.png
deleted file mode 100644
index 4779db57a..000000000
Binary files a/multisrc/overrides/madara/mangatone/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangatoo/res/web_hi_res_512.png b/multisrc/overrides/madara/mangatoo/res/web_hi_res_512.png
deleted file mode 100644
index 95cd111f2..000000000
Binary files a/multisrc/overrides/madara/mangatoo/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangatoread/res/web_hi_res_512.png b/multisrc/overrides/madara/mangatoread/res/web_hi_res_512.png
deleted file mode 100644
index b1824bbe1..000000000
Binary files a/multisrc/overrides/madara/mangatoread/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangatx/res/web_hi_res_512.png b/multisrc/overrides/madara/mangatx/res/web_hi_res_512.png
deleted file mode 100644
index 8f2ab96f6..000000000
Binary files a/multisrc/overrides/madara/mangatx/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangatxunoriginal/res/web_hi_res_512.png b/multisrc/overrides/madara/mangatxunoriginal/res/web_hi_res_512.png
deleted file mode 100644
index 44faa144b..000000000
Binary files a/multisrc/overrides/madara/mangatxunoriginal/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangatyrant/res/web_hi_res_512.png b/multisrc/overrides/madara/mangatyrant/res/web_hi_res_512.png
deleted file mode 100644
index be48a766b..000000000
Binary files a/multisrc/overrides/madara/mangatyrant/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaupdatestop/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaupdatestop/res/web_hi_res_512.png
deleted file mode 100644
index a624bd17d..000000000
Binary files a/multisrc/overrides/madara/mangaupdatestop/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaus/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaus/res/web_hi_res_512.png
deleted file mode 100644
index 097e97156..000000000
Binary files a/multisrc/overrides/madara/mangaus/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaweebs/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaweebs/res/web_hi_res_512.png
deleted file mode 100644
index 73c83e523..000000000
Binary files a/multisrc/overrides/madara/mangaweebs/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangax1/res/web_hi_res_512.png b/multisrc/overrides/madara/mangax1/res/web_hi_res_512.png
deleted file mode 100644
index 20122fa35..000000000
Binary files a/multisrc/overrides/madara/mangax1/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaxico/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaxico/res/web_hi_res_512.png
deleted file mode 100644
index 01a54a032..000000000
Binary files a/multisrc/overrides/madara/mangaxico/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangaxp/res/web_hi_res_512.png b/multisrc/overrides/madara/mangaxp/res/web_hi_res_512.png
deleted file mode 100644
index 9867dc41b..000000000
Binary files a/multisrc/overrides/madara/mangaxp/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mangayami/res/web_hi_res_512.png b/multisrc/overrides/madara/mangayami/res/web_hi_res_512.png
deleted file mode 100644
index 3c22ceaa7..000000000
Binary files a/multisrc/overrides/madara/mangayami/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhatic/res/web_hi_res_512.png b/multisrc/overrides/madara/manhatic/res/web_hi_res_512.png
deleted file mode 100644
index ec6b4466d..000000000
Binary files a/multisrc/overrides/madara/manhatic/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhuabox/res/web_hi_res_512.png b/multisrc/overrides/madara/manhuabox/res/web_hi_res_512.png
deleted file mode 100644
index 7cc49eddb..000000000
Binary files a/multisrc/overrides/madara/manhuabox/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhuachill/res/web_hi_res_512.png b/multisrc/overrides/madara/manhuachill/res/web_hi_res_512.png
deleted file mode 100644
index ba7db5273..000000000
Binary files a/multisrc/overrides/madara/manhuachill/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhuadex/res/web_hi_res_512.png b/multisrc/overrides/madara/manhuadex/res/web_hi_res_512.png
deleted file mode 100644
index 2bcad01a4..000000000
Binary files a/multisrc/overrides/madara/manhuadex/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhuaes/res/web_hi_res_512.png b/multisrc/overrides/madara/manhuaes/res/web_hi_res_512.png
deleted file mode 100644
index 4d49ec2fe..000000000
Binary files a/multisrc/overrides/madara/manhuaes/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhuafast/res/web_hi_res_512.png b/multisrc/overrides/madara/manhuafast/res/web_hi_res_512.png
deleted file mode 100644
index 80441a379..000000000
Binary files a/multisrc/overrides/madara/manhuafast/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhuaga/res/web_hi_res_512.png b/multisrc/overrides/madara/manhuaga/res/web_hi_res_512.png
deleted file mode 100644
index cc81014e4..000000000
Binary files a/multisrc/overrides/madara/manhuaga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhuahot/res/web_hi_res_512.png b/multisrc/overrides/madara/manhuahot/res/web_hi_res_512.png
deleted file mode 100644
index cb38bb21e..000000000
Binary files a/multisrc/overrides/madara/manhuahot/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhuakiss/res/web_hi_res_512.png b/multisrc/overrides/madara/manhuakiss/res/web_hi_res_512.png
deleted file mode 100644
index 35de407d7..000000000
Binary files a/multisrc/overrides/madara/manhuakiss/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhuaplus/res/web_hi_res_512.png b/multisrc/overrides/madara/manhuaplus/res/web_hi_res_512.png
deleted file mode 100644
index 5f54f72c0..000000000
Binary files a/multisrc/overrides/madara/manhuaplus/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhuascaninfo/res/web_hi_res_512.png b/multisrc/overrides/madara/manhuascaninfo/res/web_hi_res_512.png
deleted file mode 100644
index 79d6a8907..000000000
Binary files a/multisrc/overrides/madara/manhuascaninfo/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhuasnet/res/web_hi_res_512.png b/multisrc/overrides/madara/manhuasnet/res/web_hi_res_512.png
deleted file mode 100644
index 37d6b1ce5..000000000
Binary files a/multisrc/overrides/madara/manhuasnet/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhuasy/res/web_hi_res_512.png b/multisrc/overrides/madara/manhuasy/res/web_hi_res_512.png
deleted file mode 100644
index 0adc0ae8b..000000000
Binary files a/multisrc/overrides/madara/manhuasy/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhuaus/res/web_hi_res_512.png b/multisrc/overrides/madara/manhuaus/res/web_hi_res_512.png
deleted file mode 100644
index 9e76a5ab5..000000000
Binary files a/multisrc/overrides/madara/manhuaus/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhuazone/res/web_hi_res_512.png b/multisrc/overrides/madara/manhuazone/res/web_hi_res_512.png
deleted file mode 100644
index 7d1008db9..000000000
Binary files a/multisrc/overrides/madara/manhuazone/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhuazonghe/res/web_hi_res_512.png b/multisrc/overrides/madara/manhuazonghe/res/web_hi_res_512.png
deleted file mode 100644
index c01736a24..000000000
Binary files a/multisrc/overrides/madara/manhuazonghe/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwa18app/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwa18app/res/web_hi_res_512.png
deleted file mode 100644
index fbe237a10..000000000
Binary files a/multisrc/overrides/madara/manhwa18app/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwa18cc/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwa18cc/res/web_hi_res_512.png
deleted file mode 100644
index 7b78edc10..000000000
Binary files a/multisrc/overrides/madara/manhwa18cc/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwa18org/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwa18org/res/web_hi_res_512.png
deleted file mode 100644
index a30a5c7a6..000000000
Binary files a/multisrc/overrides/madara/manhwa18org/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwa2read/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwa2read/res/web_hi_res_512.png
deleted file mode 100644
index cfc34d4db..000000000
Binary files a/multisrc/overrides/madara/manhwa2read/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwa365/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwa365/res/web_hi_res_512.png
deleted file mode 100644
index 8ceb6a6d6..000000000
Binary files a/multisrc/overrides/madara/manhwa365/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwa68/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwa68/res/web_hi_res_512.png
deleted file mode 100644
index c8f228017..000000000
Binary files a/multisrc/overrides/madara/manhwa68/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwabookshelf/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwabookshelf/res/web_hi_res_512.png
deleted file mode 100644
index bd101dc82..000000000
Binary files a/multisrc/overrides/madara/manhwabookshelf/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwaclan/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwaclan/res/web_hi_res_512.png
deleted file mode 100644
index 5896e9c0a..000000000
Binary files a/multisrc/overrides/madara/manhwaclan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwadashraw/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwadashraw/res/web_hi_res_512.png
deleted file mode 100644
index 7959338bc..000000000
Binary files a/multisrc/overrides/madara/manhwadashraw/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwafull/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwafull/res/web_hi_res_512.png
deleted file mode 100644
index 104910e64..000000000
Binary files a/multisrc/overrides/madara/manhwafull/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwahentaime/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwahentaime/res/web_hi_res_512.png
deleted file mode 100644
index 782baca97..000000000
Binary files a/multisrc/overrides/madara/manhwahentaime/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwalatino/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwalatino/res/web_hi_res_512.png
deleted file mode 100644
index 6568583f2..000000000
Binary files a/multisrc/overrides/madara/manhwalatino/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwamanhua/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwamanhua/res/web_hi_res_512.png
deleted file mode 100644
index 0b35f1159..000000000
Binary files a/multisrc/overrides/madara/manhwamanhua/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwanew/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwanew/res/web_hi_res_512.png
deleted file mode 100644
index 7cf4f9172..000000000
Binary files a/multisrc/overrides/madara/manhwanew/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwaraw/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwaraw/res/web_hi_res_512.png
deleted file mode 100644
index 3e6909e38..000000000
Binary files a/multisrc/overrides/madara/manhwaraw/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwasmen/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwasmen/res/web_hi_res_512.png
deleted file mode 100644
index 9f947f84a..000000000
Binary files a/multisrc/overrides/madara/manhwasmen/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwatop/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwatop/res/web_hi_res_512.png
deleted file mode 100644
index 4b7b312ac..000000000
Binary files a/multisrc/overrides/madara/manhwatop/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwaworld/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwaworld/res/web_hi_res_512.png
deleted file mode 100644
index 7e6e09ee3..000000000
Binary files a/multisrc/overrides/madara/manhwaworld/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwaz/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwaz/res/web_hi_res_512.png
deleted file mode 100644
index 724881f85..000000000
Binary files a/multisrc/overrides/madara/manhwaz/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manhwuafans/res/web_hi_res_512.png b/multisrc/overrides/madara/manhwuafans/res/web_hi_res_512.png
deleted file mode 100644
index 1a1228433..000000000
Binary files a/multisrc/overrides/madara/manhwuafans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mantrazscan/res/web_hi_res_512.png b/multisrc/overrides/madara/mantrazscan/res/web_hi_res_512.png
deleted file mode 100644
index 0c24dc41c..000000000
Binary files a/multisrc/overrides/madara/mantrazscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manycomic/res/web_hi_res_512.png b/multisrc/overrides/madara/manycomic/res/web_hi_res_512.png
deleted file mode 100644
index 07c9e4e67..000000000
Binary files a/multisrc/overrides/madara/manycomic/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manytoon/res/web_hi_res_512.png b/multisrc/overrides/madara/manytoon/res/web_hi_res_512.png
deleted file mode 100644
index 46cab055b..000000000
Binary files a/multisrc/overrides/madara/manytoon/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manytoonclub/res/web_hi_res_512.png b/multisrc/overrides/madara/manytoonclub/res/web_hi_res_512.png
deleted file mode 100644
index 2c268062e..000000000
Binary files a/multisrc/overrides/madara/manytoonclub/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/manytoonme/res/web_hi_res_512.png b/multisrc/overrides/madara/manytoonme/res/web_hi_res_512.png
deleted file mode 100644
index 6c601c016..000000000
Binary files a/multisrc/overrides/madara/manytoonme/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mgkomik/res/web_hi_res_512.png b/multisrc/overrides/madara/mgkomik/res/web_hi_res_512.png
deleted file mode 100644
index 0becfc2fe..000000000
Binary files a/multisrc/overrides/madara/mgkomik/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/midnightmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/midnightmanga/res/web_hi_res_512.png
deleted file mode 100644
index 7a1414369..000000000
Binary files a/multisrc/overrides/madara/midnightmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/midnightmessscans/res/web_hi_res_512.png b/multisrc/overrides/madara/midnightmessscans/res/web_hi_res_512.png
deleted file mode 100644
index caf5a693b..000000000
Binary files a/multisrc/overrides/madara/midnightmessscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/milftoon/res/web_hi_res_512.png b/multisrc/overrides/madara/milftoon/res/web_hi_res_512.png
deleted file mode 100644
index 877314890..000000000
Binary files a/multisrc/overrides/madara/milftoon/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mmscans/res/web_hi_res_512.png b/multisrc/overrides/madara/mmscans/res/web_hi_res_512.png
deleted file mode 100644
index c42ab5fb1..000000000
Binary files a/multisrc/overrides/madara/mmscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/momonohanascan/res/web_hi_res_512.png b/multisrc/overrides/madara/momonohanascan/res/web_hi_res_512.png
deleted file mode 100644
index 3cc1e8110..000000000
Binary files a/multisrc/overrides/madara/momonohanascan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/monarcamanga/res/web_hi_res_512.png b/multisrc/overrides/madara/monarcamanga/res/web_hi_res_512.png
deleted file mode 100644
index 0fe17a112..000000000
Binary files a/multisrc/overrides/madara/monarcamanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mortalsgroove/res/web_hi_res_512.png b/multisrc/overrides/madara/mortalsgroove/res/web_hi_res_512.png
deleted file mode 100644
index 6e0a94fe0..000000000
Binary files a/multisrc/overrides/madara/mortalsgroove/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/muctau/res/web_hi_res_512.png b/multisrc/overrides/madara/muctau/res/web_hi_res_512.png
deleted file mode 100644
index d64b05840..000000000
Binary files a/multisrc/overrides/madara/muctau/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/murimscan/res/web_hi_res_512.png b/multisrc/overrides/madara/murimscan/res/web_hi_res_512.png
deleted file mode 100644
index c90eab691..000000000
Binary files a/multisrc/overrides/madara/murimscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mymanhwa/res/web_hi_res_512.png b/multisrc/overrides/madara/mymanhwa/res/web_hi_res_512.png
deleted file mode 100644
index b47fa5b8b..000000000
Binary files a/multisrc/overrides/madara/mymanhwa/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/mysticalmerries/res/web_hi_res_512.png b/multisrc/overrides/madara/mysticalmerries/res/web_hi_res_512.png
deleted file mode 100644
index e844b0e99..000000000
Binary files a/multisrc/overrides/madara/mysticalmerries/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/neatmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/neatmanga/res/web_hi_res_512.png
deleted file mode 100644
index 3918896cc..000000000
Binary files a/multisrc/overrides/madara/neatmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/nekopostco/res/web_hi_res_512.png b/multisrc/overrides/madara/nekopostco/res/web_hi_res_512.png
deleted file mode 100644
index 8f8ae9aa7..000000000
Binary files a/multisrc/overrides/madara/nekopostco/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/nekoscan/res/web_hi_res_512.png b/multisrc/overrides/madara/nekoscan/res/web_hi_res_512.png
deleted file mode 100644
index f7363debc..000000000
Binary files a/multisrc/overrides/madara/nekoscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/newmanhua/res/web_hi_res_512.png b/multisrc/overrides/madara/newmanhua/res/web_hi_res_512.png
deleted file mode 100644
index b191a5470..000000000
Binary files a/multisrc/overrides/madara/newmanhua/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/nightcomic/res/web_hi_res_512.png b/multisrc/overrides/madara/nightcomic/res/web_hi_res_512.png
deleted file mode 100644
index eddc78199..000000000
Binary files a/multisrc/overrides/madara/nightcomic/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/nijitranslations/res/web_hi_res_512.png b/multisrc/overrides/madara/nijitranslations/res/web_hi_res_512.png
deleted file mode 100644
index 77f039eec..000000000
Binary files a/multisrc/overrides/madara/nijitranslations/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/nitroscans/res/web_hi_res_512.png b/multisrc/overrides/madara/nitroscans/res/web_hi_res_512.png
deleted file mode 100644
index e7cf0eda0..000000000
Binary files a/multisrc/overrides/madara/nitroscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/noblessetranslations/res/web_hi_res_512.png b/multisrc/overrides/madara/noblessetranslations/res/web_hi_res_512.png
deleted file mode 100644
index e61eec02d..000000000
Binary files a/multisrc/overrides/madara/noblessetranslations/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/noindexscan/res/web_hi_res_512.png b/multisrc/overrides/madara/noindexscan/res/web_hi_res_512.png
deleted file mode 100644
index acbefccd6..000000000
Binary files a/multisrc/overrides/madara/noindexscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/novelcrow/res/web_hi_res_512.png b/multisrc/overrides/madara/novelcrow/res/web_hi_res_512.png
deleted file mode 100644
index e4b5385be..000000000
Binary files a/multisrc/overrides/madara/novelcrow/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/novelmic/res/web_hi_res_512.png b/multisrc/overrides/madara/novelmic/res/web_hi_res_512.png
deleted file mode 100644
index 283ec82ff..000000000
Binary files a/multisrc/overrides/madara/novelmic/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/ohnomanga/res/web_hi_res_512.png b/multisrc/overrides/madara/ohnomanga/res/web_hi_res_512.png
deleted file mode 100644
index 2d57b8e28..000000000
Binary files a/multisrc/overrides/madara/ohnomanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/pantheonscan/res/web_hi_res_512.png b/multisrc/overrides/madara/pantheonscan/res/web_hi_res_512.png
deleted file mode 100644
index 62f530a34..000000000
Binary files a/multisrc/overrides/madara/pantheonscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/paragonscans/res/web_hi_res_512.png b/multisrc/overrides/madara/paragonscans/res/web_hi_res_512.png
deleted file mode 100644
index 916b36bee..000000000
Binary files a/multisrc/overrides/madara/paragonscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/pawmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/pawmanga/res/web_hi_res_512.png
deleted file mode 100644
index 72158ffb5..000000000
Binary files a/multisrc/overrides/madara/pawmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/petrotechsociety/res/web_hi_res_512.png b/multisrc/overrides/madara/petrotechsociety/res/web_hi_res_512.png
deleted file mode 100644
index 1b6a3c9c0..000000000
Binary files a/multisrc/overrides/madara/petrotechsociety/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/pianmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/pianmanga/res/web_hi_res_512.png
deleted file mode 100644
index 8574c4fd7..000000000
Binary files a/multisrc/overrides/madara/pianmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/pikiranwibu/res/web_hi_res_512.png b/multisrc/overrides/madara/pikiranwibu/res/web_hi_res_512.png
deleted file mode 100644
index b8e2b20a9..000000000
Binary files a/multisrc/overrides/madara/pikiranwibu/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/pirulitorosa/res/web_hi_res_512.png b/multisrc/overrides/madara/pirulitorosa/res/web_hi_res_512.png
deleted file mode 100644
index b2f656154..000000000
Binary files a/multisrc/overrides/madara/pirulitorosa/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/platinumcrown/res/web_hi_res_512.png b/multisrc/overrides/madara/platinumcrown/res/web_hi_res_512.png
deleted file mode 100644
index 204767388..000000000
Binary files a/multisrc/overrides/madara/platinumcrown/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/pmscans/res/web_hi_res_512.png b/multisrc/overrides/madara/pmscans/res/web_hi_res_512.png
deleted file mode 100644
index a174dd63b..000000000
Binary files a/multisrc/overrides/madara/pmscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/pojokmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/pojokmanga/res/web_hi_res_512.png
deleted file mode 100644
index 55bab9f25..000000000
Binary files a/multisrc/overrides/madara/pojokmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/pomanga/res/web_hi_res_512.png b/multisrc/overrides/madara/pomanga/res/web_hi_res_512.png
deleted file mode 100644
index efb6b14aa..000000000
Binary files a/multisrc/overrides/madara/pomanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/ponymanga/res/web_hi_res_512.png b/multisrc/overrides/madara/ponymanga/res/web_hi_res_512.png
deleted file mode 100644
index b86a13bad..000000000
Binary files a/multisrc/overrides/madara/ponymanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/porncomix/res/web_hi_res_512.png b/multisrc/overrides/madara/porncomix/res/web_hi_res_512.png
deleted file mode 100644
index 93fd7842d..000000000
Binary files a/multisrc/overrides/madara/porncomix/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/pornhwa18/res/web_hi_res_512.png b/multisrc/overrides/madara/pornhwa18/res/web_hi_res_512.png
deleted file mode 100644
index 4437eddd5..000000000
Binary files a/multisrc/overrides/madara/pornhwa18/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/pornwha/res/web_hi_res_512.png b/multisrc/overrides/madara/pornwha/res/web_hi_res_512.png
deleted file mode 100644
index 242964b42..000000000
Binary files a/multisrc/overrides/madara/pornwha/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/prismascans/res/web_hi_res_512.png b/multisrc/overrides/madara/prismascans/res/web_hi_res_512.png
deleted file mode 100644
index f2042137e..000000000
Binary files a/multisrc/overrides/madara/prismascans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/projetoscanlator/res/web_hi_res_512.png b/multisrc/overrides/madara/projetoscanlator/res/web_hi_res_512.png
deleted file mode 100644
index 1bad07cee..000000000
Binary files a/multisrc/overrides/madara/projetoscanlator/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/ragnarokscan/res/web_hi_res_512.png b/multisrc/overrides/madara/ragnarokscan/res/web_hi_res_512.png
deleted file mode 100644
index 27b9c8112..000000000
Binary files a/multisrc/overrides/madara/ragnarokscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/raijinscans/res/web_hi_res_512.png b/multisrc/overrides/madara/raijinscans/res/web_hi_res_512.png
deleted file mode 100644
index e03b14cf2..000000000
Binary files a/multisrc/overrides/madara/raijinscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/randomscan/res/web_hi_res_512.png b/multisrc/overrides/madara/randomscan/res/web_hi_res_512.png
deleted file mode 100644
index e287535d6..000000000
Binary files a/multisrc/overrides/madara/randomscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/rawdex/res/web_hi_res_512.png b/multisrc/overrides/madara/rawdex/res/web_hi_res_512.png
deleted file mode 100644
index a71d1bf2b..000000000
Binary files a/multisrc/overrides/madara/rawdex/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/readadult/res/web_hi_res_512.png b/multisrc/overrides/madara/readadult/res/web_hi_res_512.png
deleted file mode 100644
index e01aa90d9..000000000
Binary files a/multisrc/overrides/madara/readadult/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/readergen/res/web_hi_res_512.png b/multisrc/overrides/madara/readergen/res/web_hi_res_512.png
deleted file mode 100644
index d79614b27..000000000
Binary files a/multisrc/overrides/madara/readergen/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/readfreecomics/res/web_hi_res_512.png b/multisrc/overrides/madara/readfreecomics/res/web_hi_res_512.png
deleted file mode 100644
index 6eba8be25..000000000
Binary files a/multisrc/overrides/madara/readfreecomics/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/readmangafree/res/web_hi_res_512.png b/multisrc/overrides/madara/readmangafree/res/web_hi_res_512.png
deleted file mode 100644
index 6babc6a2b..000000000
Binary files a/multisrc/overrides/madara/readmangafree/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/readmanhua/res/web_hi_res_512.png b/multisrc/overrides/madara/readmanhua/res/web_hi_res_512.png
deleted file mode 100644
index a804f7a83..000000000
Binary files a/multisrc/overrides/madara/readmanhua/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/reaperscans/res/web_hi_res_512.png b/multisrc/overrides/madara/reaperscans/res/web_hi_res_512.png
deleted file mode 100644
index 1c6f8c99c..000000000
Binary files a/multisrc/overrides/madara/reaperscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/resetscans/res/web_hi_res_512.png b/multisrc/overrides/madara/resetscans/res/web_hi_res_512.png
deleted file mode 100644
index 7cfb852a2..000000000
Binary files a/multisrc/overrides/madara/resetscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/rh2plusmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/rh2plusmanga/res/web_hi_res_512.png
deleted file mode 100644
index 7eb5bb5bc..000000000
Binary files a/multisrc/overrides/madara/rh2plusmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/rightdarkscan/res/web_hi_res_512.png b/multisrc/overrides/madara/rightdarkscan/res/web_hi_res_512.png
deleted file mode 100644
index 4e58fd473..000000000
Binary files a/multisrc/overrides/madara/rightdarkscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/rio2manga/res/web_hi_res_512.png b/multisrc/overrides/madara/rio2manga/res/web_hi_res_512.png
deleted file mode 100644
index fe38e733d..000000000
Binary files a/multisrc/overrides/madara/rio2manga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/romantikmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/romantikmanga/res/web_hi_res_512.png
deleted file mode 100644
index a94de3e07..000000000
Binary files a/multisrc/overrides/madara/romantikmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/ruyamanga/res/web_hi_res_512.png b/multisrc/overrides/madara/ruyamanga/res/web_hi_res_512.png
deleted file mode 100644
index 097591b1b..000000000
Binary files a/multisrc/overrides/madara/ruyamanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/s2manga/res/web_hi_res_512.png b/multisrc/overrides/madara/s2manga/res/web_hi_res_512.png
deleted file mode 100644
index c39e43b09..000000000
Binary files a/multisrc/overrides/madara/s2manga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/samuraiscan/res/web_hi_res_512.png b/multisrc/overrides/madara/samuraiscan/res/web_hi_res_512.png
deleted file mode 100644
index 2e112e30a..000000000
Binary files a/multisrc/overrides/madara/samuraiscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/sawamics/res/web_hi_res_512.png b/multisrc/overrides/madara/sawamics/res/web_hi_res_512.png
deleted file mode 100644
index 3f315b3f0..000000000
Binary files a/multisrc/overrides/madara/sawamics/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/scambertraslator/res/web_hi_res_512.png b/multisrc/overrides/madara/scambertraslator/res/web_hi_res_512.png
deleted file mode 100644
index ae806aa90..000000000
Binary files a/multisrc/overrides/madara/scambertraslator/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/scanhentaimenu/res/web_hi_res_512.png b/multisrc/overrides/madara/scanhentaimenu/res/web_hi_res_512.png
deleted file mode 100644
index f43dc1b8d..000000000
Binary files a/multisrc/overrides/madara/scanhentaimenu/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/scantradvf/res/web_hi_res_512.png b/multisrc/overrides/madara/scantradvf/res/web_hi_res_512.png
deleted file mode 100644
index 38dbd0a52..000000000
Binary files a/multisrc/overrides/madara/scantradvf/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/sdlscans/res/web_hi_res_512.png b/multisrc/overrides/madara/sdlscans/res/web_hi_res_512.png
deleted file mode 100644
index a6d9c2b3c..000000000
Binary files a/multisrc/overrides/madara/sdlscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/setsuscans/res/web_hi_res_512.png b/multisrc/overrides/madara/setsuscans/res/web_hi_res_512.png
deleted file mode 100644
index af6c6d024..000000000
Binary files a/multisrc/overrides/madara/setsuscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/shadowtrad/res/web_hi_res_512.png b/multisrc/overrides/madara/shadowtrad/res/web_hi_res_512.png
deleted file mode 100644
index a9e1b31ef..000000000
Binary files a/multisrc/overrides/madara/shadowtrad/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/shavelproiection/res/web_hi_res_512.png b/multisrc/overrides/madara/shavelproiection/res/web_hi_res_512.png
deleted file mode 100644
index 02663d9a1..000000000
Binary files a/multisrc/overrides/madara/shavelproiection/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/shayami/res/web_hi_res_512.png b/multisrc/overrides/madara/shayami/res/web_hi_res_512.png
deleted file mode 100644
index e7f7c7588..000000000
Binary files a/multisrc/overrides/madara/shayami/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/shibamanga/res/web_hi_res_512.png b/multisrc/overrides/madara/shibamanga/res/web_hi_res_512.png
deleted file mode 100644
index ddb05c289..000000000
Binary files a/multisrc/overrides/madara/shibamanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/shieldmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/shieldmanga/res/web_hi_res_512.png
deleted file mode 100644
index 8657455a0..000000000
Binary files a/multisrc/overrides/madara/shieldmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/shinigami/additional.gradle b/multisrc/overrides/madara/shinigami/additional.gradle
index 56e3d5c86..0ffbe4386 100644
--- a/multisrc/overrides/madara/shinigami/additional.gradle
+++ b/multisrc/overrides/madara/shinigami/additional.gradle
@@ -1,3 +1,3 @@
dependencies {
- implementation(project(":lib-synchrony"))
+ implementation(project(":lib:synchrony"))
}
diff --git a/multisrc/overrides/madara/shinigami/res/web_hi_res_512.png b/multisrc/overrides/madara/shinigami/res/web_hi_res_512.png
deleted file mode 100644
index 5a88d48f8..000000000
Binary files a/multisrc/overrides/madara/shinigami/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/shootingstarscans/res/web_hi_res_512.png b/multisrc/overrides/madara/shootingstarscans/res/web_hi_res_512.png
deleted file mode 100644
index 3cbd4982b..000000000
Binary files a/multisrc/overrides/madara/shootingstarscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/shoujohearts/res/web_hi_res_512.png b/multisrc/overrides/madara/shoujohearts/res/web_hi_res_512.png
deleted file mode 100644
index 2fe740be6..000000000
Binary files a/multisrc/overrides/madara/shoujohearts/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/sinensis/res/web_hi_res_512.png b/multisrc/overrides/madara/sinensis/res/web_hi_res_512.png
deleted file mode 100644
index 8911a7ec5..000000000
Binary files a/multisrc/overrides/madara/sinensis/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/sisigelap/res/web_hi_res_512.png b/multisrc/overrides/madara/sisigelap/res/web_hi_res_512.png
deleted file mode 100644
index afa32700a..000000000
Binary files a/multisrc/overrides/madara/sisigelap/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/siyahmelek/res/web_hi_res_512.png b/multisrc/overrides/madara/siyahmelek/res/web_hi_res_512.png
deleted file mode 100644
index e18de1809..000000000
Binary files a/multisrc/overrides/madara/siyahmelek/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/skymangaxyz/res/web_hi_res_512.png b/multisrc/overrides/madara/skymangaxyz/res/web_hi_res_512.png
deleted file mode 100644
index 3cdbdc144..000000000
Binary files a/multisrc/overrides/madara/skymangaxyz/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/sleepytranslations/res/web_hi_res_512.png b/multisrc/overrides/madara/sleepytranslations/res/web_hi_res_512.png
deleted file mode 100644
index f3d538376..000000000
Binary files a/multisrc/overrides/madara/sleepytranslations/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/sololeveling/res/web_hi_res_512.png b/multisrc/overrides/madara/sololeveling/res/web_hi_res_512.png
deleted file mode 100644
index 3bdd60e18..000000000
Binary files a/multisrc/overrides/madara/sololeveling/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/sugarbabies/res/web_hi_res_512.png b/multisrc/overrides/madara/sugarbabies/res/web_hi_res_512.png
deleted file mode 100644
index 2ad4bd4b6..000000000
Binary files a/multisrc/overrides/madara/sugarbabies/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/summanga/res/web_hi_res_512.png b/multisrc/overrides/madara/summanga/res/web_hi_res_512.png
deleted file mode 100644
index fc027f0a1..000000000
Binary files a/multisrc/overrides/madara/summanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/sunshinebutterflyscans/res/web_hi_res_512.png b/multisrc/overrides/madara/sunshinebutterflyscans/res/web_hi_res_512.png
deleted file mode 100644
index 70d46e55d..000000000
Binary files a/multisrc/overrides/madara/sunshinebutterflyscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/sweettimescan/res/web_hi_res_512.png b/multisrc/overrides/madara/sweettimescan/res/web_hi_res_512.png
deleted file mode 100644
index fd7fdd67f..000000000
Binary files a/multisrc/overrides/madara/sweettimescan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/tappytoonnet/res/web_hi_res_512.png b/multisrc/overrides/madara/tappytoonnet/res/web_hi_res_512.png
deleted file mode 100644
index 5af649cc0..000000000
Binary files a/multisrc/overrides/madara/tappytoonnet/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/tatakaescan/res/web_hi_res_512.png b/multisrc/overrides/madara/tatakaescan/res/web_hi_res_512.png
deleted file mode 100644
index e5813bc26..000000000
Binary files a/multisrc/overrides/madara/tatakaescan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/taurusfansub/res/web_hi_res_512.png b/multisrc/overrides/madara/taurusfansub/res/web_hi_res_512.png
deleted file mode 100644
index ce77dd786..000000000
Binary files a/multisrc/overrides/madara/taurusfansub/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/teenmanhua/res/web_hi_res_512.png b/multisrc/overrides/madara/teenmanhua/res/web_hi_res_512.png
deleted file mode 100644
index b2e362d2b..000000000
Binary files a/multisrc/overrides/madara/teenmanhua/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/thebeginningaftertheend/res/web_hi_res_512.png b/multisrc/overrides/madara/thebeginningaftertheend/res/web_hi_res_512.png
deleted file mode 100644
index 0194d561d..000000000
Binary files a/multisrc/overrides/madara/thebeginningaftertheend/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/theblank/res/web_hi_res_512.png b/multisrc/overrides/madara/theblank/res/web_hi_res_512.png
deleted file mode 100644
index 7df497287..000000000
Binary files a/multisrc/overrides/madara/theblank/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/theguild/res/web_hi_res_512.png b/multisrc/overrides/madara/theguild/res/web_hi_res_512.png
deleted file mode 100644
index a2a9316bf..000000000
Binary files a/multisrc/overrides/madara/theguild/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/threesixtyfivemanga/res/web_hi_res_512.png b/multisrc/overrides/madara/threesixtyfivemanga/res/web_hi_res_512.png
deleted file mode 100644
index f4704db87..000000000
Binary files a/multisrc/overrides/madara/threesixtyfivemanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/timenaight/res/web_hi_res_512.png b/multisrc/overrides/madara/timenaight/res/web_hi_res_512.png
deleted file mode 100644
index a99172d17..000000000
Binary files a/multisrc/overrides/madara/timenaight/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/todaymic/res/web_hi_res_512.png b/multisrc/overrides/madara/todaymic/res/web_hi_res_512.png
deleted file mode 100644
index 04bd2eebe..000000000
Binary files a/multisrc/overrides/madara/todaymic/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/tonizutoon/res/web_hi_res_512.png b/multisrc/overrides/madara/tonizutoon/res/web_hi_res_512.png
deleted file mode 100644
index 518eabae2..000000000
Binary files a/multisrc/overrides/madara/tonizutoon/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/toonchill/res/web_hi_res_512.png b/multisrc/overrides/madara/toonchill/res/web_hi_res_512.png
deleted file mode 100644
index a9b03e7d3..000000000
Binary files a/multisrc/overrides/madara/toonchill/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/toongod/res/web_hi_res_512.png b/multisrc/overrides/madara/toongod/res/web_hi_res_512.png
deleted file mode 100644
index 7b5fa8f7e..000000000
Binary files a/multisrc/overrides/madara/toongod/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/toonily/res/web_hi_res_512.png b/multisrc/overrides/madara/toonily/res/web_hi_res_512.png
deleted file mode 100644
index 7a63b18a1..000000000
Binary files a/multisrc/overrides/madara/toonily/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/toonizy/res/web_hi_res_512.png b/multisrc/overrides/madara/toonizy/res/web_hi_res_512.png
deleted file mode 100644
index c378308af..000000000
Binary files a/multisrc/overrides/madara/toonizy/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/toonmany/res/web_hi_res_512.png b/multisrc/overrides/madara/toonmany/res/web_hi_res_512.png
deleted file mode 100644
index 966fc22ee..000000000
Binary files a/multisrc/overrides/madara/toonmany/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/topmanhua/res/web_hi_res_512.png b/multisrc/overrides/madara/topmanhua/res/web_hi_res_512.png
deleted file mode 100644
index 5f49aaf11..000000000
Binary files a/multisrc/overrides/madara/topmanhua/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/topreadmanhwa/res/web_hi_res_512.png b/multisrc/overrides/madara/topreadmanhwa/res/web_hi_res_512.png
deleted file mode 100644
index 273d50ce6..000000000
Binary files a/multisrc/overrides/madara/topreadmanhwa/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/tortugaceviri/res/web_hi_res_512.png b/multisrc/overrides/madara/tortugaceviri/res/web_hi_res_512.png
deleted file mode 100644
index 66ad5c883..000000000
Binary files a/multisrc/overrides/madara/tortugaceviri/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/traduccionesmoonlight/res/web_hi_res_512.png b/multisrc/overrides/madara/traduccionesmoonlight/res/web_hi_res_512.png
deleted file mode 100644
index bdfc28d88..000000000
Binary files a/multisrc/overrides/madara/traduccionesmoonlight/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/treemanga/res/web_hi_res_512.png b/multisrc/overrides/madara/treemanga/res/web_hi_res_512.png
deleted file mode 100644
index ff38c5280..000000000
Binary files a/multisrc/overrides/madara/treemanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/tritiniascans/res/web_hi_res_512.png b/multisrc/overrides/madara/tritiniascans/res/web_hi_res_512.png
deleted file mode 100644
index 70c5d6ea8..000000000
Binary files a/multisrc/overrides/madara/tritiniascans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/tumangaonlinesite/res/web_hi_res_512.png b/multisrc/overrides/madara/tumangaonlinesite/res/web_hi_res_512.png
deleted file mode 100644
index 0f6858bf6..000000000
Binary files a/multisrc/overrides/madara/tumangaonlinesite/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/unitoon/res/web_hi_res_512.png b/multisrc/overrides/madara/unitoon/res/web_hi_res_512.png
deleted file mode 100644
index 262c27915..000000000
Binary files a/multisrc/overrides/madara/unitoon/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/unitoonoficial/res/web_hi_res_512.png b/multisrc/overrides/madara/unitoonoficial/res/web_hi_res_512.png
deleted file mode 100644
index 7bde7ec0e..000000000
Binary files a/multisrc/overrides/madara/unitoonoficial/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/vermanhwas/res/web_hi_res_512.png b/multisrc/overrides/madara/vermanhwas/res/web_hi_res_512.png
deleted file mode 100644
index 58abed99e..000000000
Binary files a/multisrc/overrides/madara/vermanhwas/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/vinmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/vinmanga/res/web_hi_res_512.png
deleted file mode 100644
index 4110a8691..000000000
Binary files a/multisrc/overrides/madara/vinmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/wakamics/res/web_hi_res_512.png b/multisrc/overrides/madara/wakamics/res/web_hi_res_512.png
deleted file mode 100644
index b6314af9c..000000000
Binary files a/multisrc/overrides/madara/wakamics/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/webdexscans/res/web_hi_res_512.png b/multisrc/overrides/madara/webdexscans/res/web_hi_res_512.png
deleted file mode 100644
index 92757565e..000000000
Binary files a/multisrc/overrides/madara/webdexscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/webtoonhatti/res/web_hi_res_512.png b/multisrc/overrides/madara/webtoonhatti/res/web_hi_res_512.png
deleted file mode 100644
index 743435613..000000000
Binary files a/multisrc/overrides/madara/webtoonhatti/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/webtoonily/res/web_hi_res_512.png b/multisrc/overrides/madara/webtoonily/res/web_hi_res_512.png
deleted file mode 100644
index 198a7e843..000000000
Binary files a/multisrc/overrides/madara/webtoonily/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/webtoonscan/res/web_hi_res_512.png b/multisrc/overrides/madara/webtoonscan/res/web_hi_res_512.png
deleted file mode 100644
index a788a8a2e..000000000
Binary files a/multisrc/overrides/madara/webtoonscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/webtoonstop/res/web_hi_res_512.png b/multisrc/overrides/madara/webtoonstop/res/web_hi_res_512.png
deleted file mode 100644
index 8050bb7be..000000000
Binary files a/multisrc/overrides/madara/webtoonstop/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/webtoontr/res/web_hi_res_512.png b/multisrc/overrides/madara/webtoontr/res/web_hi_res_512.png
deleted file mode 100644
index 14ec5071e..000000000
Binary files a/multisrc/overrides/madara/webtoontr/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/webtoonuk/res/web_hi_res_512.png b/multisrc/overrides/madara/webtoonuk/res/web_hi_res_512.png
deleted file mode 100644
index 13155b8a9..000000000
Binary files a/multisrc/overrides/madara/webtoonuk/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/webtoonxyz/res/web_hi_res_512.png b/multisrc/overrides/madara/webtoonxyz/res/web_hi_res_512.png
deleted file mode 100644
index 0b42bf2ac..000000000
Binary files a/multisrc/overrides/madara/webtoonxyz/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/winterscan/res/web_hi_res_512.png b/multisrc/overrides/madara/winterscan/res/web_hi_res_512.png
deleted file mode 100644
index 3eb2b1469..000000000
Binary files a/multisrc/overrides/madara/winterscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/woopread/res/web_hi_res_512.png b/multisrc/overrides/madara/woopread/res/web_hi_res_512.png
deleted file mode 100644
index 08321d82b..000000000
Binary files a/multisrc/overrides/madara/woopread/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/worldmanhwas/res/web_hi_res_512.png b/multisrc/overrides/madara/worldmanhwas/res/web_hi_res_512.png
deleted file mode 100644
index abaa3bc4a..000000000
Binary files a/multisrc/overrides/madara/worldmanhwas/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/wuxiaworld/res/web_hi_res_512.png b/multisrc/overrides/madara/wuxiaworld/res/web_hi_res_512.png
deleted file mode 100644
index a5ce9f7f7..000000000
Binary files a/multisrc/overrides/madara/wuxiaworld/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/yaoihentai/res/web_hi_res_512.png b/multisrc/overrides/madara/yaoihentai/res/web_hi_res_512.png
deleted file mode 100644
index 696c9a732..000000000
Binary files a/multisrc/overrides/madara/yaoihentai/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/yaoimanga/res/web_hi_res_512.png b/multisrc/overrides/madara/yaoimanga/res/web_hi_res_512.png
deleted file mode 100644
index 17df2e636..000000000
Binary files a/multisrc/overrides/madara/yaoimanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/yaoiscan/res/web_hi_res_512.png b/multisrc/overrides/madara/yaoiscan/res/web_hi_res_512.png
deleted file mode 100644
index 730dcce5e..000000000
Binary files a/multisrc/overrides/madara/yaoiscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/yaoitoon/res/web_hi_res_512.png b/multisrc/overrides/madara/yaoitoon/res/web_hi_res_512.png
deleted file mode 100644
index acf256bde..000000000
Binary files a/multisrc/overrides/madara/yaoitoon/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/yonabar/res/web_hi_res_512.png b/multisrc/overrides/madara/yonabar/res/web_hi_res_512.png
deleted file mode 100644
index 9b5d52b08..000000000
Binary files a/multisrc/overrides/madara/yonabar/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/yuriverso/res/web_hi_res_512.png b/multisrc/overrides/madara/yuriverso/res/web_hi_res_512.png
deleted file mode 100644
index b6753a80a..000000000
Binary files a/multisrc/overrides/madara/yuriverso/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/zandynofansub/res/web_hi_res_512.png b/multisrc/overrides/madara/zandynofansub/res/web_hi_res_512.png
deleted file mode 100644
index c05473874..000000000
Binary files a/multisrc/overrides/madara/zandynofansub/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/zinchanmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/zinchanmanga/res/web_hi_res_512.png
deleted file mode 100644
index 17f70e1d2..000000000
Binary files a/multisrc/overrides/madara/zinchanmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/zinmanga/res/web_hi_res_512.png b/multisrc/overrides/madara/zinmanga/res/web_hi_res_512.png
deleted file mode 100644
index 74f742c4a..000000000
Binary files a/multisrc/overrides/madara/zinmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/zinmangatop/res/web_hi_res_512.png b/multisrc/overrides/madara/zinmangatop/res/web_hi_res_512.png
deleted file mode 100644
index bdbde6818..000000000
Binary files a/multisrc/overrides/madara/zinmangatop/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/zinmanhwa/res/web_hi_res_512.png b/multisrc/overrides/madara/zinmanhwa/res/web_hi_res_512.png
deleted file mode 100644
index 74f742c4a..000000000
Binary files a/multisrc/overrides/madara/zinmanhwa/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madara/zuttomanga/res/web_hi_res_512.png b/multisrc/overrides/madara/zuttomanga/res/web_hi_res_512.png
deleted file mode 100644
index 6ff5c1f86..000000000
Binary files a/multisrc/overrides/madara/zuttomanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madtheme/beehentai/res/web_hi_res_512.png b/multisrc/overrides/madtheme/beehentai/res/web_hi_res_512.png
deleted file mode 100644
index 93c217d1a..000000000
Binary files a/multisrc/overrides/madtheme/beehentai/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madtheme/default/res/web_hi_res_512.png b/multisrc/overrides/madtheme/default/res/web_hi_res_512.png
deleted file mode 100644
index c8139cd08..000000000
Binary files a/multisrc/overrides/madtheme/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madtheme/mangabuddy/res/web_hi_res_512.png b/multisrc/overrides/madtheme/mangabuddy/res/web_hi_res_512.png
deleted file mode 100644
index d852390cd..000000000
Binary files a/multisrc/overrides/madtheme/mangabuddy/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madtheme/mangacute/res/web_hi_res_512.png b/multisrc/overrides/madtheme/mangacute/res/web_hi_res_512.png
deleted file mode 100644
index 5b958b009..000000000
Binary files a/multisrc/overrides/madtheme/mangacute/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madtheme/mangaforest/res/web_hi_res_512.png b/multisrc/overrides/madtheme/mangaforest/res/web_hi_res_512.png
deleted file mode 100644
index c1983c8d5..000000000
Binary files a/multisrc/overrides/madtheme/mangaforest/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madtheme/mangapuma/res/web_hi_res_512.png b/multisrc/overrides/madtheme/mangapuma/res/web_hi_res_512.png
deleted file mode 100644
index c13586704..000000000
Binary files a/multisrc/overrides/madtheme/mangapuma/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madtheme/mangaxyz/res/web_hi_res_512.png b/multisrc/overrides/madtheme/mangaxyz/res/web_hi_res_512.png
deleted file mode 100644
index 63e7235fb..000000000
Binary files a/multisrc/overrides/madtheme/mangaxyz/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madtheme/toonilyme/res/web_hi_res_512.png b/multisrc/overrides/madtheme/toonilyme/res/web_hi_res_512.png
deleted file mode 100644
index 93c217d1a..000000000
Binary files a/multisrc/overrides/madtheme/toonilyme/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madtheme/toonitube/res/web_hi_res_512.png b/multisrc/overrides/madtheme/toonitube/res/web_hi_res_512.png
deleted file mode 100644
index 93c217d1a..000000000
Binary files a/multisrc/overrides/madtheme/toonitube/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/madtheme/truemanga/res/web_hi_res_512.png b/multisrc/overrides/madtheme/truemanga/res/web_hi_res_512.png
deleted file mode 100644
index 6b3bf9dd1..000000000
Binary files a/multisrc/overrides/madtheme/truemanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangabox/default/res/web_hi_res_512.png b/multisrc/overrides/mangabox/default/res/web_hi_res_512.png
deleted file mode 100644
index 652a26bba..000000000
Binary files a/multisrc/overrides/mangabox/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangabox/mangabat/res/web_hi_res_512.png b/multisrc/overrides/mangabox/mangabat/res/web_hi_res_512.png
deleted file mode 100644
index 58a3a6839..000000000
Binary files a/multisrc/overrides/mangabox/mangabat/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangabox/mangairo/res/web_hi_res_512.png b/multisrc/overrides/mangabox/mangairo/res/web_hi_res_512.png
deleted file mode 100644
index 0a27b7bc4..000000000
Binary files a/multisrc/overrides/mangabox/mangairo/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangabox/mangakakalot/res/web_hi_res_512.png b/multisrc/overrides/mangabox/mangakakalot/res/web_hi_res_512.png
deleted file mode 100644
index 9b1eb1f25..000000000
Binary files a/multisrc/overrides/mangabox/mangakakalot/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangabox/mangakakalots/res/web_hi_res_512.png b/multisrc/overrides/mangabox/mangakakalots/res/web_hi_res_512.png
deleted file mode 100644
index 9b1eb1f25..000000000
Binary files a/multisrc/overrides/mangabox/mangakakalots/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangabox/manganelo/res/web_hi_res_512.png b/multisrc/overrides/mangabox/manganelo/res/web_hi_res_512.png
deleted file mode 100644
index ca28870fe..000000000
Binary files a/multisrc/overrides/mangabox/manganelo/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangacatalog/default/res/web_hi_res_512.png b/multisrc/overrides/mangacatalog/default/res/web_hi_res_512.png
deleted file mode 100644
index 08ed2c639..000000000
Binary files a/multisrc/overrides/mangacatalog/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangacatalog/readattackontitanshingekinokyojinmanga/res/web_hi_res_512.png b/multisrc/overrides/mangacatalog/readattackontitanshingekinokyojinmanga/res/web_hi_res_512.png
deleted file mode 100644
index 602c5d867..000000000
Binary files a/multisrc/overrides/mangacatalog/readattackontitanshingekinokyojinmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangacatalog/readbokunoheroacademiamyheroacademiamanga/res/web_hi_res_512.png b/multisrc/overrides/mangacatalog/readbokunoheroacademiamyheroacademiamanga/res/web_hi_res_512.png
deleted file mode 100644
index f47333a8b..000000000
Binary files a/multisrc/overrides/mangacatalog/readbokunoheroacademiamyheroacademiamanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangacatalog/readhunterxhuntermangaonline/res/web_hi_res_512.png b/multisrc/overrides/mangacatalog/readhunterxhuntermangaonline/res/web_hi_res_512.png
deleted file mode 100644
index b7a705959..000000000
Binary files a/multisrc/overrides/mangacatalog/readhunterxhuntermangaonline/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangacatalog/readjujutsukaisenmangaonline/res/web_hi_res_512.png b/multisrc/overrides/mangacatalog/readjujutsukaisenmangaonline/res/web_hi_res_512.png
deleted file mode 100644
index 5971585a0..000000000
Binary files a/multisrc/overrides/mangacatalog/readjujutsukaisenmangaonline/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangacatalog/readkaguyasamamangaonline/res/web_hi_res_512.png b/multisrc/overrides/mangacatalog/readkaguyasamamangaonline/res/web_hi_res_512.png
deleted file mode 100644
index 632b1b354..000000000
Binary files a/multisrc/overrides/mangacatalog/readkaguyasamamangaonline/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangacatalog/readnanatsunotaizai7deadlysinsmangaonline/res/web_hi_res_512.png b/multisrc/overrides/mangacatalog/readnanatsunotaizai7deadlysinsmangaonline/res/web_hi_res_512.png
deleted file mode 100644
index 821d2dece..000000000
Binary files a/multisrc/overrides/mangacatalog/readnanatsunotaizai7deadlysinsmangaonline/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangacatalog/readonepunchmanmangaonlinetwo/res/web_hi_res_512.png b/multisrc/overrides/mangacatalog/readonepunchmanmangaonlinetwo/res/web_hi_res_512.png
deleted file mode 100644
index 6aa0712f2..000000000
Binary files a/multisrc/overrides/mangacatalog/readonepunchmanmangaonlinetwo/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangacatalog/readsololevelingmangamanhwaonline/res/web_hi_res_512.png b/multisrc/overrides/mangacatalog/readsololevelingmangamanhwaonline/res/web_hi_res_512.png
deleted file mode 100644
index ffcc4c8ba..000000000
Binary files a/multisrc/overrides/mangacatalog/readsololevelingmangamanhwaonline/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangacatalog/readthepromisedneverlandmangaonline/res/web_hi_res_512.png b/multisrc/overrides/mangacatalog/readthepromisedneverlandmangaonline/res/web_hi_res_512.png
deleted file mode 100644
index 8bc27b8b5..000000000
Binary files a/multisrc/overrides/mangacatalog/readthepromisedneverlandmangaonline/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangacatalog/readtokyoghoulretokyoghoulmangaonline/res/web_hi_res_512.png b/multisrc/overrides/mangacatalog/readtokyoghoulretokyoghoulmangaonline/res/web_hi_res_512.png
deleted file mode 100644
index 5532a8dcc..000000000
Binary files a/multisrc/overrides/mangacatalog/readtokyoghoulretokyoghoulmangaonline/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangacatalog/readtowerofgodmanhwamangaonline/res/web_hi_res_512.png b/multisrc/overrides/mangacatalog/readtowerofgodmanhwamangaonline/res/web_hi_res_512.png
deleted file mode 100644
index b84222a9a..000000000
Binary files a/multisrc/overrides/mangacatalog/readtowerofgodmanhwamangaonline/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangadventure/arcrelight/res/web_hi_res_512.png b/multisrc/overrides/mangadventure/arcrelight/res/web_hi_res_512.png
deleted file mode 100644
index 4f4afa386..000000000
Binary files a/multisrc/overrides/mangadventure/arcrelight/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangadventure/assortedscans/res/web_hi_res_512.png b/multisrc/overrides/mangadventure/assortedscans/res/web_hi_res_512.png
deleted file mode 100644
index 27b537534..000000000
Binary files a/multisrc/overrides/mangadventure/assortedscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangadventure/default/res/web_hi_res_512.png b/multisrc/overrides/mangadventure/default/res/web_hi_res_512.png
deleted file mode 100644
index 053dd0157..000000000
Binary files a/multisrc/overrides/mangadventure/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangahub/default/additional.gradle b/multisrc/overrides/mangahub/default/additional.gradle
index 57807a7d0..4020fe0a8 100644
--- a/multisrc/overrides/mangahub/default/additional.gradle
+++ b/multisrc/overrides/mangahub/default/additional.gradle
@@ -1,3 +1,3 @@
dependencies {
- implementation(project(":lib-randomua"))
+ implementation(project(":lib:randomua"))
}
diff --git a/multisrc/overrides/mangahub/default/res/web_hi_res_512.png b/multisrc/overrides/mangahub/default/res/web_hi_res_512.png
deleted file mode 100644
index 011896f7f..000000000
Binary files a/multisrc/overrides/mangahub/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangahub/mangahubio/res/web_hi_res_512.png b/multisrc/overrides/mangahub/mangahubio/res/web_hi_res_512.png
deleted file mode 100644
index 751106d78..000000000
Binary files a/multisrc/overrides/mangahub/mangahubio/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangahub/mangapandaonl/res/web_hi_res_512.png b/multisrc/overrides/mangahub/mangapandaonl/res/web_hi_res_512.png
deleted file mode 100644
index 96698a496..000000000
Binary files a/multisrc/overrides/mangahub/mangapandaonl/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangahub/mangareadersite/res/web_hi_res_512.png b/multisrc/overrides/mangahub/mangareadersite/res/web_hi_res_512.png
deleted file mode 100644
index 2c8b07e85..000000000
Binary files a/multisrc/overrides/mangahub/mangareadersite/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangamainac/default/res/web_hi_res_512.png b/multisrc/overrides/mangamainac/default/res/web_hi_res_512.png
deleted file mode 100644
index 87d091aab..000000000
Binary files a/multisrc/overrides/mangamainac/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangaraw/default/res/web_hi_res_512.png b/multisrc/overrides/mangaraw/default/res/web_hi_res_512.png
deleted file mode 100644
index ba73ec67f..000000000
Binary files a/multisrc/overrides/mangaraw/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangaraw/manga9co/res/web_hi_res_512.png b/multisrc/overrides/mangaraw/manga9co/res/web_hi_res_512.png
deleted file mode 100644
index 231d07f53..000000000
Binary files a/multisrc/overrides/mangaraw/manga9co/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangareader/comickiba/res/web_hi_res_512.png b/multisrc/overrides/mangareader/comickiba/res/web_hi_res_512.png
deleted file mode 100644
index 717e1de04..000000000
Binary files a/multisrc/overrides/mangareader/comickiba/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangareader/mangafire/res/web_hi_res_512.png b/multisrc/overrides/mangareader/mangafire/res/web_hi_res_512.png
deleted file mode 100644
index 6ede68720..000000000
Binary files a/multisrc/overrides/mangareader/mangafire/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangareader/mangareaderto/res/web_hi_res_512.png b/multisrc/overrides/mangareader/mangareaderto/res/web_hi_res_512.png
deleted file mode 100644
index 1ca30c2ef..000000000
Binary files a/multisrc/overrides/mangareader/mangareaderto/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/ainzscansid/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/ainzscansid/res/web_hi_res_512.png
deleted file mode 100644
index a4b1a071d..000000000
Binary files a/multisrc/overrides/mangathemesia/ainzscansid/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/aiyumanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/aiyumanga/res/web_hi_res_512.png
deleted file mode 100644
index 2b7575c0f..000000000
Binary files a/multisrc/overrides/mangathemesia/aiyumanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/aiyumanga/src/AiYuManga.kt b/multisrc/overrides/mangathemesia/aiyumanga/src/AiYuManga.kt
deleted file mode 100644
index 7258d67d7..000000000
--- a/multisrc/overrides/mangathemesia/aiyumanga/src/AiYuManga.kt
+++ /dev/null
@@ -1,21 +0,0 @@
-package eu.kanade.tachiyomi.extension.es.aiyumanga
-
-import eu.kanade.tachiyomi.multisrc.mangathemesia.MangaThemesia
-import eu.kanade.tachiyomi.network.interceptor.rateLimit
-import java.text.SimpleDateFormat
-import java.util.Locale
-import java.util.concurrent.TimeUnit
-
-class AiYuManga : MangaThemesia(
- "AiYuManga",
- "https://aiyumanhua.com",
- "es",
- dateFormat = SimpleDateFormat("MMMM dd, yyyy", Locale("es")),
-) {
- // Site moved from ZeistManga to MangaThemesia
- override val versionId = 3
-
- override val client = super.client.newBuilder()
- .rateLimit(2, 1, TimeUnit.SECONDS)
- .build()
-}
diff --git a/multisrc/overrides/mangathemesia/alceascan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/alceascan/res/web_hi_res_512.png
deleted file mode 100644
index 4c88e6f34..000000000
Binary files a/multisrc/overrides/mangathemesia/alceascan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/web_hi_res_512.png
deleted file mode 100644
index beceff8e7..000000000
Binary files a/multisrc/overrides/mangathemesia/animatedglitchedcomics/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/animatedglitchedscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/animatedglitchedscans/res/web_hi_res_512.png
deleted file mode 100644
index beceff8e7..000000000
Binary files a/multisrc/overrides/mangathemesia/animatedglitchedscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/areamanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/areamanga/res/web_hi_res_512.png
deleted file mode 100644
index 83b42018c..000000000
Binary files a/multisrc/overrides/mangathemesia/areamanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/arvenscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/arvenscans/res/web_hi_res_512.png
deleted file mode 100644
index fdf8ff92d..000000000
Binary files a/multisrc/overrides/mangathemesia/arvenscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/ascalonscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/ascalonscans/res/web_hi_res_512.png
deleted file mode 100644
index 509e61a61..000000000
Binary files a/multisrc/overrides/mangathemesia/ascalonscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/asurascans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/asurascans/res/web_hi_res_512.png
deleted file mode 100644
index 688ccf4f0..000000000
Binary files a/multisrc/overrides/mangathemesia/asurascans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/azurescans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/azurescans/res/web_hi_res_512.png
deleted file mode 100644
index 8f60d4141..000000000
Binary files a/multisrc/overrides/mangathemesia/azurescans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/batotoscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/batotoscans/res/web_hi_res_512.png
deleted file mode 100644
index 2bcf64ace..000000000
Binary files a/multisrc/overrides/mangathemesia/batotoscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/beastscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/beastscans/res/web_hi_res_512.png
deleted file mode 100644
index b90ad2e82..000000000
Binary files a/multisrc/overrides/mangathemesia/beastscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/berserkerscan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/berserkerscan/res/web_hi_res_512.png
deleted file mode 100644
index 37e843cc3..000000000
Binary files a/multisrc/overrides/mangathemesia/berserkerscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/birdmanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/birdmanga/res/web_hi_res_512.png
deleted file mode 100644
index 262e7393c..000000000
Binary files a/multisrc/overrides/mangathemesia/birdmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/boosei/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/boosei/res/web_hi_res_512.png
deleted file mode 100644
index 39cccab55..000000000
Binary files a/multisrc/overrides/mangathemesia/boosei/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/carteldemanhwas/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/carteldemanhwas/res/web_hi_res_512.png
deleted file mode 100644
index 41e4ec299..000000000
Binary files a/multisrc/overrides/mangathemesia/carteldemanhwas/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/constellarscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/constellarscans/res/web_hi_res_512.png
deleted file mode 100644
index a8dd214cc..000000000
Binary files a/multisrc/overrides/mangathemesia/constellarscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/cosmicscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/cosmicscans/res/web_hi_res_512.png
deleted file mode 100644
index 9ac0f4b06..000000000
Binary files a/multisrc/overrides/mangathemesia/cosmicscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/cosmicscansid/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/cosmicscansid/res/web_hi_res_512.png
deleted file mode 100644
index 94b2f91d0..000000000
Binary files a/multisrc/overrides/mangathemesia/cosmicscansid/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/cypherscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/cypherscans/res/web_hi_res_512.png
deleted file mode 100644
index a8bd034a5..000000000
Binary files a/multisrc/overrides/mangathemesia/cypherscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/default/additional.gradle b/multisrc/overrides/mangathemesia/default/additional.gradle
index 57807a7d0..4020fe0a8 100644
--- a/multisrc/overrides/mangathemesia/default/additional.gradle
+++ b/multisrc/overrides/mangathemesia/default/additional.gradle
@@ -1,3 +1,3 @@
dependencies {
- implementation(project(":lib-randomua"))
+ implementation(project(":lib:randomua"))
}
diff --git a/multisrc/overrides/mangathemesia/default/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/default/res/web_hi_res_512.png
deleted file mode 100644
index 6bcf749cd..000000000
Binary files a/multisrc/overrides/mangathemesia/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/diskusscan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/diskusscan/res/web_hi_res_512.png
deleted file mode 100644
index 9521cd83a..000000000
Binary files a/multisrc/overrides/mangathemesia/diskusscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/dojingnet/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/dojingnet/res/web_hi_res_512.png
deleted file mode 100644
index b1ec64003..000000000
Binary files a/multisrc/overrides/mangathemesia/dojingnet/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/duniakomikid/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/duniakomikid/res/web_hi_res_512.png
deleted file mode 100644
index 42f16c53a..000000000
Binary files a/multisrc/overrides/mangathemesia/duniakomikid/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/elarcpage/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/elarcpage/res/web_hi_res_512.png
deleted file mode 100644
index 68aacc454..000000000
Binary files a/multisrc/overrides/mangathemesia/elarcpage/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/enryumanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/enryumanga/res/web_hi_res_512.png
deleted file mode 100644
index e96635590..000000000
Binary files a/multisrc/overrides/mangathemesia/enryumanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/epsilonscan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/epsilonscan/res/web_hi_res_512.png
deleted file mode 100644
index 59d911e4d..000000000
Binary files a/multisrc/overrides/mangathemesia/epsilonscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/evilproduction/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/evilproduction/res/web_hi_res_512.png
deleted file mode 100644
index 8b820b2f7..000000000
Binary files a/multisrc/overrides/mangathemesia/evilproduction/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/flamecomics/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/flamecomics/res/web_hi_res_512.png
deleted file mode 100644
index ccbde4a5b..000000000
Binary files a/multisrc/overrides/mangathemesia/flamecomics/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/flamescansfr/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/flamescansfr/res/web_hi_res_512.png
deleted file mode 100644
index 07b044931..000000000
Binary files a/multisrc/overrides/mangathemesia/flamescansfr/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/freakscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/freakscans/res/web_hi_res_512.png
deleted file mode 100644
index 910ae2e46..000000000
Binary files a/multisrc/overrides/mangathemesia/freakscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/gloryscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/gloryscans/res/web_hi_res_512.png
deleted file mode 100644
index 0a055b362..000000000
Binary files a/multisrc/overrides/mangathemesia/gloryscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/gogomanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/gogomanga/res/web_hi_res_512.png
deleted file mode 100644
index d14a6888e..000000000
Binary files a/multisrc/overrides/mangathemesia/gogomanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/gremorymangas/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/gremorymangas/res/web_hi_res_512.png
deleted file mode 100644
index 7051e9e92..000000000
Binary files a/multisrc/overrides/mangathemesia/gremorymangas/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/hanumanscan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/hanumanscan/res/web_hi_res_512.png
deleted file mode 100644
index 159765ad5..000000000
Binary files a/multisrc/overrides/mangathemesia/hanumanscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/heroxia/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/heroxia/res/web_hi_res_512.png
deleted file mode 100644
index 4d2e781d3..000000000
Binary files a/multisrc/overrides/mangathemesia/heroxia/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/imaginescan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/imaginescan/res/web_hi_res_512.png
deleted file mode 100644
index cf3cd5ac4..000000000
Binary files a/multisrc/overrides/mangathemesia/imaginescan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/inarimanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/inarimanga/res/web_hi_res_512.png
deleted file mode 100644
index 98d3d08fc..000000000
Binary files a/multisrc/overrides/mangathemesia/inarimanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/inazumanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/inazumanga/res/web_hi_res_512.png
deleted file mode 100644
index 371275e29..000000000
Binary files a/multisrc/overrides/mangathemesia/inazumanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/infernalvoidscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/infernalvoidscans/res/web_hi_res_512.png
deleted file mode 100644
index 0ead52ae2..000000000
Binary files a/multisrc/overrides/mangathemesia/infernalvoidscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/kaiscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/kaiscans/res/web_hi_res_512.png
deleted file mode 100644
index b869c62d6..000000000
Binary files a/multisrc/overrides/mangathemesia/kaiscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/katakomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/katakomik/res/web_hi_res_512.png
deleted file mode 100644
index 84c391a01..000000000
Binary files a/multisrc/overrides/mangathemesia/katakomik/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/kiryuu/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/kiryuu/res/web_hi_res_512.png
deleted file mode 100644
index 8b0820ce3..000000000
Binary files a/multisrc/overrides/mangathemesia/kiryuu/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/komikav/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komikav/res/web_hi_res_512.png
deleted file mode 100644
index b9f01a2e3..000000000
Binary files a/multisrc/overrides/mangathemesia/komikav/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/komikcast/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komikcast/res/web_hi_res_512.png
deleted file mode 100644
index 48c25bff2..000000000
Binary files a/multisrc/overrides/mangathemesia/komikcast/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/komikdewasa/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komikdewasa/res/web_hi_res_512.png
deleted file mode 100644
index d4ab30bc6..000000000
Binary files a/multisrc/overrides/mangathemesia/komikdewasa/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/komikindoco/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komikindoco/res/web_hi_res_512.png
deleted file mode 100644
index bf03065f4..000000000
Binary files a/multisrc/overrides/mangathemesia/komikindoco/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/komiklab/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komiklab/res/web_hi_res_512.png
deleted file mode 100644
index e3f573f60..000000000
Binary files a/multisrc/overrides/mangathemesia/komiklab/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/komikmama/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komikmama/res/web_hi_res_512.png
deleted file mode 100644
index 50247fd8f..000000000
Binary files a/multisrc/overrides/mangathemesia/komikmama/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/komikmanhwa/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komikmanhwa/res/web_hi_res_512.png
deleted file mode 100644
index 7069327c7..000000000
Binary files a/multisrc/overrides/mangathemesia/komikmanhwa/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/komiksan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komiksan/res/web_hi_res_512.png
deleted file mode 100644
index 5979f900d..000000000
Binary files a/multisrc/overrides/mangathemesia/komiksan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/komikseru/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komikseru/res/web_hi_res_512.png
deleted file mode 100644
index d570d9863..000000000
Binary files a/multisrc/overrides/mangathemesia/komikseru/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/komikstation/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komikstation/res/web_hi_res_512.png
deleted file mode 100644
index 491429c19..000000000
Binary files a/multisrc/overrides/mangathemesia/komikstation/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/komiktap/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komiktap/res/web_hi_res_512.png
deleted file mode 100644
index 5a7df24fb..000000000
Binary files a/multisrc/overrides/mangathemesia/komiktap/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/komikucom/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/komikucom/res/web_hi_res_512.png
deleted file mode 100644
index 353917f06..000000000
Binary files a/multisrc/overrides/mangathemesia/komikucom/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/kumapoi/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/kumapoi/res/web_hi_res_512.png
deleted file mode 100644
index ae53fb0a6..000000000
Binary files a/multisrc/overrides/mangathemesia/kumapoi/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/kumascans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/kumascans/res/web_hi_res_512.png
deleted file mode 100644
index ed1d20dd7..000000000
Binary files a/multisrc/overrides/mangathemesia/kumascans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/lelmanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/lelmanga/res/web_hi_res_512.png
deleted file mode 100644
index e5a6e7852..000000000
Binary files a/multisrc/overrides/mangathemesia/lelmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/lianscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/lianscans/res/web_hi_res_512.png
deleted file mode 100644
index 69435dc05..000000000
Binary files a/multisrc/overrides/mangathemesia/lianscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/lunarscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/lunarscans/res/web_hi_res_512.png
deleted file mode 100644
index 6dfd3fe6a..000000000
Binary files a/multisrc/overrides/mangathemesia/lunarscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/lynxscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/lynxscans/res/web_hi_res_512.png
deleted file mode 100644
index 3a35efa06..000000000
Binary files a/multisrc/overrides/mangathemesia/lynxscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/lyrascans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/lyrascans/res/web_hi_res_512.png
deleted file mode 100644
index 8f080717f..000000000
Binary files a/multisrc/overrides/mangathemesia/lyrascans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/magusmanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/magusmanga/res/web_hi_res_512.png
deleted file mode 100644
index 4b7cc4393..000000000
Binary files a/multisrc/overrides/mangathemesia/magusmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/mangacim/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangacim/res/web_hi_res_512.png
deleted file mode 100644
index c309c3ace..000000000
Binary files a/multisrc/overrides/mangathemesia/mangacim/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/mangaindome/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangaindome/res/web_hi_res_512.png
deleted file mode 100644
index 4ec61fc57..000000000
Binary files a/multisrc/overrides/mangathemesia/mangaindome/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/mangakita/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangakita/res/web_hi_res_512.png
deleted file mode 100644
index 1c24b5a8a..000000000
Binary files a/multisrc/overrides/mangathemesia/mangakita/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/mangakyo/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangakyo/res/web_hi_res_512.png
deleted file mode 100644
index c99ae07e7..000000000
Binary files a/multisrc/overrides/mangathemesia/mangakyo/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/mangashiina/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangashiina/res/web_hi_res_512.png
deleted file mode 100644
index 8411e149d..000000000
Binary files a/multisrc/overrides/mangathemesia/mangashiina/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/mangashiro/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangashiro/res/web_hi_res_512.png
deleted file mode 100644
index 3328f3aa3..000000000
Binary files a/multisrc/overrides/mangathemesia/mangashiro/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/mangasusu/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangasusu/res/web_hi_res_512.png
deleted file mode 100644
index a4540c889..000000000
Binary files a/multisrc/overrides/mangathemesia/mangasusu/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/mangaswat/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangaswat/res/web_hi_res_512.png
deleted file mode 100644
index 963f86a5e..000000000
Binary files a/multisrc/overrides/mangathemesia/mangaswat/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/mangatale/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangatale/res/web_hi_res_512.png
deleted file mode 100644
index 99381d921..000000000
Binary files a/multisrc/overrides/mangathemesia/mangatale/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/mangawt/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangawt/res/web_hi_res_512.png
deleted file mode 100644
index b1d41054d..000000000
Binary files a/multisrc/overrides/mangathemesia/mangawt/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/mangayaro/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangayaro/res/web_hi_res_512.png
deleted file mode 100644
index 5f5175316..000000000
Binary files a/multisrc/overrides/mangathemesia/mangayaro/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/mangceh/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangceh/res/web_hi_res_512.png
deleted file mode 100644
index 72ff9840b..000000000
Binary files a/multisrc/overrides/mangathemesia/mangceh/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/mangkomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mangkomik/res/web_hi_res_512.png
deleted file mode 100644
index ccaa10962..000000000
Binary files a/multisrc/overrides/mangathemesia/mangkomik/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/manhwadesu/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/manhwadesu/res/web_hi_res_512.png
deleted file mode 100644
index 99c8c7d89..000000000
Binary files a/multisrc/overrides/mangathemesia/manhwadesu/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/manhwafreak/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/manhwafreak/res/web_hi_res_512.png
deleted file mode 100644
index b5f934bd5..000000000
Binary files a/multisrc/overrides/mangathemesia/manhwafreak/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/manhwafreakfr/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/manhwafreakfr/res/web_hi_res_512.png
deleted file mode 100644
index 4d0f59498..000000000
Binary files a/multisrc/overrides/mangathemesia/manhwafreakfr/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/manhwaindo/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/manhwaindo/res/web_hi_res_512.png
deleted file mode 100644
index 4e1d21d1e..000000000
Binary files a/multisrc/overrides/mangathemesia/manhwaindo/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/manhwalandmom/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/manhwalandmom/res/web_hi_res_512.png
deleted file mode 100644
index dbe949913..000000000
Binary files a/multisrc/overrides/mangathemesia/manhwalandmom/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/manhwalist/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/manhwalist/res/web_hi_res_512.png
deleted file mode 100644
index 8d598b338..000000000
Binary files a/multisrc/overrides/mangathemesia/manhwalist/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/manhwalover/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/manhwalover/res/web_hi_res_512.png
deleted file mode 100644
index 49f046050..000000000
Binary files a/multisrc/overrides/mangathemesia/manhwalover/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/masterkomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/masterkomik/res/web_hi_res_512.png
deleted file mode 100644
index 00aaa64cf..000000000
Binary files a/multisrc/overrides/mangathemesia/masterkomik/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/melokomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/melokomik/res/web_hi_res_512.png
deleted file mode 100644
index 5f6053b64..000000000
Binary files a/multisrc/overrides/mangathemesia/melokomik/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/miauscan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/miauscan/res/web_hi_res_512.png
deleted file mode 100644
index e3af99e11..000000000
Binary files a/multisrc/overrides/mangathemesia/miauscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/mihentai/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mihentai/res/web_hi_res_512.png
deleted file mode 100644
index f92f533bb..000000000
Binary files a/multisrc/overrides/mangathemesia/mihentai/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/miraiscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/miraiscans/res/web_hi_res_512.png
deleted file mode 100644
index 2abfda60b..000000000
Binary files a/multisrc/overrides/mangathemesia/miraiscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/mirrordesu/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/mirrordesu/res/web_hi_res_512.png
deleted file mode 100644
index 9c467250e..000000000
Binary files a/multisrc/overrides/mangathemesia/mirrordesu/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/natsu/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/natsu/res/web_hi_res_512.png
deleted file mode 100644
index 35a7a7d0f..000000000
Binary files a/multisrc/overrides/mangathemesia/natsu/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/nekomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/nekomik/res/web_hi_res_512.png
deleted file mode 100644
index f863652cd..000000000
Binary files a/multisrc/overrides/mangathemesia/nekomik/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/nekoscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/nekoscans/res/web_hi_res_512.png
deleted file mode 100644
index 605b6bb9d..000000000
Binary files a/multisrc/overrides/mangathemesia/nekoscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/ngomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/ngomik/res/web_hi_res_512.png
deleted file mode 100644
index 409e80f69..000000000
Binary files a/multisrc/overrides/mangathemesia/ngomik/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/nightscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/nightscans/res/web_hi_res_512.png
deleted file mode 100644
index ae8162acf..000000000
Binary files a/multisrc/overrides/mangathemesia/nightscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/nocturnalscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/nocturnalscans/res/web_hi_res_512.png
deleted file mode 100644
index 0c0632da7..000000000
Binary files a/multisrc/overrides/mangathemesia/nocturnalscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/nonbiri/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/nonbiri/res/web_hi_res_512.png
deleted file mode 100644
index c2cf95009..000000000
Binary files a/multisrc/overrides/mangathemesia/nonbiri/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/noromax/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/noromax/res/web_hi_res_512.png
deleted file mode 100644
index a17815079..000000000
Binary files a/multisrc/overrides/mangathemesia/noromax/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/origamiorpheans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/origamiorpheans/res/web_hi_res_512.png
deleted file mode 100644
index 5d1c814c9..000000000
Binary files a/multisrc/overrides/mangathemesia/origamiorpheans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/otsugami/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/otsugami/res/web_hi_res_512.png
deleted file mode 100644
index 0456dd1dd..000000000
Binary files a/multisrc/overrides/mangathemesia/otsugami/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/phantomscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/phantomscans/res/web_hi_res_512.png
deleted file mode 100644
index 6836240fe..000000000
Binary files a/multisrc/overrides/mangathemesia/phantomscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/phenixscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/phenixscans/res/web_hi_res_512.png
deleted file mode 100644
index f664c995a..000000000
Binary files a/multisrc/overrides/mangathemesia/phenixscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/piscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/piscans/res/web_hi_res_512.png
deleted file mode 100644
index d6dfb1de8..000000000
Binary files a/multisrc/overrides/mangathemesia/piscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/potatomanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/potatomanga/res/web_hi_res_512.png
deleted file mode 100644
index 5c438036e..000000000
Binary files a/multisrc/overrides/mangathemesia/potatomanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/quantumscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/quantumscans/res/web_hi_res_512.png
deleted file mode 100644
index e394e11aa..000000000
Binary files a/multisrc/overrides/mangathemesia/quantumscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/queenscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/queenscans/res/web_hi_res_512.png
deleted file mode 100644
index a85e063b4..000000000
Binary files a/multisrc/overrides/mangathemesia/queenscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/raikiscan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/raikiscan/res/web_hi_res_512.png
deleted file mode 100644
index 1e0bc998c..000000000
Binary files a/multisrc/overrides/mangathemesia/raikiscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/raiscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/raiscans/res/web_hi_res_512.png
deleted file mode 100644
index ca179b6ad..000000000
Binary files a/multisrc/overrides/mangathemesia/raiscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/ravenscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/ravenscans/res/web_hi_res_512.png
deleted file mode 100644
index 557d2b9e9..000000000
Binary files a/multisrc/overrides/mangathemesia/ravenscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/rawkuma/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/rawkuma/res/web_hi_res_512.png
deleted file mode 100644
index 10ba4bad2..000000000
Binary files a/multisrc/overrides/mangathemesia/rawkuma/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/readgojo/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/readgojo/res/web_hi_res_512.png
deleted file mode 100644
index d652f41b6..000000000
Binary files a/multisrc/overrides/mangathemesia/readgojo/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/readkomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/readkomik/res/web_hi_res_512.png
deleted file mode 100644
index a6b7ac496..000000000
Binary files a/multisrc/overrides/mangathemesia/readkomik/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/ryukonesia/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/ryukonesia/res/web_hi_res_512.png
deleted file mode 100644
index 46823e9a6..000000000
Binary files a/multisrc/overrides/mangathemesia/ryukonesia/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/sekaikomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/sekaikomik/res/web_hi_res_512.png
deleted file mode 100644
index a54b9a653..000000000
Binary files a/multisrc/overrides/mangathemesia/sekaikomik/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/sektedoujin/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/sektedoujin/res/web_hi_res_512.png
deleted file mode 100644
index bc62e5082..000000000
Binary files a/multisrc/overrides/mangathemesia/sektedoujin/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/senpaiediciones/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/senpaiediciones/res/web_hi_res_512.png
deleted file mode 100644
index 1436e9b33..000000000
Binary files a/multisrc/overrides/mangathemesia/senpaiediciones/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/shadowmangas/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/shadowmangas/res/web_hi_res_512.png
deleted file mode 100644
index ba4be3973..000000000
Binary files a/multisrc/overrides/mangathemesia/shadowmangas/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/sheamanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/sheamanga/res/web_hi_res_512.png
deleted file mode 100644
index 2c686e748..000000000
Binary files a/multisrc/overrides/mangathemesia/sheamanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/silencescan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/silencescan/res/web_hi_res_512.png
deleted file mode 100644
index a8189e405..000000000
Binary files a/multisrc/overrides/mangathemesia/silencescan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/skymangas/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/skymangas/res/web_hi_res_512.png
deleted file mode 100644
index 4fd9557d8..000000000
Binary files a/multisrc/overrides/mangathemesia/skymangas/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/sodsaime/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/sodsaime/res/web_hi_res_512.png
deleted file mode 100644
index 63b2084e3..000000000
Binary files a/multisrc/overrides/mangathemesia/sodsaime/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/soulscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/soulscans/res/web_hi_res_512.png
deleted file mode 100644
index 2eded446a..000000000
Binary files a/multisrc/overrides/mangathemesia/soulscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/summertoon/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/summertoon/res/web_hi_res_512.png
deleted file mode 100644
index 1d22bf5d1..000000000
Binary files a/multisrc/overrides/mangathemesia/summertoon/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/suryascans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/suryascans/res/web_hi_res_512.png
deleted file mode 100644
index a2cc90cc4..000000000
Binary files a/multisrc/overrides/mangathemesia/suryascans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/sushiscan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/sushiscan/res/web_hi_res_512.png
deleted file mode 100644
index 55a9233fe..000000000
Binary files a/multisrc/overrides/mangathemesia/sushiscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/sushiscanfr/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/sushiscanfr/res/web_hi_res_512.png
deleted file mode 100644
index 373e99d42..000000000
Binary files a/multisrc/overrides/mangathemesia/sushiscanfr/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/tarotscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/tarotscans/res/web_hi_res_512.png
deleted file mode 100644
index aa1fa827e..000000000
Binary files a/multisrc/overrides/mangathemesia/tarotscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/tecnoscan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/tecnoscan/res/web_hi_res_512.png
deleted file mode 100644
index 42906467c..000000000
Binary files a/multisrc/overrides/mangathemesia/tecnoscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/theapolloteam/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/theapolloteam/res/web_hi_res_512.png
deleted file mode 100644
index a08b2a352..000000000
Binary files a/multisrc/overrides/mangathemesia/theapolloteam/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/tresdaosscan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/tresdaosscan/res/web_hi_res_512.png
deleted file mode 100644
index 314308be1..000000000
Binary files a/multisrc/overrides/mangathemesia/tresdaosscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/tsundokutraducoes/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/tsundokutraducoes/res/web_hi_res_512.png
deleted file mode 100644
index 70e8680d3..000000000
Binary files a/multisrc/overrides/mangathemesia/tsundokutraducoes/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/tukangkomik/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/tukangkomik/res/web_hi_res_512.png
deleted file mode 100644
index 5610ffe59..000000000
Binary files a/multisrc/overrides/mangathemesia/tukangkomik/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/turktoon/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/turktoon/res/web_hi_res_512.png
deleted file mode 100644
index c906e8362..000000000
Binary files a/multisrc/overrides/mangathemesia/turktoon/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/uzaymanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/uzaymanga/res/web_hi_res_512.png
deleted file mode 100644
index e51eb1200..000000000
Binary files a/multisrc/overrides/mangathemesia/uzaymanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/vexmanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/vexmanga/res/web_hi_res_512.png
deleted file mode 100644
index 67ed7b365..000000000
Binary files a/multisrc/overrides/mangathemesia/vexmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/vfscan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/vfscan/res/web_hi_res_512.png
deleted file mode 100644
index 7efdec8ad..000000000
Binary files a/multisrc/overrides/mangathemesia/vfscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/walpurgisscan/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/walpurgisscan/res/web_hi_res_512.png
deleted file mode 100644
index 2c471b8b4..000000000
Binary files a/multisrc/overrides/mangathemesia/walpurgisscan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/westmanga/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/westmanga/res/web_hi_res_512.png
deleted file mode 100644
index 96e277da3..000000000
Binary files a/multisrc/overrides/mangathemesia/westmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/worldromancetranslation/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/worldromancetranslation/res/web_hi_res_512.png
deleted file mode 100644
index b97effb4d..000000000
Binary files a/multisrc/overrides/mangathemesia/worldromancetranslation/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/xcalibrscans/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/xcalibrscans/res/web_hi_res_512.png
deleted file mode 100644
index e6df9884a..000000000
Binary files a/multisrc/overrides/mangathemesia/xcalibrscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/zahard/res/web_hi_res_512.png b/multisrc/overrides/mangathemesia/zahard/res/web_hi_res_512.png
deleted file mode 100644
index 5fd25f45f..000000000
Binary files a/multisrc/overrides/mangathemesia/zahard/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangaworld/default/res/web_hi_res_512.png b/multisrc/overrides/mangaworld/default/res/web_hi_res_512.png
deleted file mode 100644
index a0be9e065..000000000
Binary files a/multisrc/overrides/mangaworld/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mccms/default/res/web_hi_res_512.png b/multisrc/overrides/mccms/default/res/web_hi_res_512.png
deleted file mode 100644
index d87464cce..000000000
Binary files a/multisrc/overrides/mccms/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mccms/manhuawu/res/web_hi_res_512.png b/multisrc/overrides/mccms/manhuawu/res/web_hi_res_512.png
deleted file mode 100644
index bd1b52ea4..000000000
Binary files a/multisrc/overrides/mccms/manhuawu/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mmrcms/amascans/res/web_hi_res_512.png b/multisrc/overrides/mmrcms/amascans/res/web_hi_res_512.png
deleted file mode 100644
index 33f3944eb..000000000
Binary files a/multisrc/overrides/mmrcms/amascans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mmrcms/animaregia/res/web_hi_res_512.png b/multisrc/overrides/mmrcms/animaregia/res/web_hi_res_512.png
deleted file mode 100644
index 109328661..000000000
Binary files a/multisrc/overrides/mmrcms/animaregia/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mmrcms/default/res/web_hi_res_512.png b/multisrc/overrides/mmrcms/default/res/web_hi_res_512.png
deleted file mode 100644
index f2d6d43c6..000000000
Binary files a/multisrc/overrides/mmrcms/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mmrcms/fallenangels/res/web_hi_res_512.png b/multisrc/overrides/mmrcms/fallenangels/res/web_hi_res_512.png
deleted file mode 100644
index 8d2327466..000000000
Binary files a/multisrc/overrides/mmrcms/fallenangels/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mmrcms/hentaishark/res/web_hi_res_512.png b/multisrc/overrides/mmrcms/hentaishark/res/web_hi_res_512.png
deleted file mode 100644
index d92eb2672..000000000
Binary files a/multisrc/overrides/mmrcms/hentaishark/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mmrcms/mangadoor/res/web_hi_res_512.png b/multisrc/overrides/mmrcms/mangadoor/res/web_hi_res_512.png
deleted file mode 100644
index 8c250e369..000000000
Binary files a/multisrc/overrides/mmrcms/mangadoor/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mmrcms/mangaid/res/web_hi_res_512.png b/multisrc/overrides/mmrcms/mangaid/res/web_hi_res_512.png
deleted file mode 100644
index 10e92bcc7..000000000
Binary files a/multisrc/overrides/mmrcms/mangaid/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mmrcms/mangasin/additional.gradle b/multisrc/overrides/mmrcms/mangasin/additional.gradle
index 035df1039..67bf8eb33 100644
--- a/multisrc/overrides/mmrcms/mangasin/additional.gradle
+++ b/multisrc/overrides/mmrcms/mangasin/additional.gradle
@@ -1,4 +1,4 @@
dependencies {
- implementation(project(":lib-synchrony"))
- implementation(project(":lib-cryptoaes"))
-}
\ No newline at end of file
+ implementation(project(":lib:synchrony"))
+ implementation(project(":lib:cryptoaes"))
+}
diff --git a/multisrc/overrides/mmrcms/mangasin/res/web_hi_res_512.png b/multisrc/overrides/mmrcms/mangasin/res/web_hi_res_512.png
deleted file mode 100644
index 706045f57..000000000
Binary files a/multisrc/overrides/mmrcms/mangasin/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mmrcms/onma/res/web_hi_res_512.png b/multisrc/overrides/mmrcms/onma/res/web_hi_res_512.png
deleted file mode 100644
index 7f5c94d06..000000000
Binary files a/multisrc/overrides/mmrcms/onma/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mmrcms/phoenixscans/res/web_hi_res_512.png b/multisrc/overrides/mmrcms/phoenixscans/res/web_hi_res_512.png
deleted file mode 100644
index 5164d3886..000000000
Binary files a/multisrc/overrides/mmrcms/phoenixscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mmrcms/scanfr/res/web_hi_res_512.png b/multisrc/overrides/mmrcms/scanfr/res/web_hi_res_512.png
deleted file mode 100644
index 0d2dec96f..000000000
Binary files a/multisrc/overrides/mmrcms/scanfr/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mmrcms/scanvf/res/web_hi_res_512.png b/multisrc/overrides/mmrcms/scanvf/res/web_hi_res_512.png
deleted file mode 100644
index 25ea5345e..000000000
Binary files a/multisrc/overrides/mmrcms/scanvf/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mmrcms/utsukushii/res/web_hi_res_512.png b/multisrc/overrides/mmrcms/utsukushii/res/web_hi_res_512.png
deleted file mode 100644
index 093b199fd..000000000
Binary files a/multisrc/overrides/mmrcms/utsukushii/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/monochrome/default/res/web_hi_res_512.png b/multisrc/overrides/monochrome/default/res/web_hi_res_512.png
deleted file mode 100644
index 2b542ee7a..000000000
Binary files a/multisrc/overrides/monochrome/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/multichan/henchan/res/web_hi_res_512.png b/multisrc/overrides/multichan/henchan/res/web_hi_res_512.png
deleted file mode 100644
index bae8717ce..000000000
Binary files a/multisrc/overrides/multichan/henchan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/multichan/mangachan/res/web_hi_res_512.png b/multisrc/overrides/multichan/mangachan/res/web_hi_res_512.png
deleted file mode 100644
index c299727ba..000000000
Binary files a/multisrc/overrides/multichan/mangachan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/multichan/yaoichan/res/web_hi_res_512.png b/multisrc/overrides/multichan/yaoichan/res/web_hi_res_512.png
deleted file mode 100644
index 151d52f13..000000000
Binary files a/multisrc/overrides/multichan/yaoichan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mymangacms/manhwa18/res/web_hi_res_512.png b/multisrc/overrides/mymangacms/manhwa18/res/web_hi_res_512.png
deleted file mode 100644
index c8877ca02..000000000
Binary files a/multisrc/overrides/mymangacms/manhwa18/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mymangacms/manhwa18net/res/web_hi_res_512.png b/multisrc/overrides/mymangacms/manhwa18net/res/web_hi_res_512.png
deleted file mode 100644
index c8877ca02..000000000
Binary files a/multisrc/overrides/mymangacms/manhwa18net/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mymangacms/truyentranhlh/res/web_hi_res_512.png b/multisrc/overrides/mymangacms/truyentranhlh/res/web_hi_res_512.png
deleted file mode 100644
index a5140304d..000000000
Binary files a/multisrc/overrides/mymangacms/truyentranhlh/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/nepnep/mangalife/res/web_hi_res_512.png b/multisrc/overrides/nepnep/mangalife/res/web_hi_res_512.png
deleted file mode 100644
index 11d762ba0..000000000
Binary files a/multisrc/overrides/nepnep/mangalife/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/nepnep/mangasee/res/web_hi_res_512.png b/multisrc/overrides/nepnep/mangasee/res/web_hi_res_512.png
deleted file mode 100644
index a56a7b6b1..000000000
Binary files a/multisrc/overrides/nepnep/mangasee/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/otakusanctuary/myrockmanga/res/web_hi_res_512.png b/multisrc/overrides/otakusanctuary/myrockmanga/res/web_hi_res_512.png
deleted file mode 100644
index 322c117e6..000000000
Binary files a/multisrc/overrides/otakusanctuary/myrockmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/otakusanctuary/otakusanctuary/res/web_hi_res_512.png b/multisrc/overrides/otakusanctuary/otakusanctuary/res/web_hi_res_512.png
deleted file mode 100644
index d417f7345..000000000
Binary files a/multisrc/overrides/otakusanctuary/otakusanctuary/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/paprika/default/res/web_hi_res_512.png b/multisrc/overrides/paprika/default/res/web_hi_res_512.png
deleted file mode 100644
index 0f5836de3..000000000
Binary files a/multisrc/overrides/paprika/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/paprika/manganeloscom/res/web_hi_res_512.png b/multisrc/overrides/paprika/manganeloscom/res/web_hi_res_512.png
deleted file mode 100644
index 3a8ad45da..000000000
Binary files a/multisrc/overrides/paprika/manganeloscom/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/paprika/mangareadercc/res/web_hi_res_512.png b/multisrc/overrides/paprika/mangareadercc/res/web_hi_res_512.png
deleted file mode 100644
index d8463ca05..000000000
Binary files a/multisrc/overrides/paprika/mangareadercc/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/pizzareader/default/res/web_hi_res_512.png b/multisrc/overrides/pizzareader/default/res/web_hi_res_512.png
deleted file mode 100644
index 9a5418b43..000000000
Binary files a/multisrc/overrides/pizzareader/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/pizzareader/gto/res/web_hi_res_512.png b/multisrc/overrides/pizzareader/gto/res/web_hi_res_512.png
deleted file mode 100644
index be6e51b46..000000000
Binary files a/multisrc/overrides/pizzareader/gto/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/pizzareader/lupiteam/res/web_hi_res_512.png b/multisrc/overrides/pizzareader/lupiteam/res/web_hi_res_512.png
deleted file mode 100644
index 30b117ce9..000000000
Binary files a/multisrc/overrides/pizzareader/lupiteam/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/pizzareader/phoenixscans/res/web_hi_res_512.png b/multisrc/overrides/pizzareader/phoenixscans/res/web_hi_res_512.png
deleted file mode 100644
index a48c7705f..000000000
Binary files a/multisrc/overrides/pizzareader/phoenixscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/pizzareader/tuttoanimemanga/res/web_hi_res_512.png b/multisrc/overrides/pizzareader/tuttoanimemanga/res/web_hi_res_512.png
deleted file mode 100644
index 5a6173396..000000000
Binary files a/multisrc/overrides/pizzareader/tuttoanimemanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/readallcomics/default/res/web_hi_res_512.png b/multisrc/overrides/readallcomics/default/res/web_hi_res_512.png
deleted file mode 100644
index 085267870..000000000
Binary files a/multisrc/overrides/readallcomics/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/readallcomics/readallcomicscom/res/web_hi_res_512.png b/multisrc/overrides/readallcomics/readallcomicscom/res/web_hi_res_512.png
deleted file mode 100644
index 085267870..000000000
Binary files a/multisrc/overrides/readallcomics/readallcomicscom/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/readallcomics/readallmanga/res/web_hi_res_512.png b/multisrc/overrides/readallcomics/readallmanga/res/web_hi_res_512.png
deleted file mode 100644
index c4320c35f..000000000
Binary files a/multisrc/overrides/readallcomics/readallmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/readerfront/ravensscans/res/web_hi_res_512.png b/multisrc/overrides/readerfront/ravensscans/res/web_hi_res_512.png
deleted file mode 100644
index 5eb0cf255..000000000
Binary files a/multisrc/overrides/readerfront/ravensscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/readerfront/scyllascans/res/web_hi_res_512.png b/multisrc/overrides/readerfront/scyllascans/res/web_hi_res_512.png
deleted file mode 100644
index f2698f0c5..000000000
Binary files a/multisrc/overrides/readerfront/scyllascans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/senkuro/senkognito/res/web_hi_res_512.png b/multisrc/overrides/senkuro/senkognito/res/web_hi_res_512.png
deleted file mode 100644
index 8109d76c6..000000000
Binary files a/multisrc/overrides/senkuro/senkognito/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/senkuro/senkuro/res/web_hi_res_512.png b/multisrc/overrides/senkuro/senkuro/res/web_hi_res_512.png
deleted file mode 100644
index 359430854..000000000
Binary files a/multisrc/overrides/senkuro/senkuro/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/sinmh/gufengmh/res/web_hi_res_512.png b/multisrc/overrides/sinmh/gufengmh/res/web_hi_res_512.png
deleted file mode 100644
index 317212e48..000000000
Binary files a/multisrc/overrides/sinmh/gufengmh/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/sinmh/imitui/res/web_hi_res_512.png b/multisrc/overrides/sinmh/imitui/res/web_hi_res_512.png
deleted file mode 100644
index 5e56f22d1..000000000
Binary files a/multisrc/overrides/sinmh/imitui/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/sinmh/manhuadui/res/web_hi_res_512.png b/multisrc/overrides/sinmh/manhuadui/res/web_hi_res_512.png
deleted file mode 100644
index bcaa3f4e4..000000000
Binary files a/multisrc/overrides/sinmh/manhuadui/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/sinmh/qinqin/res/web_hi_res_512.png b/multisrc/overrides/sinmh/qinqin/res/web_hi_res_512.png
deleted file mode 100644
index 1bd1ed09a..000000000
Binary files a/multisrc/overrides/sinmh/qinqin/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/sinmh/wuqimanga/additional.gradle b/multisrc/overrides/sinmh/wuqimanga/additional.gradle
index 027379881..72d602774 100644
--- a/multisrc/overrides/sinmh/wuqimanga/additional.gradle
+++ b/multisrc/overrides/sinmh/wuqimanga/additional.gradle
@@ -1,3 +1,3 @@
dependencies {
- implementation project(':lib-unpacker')
+ implementation project(':lib:unpacker')
}
diff --git a/multisrc/overrides/sinmh/wuqimanga/res/web_hi_res_512.png b/multisrc/overrides/sinmh/wuqimanga/res/web_hi_res_512.png
deleted file mode 100644
index b7ed7273d..000000000
Binary files a/multisrc/overrides/sinmh/wuqimanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/webtoons/default/res/web_hi_res_512.png b/multisrc/overrides/webtoons/default/res/web_hi_res_512.png
deleted file mode 100644
index f22230132..000000000
Binary files a/multisrc/overrides/webtoons/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/webtoons/dongmanmanhua/res/web_hi_res_512.png b/multisrc/overrides/webtoons/dongmanmanhua/res/web_hi_res_512.png
deleted file mode 100644
index d7c91223f..000000000
Binary files a/multisrc/overrides/webtoons/dongmanmanhua/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/webtoons/webtoons/additional.gradle b/multisrc/overrides/webtoons/webtoons/additional.gradle
index 8de52e9e0..f2fd3c255 100644
--- a/multisrc/overrides/webtoons/webtoons/additional.gradle
+++ b/multisrc/overrides/webtoons/webtoons/additional.gradle
@@ -1,3 +1,3 @@
dependencies {
- implementation(project(':lib-textinterceptor'))
+ implementation(project(':lib:textinterceptor'))
}
diff --git a/multisrc/overrides/wpcomics/default/res/web_hi_res_512.png b/multisrc/overrides/wpcomics/default/res/web_hi_res_512.png
deleted file mode 100644
index dcbd2befb..000000000
Binary files a/multisrc/overrides/wpcomics/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/wpcomics/nettruyen/res/web_hi_res_512.png b/multisrc/overrides/wpcomics/nettruyen/res/web_hi_res_512.png
deleted file mode 100644
index d36a348c6..000000000
Binary files a/multisrc/overrides/wpcomics/nettruyen/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/wpcomics/nhattruyen/res/web_hi_res_512.png b/multisrc/overrides/wpcomics/nhattruyen/res/web_hi_res_512.png
deleted file mode 100644
index adfbcfc04..000000000
Binary files a/multisrc/overrides/wpcomics/nhattruyen/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/wpcomics/truyenchon/res/web_hi_res_512.png b/multisrc/overrides/wpcomics/truyenchon/res/web_hi_res_512.png
deleted file mode 100644
index 8b9601081..000000000
Binary files a/multisrc/overrides/wpcomics/truyenchon/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/wpcomics/xoxocomics/res/web_hi_res_512.png b/multisrc/overrides/wpcomics/xoxocomics/res/web_hi_res_512.png
deleted file mode 100644
index 828cc9b1f..000000000
Binary files a/multisrc/overrides/wpcomics/xoxocomics/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zbulu/default/res/web_hi_res_512.png b/multisrc/overrides/zbulu/default/res/web_hi_res_512.png
deleted file mode 100644
index 83a4dd0be..000000000
Binary files a/multisrc/overrides/zbulu/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zbulu/holymanga/res/web_hi_res_512.png b/multisrc/overrides/zbulu/holymanga/res/web_hi_res_512.png
deleted file mode 100644
index 94135669c..000000000
Binary files a/multisrc/overrides/zbulu/holymanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zbulu/mytoon/res/web_hi_res_512.png b/multisrc/overrides/zbulu/mytoon/res/web_hi_res_512.png
deleted file mode 100644
index cf081570d..000000000
Binary files a/multisrc/overrides/zbulu/mytoon/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/mangathemesia/aiyumanga/res/mipmap-hdpi/ic_launcher.png b/multisrc/overrides/zeistmanga/aiyumanga/res/mipmap-hdpi/ic_launcher.png
similarity index 100%
rename from multisrc/overrides/mangathemesia/aiyumanga/res/mipmap-hdpi/ic_launcher.png
rename to multisrc/overrides/zeistmanga/aiyumanga/res/mipmap-hdpi/ic_launcher.png
diff --git a/multisrc/overrides/mangathemesia/aiyumanga/res/mipmap-mdpi/ic_launcher.png b/multisrc/overrides/zeistmanga/aiyumanga/res/mipmap-mdpi/ic_launcher.png
similarity index 100%
rename from multisrc/overrides/mangathemesia/aiyumanga/res/mipmap-mdpi/ic_launcher.png
rename to multisrc/overrides/zeistmanga/aiyumanga/res/mipmap-mdpi/ic_launcher.png
diff --git a/multisrc/overrides/mangathemesia/aiyumanga/res/mipmap-xhdpi/ic_launcher.png b/multisrc/overrides/zeistmanga/aiyumanga/res/mipmap-xhdpi/ic_launcher.png
similarity index 100%
rename from multisrc/overrides/mangathemesia/aiyumanga/res/mipmap-xhdpi/ic_launcher.png
rename to multisrc/overrides/zeistmanga/aiyumanga/res/mipmap-xhdpi/ic_launcher.png
diff --git a/multisrc/overrides/mangathemesia/aiyumanga/res/mipmap-xxhdpi/ic_launcher.png b/multisrc/overrides/zeistmanga/aiyumanga/res/mipmap-xxhdpi/ic_launcher.png
similarity index 100%
rename from multisrc/overrides/mangathemesia/aiyumanga/res/mipmap-xxhdpi/ic_launcher.png
rename to multisrc/overrides/zeistmanga/aiyumanga/res/mipmap-xxhdpi/ic_launcher.png
diff --git a/multisrc/overrides/mangathemesia/aiyumanga/res/mipmap-xxxhdpi/ic_launcher.png b/multisrc/overrides/zeistmanga/aiyumanga/res/mipmap-xxxhdpi/ic_launcher.png
similarity index 100%
rename from multisrc/overrides/mangathemesia/aiyumanga/res/mipmap-xxxhdpi/ic_launcher.png
rename to multisrc/overrides/zeistmanga/aiyumanga/res/mipmap-xxxhdpi/ic_launcher.png
diff --git a/multisrc/overrides/zeistmanga/aiyumanga/src/AiYuManhua.kt b/multisrc/overrides/zeistmanga/aiyumanga/src/AiYuManhua.kt
new file mode 100644
index 000000000..b4427e08a
--- /dev/null
+++ b/multisrc/overrides/zeistmanga/aiyumanga/src/AiYuManhua.kt
@@ -0,0 +1,32 @@
+package eu.kanade.tachiyomi.extension.es.aiyumanga
+
+import eu.kanade.tachiyomi.multisrc.zeistmanga.ZeistManga
+import eu.kanade.tachiyomi.network.interceptor.rateLimit
+import java.util.concurrent.TimeUnit
+
+class AiYuManhua : ZeistManga(
+ "AiYuManhua",
+ "https://www.aiyumanhua.com",
+ "es",
+) {
+ // Site moved from MangaThemesia to ZeistManga (again)
+ override val versionId = 4
+
+ override val client = super.client.newBuilder()
+ .rateLimit(2, 1, TimeUnit.SECONDS)
+ .build()
+
+ override val popularMangaSelector = "div#PopularPosts2 article"
+ override val popularMangaSelectorTitle = ".post-title a"
+ override val popularMangaSelectorUrl = ".post-title a"
+
+ override val hasFilters = false
+
+ override val mangaDetailsSelector = "div.section#main div.widget:has(main)"
+ override val mangaDetailsSelectorGenres = "dl > dd > a[rel=tag]"
+ override val mangaDetailsSelectorInfo = "div#extra-info > dl"
+ override val mangaDetailsSelectorInfoTitle = "dt"
+ override val mangaDetailsSelectorInfoDescription = "dd"
+
+ override val pageListSelector = "article.chapter img[src]"
+}
diff --git a/multisrc/overrides/zeistmanga/animexnovel/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/animexnovel/res/web_hi_res_512.png
deleted file mode 100644
index 1d9e5f43b..000000000
Binary files a/multisrc/overrides/zeistmanga/animexnovel/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/asupankomik/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/asupankomik/res/web_hi_res_512.png
deleted file mode 100644
index 92f1b887c..000000000
Binary files a/multisrc/overrides/zeistmanga/asupankomik/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/elevenscanlator/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/elevenscanlator/res/web_hi_res_512.png
deleted file mode 100644
index a5fb63c5d..000000000
Binary files a/multisrc/overrides/zeistmanga/elevenscanlator/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/guildatierdraw/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/guildatierdraw/res/web_hi_res_512.png
deleted file mode 100644
index db4eb55a5..000000000
Binary files a/multisrc/overrides/zeistmanga/guildatierdraw/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/hijala/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/hijala/res/web_hi_res_512.png
deleted file mode 100644
index ee65c50dc..000000000
Binary files a/multisrc/overrides/zeistmanga/hijala/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/klmanhua/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/klmanhua/res/web_hi_res_512.png
deleted file mode 100644
index f3966ae79..000000000
Binary files a/multisrc/overrides/zeistmanga/klmanhua/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/komikrealm/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/komikrealm/res/web_hi_res_512.png
deleted file mode 100644
index ab0a2dfc4..000000000
Binary files a/multisrc/overrides/zeistmanga/komikrealm/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/lonertranslations/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/lonertranslations/res/web_hi_res_512.png
deleted file mode 100644
index 2e27d7a46..000000000
Binary files a/multisrc/overrides/zeistmanga/lonertranslations/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/mangaailand/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/mangaailand/res/web_hi_res_512.png
deleted file mode 100644
index 9263cc7ba..000000000
Binary files a/multisrc/overrides/zeistmanga/mangaailand/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/mangasoul/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/mangasoul/res/web_hi_res_512.png
deleted file mode 100644
index 4a40c9f31..000000000
Binary files a/multisrc/overrides/zeistmanga/mangasoul/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/mikoroku/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/mikoroku/res/web_hi_res_512.png
deleted file mode 100644
index 27760ce9f..000000000
Binary files a/multisrc/overrides/zeistmanga/mikoroku/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/mikrokosmosfansub/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/mikrokosmosfansub/res/web_hi_res_512.png
deleted file mode 100644
index 1c1e9c500..000000000
Binary files a/multisrc/overrides/zeistmanga/mikrokosmosfansub/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/shiyurasub/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/shiyurasub/res/web_hi_res_512.png
deleted file mode 100644
index 4226983df..000000000
Binary files a/multisrc/overrides/zeistmanga/shiyurasub/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/sobatmanku/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/sobatmanku/res/web_hi_res_512.png
deleted file mode 100644
index b56a5b315..000000000
Binary files a/multisrc/overrides/zeistmanga/sobatmanku/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/tooncubus/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/tooncubus/res/web_hi_res_512.png
deleted file mode 100644
index de1f2e308..000000000
Binary files a/multisrc/overrides/zeistmanga/tooncubus/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/tyrantscans/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/tyrantscans/res/web_hi_res_512.png
deleted file mode 100644
index 9fb6f27cd..000000000
Binary files a/multisrc/overrides/zeistmanga/tyrantscans/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zeistmanga/yokai/res/web_hi_res_512.png b/multisrc/overrides/zeistmanga/yokai/res/web_hi_res_512.png
deleted file mode 100644
index 0214dbe9b..000000000
Binary files a/multisrc/overrides/zeistmanga/yokai/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zmanga/default/res/web_hi_res_512.png b/multisrc/overrides/zmanga/default/res/web_hi_res_512.png
deleted file mode 100644
index ead27d2aa..000000000
Binary files a/multisrc/overrides/zmanga/default/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zmanga/hensekai/res/web_hi_res_512.png b/multisrc/overrides/zmanga/hensekai/res/web_hi_res_512.png
deleted file mode 100644
index 985968af5..000000000
Binary files a/multisrc/overrides/zmanga/hensekai/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zmanga/komikgan/res/web_hi_res_512.png b/multisrc/overrides/zmanga/komikgan/res/web_hi_res_512.png
deleted file mode 100644
index 43a765a0a..000000000
Binary files a/multisrc/overrides/zmanga/komikgan/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zmanga/komikindoinfo/res/web_hi_res_512.png b/multisrc/overrides/zmanga/komikindoinfo/res/web_hi_res_512.png
deleted file mode 100644
index e4ab953fa..000000000
Binary files a/multisrc/overrides/zmanga/komikindoinfo/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zmanga/komikita/res/web_hi_res_512.png b/multisrc/overrides/zmanga/komikita/res/web_hi_res_512.png
deleted file mode 100644
index 231b58945..000000000
Binary files a/multisrc/overrides/zmanga/komikita/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zmanga/komikplay/res/web_hi_res_512.png b/multisrc/overrides/zmanga/komikplay/res/web_hi_res_512.png
deleted file mode 100644
index 67dcc8b98..000000000
Binary files a/multisrc/overrides/zmanga/komikplay/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zmanga/maidmanga/res/web_hi_res_512.png b/multisrc/overrides/zmanga/maidmanga/res/web_hi_res_512.png
deleted file mode 100644
index 23eb4a3da..000000000
Binary files a/multisrc/overrides/zmanga/maidmanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zmanga/neumanga/res/web_hi_res_512.png b/multisrc/overrides/zmanga/neumanga/res/web_hi_res_512.png
deleted file mode 100644
index 43663c402..000000000
Binary files a/multisrc/overrides/zmanga/neumanga/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zmanga/sektekomik/res/web_hi_res_512.png b/multisrc/overrides/zmanga/sektekomik/res/web_hi_res_512.png
deleted file mode 100644
index 5ec0638c1..000000000
Binary files a/multisrc/overrides/zmanga/sektekomik/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/overrides/zmanga/shirodoujin/res/web_hi_res_512.png b/multisrc/overrides/zmanga/shirodoujin/res/web_hi_res_512.png
deleted file mode 100644
index 3c190889f..000000000
Binary files a/multisrc/overrides/zmanga/shirodoujin/res/web_hi_res_512.png and /dev/null differ
diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt
index 537eca255..9e9f2f2d2 100644
--- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt
+++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/mangathemesia/MangaThemesiaGenerator.kt
@@ -16,7 +16,6 @@ class MangaThemesiaGenerator : ThemeSourceGenerator {
override val sources = listOf(
MultiLang("Miau Scan", "https://miaucomics.org", listOf("es", "pt-BR"), overrideVersionCode = 2),
SingleLang("Ainz Scans ID", "https://ainzscans.site", "id"),
- SingleLang("AiYuManga", "https://aiyumanhua.com", "es", overrideVersionCode = 8),
SingleLang("Alceascan", "https://alceascan.my.id", "id"),
SingleLang("Animated Glitched Comics", "https://agscomics.com", "en"),
SingleLang("Animated Glitched Scans", "https://anigliscans.xyz", "en", overrideVersionCode = 1),
diff --git a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistMangaGenerator.kt b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistMangaGenerator.kt
index 14e38e0cf..7a95eaa72 100644
--- a/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistMangaGenerator.kt
+++ b/multisrc/src/main/java/eu/kanade/tachiyomi/multisrc/zeistmanga/ZeistMangaGenerator.kt
@@ -12,6 +12,7 @@ class ZeistMangaGenerator : ThemeSourceGenerator {
override val baseVersionCode: Int = 8
override val sources = listOf(
+ SingleLang("AiYuManhua", "https://www.aiyumanhua.com", "es", className = "AiYuManhua", pkgName = "aiyumanga", overrideVersionCode = 28),
SingleLang("AnimeXNovel", "https://www.animexnovel.com", "pt-BR"),
SingleLang("Asupan Komik", "https://www.asupankomik.my.id", "id", overrideVersionCode = 1),
SingleLang("Celestial Moon", "https://www.celestialmoonscan.com", "es", isNsfw = true),
diff --git a/multisrc/src/main/java/generator/ThemeSourceGenerator.kt b/multisrc/src/main/java/generator/ThemeSourceGenerator.kt
index 44f82aa55..a4dad7d9a 100644
--- a/multisrc/src/main/java/generator/ThemeSourceGenerator.kt
+++ b/multisrc/src/main/java/generator/ThemeSourceGenerator.kt
@@ -71,7 +71,6 @@ interface ThemeSourceGenerator {
|// THIS FILE IS AUTO-GENERATED; DO NOT EDIT
|ext {
| extName = '${source.name}'
- | pkgNameSuffix = '${pkgNameSuffix(source, ".")}'
| extClass = '.${source.className}'
| extFactory = '$themePkg'
| extVersionCode = ${baseVersionCode + source.overrideVersionCode + multisrcLibraryVersion}
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 1ce18b85d..557bdbf89 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,56 +1,14 @@
include(":core")
// Load all modules under /lib
-File(rootDir, "lib").eachDir {
- val libName = it.name
- include(":lib-$libName")
- project(":lib-$libName").projectDir = File("lib/$libName")
-}
+File(rootDir, "lib").eachDir { include("lib:${it.name}") }
-if (System.getenv("CI") == null || System.getenv("CI_MODULE_GEN") == "true") {
- // Local development (full project build)
+// Local development (full project build)
+include(":multisrc")
+project(":multisrc").projectDir = File("multisrc")
- include(":multisrc")
- project(":multisrc").projectDir = File("multisrc")
-
- /**
- * Add or remove modules to load as needed for local development here.
- * To generate multisrc extensions first, run the `:multisrc:generateExtensions` task first.
- */
- loadAllIndividualExtensions()
- loadAllGeneratedMultisrcExtensions()
- // loadIndividualExtension("all", "mangadex")
- // loadGeneratedMultisrcExtension("en", "guya")
-} else {
- // Running in CI (GitHub Actions)
-
- val isMultisrc = System.getenv("CI_MULTISRC") == "true"
-
- if (isMultisrc) {
- include(":multisrc")
- project(":multisrc").projectDir = File("multisrc")
-
- // Loads generated extensions from multisrc
- File(rootDir, "generated-src").eachDir { dir ->
- dir.eachDir { subdir ->
- val name = ":extensions:multisrc:${dir.name}:${subdir.name}"
- println(name)
- include(name)
- project(name).projectDir = File("generated-src/${dir.name}/${subdir.name}")
- }
- }
- } else {
- // Loads individual extensions
- File(rootDir, "src").eachDir { dir ->
- dir.eachDir { subdir ->
- val name = ":extensions:individual:${dir.name}:${subdir.name}"
- println(name)
- include(name)
- project(name).projectDir = File("src/${dir.name}/${subdir.name}")
- }
- }
- }
-}
+loadAllIndividualExtensions()
+loadAllGeneratedMultisrcExtensions()
fun loadAllIndividualExtensions() {
File(rootDir, "src").eachDir { dir ->
@@ -61,6 +19,7 @@ fun loadAllIndividualExtensions() {
}
}
}
+
fun loadAllGeneratedMultisrcExtensions() {
File(rootDir, "generated-src").eachDir { dir ->
dir.eachDir { subdir ->
@@ -70,16 +29,6 @@ fun loadAllGeneratedMultisrcExtensions() {
}
}
}
-fun loadIndividualExtension(lang: String, name: String) {
- val projectName = ":extensions:individual:$lang:$name"
- include(projectName)
- project(projectName).projectDir = File("src/${lang}/${name}")
-}
-fun loadGeneratedMultisrcExtension(lang: String, name: String) {
- val projectName = ":extensions:multisrc:$lang:$name"
- include(projectName)
- project(projectName).projectDir = File("generated-src/${lang}/${name}")
-}
fun File.eachDir(block: (File) -> Unit) {
listFiles()?.filter { it.isDirectory }?.forEach { block(it) }
diff --git a/src/all/akuma/build.gradle b/src/all/akuma/build.gradle
index b91e386e9..b9b0304b1 100644
--- a/src/all/akuma/build.gradle
+++ b/src/all/akuma/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'Akuma'
- pkgNameSuffix = 'all.akuma'
extClass = '.Akuma'
extVersionCode = 1
isNsfw = true
diff --git a/src/all/akuma/res/web_hi_res_512.png b/src/all/akuma/res/web_hi_res_512.png
deleted file mode 100644
index 74af0b3ce..000000000
Binary files a/src/all/akuma/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/batoto/build.gradle b/src/all/batoto/build.gradle
index 641492b96..7c94a845a 100644
--- a/src/all/batoto/build.gradle
+++ b/src/all/batoto/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'Bato.to'
- pkgNameSuffix = 'all.batoto'
extClass = '.BatoToFactory'
extVersionCode = 34
isNsfw = true
@@ -9,5 +8,5 @@ ext {
apply from: "$rootDir/common.gradle"
dependencies {
- implementation(project(':lib-cryptoaes'))
+ implementation(project(':lib:cryptoaes'))
}
diff --git a/src/all/batoto/res/web_hi_res_512.png b/src/all/batoto/res/web_hi_res_512.png
deleted file mode 100644
index 973b65efa..000000000
Binary files a/src/all/batoto/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/buondua/build.gradle b/src/all/buondua/build.gradle
index 91be2df97..ca34bb434 100644
--- a/src/all/buondua/build.gradle
+++ b/src/all/buondua/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'Buon Dua'
- pkgNameSuffix = 'all.buondua'
extClass = '.BuonDua'
extVersionCode = 2
isNsfw = true
diff --git a/src/all/buondua/res/web_hi_res_512.png b/src/all/buondua/res/web_hi_res_512.png
deleted file mode 100644
index 39b64744b..000000000
Binary files a/src/all/buondua/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/comicfury/build.gradle b/src/all/comicfury/build.gradle
index 426a72d82..741cf7088 100644
--- a/src/all/comicfury/build.gradle
+++ b/src/all/comicfury/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'Comic Fury'
- pkgNameSuffix = 'all.comicfury'
extClass = '.ComicFuryFactory'
extVersionCode = 3
isNsfw = true
@@ -9,5 +8,5 @@ ext {
apply from: "$rootDir/common.gradle"
dependencies {
- implementation(project(':lib-textinterceptor'))
+ implementation(project(':lib:textinterceptor'))
}
diff --git a/src/all/comicfury/res/web_hi_res_512.png b/src/all/comicfury/res/web_hi_res_512.png
deleted file mode 100644
index 9f721a498..000000000
Binary files a/src/all/comicfury/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/comickfun/build.gradle b/src/all/comickfun/build.gradle
index 543d58905..4aa96d636 100644
--- a/src/all/comickfun/build.gradle
+++ b/src/all/comickfun/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'Comick'
- pkgNameSuffix = 'all.comickfun'
extClass = '.ComickFunFactory'
extVersionCode = 41
isNsfw = true
@@ -9,5 +8,5 @@ ext {
apply from: "$rootDir/common.gradle"
dependencies {
- implementation(project(":lib-i18n"))
+ implementation(project(":lib:i18n"))
}
diff --git a/src/all/comickfun/res/web_hi_res_512.png b/src/all/comickfun/res/web_hi_res_512.png
deleted file mode 100644
index ce78d3a86..000000000
Binary files a/src/all/comickfun/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/comico/build.gradle b/src/all/comico/build.gradle
index a77c9b96e..39ffd2b44 100644
--- a/src/all/comico/build.gradle
+++ b/src/all/comico/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'Comico'
- pkgNameSuffix = 'all.comico'
extClass = '.ComicoFactory'
extVersionCode = 5
isNsfw = true
@@ -9,5 +8,5 @@ ext {
apply from: "$rootDir/common.gradle"
dependencies {
- implementation(project(':lib-cryptoaes'))
+ implementation(project(':lib:cryptoaes'))
}
diff --git a/src/all/comico/res/web_hi_res_512.png b/src/all/comico/res/web_hi_res_512.png
deleted file mode 100644
index 4ead0a852..000000000
Binary files a/src/all/comico/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/commitstrip/build.gradle b/src/all/commitstrip/build.gradle
index bf28aa0e0..31fd0297d 100644
--- a/src/all/commitstrip/build.gradle
+++ b/src/all/commitstrip/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'Commit Strip'
- pkgNameSuffix = 'all.commitstrip'
extClass = '.CommitStripFactory'
extVersionCode = 3
}
diff --git a/src/all/commitstrip/res/web_hi_res_512.png b/src/all/commitstrip/res/web_hi_res_512.png
deleted file mode 100644
index bf1bb7353..000000000
Binary files a/src/all/commitstrip/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/cubari/build.gradle b/src/all/cubari/build.gradle
index 606e9200f..c8140ba71 100644
--- a/src/all/cubari/build.gradle
+++ b/src/all/cubari/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'Cubari'
- pkgNameSuffix = "all.cubari"
extClass = '.CubariFactory'
extVersionCode = 24
}
diff --git a/src/all/cubari/res/web_hi_res_512.png b/src/all/cubari/res/web_hi_res_512.png
deleted file mode 100644
index 1dfd0c08c..000000000
Binary files a/src/all/cubari/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/danbooru/build.gradle b/src/all/danbooru/build.gradle
index 439bfe93d..55ab57c12 100644
--- a/src/all/danbooru/build.gradle
+++ b/src/all/danbooru/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'Danbooru'
- pkgNameSuffix = 'all.danbooru'
extClass = '.Danbooru'
extVersionCode = 1
isNsfw = true
diff --git a/src/all/danbooru/res/web_hi_res_512.png b/src/all/danbooru/res/web_hi_res_512.png
deleted file mode 100644
index a6586a5fb..000000000
Binary files a/src/all/danbooru/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/dragonballmultiverse/build.gradle b/src/all/dragonballmultiverse/build.gradle
index 08d7cab05..fc99031c0 100644
--- a/src/all/dragonballmultiverse/build.gradle
+++ b/src/all/dragonballmultiverse/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'Dragon Ball Multiverse'
- pkgNameSuffix = 'all.dragonballmultiverse'
extClass = '.DbMFactory'
extVersionCode = 6
}
diff --git a/src/all/dragonballmultiverse/res/web_hi_res_512.png b/src/all/dragonballmultiverse/res/web_hi_res_512.png
deleted file mode 100644
index 3aa681055..000000000
Binary files a/src/all/dragonballmultiverse/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/ehentai/build.gradle b/src/all/ehentai/build.gradle
index 2c277b3cb..be43b1386 100644
--- a/src/all/ehentai/build.gradle
+++ b/src/all/ehentai/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'E-Hentai'
- pkgNameSuffix = 'all.ehentai'
extClass = '.EHFactory'
extVersionCode = 20
isNsfw = true
diff --git a/src/all/ehentai/res/web_hi_res_512.png b/src/all/ehentai/res/web_hi_res_512.png
deleted file mode 100644
index 4529cd749..000000000
Binary files a/src/all/ehentai/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/everiaclub/build.gradle b/src/all/everiaclub/build.gradle
index a4cb85691..16a640c5d 100644
--- a/src/all/everiaclub/build.gradle
+++ b/src/all/everiaclub/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'Everia.club'
- pkgNameSuffix = 'all.everiaclub'
extClass = '.EveriaClub'
extVersionCode = 9
isNsfw = true
diff --git a/src/all/everiaclub/res/web_hi_res_512.png b/src/all/everiaclub/res/web_hi_res_512.png
deleted file mode 100644
index 7b946cf60..000000000
Binary files a/src/all/everiaclub/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/freleinbooks/build.gradle b/src/all/freleinbooks/build.gradle
index 46c460870..0edde750a 100644
--- a/src/all/freleinbooks/build.gradle
+++ b/src/all/freleinbooks/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'Frelein Books'
- pkgNameSuffix = 'all.freleinbooks'
extClass = '.FreleinBooks'
extVersionCode = 1
isNsfw = false
diff --git a/src/all/freleinbooks/res/web_hi_res_512.png b/src/all/freleinbooks/res/web_hi_res_512.png
deleted file mode 100644
index 302b4f9c1..000000000
Binary files a/src/all/freleinbooks/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/hennojin/build.gradle b/src/all/hennojin/build.gradle
index 5a8ec02c7..e0897dd19 100644
--- a/src/all/hennojin/build.gradle
+++ b/src/all/hennojin/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'Hennojin'
- pkgNameSuffix = 'all.hennojin'
extClass = '.HennojinFactory'
extVersionCode = 1
isNsfw = true
diff --git a/src/all/hennojin/res/web_hi_res_512.png b/src/all/hennojin/res/web_hi_res_512.png
deleted file mode 100644
index a5079a5a0..000000000
Binary files a/src/all/hennojin/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/holonometria/build.gradle b/src/all/holonometria/build.gradle
index a3220f4b0..b4dfb1493 100644
--- a/src/all/holonometria/build.gradle
+++ b/src/all/holonometria/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'HOLONOMETRIA'
- pkgNameSuffix = 'all.holonometria'
extClass = '.HolonometriaFactory'
extVersionCode = 1
}
diff --git a/src/all/holonometria/res/web_hi_res_512.png b/src/all/holonometria/res/web_hi_res_512.png
deleted file mode 100644
index b3bd72e7b..000000000
Binary files a/src/all/holonometria/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/imhentai/build.gradle b/src/all/imhentai/build.gradle
index 8f466148b..8aba20a5a 100644
--- a/src/all/imhentai/build.gradle
+++ b/src/all/imhentai/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'IMHentai'
- pkgNameSuffix = 'all.imhentai'
extClass = '.IMHentaiFactory'
extVersionCode = 14
isNsfw = true
diff --git a/src/all/imhentai/res/web_hi_res_512.png b/src/all/imhentai/res/web_hi_res_512.png
deleted file mode 100644
index cfe8b5960..000000000
Binary files a/src/all/imhentai/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/izneo/build.gradle b/src/all/izneo/build.gradle
index 42a75dcf8..576a89252 100644
--- a/src/all/izneo/build.gradle
+++ b/src/all/izneo/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'izneo (webtoons)'
- pkgNameSuffix = 'all.izneo'
extClass = '.IzneoFactory'
extVersionCode = 5
}
diff --git a/src/all/izneo/res/web_hi_res_512.png b/src/all/izneo/res/web_hi_res_512.png
deleted file mode 100644
index f4f29bc02..000000000
Binary files a/src/all/izneo/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/junmeitu/build.gradle b/src/all/junmeitu/build.gradle
index 685905170..1e66397f7 100644
--- a/src/all/junmeitu/build.gradle
+++ b/src/all/junmeitu/build.gradle
@@ -1,6 +1,5 @@
ext {
extName = 'Junmeitu'
- pkgNameSuffix = 'all.junmeitu'
extClass = '.Junmeitu'
extVersionCode = 6
isNsfw = true
diff --git a/src/all/junmeitu/res/web_hi_res_512.png b/src/all/junmeitu/res/web_hi_res_512.png
deleted file mode 100644
index 24cc52822..000000000
Binary files a/src/all/junmeitu/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/kavita/CHANGELOG.md b/src/all/kavita/CHANGELOG.md
deleted file mode 100644
index 2843891e9..000000000
--- a/src/all/kavita/CHANGELOG.md
+++ /dev/null
@@ -1,93 +0,0 @@
-## 1.3.13
-
-### Fixed
-
- * Fixed 'null cannot be cast to non-null type' exception
-
-## 1.3.12
-
-### Features
-
-* Migrate filters to v2
-* Implemented smartFilters
-* Added localization support
-
-### Fixed
-
-* Fixed publication status not showing
-
-## 1.3.10
-
-### Features
-
-* API Change for Kavita v0.7.2
-
-## 1.3.9
-
-### Features
-
-* Added pdf support
-
-## 1.3.8
-
-### Fix
-
-* Fixed `Expected URL scheme 'http' or 'https` when downloading
-
-## 1.3.7
-
-### Features
-
-* New Sort filter: Time to read
-* New Filter: Year release filter
-
-### Fix
-
-* Filters can now be used together with search
-* Epub and pdfs no longer show in format filter (currently not supported)
-
-## 1.3.6
-
-### Fix
-
-* Fixed "lateinit property title not initialized"
-
-## 1.3.5
-
-### Features
-
-* Ignore DOH
-* Added sort option `Item Added`
-* Latest button now shows latest `Item Added`
-
-## 1.3.4
-
-### Features
-
-* Exclude from bulk update warnings
-
-## 1.2.3
-
-### Fix
-
-* Fixed Rating filter
-* Fixed Chapter list not sorting correctly
-* Fixed search
-* Fixed manga details not showing correctly
-* Fixed filters not populating if account was not admin
-
-### Features
-* The extension is now ready to implement tracking.
-* Min required version for the extension to work properly: `v0.5.1.1`
-
-## 1.2.2
-
-### Features
-
-* Add `CHANGELOG.md` & `README.md`
-
-## 1.2.1
-
-### Features
-
-* first version
diff --git a/src/all/kavita/README.md b/src/all/kavita/README.md
deleted file mode 100644
index 79f467edd..000000000
--- a/src/all/kavita/README.md
+++ /dev/null
@@ -1,37 +0,0 @@
-# Kavita
-
-Table of Content
-- [FAQ](#FAQ)
- - [Why do I see no manga?](#why-do-i-see-no-manga)
- - [Where can I get more information about Kavita?](#where-can-i-get-more-information-about-kavita)
- - [The Kavita extension stopped working?](#the-kavita-extension-stopped-working)
- - [Can I add more than one Kavita server or user?](#can-i-add-more-than-one-kavita-server-or-user)
- - [Can I test the Kavita extension before setting up my own server?](#can-i-test-the-kavita-extension-before-setting-up-my-own-server)
-- [Guides](#Guides)
- - [How do I add my Kavita server to Tachiyomi?](#how-do-i-add-my-kavita-server-to-tachiyomi)
-
-Don't find the question you are look for go check out our general FAQs and Guides over at [Extension FAQ](https://tachiyomi.org/help/faq/#extensions) or [Getting Started](https://tachiyomi.org/help/guides/getting-started/#installation)
-
-Kavita also has a documentation about the Tachiyomi Kavita extension at the [Kavita wiki](https://wiki.kavitareader.com/en/guides/misc/tachiyomi).
-
-## FAQ
-
-### Why do I see no manga?
-Kavita is a self-hosted comic/manga media server.
-
-### Where can I get more information about Kavita?
-You can visit the [Kavita](https://www.kavitareader.com/) website for for more information.
-
-### The Kavita extension stopped working?
-Make sure that your Kavita server and extension are on the newest version.
-
-### Can I add more than one Kavita server or user?
-Yes, currently you can add up to 3 different Kavita instances to Tachiyomi.
-
-### Can I test the Kavita extension before setting up my own server?
-Yes, you can try it out with the DEMO servers OPDS url `https://demo.kavitareader.com/api/opds/aca1c50d-7e08-4f37-b356-aecd6bf69b72`.
-
-## Guides
-
-### How do I add my Kavita server to Tachiyomi?
-Go into the settings of the Kavita extension from the Extension tab in Browse and fill in your OPDS url.
diff --git a/src/all/kavita/assets/i18n/messages_en.properties b/src/all/kavita/assets/i18n/messages_en.properties
deleted file mode 100644
index 52f341d65..000000000
--- a/src/all/kavita/assets/i18n/messages_en.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-login_errors_failed_login=Login failed. Something went wrong
-login_errors_header_token_empty="Error: The JSON Web Token is empty.\nTry opening the extension first."
-login_errors_invalid_url=Invalid URL:
-login_errors_parse_tokendto=There was an error parsing the auth token
-pref_customsource_title=Displayed name for source
-pref_edit_customsource_summary=Here you can change this source name.\nYou can write a descriptive name to identify this OPDS URL.
-pref_filters_summary=Show these filters in the filter list
-pref_filters_title=Default filters shown
-pref_opds_badformed_url=Incorrect OPDS address. Please copy it from User settings \u2192 3rd party apps \u2192 OPDS URL
-pref_opds_duplicated_source_url=The URL is configured in a different source ->
-pref_opds_must_setup_address=You must set up the address to communicate with Kavita
-pref_opds_summary=The OPDS URL copied from User Settings. This should include address and end with the API key.
-restartapp_settings=Restart Tachiyomi to apply new setting.
-version_exceptions_chapters_parse=Unhandled exception parsing chapters. Send your logs to the Kavita devs.
-check_version=Ensure you have the newest version of the extension and Kavita. (0.7.8 or newer.)\nIf the issue persists, report it to the Kavita developers with the accompanying logs.
-version_exceptions_smart_filter=Could not decode SmartFilter. Ensure you are using Kavita version 0.7.11 or later.
-http_errors_500=Something went wrong
-http_errors_401=There was an error logging in. Try again or reload the app
diff --git a/src/all/kavita/assets/i18n/messages_es_es.properties b/src/all/kavita/assets/i18n/messages_es_es.properties
deleted file mode 100644
index 8f6d3058c..000000000
--- a/src/all/kavita/assets/i18n/messages_es_es.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-pref_customsource_title=Nombre de la instancia
-pref_edit_customsource_summary=Aqui puedes cambiar el nombre de la instancia.\nPuedes escribir un nombre descriptivo que identifique esta url/instancia
-restartapp_settings=Reinicia la aplicación para aplicar los cambios
-version_exceptions_chapters_parse=Algo ha ido mal al procesar los capitulos. Envia los registros de fallo a los desarrolladores de Kavita
-check_version=Comprueba que tienes tanto Kavita como la extension actualizada. (Version minima: 0.7.8)\nSi el problema persiste, reportalo a los desarrolladores de Kavita aportando los registros de fallo.
-version_exceptions_smart_filter=Fallo al decodificar los filtros inteligentes. Aseg\u00FArate que estas al menos en la version 0.7.11 de Kavita
-http_errors_500=Algo ha ido mal
-http_errors_401=Ha habido un error al iniciar sesi\u00F3n. Prueba otra vez o reinicia la aplicaci\u00F3n
-pref_opds_summary=La url del OPDS copiada de la configuraci\u00F3n del usuario. Debe incluir la direcci\u00F3n y la clave api al final.
-pref_filters_summary=Mostrar estos filtros en la lista de filtros
-pref_filters_title=Filtros por defecto
-pref_opds_badformed_url=La direcci\u00F3n OPDS no es correcta. Por favor, c\u00F3piela desde la Configuraci\u00F3n de usuario-> aplicaciones de terceros -> url de OPDS
-login_errors_parse_tokendto=Se ha producido un error al procesar el token de autenticaci\u00F3n
-pref_opds_duplicated_source_url=Url est\u00E1 configurado en una fuente diferente ->
-pref_opds_must_setup_address=Debe configurar la direcci\u00F3n para comunicarse con Kavita
-login_errors_failed_login=Error en el inicio de sesi\u00F3n. Algo ha ido mal
-login_errors_header_token_empty="Error: el token jwt est\u00E1 vac\u00EDo.\nIntente abrir primero la extensi\u00F3n"
-login_errors_invalid_url=URL no v\u00E1lida:
diff --git a/src/all/kavita/assets/i18n/messages_fr_fr.properties b/src/all/kavita/assets/i18n/messages_fr_fr.properties
deleted file mode 100644
index bd29b962a..000000000
--- a/src/all/kavita/assets/i18n/messages_fr_fr.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-version_exceptions_chapters_parse=Exception non trait\u00E9e durant l'analyse des chapitres. Envoyez les journaux aux d\u00E9velopeurs de Kavita
-pref_customsource_title=Nom d'affichage pour la source
-version_exceptions_smart_filter=\u00C9chec du d\u00E9codage de SmartFilter. Assurez-vous que vous utilisez au moins Kavita version 0.7.11
-pref_opds_summary=L'URL OPDS a \u00E9t\u00E9 copi\u00E9e \u00E0 partir des param\u00E8tres de l'utilisateur. Ceci devrait inclure l'adresse et la cl\u00E9 API.
-pref_filters_summary=Afficher ces filtres dans la liste des filtres
-check_version=Assurez-vous que vous avez l'extension et Kavita mises \u00E0 jour. (version Mini\u202F: 0.7.8)\nSi le probl\u00E8me persiste, signalez-le aux d\u00E9veloppeurs de Kavita en fournissant des journaux
-pref_filters_title=Filtres par d\u00E9faut affich\u00E9s
-pref_edit_customsource_summary=Ici vous pouvez changer ce nom source.\nVous pouvez \u00E9crire un nom descriptif pour identifier cette URL opds
-pref_opds_badformed_url=L'adresse OPDS n'est pas correcte. Veuillez la copiez \u00E0 partir des param\u00E8tres de l'utilisateur - > Applis tierces -> URL OPDS
-login_errors_parse_tokendto=Il y a eu une erreur pendant l'analyse du jeton d'authentification
-restartapp_settings=Red\u00E9marrez Tachiyomi pour appliquer le nouveau r\u00E9glage.
-pref_opds_duplicated_source_url=L'URL est configur\u00E9e dans une autre source ->
-pref_opds_must_setup_address=Vous devez configurer l'adresse pour communiquer avec Kavita
-login_errors_failed_login=\u00C9chec de la connexion. Quelque chose s'est mal pass\u00E9
-http_errors_500=Quelque chose s'est mal pass\u00E9
-login_errors_header_token_empty=\u00AB\u00A0Erreur\u202F: le jeton jwt est vide.\nEssayez d'abord d'ouvrir l'extension\u00A0\u00BB
-login_errors_invalid_url=URL invalide\u202F:
-http_errors_401=Il y a eu une erreur. Essayez de nouveau ou rechargez l'application
diff --git a/src/all/kavita/assets/i18n/messages_nb_no.properties b/src/all/kavita/assets/i18n/messages_nb_no.properties
deleted file mode 100644
index c2e0a530d..000000000
--- a/src/all/kavita/assets/i18n/messages_nb_no.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-pref_customsource_title=Vist kildenavn
-pref_edit_customsource_summary=Her kan du endre dette kildenavnet.\nDu kan skrive et beskrivende navn for \u00E5 identifisere denne OPDS-nettadressen.
-restartapp_settings=Ny innstilling trer i kraft n\u00E5r du starter Tachiyomi p\u00E5 ny.
-duplicated_source_url=Nettadressen er satt opp i en annen Kavita-instans
-pref_filters_summary=Vis disse filterne i filterlisten
-pref_filters_title=Forvalgte filtre valgt
-login_errors_parse_tokendto=Kunne ikke tolke identifiseringssymbolet
-login_errors_failed_login=Innlogging mislyktes. Noe gikk galt.
-http_errors_500=Noe gikk galt
-login_errors_header_token_empty="Feil: JSON-nettsymbol er tomt.\nPr\u00F8v \u00E5 \u00E5pne utvidelsen f\u00F8rst."
-login_errors_invalid_url=Ugyldig nettadresse:
-version_exceptions_chapters_parse=Uh\u00E5ndtert unntak i tolking av kapitler. Send loggene dine til Kavita-utviklerne.
-version_exceptions_smart_filter=Kunne ikke dekode smartfilter. Forsikre deg om at du bruker Kavita versjon 0.7.11 eller nyere.
-pref_opds_summary=OPDS-nettadressen kopiert fra brukerinnstillingene. Denne skal inkludere med adressen og slutte med API-n\u00F8kkelen.
-check_version=Forsikre deg om at b\u00E5de utvidelsen og Kavita er av nyeste versjon. (Ihvertfall 0.7.8)\nHvis problemet vedvarer kan du rapportere det til Kavita-utviklerne med tilh\u00F8rende loggf\u00F8ring.
-pref_opds_badformed_url=OPDS-adressen er ikke riktig. Kopier den fra brukerinnstillinger -> tredjepartsprogrammer -> OPDS-nettadresse
-pref_opds_duplicated_source_url=Nettadressen er satt opp i en annen instans ->
-pref_opds_must_setup_address=Du m\u00E5 sette opp adressen som skal kommunisere med Kavita
-http_errors_401=Feil med innlogging. Pr\u00F8v \u00E5 laste inn p\u00E5 ny, eller start programmet p\u00E5 ny.
diff --git a/src/all/kavita/build.gradle b/src/all/kavita/build.gradle
deleted file mode 100644
index 838daa9dd..000000000
--- a/src/all/kavita/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-apply plugin: 'kotlinx-serialization'
-
-ext {
- extName = 'Kavita'
- pkgNameSuffix = 'all.kavita'
- extClass = '.KavitaFactory'
- extVersionCode = 13
-}
-
-dependencies {
- implementation 'info.debatty:java-string-similarity:2.0.0'
- implementation(project(':lib-i18n'))
-}
-
-apply from: "$rootDir/common.gradle"
diff --git a/src/all/kavita/res/mipmap-hdpi/ic_launcher.png b/src/all/kavita/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100644
index 16cee6c3e..000000000
Binary files a/src/all/kavita/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/src/all/kavita/res/mipmap-mdpi/ic_launcher.png b/src/all/kavita/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100644
index ebcbc75a2..000000000
Binary files a/src/all/kavita/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/src/all/kavita/res/mipmap-xhdpi/ic_launcher.png b/src/all/kavita/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100644
index 39ca4ccaa..000000000
Binary files a/src/all/kavita/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/all/kavita/res/mipmap-xxhdpi/ic_launcher.png b/src/all/kavita/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100644
index 98f3ea1ff..000000000
Binary files a/src/all/kavita/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/all/kavita/res/mipmap-xxxhdpi/ic_launcher.png b/src/all/kavita/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100644
index dc7d8341f..000000000
Binary files a/src/all/kavita/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/all/kavita/res/web_hi_res_512.png b/src/all/kavita/res/web_hi_res_512.png
deleted file mode 100644
index 0168166c3..000000000
Binary files a/src/all/kavita/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/Filters.kt b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/Filters.kt
deleted file mode 100644
index 80d0e4075..000000000
--- a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/Filters.kt
+++ /dev/null
@@ -1,112 +0,0 @@
-package eu.kanade.tachiyomi.extension.all.kavita
-
-import eu.kanade.tachiyomi.extension.all.kavita.KavitaConstants.noSmartFilterSelected
-import eu.kanade.tachiyomi.source.model.Filter
-
-class UserRating :
- Filter.Select(
- "Minimum Rating",
- arrayOf(
- "Any",
- "1 star",
- "2 stars",
- "3 stars",
- "4 stars",
- "5 stars",
- ),
- )
-class SmartFiltersFilter(smartFilters: Array) :
- Filter.Select("Smart Filters", arrayOf(noSmartFilterSelected) + smartFilters)
-class SortFilter(sortables: Array) : Filter.Sort("Sort by", sortables, Selection(0, true))
-
-val sortableList = listOf(
- Pair("Sort name", 1),
- Pair("Created", 2),
- Pair("Last modified", 3),
- Pair("Item added", 4),
- Pair("Time to Read", 5),
- Pair("Release year", 6),
-)
-
-class StatusFilter(name: String) : Filter.CheckBox(name, false)
-class StatusFilterGroup(filters: List) :
- Filter.Group("Status", filters)
-
-class ReleaseYearRange(name: String) : Filter.Text(name)
-class ReleaseYearRangeGroup(filters: List) :
- Filter.Group("Release Year", filters)
-class GenreFilter(name: String) : Filter.TriState(name)
-class GenreFilterGroup(genres: List) :
- Filter.Group("Genres", genres)
-
-class TagFilter(name: String) : Filter.TriState(name)
-class TagFilterGroup(tags: List) : Filter.Group("Tags", tags)
-
-class AgeRatingFilter(name: String) : Filter.TriState(name)
-class AgeRatingFilterGroup(ageRatings: List) :
- Filter.Group("Age Rating", ageRatings)
-
-class FormatFilter(name: String) : Filter.CheckBox(name, false)
-class FormatsFilterGroup(formats: List) :
- Filter.Group("Formats", formats)
-
-class CollectionFilter(name: String) : Filter.TriState(name)
-class CollectionFilterGroup(collections: List) :
- Filter.Group("Collection", collections)
-
-class LanguageFilter(name: String) : Filter.TriState(name)
-class LanguageFilterGroup(languages: List) :
- Filter.Group("Language", languages)
-
-class LibraryFilter(library: String) : Filter.TriState(library)
-class LibrariesFilterGroup(libraries: List) :
- Filter.Group("Libraries", libraries)
-
-class PubStatusFilter(name: String) : Filter.CheckBox(name, false)
-class PubStatusFilterGroup(status: List) :
- Filter.Group("Publication Status", status)
-
-class PeopleHeaderFilter(name: String) :
- Filter.Header(name)
-class PeopleSeparatorFilter :
- Filter.Separator()
-
-class WriterPeopleFilter(name: String) : Filter.CheckBox(name, false)
-class WriterPeopleFilterGroup(peoples: List) :
- Filter.Group("Writer", peoples)
-
-class PencillerPeopleFilter(name: String) : Filter.CheckBox(name, false)
-class PencillerPeopleFilterGroup(peoples: List) :
- Filter.Group("Penciller", peoples)
-
-class InkerPeopleFilter(name: String) : Filter.CheckBox(name, false)
-class InkerPeopleFilterGroup(peoples: List) :
- Filter.Group("Inker", peoples)
-
-class ColoristPeopleFilter(name: String) : Filter.CheckBox(name, false)
-class ColoristPeopleFilterGroup(peoples: List) :
- Filter.Group("Colorist", peoples)
-
-class LettererPeopleFilter(name: String) : Filter.CheckBox(name, false)
-class LettererPeopleFilterGroup(peoples: List) :
- Filter.Group("Letterer", peoples)
-
-class CoverArtistPeopleFilter(name: String) : Filter.CheckBox(name, false)
-class CoverArtistPeopleFilterGroup(peoples: List) :
- Filter.Group("Cover Artist", peoples)
-
-class EditorPeopleFilter(name: String) : Filter.CheckBox(name, false)
-class EditorPeopleFilterGroup(peoples: List) :
- Filter.Group("Editor", peoples)
-
-class PublisherPeopleFilter(name: String) : Filter.CheckBox(name, false)
-class PublisherPeopleFilterGroup(peoples: List) :
- Filter.Group("Publisher", peoples)
-
-class CharacterPeopleFilter(name: String) : Filter.CheckBox(name, false)
-class CharacterPeopleFilterGroup(peoples: List) :
- Filter.Group("Character", peoples)
-
-class TranslatorPeopleFilter(name: String) : Filter.CheckBox(name, false)
-class TranslatorPeopleFilterGroup(peoples: List) :
- Filter.Group("Translator", peoples)
diff --git a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/Kavita.kt b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/Kavita.kt
deleted file mode 100644
index 079e457a9..000000000
--- a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/Kavita.kt
+++ /dev/null
@@ -1,1264 +0,0 @@
-package eu.kanade.tachiyomi.extension.all.kavita
-
-import android.app.Application
-import android.content.SharedPreferences
-import android.text.InputType
-import android.util.Log
-import android.widget.Toast
-import androidx.preference.EditTextPreference
-import androidx.preference.MultiSelectListPreference
-import eu.kanade.tachiyomi.AppInfo
-import eu.kanade.tachiyomi.extension.all.kavita.dto.AuthenticationDto
-import eu.kanade.tachiyomi.extension.all.kavita.dto.FilterComparison
-import eu.kanade.tachiyomi.extension.all.kavita.dto.FilterField
-import eu.kanade.tachiyomi.extension.all.kavita.dto.FilterStatementDto
-import eu.kanade.tachiyomi.extension.all.kavita.dto.FilterV2Dto
-import eu.kanade.tachiyomi.extension.all.kavita.dto.MangaFormat
-import eu.kanade.tachiyomi.extension.all.kavita.dto.MetadataAgeRatings
-import eu.kanade.tachiyomi.extension.all.kavita.dto.MetadataCollections
-import eu.kanade.tachiyomi.extension.all.kavita.dto.MetadataGenres
-import eu.kanade.tachiyomi.extension.all.kavita.dto.MetadataLanguages
-import eu.kanade.tachiyomi.extension.all.kavita.dto.MetadataLibrary
-import eu.kanade.tachiyomi.extension.all.kavita.dto.MetadataPayload
-import eu.kanade.tachiyomi.extension.all.kavita.dto.MetadataPeople
-import eu.kanade.tachiyomi.extension.all.kavita.dto.MetadataPubStatus
-import eu.kanade.tachiyomi.extension.all.kavita.dto.MetadataTag
-import eu.kanade.tachiyomi.extension.all.kavita.dto.PersonRole
-import eu.kanade.tachiyomi.extension.all.kavita.dto.SeriesDto
-import eu.kanade.tachiyomi.extension.all.kavita.dto.SeriesMetadataDto
-import eu.kanade.tachiyomi.extension.all.kavita.dto.ServerInfoDto
-import eu.kanade.tachiyomi.extension.all.kavita.dto.SmartFilter
-import eu.kanade.tachiyomi.extension.all.kavita.dto.SortFieldEnum
-import eu.kanade.tachiyomi.extension.all.kavita.dto.SortOptions
-import eu.kanade.tachiyomi.extension.all.kavita.dto.VolumeDto
-import eu.kanade.tachiyomi.network.GET
-import eu.kanade.tachiyomi.network.POST
-import eu.kanade.tachiyomi.network.asObservableSuccess
-import eu.kanade.tachiyomi.source.ConfigurableSource
-import eu.kanade.tachiyomi.source.UnmeteredSource
-import eu.kanade.tachiyomi.source.model.Filter
-import eu.kanade.tachiyomi.source.model.Filter.TriState.Companion.STATE_EXCLUDE
-import eu.kanade.tachiyomi.source.model.Filter.TriState.Companion.STATE_INCLUDE
-import eu.kanade.tachiyomi.source.model.FilterList
-import eu.kanade.tachiyomi.source.model.MangasPage
-import eu.kanade.tachiyomi.source.model.Page
-import eu.kanade.tachiyomi.source.model.SChapter
-import eu.kanade.tachiyomi.source.model.SManga
-import eu.kanade.tachiyomi.source.online.HttpSource
-import kotlinx.serialization.decodeFromString
-import kotlinx.serialization.json.Json
-import kotlinx.serialization.json.buildJsonObject
-import kotlinx.serialization.json.encodeToJsonElement
-import kotlinx.serialization.json.put
-import okhttp3.Dns
-import okhttp3.Headers
-import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
-import okhttp3.MediaType.Companion.toMediaTypeOrNull
-import okhttp3.OkHttpClient
-import okhttp3.Request
-import okhttp3.RequestBody.Companion.toRequestBody
-import okhttp3.Response
-import rx.Observable
-import rx.Single
-import rx.schedulers.Schedulers
-import uy.kohesive.injekt.Injekt
-import uy.kohesive.injekt.api.get
-import uy.kohesive.injekt.injectLazy
-import java.io.IOException
-import java.net.ConnectException
-import java.security.MessageDigest
-import java.util.Locale
-
-class Kavita(private val suffix: String = "") : ConfigurableSource, UnmeteredSource, HttpSource() {
- private val helper = KavitaHelper()
- override val client: OkHttpClient =
- network.client.newBuilder()
- .dns(Dns.SYSTEM)
- .build()
- override val id by lazy {
- val key = "${"kavita_$suffix"}/all/$versionId"
- val bytes = MessageDigest.getInstance("MD5").digest(key.toByteArray())
- (0..7).map { bytes[it].toLong() and 0xff shl 8 * (7 - it) }.reduce(Long::or) and Long.MAX_VALUE
- }
- private val preferences: SharedPreferences by lazy {
- Injekt.get().getSharedPreferences("source_$id", 0x0000)
- }
- override val name = "${KavitaInt.KAVITA_NAME} (${preferences.getString(KavitaConstants.customSourceNamePref, suffix)})"
- override val lang = "all"
- override val supportsLatest = true
- private val apiUrl by lazy { getPrefApiUrl() }
- override val baseUrl by lazy { getPrefBaseUrl() }
- private val address by lazy { getPrefAddress() } // Address for the Kavita OPDS url. Should be http(s)://host:(port)/api/opds/api-key
- private val apiKey by lazy { getPrefApiKey() }
- private var jwtToken = "" // * JWT Token for authentication with the server. Stored in memory.
- private val LOG_TAG = """Kavita_${"[$suffix]_" + preferences.getString(KavitaConstants.customSourceNamePref, "[$suffix]")!!.replace(' ', '_')}"""
- private var isLogged = false // Used to know if login was correct and not send login requests anymore
- private val json: Json by injectLazy()
-
- private var series = emptyList() // Acts as a cache
-
- private inline fun Response.parseAs(): T =
- use {
- if (it.code == 401) {
- Log.e(LOG_TAG, "Http error 401 - Not authorized: ${it.request.url}")
- Throwable("Http error 401 - Not authorized: ${it.request.url}")
- }
-
- if (it.peekBody(Long.MAX_VALUE).string().isEmpty()) {
- Log.e(LOG_TAG, "Empty body String for request url: ${it.request.url}")
- throw EmptyRequestBody(
- "Body of the response is empty. RequestUrl=${it.request.url}\nPlease check your kavita instance is up to date",
- Throwable("Error. Request body is empty"),
- )
- }
- json.decodeFromString(it.body.string())
- }
-
- /**
- * Custom implementation for fetch popular, latest and search
- * Handles and logs errors to provide a more detailed exception to the users.
- */
- private fun fetch(request: Request): Observable {
- return client.newCall(request)
- .asObservableSuccess()
- .onErrorResumeNext { throwable ->
- // Get Http code
- val field = throwable.javaClass.getDeclaredField("code")
- field.isAccessible = true // Make the field accessible
- try {
- var code = field.get(throwable) // Get the value of the code property
- Log.e(LOG_TAG, "Error fetching manga: ${throwable.message}", throwable)
- if (code as Int !in intArrayOf(401, 201, 500)) {
- code = 500
- }
- return@onErrorResumeNext Observable.error(IOException("Http Error: $code\n ${helper.intl["http_errors_$code"]}\n${helper.intl["check_version"]}"))
- } catch (e: Exception) {
- Log.e(LOG_TAG, e.toString(), e)
- return@onErrorResumeNext Observable.error(e)
- }
- }
- .map { response ->
- popularMangaParse(response)
- }
- }
-
- override fun fetchPopularManga(page: Int) =
- fetch(popularMangaRequest(page))
-
- override fun fetchLatestUpdates(page: Int) =
- fetch(latestUpdatesRequest(page))
-
- override fun fetchSearchManga(page: Int, query: String, filters: FilterList): Observable =
- fetch(searchMangaRequest(page, query, filters))
-
- override fun popularMangaParse(response: Response): MangasPage {
- try {
- val result = response.parseAs>()
- series = result
- val mangaList = result.map { item -> helper.createSeriesDto(item, apiUrl, apiKey) }
- return MangasPage(mangaList, helper.hasNextPage(response))
- } catch (e: Exception) {
- Log.e(LOG_TAG, "Unhandled exception", e)
- throw IOException(helper.intl["check_version"])
- }
- }
-
- override fun popularMangaRequest(page: Int): Request {
- if (!isLogged) {
- doLogin()
- }
- val payload = buildFilterBody(currentFilter)
- return POST(
- "$apiUrl/series/all-v2?pageNumber=$page&pageSize=20",
- headersBuilder().build(),
- payload.toRequestBody(JSON_MEDIA_TYPE),
- )
- }
-
- override fun latestUpdatesRequest(page: Int): Request {
- if (!isLogged) {
- doLogin()
- }
- // Hardcode exclude epubs
- val filter = FilterV2Dto(sortOptions = SortOptions(SortFieldEnum.LastChapterAdded.type, false))
- filter.statements.add(FilterStatementDto(FilterComparison.NotContains.type, FilterField.Formats.type, "3"))
- val payload = json.encodeToJsonElement(filter).toString()
- return POST(
- "$apiUrl/series/all-v2?pageNumber=$page&pageSize=20",
- headersBuilder().build(),
- payload.toRequestBody(JSON_MEDIA_TYPE),
- )
- }
-
- override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
- val newFilter = MetadataPayload() // need to reset it or will double
- val smartFilterFilter = filters.find { it is SmartFiltersFilter }
- // If a SmartFilter selected, apply its filter and return that
- if (smartFilterFilter?.state != 0 && smartFilterFilter != null) {
- val index = try {
- smartFilterFilter?.state as Int - 1
- } catch (e: Exception) {
- Log.e(LOG_TAG, e.toString(), e)
- 0
- }
-
- val filter: SmartFilter = smartFilters[index]
- val payload = buildJsonObject {
- put("EncodedFilter", filter.filter)
- }
- // Decode selected filters
- val request = POST(
- "$apiUrl/filter/decode",
- headersBuilder().build(),
- payload.toString().toRequestBody(JSON_MEDIA_TYPE),
- )
- client.newCall(request).execute().use {
- if (it.code == 200) {
- // Hardcode exclude epub
- val decoded_filter = json.decodeFromString(it.body.string())
- decoded_filter.statements.add(FilterStatementDto(FilterComparison.NotContains.type, FilterField.Formats.type, "3"))
-
- // Make request with selected filters
- return POST(
- "$apiUrl/series/all-v2?pageNumber=$page&pageSize=20",
- headersBuilder().build(),
- json.encodeToJsonElement(decoded_filter).toString().toRequestBody(JSON_MEDIA_TYPE),
- )
- } else {
- Log.e(LOG_TAG, "Failed to decode SmartFilter: ${it.code}\n" + it.message)
- throw IOException(helper.intl["version_exceptions_smart_filter"])
- }
- }
- }
- // Else apply user filters
-
- filters.forEach { filter ->
- when (filter) {
- is SortFilter -> {
- if (filter.state != null) {
- newFilter.sorting = filter.state!!.index + 1
- newFilter.sorting_asc = filter.state!!.ascending
- }
- }
-
- is StatusFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state) {
- newFilter.readStatus.add(content.name)
- }
- }
- }
-
- is ReleaseYearRangeGroup -> {
- filter.state.forEach { content ->
- if (content.state.isNotEmpty()) {
- if (content.name == "Min") {
- newFilter.releaseYearRangeMin = content.state.toInt()
- }
- if (content.name == "Max") {
- newFilter.releaseYearRangeMax = content.state.toInt()
- }
- }
- }
- }
-
- is GenreFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state == STATE_INCLUDE) {
- newFilter.genres_i.add(genresListMeta.find { it.title == content.name }!!.id)
- } else if (content.state == STATE_EXCLUDE) {
- newFilter.genres_e.add(genresListMeta.find { it.title == content.name }!!.id)
- }
- }
- }
-
- is UserRating -> {
- newFilter.userRating = filter.state
- }
-
- is TagFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state == STATE_INCLUDE) {
- newFilter.tags_i.add(tagsListMeta.find { it.title == content.name }!!.id)
- } else if (content.state == STATE_EXCLUDE) {
- newFilter.tags_e.add(tagsListMeta.find { it.title == content.name }!!.id)
- }
- }
- }
-
- is AgeRatingFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state == STATE_INCLUDE) {
- newFilter.ageRating_i.add(ageRatingsListMeta.find { it.title == content.name }!!.value)
- } else if (content.state == STATE_EXCLUDE) {
- newFilter.ageRating_e.add(ageRatingsListMeta.find { it.title == content.name }!!.value)
- }
- }
- }
-
- is FormatsFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state) {
- newFilter.formats.add(MangaFormat.valueOf(content.name).ordinal)
- }
- }
- }
-
- is CollectionFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state == STATE_INCLUDE) {
- newFilter.collections_i.add(collectionsListMeta.find { it.title == content.name }!!.id)
- } else if (content.state == STATE_EXCLUDE) {
- newFilter.collections_e.add(collectionsListMeta.find { it.title == content.name }!!.id)
- }
- }
- }
-
- is LanguageFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state == STATE_INCLUDE) {
- newFilter.language_i.add(languagesListMeta.find { it.title == content.name }!!.isoCode)
- } else if (content.state == STATE_EXCLUDE) {
- newFilter.language_e.add(languagesListMeta.find { it.title == content.name }!!.isoCode)
- }
- }
- }
-
- is LibrariesFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state == STATE_INCLUDE) {
- newFilter.libraries_i.add(libraryListMeta.find { it.name == content.name }!!.id)
- } else if (content.state == STATE_EXCLUDE) {
- newFilter.libraries_e.add(libraryListMeta.find { it.name == content.name }!!.id)
- }
- }
- }
-
- is PubStatusFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state) {
- newFilter.pubStatus.add(pubStatusListMeta.find { it.title == content.name }!!.value)
- }
- }
- }
-
- is WriterPeopleFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state) {
- newFilter.peopleWriters.add(peopleListMeta.find { it.name == content.name }!!.id)
- }
- }
- }
-
- is PencillerPeopleFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state) {
- newFilter.peoplePenciller.add(peopleListMeta.find { it.name == content.name }!!.id)
- }
- }
- }
-
- is InkerPeopleFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state) {
- newFilter.peopleInker.add(peopleListMeta.find { it.name == content.name }!!.id)
- }
- }
- }
-
- is ColoristPeopleFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state) {
- newFilter.peoplePeoplecolorist.add(peopleListMeta.find { it.name == content.name }!!.id)
- }
- }
- }
-
- is LettererPeopleFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state) {
- newFilter.peopleLetterer.add(peopleListMeta.find { it.name == content.name }!!.id)
- }
- }
- }
-
- is CoverArtistPeopleFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state) {
- newFilter.peopleCoverArtist.add(peopleListMeta.find { it.name == content.name }!!.id)
- }
- }
- }
-
- is EditorPeopleFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state) {
- newFilter.peopleEditor.add(peopleListMeta.find { it.name == content.name }!!.id)
- }
- }
- }
-
- is PublisherPeopleFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state) {
- newFilter.peoplePublisher.add(peopleListMeta.find { it.name == content.name }!!.id)
- }
- }
- }
-
- is CharacterPeopleFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state) {
- newFilter.peopleCharacter.add(peopleListMeta.find { it.name == content.name }!!.id)
- }
- }
- }
-
- is TranslatorPeopleFilterGroup -> {
- filter.state.forEach { content ->
- if (content.state) {
- newFilter.peopleTranslator.add(peopleListMeta.find { it.name == content.name }!!.id)
- }
- }
- }
-
- else -> {}
- }
- }
- newFilter.seriesNameQuery = query
- currentFilter = newFilter
- return popularMangaRequest(page)
- }
-
- /*
- * MANGA DETAILS (metadata about series)
- * **/
-
- override fun fetchMangaDetails(manga: SManga): Observable {
- val serieId = helper.getIdFromUrl(manga.url)
- return client.newCall(GET("$apiUrl/series/metadata?seriesId=$serieId", headersBuilder().build()))
- .asObservableSuccess()
- .map { response ->
- mangaDetailsParse(response).apply { initialized = true }
- }
- }
-
- override fun mangaDetailsRequest(manga: SManga): Request {
- val serieId = helper.getIdFromUrl(manga.url)
- val foundSerie = series.find { dto -> dto.id == serieId }
- return GET(
- "$baseUrl/library/${foundSerie!!.libraryId}/series/$serieId",
- headersBuilder().build(),
- )
- }
-
- override fun mangaDetailsParse(response: Response): SManga {
- val result = response.parseAs()
-
- val existingSeries = series.find { dto -> dto.id == result.seriesId }
- if (existingSeries != null) {
- val manga = helper.createSeriesDto(existingSeries, apiUrl, apiKey)
- manga.url = "$apiUrl/Series/${result.seriesId}"
- manga.artist = result.coverArtists.joinToString { it.name }
- manga.description = result.summary
- manga.author = result.writers.joinToString { it.name }
- manga.genre = result.genres.joinToString { it.title }
- manga.thumbnail_url = "$apiUrl/image/series-cover?seriesId=${result.seriesId}&apiKey=$apiKey"
-
- return manga
- }
- val serieDto = client.newCall(GET("$apiUrl/Series/${result.seriesId}", headersBuilder().build()))
- .execute()
- .parseAs()
-
- return SManga.create().apply {
- url = "$apiUrl/Series/${result.seriesId}"
- artist = result.coverArtists.joinToString { it.name }
- description = result.summary
- author = result.writers.joinToString { it.name }
- genre = result.genres.joinToString { it.title }
- title = serieDto.name
- thumbnail_url = "$apiUrl/image/series-cover?seriesId=${result.seriesId}&apiKey=$apiKey"
- status = when (result.publicationStatus) {
- 4 -> SManga.PUBLISHING_FINISHED
- 2 -> SManga.COMPLETED
- 0 -> SManga.ONGOING
- 3 -> SManga.CANCELLED
- 1 -> SManga.ON_HIATUS
- else -> SManga.UNKNOWN
- }
- }
- }
-
- /*
- * CHAPTER LIST
- * **/
- override fun chapterListRequest(manga: SManga): Request {
- val url = "$apiUrl/Series/volumes?seriesId=${helper.getIdFromUrl(manga.url)}"
- return GET(url, headersBuilder().build())
- }
-
- override fun chapterListParse(response: Response): List {
- try {
- val volumes = response.parseAs>()
- val allChapterList = mutableListOf()
- volumes.forEach { volume ->
- run {
- if (volume.number == 0) {
- // Regular chapters
- volume.chapters.map {
- allChapterList.add(helper.chapterFromObject(it))
- }
- } else {
- // Volume chapter
- volume.chapters.map {
- allChapterList.add(helper.chapterFromVolume(it, volume))
- }
- }
- }
- }
-
- allChapterList.sortWith(KavitaHelper.CompareChapters)
- return allChapterList
- } catch (e: Exception) {
- Log.e(LOG_TAG, "Unhandled exception parsing chapters. Send logs to kavita devs", e)
- throw IOException(helper.intl["version_exceptions_chapters_parse"])
- }
- }
-
- /**
- * Fetches the "url" of each page from the chapter
- * **/
- override fun pageListRequest(chapter: SChapter): Request {
- return GET("$apiUrl/${chapter.url}", headersBuilder().build())
- }
-
- override fun fetchPageList(chapter: SChapter): Observable> {
- val chapterId = chapter.url
- val numPages = chapter.scanlator?.replace(" pages", "")?.toInt()
- val numPages2 = "$numPages".toInt() - 1
- val pages = mutableListOf()
- for (i in 0..numPages2) {
- pages.add(
- Page(
- index = i,
- imageUrl = "$apiUrl/Reader/image?chapterId=$chapterId&page=$i&extractPdf=true&apiKey=$apiKey",
- ),
- )
- }
- return Observable.just(pages)
- }
-
- override fun latestUpdatesParse(response: Response): MangasPage =
- throw UnsupportedOperationException("Not used")
-
- override fun pageListParse(response: Response): List =
- throw UnsupportedOperationException("Not used")
-
- override fun searchMangaParse(response: Response): MangasPage =
- throw UnsupportedOperationException("Not used")
-
- override fun imageUrlParse(response: Response): String = ""
-
- /*
- * FILTERING
- **/
-
- private var currentFilter: MetadataPayload = MetadataPayload()
-
- /** Some variable names already exist. im not good at naming add Meta suffix */
- private var genresListMeta = emptyList()
- private var tagsListMeta = emptyList()
- private var ageRatingsListMeta = emptyList()
- private var peopleListMeta = emptyList()
- private var pubStatusListMeta = emptyList()
- private var languagesListMeta = emptyList()
- private var libraryListMeta = emptyList()
- private var collectionsListMeta = emptyList()
- private var smartFilters = emptyList()
- private val personRoles = listOf(
- "Writer",
- "Penciller",
- "Inker",
- "Colorist",
- "Letterer",
- "CoverArtist",
- "Editor",
- "Publisher",
- "Character",
- "Translator",
- )
-
- /**
- * Loads the enabled filters if they are not empty so tachiyomi can show them to the user
- */
- override fun getFilterList(): FilterList {
- val toggledFilters = getToggledFilters()
-
- val filters = try {
- val peopleInRoles = mutableListOf>()
- personRoles.map { role ->
- val peoplesWithRole = mutableListOf()
- peopleListMeta.map {
- if (it.role == helper.safeValueOf(role).role) {
- peoplesWithRole.add(it)
- }
- }
- peopleInRoles.add(peoplesWithRole)
- }
-
- val filtersLoaded = mutableListOf>()
-
- if (sortableList.isNotEmpty() and toggledFilters.contains("Sort Options")) {
- filtersLoaded.add(
- SortFilter(sortableList.map { it.first }.toTypedArray()),
- )
- if (smartFilters.isNotEmpty()) {
- filtersLoaded.add(
- SmartFiltersFilter(smartFilters.map { it.name }.toTypedArray()),
-
- )
- }
- }
- if (toggledFilters.contains("Read Status")) {
- filtersLoaded.add(
- StatusFilterGroup(
- listOf(
- "notRead",
- "inProgress",
- "read",
- ).map { StatusFilter(it) },
- ),
- )
- }
- if (toggledFilters.contains("ReleaseYearRange")) {
- filtersLoaded.add(
- ReleaseYearRangeGroup(
- listOf("Min", "Max").map { ReleaseYearRange(it) },
- ),
- )
- }
-
- if (genresListMeta.isNotEmpty() and toggledFilters.contains("Genres")) {
- filtersLoaded.add(
- GenreFilterGroup(genresListMeta.map { GenreFilter(it.title) }),
- )
- }
- if (tagsListMeta.isNotEmpty() and toggledFilters.contains("Tags")) {
- filtersLoaded.add(
- TagFilterGroup(tagsListMeta.map { TagFilter(it.title) }),
- )
- }
- if (ageRatingsListMeta.isNotEmpty() and toggledFilters.contains("Age Rating")) {
- filtersLoaded.add(
- AgeRatingFilterGroup(ageRatingsListMeta.map { AgeRatingFilter(it.title) }),
- )
- }
- if (toggledFilters.contains("Format")) {
- filtersLoaded.add(
- FormatsFilterGroup(
- listOf(
- "Image",
- "Archive",
- "Pdf",
- "Unknown",
- ).map { FormatFilter(it) },
- ),
- )
- }
- if (collectionsListMeta.isNotEmpty() and toggledFilters.contains("Collections")) {
- filtersLoaded.add(
- CollectionFilterGroup(collectionsListMeta.map { CollectionFilter(it.title) }),
- )
- }
- if (languagesListMeta.isNotEmpty() and toggledFilters.contains("Languages")) {
- filtersLoaded.add(
- LanguageFilterGroup(languagesListMeta.map { LanguageFilter(it.title) }),
- )
- }
- if (libraryListMeta.isNotEmpty() and toggledFilters.contains("Libraries")) {
- filtersLoaded.add(
- LibrariesFilterGroup(libraryListMeta.map { LibraryFilter(it.name) }),
- )
- }
- if (pubStatusListMeta.isNotEmpty() and toggledFilters.contains("Publication Status")) {
- filtersLoaded.add(
- PubStatusFilterGroup(pubStatusListMeta.map { PubStatusFilter(it.title) }),
- )
- }
- if (pubStatusListMeta.isNotEmpty() and toggledFilters.contains("Rating")) {
- filtersLoaded.add(
- UserRating(),
- )
- }
-
- // People Metadata:
- if (personRoles.isNotEmpty() and toggledFilters.any { personRoles.contains(it) }) {
- filtersLoaded.addAll(
- listOf>(
- PeopleHeaderFilter(""),
- PeopleSeparatorFilter(),
- PeopleHeaderFilter("PEOPLE"),
- ),
- )
- if (peopleInRoles[0].isNotEmpty() and toggledFilters.contains("Writer")) {
- filtersLoaded.add(
- WriterPeopleFilterGroup(
- peopleInRoles[0].map { WriterPeopleFilter(it.name) },
- ),
- )
- }
- if (peopleInRoles[1].isNotEmpty() and toggledFilters.contains("Penciller")) {
- filtersLoaded.add(
- PencillerPeopleFilterGroup(
- peopleInRoles[1].map { PencillerPeopleFilter(it.name) },
- ),
- )
- }
- if (peopleInRoles[2].isNotEmpty() and toggledFilters.contains("Inker")) {
- filtersLoaded.add(
- InkerPeopleFilterGroup(
- peopleInRoles[2].map { InkerPeopleFilter(it.name) },
- ),
- )
- }
- if (peopleInRoles[3].isNotEmpty() and toggledFilters.contains("Colorist")) {
- filtersLoaded.add(
- ColoristPeopleFilterGroup(
- peopleInRoles[3].map { ColoristPeopleFilter(it.name) },
- ),
- )
- }
- if (peopleInRoles[4].isNotEmpty() and toggledFilters.contains("Letterer")) {
- filtersLoaded.add(
- LettererPeopleFilterGroup(
- peopleInRoles[4].map { LettererPeopleFilter(it.name) },
- ),
- )
- }
- if (peopleInRoles[5].isNotEmpty() and toggledFilters.contains("CoverArtist")) {
- filtersLoaded.add(
- CoverArtistPeopleFilterGroup(
- peopleInRoles[5].map { CoverArtistPeopleFilter(it.name) },
- ),
- )
- }
- if (peopleInRoles[6].isNotEmpty() and toggledFilters.contains("Editor")) {
- filtersLoaded.add(
- EditorPeopleFilterGroup(
- peopleInRoles[6].map { EditorPeopleFilter(it.name) },
- ),
- )
- }
-
- if (peopleInRoles[7].isNotEmpty() and toggledFilters.contains("Publisher")) {
- filtersLoaded.add(
- PublisherPeopleFilterGroup(
- peopleInRoles[7].map { PublisherPeopleFilter(it.name) },
- ),
- )
- }
- if (peopleInRoles[8].isNotEmpty() and toggledFilters.contains("Character")) {
- filtersLoaded.add(
- CharacterPeopleFilterGroup(
- peopleInRoles[8].map { CharacterPeopleFilter(it.name) },
- ),
- )
- }
- if (peopleInRoles[9].isNotEmpty() and toggledFilters.contains("Translator")) {
- filtersLoaded.add(
- TranslatorPeopleFilterGroup(
- peopleInRoles[9].map { TranslatorPeopleFilter(it.name) },
- ),
- )
- filtersLoaded
- } else {
- filtersLoaded
- }
- } else {
- filtersLoaded
- }
- } catch (e: Exception) {
- Log.e(LOG_TAG, "[FILTERS] Error while creating filter list", e)
- emptyList()
- }
- return FilterList(filters)
- }
-
- /**
- * Returns a FilterV2Dto encoded as a json string with values taken from filter
- */
- private fun buildFilterBody(filter: MetadataPayload): String {
- val filter_dto = FilterV2Dto()
- filter_dto.sortOptions.sortField = filter.sorting
- filter_dto.sortOptions.isAscending = filter.sorting_asc
-
- // Fields that support contains and not contains statements
- val containsAndNotTriplets = listOf(
- Triple(FilterField.Libraries, filter.libraries_i, filter.libraries_e),
- Triple(FilterField.Tags, filter.tags_i, filter.tags_e),
- Triple(FilterField.Languages, filter.language_i, filter.genres_e),
- Triple(FilterField.AgeRating, filter.ageRating_i, filter.ageRating_e),
- Triple(FilterField.Genres, filter.genres_i, filter.genres_e),
- Triple(FilterField.CollectionTags, filter.collections_i, filter.collections_e),
- )
- filter_dto.addContainsNotTriple(containsAndNotTriplets)
- // Fields that have must contains statements
- val peoplePairs = listOf(
-
- Pair(FilterField.Writers, filter.peopleWriters),
- Pair(FilterField.Penciller, filter.peoplePenciller),
- Pair(FilterField.Inker, filter.peopleInker),
- Pair(FilterField.Colorist, filter.peopleCharacter),
- Pair(FilterField.Letterer, filter.peopleLetterer),
- Pair(FilterField.CoverArtist, filter.peopleCoverArtist),
- Pair(FilterField.Editor, filter.peopleEditor),
- Pair(FilterField.Publisher, filter.peoplePublisher),
- Pair(FilterField.Characters, filter.peopleCharacter),
- Pair(FilterField.Translators, filter.peopleTranslator),
-
- Pair(FilterField.PublicationStatus, filter.pubStatus),
- )
- filter_dto.addPeople(peoplePairs)
-
- // Customized statements
- filter_dto.addStatement(FilterComparison.Contains, FilterField.Formats, filter.formats)
- filter_dto.addStatement(FilterComparison.Matches, FilterField.SeriesName, filter.seriesNameQuery)
- // Hardcoded statement to filter out epubs:
- filter_dto.addStatement(FilterComparison.NotContains, FilterField.Formats, "3")
- if (filter.readStatus.isNotEmpty()) {
- filter.readStatus.forEach {
- if (it == "notRead") {
- filter_dto.addStatement(FilterComparison.Equal, FilterField.ReadProgress, "0")
- } else if (it == "inProgress") {
- filter_dto.addStatement(FilterComparison.GreaterThan, FilterField.ReadProgress, "0")
- filter_dto.addStatement(FilterComparison.LessThan, FilterField.ReadProgress, "100")
- } else if (it == "read") {
- filter_dto.addStatement(FilterComparison.Equal, FilterField.ReadProgress, "100")
- }
- }
- }
- // todo: check statement
- // filter_dto.addStatement(FilterComparison.GreaterThanEqual, FilterField.UserRating, filter.userRating.toString())
- if (filter.releaseYearRangeMin != 0) {
- filter_dto.addStatement(FilterComparison.GreaterThan, FilterField.ReleaseYear, filter.releaseYearRangeMin.toString())
- }
-
- if (filter.releaseYearRangeMax != 0) {
- filter_dto.addStatement(FilterComparison.LessThan, FilterField.ReleaseYear, filter.releaseYearRangeMax.toString())
- }
- return json.encodeToJsonElement(filter_dto).toString()
- }
-
- class LoginErrorException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) {
- constructor(cause: Throwable) : this(null, cause)
- }
-
- class OpdsurlExistsInPref(message: String? = null, cause: Throwable? = null) : Exception(message, cause) {
- constructor(cause: Throwable) : this(null, cause)
- }
-
- class EmptyRequestBody(message: String? = null, cause: Throwable? = null) : Exception(message, cause) {
- constructor(cause: Throwable) : this(null, cause)
- }
-
- class LoadingFilterFailed(message: String? = null, cause: Throwable? = null) : Exception(message, cause) {
- constructor(cause: Throwable) : this(null, cause)
- }
-
- override fun headersBuilder(): Headers.Builder {
- if (jwtToken.isEmpty()) {
- doLogin()
- if (jwtToken.isEmpty()) throw LoginErrorException(helper.intl["login_errors_header_token_empty"])
- }
- return Headers.Builder()
- .add("User-Agent", "Tachiyomi Kavita v${AppInfo.getVersionName()}")
- .add("Content-Type", "application/json")
- .add("Authorization", "Bearer $jwtToken")
- }
-
- private fun setupLoginHeaders(): Headers.Builder {
- return Headers.Builder()
- .add("User-Agent", "Tachiyomi Kavita v${AppInfo.getVersionName()}")
- .add("Content-Type", "application/json")
- .add("Authorization", "Bearer $jwtToken")
- }
-
- override fun setupPreferenceScreen(screen: androidx.preference.PreferenceScreen) {
- val opdsAddressPref = screen.editTextPreference(
- ADDRESS_TITLE,
- "OPDS url",
- "",
- helper.intl["pref_opds_summary"],
- )
- val enabledFiltersPref = MultiSelectListPreference(screen.context).apply {
- key = KavitaConstants.toggledFiltersPref
- title = helper.intl["pref_filters_title"]
- summary = helper.intl["pref_filters_summary"]
- entries = KavitaConstants.filterPrefEntries
- entryValues = KavitaConstants.filterPrefEntriesValue
- setDefaultValue(KavitaConstants.defaultFilterPrefEntries)
- setOnPreferenceChangeListener { _, newValue ->
- @Suppress("UNCHECKED_CAST")
- val checkValue = newValue as Set
- preferences.edit()
- .putStringSet(KavitaConstants.toggledFiltersPref, checkValue)
- .commit()
- }
- }
- val customSourceNamePref = EditTextPreference(screen.context).apply {
- key = KavitaConstants.customSourceNamePref
- title = helper.intl["pref_customsource_title"]
- summary = helper.intl["pref_edit_customsource_summary"]
- setOnPreferenceChangeListener { _, newValue ->
- val res = preferences.edit()
- .putString(KavitaConstants.customSourceNamePref, newValue.toString())
- .commit()
- Toast.makeText(
- screen.context,
- helper.intl["restartapp_settings"],
- Toast.LENGTH_LONG,
- ).show()
- Log.v(LOG_TAG, "[Preferences] Successfully modified custom source name: $newValue")
- res
- }
- }
- screen.addPreference(customSourceNamePref)
- screen.addPreference(opdsAddressPref)
- screen.addPreference(enabledFiltersPref)
- }
-
- private fun androidx.preference.PreferenceScreen.editTextPreference(
- preKey: String,
- title: String,
- default: String,
- summary: String,
- isPassword: Boolean = false,
- ): EditTextPreference {
- return EditTextPreference(context).apply {
- key = preKey
- this.title = title
- val input = preferences.getString(title, null)
- this.summary = if (input == null || input.isEmpty()) summary else input
- this.setDefaultValue(default)
- dialogTitle = title
-
- if (isPassword) {
- setOnBindEditTextListener {
- it.inputType =
- InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
- }
- }
- setOnPreferenceChangeListener { _, newValue ->
- try {
- val opdsUrlInPref = opdsUrlInPreferences(newValue.toString()) // We don't allow hot have multiple sources with same ip or domain
- if (opdsUrlInPref.isNotEmpty()) {
- // TODO("Add option to allow multiple sources with same url at the cost of tracking")
- preferences.edit().putString(title, "").apply()
-
- Toast.makeText(
- context,
- helper.intl["pref_opds_duplicated_source_url"] + ": " + opdsUrlInPref,
- Toast.LENGTH_LONG,
- ).show()
- throw OpdsurlExistsInPref(helper.intl["pref_opds_duplicated_source_url"] + opdsUrlInPref)
- }
-
- val res = preferences.edit().putString(title, newValue as String).commit()
- Toast.makeText(
- context,
- helper.intl["restartapp_settings"],
- Toast.LENGTH_LONG,
- ).show()
- setupLogin(newValue)
- Log.v(LOG_TAG, "[Preferences] Successfully modified OPDS URL")
- res
- } catch (e: OpdsurlExistsInPref) {
- Log.e(LOG_TAG, "Url exists in a different sourcce")
- false
- } catch (e: Exception) {
- Log.e(LOG_TAG, "Unrecognised error", e)
- false
- }
- }
- }
- }
-
- private fun getPrefBaseUrl(): String = preferences.getString("BASEURL", "")!!
- private fun getPrefApiUrl(): String = preferences.getString("APIURL", "")!!
- private fun getPrefKey(): String = preferences.getString("APIKEY", "")!!
- private fun getToggledFilters() = preferences.getStringSet(KavitaConstants.toggledFiltersPref, KavitaConstants.defaultFilterPrefEntries)!!
-
- // We strip the last slash since we will append it above
- private fun getPrefAddress(): String {
- var path = preferences.getString(ADDRESS_TITLE, "")!!
- if (path.isNotEmpty() && path.last() == '/') {
- path = path.substring(0, path.length - 1)
- }
- return path
- }
-
- private fun getPrefApiKey(): String {
- // http(s)://host:(port)/api/opds/api-key
- val existingKey = preferences.getString("APIKEY", "")
- return existingKey!!.ifEmpty { preferences.getString(ADDRESS_TITLE, "")!!.split("/opds/")[1] }
- }
-
- companion object {
- private const val ADDRESS_TITLE = "Address"
- private val JSON_MEDIA_TYPE = "application/json; charset=utf-8".toMediaTypeOrNull()
- }
-
- /*
- * LOGIN
- **/
- /**
- * Used to check if a url is configured already in any of the sources
- * This is a limitation needed for tracking.
- * **/
- private fun opdsUrlInPreferences(url: String): String {
- fun getCleanedApiUrl(url: String): String = "${url.split("/api/").first()}/api"
-
- for (sourceId in 1..3) { // There's 3 sources so 3 preferences to check
- val sourceSuffixID by lazy {
- val key = "${"kavita_$sourceId"}/all/1" // Hardcoded versionID to 1
- val bytes = MessageDigest.getInstance("MD5").digest(key.toByteArray())
- (0..7).map { bytes[it].toLong() and 0xff shl 8 * (7 - it) }
- .reduce(Long::or) and Long.MAX_VALUE
- }
- val preferences: SharedPreferences by lazy {
- Injekt.get().getSharedPreferences("source_$sourceSuffixID", 0x0000)
- }
- val prefApiUrl = preferences.getString("APIURL", "")!!
-
- if (prefApiUrl.isNotEmpty()) {
- if (prefApiUrl == getCleanedApiUrl(url)) {
- if (sourceId.toString() != suffix) {
- return preferences.getString(KavitaConstants.customSourceNamePref, sourceId.toString())!!
- }
- }
- }
- }
- return ""
- }
-
- private fun setupLogin(addressFromPreference: String = "") {
- Log.v(LOG_TAG, "[Setup Login] Starting setup")
- val validAddress = address.ifEmpty { addressFromPreference }
- val tokens = validAddress.split("/api/opds/")
- val apiKey = tokens[1]
- val baseUrlSetup = tokens[0].replace("\n", "\\n")
-
- if (baseUrlSetup.toHttpUrlOrNull() == null) {
- Log.e(LOG_TAG, "Invalid URL $baseUrlSetup")
- throw Exception("""${helper.intl["login_errors_invalid_url"]}: $baseUrlSetup""")
- }
- preferences.edit().putString("BASEURL", baseUrlSetup).apply()
- preferences.edit().putString("APIKEY", apiKey).apply()
- preferences.edit().putString("APIURL", "$baseUrlSetup/api").apply()
- Log.v(LOG_TAG, "[Setup Login] Setup successful")
- }
-
- private fun doLogin() {
- if (address.isEmpty()) {
- Log.e(LOG_TAG, "OPDS URL is empty or null")
- throw IOException(helper.intl["pref_opds_must_setup_address"])
- }
- if (address.split("/opds/").size != 2) {
- throw IOException(helper.intl["pref_opds_badformed_url"])
- }
- if (jwtToken.isEmpty()) setupLogin()
- Log.v(LOG_TAG, "[Login] Starting login")
- val request = POST(
- "$apiUrl/Plugin/authenticate?apiKey=${getPrefKey()}&pluginName=Tachiyomi-Kavita",
- setupLoginHeaders().build(),
- "{}".toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull()),
- )
- client.newCall(request).execute().use {
- val peekbody = it.peekBody(Long.MAX_VALUE).toString()
-
- if (it.code == 200) {
- try {
- jwtToken = it.parseAs().token
- isLogged = true
- } catch (e: Exception) {
- Log.e(LOG_TAG, "Possible outdated kavita", e)
- throw IOException(helper.intl["login_errors_parse_tokendto"])
- }
- } else {
- if (it.code == 500) {
- Log.e(LOG_TAG, "[LOGIN] login failed. There was some error -> Code: ${it.code}.Response message: ${it.message} Response body: $peekbody.")
- throw LoginErrorException(helper.intl["login_errors_failed_login"])
- } else {
- Log.e(LOG_TAG, "[LOGIN] login failed. Authentication was not successful -> Code: ${it.code}.Response message: ${it.message} Response body: $peekbody.")
- throw LoginErrorException(helper.intl["login_errors_failed_login"])
- }
- }
- }
- Log.v(LOG_TAG, "[Login] Login successful")
- }
-
- init {
- if (apiUrl.isNotBlank()) {
- Single.fromCallable {
- // Login
- doLogin()
- try { // Get current version
- val requestUrl = "$apiUrl/Server/server-info"
- val serverInfoDto = client.newCall(GET(requestUrl, headersBuilder().build()))
- .execute()
- .parseAs()
- Log.e(
- LOG_TAG,
- "Extension version: code=${AppInfo.getVersionCode()} name=${AppInfo.getVersionName()}" +
- " - - Kavita version: ${serverInfoDto.kavitaVersion} - - Lang:${Locale.getDefault()}",
- ) // this is not a real error. Using this so it gets printed in dump logs if there's any error
- } catch (e: EmptyRequestBody) {
- Log.e(LOG_TAG, "Extension version: code=${AppInfo.getVersionCode()} - name=${AppInfo.getVersionName()}")
- } catch (e: Exception) {
- Log.e(LOG_TAG, "Tachiyomi version: code=${AppInfo.getVersionCode()} - name=${AppInfo.getVersionName()}", e)
- }
- try { // Load Filters
- // Genres
- Log.v(LOG_TAG, "[Filter] Fetching filters ")
- client.newCall(GET("$apiUrl/Metadata/genres", headersBuilder().build()))
- .execute().use { response ->
-
- genresListMeta = try {
- response.body.use { json.decodeFromString(it.string()) }
- } catch (e: Exception) {
- Log.e(LOG_TAG, "[Filter] Error decoding JSON for genres filter -> ${response.body}", e)
- emptyList()
- }
- }
- // tagsListMeta
- client.newCall(GET("$apiUrl/Metadata/tags", headersBuilder().build()))
- .execute().use { response ->
- tagsListMeta = try {
- response.body.use { json.decodeFromString(it.string()) }
- } catch (e: Exception) {
- Log.e(LOG_TAG, "[Filter] Error decoding JSON for tagsList filter", e)
- emptyList()
- }
- }
- // age-ratings
- client.newCall(GET("$apiUrl/Metadata/age-ratings", headersBuilder().build()))
- .execute().use { response ->
- ageRatingsListMeta = try {
- response.body.use { json.decodeFromString(it.string()) }
- } catch (e: Exception) {
- Log.e(
- LOG_TAG,
- "[Filter] Error decoding JSON for age-ratings filter",
- e,
- )
- emptyList()
- }
- }
- // collectionsListMeta
- client.newCall(GET("$apiUrl/Collection", headersBuilder().build()))
- .execute().use { response ->
- collectionsListMeta = try {
- response.body.use { json.decodeFromString(it.string()) }
- } catch (e: Exception) {
- Log.e(
- LOG_TAG,
- "[Filter] Error decoding JSON for collectionsListMeta filter",
- e,
- )
- emptyList()
- }
- }
- // languagesListMeta
- client.newCall(GET("$apiUrl/Metadata/languages", headersBuilder().build()))
- .execute().use { response ->
- languagesListMeta = try {
- response.body.use { json.decodeFromString(it.string()) }
- } catch (e: Exception) {
- Log.e(
- LOG_TAG,
- "[Filter] Error decoding JSON for languagesListMeta filter",
- e,
- )
- emptyList()
- }
- }
- // libraries
- client.newCall(GET("$apiUrl/Library", headersBuilder().build()))
- .execute().use { response ->
- libraryListMeta = try {
- response.body.use { json.decodeFromString(it.string()) }
- } catch (e: Exception) {
- Log.e(
- LOG_TAG,
- "[Filter] Error decoding JSON for libraries filter",
- e,
- )
- emptyList()
- }
- }
- // peopleListMeta
- client.newCall(GET("$apiUrl/Metadata/people", headersBuilder().build()))
- .execute().use { response ->
- peopleListMeta = try {
- response.body.use { json.decodeFromString(it.string()) }
- } catch (e: Exception) {
- Log.e(
- LOG_TAG,
- "error while decoding JSON for peopleListMeta filter",
- e,
- )
- emptyList()
- }
- }
- client.newCall(GET("$apiUrl/Metadata/publication-status", headersBuilder().build()))
- .execute().use { response ->
- pubStatusListMeta = try {
- response.body.use { json.decodeFromString(it.string()) }
- } catch (e: Exception) {
- Log.e(
- LOG_TAG,
- "error while decoding JSON for publicationStatusListMeta filter",
- e,
- )
- emptyList()
- }
- }
- client.newCall(GET("$apiUrl/filter", headersBuilder().build()))
- .execute().use { response ->
- smartFilters = try {
- response.body.use { json.decodeFromString(it.string()) }
- } catch (e: Exception) {
- Log.e(
- LOG_TAG,
- "error while decoding JSON for smartfilters",
- e,
- )
- emptyList()
- }
- }
- Log.v(LOG_TAG, "[Filter] Successfully loaded metadata tags from server")
- } catch (e: Exception) {
- throw LoadingFilterFailed("Failed Loading Filters", e.cause)
- }
- }
- .subscribeOn(Schedulers.io())
- .observeOn(Schedulers.io())
- .subscribe(
- {},
- { tr ->
- // Avoid polluting logs with traces of exception
- if (tr is EmptyRequestBody || tr is LoginErrorException) {
- Log.e(LOG_TAG, "error while doing initial calls\n${tr.cause}")
- return@subscribe
- }
- if (tr is ConnectException) { // avoid polluting logs with traces of exception
- Log.e(LOG_TAG, "Error while doing initial calls\n${tr.cause}")
- return@subscribe
- }
- Log.e(LOG_TAG, "error while doing initial calls", tr)
- },
- )
- }
- }
-}
diff --git a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaConstants.kt b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaConstants.kt
deleted file mode 100644
index 24f284410..000000000
--- a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaConstants.kt
+++ /dev/null
@@ -1,81 +0,0 @@
-package eu.kanade.tachiyomi.extension.all.kavita
-
-object KavitaConstants {
- // toggle filters
- const val toggledFiltersPref = "toggledFilters"
- val filterPrefEntries = arrayOf(
- "Sort Options",
- "Format",
- "Libraries",
- "Read Status",
- "Genres",
- "Tags",
- "Collections",
- "Languages",
- "Publication Status",
- "Rating",
- "Age Rating",
- "Writers",
- "Penciller",
- "Inker",
- "Colorist",
- "Letterer",
- "Cover Artist",
- "Editor",
- "Publisher",
- "Character",
- "Translators",
- "ReleaseYearRange",
- )
- val filterPrefEntriesValue = arrayOf(
- "Sort Options",
- "Format",
- "Libraries",
- "Read Status",
- "Genres",
- "Tags",
- "Collections",
- "Languages",
- "Publication Status",
- "Rating",
- "Age Rating",
- "Writers",
- "Penciller",
- "Inker",
- "Colorist",
- "Letterer",
- "CoverArtist",
- "Editor",
- "Publisher",
- "Character",
- "Translators",
- "ReleaseYearRange",
- )
- val defaultFilterPrefEntries = setOf(
- "Sort Options",
- "Format",
- "Libraries",
- "Read Status",
- "Genres",
- "Tags",
- "Collections",
- "Languages",
- "Publication Status",
- "Rating",
- "Age Rating",
- "Writers",
- "Penciller",
- "Inker",
- "Colorist",
- "Letterer",
- "CoverArtist",
- "Editor",
- "Publisher",
- "Character",
- "Translators",
- "ReleaseYearRange",
- )
-
- const val customSourceNamePref = "customSourceName"
- const val noSmartFilterSelected = "No smart filter loaded"
-}
diff --git a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaFactory.kt b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaFactory.kt
deleted file mode 100644
index 7639b6e53..000000000
--- a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaFactory.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package eu.kanade.tachiyomi.extension.all.kavita
-
-import eu.kanade.tachiyomi.source.Source
-import eu.kanade.tachiyomi.source.SourceFactory
-
-class KavitaFactory : SourceFactory {
- override fun createSources(): List =
- listOf(
- Kavita("1"),
- Kavita("2"),
- Kavita("3"),
- )
-}
diff --git a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaHelper.kt b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaHelper.kt
deleted file mode 100644
index f588f684b..000000000
--- a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaHelper.kt
+++ /dev/null
@@ -1,141 +0,0 @@
-package eu.kanade.tachiyomi.extension.all.kavita
-
-import eu.kanade.tachiyomi.extension.all.kavita.dto.ChapterDto
-import eu.kanade.tachiyomi.extension.all.kavita.dto.PaginationInfo
-import eu.kanade.tachiyomi.extension.all.kavita.dto.SeriesDto
-import eu.kanade.tachiyomi.extension.all.kavita.dto.VolumeDto
-import eu.kanade.tachiyomi.lib.i18n.Intl
-import eu.kanade.tachiyomi.source.model.SChapter
-import eu.kanade.tachiyomi.source.model.SManga
-import kotlinx.serialization.decodeFromString
-import kotlinx.serialization.json.Json
-import okhttp3.Response
-import java.text.SimpleDateFormat
-import java.util.Locale
-import java.util.TimeZone
-
-class KavitaHelper {
- val json = Json {
- isLenient = true
- ignoreUnknownKeys = true
- allowSpecialFloatingPointValues = true
- useArrayPolymorphism = true
- prettyPrint = true
- }
- inline fun > safeValueOf(type: String): T {
- return java.lang.Enum.valueOf(T::class.java, type)
- }
- val dateFormatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSS", Locale.US)
- .apply { timeZone = TimeZone.getTimeZone("UTC") }
- fun parseDate(dateAsString: String): Long =
- dateFormatter.parse(dateAsString)?.time ?: 0
-
- fun hasNextPage(response: Response): Boolean {
- val paginationHeader = response.header("Pagination")
- var hasNextPage = false
- if (!paginationHeader.isNullOrEmpty()) {
- val paginationInfo = json.decodeFromString(paginationHeader)
- hasNextPage = paginationInfo.currentPage + 1 > paginationInfo.totalPages
- }
- return !hasNextPage
- }
-
- fun getIdFromUrl(url: String): Int {
- return url.split("/").last().toInt()
- }
-
- fun createSeriesDto(obj: SeriesDto, baseUrl: String, apiKey: String): SManga =
- SManga.create().apply {
- url = "$baseUrl/Series/${obj.id}"
- title = obj.name
- // Deprecated: description = obj.summary
- thumbnail_url = "$baseUrl/image/series-cover?seriesId=${obj.id}&apiKey=$apiKey"
- }
- class CompareChapters {
- companion object : Comparator {
- override fun compare(a: SChapter, b: SChapter): Int {
- if (a.chapter_number < 1.0 && b.chapter_number < 1.0) {
- // Both are volumes, multiply by 100 and do normal sort
- return if ((a.chapter_number * 100) < (b.chapter_number * 100)) {
- 1
- } else {
- -1
- }
- } else {
- if (a.chapter_number < 1.0 && b.chapter_number >= 1.0) {
- // A is volume, b is not. A should sort first
- return 1
- } else if (a.chapter_number >= 1.0 && b.chapter_number < 1.0) {
- return -1
- }
- }
- if (a.chapter_number < b.chapter_number) return 1
- if (a.chapter_number > b.chapter_number) return -1
- return 0
- }
- }
- }
- fun chapterFromObject(obj: ChapterDto): SChapter = SChapter.create().apply {
- url = obj.id.toString()
- name = if (obj.number == "0" && obj.isSpecial) {
- // This is a special. Chapter name is special name
- obj.range
- } else {
- val cleanedName = obj.title.replaceFirst("^0+(?!$)".toRegex(), "")
- "Chapter $cleanedName"
- }
- date_upload = parseDate(obj.created)
- chapter_number = obj.number.toFloat()
- scanlator = "${obj.pages} pages"
- }
-
- fun chapterFromVolume(obj: ChapterDto, volume: VolumeDto): SChapter =
- SChapter.create().apply {
- // If there are multiple chapters to this volume, then prefix with Volume number
- if (volume.chapters.isNotEmpty() && obj.number != "0") {
- // This volume is not volume 0, hence they are not loose chapters
- // We just add a nice Volume X to the chapter title
- // Chapter-based Volume
- name = "Volume ${volume.number} Chapter ${obj.number}"
- chapter_number = obj.number.toFloat()
- } else if (obj.number == "0") {
- // Both specials and volume has chapter number 0
- if (volume.number == 0) {
- // Treat as special
- // Special is not in a volume
- if (obj.range == "") {
- // Special does not have any Title
- name = "Chapter 0"
- chapter_number = obj.number.toFloat()
- } else {
- // We use it's own special tile
- name = obj.range
- chapter_number = obj.number.toFloat()
- }
- } else {
- // Is a single-file volume
- // We encode the chapter number to support tracking
- name = "Volume ${volume.number}"
- chapter_number = volume.number.toFloat() / 10000
- }
- } else {
- name = "Unhandled Else Volume ${volume.number}"
- }
- url = obj.id.toString()
- date_upload = parseDate(obj.created)
-
- scanlator = "${obj.pages} pages"
- }
- val intl = Intl(
- language = Locale.getDefault().toString(),
- baseLanguage = "en",
- availableLanguages = KavitaInt.AVAILABLE_LANGS,
- classLoader = this::class.java.classLoader!!,
- createMessageFileName = { lang ->
- when (lang) {
- KavitaInt.SPANISH_LATAM -> Intl.createDefaultMessageFileName(KavitaInt.SPANISH)
- else -> Intl.createDefaultMessageFileName(lang)
- }
- },
- )
-}
diff --git a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaInt.kt b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaInt.kt
deleted file mode 100644
index fbaf93af0..000000000
--- a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/KavitaInt.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package eu.kanade.tachiyomi.extension.all.kavita
-
-object KavitaInt {
- const val ENGLISH = "en"
- const val SPANISH = "es_ES"
- const val SPANISH_LATAM = "es-419"
- const val FRENCH = "fr_FR"
- const val NORWEGIAN = "nb_NO"
- val AVAILABLE_LANGS = setOf(
- ENGLISH,
- SPANISH,
- SPANISH_LATAM,
- NORWEGIAN,
- FRENCH,
- )
- const val KAVITA_NAME = "Kavita"
-}
diff --git a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/FilterDto.kt b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/FilterDto.kt
deleted file mode 100644
index 77b669e51..000000000
--- a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/FilterDto.kt
+++ /dev/null
@@ -1,124 +0,0 @@
-package eu.kanade.tachiyomi.extension.all.kavita.dto
-
-import kotlinx.serialization.Serializable
-import kotlin.Triple
-
-@Serializable
-data class FilterV2Dto(
- val id: Int? = null,
- val name: String? = null,
- val statements: MutableList = mutableListOf(),
- val combination: Int = 0, // FilterCombination = FilterCombination.And,
- val sortOptions: SortOptions = SortOptions(),
- val limitTo: Int = 0,
-) {
- fun addStatement(comparison: FilterComparison, field: FilterField, value: String) {
- if (value.isNotBlank()) {
- statements.add(FilterStatementDto(comparison.type, field.type, value))
- }
- }
- fun addStatement(comparison: FilterComparison, field: FilterField, values: java.util.ArrayList) {
- if (values.isNotEmpty()) {
- statements.add(FilterStatementDto(comparison.type, field.type, values.joinToString(",")))
- }
- }
-
- fun addContainsNotTriple(list: List, ArrayList>>) {
- list.map {
- addStatement(FilterComparison.Contains, it.first, it.second)
- addStatement(FilterComparison.NotContains, it.first, it.third)
- }
- }
- fun addPeople(list: List>>) {
- list.map {
- addStatement(FilterComparison.MustContains, it.first, it.second)
- }
- }
-}
-
-@Serializable
-data class FilterStatementDto(
- // todo: Create custom serializator for comparison and field and remove .type extension in Kavita.kt
- val comparison: Int,
- val field: Int,
- val value: String,
-
-)
-
-@Serializable
-enum class SortFieldEnum(val type: Int) {
- SortName(1),
- CreatedDate(2),
- LastModifiedDate(3),
- LastChapterAdded(4),
- TimeToRead(5),
- ReleaseYear(6),
- ;
-
- companion object {
- private val map = SortFieldEnum.values().associateBy(SortFieldEnum::type)
- fun fromInt(type: Int) = map[type]
- }
-}
-
-@Serializable
-data class SortOptions(
- var sortField: Int = SortFieldEnum.SortName.type,
- var isAscending: Boolean = true,
-)
-
-@Serializable
-enum class FilterCombination {
- Or,
- And,
-}
-
-@Serializable
-enum class FilterField(val type: Int) {
- Summary(0),
- SeriesName(1),
- PublicationStatus(2),
- Languages(3),
- AgeRating(4),
- UserRating(5),
- Tags(6),
- CollectionTags(7),
- Translators(8),
- Characters(9),
- Publisher(10),
- Editor(11),
- CoverArtist(12),
- Letterer(13),
- Colorist(14),
- Inker(15),
- Penciller(16),
- Writers(17),
- Genres(18),
- Libraries(19),
- ReadProgress(20),
- Formats(21),
- ReleaseYear(22),
- ReadTime(23),
- Path(24),
- FilePath(25),
-}
-
-@Serializable
-enum class FilterComparison(val type: Int) {
- Equal(0),
- GreaterThan(1),
- GreaterThanEqual(2),
- LessThan(3),
- LessThanEqual(4),
- Contains(5),
- MustContains(6),
- Matches(7),
- NotContains(8),
- NotEqual(9),
- BeginsWith(10),
- EndsWith(11),
- IsBefore(12),
- IsAfter(13),
- IsInLast(14),
- IsNotInLast(15),
-}
diff --git a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/MangaDto.kt b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/MangaDto.kt
deleted file mode 100644
index 1c09db11d..000000000
--- a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/MangaDto.kt
+++ /dev/null
@@ -1,103 +0,0 @@
-package eu.kanade.tachiyomi.extension.all.kavita.dto
-
-import kotlinx.serialization.Serializable
-
-@Serializable
-enum class MangaFormat(val format: Int) {
- Image(0),
- Archive(1),
- Unknown(2),
- Epub(3),
- Pdf(4),
- ;
- companion object {
- private val map = PersonRole.values().associateBy(PersonRole::role)
- fun fromInt(type: Int) = map[type]
- }
-}
-enum class PersonRole(val role: Int) {
- Other(1),
- Writer(3),
- Penciller(4),
- Inker(5),
- Colorist(6),
- Letterer(7),
- CoverArtist(8),
- Editor(9),
- Publisher(10),
- Character(11),
- Translator(12),
- ;
- companion object {
- private val map = PersonRole.values().associateBy(PersonRole::role)
- fun fromInt(type: Int) = map[type]
- }
-}
-
-@Serializable
-data class SeriesDto(
- val id: Int,
- val name: String,
- val originalName: String = "",
- val thumbnail_url: String? = "",
- val localizedName: String? = "",
- val sortName: String? = "",
- val pages: Int,
- val coverImageLocked: Boolean = true,
- val pagesRead: Int,
- val userRating: Float,
- val userReview: String? = "",
- val format: Int,
- val created: String? = "",
- val libraryId: Int,
- val libraryName: String? = "",
-)
-
-@Serializable
-data class SeriesMetadataDto(
- val id: Int,
- val summary: String? = "",
- val writers: List = emptyList(),
- val coverArtists: List = emptyList(),
- val genres: List = emptyList(),
- val seriesId: Int,
- val ageRating: Int,
- val publicationStatus: Int,
-)
-
-@Serializable
-data class Genres(
- val title: String,
-)
-
-@Serializable
-data class Person(
- val name: String,
-)
-
-@Serializable
-data class VolumeDto(
- val id: Int,
- val number: Int,
- val name: String,
- val pages: Int,
- val pagesRead: Int,
- val lastModified: String,
- val created: String,
- val seriesId: Int,
- val chapters: List = emptyList(),
-)
-
-@Serializable
-data class ChapterDto(
- val id: Int,
- val range: String,
- val number: String,
- val pages: Int,
- val isSpecial: Boolean,
- val title: String,
- val pagesRead: Int,
- val coverImageLocked: Boolean,
- val volumeId: Int,
- val created: String,
-)
diff --git a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/MetadataDto.kt b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/MetadataDto.kt
deleted file mode 100644
index f14256719..000000000
--- a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/MetadataDto.kt
+++ /dev/null
@@ -1,104 +0,0 @@
-package eu.kanade.tachiyomi.extension.all.kavita.dto
-
-import kotlinx.serialization.Serializable
-/**
-* This file contains all class for filtering
-* */
-@Serializable
-data class MetadataGenres(
- val id: Int,
- val title: String,
-)
-
-@Serializable
-data class MetadataPeople(
- val id: Int,
- val name: String,
- val role: Int,
-)
-
-@Serializable
-data class MetadataPubStatus(
- val value: Int,
- val title: String,
-)
-
-@Serializable
-data class MetadataTag(
- val id: Int,
- val title: String,
-)
-
-@Serializable
-data class MetadataAgeRatings(
- val value: Int,
- val title: String,
-)
-
-@Serializable
-data class MetadataLanguages(
- val isoCode: String,
- val title: String,
-)
-
-@Serializable
-data class MetadataLibrary(
- val id: Int,
- val name: String,
- val type: Int,
-)
-
-@Serializable
-data class MetadataCollections(
- val id: Int,
- val title: String,
-)
-
-data class MetadataPayload(
- val forceUseMetadataPayload: Boolean = true,
- var sorting: Int = 1,
- var sorting_asc: Boolean = true,
- var readStatus: ArrayList = arrayListOf(),
- val readStatusList: List = listOf("notRead", "inProgress", "read"),
- // _i = included, _e = excluded
- var genres_i: ArrayList = arrayListOf(),
- var genres_e: ArrayList = arrayListOf(),
- var tags_i: ArrayList = arrayListOf(),
- var tags_e: ArrayList = arrayListOf(),
- var ageRating_i: ArrayList = arrayListOf(),
- var ageRating_e: ArrayList = arrayListOf(),
-
- var formats: ArrayList = arrayListOf(),
- var collections_i: ArrayList = arrayListOf(),
- var collections_e: ArrayList = arrayListOf(),
- var userRating: Int = 0,
- var people: ArrayList = arrayListOf(),
- // _i = included, _e = excluded
- var language_i: ArrayList = arrayListOf(),
- var language_e: ArrayList = arrayListOf(),
-
- var libraries_i: ArrayList = arrayListOf(),
- var libraries_e: ArrayList = arrayListOf(),
- var pubStatus: ArrayList = arrayListOf(),
- var seriesNameQuery: String = "",
- var releaseYearRangeMin: Int = 0,
- var releaseYearRangeMax: Int = 0,
-
- var peopleWriters: ArrayList = arrayListOf(),
- var peoplePenciller: ArrayList = arrayListOf(),
- var peopleInker: ArrayList = arrayListOf(),
- var peoplePeoplecolorist: ArrayList = arrayListOf(),
- var peopleLetterer: ArrayList = arrayListOf(),
- var peopleCoverArtist: ArrayList = arrayListOf(),
- var peopleEditor: ArrayList = arrayListOf(),
- var peoplePublisher: ArrayList = arrayListOf(),
- var peopleCharacter: ArrayList = arrayListOf(),
- var peopleTranslator: ArrayList = arrayListOf(),
-)
-
-@Serializable
-data class SmartFilter(
- val id: Int,
- val name: String,
- val filter: String,
-)
diff --git a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/Responses.kt b/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/Responses.kt
deleted file mode 100644
index 424cc1233..000000000
--- a/src/all/kavita/src/eu/kanade/tachiyomi/extension/all/kavita/dto/Responses.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-package eu.kanade.tachiyomi.extension.all.kavita.dto
-
-import kotlinx.serialization.Serializable
-
-@Serializable // Used to process login
-data class AuthenticationDto(
- val username: String,
- val token: String,
- val apiKey: String,
-)
-
-@Serializable
-data class PaginationInfo(
- val currentPage: Int,
- val itemsPerPage: Int,
- val totalItems: Int,
- val totalPages: Int,
-)
-
-@Serializable
-data class ServerInfoDto(
- val installId: String,
- val os: String,
- val isDocker: Boolean,
- val dotnetVersion: String,
- val kavitaVersion: String,
- val numOfCores: Int,
-)
diff --git a/src/all/komga/CHANGELOG.md b/src/all/komga/CHANGELOG.md
deleted file mode 100644
index 759286187..000000000
--- a/src/all/komga/CHANGELOG.md
+++ /dev/null
@@ -1,383 +0,0 @@
-## 1.4.47
-
-Minimum Komga version required: `0.151.0`
-
-### Feat
-
-* add support for AVIF and HEIF image types
-
-## 1.4.46
-
-Minimum Komga version required: `0.151.0`
-
-### Feat
-
-* Update to extension-lib 1.4
- - Clicking on chapter WebView should now open the chapter/book page.
-
-## 1.3.45
-
-Minimum Komga version required: `0.151.0`
-
-### Feat
-
-* Edit source display name
-
-## 1.3.44
-
-Minimum Komga version required: `0.151.0`
-
-### Fix
-
-* Better date/time parsing
-
-## 1.3.43
-
-Minimum Komga version required: `0.151.0`
-
-### Fix
-
-* Requests failing if address preference is saved with a trailing slash
-
-### Features
-
-* Add URL validation in the address preferences
-* Use a URL-focused keyboard when available while editing the address preferences
-
-## 1.3.42
-
-Minimum Komga version required: `0.151.0`
-
-### Fix
-
-* default sort broken since Komga 0.155.1
-* proper sort criteria for readlists
-
-## 1.3.41
-
-Minimum Komga version required: `0.151.0`
-
-### Features
-
-* Improve how the status is displayed
-
-## 1.3.40
-
-Minimum Komga version required: `0.151.0`
-
-### Features
-
-* Exclude from bulk update warnings
-
-## 1.2.39
-
-Minimum Komga version required: `0.151.0`
-
-### Features
-
-* Prepend series name in front of books within readlists
-
-## 1.2.38
-
-Minimum Komga version required: `0.113.0`
-
-### Features
-
-* Add `README.md`
-
-## 1.2.37
-
-Minimum Komga version required: `0.113.0`
-
-### Features
-
-* In app link to `CHANGELOG.md`
-
-## 1.2.36
-
-Minimum Komga version required: `0.113.0`
-
-### Features
-
-* Don't request conversion for JPEG XL images
-
-## 1.2.35
-
-Minimum Komga version required: `0.113.0`
-
-### Features
-
-* Display the Translators of a book in the scanlator chapter field
-
-## 1.2.34
-
-Minimum Komga version required: `0.113.0`
-
-### Fix
-
-* Loading of filter values could fail in some cases
-
-## 1.2.33
-
-Minimum Komga version required: `0.113.0`
-
-### Fix
-
-* Open in WebView and Share options now open regular browser link instead of showing JSON
-* Note that Komga cannot be viewed using System WebView since there is no login prompt
- However, opening in a regular browser works.
-
-## 1.2.32
-
-Minimum Komga version required: `0.113.0`
-
-### Fix
-
-* Source language, conventionally set to "en", is now changed to "all"
-* Downloaded files, if any, will have to be moved to new location
- - `Komga (EN)` to `Komga (ALL)`
- - `Komga (3) (EN)` to `Komga (3) (ALL)`
-
-## 1.2.31
-
-Minimum Komga version required: `0.113.0`
-
-### Refactor
-
-* replace Gson with kotlinx.serialization
-
-## 1.2.30
-
-Minimum Komga version required: `0.113.0`
-
-### Features
-
-* display read list summary
-* display aggregated tags on series
-* search series by book tags
-
-## 1.2.29
-
-Minimum Komga version required: `0.97.0`
-
-### Features
-
-* filter deleted series and books
-
-## 1.2.28
-
-Minimum Komga version required: `0.97.0`
-
-### Fix
-
-* incorrect User Agent
-
-## 1.2.27
-
-Minimum Komga version required: `0.97.0`
-
-### Fix
-
-* filter series by read or in progress
-
-## 1.2.26
-
-Minimum Komga version required: `0.87.4`
-
-### Fix
-
-* show series with only in progress books when searching for unread only
-
-## 1.2.25
-
-Minimum Komga version required: `0.87.4`
-
-### Fix
-
-* sort order for read list books
-
-## 1.2.24
-
-Minimum Komga version required: `0.87.4`
-
-### Fix
-
-* only show series tags in the filter panel
-* set URL properly on series and read lists, so restoring from a backup can work properly
-
-
-## 1.2.23
-
-Minimum Komga version required: `0.75.0`
-
-### Features
-
-* ignore DNS over HTTPS so it can reach IP addresses
-
-## 1.2.22
-
-Minimum Komga version required: `0.75.0`
-
-### Features
-
-* add error logs and better catch exceptions
-
-## 1.2.21
-
-Minimum Komga version required: `0.75.0`
-
-### Features
-
-* browse read lists (from the filter menu)
-* filter by collection, respecting the collection's ordering
-
-## 1.2.20
-
-Minimum Komga version required: `0.75.0`
-
-### Features
-
-* filter by authors, grouped by role
-
-## 1.2.19
-
-Minimum Komga version required: `0.68.0`
-
-### Features
-
-* display Series authors
-* display Series summary from books if no summary exists for Series
-
-## 1.2.18
-
-Minimum Komga version required: `0.63.2`
-
-### Fix
-
-* use metadata.releaseDate or fileLastModified for chapter date
-
-## 1.2.17
-
-Minimum Komga version required: `0.63.2`
-
-### Fix
-
-* list of collections for filtering could be empty in some conditions
-
-## 1.2.16
-
-Minimum Komga version required: `0.59.0`
-
-### Features
-
-* filter by genres, tags and publishers
-
-## 1.2.15
-
-Minimum Komga version required: `0.56.0`
-
-### Features
-
-* remove the 1000 chapters limit
-* display series description and tags (genres + tags)
-
-## 1.2.14
-
-Minimum Komga version required: `0.41.0`
-
-### Features
-
-* change chapter display name to use the display number instead of the sort number
-
-## 1.2.13
-
-Minimum Komga version required: `0.41.0`
-
-### Features
-
-* compatibility for the upcoming version of Komga which have changes in the API (IDs are String instead of Long)
-
-## 1.2.12
-
-Minimum Komga version required: `0.41.0`
-
-### Features
-
-* filter by collection
-
-## 1.2.11
-
-Minimum Komga version required: `0.35.2`
-
-### Features
-
-* Set password preferences inputTypes
-
-## 1.2.10
-
-Minimum Komga version required: `0.35.2`
-
-### Features
-
-* unread only filter (closes gotson/komga#180)
-* prefix book titles with number (closes gotson/komga#169)
-
-## 1.2.9
-
-Minimum Komga version required: `0.22.0`
-
-### Features
-
-* use SourceFactory to have multiple Komga servers (3 for the moment)
-
-## 1.2.8
-
-Minimum Komga version required: `0.22.0`
-
-### Features
-
-* use book metadata title for chapter display name
-* use book metadata sort number for chapter number
-
-## 1.2.7
-
-### Features
-
-* use series metadata title for display name
-* filter on series status
-
-## 1.2.6
-
-### Features
-
-* Add support for AndroidX preferences
-
-## 1.2.5
-
-### Features
-
-* add sort options in filter
-
-## 1.2.4
-
-### Features
-
-* better handling of authentication
-
-## 1.2.3
-
-### Features
-
-* filters by library
-
-## 1.2.2
-
-### Features
-
-* request converted image from server if format is not supported
-
-## 1.2.1
-
-### Features
-
-* first version
diff --git a/src/all/komga/README.md b/src/all/komga/README.md
deleted file mode 100644
index fa7ae9fc7..000000000
--- a/src/all/komga/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
-# Komga
-
-Table of Content
-- [FAQ](#FAQ)
- - [Why do I see no manga?](#why-do-i-see-no-manga)
- - [Where can I get more information about Komga?](#where-can-i-get-more-information-about-komga)
- - [The Komga extension stopped working?](#the-komga-extension-stopped-working)
- - [Can I add more than one Komga server or user?](#can-i-add-more-than-one-komga-server-or-user)
- - [Can I test the Komga extension before setting up my own server?](#can-i-test-the-komga-extension-before-setting-up-my-own-server)
-- [Guides](#Guides)
- - [How do I add my Komga server to Tachiyomi?](#how-do-i-add-my-komga-server-to-tachiyomi)
-
-Don't find the question you are look for go check out our general FAQs and Guides over at [Extension FAQ](https://tachiyomi.org/help/faq/#extensions) or [Getting Started](https://tachiyomi.org/help/guides/getting-started/#installation)
-
-## FAQ
-
-### Why do I see no manga?
-Komga is a self-hosted comic/manga media server.
-
-### Where can I get more information about Komga?
-You can visit the [Komga](https://komga.org/) website for for more information.
-
-### The Komga extension stopped working?
-Make sure that your Komga server and extension are on the newest version.
-
-### Can I add more than one Komga server or user?
-Yes, currently you can add up to 3 different Komga instances to Tachiyomi.
-
-### Can I test the Komga extension before setting up my own server?
-Yes, you can try it out with the DEMO server `https://demo.komga.org`, username `demo@komga.org` and password `komga-demo`.
-
-## Guides
-
-### How do I add my Komga server to Tachiyomi?
-Go into the settings of the Komga extension from the Extension tab in Browse and fill in your server address and login details.
diff --git a/src/all/komga/build.gradle b/src/all/komga/build.gradle
deleted file mode 100644
index c603e6699..000000000
--- a/src/all/komga/build.gradle
+++ /dev/null
@@ -1,12 +0,0 @@
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-apply plugin: 'kotlinx-serialization'
-
-ext {
- extName = 'Komga'
- pkgNameSuffix = 'all.komga'
- extClass = '.KomgaFactory'
- extVersionCode = 50
-}
-
-apply from: "$rootDir/common.gradle"
diff --git a/src/all/komga/res/mipmap-hdpi/ic_launcher.png b/src/all/komga/res/mipmap-hdpi/ic_launcher.png
deleted file mode 100755
index 4a5514218..000000000
Binary files a/src/all/komga/res/mipmap-hdpi/ic_launcher.png and /dev/null differ
diff --git a/src/all/komga/res/mipmap-mdpi/ic_launcher.png b/src/all/komga/res/mipmap-mdpi/ic_launcher.png
deleted file mode 100755
index af95fb6ca..000000000
Binary files a/src/all/komga/res/mipmap-mdpi/ic_launcher.png and /dev/null differ
diff --git a/src/all/komga/res/mipmap-xhdpi/ic_launcher.png b/src/all/komga/res/mipmap-xhdpi/ic_launcher.png
deleted file mode 100755
index 76c5112ce..000000000
Binary files a/src/all/komga/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/all/komga/res/mipmap-xxhdpi/ic_launcher.png b/src/all/komga/res/mipmap-xxhdpi/ic_launcher.png
deleted file mode 100755
index 80894b006..000000000
Binary files a/src/all/komga/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/all/komga/res/mipmap-xxxhdpi/ic_launcher.png b/src/all/komga/res/mipmap-xxxhdpi/ic_launcher.png
deleted file mode 100755
index 798b30128..000000000
Binary files a/src/all/komga/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ
diff --git a/src/all/komga/res/web_hi_res_512.png b/src/all/komga/res/web_hi_res_512.png
deleted file mode 100755
index d39f53c61..000000000
Binary files a/src/all/komga/res/web_hi_res_512.png and /dev/null differ
diff --git a/src/all/komga/src/eu/kanade/tachiyomi/extension/all/komga/Komga.kt b/src/all/komga/src/eu/kanade/tachiyomi/extension/all/komga/Komga.kt
deleted file mode 100644
index 4f0adb59f..000000000
--- a/src/all/komga/src/eu/kanade/tachiyomi/extension/all/komga/Komga.kt
+++ /dev/null
@@ -1,637 +0,0 @@
-package eu.kanade.tachiyomi.extension.all.komga
-
-import android.app.Application
-import android.content.SharedPreferences
-import android.text.Editable
-import android.text.InputType
-import android.text.TextWatcher
-import android.util.Log
-import android.widget.Button
-import android.widget.Toast
-import androidx.preference.EditTextPreference
-import androidx.preference.PreferenceScreen
-import eu.kanade.tachiyomi.AppInfo
-import eu.kanade.tachiyomi.extension.all.komga.dto.AuthorDto
-import eu.kanade.tachiyomi.extension.all.komga.dto.BookDto
-import eu.kanade.tachiyomi.extension.all.komga.dto.CollectionDto
-import eu.kanade.tachiyomi.extension.all.komga.dto.LibraryDto
-import eu.kanade.tachiyomi.extension.all.komga.dto.PageDto
-import eu.kanade.tachiyomi.extension.all.komga.dto.PageWrapperDto
-import eu.kanade.tachiyomi.extension.all.komga.dto.ReadListDto
-import eu.kanade.tachiyomi.extension.all.komga.dto.SeriesDto
-import eu.kanade.tachiyomi.network.GET
-import eu.kanade.tachiyomi.network.asObservable
-import eu.kanade.tachiyomi.network.await
-import eu.kanade.tachiyomi.source.ConfigurableSource
-import eu.kanade.tachiyomi.source.UnmeteredSource
-import eu.kanade.tachiyomi.source.model.Filter
-import eu.kanade.tachiyomi.source.model.FilterList
-import eu.kanade.tachiyomi.source.model.MangasPage
-import eu.kanade.tachiyomi.source.model.Page
-import eu.kanade.tachiyomi.source.model.SChapter
-import eu.kanade.tachiyomi.source.model.SManga
-import eu.kanade.tachiyomi.source.online.HttpSource
-import kotlinx.serialization.decodeFromString
-import kotlinx.serialization.json.Json
-import okhttp3.Credentials
-import okhttp3.Dns
-import okhttp3.Headers
-import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
-import okhttp3.OkHttpClient
-import okhttp3.Request
-import okhttp3.Response
-import rx.Observable
-import rx.Single
-import rx.schedulers.Schedulers
-import uy.kohesive.injekt.Injekt
-import uy.kohesive.injekt.api.get
-import uy.kohesive.injekt.injectLazy
-import java.security.MessageDigest
-import java.util.Locale
-
-open class Komga(private val suffix: String = "") : ConfigurableSource, UnmeteredSource, HttpSource() {
- override fun popularMangaRequest(page: Int): Request =
- GET("$baseUrl/api/v1/series?page=${page - 1}&deleted=false&sort=metadata.titleSort,asc", headers)
-
- override fun popularMangaParse(response: Response): MangasPage =
- processSeriesPage(response)
-
- override fun latestUpdatesRequest(page: Int): Request =
- GET("$baseUrl/api/v1/series/latest?page=${page - 1}&deleted=false", headers)
-
- override fun latestUpdatesParse(response: Response): MangasPage =
- processSeriesPage(response)
-
- override fun searchMangaRequest(page: Int, query: String, filters: FilterList): Request {
- val collectionId = (filters.find { it is CollectionSelect } as? CollectionSelect)?.let {
- it.values[it.state].id
- }
-
- val type = when {
- collectionId != null -> "collections/$collectionId/series"
- filters.find { it is TypeSelect }?.state == 1 -> "readlists"
- else -> "series"
- }
-
- val url = "$baseUrl/api/v1/$type?search=$query&page=${page - 1}&deleted=false".toHttpUrlOrNull()!!.newBuilder()
-
- filters.forEach { filter ->
- when (filter) {
- is UnreadFilter -> {
- if (filter.state) {
- url.addQueryParameter("read_status", "UNREAD")
- url.addQueryParameter("read_status", "IN_PROGRESS")
- }
- }
- is InProgressFilter -> {
- if (filter.state) {
- url.addQueryParameter("read_status", "IN_PROGRESS")
- }
- }
- is ReadFilter -> {
- if (filter.state) {
- url.addQueryParameter("read_status", "READ")
- }
- }
- is LibraryGroup -> {
- val libraryToInclude = mutableListOf()
- filter.state.forEach { content ->
- if (content.state) {
- libraryToInclude.add(content.id)
- }
- }
- if (libraryToInclude.isNotEmpty()) {
- url.addQueryParameter("library_id", libraryToInclude.joinToString(","))
- }
- }
- is StatusGroup -> {
- val statusToInclude = mutableListOf()
- filter.state.forEach { content ->
- if (content.state) {
- statusToInclude.add(content.name.uppercase(Locale.ROOT))
- }
- }
- if (statusToInclude.isNotEmpty()) {
- url.addQueryParameter("status", statusToInclude.joinToString(","))
- }
- }
- is GenreGroup -> {
- val genreToInclude = mutableListOf()
- filter.state.forEach { content ->
- if (content.state) {
- genreToInclude.add(content.name)
- }
- }
- if (genreToInclude.isNotEmpty()) {
- url.addQueryParameter("genre", genreToInclude.joinToString(","))
- }
- }
- is TagGroup -> {
- val tagToInclude = mutableListOf()
- filter.state.forEach { content ->
- if (content.state) {
- tagToInclude.add(content.name)
- }
- }
- if (tagToInclude.isNotEmpty()) {
- url.addQueryParameter("tag", tagToInclude.joinToString(","))
- }
- }
- is PublisherGroup -> {
- val publisherToInclude = mutableListOf()
- filter.state.forEach { content ->
- if (content.state) {
- publisherToInclude.add(content.name)
- }
- }
- if (publisherToInclude.isNotEmpty()) {
- url.addQueryParameter("publisher", publisherToInclude.joinToString(","))
- }
- }
- is AuthorGroup -> {
- val authorToInclude = mutableListOf()
- filter.state.forEach { content ->
- if (content.state) {
- authorToInclude.add(content.author)
- }
- }
- authorToInclude.forEach {
- url.addQueryParameter("author", "${it.name},${it.role}")
- }
- }
- is Filter.Sort -> {
- var sortCriteria = when (filter.state?.index) {
- 0 -> if (type == "series") "metadata.titleSort" else "name"
- 1 -> "createdDate"
- 2 -> "lastModifiedDate"
- else -> ""
- }
- if (sortCriteria.isNotEmpty()) {
- sortCriteria += "," + if (filter.state?.ascending!!) "asc" else "desc"
- url.addQueryParameter("sort", sortCriteria)
- }
- }
- else -> {}
- }
- }
-
- return GET(url.toString(), headers)
- }
-
- override fun searchMangaParse(response: Response): MangasPage =
- processSeriesPage(response)
-
- override fun fetchMangaDetails(manga: SManga): Observable {
- return client.newCall(GET(manga.url, headers))
- .asObservable()
- .map { response ->
- mangaDetailsParse(response).apply { initialized = true }
- }
- }
-
- override fun mangaDetailsRequest(manga: SManga): Request =
- GET(manga.url.replaceFirst("api/v1/", "", ignoreCase = true), headers)
-
- override fun mangaDetailsParse(response: Response): SManga {
- return response.body.use { body ->
- if (response.fromReadList()) {
- val readList = json.decodeFromString(body.string())
- readList.toSManga()
- } else {
- val series = json.decodeFromString(body.string())
- series.toSManga()
- }
- }
- }
-
- override fun chapterListRequest(manga: SManga): Request =
- GET("${manga.url}/books?unpaged=true&media_status=READY&deleted=false", headers)
-
- override fun chapterListParse(response: Response): List {
- val responseBody = response.body
- val page = responseBody.use { json.decodeFromString>(it.string()).content }
-
- val r = page.mapIndexed { index, book ->
- SChapter.create().apply {
- chapter_number = if (!response.fromReadList()) book.metadata.numberSort else index + 1F
- name = "${if (!response.fromReadList()) "${book.metadata.number} - " else "${book.seriesTitle} ${book.metadata.number}: "}${book.metadata.title} (${book.size})"
- url = "$baseUrl/api/v1/books/${book.id}"
- scanlator = book.metadata.authors.groupBy({ it.role }, { it.name })["translator"]?.joinToString()
- date_upload = book.metadata.releaseDate?.let { parseDate(it) }
- ?: parseDateTime(book.fileLastModified)
- }
- }
- return r.sortedByDescending { it.chapter_number }
- }
-
- override fun pageListRequest(chapter: SChapter): Request =
- GET("${chapter.url}/pages")
-
- override fun pageListParse(response: Response): List {
- val responseBody = response.body
- val pages = responseBody.use { json.decodeFromString>(it.string()) }
- return pages.map {
- val url = "${response.request.url}/${it.number}" +
- if (!supportedImageTypes.contains(it.mediaType)) {
- "?convert=png"
- } else {
- ""
- }
- Page(
- index = it.number - 1,
- imageUrl = url,
- )
- }
- }
-
- override fun getMangaUrl(manga: SManga) = manga.url.replace("/api/v1", "")
-
- override fun getChapterUrl(chapter: SChapter) = chapter.url.replace("/api/v1/books", "/book")
-
- private fun processSeriesPage(response: Response): MangasPage {
- val responseBody = response.body
- return responseBody.use { body ->
- if (response.fromReadList()) {
- with(json.decodeFromString>(body.string())) {
- MangasPage(content.map { it.toSManga() }, !last)
- }
- } else {
- with(json.decodeFromString>(body.string())) {
- MangasPage(content.map { it.toSManga() }, !last)
- }
- }
- }
- }
-
- private fun SeriesDto.toSManga(): SManga =
- SManga.create().apply {
- title = metadata.title
- url = "$baseUrl/api/v1/series/$id"
- thumbnail_url = "$url/thumbnail"
- status = when {
- metadata.status == "ENDED" && metadata.totalBookCount != null && booksCount < metadata.totalBookCount -> SManga.PUBLISHING_FINISHED
- metadata.status == "ENDED" -> SManga.COMPLETED
- metadata.status == "ONGOING" -> SManga.ONGOING
- metadata.status == "ABANDONED" -> SManga.CANCELLED
- metadata.status == "HIATUS" -> SManga.ON_HIATUS
- else -> SManga.UNKNOWN
- }
- genre = (metadata.genres + metadata.tags + booksMetadata.tags).distinct().joinToString(", ")
- description = metadata.summary.ifBlank { booksMetadata.summary }
- booksMetadata.authors.groupBy { it.role }.let { map ->
- author = map["writer"]?.map { it.name }?.distinct()?.joinToString()
- artist = map["penciller"]?.map { it.name }?.distinct()?.joinToString()
- }
- }
-
- private fun ReadListDto.toSManga(): SManga =
- SManga.create().apply {
- title = name
- description = summary
- url = "$baseUrl/api/v1/readlists/$id"
- thumbnail_url = "$url/thumbnail"
- status = SManga.UNKNOWN
- }
-
- private fun Response.fromReadList() = request.url.toString().contains("/api/v1/readlists")
-
- private fun parseDate(date: String?): Long =
- if (date == null) {
- 0
- } else {
- try {
- KomgaHelper.formatterDate.parse(date)?.time ?: 0
- } catch (ex: Exception) {
- 0
- }
- }
-
- private fun parseDateTime(date: String?): Long =
- if (date == null) {
- 0
- } else {
- try {
- KomgaHelper.formatterDateTime.parse(date)?.time ?: 0
- } catch (ex: Exception) {
- try {
- KomgaHelper.formatterDateTimeMilli.parse(date)?.time ?: 0
- } catch (ex: Exception) {
- 0
- }
- }
- }
-
- override fun imageUrlParse(response: Response): String = ""
-
- private class TypeSelect : Filter.Select("Search for", arrayOf(TYPE_SERIES, TYPE_READLISTS))
- private class LibraryFilter(val id: String, name: String) : Filter.CheckBox(name, false)
- private class LibraryGroup(libraries: List) : Filter.Group("Libraries", libraries)
- private class CollectionSelect(collections: List) : Filter.Select("Collection", collections.toTypedArray())
- private class SeriesSort : Filter.Sort("Sort", arrayOf("Alphabetically", "Date added", "Date updated"), Selection(0, true))
- private class StatusFilter(name: String) : Filter.CheckBox(name, false)
- private class StatusGroup(filters: List) : Filter.Group("Status", filters)
- private class UnreadFilter : Filter.CheckBox("Unread", false)
- private class InProgressFilter : Filter.CheckBox("In Progress", false)
- private class ReadFilter : Filter.CheckBox("Read", false)
- private class GenreFilter(genre: String) : Filter.CheckBox(genre, false)
- private class GenreGroup(genres: List) : Filter.Group("Genres", genres)
- private class TagFilter(tag: String) : Filter.CheckBox(tag, false)
- private class TagGroup(tags: List) : Filter.Group("Tags", tags)
- private class PublisherFilter(publisher: String) : Filter.CheckBox(publisher, false)
- private class PublisherGroup(publishers: List) : Filter.Group("Publishers", publishers)
- private class AuthorFilter(val author: AuthorDto) : Filter.CheckBox(author.name, false)
- private class AuthorGroup(role: String, authors: List) : Filter.Group(role, authors)
-
- private data class CollectionFilterEntry(
- val name: String,
- val id: String? = null,
- ) {
- override fun toString() = name
- }
-
- override fun getFilterList(): FilterList {
- val filters = try {
- mutableListOf>(
- UnreadFilter(),
- InProgressFilter(),
- ReadFilter(),
- TypeSelect(),
- CollectionSelect(listOf(CollectionFilterEntry("None")) + collections.map { CollectionFilterEntry(it.name, it.id) }),
- LibraryGroup(libraries.map { LibraryFilter(it.id, it.name) }.sortedBy { it.name.lowercase(Locale.ROOT) }),
- StatusGroup(listOf("Ongoing", "Ended", "Abandoned", "Hiatus").map { StatusFilter(it) }),
- GenreGroup(genres.map { GenreFilter(it) }),
- TagGroup(tags.map { TagFilter(it) }),
- PublisherGroup(publishers.map { PublisherFilter(it) }),
- ).also { list ->
- list.addAll(authors.map { (role, authors) -> AuthorGroup(role, authors.map { AuthorFilter(it) }) })
- list.add(SeriesSort())
- }
- } catch (e: Exception) {
- Log.e(LOG_TAG, "error while creating filter list", e)
- emptyList()
- }
-
- return FilterList(filters)
- }
-
- private var libraries = emptyList()
- private var collections = emptyList()
- private var genres = emptySet()
- private var tags = emptySet()
- private var publishers = emptySet