Skip to content

Commit

Permalink
(artist) Support series/character
Browse files Browse the repository at this point in the history
  • Loading branch information
violet-dev committed Sep 21, 2020
1 parent 23a5c9f commit 0020c20
Show file tree
Hide file tree
Showing 11 changed files with 129 additions and 24 deletions.
2 changes: 2 additions & 0 deletions assets/locale/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@
"iartists": "Artists",
"igroups": "Groups",
"iuploader": "Uploaders",
"iseries": "Series",
"icharacter": "Characters",
"score": "Score",
"more": "More...",

Expand Down
2 changes: 2 additions & 0 deletions assets/locale/eo.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@
"iartists": "Artistas",
"igroups": "Grupos",
"iuploader": "Uploaders",
"iseries": "Serie",
"icharacter": "Personajes",
"score": "Puntuación",
"more": "Más...",

Expand Down
2 changes: 2 additions & 0 deletions assets/locale/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@
"iartists": "Artisti",
"igroups": "Gruppi",
"iuploader": "Uploaders",
"iseries": "Series",
"icharacter": "Personaggi",
"score": "Punteggio",
"more": "Dettagli...",

Expand Down
2 changes: 2 additions & 0 deletions assets/locale/ja.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@
"iartists": "アーティスト",
"igroups": "グループ",
"iuploader": "アップローダー",
"iseries": "シリーズ",
"icharacter": "キャラクター",
"score": "スコア",
"more": "もっと",

Expand Down
2 changes: 2 additions & 0 deletions assets/locale/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@
"iartists": "작가 목록",
"igroups": "그룹 목록",
"iuploader": "업로더 목록",
"iseries": "시리즈 목록",
"icharacter": "캐릭터 목록",
"score": "점수",
"more": "더보기",

Expand Down
2 changes: 2 additions & 0 deletions assets/locale/zh_Hans.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@
"iartists": "作者",
"igroups": "团体",
"iuploader": "上传者",
"iseries": "系列",
"icharacter": "字符",
"score": "评分",
"more": "更多...",

Expand Down
2 changes: 2 additions & 0 deletions assets/locale/zh_Hant.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@
"iartists": "Artists",
"igroups": "Groups",
"iuploader": "Uploaders",
"iseries": "Series",
"icharacter": "Characters",
"score": "Score",
"more": "More...",

Expand Down
21 changes: 19 additions & 2 deletions lib/component/hitomi/indexs.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ class HitomiIndexs {
static Map<String, dynamic> tagArtist;
static Map<String, dynamic> tagGroup;
static Map<String, dynamic> tagUploader;
static Map<String, dynamic> tagSeries;
static Map<String, dynamic> tagCharacter;
// Series, <Character, Count>
// Map<String, Map<String, int>>
static Map<String, dynamic> characterSeries;
Expand All @@ -35,8 +37,14 @@ class HitomiIndexs {
tagIndex = jsonDecode(await path4.readAsString());
final path5 = File('${directory.path}/data/tag-uploader.json');
tagUploader = jsonDecode(await path5.readAsString());
final path6 = File('${directory.path}/data/character-series.json');
characterSeries = jsonDecode(await path6.readAsString());
try {
final path6 = File('${directory.path}/data/tag-series.json');
tagSeries = jsonDecode(await path6.readAsString());
final path7 = File('${directory.path}/data/tag-character.json');
tagCharacter = jsonDecode(await path7.readAsString());
final path8 = File('${directory.path}/data/character-series.json');
characterSeries = jsonDecode(await path8.readAsString());
} catch (e) {}
}

static List<Tuple2<String, double>> _calculateSimilars(
Expand Down Expand Up @@ -70,6 +78,15 @@ class HitomiIndexs {
return _calculateSimilars(tagUploader, uploader);
}

static List<Tuple2<String, double>> calculateSimilarSeries(String series) {
return _calculateSimilars(tagSeries, series);
}

static List<Tuple2<String, double>> calculateSimilarCharacter(
String character) {
return _calculateSimilars(tagCharacter, character);
}

static List<Tuple2<String, double>> calculateSimilarCharacterSeries(
String series) {
return _calculateSimilars(characterSeries, series);
Expand Down
6 changes: 5 additions & 1 deletion lib/pages/article_info/article_info_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -690,7 +690,9 @@ class _Chip extends StatelessWidget {
onPressed: () async {
if ((group == 'groups' ||
group == 'artists' ||
group == 'uploader') &&
group == 'uploader' ||
group == 'series' ||
group == 'character') &&
name.toLowerCase() != 'n/a') {
Navigator.of(context).push(PageRouteBuilder(
// opaque: false,
Expand Down Expand Up @@ -719,6 +721,8 @@ class _Chip extends StatelessWidget {
pageBuilder: (_, __, ___) => ArtistInfoPage(
isGroup: group == 'groups',
isUploader: group == 'uploader',
isCharacter: group == 'character',
isSeries: group == 'series',
artist: name,
),
));
Expand Down
91 changes: 73 additions & 18 deletions lib/pages/artist_info/artist_info_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,16 @@ class ArtistInfoPage extends StatefulWidget {
final String artist;
final bool isGroup;
final bool isUploader;
final bool isSeries;
final bool isCharacter;

ArtistInfoPage({this.artist, this.isGroup, this.isUploader});
ArtistInfoPage({
@required this.artist,
this.isGroup = false,
this.isUploader = false,
this.isSeries = false,
this.isCharacter = false,
});

@override
_ArtistInfoPageState createState() => _ArtistInfoPageState();
Expand Down Expand Up @@ -60,7 +68,13 @@ class _ArtistInfoPageState extends State<ArtistInfoPage> {
void initState() {
super.initState();
Future.delayed(Duration(milliseconds: 100)).then((value) async {
cc = await query([widget.artist, widget.isGroup, widget.isUploader]);
cc = await query([
widget.artist,
widget.isGroup,
widget.isUploader,
widget.isSeries,
widget.isCharacter
]);

//
// Title based article clustering
Expand Down Expand Up @@ -110,6 +124,10 @@ class _ArtistInfoPageState extends State<ArtistInfoPage> {
similars = HitomiIndexs.calculateSimilarGroups(widget.artist);
else if (widget.isUploader)
similars = HitomiIndexs.calculateSimilarUploaders(widget.artist);
else if (widget.isSeries)
similars = HitomiIndexs.calculateSimilarSeries(widget.artist);
else if (widget.isCharacter)
similars = HitomiIndexs.calculateSimilarCharacter(widget.artist);
else
similars = HitomiIndexs.calculateSimilarArtists(widget.artist);

Expand All @@ -119,7 +137,11 @@ class _ArtistInfoPageState extends State<ArtistInfoPage> {
prefix = 'artist:';
if (widget.isGroup)
prefix = 'group:';
else if (widget.isUploader) prefix = 'uploader:';
else if (widget.isUploader)
prefix = 'uploader:';
else if (widget.isSeries)
prefix = 'series:';
else if (widget.isCharacter) prefix = 'character:';

var unescape = new HtmlUnescape();
for (int i = 0; i < similars.length; i++) {
Expand Down Expand Up @@ -188,16 +210,23 @@ class _ArtistInfoPageState extends State<ArtistInfoPage> {
var artist = obj[0] as String;
var isGroup = obj[1] as bool;
var isUploader = obj[2] as bool;

var query = HitomiManager.translate2query(
(isGroup ? 'group:' : isUploader ? 'uploader:' : 'artist:') +
'${artist.replaceAll(' ', '_')} ' +
Settings.includeTags +
' ' +
Settings.excludeTags
.where((e) => e.trim() != '')
.map((e) => '-$e')
.join(' '));
var isSeries = obj[3] as bool;
var isCharacter = obj[4] as bool;

var query = HitomiManager.translate2query((isGroup
? 'group:'
: isUploader
? 'uploader:'
: isSeries
? 'series:'
: isCharacter ? 'character:' : 'artist:') +
'${artist.replaceAll(' ', '_')} ' +
Settings.includeTags +
' ' +
Settings.excludeTags
.where((e) => e.trim() != '')
.map((e) => '-$e')
.join(' '));

// DateTime dt = DateTime.now();
QueryManager qm = await QueryManager.query(query + ' ORDER BY Id DESC');
Expand Down Expand Up @@ -245,7 +274,11 @@ class _ArtistInfoPageState extends State<ArtistInfoPage> {
? 'Groups: '
: widget.isUploader
? 'Uploader: '
: 'Artist: ') +
: widget.isSeries
? 'Series: '
: widget.isCharacter
? 'Character: '
: 'Artist: ') +
widget.artist,
style: TextStyle(
fontSize: 20,
Expand All @@ -264,7 +297,11 @@ class _ArtistInfoPageState extends State<ArtistInfoPage> {
? 'Groups: '
: widget.isUploader
? 'Uploader: '
: 'Artist: ') +
: widget.isSeries
? 'Series: '
: widget.isCharacter
? 'Character: '
: 'Artist: ') +
widget.artist,
style: TextStyle(
fontSize: 20, fontWeight: FontWeight.bold)),
Expand Down Expand Up @@ -405,7 +442,11 @@ class _ArtistInfoPageState extends State<ArtistInfoPage> {
? 'Groups: '
: widget.isUploader
? 'Uploader: '
: 'Artist: ') +
: widget.isSeries
? 'Series: '
: widget.isCharacter
? 'Character: '
: 'Artist: ') +
widget.artist)))
]),
),
Expand All @@ -429,7 +470,13 @@ class _ArtistInfoPageState extends State<ArtistInfoPage> {
? Translations.of(context).trans('igroups')
: widget.isUploader
? Translations.of(context).trans('iuploader')
: Translations.of(context).trans('iartists'))),
: widget.isSeries
? Translations.of(context).trans('iseries')
: widget.isCharacter
? Translations.of(context)
.trans('icharacter')
: Translations.of(context)
.trans('iartists'))),
),
expanded: similarArea(),
),
Expand Down Expand Up @@ -559,6 +606,8 @@ class _ArtistInfoPageState extends State<ArtistInfoPage> {
similarsAll: similarsAll,
isGroup: widget.isGroup,
isUploader: widget.isUploader,
isCharacter: widget.isCharacter,
isSeries: widget.isSeries,
));
}
var e = similars[index];
Expand All @@ -585,6 +634,8 @@ class _ArtistInfoPageState extends State<ArtistInfoPage> {
pageBuilder: (_, __, ___) => ArtistInfoPage(
isGroup: widget.isGroup,
isUploader: widget.isUploader,
isCharacter: widget.isCharacter,
isSeries: widget.isSeries,
artist: e.item1,
),
));
Expand All @@ -611,7 +662,11 @@ class _ArtistInfoPageState extends State<ArtistInfoPage> {
? 'group'
: widget.isUploader
? 'uploader'
: 'artist',
: widget.isSeries
? 'series'
: widget.isCharacter
? 'character'
: 'artist',
e.item1)
.toString() +
')',
Expand Down
21 changes: 18 additions & 3 deletions lib/pages/artist_info/similar_list_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,18 @@ class SimilarListPage extends StatelessWidget {
final String prefix;
final bool isGroup;
final bool isUploader;
final bool isSeries;
final bool isCharacter;
final List<Tuple2<String, double>> similarsAll;
SimilarListPage(
{this.prefix, this.similarsAll, this.isGroup, this.isUploader});

SimilarListPage({
this.prefix,
this.similarsAll,
this.isGroup,
this.isUploader,
this.isSeries,
this.isCharacter,
});

Future<List<QueryResult>> _future(String e) async {
var unescape = new HtmlUnescape();
Expand Down Expand Up @@ -150,6 +159,8 @@ class SimilarListPage extends StatelessWidget {
ArtistInfoPage(
isGroup: isGroup,
isUploader: isUploader,
isCharacter: isCharacter,
isSeries: isSeries,
artist: e.item1,
),
));
Expand Down Expand Up @@ -177,7 +188,11 @@ class SimilarListPage extends StatelessWidget {
? 'group'
: isUploader
? 'uploader'
: 'artist',
: isSeries
? 'series'
: isCharacter
? 'character'
: 'artist',
e.item1)
.toString() +
')',
Expand Down

0 comments on commit 0020c20

Please sign in to comment.