import json def load_social_media_data(): # Load social media data from JSON file with open("./templates/sites.json", "r") as file: return json.load(file) def extract_domain(link): # Extract the domain from a link (e.g., "https://mastodon.social" -> "mastodon.social") return link.split("//")[-1].split("/")[0] def detect_platform(link, social_media_data): # Extract the domain from the link domain = extract_domain(link) # Check each platform's domains list for platform, data in social_media_data.items(): if "domains" in data and domain in data["domains"]: return platform # Fallback: Check if the platform name is in the link (e.g., "twitter.com" -> "twitter") for platform in social_media_data: if platform in link: return platform return None def generate_html(links, social_media_data): # Read the template file with open("./templates/template.html", "r") as file: template = file.read() # Replace the {name} placeholder with the user's name template = template.replace("{name}", name) # Generate button elements for each link buttons = "" for link in links: platform = detect_platform(link, social_media_data) if platform: icon_url = social_media_data[platform]["icon"] platform_name = social_media_data[platform]["name"] buttons += f''' {platform} icon {platform_name} \n ''' else: # If the platform is not recognized, use the domain name as the button text domain = extract_domain(link) buttons += f'{domain}\n' # Replace the placeholder with the generated buttons template = template.replace("{links}", buttons) # Save the new HTML file output_file = "./generated/visicard.html" with open(output_file, "w") as file: file.write(template) print(f"Your Visicard '{output_file}' has been generated successfully!") if __name__ == "__main__": # Ask the user for their name name = input("Please enter your name. This will be shown in the Header of the Page:") # Load social media data social_media_data = load_social_media_data() # Ask the user how many links they want to add try: num_links = int(input("How many links do you want to add? ")) except ValueError: print("Please enter a valid number.") exit() # Ask the user for each link links = [] for i in range(1, num_links + 1): link = input(f"Please enter Link {i}: ") links.append(link) # Generate the HTML file generate_html(links, social_media_data)