mirror of https://gitlab.com/bashrc2/epicyon
Treat event categories as hashtags
parent
b6e0159e58
commit
566f41c613
|
@ -26,6 +26,7 @@ from utils import date_utcnow
|
||||||
from utils import date_epoch
|
from utils import date_epoch
|
||||||
from utils import string_contains
|
from utils import string_contains
|
||||||
from delete import remove_old_hashtags
|
from delete import remove_old_hashtags
|
||||||
|
from maps import get_category_from_post
|
||||||
from maps import add_tag_map_links
|
from maps import add_tag_map_links
|
||||||
from maps import geocoords_from_map_link
|
from maps import geocoords_from_map_link
|
||||||
from maps import get_map_links_from_post_content
|
from maps import get_map_links_from_post_content
|
||||||
|
@ -370,11 +371,12 @@ def store_hash_tags(base_dir: str, nickname: str, domain: str,
|
||||||
return
|
return
|
||||||
if not has_object_dict(post_json_object):
|
if not has_object_dict(post_json_object):
|
||||||
return
|
return
|
||||||
if not post_json_object['object'].get('tag'):
|
object_tags = []
|
||||||
return
|
if post_json_object['object'].get('tag'):
|
||||||
|
object_tags = post_json_object['object']['tag']
|
||||||
if not post_json_object.get('id'):
|
if not post_json_object.get('id'):
|
||||||
return
|
return
|
||||||
if not isinstance(post_json_object['object']['tag'], list):
|
if not isinstance(object_tags, list):
|
||||||
return
|
return
|
||||||
tags_dir = base_dir + '/tags'
|
tags_dir = base_dir + '/tags'
|
||||||
|
|
||||||
|
@ -411,7 +413,7 @@ def store_hash_tags(base_dir: str, nickname: str, domain: str,
|
||||||
post_url = remove_id_ending(post_json_object['id'])
|
post_url = remove_id_ending(post_json_object['id'])
|
||||||
post_url = post_url.replace('/', '#')
|
post_url = post_url.replace('/', '#')
|
||||||
hashtags_ctr = 0
|
hashtags_ctr = 0
|
||||||
for tag in post_json_object['object']['tag']:
|
for tag in object_tags:
|
||||||
if not tag.get('type'):
|
if not tag.get('type'):
|
||||||
continue
|
continue
|
||||||
if not isinstance(tag['type'], str):
|
if not isinstance(tag['type'], str):
|
||||||
|
@ -471,6 +473,76 @@ def store_hash_tags(base_dir: str, nickname: str, domain: str,
|
||||||
set_hashtag_category(base_dir, tag_name,
|
set_hashtag_category(base_dir, tag_name,
|
||||||
category_str, False, False)
|
category_str, False, False)
|
||||||
|
|
||||||
|
# treat event categories as hashtags
|
||||||
|
event_category_str = get_category_from_post(post_json_object, translate)
|
||||||
|
if event_category_str:
|
||||||
|
if ', ' in event_category_str:
|
||||||
|
event_category_list = event_category_str.split(', ')
|
||||||
|
else:
|
||||||
|
event_category_list = [event_category_str]
|
||||||
|
for tag_name_text in event_category_list:
|
||||||
|
if '/' in tag_name_text:
|
||||||
|
tag_names_list = tag_name_text.split('/')
|
||||||
|
else:
|
||||||
|
tag_names_list = [tag_name_text]
|
||||||
|
for tag_name in tag_names_list:
|
||||||
|
tag_name = tag_name.strip().title().replace(' ', '')
|
||||||
|
if not valid_hash_tag(tag_name):
|
||||||
|
continue
|
||||||
|
tags_filename = tags_dir + '/' + tag_name + '.txt'
|
||||||
|
days_diff = date_utcnow() - date_epoch()
|
||||||
|
days_since_epoch = days_diff.days
|
||||||
|
tag_line = \
|
||||||
|
str(days_since_epoch) + ' ' + nickname + ' ' + \
|
||||||
|
post_url + '\n'
|
||||||
|
if map_links and published:
|
||||||
|
add_tag_map_links(tag_maps_dir, tag_name, map_links,
|
||||||
|
published, post_url)
|
||||||
|
hashtag_added = False
|
||||||
|
if not os.path.isfile(tags_filename):
|
||||||
|
try:
|
||||||
|
with open(tags_filename, 'w+',
|
||||||
|
encoding='utf-8') as fp_tags:
|
||||||
|
fp_tags.write(tag_line)
|
||||||
|
hashtag_added = True
|
||||||
|
except OSError:
|
||||||
|
print('EX: store_hash_tags 2 unable to write ' +
|
||||||
|
tags_filename)
|
||||||
|
else:
|
||||||
|
content = ''
|
||||||
|
try:
|
||||||
|
with open(tags_filename, 'r',
|
||||||
|
encoding='utf-8') as fp_tags:
|
||||||
|
content = fp_tags.read()
|
||||||
|
except OSError:
|
||||||
|
print('EX: store_hash_tags 2 failed to read ' +
|
||||||
|
tags_filename)
|
||||||
|
if post_url not in content:
|
||||||
|
content = tag_line + content
|
||||||
|
try:
|
||||||
|
with open(tags_filename, 'w+',
|
||||||
|
encoding='utf-8') as fp_tags2:
|
||||||
|
fp_tags2.write(content)
|
||||||
|
hashtag_added = True
|
||||||
|
except OSError as ex:
|
||||||
|
print('EX: Failed to write entry to tags file 2 ' +
|
||||||
|
tags_filename + ' ' + str(ex))
|
||||||
|
|
||||||
|
if hashtag_added:
|
||||||
|
hashtags_ctr += 1
|
||||||
|
|
||||||
|
# automatically assign a category to the tag if possible
|
||||||
|
category_filename = tags_dir + '/' + tag_name + '.category'
|
||||||
|
if not os.path.isfile(category_filename):
|
||||||
|
hashtag_categories = \
|
||||||
|
get_hashtag_categories(base_dir, False, None)
|
||||||
|
category_str = \
|
||||||
|
guess_hashtag_category(tag_name,
|
||||||
|
hashtag_categories, 6)
|
||||||
|
if category_str:
|
||||||
|
set_hashtag_category(base_dir, tag_name,
|
||||||
|
category_str, False, False)
|
||||||
|
|
||||||
# if some hashtags were found then recalculate the swarm
|
# if some hashtags were found then recalculate the swarm
|
||||||
# ready for later display
|
# ready for later display
|
||||||
if hashtags_ctr > 0:
|
if hashtags_ctr > 0:
|
||||||
|
|
Loading…
Reference in New Issue