【实用github项目】konnichiwa-漫画和同人志管理器
本文最后更新于 2024-06-10,
若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益, 请联系我 删除。
本站只有Telegram群组为唯一交流群组, 点击加入
文章内容有误?申请成为本站文章修订者或作者? 向站长提出申请
您可以在 LAMP 服务器上设置的漫画和同人志管理器
项目地址:https://github.com/naiymu/konnichiwa
首页
书签
您需要一个本地 Web 服务器(使用Apache测试),启用 PHP(启用mysqli)并在Linux机器上运行MySQL服务器。 如果您是新手,您可以在互联网上找到许多有关设置这些服务器的指南。
要使下载选项卡正常工作,您需要启用 php-fpm 和 fastcgi。如果您想使用它,您可以查看如何设置它(无论您是否使用 konnichiwa,都应该使用它)。如果您决定使用 php-fpm,请务必仔细阅读下面部分
安装步骤
SQL 转储创建表
请在 mysql 命令行中运行以下命令创建表
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `authors`
--
DROP TABLE IF EXISTS `authors`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `authors` (
`author` varchar(70) NOT NULL,
`authorId` int(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`authorId`),
UNIQUE KEY `UNIQUE` (`author`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `bookmarks`
--
DROP TABLE IF EXISTS `bookmarks`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `bookmarks` (
`dirId` int(10) NOT NULL,
`bookmark` varchar(50) NOT NULL,
PRIMARY KEY (`dirId`),
KEY `dirId` (`dirId`),
CONSTRAINT `bookmarks_ibfk_1` FOREIGN KEY (`dirId`) REFERENCES `directories` (`dirId`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `dir_author_link`
--
DROP TABLE IF EXISTS `dir_author_link`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `dir_author_link` (
`dirId` int(10) NOT NULL,
`authorId` int(10) NOT NULL,
KEY `dirId` (`dirId`),
KEY `authorId` (`authorId`),
CONSTRAINT `dir_author_link_ibfk_1` FOREIGN KEY (`dirId`) REFERENCES `directories` (`dirId`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `dir_author_link_ibfk_2` FOREIGN KEY (`authorId`) REFERENCES `authors` (`authorId`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `dir_tag_link`
--
DROP TABLE IF EXISTS `dir_tag_link`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `dir_tag_link` (
`dirId` int(10) NOT NULL,
`tagId` int(10) NOT NULL,
KEY `dirId` (`dirId`),
KEY `tagId` (`tagId`),
CONSTRAINT `dir_tag_link_ibfk_1` FOREIGN KEY (`dirId`) REFERENCES `directories` (`dirId`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `dir_tag_link_ibfk_2` FOREIGN KEY (`tagId`) REFERENCES `tags` (`tagId`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `directories`
--
DROP TABLE IF EXISTS `directories`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `directories` (
`dirName` varchar(300) NOT NULL,
`dirCover` varchar(300) NOT NULL,
`dirId` int(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`dirId`),
UNIQUE KEY `UNIQUE` (`dirName`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `favourites`
--
DROP TABLE IF EXISTS `favourites`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `favourites` (
`dirId` int(10) NOT NULL,
PRIMARY KEY (`dirId`),
CONSTRAINT `favourites_ibfk_1` FOREIGN KEY (`dirId`) REFERENCES `directories` (`dirId`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Table structure for table `tags`
--
DROP TABLE IF EXISTS `tags`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tags` (
`tag` varchar(50) NOT NULL,
`tagId` int(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`tagId`),
UNIQUE KEY `UNIQUE` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
下载模块
从此处下载 并将 php
文件保存为 scripts/simple_html_dom.php
。
这是下载选项卡所需要的。
我不希望每次打开网页时都连接到 CDN。因此,请从此处下载 jquery min(不是 slim)版本 ,并将文件保存为。scripts/jquery.js
但是,如果您不想下载 jquery 并且愿意连接到 CDN,则可以编辑该 scripts/header.php
文件。变量包含您可以编辑以引用 CDN 的 $head
行。<script src="/scripts/jquery.js"></script>
字体
如上所述,如果没有 CDN。从 此处下载 fontawesome 并将整个目录作为 assets/fontawesome
。
与上面相同,如果您真的想要,您可以直接编辑 $head
中的变量 ,特别是引用 CDN 的那一 scripts/header.php
行 。<link rel="stylesheet" href="/assets/fontawesome/css/all.css">
相关文件(必须)
登录.php
根据您的 sql 设置创建一个文件 scripts/login.php
。文件内容如下
<?php
$db_hostname = "hostname";
$db_username = "user";
$db_password = "password";
$db_database = "dbname";
图片
显然需要同人志图片所在的目录。每个同人志都应该有其单独的子目录。子目录可以有其自己的嵌套子目录。
该目录及其所有子目录必须将此目录命名为 Doujinshi
。
例如,如果实际的目录是/home/user/Private/doujinshi,那么你可以添加一个符号链接图像,链接到/home/user/Private而不是/home/user/Private/doujinshi,这可以通过命令(可能需要sudo)来完成。
cd konnichiwa
ln -s /home/user/Private images
目录.php
scripts/directory.php
按照你的目录设置创建一个文件。
文件内容如下:
<?php
$real_directory = "/home/user/Private/";
$directory = "/images/";
// The path to the holy directory
$image_directory = $real_directory . "Doujinshi/";
// The path to prepend to image files for html display
$relative_directory = "/images/Doujinshi/";
$dir_exists = false;
if(is_dir($real_directory)) {
$dir_exists = true;
}
你只需将变量更改为目录的父 $real_directory
目录的路径 即可。在上面的示例中,目录的完整路径将是 /home/user/Private/Doujinshi
- 请勿在路径中删除或添加任何斜线
将文件添加到数据库
使用 refresh_db 脚本
创建 scripts/modification/data.json
具有以下结构的文件:
{
"directories": [
{
"dirName": "Directory 1",
"dirCover": "1.png",
"authors": [
"author"
],
"tags": [
"tag1",
"tag2",
"tag3",
"tag4",
"tag5"
]
},
{
"dirName": "Directory 2",
"dirCover": "ch-1 1.jpeg",
"authors": [
"author1",
"author2",
"author3"
],
"tags": [
"tag1",
"tag2",
"tag3",
"tag4"
]
}
]
}
运行该 scripts/modification/refresh_db.php
文件并检查输出是否有任何错误,你需要手动更正这些错误。
另外可以将文件命名为 以外的其他名称 data.json
,然后以它运行脚本 php refresh_db.php [FILENAME]
。
手动添加目录
您也可以完全手动添加目录,方法是前往 [hostname]/add.php
并填写每个目录的表单。如果你的目录数量较少,此选项更有意义。
权限
确保你的服务器软件(apache/nginx/etc)和 php-fpm(如果使用)具有读取/写入目录的权限。对于( apache 上),以下步骤有效:
- 首先检查虚拟主机是否具有权限
Require all Granted
。<Directory /var/www/[VIRTUALHOST]>
这可以通过转到/etc/apache2/sites-available
并编辑虚拟主机的配置文件来完成[VIRTUALHOST].conf
。(可能是000-default.conf
)。如果您使用 RoverWire 的虚拟主机 bash 脚本创建虚拟主机,则这是默认行为。如果没有,请添加此行。 - 现在通过运行以下命令将
USER
(LINUX 中的用户)添加到组中:www-data
sudo adduser [USER] www-data
cd
进入/etc/apache2/
并编辑文件envvars
。在文件中,找到以下行:
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
并将其编辑为:
export APACHE_RUN_USER=your-username
export APACHE_RUN_GROUP=your-username-group
您可以通过运行以下命令检查您的用户属于哪些组:
groups [USER]
要使 php-fpm 使用与服务器软件相同的用户,你需要编辑 www.conf
位于的文件 /etc/php/[VERSION]/fpm/pool.d/www.conf
。查找以下行
user = www-data
group = www-data
并将其编辑为
user = your-username
group = your-username-group
最后,使用以下命令重新启动 apache 和 php-fpm 服务
sudo service apache2 restart
sudo service php[VERSION]-fpm restart
这样,服务器将具有读取/写入用户目录的权限。如果要在服务器上使用 php 运行一些删除/写入命令,请小心。
临时文件
如果你在 tmp/
服务器根目录中看到一个目录,请不要惊慌,它应该在那里。它应该只包含两个文件:
- 一张包含你最近预览过的同人志封面的图片
- 包含上次/当前下载信息的纯文本文件
如果你删除文件甚至整个目录都应该没问题。
网站功能
⚠️由于 NHentai 上的 Cloudflare,下载选项卡现在几乎毫无用处。 如果您仍想使用 konnichiwa 并且希望自动添加元数据,您可以尝试使用nhentai-konnichiwa 。
如果您导航到网站上的**“下载”**选项卡,系统将要求您提供一个 ID 和一个可选名称。
- ID:要下载的同人志的 nhentai id(部分后面的数字
nhentai.net/g/
) - name:要添加到已保存文件名称的可选前缀。默认值为空白,图像的名称类似于
{page}.{ext}
,但例如,如果提供的名称为ch-1
,则文件将保存为ch-1 {page}.{ext}
。