# # (entorn_A3) GNUstavo:~/codi/targeta_visita$ for i in {1..50}; do python3 X_main.py && sleep 3 ; done # # inspirat en targeta de visita del carlos # # # NOM del Programa: LITOS 13 Planetes .PY # # WEB dissenyador https://carlosmxercavinsportafoli.wordpress.com/sobre-mi/ # # ALGO AIXÍ, # PROGRAMA QUE sobre catifa de caràcters base64 (emulant el clàssic joc de la sopa de lletres) # AGAFA strings per pantalla o fitxer per defecte # 3 VARIABLES: HOST, e-correu, telefon # 13 paraules_clau, sintagmes que sintetitzin allò que hi vulguis camuflar, més base64? ;) # # buscar a la carpeta on s'executa una template.svg creada prèviament en InkScape després de posar text ràndom (README.md per a exemples, etc) # # escupir la template modificada_YYYYMMDD_.svg # import argparse import os import random import datetime import shutil import xml.etree.ElementTree as ET # definir aguments de línia de comandes parser = argparse.ArgumentParser(description="transforma svg de template substituint variables i camuflant strings") parser.add_argument("-t", "--template", type=str, default="template_base64.svg", help="necessites plantilla d'svg") parser.add_argument("-p", "--pile", type=str, default="cadenes_usuari.txt", help="txt on poses paraules_clau, sintagmes, etc") args = parser.parse_args() # el fitxer de pila de paraules cadenes_fitxer = args.pile cadenes_usuari = [] if os.path.exists(cadenes_fitxer): with open(cadenes_fitxer, "r", encoding="utf-8") as f: cadenes_usuari = [line.strip().replace(" ", "_") for line in f.readlines() if line.strip()] if len(cadenes_usuari) == 16: print(f"carregades correctament 16 cadenes des de '{cadenes_fitxer}' MAKING MOVIES !!!!") host, correu, telefon, *resta_cadenes = cadenes_usuari cadenes_usuari = resta_cadenes else: print(f"'{cadenes_fitxer}' existeix, PERÒ només té {len(cadenes_usuari)} vàlides: es demanaran interactivament les cadenes que falten") # si no hi ha 16 línies vàlides, demana les cadenes manualment while len(cadenes_usuari) < 13: entrada = input(f"POSA / proporciona 2nDsy+_Paraula_Clau_+B1biB {len(cadenes_usuari) + 1}/13: ").strip().replace(" ", "_") if entrada: cadenes_usuari.append(entrada) # dades bàsiques complementàries si no s'han obtingut del fitxer if len(cadenes_usuari) < 13: host = input("quin nom de HOST ").strip().replace(" ", "_") correu = input("quin correu de contacte ").strip().replace(" ", "_") telefon = input("quin telèfon ").strip().replace(" ", "_") # test si el fitxer de plantilla existeix if not os.path.exists(args.template): print(f"ERROR -- no s'ha trobat arxiu de plantilla '{args.template}'") exit(1) # crear marca de temps per al nom del nou fitxer now = datetime.datetime.now() nom_nou = f"{now.strftime('%H%M%S_%Y%m%d')}_{os.path.basename(args.template).replace('.svg', '_modificada.svg')}" shutil.copy(args.template, nom_nou) # processar el fitxer SVG tree = ET.parse(nom_nou) root = tree.getroot() # localitzar etiquetes tspans = root.findall(".//{http://www.w3.org/2000/svg}tspan") # CANVIAR la primera línia HOST / e-correu if len(tspans) > 0: text_inicial = tspans[0].text if text_inicial: tspans[0].text = text_inicial.replace("{HOST}", host).replace("{e-correu}", correu) # INSERT a la segona línia : telèfon if len(tspans) > 1: text_segona = tspans[1].text if tspans[1].text else "" tspans[1].text = text_segona.replace("{telefon}", telefon) # INSERT la resta de paraules en les següents línies index_tspan = 2 # INIT - -- INSERT a partir de la tercera línia for cadena in cadenes_usuari: if index_tspan < len(tspans): text_actual = tspans[index_tspan].text if tspans[index_tspan].text else "" max_posicio = min(48 - len(cadena), len(text_actual)) # ajust caràcters INSERT x encaixar if max_posicio < 1: continue posicio = random.randint(1, max_posicio) # dividir el text actual en tres parts: abans, la inserció, després text_abans = text_actual[:posicio] text_despres = text_actual[posicio:] # inserir la +_cadena_+ al MIG tspans[index_tspan].text = text_abans + f'+_{cadena}_+' + text_despres index_tspan += 1 else: break # si no hi ha més , parem # DESA el nou fitxer svg tree.write(nom_nou, encoding="utf-8", xml_declaration=True) print(f"PERFECTE: arxiu DESAT COM ---> {nom_nou}")