fix Anime-Sama

This commit is contained in:
Moustapha Kodjo Amadou
2025-01-17 11:32:35 +01:00
parent c25f708e94
commit 64fc7bd0db
2 changed files with 54 additions and 10 deletions

View File

@@ -34,8 +34,8 @@ class AnimeSama extends MProvider {
.where((MElement e) => .where((MElement e) =>
e.outerHtml.toLowerCase().contains("derniers épisodes ajoutés")) e.outerHtml.toLowerCase().contains("derniers épisodes ajoutés"))
.toList(); .toList();
final seasonElements = (latest.first.nextElementSibling as MElement) final seasonElements = (latest.first.parent.nextElementSibling as MElement)
.select(".scrollBarStyled > div") .select("div")
.toList(); .toList();
List<MManga> seasons = []; List<MManga> seasons = [];
for (var seasonElement in seasonElements) { for (var seasonElement in seasonElements) {
@@ -128,13 +128,22 @@ class AnimeSama extends MProvider {
List<MChapter>? episodesList = []; List<MChapter>? episodesList = [];
for (var episodeNumber = 0; episodeNumber < maxLength; episodeNumber++) { for (var episodeNumber = 0; episodeNumber < maxLength; episodeNumber++) {
List<String> langs = []; List<String> langs = [];
bool isVf = false;
int iVostfr = 0;
int iVf = 0;
List<Map<String, dynamic>> players = []; List<Map<String, dynamic>> players = [];
for (var playerListt in playersList) { for (var playerList in playersList) {
for (var player in playerListt["players"]) { for (var player in playerList["players"]) {
if (player.length > episodeNumber) { if (player.length > episodeNumber) {
langs.add(playerListt["lang"]); isVf = playerList["lang"] == "vf";
players.add( if ((isVf && iVf < 2) || (!isVf && iVostfr < 2)) {
{"lang": playerListt["lang"], "player": player[episodeNumber]}); var lang = playerList["lang"];
if (!langs.contains(lang)) {
langs.add(lang);
}
players.add({"lang": lang, "player": player[episodeNumber]});
isVf ? iVf++ : iVostfr++;
}
} }
} }
} }
@@ -162,8 +171,8 @@ class AnimeSama extends MProvider {
List<MVideo> a = []; List<MVideo> a = [];
if (playerUrl.contains("sendvid")) { if (playerUrl.contains("sendvid")) {
a = await sendVidExtractorr(playerUrl, "$lang "); a = await sendVidExtractorr(playerUrl, "$lang ");
} else if (playerUrl.contains("sibnet.ru")) { } else if (playerUrl.contains("vidmoly")) {
a = await sibnetExtractor(playerUrl, lang); a = await vidmolyExtractor(playerUrl, lang);
} }
videos.addAll(a); videos.addAll(a);
} }
@@ -171,6 +180,41 @@ class AnimeSama extends MProvider {
return sortVideos(videos, source.id); return sortVideos(videos, source.id);
} }
Future<List<MVideo>> vidmolyExtractor(String url, String lang) async {
final headers = {
'Referer': 'https://vidmoly.to',
};
List<MVideo> videos = [];
final playListUrlResponse = (await client.get(Uri.parse(url))).body;
final playlistUrl =
RegExp(r'file:"(\S+?)"').firstMatch(playListUrlResponse)?.group(1) ??
"";
if (playlistUrl.isEmpty) return [];
final masterPlaylistRes =
await client.get(Uri.parse(playlistUrl), headers: headers);
if (masterPlaylistRes.statusCode == 200) {
for (var it
in substringAfter(masterPlaylistRes.body, "#EXT-X-STREAM-INF:")
.split("#EXT-X-STREAM-INF:")) {
final quality =
"${substringBefore(substringBefore(substringAfter(substringAfter(it, "RESOLUTION="), "x"), ","), "\n")}p";
String videoUrl = substringBefore(substringAfter(it, "\n"), "\n");
MVideo video = MVideo();
video
..url = videoUrl
..originalUrl = videoUrl
..quality = "$lang Vidmoly $quality"
..headers = headers;
videos.add(video);
}
}
return videos;
}
Future<List<MVideo>> sendVidExtractorr(String url, String prefix) async { Future<List<MVideo>> sendVidExtractorr(String url, String prefix) async {
final res = (await client.get(Uri.parse(url))).body; final res = (await client.get(Uri.parse(url))).body;
final document = parseHtml(res); final document = parseHtml(res);

View File

@@ -1,7 +1,7 @@
import '../../../../../model/source.dart'; import '../../../../../model/source.dart';
Source get animesamaSource => _animesama; Source get animesamaSource => _animesama;
const animesamaVersion = "0.0.3"; const animesamaVersion = "0.0.4";
const animesamaCodeUrl = const animesamaCodeUrl =
"https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/anime/src/fr/animesama/animesama.dart"; "https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/anime/src/fr/animesama/animesama.dart";
Source _animesama = Source( Source _animesama = Source(