#!/usr/bin/env python3
"""
Agrega el shortcode {{< tutorial-links >}} al final de todos los posts
dentro de content/post/
Uso:
Colócate dentro de la carpeta content/post/ y ejecuta:
python3 agregar_tutorial_links.py
O bien, ejecútalo desde cualquier lugar indicando la ruta:
python3 agregar_tutorial_links.py /ruta/a/content/post
Características:
- Es idempotente: si el post ya tiene el shortcode, no lo duplica.
- Ignora archivos _index.md (son páginas de listado, no posts).
- Solo procesa archivos .md
- Hace un respaldo opcional (ver DRY_RUN abajo) antes de tocar nada.
"""
import sys
from pathlib import Path
Cambia a True si quieres solo ver qué archivos se modificarían,
sin escribir nada todavía (simulación).
DRY_RUN = False
SHORTCODE_BLOCK = “\n{{< tutorial-links >}}\n \n”
def procesar_post(filepath: Path) → bool:
"""Agrega el shortcode al final del archivo si no está ya presente.
Retorna True si el archivo fue modificado."""
contenido = filepath.read_text(encoding="utf-8")
# Evitar duplicados si el script se ejecuta más de una vez
if "{{< tutorial-links >}}" in contenido:
return False
# Aseguramos que el contenido actual termine con salto de línea
# antes de pegar el bloque nuevo, para no dejar todo pegado.
if not contenido.endswith("\n"):
contenido += "\n"
nuevo_contenido = contenido + SHORTCODE_BLOCK
if not DRY_RUN:
filepath.write_text(nuevo_contenido, encoding="utf-8")
return True
def main():
# Carpeta base: si se pasa como argumento se usa esa, si no, la carpeta actual
if len(sys.argv) > 1:
base_dir = Path(sys.argv[1])
else:
base_dir = Path.cwd()
if not base_dir.exists() or not base_dir.is_dir():
print(f"❌ La carpeta '{base_dir}' no existe o no es un directorio.")
sys.exit(1)
print(f"📂 Buscando posts dentro de: {base_dir.resolve()}")
if DRY_RUN:
print("⚠️ Modo simulación (DRY_RUN=True): no se escribirá nada.\n")
modificados = 0
omitidos = 0
total = 0
# Recorre todas las subcarpetas (3ds, gb, gba, etc.) y sus .md
for md_file in sorted(base_dir.rglob("*.md")):
if md_file.name == "_index.md":
continue
total += 1
if procesar_post(md_file):
modificados += 1
print(f"✅ Modificado: {md_file.relative_to(base_dir)}")
else:
omitidos += 1
print(f"⏭️ Ya tenía el shortcode, se omitió: {md_file.relative_to(base_dir)}")
print("\n--- Resumen ---")
print(f"Total de posts encontrados: {total}")
print(f"Modificados: {modificados}")
print(f"Omitidos (ya tenían el shortcode): {omitidos}")
if name == “main”:
main()