diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f8142b..f9088c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.2 + +- Fix example README + ## 1.0.1 - Reformatted code diff --git a/example/README.md b/example/README.md index 5d42d6b..1d53b03 100644 --- a/example/README.md +++ b/example/README.md @@ -2,4 +2,160 @@ Examples for use of the api functions, and for parsing. -These examples are also available on the main readme. \ No newline at end of file +These examples are also available on the main readme. + +## API searching/scraping + +These are usage examples of the api library, providing results directly. + +### Word/phrase search (provided by official Jisho API) + +This returns the same results as the official [Jisho.org](https://jisho.org/) API. See the discussion of that [here](https://jisho.org/forum/54fefc1f6e73340b1f160000-is-there-any-kind-of-search-api). + +```dart +import 'package:unofficial_jisho_api/api.dart' as jisho; + +void main() async { + jisho.searchForPhrase('日').then((result) { + ... + ... + ... + }); +} +``` + +### Kanji search + +```dart +import 'dart:convert' show jsonEncode; +import 'package:unofficial_jisho_api/api.dart' as jisho; + +void main() async { + await jisho.searchForKanji('語').then((result) { + print('Found: ${result.found}'); + print('Taught in: ${result.taughtIn}'); + print('JLPT level: ${result.jlptLevel}'); + print('Newspaper frequency rank: ${result.newspaperFrequencyRank}'); + print('Stroke count: ${result.strokeCount}'); + print('Meaning: ${result.meaning}'); + print('Kunyomi: ${jsonEncode(result.kunyomi)}'); + print('Kunyomi example: ${jsonEncode(result.kunyomiExamples[0])}'); + print('Onyomi: ${jsonEncode(result.onyomi)}'); + print('Onyomi example: ${jsonEncode(result.onyomiExamples[0])}'); + print('Radical: ${jsonEncode(result.radical)}'); + print('Parts: ${jsonEncode(result.parts)}'); + print('Stroke order diagram: ${result.strokeOrderDiagramUri}'); + print('Stroke order SVG: ${result.strokeOrderSvgUri}'); + print('Stroke order GIF: ${result.strokeOrderGifUri}'); + print('Jisho Uri: ${result.uri}'); + }); +} +``` + +### Example search + +```dart +import 'dart:convert' show jsonEncode; +import 'package:unofficial_jisho_api/api.dart' as jisho; + +void main() async { + await jisho.searchForExamples('日').then((result) { + print('Jisho Uri: ${result.uri}'); + print(''); + + for (var i = 0; i < 3; i++) { + var example = result.results[i]; + print(example.kanji); + print(example.kana); + print(example.english); + print(jsonEncode(example.pieces)); + print(''); + } + }); +} +``` + +### Word/phrase scraping + +This scrapes the word/phrase page on Jisho.org. This can get you some data that the official API doesn't have, such as JLPT level and part-of-speech. The official API (`searchForPhrase`) should be preferred if it has the data you need. + +```dart +import 'dart:convert'; +import 'package:unofficial_jisho_api/api.dart' as jisho; +final JsonEncoder encoder = JsonEncoder.withIndent(' '); + +void main() async { + await jisho.scrapeForPhrase('谷').then((data) { + print(encoder.convert(data)); + }); +} +``` + +## Parsing + +You can provide the HTML responses from Jisho yourself. This can be useful if you need to use a CORS proxy or something. You can do whatever you need to do to get the HTML and then provide it to this module's parsing functions. For example: + +### Parse kanji page HTML + +```dart +import 'dart:convert'; +import 'package:http/http.dart' as http; +import 'package:unofficial_jisho_api/parser.dart' as jisho_parser; + +final JsonEncoder encoder = JsonEncoder.withIndent(' '); + +const String searchKanji = '車'; +final String searchURI = jisho_parser.uriForKanjiSearch(searchKanji); + +void main() async { + await http.get(searchURI).then((result) { + final parsedResult = jisho_parser.parseKanjiPageData(result.body, searchKanji); + print('JLPT level: ${parsedResult.jlptLevel}'); + print('Stroke count: ${parsedResult.strokeCount}'); + print('Meaning: ${parsedResult.meaning}'); + }); +} +``` + +### Parse example page HTML + +```dart +import 'dart:convert'; +import 'package:http/http.dart' as http; +import 'package:unofficial_jisho_api/parser.dart' as jisho_parser; + +final JsonEncoder encoder = JsonEncoder.withIndent(' '); + +const String searchExample = '保護者'; +final String searchURI = jisho_parser.uriForExampleSearch(searchExample); + +void main() async { + await http.get(searchURI).then((result) { + final parsedResult = jisho_parser.parseExamplePageData(result.body, searchExample); + print('English: ${parsedResult.results[0].english}'); + print('Kanji ${parsedResult.results[0].kanji}'); + print('Kana: ${parsedResult.results[0].kana}'); + }); +} +``` + +### Parse phrase page HTML + +```dart +import 'dart:convert'; +import 'package:http/http.dart' as http; +import 'package:unofficial_jisho_api/parser.dart' as jisho_parser; + +final JsonEncoder encoder = JsonEncoder.withIndent(' '); + +const String searchExample = '保護者'; +final String searchURI = jisho_parser.uriForPhraseScrape(searchExample); + +void main() async { + + await http.get(searchURI).then((result) { + final parsedResult = jisho_parser.parsePhrasePageData(result.body, searchExample); + print(encoder.convert(parsedResult)); + }); +} +``` \ No newline at end of file diff --git a/pubspec.yaml b/pubspec.yaml index a8e9836..19f9bc5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: unofficial_jisho_api -version: 1.0.1 +version: 1.0.2 description: An unofficial api for searching and scraping the japanese dictionary Jisho.org homepage: https://github.com/h7x4ABk3g/unofficial_jisho_api_dart/