Herramienta para interceptar URLs desde el portapapeles y modificarlas o reproducirlas
Project description
🧠 Alterclip
Alterclip es una herramienta en segundo plano que monitoriza tu portapapeles y modifica automáticamente los enlaces que copias, para hacerlos más seguros o aptos para compartir en plataformas como Telegram. Además, en modo streaming, abre directamente vídeos de YouTube, Instagram y Archive.org con tu reproductor multimedia favorito.
✨ Características
- 🔁 Reemplaza dominios por versiones alternativas (más compartibles).
- 📋 Monitoriza el portapapeles de forma continua.
- 🎬 Abre automáticamente vídeos de YouTube, Instagram, Facebook y Archive.org con tu reproductor multimedia favorito.
- 📚 Almacena el historial de vídeos reproducidos con título y plataforma.
- 📦 Compatible con Linux, macOS y Windows (con pequeñas adaptaciones).
- 🔧 Dos modos de funcionamiento con cambio dinámico mediante señales.
- 🌐 Aplicación web integrada para consultar y gestionar el historial de forma visual.
- 📊 Interfaz de línea de comandos para gestionar el historial y reproducir vídeos guardados.
- 🔍 Búsqueda avanzada en el historial con soporte para acentos y mayúsculas/minúsculas.
- 📋 Copia de URLs al portapapeles con prefijo share.only/ para compartir fácilmente.
- 🗑️ Eliminación de entradas del historial.
- 🔄 Soporte para índices relativos al reproducir vídeos (ejemplo: -1 = último, -2 = penúltimo).
- 🏷️ Sistema de tags jerárquicos para organizar el historial.
- 📊 Búsqueda por tags y sus relaciones (padres e hijos).
- 📈 Visualización de jerarquía completa de tags.
⚙️ Instalación
Opción 1: Instalación desde PyPI (recomendado)
- Instala el paquete con pip:
pip install alterclip
Nota: Este método de instalación estará equiparado con los cambios publicados en la última release, aunque es posible que haya algunos cambios menores en el repositorio que aún no hayan sido liberados. En cualquier caso, utilizar la versión de la última release es más seguro de cara a posibles errores.
Opción 2: Instalación desde el repositorio de GitHub
-
Clona el repositorio:
git clone https://github.com/tuusuario/alterclip.git cd alterclip
-
Crea y activa un entorno virtual (recomendado):
python -m venv venv source venv/bin/activate # En Windows: venv\Scripts\activate
-
Instala las dependencias:
pip install -r requirements.txt
-
Opcional: Instala en modo desarrollo para realizar ediciones:
pip install -e .
🔧 Requisitos
- Python 3.8 o superior
Dependencias principales
Instala las dependencias con:
pip install -r requirements.txt
O manualmente:
pyperclip>=1.8.2- Para el manejo del portapapelesplatformdirs>=3.9.0- Para rutas de configuración multiplataformaplyer>=2.1.0- Para notificaciones del sistematermcolor>=2.3.0- Para salida de colores en la terminal
Dependencias opcionales
-
Reproductor multimedia:
mpv(recomendado),vlco similar para reproducción de vídeos -
Interfaz web:
flaskpara la interfaz web de consulta del historialpip install flask
-
API de YouTube (recomendado para mejor precisión):
- Crea un proyecto en Google Cloud Platform
- Activa YouTube Data API v3
- Configura la variable de entorno
YOUTUBE_API_KEYcon tu clave
-
Sugerencias y taxonomía por IA (opcional):
- Requiere una clave de API de OpenAI
- Se necesita un pago inicial mínimo de $5 USD en la cuenta de OpenAI
- Configura la variable de entorno
OPENAI_API_KEYcon tu clave - Permite sugerencias automáticas de tags y categorización de contenido
Notas del sistema
- Linux: Compatibilidad completa, incluyendo señales POSIX (
SIGUSR1/SIGUSR2) - Windows: Compatible, pero sin soporte para señales POSIX
- macOS: Compatible con algunas limitaciones en notificaciones
- Nota: Alternativamente ofrece el comando alterclip-cli toggle que envía un paquete UDP al demonio para cambiar el modo de funcionamiento. Esta alternativa sí funciona en cualquier sistema.
🚀 Uso
Ejecutar el daemon
-
Ejecuta el daemon principal:
python3 alterclip.py -
Copia una URL al portapapeles. Si es una de las compatibles, se transformará automáticamente y reemplazará el contenido del portapapeles.
-
En modo streaming, si copias un enlace de YouTube, Instagram, Facebook y Archive.org, se abrirá automáticamente con tu reproductor.
Usar la interfaz de línea de comandos
El CLI (alterclip-cli.py) te permite:
- Ver el historial de vídeos reproducidos con búsqueda avanzada
- Ver solo URLs sin tags usando
hist --no-tags - Reproducir cualquier vídeo guardado usando índices absolutos o relativos
- Reproducir múltiples vídeos en secuencia
- Copiar URLs al portapapeles con prefijo share.only/ para compartir
- Eliminar entradas del historial
- Cambiar el modo de funcionamiento
- Gestionar tags jerárquicos para organizar el historial
- Generar sugerencias de tags y taxonomía por IA
Ejemplos de uso:
# Ver historial completo
./alterclip-cli hist
# Ver solo URLs sin tags
./alterclip-cli hist --no-tags
# Ver solo las últimas 5 entradas
./alterclip-cli hist --limit 5
# Ver solo contenido de YouTube
./alterclip-cli hist --platform YouTube
# Buscar vídeos en el historial que contengan "música"
./alterclip-cli search música
# Buscar vídeos de Instagram
./alterclip-cli search música --platform Instagram
# Reproducir el último vídeo guardado
./alterclip-cli play -1
# Reproducir múltiples vídeos en secuencia
./alterclip-cli playall --tags "Filosofía" --shuffle
./alterclip-cli playall --search "música" --limit 5
./alterclip-cli playall --platform "YouTube" --reverse
./alterclip-cli playall --visto 0 # Reproduce solo URLs no vistas
./alterclip-cli playall --visto 3 # Reproduce URLs vistas 3 veces o menos
# Copiar la URL del penúltimo vídeo al portapapeles
./alterclip-cli copy -2
# Eliminar el vídeo con ID 123
./alterclip-cli rm 123
# Consultar el estado del demonio
./alterclip-cli status
# Cambiar el modo de alterclip
./alterclip-cli toggle
# Añadir un nuevo tag
./alterclip-cli tag add "Arqueología" --description "Contenido relacionado con arqueología"
# Crear un tag hijo
./alterclip-cli tag add "Antiguas Civilizaciones" --parent "Arqueología"
# Asociar un tag con una URL
./alterclip-cli tag url add 1 "Arqueología"
# Eliminar una asociación de tag
./alterclip-cli tag url rm 1 "Arqueología"
# Asignar automáticamente etiquetas con IA
./alterclip-cli tag auto 1 # Etiqueta automáticamente la URL con ID 1
# Buscar URLs con un tag específico
./alterclip-cli hist --tags "Arqueología"
# Actualizar un tag
./alterclip-cli tag update "Arqueología" --new-name "Arqueología y Antigüedad"
# Eliminar un tag
./alterclip-cli tag rm "Arqueología"
# Ver ayuda completa
./alterclip-cli man
🔁 Modos de funcionamiento
Alterclip tiene dos modos:
-
🟢 Modo Streaming (por defecto):
Reproduce enlaces compatibles como YouTube, Instagram o Facebook. -
🔴 Modo Offline:
Solo reescribe URLs y las guarda en el historial para futura referencia.
Puedes cambiar entre modos de dos formas:
-
Usando señales (solo en sistemas POSIX):
kill -USR1 <pid> # Activa modo streaming kill -USR2 <pid> # Activa modo offline
-
Usando el CLI:
./alterclip-cli toggle
El PID aparece al inicio en los logs, o puedes obtenerlo con:
ps aux | grep alterclip
📄 Dominios reescritos
Algunos ejemplos de reemplazos automáticos de enlaces:
| Original | Reemplazo |
|---|---|
| x.com | fixupx.com |
| tiktok.com | tfxktok.com |
| twitter.com | fixupx.com |
| pornhub.com | pxrnhub.com |
| nhentai.net | nhentaix.net |
📚 Historial de vídeos
Alterclip guarda automáticamente todas las URLs de streaming en su base de datos, incluso cuando está en modo offline. Para cada vídeo se almacena:
- URL original
- Título del contenido (cuando está disponible)
- Plataforma (YouTube, Instagram, Facebook)
- Fecha y hora de reproducción
- Tags asociados
- Visto (cuantas veces se ha reproducido)
Puedes acceder al historial usando el CLI o mediante la aplicación web proporcionada en la carpeta web.
🗂️ Logs y Base de datos
Logs
Los logs se guardan en:
~/.local/state/alterclip/alterclip.log
Contienen información útil como el PID, cambios de modo, errores de reproducción y actividad reciente.
Base de datos
La base de datos de historial se almacena en:
~/.local/state/alterclip/streaming_history.db
🧪 Ejecución como servicio
Puedes usar nohup, systemd, tmux o screen para mantener Alterclip ejecutándose en segundo plano:
nohup python3 alterclip.py &
También puedes crear un servicio systemd como este (guarda como ~/.config/systemd/user/alterclip.service):
[Unit]
Description=Alterclip Clipboard Monitor
After=network.target
[Service]
ExecStart=/usr/bin/python3 /ruta/a/alterclip.py
Restart=always
[Install]
WantedBy=default.target
Y luego habilítalo con:
systemctl --user daemon-reexec
systemctl --user daemon-reload
systemctl --user enable --now alterclip.service
🟢 Ejecutar Alterclip con gtk-launch
Para lanzar Alterclip utilizando gtk-launch, es necesario tener un archivo .desktop correctamente configurado en tu sistema. Este método es útil si quieres integrar Alterclip con entornos gráficos o lanzadores de aplicaciones.
1. Crear el archivo .desktop
Crea un archivo llamado alterclip.desktop en ~/.local/share/applications/ con el siguiente contenido:
[Desktop Entry]
Name=Alterclip
Exec=python3 /ruta/completa/a/alterclip.py
Terminal=false
Type=Application
Icon=utilities-terminal
Categories=Utility;
🔧 Importante: Asegúrate de reemplazar
/ruta/completa/a/alterclip.pycon la ruta real al script principal de Alterclip.
2. Dar permisos de ejecución
Dale permisos de ejecución al archivo .desktop:
chmod +x ~/.local/share/applications/alterclip.desktop
3. Ejecutar Alterclip con gtk-launch
Una vez creado el archivo .desktop, puedes lanzar Alterclip desde la terminal con:
gtk-launch alterclip
🧠 Nota: El argumento que se pasa a
gtk-launchdebe coincidir con el valor deName=en el archivo.desktop, en minúsculas y sin espacios. Si tienes dudas, también puedes usar el nombre del archivo sin la extensión:gtk-launch alterclip.
📝 Licencia
Este proyecto está licenciado bajo la GNU GPL v3.
🙌 Créditos
Creado por [mhyst].
Inspirado en la necesidad de compartir enlaces sin bloqueos ni rastreadores.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file alterclip-0.3.6.tar.gz.
File metadata
- Download URL: alterclip-0.3.6.tar.gz
- Upload date:
- Size: 23.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
901541984184a10e38c637558660a66cf7e3e2b7e5ac97e7ea22eae7882f6cb7
|
|
| MD5 |
bea9cfaadd4dfc628bed171cf75b5c2d
|
|
| BLAKE2b-256 |
0f356699480262630deb78b9730bf36bf83f9d9017a19401976c71e68ba6b5b1
|
Provenance
The following attestation bundles were made for alterclip-0.3.6.tar.gz:
Publisher:
publish.yml on mhyst/alterclip
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
alterclip-0.3.6.tar.gz -
Subject digest:
901541984184a10e38c637558660a66cf7e3e2b7e5ac97e7ea22eae7882f6cb7 - Sigstore transparency entry: 514941200
- Sigstore integration time:
-
Permalink:
mhyst/alterclip@16687a42a32ca5a41938755d8bac0b5646e0ae61 -
Branch / Tag:
refs/tags/v0.3.6 - Owner: https://github.com/mhyst
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@16687a42a32ca5a41938755d8bac0b5646e0ae61 -
Trigger Event:
release
-
Statement type:
File details
Details for the file alterclip-0.3.6-py3-none-any.whl.
File metadata
- Download URL: alterclip-0.3.6-py3-none-any.whl
- Upload date:
- Size: 23.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82717b4cd0429b9b4d1cb1bc81cf27a478f295a3a13c530ff492e3ae66fad2d1
|
|
| MD5 |
4a710527d1805005f1b939026f3ee285
|
|
| BLAKE2b-256 |
523e01ebbb36825d2d7ad1317c1221e7b6a2a809ee1b5b313752633b16250959
|
Provenance
The following attestation bundles were made for alterclip-0.3.6-py3-none-any.whl:
Publisher:
publish.yml on mhyst/alterclip
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
alterclip-0.3.6-py3-none-any.whl -
Subject digest:
82717b4cd0429b9b4d1cb1bc81cf27a478f295a3a13c530ff492e3ae66fad2d1 - Sigstore transparency entry: 514941277
- Sigstore integration time:
-
Permalink:
mhyst/alterclip@16687a42a32ca5a41938755d8bac0b5646e0ae61 -
Branch / Tag:
refs/tags/v0.3.6 - Owner: https://github.com/mhyst
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@16687a42a32ca5a41938755d8bac0b5646e0ae61 -
Trigger Event:
release
-
Statement type: