diff --git a/dlibrary/dlibrary.py b/dlibrary/dlibrary.py index 88823e7..096a623 100755 --- a/dlibrary/dlibrary.py +++ b/dlibrary/dlibrary.py @@ -7,7 +7,6 @@ from io import BytesIO from pathlib import Path import os from os.path import relpath, splitext -import random import re import readline import shutil @@ -92,8 +91,6 @@ MULTIPART_RAR_TAIL_REGEX = re.compile(r'^(.+)\.part0*([^1]|[^0].+)\.rar$', re.I) PDF_REFERENCED_IMAGE_REGEX = re.compile(r'(^|(?<=\s))/(?P\S+)\s+Do($|(?=\s))') PDF_INLINE_IMAGE_REGEX = re.compile(r'(^|\s)(BI|ID|EI)($|\s)') -SUGGESTED_WORKS_COUNT = 10 - debug_mode = False def debug(s): if debug_mode: @@ -1015,23 +1012,18 @@ def similarity(a, b): memoized_similarities[(shorter, longer)] = result return result -def top(items, n, key, overflow=0): +def top(items, n, key): winners = [] for item in items: score = key(item) - if len(winners) < n or score >= winners[-1][1]: + if len(winners) < n or score > winners[-1][1]: for i in range(len(winners) + 1): - if i == len(winners) or score >= winners[i][1]: + if i == len(winners) or score > winners[i][1]: winners.insert(i, (item, score)) break - while len(winners) > n and winners[-1][1] < winners[n-1][1]: + while len(winners) > n: winners.pop() - - # shuffle followed by stable sort to randomly shuffle within each score tier - random.shuffle(winners) - winners.sort(key=lambda w: w[1], reverse=True) - - return [item for (item, score) in winners[:n+overflow]] + return [item for (item, score) in winners] def generate(args): jenv = Environment( @@ -1088,7 +1080,7 @@ def generate(args): if work['series'] and work['series'] == other_work['series']: return -1 return similarity(work['title'], other_work['title']) - suggested = top(works, SUGGESTED_WORKS_COUNT, suggestion_priority) + suggested = top(works, 6, suggestion_priority) work_dir = site_dir / 'works' / work['id'] viewer_dir = work_dir / 'view' diff --git a/dlibrary/static/dlibrary.css b/dlibrary/static/dlibrary.css index 52f3696..00c1846 100644 --- a/dlibrary/static/dlibrary.css +++ b/dlibrary/static/dlibrary.css @@ -139,19 +139,19 @@ body { .work-info td, .work-info th { vertical-align: top; - padding-top: 5px; } -.work-info tr.bubbles th { - padding-top: 14px; +.work-info td { + padding-top: 5px; } .work-info th { text-align: right; padding-right: 10px; + padding-top: 10px; } -.bubbles a { +.work-info-link { background: #333; padding: 5px; border-radius: 5px; @@ -159,10 +159,6 @@ body { margin-bottom: 5px; } -.work-info table { - margin-bottom: 15px; -} - #suggested-subheader { text-align: center; } diff --git a/dlibrary/templates/work.html b/dlibrary/templates/work.html index e3aae67..e622c0b 100644 --- a/dlibrary/templates/work.html +++ b/dlibrary/templates/work.html @@ -12,33 +12,29 @@
{% if work['circle'] %} - + - + {% endif %} {% if work['authors'] %} - + - + {% endif %} {% if work['tags'] %} - + - + {% endif %} {% if work['series'] %} - + - + {% endif %} - - - -
Circle{{ work['circle'] }}{{ work['circle'] }}
Authors{% for author in work['authors'] %}{{ author }} {% endfor %}{% for author in work['authors'] %}{{ author }} {% endfor %}
Tags{% for tag in work['tags'] %}{{ tag }} {% endfor %}{% for tag in work['tags'] %}{{ tag }} {% endfor %}
Series{{ work['series'] }}{{ work['series'] }}
Pages{{ work['images'] | length }}
{% if work['description'] %} {{ work['description'] }}