add mangakawaii source

This commit is contained in:
kodjodevf 2023-04-11 16:13:28 +01:00
parent 5642ee0bbe
commit 8511944d20
4 changed files with 164 additions and 3 deletions

View file

@ -137,6 +137,34 @@ Future<GetMangaChapterUrlModel> getMangaChapterUrl(
}
}
}
/***********/
/*mangakawaii*/
/***********/
else if (modelManga.source == 'mangakawaii') {
final response = await http.get(Uri.parse(modelManga.chapterUrl![index]));
var chapterSlug = RegExp("""var chapter_slug = "([^"]*)";""")
.allMatches(response.body.toString())
.last
.group(1);
var mangaSlug = RegExp("""var oeuvre_slug = "([^"]*)";""")
.allMatches(response.body.toString())
.last
.group(1);
var pages = RegExp('''"page_image":"([^"]*)"''')
.allMatches(response.body.toString())
.map((e) => e.group(1));
for (var tt in pages) {
urll.add(
'https://cdn.mangakawaii.pics/uploads/manga/$mangaSlug/chapters_fr/$chapterSlug/$tt');
}
ref.watch(hiveBoxMangaInfo).put(
"${modelManga.source}/${modelManga.name}/${modelManga.chapterTitle![index]}-pageurl",
urll);
}
/***********/
/*mangahere*/
/***********/

View file

@ -292,6 +292,119 @@ Future<GetMangaDetailModel> getMangaDetail(GetMangaDetailRef ref,
}
}
}
/***********/
/*mangakawaii*/
/***********/
else if (source == "mangakawaii") {
final dom = await httpResToDom(
url: 'https://www.mangakawaii.io$url',
headers: {"Accept-Language": "fr"});
List detail = [];
imageUrl =
"https://cdn.mangakawaii.pics/uploads$url/cover/cover_250x350.jpg";
if (dom.querySelectorAll('dd.text-justify.text-break').isNotEmpty) {
final tt = dom
.querySelectorAll('dd.text-justify.text-break')
.map((e) => e.text.trim())
.toList();
description = tt[0];
}
if (dom
.querySelectorAll('span.badge.bg-success.text-uppercase')
.isNotEmpty) {
final tt = dom
.querySelectorAll('span.badge.bg-success.text-uppercase')
.map((e) => e.text.trim())
.toList();
detail.add(tt[0]);
} else {
detail.add("");
}
if (dom.querySelectorAll('a[href*=author]').isNotEmpty) {
final tt = dom
.querySelectorAll('a[href*=author]')
.map((e) => e.text.trim())
.toList();
detail.add(tt[0]);
} else {
detail.add("");
}
if (dom.querySelectorAll('a[href*=category]').isNotEmpty) {
final tt = dom
.querySelectorAll('a[href*=category]')
.map((e) => e.text.trim())
.toList();
for (var ok in tt) {
genre.add(ok);
}
}
detail = detail.toSet().toList();
status = detail[0];
author = detail[1];
if (dom.querySelectorAll("tr[class*='volume-']").isNotEmpty) {
final url = dom.querySelectorAll("tr[class*='volume-']").map((e) {
RegExp exp = RegExp(r'<a href="([^"]+)"');
Iterable<Match> matches = exp.allMatches(e.outerHtml);
String? firstMatch = matches.first.group(1);
return firstMatch;
}).toList();
final htm = await httpResToDom(
url: 'https://www.mangakawaii.io${url[0]}',
headers: {"Accept-Language": "fr"});
if (htm
.querySelectorAll(
'#bottom_nav_reader > div > div > ul.chapter-pager.navbar-nav > li.nav-item.dropup.d-inline-block > ul > li > a')
.isNotEmpty) {
final tt = htm
.querySelectorAll(
'#bottom_nav_reader > div > div > ul.chapter-pager.navbar-nav > li.nav-item.dropup.d-inline-block > ul > li > a')
.map((e) => e.innerHtml)
.toList();
final urlz = htm
.querySelectorAll(
"#bottom_nav_reader > div > div > ul.chapter-pager.navbar-nav > li.nav-item.dropup.d-inline-block > ul > li ")
.map((e) => e.innerHtml)
.toList();
for (var ok in urlz) {
chapterUrl.add(ok.split('href="')[1].split('"').first);
}
for (var ok in tt) {
chapterTitle.add(ok);
}
if (dom.querySelectorAll("tr[class*='volume-']").isNotEmpty) {
final url = dom
.querySelectorAll("tr[class*='volume-']")
.map((e) => e
.querySelectorAll('td.table__date')
.map((e) => e.text.trim())
.toList()[0])
.toList();
if (urlz.length > url.length) {
for (var _ in urlz) {
chapterDate.add(DateTime.now()
.toString()
.substring(0, 10)
.replaceAll('-', "/"));
}
} else {
for (var ok in url) {
chapterDate.add(ok
.split(" ")
.first
.toString()
.substring(0, 10)
.replaceAll('.', "/"));
}
}
}
}
}
}
/***********/
/*mangahere*/
/***********/

View file

@ -123,6 +123,25 @@ Future<GetMangaModel> getPopularManga(GetPopularMangaRef ref,
}
}
/***********/
/*mangakawaii*/
/***********/
if (source == "mangakawaii") {
final dom =
await httpResToDom(url: 'https://www.mangakawaii.io/', headers: {});
if (dom.querySelectorAll('a.hot-manga__item').isNotEmpty) {
url = dom
.querySelectorAll('a.hot-manga__item ')
.where((e) => e.attributes.containsKey('href'))
.map((e) => e.attributes['href'])
.toList();
name = dom
.querySelectorAll('a > div > div.hot-manga__item-name')
.map((e) => e.innerHtml)
.toList();
}
}
/***********/
/*mangahere*/
/***********/

View file

@ -1,5 +1,3 @@
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:mangayomi/source/source_model.dart';
@ -24,7 +22,10 @@ class _BrowseScreenState extends State<BrowseScreen>
_tabBarController = TabController(length: 3, vsync: this);
_tabBarController.animateTo(0);
_tabBarController.addListener(() {
setState(() {});
setState(() {
_textEditingController.clear();
_isSearch = false;
});
});
super.initState();
}