From 3f2bf8624db44a1e8884d810a8f5b27461134ded Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 6 Nov 2024 14:03:30 +0000 Subject: [PATCH] Check queue length before pop --- content.py | 136 +++++++++++++++++++++++++++-------------------------- inbox.py | 12 +++-- 2 files changed, 77 insertions(+), 71 deletions(-) diff --git a/content.py b/content.py index ba675bd53..dd2a58757 100644 --- a/content.py +++ b/content.py @@ -474,74 +474,76 @@ def replace_emoji_from_tags(session, base_dir: str, if not tag_url: continue icon_name = tag_url.split('/')[-1] - if len(icon_name) > 1: - if icon_name[0].isdigit() and '.' in icon_name: - icon_name = icon_name.split('.')[0] - # see https://unicode.org/ - # emoji/charts/full-emoji-list.html - if '-' not in icon_name: - # a single code - replaced = False - try: - replace_char = chr(int("0x" + icon_name, 16)) - if not screen_readable: - replace_char = \ - '' - content = \ - content.replace(tag_item['name'], - replace_char) - replaced = True - except BaseException: - if debug: - print('EX: replace_emoji_from_tags 1 ' + - 'no conversion of ' + - str(icon_name) + ' to chr ' + - tag_item['name'] + ' ' + - tag_url) - if not replaced: - _save_custom_emoji(session, base_dir, - tag_item['name'], - tag_url, debug) - _update_common_emoji(base_dir, icon_name) - else: - _update_common_emoji(base_dir, - "0x" + icon_name) - else: - # sequence of codes - icon_codes = icon_name.split('-') + if len(icon_name) <= 1: + continue + if not (icon_name[0].isdigit() and '.' in icon_name): + continue + icon_name = icon_name.split('.')[0] + # see https://unicode.org/ + # emoji/charts/full-emoji-list.html + if '-' not in icon_name: + # a single code + replaced = False + try: + replace_char = chr(int("0x" + icon_name, 16)) + if not screen_readable: + replace_char = \ + '' + content = \ + content.replace(tag_item['name'], + replace_char) + replaced = True + except BaseException: + if debug: + print('EX: replace_emoji_from_tags 1 ' + + 'no conversion of ' + + str(icon_name) + ' to chr ' + + tag_item['name'] + ' ' + + tag_url) + if not replaced: + _save_custom_emoji(session, base_dir, + tag_item['name'], + tag_url, debug) + _update_common_emoji(base_dir, icon_name) + else: + _update_common_emoji(base_dir, + "0x" + icon_name) + else: + # sequence of codes + icon_codes = icon_name.split('-') + icon_code_sequence = '' + for icode in icon_codes: + replaced = False + try: + icon_code_sequence += chr(int("0x" + + icode, 16)) + replaced = True + except BaseException: icon_code_sequence = '' - for icode in icon_codes: - replaced = False - try: - icon_code_sequence += chr(int("0x" + - icode, 16)) - replaced = True - except BaseException: - icon_code_sequence = '' - if debug: - print('EX: ' + - 'replace_emoji_from_tags 2 ' + - 'no conversion of ' + - str(icode) + ' to chr ' + - tag_item['name'] + ' ' + - tag_url) - if not replaced: - _save_custom_emoji(session, base_dir, - tag_item['name'], - tag_url, debug) - _update_common_emoji(base_dir, - icon_name) - else: - _update_common_emoji(base_dir, - "0x" + icon_name) - if icon_code_sequence: - if not screen_readable: - icon_code_sequence = \ - '' - content = content.replace(tag_item['name'], - icon_code_sequence) + if debug: + print('EX: ' + + 'replace_emoji_from_tags 2 ' + + 'no conversion of ' + + str(icode) + ' to chr ' + + tag_item['name'] + ' ' + + tag_url) + if not replaced: + _save_custom_emoji(session, base_dir, + tag_item['name'], + tag_url, debug) + _update_common_emoji(base_dir, + icon_name) + else: + _update_common_emoji(base_dir, + "0x" + icon_name) + if icon_code_sequence: + if not screen_readable: + icon_code_sequence = \ + '' + content = content.replace(tag_item['name'], + icon_code_sequence) html_class = 'emoji' if message_type == 'post header': diff --git a/inbox.py b/inbox.py index 3d6858a6d..c0f0022a8 100644 --- a/inbox.py +++ b/inbox.py @@ -2662,7 +2662,8 @@ def _inbox_quota_exceeded(queue: {}, queue_filename: str, except OSError: print('EX: _inbox_quota_exceeded unable to delete 1 ' + str(queue_filename)) - queue.pop(0) + if len(queue) > 0: + queue.pop(0) return True quotas_daily['domains'][post_domain] += 1 else: @@ -2684,7 +2685,8 @@ def _inbox_quota_exceeded(queue: {}, queue_filename: str, except OSError: print('EX: _inbox_quota_exceeded unable to delete 2 ' + str(queue_filename)) - queue.pop(0) + if len(queue) > 0: + queue.pop(0) return True quotas_per_min['domains'][post_domain] += 1 else: @@ -2705,7 +2707,8 @@ def _inbox_quota_exceeded(queue: {}, queue_filename: str, except OSError: print('EX: _inbox_quota_exceeded unable to delete 3 ' + str(queue_filename)) - queue.pop(0) + if len(queue) > 0: + queue.pop(0) return True quotas_daily['accounts'][post_handle] += 1 else: @@ -2727,7 +2730,8 @@ def _inbox_quota_exceeded(queue: {}, queue_filename: str, except OSError: print('EX: _inbox_quota_exceeded unable to delete 4 ' + str(queue_filename)) - queue.pop(0) + if len(queue) > 0: + queue.pop(0) return True quotas_per_min['accounts'][post_handle] += 1 else: