| 
									
										
										
										
											2024-03-03 13:02:50 +00:00
										 |  |  | __filename__ = "daemon_get_reactions.py" | 
					
						
							|  |  |  | __author__ = "Bob Mottram" | 
					
						
							|  |  |  | __license__ = "AGPL3+" | 
					
						
							| 
									
										
										
										
											2024-12-22 23:37:30 +00:00
										 |  |  | __version__ = "1.6.0" | 
					
						
							| 
									
										
										
										
											2024-03-03 13:02:50 +00:00
										 |  |  | __maintainer__ = "Bob Mottram" | 
					
						
							|  |  |  | __email__ = "bob@libreserver.org" | 
					
						
							|  |  |  | __status__ = "Production" | 
					
						
							| 
									
										
										
										
											2024-12-25 14:31:14 +00:00
										 |  |  | __module_group__ = "Daemon GET" | 
					
						
							| 
									
										
										
										
											2024-03-03 13:02:50 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | from httpcodes import write2 | 
					
						
							|  |  |  | from httpheaders import redirect_headers | 
					
						
							|  |  |  | from httpheaders import set_headers | 
					
						
							|  |  |  | from utils import load_json | 
					
						
							|  |  |  | from utils import locate_post | 
					
						
							|  |  |  | from utils import get_nickname_from_actor | 
					
						
							|  |  |  | from utils import get_instance_url | 
					
						
							|  |  |  | from webapp_post import html_emoji_reaction_picker | 
					
						
							|  |  |  | from fitnessFunctions import fitness_performance | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def reaction_picker2(self, calling_domain: str, path: str, | 
					
						
							|  |  |  |                      base_dir: str, http_prefix: str, | 
					
						
							| 
									
										
										
										
											2024-04-12 09:56:07 +00:00
										 |  |  |                      domain: str, domain_full: str, port: int, | 
					
						
							| 
									
										
										
										
											2024-03-03 13:02:50 +00:00
										 |  |  |                      getreq_start_time, cookie: str, | 
					
						
							| 
									
										
										
										
											2024-04-12 09:56:07 +00:00
										 |  |  |                      debug: str, curr_session, | 
					
						
							|  |  |  |                      onion_domain: str, i2p_domain: str, | 
					
						
							|  |  |  |                      recent_posts_cache: {}, | 
					
						
							|  |  |  |                      max_recent_posts: int, | 
					
						
							|  |  |  |                      translate: {}, | 
					
						
							|  |  |  |                      cached_webfingers: {}, | 
					
						
							|  |  |  |                      person_cache: {}, | 
					
						
							|  |  |  |                      project_version: str, | 
					
						
							|  |  |  |                      yt_replace_domain: str, | 
					
						
							|  |  |  |                      twitter_replacement_domain: str, | 
					
						
							|  |  |  |                      show_published_date_only: bool, | 
					
						
							|  |  |  |                      peertube_instances: [], | 
					
						
							|  |  |  |                      allow_local_network_access: bool, | 
					
						
							|  |  |  |                      theme_name: str, | 
					
						
							|  |  |  |                      system_language: str, | 
					
						
							|  |  |  |                      max_like_count: int, | 
					
						
							|  |  |  |                      signing_priv_key_pem: str, | 
					
						
							|  |  |  |                      cw_lists: [], | 
					
						
							|  |  |  |                      lists_enabled: {}, | 
					
						
							|  |  |  |                      dogwhistles: {}, | 
					
						
							| 
									
										
										
										
											2024-04-22 22:53:34 +00:00
										 |  |  |                      min_images_for_accounts: [], | 
					
						
							| 
									
										
										
										
											2024-04-12 09:56:07 +00:00
										 |  |  |                      buy_sites: [], | 
					
						
							| 
									
										
										
										
											2024-04-26 12:19:53 +00:00
										 |  |  |                      auto_cw_cache: {}, | 
					
						
							|  |  |  |                      account_timezone: {}, | 
					
						
							| 
									
										
										
										
											2024-04-28 09:54:22 +00:00
										 |  |  |                      bold_reading_nicknames: {}, | 
					
						
							| 
									
										
										
										
											2024-12-17 13:50:48 +00:00
										 |  |  |                      fitness: {}, | 
					
						
							| 
									
										
										
										
											2025-01-20 17:55:29 +00:00
										 |  |  |                      mitm_servers: [], | 
					
						
							|  |  |  |                      instance_software: {}) -> None: | 
					
						
							| 
									
										
										
										
											2024-03-03 13:02:50 +00:00
										 |  |  |     """Press the emoji reaction picker icon at the bottom of the post
 | 
					
						
							|  |  |  |     """
 | 
					
						
							|  |  |  |     page_number = 1 | 
					
						
							|  |  |  |     reaction_url = path.split('?selreact=')[1] | 
					
						
							|  |  |  |     if '?' in reaction_url: | 
					
						
							|  |  |  |         reaction_url = reaction_url.split('?')[0] | 
					
						
							|  |  |  |     timeline_bookmark = '' | 
					
						
							|  |  |  |     if '?bm=' in path: | 
					
						
							|  |  |  |         timeline_bookmark = path.split('?bm=')[1] | 
					
						
							|  |  |  |         if '?' in timeline_bookmark: | 
					
						
							|  |  |  |             timeline_bookmark = timeline_bookmark.split('?')[0] | 
					
						
							|  |  |  |         timeline_bookmark = '#' + timeline_bookmark | 
					
						
							|  |  |  |     actor = path.split('?selreact=')[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 len(page_number_str) > 5: | 
					
						
							|  |  |  |             page_number_str = "1" | 
					
						
							|  |  |  |         if page_number_str.isdigit(): | 
					
						
							|  |  |  |             page_number = int(page_number_str) | 
					
						
							|  |  |  |     timeline_str = 'inbox' | 
					
						
							|  |  |  |     if '?tl=' in path: | 
					
						
							|  |  |  |         timeline_str = path.split('?tl=')[1] | 
					
						
							|  |  |  |         if '?' in timeline_str: | 
					
						
							|  |  |  |             timeline_str = timeline_str.split('?')[0] | 
					
						
							|  |  |  |     self.post_to_nickname = get_nickname_from_actor(actor) | 
					
						
							|  |  |  |     if not self.post_to_nickname: | 
					
						
							|  |  |  |         print('WARN: unable to find nickname in ' + actor) | 
					
						
							|  |  |  |         actor_absolute = \ | 
					
						
							|  |  |  |             get_instance_url(calling_domain, | 
					
						
							| 
									
										
										
										
											2024-04-08 14:00:47 +00:00
										 |  |  |                              http_prefix, | 
					
						
							| 
									
										
										
										
											2024-04-12 09:56:07 +00:00
										 |  |  |                              domain_full, | 
					
						
							|  |  |  |                              onion_domain, | 
					
						
							|  |  |  |                              i2p_domain) + \ | 
					
						
							| 
									
										
										
										
											2024-03-03 13:02:50 +00:00
										 |  |  |             actor | 
					
						
							|  |  |  |         actor_path_str = \ | 
					
						
							|  |  |  |             actor_absolute + '/' + timeline_str + \ | 
					
						
							|  |  |  |             '?page=' + str(page_number) + timeline_bookmark | 
					
						
							| 
									
										
										
										
											2024-04-16 13:47:21 +00:00
										 |  |  |         redirect_headers(self, actor_path_str, cookie, calling_domain, 303) | 
					
						
							| 
									
										
										
										
											2024-03-03 13:02:50 +00:00
										 |  |  |         return | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     post_json_object = None | 
					
						
							|  |  |  |     reaction_post_filename = \ | 
					
						
							|  |  |  |         locate_post(base_dir, | 
					
						
							|  |  |  |                     self.post_to_nickname, domain, reaction_url) | 
					
						
							|  |  |  |     if reaction_post_filename: | 
					
						
							|  |  |  |         post_json_object = load_json(reaction_post_filename) | 
					
						
							|  |  |  |     if not reaction_post_filename or not post_json_object: | 
					
						
							|  |  |  |         print('WARN: unable to locate reaction post ' + reaction_url) | 
					
						
							|  |  |  |         actor_absolute = \ | 
					
						
							|  |  |  |             get_instance_url(calling_domain, | 
					
						
							| 
									
										
										
										
											2024-04-08 14:00:47 +00:00
										 |  |  |                              http_prefix, | 
					
						
							| 
									
										
										
										
											2024-04-12 09:56:07 +00:00
										 |  |  |                              domain_full, | 
					
						
							|  |  |  |                              onion_domain, | 
					
						
							|  |  |  |                              i2p_domain) + \ | 
					
						
							| 
									
										
										
										
											2024-03-03 13:02:50 +00:00
										 |  |  |             actor | 
					
						
							|  |  |  |         actor_path_str = \ | 
					
						
							|  |  |  |             actor_absolute + '/' + timeline_str + \ | 
					
						
							|  |  |  |             '?page=' + str(page_number) + timeline_bookmark | 
					
						
							| 
									
										
										
										
											2024-04-16 13:47:21 +00:00
										 |  |  |         redirect_headers(self, actor_path_str, cookie, calling_domain, 303) | 
					
						
							| 
									
										
										
										
											2024-03-03 13:02:50 +00:00
										 |  |  |         return | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     timezone = None | 
					
						
							| 
									
										
										
										
											2024-04-26 12:19:53 +00:00
										 |  |  |     if account_timezone.get(self.post_to_nickname): | 
					
						
							|  |  |  |         timezone = account_timezone.get(self.post_to_nickname) | 
					
						
							| 
									
										
										
										
											2024-03-03 13:02:50 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     bold_reading = False | 
					
						
							| 
									
										
										
										
											2024-04-26 12:19:53 +00:00
										 |  |  |     if bold_reading_nicknames.get(self.post_to_nickname): | 
					
						
							| 
									
										
										
										
											2024-03-03 13:02:50 +00:00
										 |  |  |         bold_reading = True | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     msg = \ | 
					
						
							| 
									
										
										
										
											2024-04-12 09:56:07 +00:00
										 |  |  |         html_emoji_reaction_picker(recent_posts_cache, | 
					
						
							|  |  |  |                                    max_recent_posts, | 
					
						
							|  |  |  |                                    translate, | 
					
						
							| 
									
										
										
										
											2024-03-03 13:02:50 +00:00
										 |  |  |                                    base_dir, | 
					
						
							|  |  |  |                                    curr_session, | 
					
						
							| 
									
										
										
										
											2024-04-12 09:56:07 +00:00
										 |  |  |                                    cached_webfingers, | 
					
						
							|  |  |  |                                    person_cache, | 
					
						
							| 
									
										
										
										
											2024-03-03 13:02:50 +00:00
										 |  |  |                                    self.post_to_nickname, | 
					
						
							|  |  |  |                                    domain, port, post_json_object, | 
					
						
							|  |  |  |                                    http_prefix, | 
					
						
							| 
									
										
										
										
											2024-04-12 09:56:07 +00:00
										 |  |  |                                    project_version, | 
					
						
							|  |  |  |                                    yt_replace_domain, | 
					
						
							|  |  |  |                                    twitter_replacement_domain, | 
					
						
							|  |  |  |                                    show_published_date_only, | 
					
						
							|  |  |  |                                    peertube_instances, | 
					
						
							|  |  |  |                                    allow_local_network_access, | 
					
						
							|  |  |  |                                    theme_name, | 
					
						
							|  |  |  |                                    system_language, | 
					
						
							|  |  |  |                                    max_like_count, | 
					
						
							|  |  |  |                                    signing_priv_key_pem, | 
					
						
							|  |  |  |                                    cw_lists, | 
					
						
							|  |  |  |                                    lists_enabled, | 
					
						
							| 
									
										
										
										
											2024-03-03 13:02:50 +00:00
										 |  |  |                                    timeline_str, page_number, | 
					
						
							|  |  |  |                                    timezone, bold_reading, | 
					
						
							| 
									
										
										
										
											2024-04-12 09:56:07 +00:00
										 |  |  |                                    dogwhistles, | 
					
						
							|  |  |  |                                    min_images_for_accounts, | 
					
						
							|  |  |  |                                    buy_sites, | 
					
						
							| 
									
										
										
										
											2024-12-17 13:50:48 +00:00
										 |  |  |                                    auto_cw_cache, | 
					
						
							| 
									
										
										
										
											2025-01-20 17:55:29 +00:00
										 |  |  |                                    mitm_servers, | 
					
						
							|  |  |  |                                    instance_software) | 
					
						
							| 
									
										
										
										
											2024-03-03 13:02:50 +00:00
										 |  |  |     msg = msg.encode('utf-8') | 
					
						
							|  |  |  |     msglen = len(msg) | 
					
						
							|  |  |  |     set_headers(self, 'text/html', msglen, | 
					
						
							|  |  |  |                 cookie, calling_domain, False) | 
					
						
							|  |  |  |     write2(self, msg) | 
					
						
							| 
									
										
										
										
											2024-04-28 09:54:22 +00:00
										 |  |  |     fitness_performance(getreq_start_time, fitness, | 
					
						
							|  |  |  |                         '_GET', 'reaction_picker2', debug) |