From 3930fdeb17804384019b7c535c0054708953ca40 Mon Sep 17 00:00:00 2001 From: Kim Tae Kyeong Date: Fri, 18 Nov 2022 13:11:46 +0000 Subject: [PATCH 01/17] Update translations/ko.json --- translations/ko.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/translations/ko.json b/translations/ko.json index 65bfc8781..3713f90fe 100644 --- a/translations/ko.json +++ b/translations/ko.json @@ -4,8 +4,8 @@ "Your browser does not support the audio tag.": "이 브라우저는 오디오 태그를 지원하지 않습니다.", "Show profile": "프로필 표시", "Show options for this person": "이 사람에 대한 옵션 표시", - "Repeat this post": "이 포스트 반복", - "Undo the repeat": "반복 실행 취소", + "Repeat this post": "이 포스트 리포스트", + "Undo the repeat": "리포스트 실행 취소", "Like this post": "이 포스트 좋아요", "Undo the like": "좋아요 취소", "Delete this post": "이 포스트 삭제", @@ -514,8 +514,8 @@ "It is done": "완료했어요", "Time Zone": "시간대", "Show who liked this post": "이 포스트를 좋아한 사람 표시", - "Show who repeated this post": "이 포스트를 반복한 사람 표시", - "Repeated by": "반복한 사람", + "Show who repeated this post": "이 포스트를 리포스트한 사람 표시", + "Repeated by": "리포스트한 사람", "Register": "등록", "Web Bots Allowed": "웹 봇 허용", "Known Search Bots": "알려진 웹 검색 봇", @@ -596,8 +596,8 @@ "devops": "devops", "Reject spam accounts": "스팸 계정 거부", "User Manual": "사용자 매뉴얼", - "Allow announces": "공지 허용", - "Send": "보내다", + "Allow announces": "리포스트 허용", + "Send": "보내기", "Minimize all images": "모든 이미지 최소화", "Edit post": "게시물 수정" } From 1913ab2bbd9d259d06cd9c47cfed16fdc6300eb5 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 Nov 2022 10:46:25 +0000 Subject: [PATCH 02/17] Remove debug option from install instructions --- gemini/EN/install.gmi | 2 +- website/EN/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gemini/EN/install.gmi b/gemini/EN/install.gmi index d7f9103b6..857656d82 100644 --- a/gemini/EN/install.gmi +++ b/gemini/EN/install.gmi @@ -41,7 +41,7 @@ Paste the following: User=epicyon Group=epicyon WorkingDirectory=/opt/epicyon - ExecStart=/usr/bin/python3 /opt/epicyon/epicyon.py --port 443 --proxy 7156 --domain YOUR_DOMAIN --registration open --debug + ExecStart=/usr/bin/python3 /opt/epicyon/epicyon.py --port 443 --proxy 7156 --domain YOUR_DOMAIN --registration open Environment=USER=epicyon Environment=PYTHONUNBUFFERED=true Restart=always diff --git a/website/EN/index.html b/website/EN/index.html index 58ae522eb..1fd43973c 100644 --- a/website/EN/index.html +++ b/website/EN/index.html @@ -1391,7 +1391,7 @@ Ever feel like corporate social media is deliberately pressing your buttons or g User=epicyon
Group=epicyon
WorkingDirectory=/opt/epicyon
- ExecStart=/usr/bin/python3 /opt/epicyon/epicyon.py --port 443 --proxy 7156 --domain YOUR_DOMAIN --registration open --debug --log_login_failures
+ ExecStart=/usr/bin/python3 /opt/epicyon/epicyon.py --port 443 --proxy 7156 --domain YOUR_DOMAIN --registration open --log_login_failures
Environment=USER=epicyon
Environment=PYTHONUNBUFFERED=true
Restart=always
From cd27b6a2a3d0d4d27c0a319a02c5d9b27d5c9c47 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 Nov 2022 11:12:39 +0000 Subject: [PATCH 03/17] Remove debug option from manual --- manual/manual.epub | Bin 2034157 -> 2034146 bytes manual/manual.html | 2 +- manual/manual.md | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/manual/manual.epub b/manual/manual.epub index 456c01cb6cab4edd1e04e375ae77875c10d7bef2..db1e3a1c62764f35eb53d5addcbb70b637862af5 100644 GIT binary patch delta 6471 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 delta 6440 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 A&j0`b diff --git a/manual/manual.html b/manual/manual.html index 21ea2b56e..bcc5a4f4e 100644 --- a/manual/manual.html +++ b/manual/manual.html @@ -141,7 +141,7 @@ class="sourceCode bash">User=epicyon Group=epicyon WorkingDirectory=/opt/epicyon -ExecStart=/usr/bin/python3 /opt/epicyon/epicyon.py --port 443 --proxy 7156 --domain YOUR_DOMAIN --registration open --debug --log_login_failures +ExecStart=/usr/bin/python3 /opt/epicyon/epicyon.py --port 443 --proxy 7156 --domain YOUR_DOMAIN --registration open --log_login_failures Environment=USER=epicyon Environment=PYTHONUNBUFFERED=true Restart=always diff --git a/manual/manual.md b/manual/manual.md index 02cf62eeb..e74b4b906 100644 --- a/manual/manual.md +++ b/manual/manual.md @@ -89,7 +89,7 @@ Type=simple User=epicyon Group=epicyon WorkingDirectory=/opt/epicyon -ExecStart=/usr/bin/python3 /opt/epicyon/epicyon.py --port 443 --proxy 7156 --domain YOUR_DOMAIN --registration open --debug --log_login_failures +ExecStart=/usr/bin/python3 /opt/epicyon/epicyon.py --port 443 --proxy 7156 --domain YOUR_DOMAIN --registration open --log_login_failures Environment=USER=epicyon Environment=PYTHONUNBUFFERED=true Restart=always From 4e4532912bb09306ff290f4f23f77bdc1322fafd Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 Nov 2022 13:26:50 +0000 Subject: [PATCH 04/17] Dublin core metadata on individual posts --- webapp_post.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/webapp_post.py b/webapp_post.py index 7027f8905..3c04d5676 100644 --- a/webapp_post.py +++ b/webapp_post.py @@ -109,12 +109,21 @@ def _html_post_metadata_open_graph(domain: str, post_json_object: {}, """Returns html OpenGraph metadata for a post """ metadata = \ + " \n" + metadata += \ + " \n" + metadata += \ " \n" metadata += \ " \n" obj_json = post_json_object if has_object_dict(post_json_object): obj_json = post_json_object['object'] + if obj_json.get('id'): + metadata += " " if obj_json.get('attributedTo'): if isinstance(obj_json['attributedTo'], str): attrib = obj_json['attributedTo'] @@ -122,6 +131,10 @@ def _html_post_metadata_open_graph(domain: str, post_json_object: {}, if actor_nick: actor_domain, _ = get_domain_from_actor(attrib) actor_handle = actor_nick + '@' + actor_domain + metadata += \ + " \n" metadata += \ " \n" @@ -130,6 +143,9 @@ def _html_post_metadata_open_graph(domain: str, post_json_object: {}, " \n" if obj_json.get('published'): + metadata += " \n" metadata += \ " \n" @@ -2634,6 +2650,7 @@ def html_individual_post(recent_posts_cache: {}, max_recent_posts: int, system_language) header_str = html_header_with_external_style(css_filename, instance_title, metadata_str) + return header_str + post_str + html_footer() From d3355c2a792dacc97dc5fc61bca5fb738130d0c0 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 Nov 2022 13:31:47 +0000 Subject: [PATCH 05/17] eol --- webapp_post.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp_post.py b/webapp_post.py index 3c04d5676..41c711813 100644 --- a/webapp_post.py +++ b/webapp_post.py @@ -123,7 +123,7 @@ def _html_post_metadata_open_graph(domain: str, post_json_object: {}, obj_json = post_json_object['object'] if obj_json.get('id'): metadata += " " + "scheme=\"DCTERMS.URI\" content=\"" + obj_json['id'] + "\" />\n" if obj_json.get('attributedTo'): if isinstance(obj_json['attributedTo'], str): attrib = obj_json['attributedTo'] From fedc37bcfeb22d6d7c85ab2aa7e83157597be9f2 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 Nov 2022 13:33:32 +0000 Subject: [PATCH 06/17] Dublin core title in metadata for individual post --- webapp_post.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/webapp_post.py b/webapp_post.py index 41c711813..5903ec0e3 100644 --- a/webapp_post.py +++ b/webapp_post.py @@ -124,6 +124,9 @@ def _html_post_metadata_open_graph(domain: str, post_json_object: {}, if obj_json.get('id'): metadata += " \n" + if obj_json.get('summary'): + metadata += " \n" if obj_json.get('attributedTo'): if isinstance(obj_json['attributedTo'], str): attrib = obj_json['attributedTo'] From f86dffe4206c1f5a403a08e197f67f0ef6a0ad13 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 Nov 2022 13:37:55 +0000 Subject: [PATCH 07/17] Don't need backslashes --- webapp_post.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapp_post.py b/webapp_post.py index 5903ec0e3..f29f80ab1 100644 --- a/webapp_post.py +++ b/webapp_post.py @@ -123,10 +123,10 @@ def _html_post_metadata_open_graph(domain: str, post_json_object: {}, obj_json = post_json_object['object'] if obj_json.get('id'): metadata += " \n" + "scheme=\"DCTERMS.URI\" content=\"" + obj_json['id'] + "\">\n" if obj_json.get('summary'): metadata += " \n" + "content=\"" + obj_json['summary'] + "\">\n" if obj_json.get('attributedTo'): if isinstance(obj_json['attributedTo'], str): attrib = obj_json['attributedTo'] From c81aac52470994642ec47a5dd6f855743ee884d4 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 Nov 2022 16:26:15 +0000 Subject: [PATCH 08/17] first post on timeline --- daemon.py | 32 ++++++++++++++++++++++++++++++++ webapp_timeline.py | 10 +++++++++- 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/daemon.py b/daemon.py index 2708f8ff6..75aa0f517 100644 --- a/daemon.py +++ b/daemon.py @@ -12120,6 +12120,8 @@ class PubServer(BaseHTTPRequestHandler): page_number = 1 if '?page=' in nickname: page_number = nickname.split('?page=')[1] + if ';' in page_number: + page_number = page_number.split(';')[0] nickname = nickname.split('?page=')[0] if len(page_number) > 5: page_number = "1" @@ -12294,6 +12296,8 @@ class PubServer(BaseHTTPRequestHandler): page_number = 1 if '?page=' in nickname: page_number = nickname.split('?page=')[1] + if ';' in page_number: + page_number = page_number.split(';')[0] nickname = nickname.split('?page=')[0] if len(page_number) > 5: page_number = "1" @@ -12457,6 +12461,8 @@ class PubServer(BaseHTTPRequestHandler): page_number = 1 if '?page=' in nickname: page_number = nickname.split('?page=')[1] + if ';' in page_number: + page_number = page_number.split(';')[0] nickname = nickname.split('?page=')[0] if len(page_number) > 5: page_number = "1" @@ -12619,6 +12625,8 @@ class PubServer(BaseHTTPRequestHandler): page_number = 1 if '?page=' in nickname: page_number = nickname.split('?page=')[1] + if ';' in page_number: + page_number = page_number.split(';')[0] nickname = nickname.split('?page=')[0] if len(page_number) > 5: page_number = "1" @@ -12778,6 +12786,8 @@ class PubServer(BaseHTTPRequestHandler): page_number = 1 if '?page=' in nickname: page_number = nickname.split('?page=')[1] + if ';' in page_number: + page_number = page_number.split(';')[0] nickname = nickname.split('?page=')[0] if len(page_number) > 5: page_number = "1" @@ -12938,6 +12948,8 @@ class PubServer(BaseHTTPRequestHandler): page_number = 1 if '?page=' in nickname: page_number = nickname.split('?page=')[1] + if ';' in page_number: + page_number = page_number.split(';')[0] nickname = nickname.split('?page=')[0] if len(page_number) > 5: page_number = "1" @@ -13103,6 +13115,8 @@ class PubServer(BaseHTTPRequestHandler): page_number = 1 if '?page=' in nickname: page_number = nickname.split('?page=')[1] + if ';' in page_number: + page_number = page_number.split(';')[0] nickname = nickname.split('?page=')[0] if len(page_number) > 5: page_number = "1" @@ -13260,6 +13274,8 @@ class PubServer(BaseHTTPRequestHandler): page_number = 1 if '?page=' in nickname: page_number = nickname.split('?page=')[1] + if ';' in page_number: + page_number = page_number.split(';')[0] nickname = nickname.split('?page=')[0] if len(page_number) > 5: page_number = "1" @@ -13356,6 +13372,8 @@ class PubServer(BaseHTTPRequestHandler): page_number = 1 if '?page=' in nickname: page_number = nickname.split('?page=')[1] + if ';' in page_number: + page_number = page_number.split(';')[0] nickname = nickname.split('?page=')[0] if len(page_number) > 5: page_number = "1" @@ -13465,6 +13483,8 @@ class PubServer(BaseHTTPRequestHandler): page_number = 1 if '?page=' in nickname: page_number = nickname.split('?page=')[1] + if ';' in page_number: + page_number = page_number.split(';')[0] nickname = nickname.split('?page=')[0] if len(page_number) > 5: page_number = "1" @@ -13623,6 +13643,8 @@ class PubServer(BaseHTTPRequestHandler): page_number = 0 if '?page=' in nickname: page_number = nickname.split('?page=')[1] + if ';' in page_number: + page_number = page_number.split(';')[0] nickname = nickname.split('?page=')[0] if len(page_number) > 5: page_number = "1" @@ -13768,6 +13790,8 @@ class PubServer(BaseHTTPRequestHandler): page_number = 1 if '?page=' in nickname: page_number = nickname.split('?page=')[1] + if ';' in page_number: + page_number = page_number.split(';')[0] nickname = nickname.split('?page=')[0] if len(page_number) > 5: page_number = "1" @@ -13927,6 +13951,8 @@ class PubServer(BaseHTTPRequestHandler): SHARES_PER_PAGE) else: page_number_str = path.split('?page=')[1] + if ';' in page_number_str: + page_number_str = page_number_str.split(';')[0] if '#' in page_number_str: page_number_str = page_number_str.split('#')[0] if len(page_number_str) > 5: @@ -14062,6 +14088,8 @@ class PubServer(BaseHTTPRequestHandler): authorized, FOLLOWS_PER_PAGE) else: page_number_str = path.split('?page=')[1] + if ';' in page_number_str: + page_number_str = page_number_str.split(';')[0] if '#' in page_number_str: page_number_str = page_number_str.split('#')[0] if len(page_number_str) > 5: @@ -14200,6 +14228,8 @@ class PubServer(BaseHTTPRequestHandler): 'followers') else: page_number_str = path.split('?page=')[1] + if ';' in page_number_str: + page_number_str = page_number_str.split(';')[0] if '#' in page_number_str: page_number_str = page_number_str.split('#')[0] if len(page_number_str) > 5: @@ -14578,6 +14608,8 @@ class PubServer(BaseHTTPRequestHandler): nickname = nickname.split('?')[0] if '?page=' in path: page_number_str = path.split('?page=')[1] + if ';' in page_number_str: + page_number_str = page_number_str.split(';')[0] if '?' in page_number_str: page_number_str = page_number_str.split('?')[0] if '#' in page_number_str: diff --git a/webapp_timeline.py b/webapp_timeline.py index 645b2861c..e5a3511c6 100644 --- a/webapp_timeline.py +++ b/webapp_timeline.py @@ -948,6 +948,8 @@ def html_timeline(default_timeline: str, if box_name == 'inbox': use_cache_only = True + last_post_id = '' + if timeline_json: # if this is the media timeline then add an extra gallery container if box_name == 'tlmedia': @@ -981,6 +983,7 @@ def html_timeline(default_timeline: str, curr_tl_str, box_name, page_number) + last_post_id = post_id _log_timeline_timing(enable_timing_log, timeline_start_time, box_name, '10') @@ -1027,6 +1030,8 @@ def html_timeline(default_timeline: str, if curr_tl_str: if curr_tl_str not in tl_str: + last_post_id = \ + remove_id_ending(item['id']).replace('/', '#') item_ctr += 1 tl_str += text_mode_separator + curr_tl_str if separator_str: @@ -1041,11 +1046,14 @@ def html_timeline(default_timeline: str, # page down arrow if item_ctr > 0: tl_str += text_mode_separator + first_post = '' + if last_post_id: + first_post = ';firstpost=' + last_post_id tl_str += \ '
\n' + \ '
\n' + \ ' ' + \ ' Date: Sun, 20 Nov 2022 17:22:32 +0000 Subject: [PATCH 11/17] Search on first post --- posts.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/posts.py b/posts.py index 62120c257..5f98b4a5c 100644 --- a/posts.py +++ b/posts.py @@ -4051,9 +4051,11 @@ def _create_box_indexed(recent_posts_cache: {}, continue # Skip through any posts previous to the current page - if total_posts_count < int((page_number - 1) * items_per_page): - total_posts_count += 1 - continue + if not first_post_id: + if total_posts_count < \ + int((page_number - 1) * items_per_page): + total_posts_count += 1 + continue # if this is a full path then remove the directories if '/' in post_filename: From 8d60114d9ec6f9fbb047943a9494bfe02fc93e20 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 Nov 2022 17:28:25 +0000 Subject: [PATCH 12/17] Debug --- posts.py | 1 + 1 file changed, 1 insertion(+) diff --git a/posts.py b/posts.py index 5f98b4a5c..043ea14ec 100644 --- a/posts.py +++ b/posts.py @@ -4028,6 +4028,7 @@ def _create_box_indexed(recent_posts_cache: {}, if first_post_id: first_post_id = first_post_id.replace('--', '#') first_post_id = first_post_id.replace('/', '#') + print('DEBUG: first_post_id: ' + first_post_id) with open(index_filename, 'r', encoding='utf-8') as index_file: posts_added_to_timeline = 0 while posts_added_to_timeline < items_per_page: From f74cd56dc6e98740da383f223c7f9cb87ca0d4bd Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 Nov 2022 17:33:43 +0000 Subject: [PATCH 13/17] Debug --- posts.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/posts.py b/posts.py index 043ea14ec..c7357096b 100644 --- a/posts.py +++ b/posts.py @@ -4039,6 +4039,8 @@ def _create_box_indexed(recent_posts_cache: {}, if first_post_id: if first_post_id in post_filename: + print('DEBUG: first_post_id: filename ' + + post_filename) total_posts_count = \ int((page_number - 1) * items_per_page) continue From 047e371754a47dbdd5cc4e50b823ce9bf641f02f Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 Nov 2022 17:41:49 +0000 Subject: [PATCH 14/17] Finding the first post in the timeline --- posts.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/posts.py b/posts.py index c7357096b..e6168c90e 100644 --- a/posts.py +++ b/posts.py @@ -4028,7 +4028,6 @@ def _create_box_indexed(recent_posts_cache: {}, if first_post_id: first_post_id = first_post_id.replace('--', '#') first_post_id = first_post_id.replace('/', '#') - print('DEBUG: first_post_id: ' + first_post_id) with open(index_filename, 'r', encoding='utf-8') as index_file: posts_added_to_timeline = 0 while posts_added_to_timeline < items_per_page: @@ -4044,6 +4043,8 @@ def _create_box_indexed(recent_posts_cache: {}, total_posts_count = \ int((page_number - 1) * items_per_page) continue + if total_posts_count == 0: + continue # Has this post passed through the newswire voting stage? if not _passed_newswire_voting(newswire_votes_threshold, From 7f67f828c6412642c82a44c902ac5768003d9353 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 Nov 2022 17:47:27 +0000 Subject: [PATCH 15/17] Finding the first post in the timeline --- posts.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/posts.py b/posts.py index e6168c90e..6bf4057c8 100644 --- a/posts.py +++ b/posts.py @@ -4037,14 +4037,12 @@ def _create_box_indexed(recent_posts_cache: {}, break if first_post_id: - if first_post_id in post_filename: - print('DEBUG: first_post_id: filename ' + - post_filename) - total_posts_count = \ - int((page_number - 1) * items_per_page) + if first_post_id not in post_filename and \ + total_posts_count == 0: continue if total_posts_count == 0: - continue + total_posts_count = \ + int((page_number - 1) * items_per_page) # Has this post passed through the newswire voting stage? if not _passed_newswire_voting(newswire_votes_threshold, From 3e0255531a5bd67b5b10bfa9761ccd6049928e08 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 Nov 2022 17:49:13 +0000 Subject: [PATCH 16/17] Tidying --- posts.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/posts.py b/posts.py index 6bf4057c8..2e11378de 100644 --- a/posts.py +++ b/posts.py @@ -4036,13 +4036,11 @@ def _create_box_indexed(recent_posts_cache: {}, if not post_filename: break - if first_post_id: - if first_post_id not in post_filename and \ - total_posts_count == 0: + if first_post_id and total_posts_count == 0: + if first_post_id not in post_filename: continue - if total_posts_count == 0: - total_posts_count = \ - int((page_number - 1) * items_per_page) + total_posts_count = \ + int((page_number - 1) * items_per_page) # Has this post passed through the newswire voting stage? if not _passed_newswire_voting(newswire_votes_threshold, From 1c3caeed20fcc7f1f9e0a0ea38b1fa0df26cfbb7 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 20 Nov 2022 18:09:30 +0000 Subject: [PATCH 17/17] Additional timeline steadying --- blog.py | 6 +++--- person.py | 8 +++++--- posts.py | 16 ++++++++++------ 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/blog.py b/blog.py index 9818aa8d2..acf875153 100644 --- a/blog.py +++ b/blog.py @@ -542,7 +542,7 @@ def html_blog_page(authorized: bool, session, timeline_json = \ create_blogs_timeline(base_dir, nickname, domain, port, http_prefix, - no_of_items, False, page_number) + no_of_items, False, page_number, '') if not timeline_json: return blog_str + html_footer() @@ -631,7 +631,7 @@ def html_blog_page_rss2(base_dir: str, http_prefix: str, translate: {}, nickname, domain, port, http_prefix, no_of_items, False, - page_number) + page_number, '') if not timeline_json: if include_header: @@ -670,7 +670,7 @@ def html_blog_page_rss3(base_dir: str, http_prefix: str, timeline_json = \ create_blogs_timeline(base_dir, nickname, domain, port, http_prefix, - no_of_items, False, page_number) + no_of_items, False, page_number, '') if not timeline_json: return blog_rss3 diff --git a/person.py b/person.py index ca6d191b4..f821f009c 100644 --- a/person.py +++ b/person.py @@ -1036,7 +1036,8 @@ def person_box_json(recent_posts_cache: {}, return create_dm_timeline(recent_posts_cache, base_dir, nickname, domain, port, http_prefix, - no_of_items, header_only, page_number) + no_of_items, header_only, page_number, + first_post_id) if boxname in ('tlbookmarks', 'bookmarks'): return create_bookmarks_timeline(base_dir, nickname, domain, port, http_prefix, @@ -1047,7 +1048,8 @@ def person_box_json(recent_posts_cache: {}, base_dir, nickname, domain, port, http_prefix, no_of_items, header_only, - page_number) + page_number, + first_post_id) if boxname == 'tlmedia': return create_media_timeline(base_dir, nickname, domain, port, http_prefix, no_of_items, header_only, @@ -1064,7 +1066,7 @@ def person_box_json(recent_posts_cache: {}, if boxname == 'tlblogs': return create_blogs_timeline(base_dir, nickname, domain, port, http_prefix, no_of_items, header_only, - page_number) + page_number, first_post_id) if boxname == 'outbox': return create_outbox(base_dir, nickname, domain, port, http_prefix, diff --git a/posts.py b/posts.py index 2e11378de..29ecd3261 100644 --- a/posts.py +++ b/posts.py @@ -3612,31 +3612,35 @@ def create_bookmarks_timeline(base_dir: str, def create_dm_timeline(recent_posts_cache: {}, base_dir: str, nickname: str, domain: str, port: int, http_prefix: str, items_per_page: int, - header_only: bool, page_number: int) -> {}: + header_only: bool, page_number: int, + first_post_id: str) -> {}: return _create_box_indexed(recent_posts_cache, base_dir, 'dm', nickname, domain, port, http_prefix, items_per_page, - header_only, True, 0, False, 0, page_number) + header_only, True, 0, False, 0, page_number, + first_post_id) def create_replies_timeline(recent_posts_cache: {}, base_dir: str, nickname: str, domain: str, port: int, http_prefix: str, items_per_page: int, - header_only: bool, page_number: int) -> {}: + header_only: bool, page_number: int, + first_post_id: str) -> {}: return _create_box_indexed(recent_posts_cache, base_dir, 'tlreplies', nickname, domain, port, http_prefix, items_per_page, header_only, True, - 0, False, 0, page_number) + 0, False, 0, page_number, first_post_id) def create_blogs_timeline(base_dir: str, nickname: str, domain: str, port: int, http_prefix: str, items_per_page: int, - header_only: bool, page_number: int) -> {}: + header_only: bool, page_number: int, + first_post_id: str) -> {}: return _create_box_indexed({}, base_dir, 'tlblogs', nickname, domain, port, http_prefix, items_per_page, header_only, True, - 0, False, 0, page_number) + 0, False, 0, page_number, first_post_id) def create_features_timeline(base_dir: str,