1
0
mirror of https://github.com/h7x4/unofficial_jisho_api_dart.git synced 2025-09-10 04:53:45 +02:00

Update to 3.0.0

- Add fromJson factories for all objects
- Make some properties use getters, to reduce redundant data
- Make all objects comparable with the equatable package
- Make all objects immutable with a constant constructor
    as a result of making them comparable
This commit is contained in:
2022-05-08 02:06:45 +02:00
parent e37de1bdb1
commit a84cfe5c02
22 changed files with 1882 additions and 898 deletions

View File

@@ -53,10 +53,7 @@ Future<PhrasePageScrapeResult> scrapeForPhrase(String phrase) async {
final uri = uriForPhraseScrape(phrase);
final response = await http.get(uri);
if (response.statusCode == 404) {
return PhrasePageScrapeResult(
query: phrase,
found: false,
);
return PhrasePageScrapeResult(query: phrase);
}
return parsePhrasePageData(response.body, phrase);
}

View File

@@ -147,8 +147,7 @@ ExampleResults parseExamplePageData(String pageHtml, String phrase) {
final results = divs.map(_parseExampleDiv).toList();
return ExampleResults(
query: phrase,
found: results.isNotEmpty,
results: results,
uri: uriForExampleSearch(phrase).toString());
query: phrase,
results: results,
);
}

View File

@@ -14,7 +14,8 @@ Uri uriForKanjiSearch(String kanji) {
return Uri.parse('$scrapeBaseUri${Uri.encodeComponent(kanji)}%23kanji');
}
String _getUriForStrokeOrderDiagram(String kanji) {
/// Provides the URI for a stroke order diagram
String getUriForStrokeOrderDiagram(String kanji) {
return '$strokeOrderDiagramBaseUri${kanji.codeUnitAt(0)}_frames.png';
}
@@ -155,6 +156,7 @@ List<String> _getParts(String pageHtml) {
return result;
}
/// Provides the URI for a SVG image of the kanji
String _getSvgUri(String pageHtml) {
var svgRegex = RegExp('\/\/.*?.cloudfront.net\/.*?.svg');
@@ -167,7 +169,8 @@ String _getSvgUri(String pageHtml) {
return 'https:$regexResult';
}
String _getGifUri(String kanji) {
/// Provides the URI for a GIF of the kanji stroke order
String getGifUri(String kanji) {
final unicodeString = kanji.codeUnitAt(0).toRadixString(16);
final fileName = '$unicodeString.gif';
final animationUri =
@@ -212,32 +215,26 @@ String? _getJlptLevel(String pageHtml) {
/// Parses a jisho kanji search page to an object
KanjiResult parseKanjiPageData(String pageHtml, String kanji) {
final result = KanjiResult(
query: kanji,
found: _containsKanjiGlyph(pageHtml, kanji),
);
if (result.found == false) {
return result;
if (!_containsKanjiGlyph(pageHtml, kanji)) {
return KanjiResult(query: kanji);
}
result.data = KanjiResultData(
strokeCount: _getStrokeCount(pageHtml),
meaning: _getMeaning(pageHtml),
strokeOrderDiagramUri: _getUriForStrokeOrderDiagram(kanji),
strokeOrderSvgUri: _getSvgUri(pageHtml),
strokeOrderGifUri: _getGifUri(kanji),
uri: uriForKanjiSearch(kanji).toString(),
parts: _getParts(pageHtml),
taughtIn: _getTaughtIn(pageHtml),
jlptLevel: _getJlptLevel(pageHtml),
newspaperFrequencyRank: _getNewspaperFrequencyRank(pageHtml),
kunyomi: _getKunyomi(pageHtml),
onyomi: _getOnyomi(pageHtml),
kunyomiExamples: _getKunyomiExamples(pageHtml),
onyomiExamples: _getOnyomiExamples(pageHtml),
radical: _getRadical(pageHtml),
return KanjiResult(
query: kanji,
data: KanjiResultData(
kanji: kanji,
strokeCount: _getStrokeCount(pageHtml),
meaning: _getMeaning(pageHtml),
strokeOrderSvgUri: _getSvgUri(pageHtml),
parts: _getParts(pageHtml),
taughtIn: _getTaughtIn(pageHtml),
jlptLevel: _getJlptLevel(pageHtml),
newspaperFrequencyRank: _getNewspaperFrequencyRank(pageHtml),
kunyomi: _getKunyomi(pageHtml),
onyomi: _getOnyomi(pageHtml),
kunyomiExamples: _getKunyomiExamples(pageHtml),
onyomiExamples: _getOnyomiExamples(pageHtml),
radical: _getRadical(pageHtml),
),
);
return result;
}

File diff suppressed because it is too large Load Diff

View File

@@ -190,14 +190,11 @@ PhrasePageScrapeResult parsePhrasePageData(String pageHtml, String query) {
final document = parse(pageHtml);
if (!_resultWasFound(document)) {
return PhrasePageScrapeResult(found: false, query: query);
return PhrasePageScrapeResult(query: query);
}
final data = _getMeaningsOtherFormsAndNotes(query, document);
return PhrasePageScrapeResult(
found: true,
query: query,
data: data,
data: _getMeaningsOtherFormsAndNotes(query, document),
);
}