first commit

This commit is contained in:
编码猿
2024-09-27 02:06:13 +08:00
commit 852d94fbb9
36760 changed files with 3274413 additions and 0 deletions

View File

@@ -0,0 +1,80 @@
const express = require('express');
const router = express.Router();
const $http = require('../http');
const config = require('../config');
const utils = require('../utils');
router.get('/', async function(req, res, next) {
try {
let $ = utils.cheerioLoad(await $http.get({ url: config.HomeUrl }));
let MainData = {
banner: [],
booklist: []
};
// 抓取banner轮播图数据
let BannerData = []
$(".slider-top-pic li").each(function() {
BannerData.push({
imgUrl: $(this).find('img').attr("src"),
href: 'https://m.zongheng.com' + $(this).attr("data-url")
})
});
MainData.banner = BannerData
// 抓取 编辑力荐begin 的数据
let HomeTop = {}
HomeTop.title = $(".home-top .home-card-title i").text()
HomeTop.list = []
$('.home-top .home-book-item').each(function() {
HomeTop.list.push({
imgUrl: $(this).find("img").attr("src"),
title: $(this).find("img").attr("alt"),
id: utils.getUrlParam($(this).attr("data-url"),"bookid"),
desc: $(this).find(".desc").text(),
class: $(this).find(".item-label").text()
})
});
MainData.booklist.push(HomeTop)
// 男生必读 & 女生爱看
let HomeBoy = {}
HomeBoy.title = $(".home-boy .home-card-title i").text()
HomeBoy.list = []
$('.home-boy .home-book-box').each(function() {
HomeBoy.list.push({
imgUrl: $(this).find("img").attr("data-src"),
title: $(this).find("img").attr("alt"),
id: utils.getUrlParam($(this).attr("data-url"),"bookid"),
desc: "",
class: ""
})
});
MainData.booklist.push(HomeBoy)
// 仙侠奇幻
let xianBook = {}
let xian = $(".home-card")[3]
xianBook.title = $(xian).find(".home-card-title .flex--fluid").text()
xianBook.top = {
imgUrl: $(xian).find(".book-img-border img").attr("data-src"),
title: $(xian).find(".font-a").text(),
id: utils.getUrlParam($(xian).find(".home-book-item").attr("data-url"),"bookid"),
desc: $(xian).find(".desc").text(),
class: $(xian).find(".item-label").text(),
}
xianBook.list = []
$(xian).find(".home-row-line").each(function() {
xianBook.list.push({
title: $(this).find("span").text(),
id: utils.getUrlParam($(this).attr("href"),"bookid")
})
})
MainData.booklist.push(xianBook)
utils.JsonData({ res: res, status: 200, data: MainData })
} catch (error) {
utils.JsonData({ res: res, status: 404, data: error.message })
}
});
module.exports = router;

View File

@@ -0,0 +1,147 @@
const express = require('express');
const router = express.Router();
const $http = require('../http');
const config = require('../config');
const utils = require('../utils');
/**
* 获取小说所有分类
* http://127.0.0.1:3000/class/allClass
*/
router.get('/allClass', async function(req, res, next) {
try {
let $ = utils.cheerioLoad(await $http.get({ url: config.typeUrl }));
let typeList = []
$(".cat_box").each(function(i) {
typeList.push({
title: $(this).find(".cat_tit .cat_more").prev().text(),
pid: utils.getUrlParam($(this).find(".cat_tit .cat_more").prev().attr("href"), "cPid")
});
typeList[i]['child'] = []
$(this).find(".cat_list li").each(function() {
typeList[i]['child'].push({
text: $(this).find("a").text(),
cid: utils.getUrlParam($(this).find("a").attr("href"), "cid")
})
})
});
utils.JsonData({ res: res, status: 200, data: typeList })
} catch (error) {
utils.JsonData({ res: res, status: 404, data: error.message })
}
});
/**
* 获取对应小说分类的数据
* http://127.0.0.1:3000/class/classInfo?cPid=1&cid=1001&pageNum=1
* cid == -1 表示请求大分类数据
* cid != -1 表示请求大分类下小分类的数据
*/
router.get('/classInfo', async function(req, res, next) {
let cPid = parseInt(req.query.cPid),
cid = parseInt(req.query.cid),
pageNum = req.query.pageNum,
url = null;
if (cid == -1) {
url = `${config.classInfoUrl}?cPid=${cPid}&cid=-1&type=1&pageSize=10&pageNum=${pageNum}&bookType=0&callback=jsonp1`
} else {
url = `${config.classInfoUrl}?cPid=${cPid}&cid=${cid}&type=1&pageSize=10&pageNum=${pageNum}&bookType=0&callback=jsonp1`
}
try {
let data = JSON.parse((await $http.get({ url: url })).match(/jsonp1\(([\s\S]*?)\)/)[1]);
data.ranklist.forEach((val) => val.coverUrl = 'https://static.zongheng.com/upload/s_image'+val.coverUrl);
utils.JsonData({ res: res, status: 200, data: data })
} catch (error) {
utils.JsonData({ res: res, status: 404, data: error.message })
}
});
/**
* 进入小说详情
* http://127.0.0.1:3000/class/bookInfo?bookid=722486
*/
router.get('/bookInfo', async function(req, res, next) {
try {
let bookid = req.query.bookid;
let $ = utils.cheerioLoad(await $http.get({ url: config.bookInfoUrl+bookid }));
let bookInfo = {};
bookInfo.imgurl = $('.bookimg img').attr("src")
bookInfo.title = $('.booksite .bookname').text()
bookInfo.author = $($('.booksite .info div')[0]).find("span").text()
bookInfo.type = $($('.booksite .info div')[1]).find("span").text()
bookInfo.wordNum = $($('.booksite .info div')[2]).find("span").text()
bookInfo.readNum = $($('.booksite .info div')[3]).find("span").text()
bookInfo.desc = $(".book_intro").text()
bookInfo.newitem = {
text: $('.booksite #lastupdate .last_tit').text(),
zid: $('.booksite #lastupdate').attr("chapterid")
}
bookInfo.zjList = [];
$("#coverl_atz a").each(function() {
bookInfo.zjList.push({
text: $(this).text(),
zid: utils.getUrlParam($(this).attr("href"),"cid")
})
})
utils.JsonData({ res: res, status: 200, data: bookInfo })
} catch (error) {
utils.JsonData({ res: res, status: 404, data: error.message })
}
});
/**
* 获取小说的所有章节目录
* http://127.0.0.1:3000/class/chapterList?bookid=722486&pageNum=1
*/
router.get('/chapterList', async function(req, res, next) {
try {
let bookid = req.query.bookid,
pageNum = req.query.pageNum;
let url = `${config.chapterListInfo}${bookid}&pageNum=${pageNum}&pageSize=20&chapterId=&asc=0&callback=jsonp1`
let data = JSON.parse((await $http.get({ url: url })).match(/jsonp1\(([\s\S]*?)\)/)[1]);
utils.JsonData({ res: res, status: 200, data: data })
} catch (error) {
utils.JsonData({ res: res, status: 404, data: error.message })
}
});
/**
* 获取小说章节的内容
* http://127.0.0.1:3000/class/chapterRead?bookid=722486&chapterId=39865789
*/
router.get('/chapterRead', async function(req, res, next) {
try {
let bookid = req.query.bookid,
chapterId = req.query.chapterId;
let url = `${config.chapterRead}${bookid}&chapterId=${chapterId}&v=1565096009107&callback=jsonp1`
let data = JSON.parse((await $http.get({ url: url })).match(/jsonp1\(([\s\S]*?)\)/)[1]);
utils.JsonData({ res: res, status: 200, data: data })
} catch (error) {
utils.JsonData({ res: res, status: 404, data: error.message })
}
});
/**
* 点击章节目录开始阅读章节
* http://127.0.0.1:3000/class/chapterRead?bookid=722486&chapterId=39865789
*/
router.get('/chapterRead', async function(req, res, next) {
try {
let bookid = req.query.bookid,
chapterId = req.query.chapterId;
let url = `${config.chapterRead}${bookid}&chapterId=${chapterId}&callback=jsonp2`
console.log(url)
let data = JSON.parse((await $http.get({ url: url })).match(/jsonp2\(([\s\S]*?)\)/)[1]);
utils.JsonData({ res: res, status: 200, data: data })
} catch (error) {
utils.JsonData({ res: res, status: 404, data: error.message })
}
});
module.exports = router;

View File

@@ -0,0 +1,41 @@
var express = require('express');
var router = express.Router();
var db = require("../db");
var config = require("../config")
var utils = require('../utils');
router.get('/getAll', async function(req, res, next) {
let da = await db.Query({
sql: 'select * from user',
par: []
})
res.json(da);
});
router.post('/userLogin', async function(req, res, next) {
var username = req.body.username,
userpwd = req.body.userpwd;
let da = await db.Query({
sql: config.sql.userlogin,
par: [ username, userpwd ]
})
da.length ==0 ? utils.JsonData({ res: res, status: 404, data: "账户密码错误" }):
utils.JsonData({ res: res, status: 200, data: da[0] })
});
router.post('/collection', async function(req, res, next) {
var bookid = req.body.bookid,
uid = req.body.id;
console.log(uid,bookid)
let da = await db.Query({
sql: config.sql.usercollect,
par: [uid, bookid]
})
da.length == 0 ? utils.JsonData({ res: res, status: 404, data: "收藏出错" }):
utils.JsonData({ res: res, status: 200, data: '收藏成功' })
});
module.exports = router;