-
Notifications
You must be signed in to change notification settings - Fork 41
/
hitomi_parser.dart
34 lines (29 loc) · 1 KB
/
hitomi_parser.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
// This source code is a part of Project Violet.
// Copyright (C) 2020-2024. violet-team. Licensed under the Apache-2.0 License.
import 'package:flutter/foundation.dart';
import 'package:html/parser.dart';
class HitomiParser {
// Extract only title and artists
static Future<Map<String, dynamic>> parseGalleryBlock(String html) async {
var doc = (await compute(parse, html)).querySelector('div');
var title = doc!.querySelector('h1')!.text.trim();
var artists = ['N/A'];
var language = 'N/A';
try {
artists = doc
.querySelector('div.artists-list')!
.querySelectorAll('li')
.map((e) => e.querySelector('a')!.text.trim())
.toList();
} catch (_) {
try {
artists = doc
.querySelector('div.artist-list')!
.querySelectorAll('li')
.map((e) => e.querySelector('a')!.text.trim())
.toList();
} catch (__) {}
}
return {'Title': title, 'Artists': artists, 'Language': language};
}
}