Skip to content

Commit

Permalink
Merge pull request #18 from BA-OST-Index/dev
Browse files Browse the repository at this point in the history
2024/03/17 bugfix & storyinfo auto & bond favor rank
  • Loading branch information
sctop authored Mar 17, 2024
2 parents 5cbc633 + 2e84230 commit b67c9af
Show file tree
Hide file tree
Showing 19 changed files with 266 additions and 100 deletions.
1 change: 1 addition & 0 deletions _main.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ def get_jinja_env(filters: dict = None, globals: dict = None):
environment.filters["js_html_string_safe"] = JinjaTool.js_html_string_safe
environment.filters["page_minify_html"] = JinjaTool.page_minify_html
environment.filters["is_list"] = lambda obj: isinstance(obj, list)
environment.filters["is_dict"] = lambda obj: isinstance(obj, dict)
# Globals - JinjaTool
environment.globals["get_current_utc"] = JinjaTool.get_current_utc
environment.globals["get_init_time"] = JinjaTool.get_init_time
Expand Down
36 changes: 32 additions & 4 deletions main_tool.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,15 +184,23 @@ def read_file(filepath):

@staticmethod
@lru_cache()
def arg_check(arg):
def arg_check(arg, strict=False):
"""
:param arg:
:param strict: 严格模式,为True时只有未定义才会返回False
:return:
"""
# test if is undefined
if hasattr(arg, "_undefined_exception"):
exc = getattr(arg, "_undefined_exception")
if exc is UndefinedError:
return False
# other common cases
if arg == "" or arg == 0 or arg == "False":
return False

if not strict:
# other common cases
if arg == "" or arg == 0 or arg == "False":
return False

return True

Expand Down Expand Up @@ -292,6 +300,11 @@ def py_tooltip_background(background, instance_id, instance_type, extra_data):
story = story[0]
story_parts = []

if story["filetype_sub"] == 1:
# auto generated story
all_story.append([story, []])
continue

for (index, part) in enumerate(story["part"], 1):
add_part, seg_index = 0, -1
is_by_comm, is_narrative = False, False
Expand Down Expand Up @@ -345,6 +358,11 @@ def py_tooltip_track(track, instance_id, instance_type, extra_data):
story = story[0]
related_parts = []

if story["filetype_sub"] == 1:
# auto generated story
all_story.append([story, []])
continue

for (index, part) in enumerate(story["part"], 1):
seg_index = -1
is_by_comm, is_narrative = False, False
Expand Down Expand Up @@ -412,6 +430,12 @@ def py_tooltip_character(character, instance_id, instance_type, extra_data):
for story in outer_data["data_story"].values():
story = story[0]
related_parts = []

if story["filetype_sub"] == 1:
# auto generated story
all_story.append([story, []])
continue

for (index, part) in enumerate(story["part"], 1):
seg_index = -1
is_by_comm, is_narrative = False, False
Expand Down Expand Up @@ -505,6 +529,10 @@ def py_output_usedby_story(data_story: dict, instance_uuid, instance_key):

value = value[0]

if value["filetype_sub"] == 1:
all_story_with_filetype[_curr_filetype].append([value, []])
continue

# appearedAt snippet
if instance_uuid:
related_parts = []
Expand Down
17 changes: 9 additions & 8 deletions main_tool_2.py
Original file line number Diff line number Diff line change
Expand Up @@ -151,14 +151,15 @@ def _generate_story(self):
self.add_render_result_by_lang("storyinfo", tooltip_id, "story", story=content)

# storypart (part/source)
for (no, data) in enumerate(content["part"], 1):
tooltip_id = self.get_tooltip("storypart", content["instance_id"], no)
self.add_render_result_by_lang("storypart", tooltip_id, "story",
story=content, story_part=data)

tooltip_id = self.get_tooltip("storypart_source", content["instance_id"], no)
self.add_render_result_by_lang("storypart_source", tooltip_id, "story",
part=data)
if content["filetype_sub"] == 0:
for (no, data) in enumerate(content["part"], 1):
tooltip_id = self.get_tooltip("storypart", content["instance_id"], no)
self.add_render_result_by_lang("storypart", tooltip_id, "story",
story=content, story_part=data)

tooltip_id = self.get_tooltip("storypart_source", content["instance_id"], no)
self.add_render_result_by_lang("storypart_source", tooltip_id, "story",
part=data)

def _generate_album(self):
# album (album)
Expand Down
4 changes: 3 additions & 1 deletion page/en/_index.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{% extends "template/en/base.html" %}
{% block title %}Welcome {% endblock title %}

{% set curr_lang = "en" %}

{#
{% block toc %}
Contents:
Expand Down Expand Up @@ -28,7 +30,7 @@ <h1>Welcome, Sensei!</h1>
<h4 style="margin-top: 0;">Quick links:</h4>
<ul class="homepage-list">
<li>Main Story (<a href="/{{ curr_lang }}/main/story/main/">Main</a><a href="/{{ curr_lang }}/main/story/side/">Club</a><a href="/{{ curr_lang }}/main/story/short/">Short</a><a href="/{{ curr_lang }}/main/story/other/">Other</a>)</li>
<li>Main Battle (<a href="/{{ curr_lang }}/main/battle/main/">Main</a><a href="/{{ curr_lang }}/main/battle/total_assault/">Total Assault</a><a href="/{{ curr_lang }}/main/battle/">Other</a>)</li>
<li>Main Battle (<a href="/{{ curr_lang }}/main/battle/main/">Main</a><a href="/{{ curr_lang }}/main/battle/total_assault/">Total Assault</a><a href="/{{ curr_lang }}/main/battle/">Other</a><a href="/{{ curr_lang }}/event/"><b>Event</b></a>)</li>
<li>Tracks (<a href="/{{ curr_lang }}/track/ost/">OST</a><a href="/{{ curr_lang }}/track/short/">Short Animation</a><a href="/{{ curr_lang }}/track/other/">Other</a>)</li>
<li>Characters (<a href="/{{ curr_lang }}/character/npc/">NPC</a><a href="/{{ curr_lang }}/character/student">Student</a>)</li>
<li><a href="/{{ curr_lang }}/background/">Background Image</a></li>
Expand Down
4 changes: 2 additions & 2 deletions page/en/character_all.html
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ <h2>Students</h2>
<li>
<a href="/en/character/student/{{ curr.student.name.path_name|lower }}/">
<img src="{{ get_static('images/student/icon/' + curr.student.image.collection_texture + '.webp') }}" class="icon-stu"/>{{ curr.student.name.name.en }}<span lang="jp" class="char-lang-jp">&nbsp;/&nbsp;{{ curr.student.name.name.jp }}</span>
{% if curr.student.bond_track %}<a href="/en/{{ '/'.join(curr.student.bond_track.namespace) }}.html" class="badge-stu-bond-track">{{ generate_tag_badge("momo", curr.student.bond_track.no|string + ". " + curr.student.bond_track.name.realname.en) }}</a>{% endif %}
{% if curr.student.bond_track %}<a href="/en/{{ '/'.join(curr.student.bond_track.namespace) }}.html" class="badge-stu-bond-track">{{ generate_tag_badge("momo", curr.student.bond_track.no|string + ". " + curr.student.bond_track.name.realname.en + "|Rank " + curr.student.bond_rank|string) }}</a>{% endif %}
</a>
<br/>
<div class="stu-list-desc">
Expand All @@ -62,7 +62,7 @@ <h2>Students</h2>
<li>
<a href="/en/character/student/{{ curr.name.path_name|lower }}/">
<img src="{{ get_static('images/student/icon/' + curr.image.collection_texture + '.webp') }}" class="icon-stu"/>{{ curr.name.name.en }}<span lang="jp" class="char-lang-jp">&nbsp;/&nbsp;{{ curr.name.name.jp }})</span>
{% if curr.bond_track %}<a href="/en/{{ '/'.join(curr.bond_track.namespace) }}.html" class="badge-stu-bond-track">{{ generate_tag_badge("momo", curr.bond_track.no|string + ". " + curr.bond_track.name.realname.en) }}</a>{% endif %}
{% if curr.bond_track %}<a href="/en/{{ '/'.join(curr.bond_track.namespace) }}.html" class="badge-stu-bond-track">{{ generate_tag_badge("momo", curr.bond_track.no|string + ". " + curr.bond_track.name.realname.en + "|Rank " + curr.bond_rank|string) }}</a>{% endif %}
</a>
<br/>
<div class="stu-list-desc">
Expand Down
41 changes: 6 additions & 35 deletions page/en/story.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@
{% from "template/en/_macro.html" import get_ordinal_number, filetype_to_name, generate_track_anchor %}
{% from "template/base/_macro.html" import get_story_text_color_css, get_storypart_text_color_css, generate_popup_for_tooltip_anchor %}

<h1>Story/[{{ _story_no_string }}] <span class="{{ get_story_text_color_css(story) }}">{{ story.name.en }}</span></h1>
<h1>Story/[{{ _story_no_string }}] <span class="{{ get_story_text_color_css(story) }}">{{ story.name.en }}</span>{% if story.filetype == 15 %}&nbsp;<p class="student-lobby-unlock student-lobby-unlock-title">{{ story.pos.favor_rank }}</p>{% endif %}</h1>
{% include "template/en/infobox/story.html" %}
{% if story.filetype == 11 %}
<p><b>{{ story.name.en }}</b> is the {{ get_ordinal_number(story.pos.segment) }} story of Chapter {{ story.pos.chapter }}, Volume {{ story.pos.volume }} of the main story.</p>
<p><b>{{ story.name.en }}</b> is the {{ get_ordinal_number(story.pos.segment) }} story of Chapter {{ story.pos.chapter }}, Volume {{ story.pos.volume }} of the main story (min favor rank {{ story.pos.favor_rank }}).</p>
{% elif story.filetype == 15 %}
<p><b>{{ story.name.en }}</b> is the {{ get_ordinal_number(story.pos.no) }} story of the bond story of the student <img src="{{ get_static('images/student/icon/' + story.student.image.collection_texture + '.webp') }}" class="icon-stu"/>{{ story.student.name.personal_name.en }}.</p>
{% elif story.filetype == 14 %}
Expand Down Expand Up @@ -49,38 +49,9 @@ <h2>Story Reference</h2>
<p>The following lists all the available sources for referencing this story.</p>
{{ output_storyinfo_source(story.source) }}

<h2>Story Parts</h2>
{% set story_part_tooltip_data = {} %}
{% for part in story.part %}
{% set part_index = loop.index %}

{# 检测有没有source #}
{% set enable_source = False %}
{% if part.source.en|length != 0 or part.source.zh_tw|length != 0 or part.source.zh_cn_cn|length != 0 or part.source.zh_cn_jp|length != 0 %}
{% set enable_source = True %}
{% set tooltip_id = generate_tooltip_id("storypart_source", story.instance_id, loop.index) %}
{# {% do story_part_tooltip_data.update({tooltip_id: tooltip_storypart_source(part)}) %}#}
{% endif %}

<h3 class="{{ get_storypart_text_color_css(part) }}" id="story-part-{{ loop.index }}">{{ loop.index }}. {{ part.name.en }} {% if enable_source %}{{ generate_popup_for_tooltip_anchor(tooltip_id) }}{% endif %}</h3>

{% for segment in part.data %}
<ul style="margin: 0;">
<li id="story-part-{{ part_index }}-seg-{{ loop.index }}">{{ segment.desc.en }}</li>
<h4>Characters</h4>
{% if part.is_battle %}
{{ output_usedby_character(segment, "story-" + story.instance_id, story.instance_id, "story", "True", part.battle_leader_pos) }}
{% else %}
{{ output_usedby_character(segment, "story-" + story.instance_id, story.instance_id, "story") }}
{% endif %}
<h4>Tracks</h4>
{{ output_usedby_track_list(segment.track, "story-" + story.instance_id, "story", story.instance_id) }}
<h4>Backgrounds</h4>
{{ output_usedby_background_list(segment.background, "story-" + story.instance_id, story.instance_id, "story") }}
</ul>
{% endfor %}
{% if story.filetype_sub == 0 %}
{% include "page/en/story/normal.html" %}
{% else %}
<p>Nothing to show!</p>
{% endfor %}
{{ tooltip_add_data_js(story_part_tooltip_data) }}
{% include "page/en/story/auto.html" %}
{% endif %}
{% endblock %}
45 changes: 45 additions & 0 deletions page/en/story/auto.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
{% from "template/en/_macro_page.html" import output_usedby_track, output_usedby_background %}
{% set actual_data = story.part %}

<h2>Story Data</h2>
<p>This story's data is <b>auto-generated by scripts</b> and no manual tuning involved. Below are part of the data relationships we manage to obtain.</p>
<h3>All Data</h3>
{% set actual_data_all = actual_data.all %}
<h4>Characters</h4>
{{ output_usedby_character(actual_data_all.character, "story-" + story.instance_id, story.instance_id, "story") }}
<h4>Tracks</h4>
{{ output_usedby_track(actual_data_all.track, "story-" + story.instance_id, "story", story.instance_id) }}
<h4>Backgrounds</h4>
{{ output_usedby_background(actual_data_all.background, "story-" + story.instance_id, story.instance_id, "story") }}
<h3>Inter-data Relationships</h3>
<p>Below shows the inter-data relationships. Be reminded that we're using internal "instance_id" for display; the data shown is for quick reference only.</p>
<h4>Tracks</h4>
<ul>
{% for track_id in actual_data.all.track.keys() %}
<li><code>{{ track_id }}</code></li>
<ul>
<li>Backgrounds:{% for bg_id in actual_data.track_to_bg[track_id] %}<code>{{ bg_id }}</code>、{% endfor %}</li>
<li>Characters:{% for char_id in actual_data.track_to_char[track_id] %}<code>{{ char_id }}</code>、{% endfor %}</li>
</ul>
{% endfor %}
</ul>
<h4>Characters</h4>
<ul>
{% for char_id in actual_data.all.character.keys() %}
<li><code>{{ char_id }}</code></li>
<ul>
<li>Backgrounds:{% for bg_id in actual_data.char_to_bg[char_id] %}<code>{{ bg_id }}</code>、{% endfor %}</li>
<li>Tracks:{% for track_id in actual_data.char_to_track[char_id] %}<code>{{ track_id }}</code>、{% endfor %}</li>
</ul>
{% endfor %}
</ul>
<h4>Backgrounds</h4>
<ul>
{% for bg_id in actual_data.all.background.keys() %}
<li><code>{{ bg_id }}</code></li>
<ul>
<li>Characters:{% for char_id in actual_data.bg_to_char[bg_id] %}<code>{{ char_id }}</code>、{% endfor %}</li>
<li>Tracks:{% for track_id in actual_data.bg_to_track[bg_id] %}<code>{{ track_id }}</code>、{% endfor %}</li>
</ul>
{% endfor %}
</ul>
34 changes: 34 additions & 0 deletions page/en/story/normal.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<h2>Story Parts</h2>
{% set story_part_tooltip_data = {} %}
{% for part in story.part %}
{% set part_index = loop.index %}

{# 检测有没有source #}
{% set enable_source = False %}
{% if part.source.en|length != 0 or part.source.zh_tw|length != 0 or part.source.zh_cn_cn|length != 0 or part.source.zh_cn_jp|length != 0 %}
{% set enable_source = True %}
{% set tooltip_id = generate_tooltip_id("storypart_source", story.instance_id, loop.index) %}
{# {% do story_part_tooltip_data.update({tooltip_id: tooltip_storypart_source(part)}) %}#}
{% endif %}

<h3 class="{{ get_storypart_text_color_css(part) }}" id="story-part-{{ loop.index }}">{{ loop.index }}. {{ part.name.en }} {% if enable_source %}{{ generate_popup_for_tooltip_anchor(tooltip_id) }}{% endif %}</h3>

{% for segment in part.data %}
<ul style="margin: 0;">
<li id="story-part-{{ part_index }}-seg-{{ loop.index }}">{{ segment.desc.en }}</li>
<h4>Characters</h4>
{% if part.is_battle %}
{{ output_usedby_character(segment, "story-" + story.instance_id, story.instance_id, "story", "True", part.battle_leader_pos) }}
{% else %}
{{ output_usedby_character(segment, "story-" + story.instance_id, story.instance_id, "story") }}
{% endif %}
<h4>Tracks</h4>
{{ output_usedby_track_list(segment.track, "story-" + story.instance_id, "story", story.instance_id) }}
<h4>Backgrounds</h4>
{{ output_usedby_background_list(segment.background, "story-" + story.instance_id, story.instance_id, "story") }}
</ul>
{% endfor %}
{% else %}
<p>Nothing to show!</p>
{% endfor %}
{{ tooltip_add_data_js(story_part_tooltip_data) }}
2 changes: 1 addition & 1 deletion page/zh_cn/_index.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ <h1>欢迎您,老师!</h1>
<hr style="margin-bottom: 1em;"/>
<h4 style="margin-top: 0;">站内快捷链接</h4>
<ul class="homepage-list">
<li>主要故事 (<a href="/zh_cn/main/story/main/">主线</a><a href="/zh_cn/main/story/side/">支线</a><a href="/zh_cn/main/story/short/">短篇</a><a href="/zh_cn/main/story/other/">其它</a>)</li>
<li>主要故事 (<a href="/zh_cn/main/story/main/">主线</a><a href="/zh_cn/main/story/side/">支线</a><a href="/zh_cn/main/story/short/">短篇</a><a href="/zh_cn/main/story/other/">其它</a><a href="/zh_cn/event/"><b>活动</b></a>)</li>
<li>主要战斗 (<a href="/zh_cn/main/battle/main/">主线</a><a href="/zh_cn/main/battle/total_assault/">总力战</a><a href="/zh_cn/main/battle/">其它</a>)</li>
<li>歌曲 (<a href="/zh_cn/track/ost/">OST</a><a href="/zh_cn/track/short/">短篇动画</a><a href="/zh_cn/track/other/">其它</a>)</li>
<li>人物 (<a href="/zh_cn/character/npc/">NPC</a><a href="/zh_cn/character/student">学生</a>)</li>
Expand Down
4 changes: 2 additions & 2 deletions page/zh_cn/character_all.html
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ <h2>学生</h2>
<li>
<a href="/zh_cn/character/student/{{ curr.student.name.path_name|lower }}/">
<img src="{{ get_static('images/student/icon/' + curr.student.image.collection_texture + '.webp') }}" class="icon-stu"/>{{ auto_zhcn_gen(curr.student.name.name) }}<span lang="en" class="char-lang-en">&nbsp;/&nbsp;{{ curr.student.name.name.en }}</span><span lang="jp" class="char-lang-jp">&nbsp;/&nbsp;{{ curr.student.name.name.jp }}</span>
{% if curr.student.bond_track %}<a href="/en/{{ '/'.join(curr.student.bond_track.namespace) }}.html" class="badge-stu-bond-track">{{ generate_tag_badge("momo", curr.student.bond_track.no|string + ". " + curr.student.bond_track.name.realname.en) }}</a>{% endif %}
{% if curr.student.bond_track %}<a href="/zh_cn/{{ '/'.join(curr.student.bond_track.namespace) }}.html" class="badge-stu-bond-track">{{ generate_tag_badge("momo", curr.student.bond_track.no|string + ". " + curr.student.bond_track.name.realname.en + "|等级" + curr.student.bond_rank|string) }}</a>{% endif %}
</a>
<br/>
<div class="stu-list-desc">
Expand All @@ -65,7 +65,7 @@ <h2>学生</h2>
<li>
<a href="/zh_cn/character/student/{{ curr.name.path_name|lower }}/">
<img src="{{ get_static('images/student/icon/' + curr.image.collection_texture + '.webp') }}" class="icon-stu"/>{{ auto_zhcn_gen(curr.name.name) }}<span lang="en" class="char-lang-en">&nbsp;/&nbsp;{{ curr.name.name.en }}</span><span lang="jp" class="char-lang-jp">&nbsp;/&nbsp;{{ curr.name.name.jp }}</span>
{% if curr.bond_track %}<a href="/en/{{ '/'.join(curr.bond_track.namespace) }}.html" class="badge-stu-bond-track">{{ generate_tag_badge("momo", curr.bond_track.no|string + ". " + curr.bond_track.name.realname.en) }}</a>{% endif %}
{% if curr.bond_track %}<a href="/zh_cn/{{ '/'.join(curr.bond_track.namespace) }}.html" class="badge-stu-bond-track">{{ generate_tag_badge("momo", curr.bond_track.no|string + ". " + curr.bond_track.name.realname.en + "|等级" + curr.bond_rank|string) }}</a>{% endif %}
</a>
<br/>
<div class="stu-list-desc">
Expand Down
Loading

0 comments on commit b67c9af

Please sign in to comment.