MatrixCli es un cliente de matriz simple basado en Matrix-Python-SDK. Si se pregunta cómo es útil, consulte las aplicaciones
Puede instalar MatrixCli usando Setup.py en Root Project Directory. Esto también instalará todas las dependencias necesarias.
git clone https://github.com/saadnpq/matrixcli.git
cd ./matrixcli
sudo ./install.shEsto colocará el script MatrixCli en su ruta, instalará un archivo de plantilla config.py en/etc/matrixcli y el archivo de la unidad systemd en/lib/systemd/user
Para los usuarios de Ubuntu, primero debe instalar python3-setuppools antes de ejecutar los comandos anteriores
sudo apt install python3-setuptoolsPara habilitar el servicio SystemD, puede ejecutar lo siguiente.
systemctl --user enable --now matrixcliLa configuración de la cuenta se realiza a través del archivo config.py en cualquiera de las siguientes ubicaciones ordenadas por precedencia
Esta es una configuración de muestra de una cuenta.
def password_eval ():
return "Y0UrPredIctabLePA$$w0ord"
accounts = [{ "server" : "https://matrix.org/" ,
"username" : "putYourUserNameHere" ,
"passeval" : password_eval }]
# the password_eval function can be named any thing as long as
# it matches the function definition
ignore_rooms = [ "room_id" , "another_room_id" ]
# note: room_id not room_alias (run matrixcli rooms to get the room_id) El archivo de configuración debe tener una variable accounts que contenga una lista de diccionarios donde cada diccionario consiste en el servidor de información de la cuenta, el nombre de usuario y la contraseña eval
La justificación detrás de la definición de una función que devuelve el valor de la contraseña es que si no desea escribir su contraseña en texto sin formato, puede escribir cualquier código de Python que desee que genere o lea la contraseña desde un archivo cifrado o un anillo de clave
La lista Ignore_rooms contiene habitaciones que desea ser ignoradas al calcular mensajes no leídos y en modo de escucha
Si no desea hacer un archivo de configuración, puede pasar el servidor, el nombre de usuario y la contraseña a través de los argumentos de la línea de comandos. Ver uso
Supongamos que tiene el siguiente archivo de configuración
def account1_password_eval ():
return "account1secretpassword"
def account2_matrixorg_password_eval ():
return "account2secretpassword"
def account3_password_eval_any_name ():
return "yXkdsjhslkjhdlksjhffffffkkssskjsdhkljhssdc"
accounts = [
{ "server" : "https://example.com" ,
"username" : "account1" ,
"passeval" : account1_password_eval },
{ "server" : "https://matrix.org" ,
"username" : "account2" ,
"passeval" : account2_matrixorg_password_eval },
{ "server" : "https://example.com" ,
"username" : "account3" ,
"passeval" : account3_password_eval_any_name },]
ignore_rooms = [ "room_id" , "another_room_id" ] Si no especificó ninguna opción de línea de comando, el programa usará la primera cuenta en la lista de cuentas. Para usar cualquier otra cuenta, es suficiente para aprobar la opción -U o -UserName al comando con el nombre de usuario de esa cuenta.
Por ejemplo
matrixcli -u account3 getroomsEse comando iniciará sesión con los parámetros de la tercera cuenta.
Si tiene dos o más cuentas con el mismo nombre de usuario pero con diferentes servidores. Puede especificar la opción –Server para reducir las posibles cuentas a la cuenta que desea.
A continuación se muestran las formas en que uso personalmente MatrixCli,
El primer motivo para hacer este programa fue que no quería mantener abierta la página web Riot o ejecutar una aplicación de electrones solo para notificaciones.
Puede habilitar el servicio SystemD, para obtener notificaciones para los eventos a medida que llegan.
systemctl --user enable --now matrixcli
Usando matrixcli unread , escribe un módulo para cualquier barra de estado para mostrar mensajes no leídos. Aquí hay un ejemplo simple para Polybar
[module/matrix]
type = custom/script
exec = matrixcli unread -f 2> /dev/null
tail = true
interval = 30
format = <label>
label = M[%output%]
format-underline = # 268bd2 Por ejemplo, tengo este trabajo cron que envía todos los días una canción aleatoria de mi directorio de música a una habitación específica.
0 0 * * * /usr/local/bin/matrixcli send -r ' !OSPeUVrwMKbIrLQuBX:matrix.org ' $( tree /home/pi/musiqa -fi | grep " .*.mp3 " | shuf | sed 1q )Y lo uso en muchos scripts en servidores remotos para notificarme sobre una salida de script o simplemente cuando algo sale mal.
Para una lista de los subcomands y opciones ejecutados
matrixcli --help producción:
#usage: matrixcli [-h] [-s servidor] [-u nombre de usuario] [-p contraseña] [-c config]
{Enviar, escuchar, habitaciones, sin leer, cola} ...
Cliente de matriz de línea de comando
Argumentos opcionales:
-h, --help muestra este mensaje de ayuda y salida
-s servidor, -servidor -servidor
servidor para iniciar sesión
-u nombre de usuario, nombre de usuario de nombre de usuario
nombre de usuario para iniciar sesión con
-p contraseña, -password contraseña
la contraseña
-c config, -config -config
archivo de configuración personalizado
subcomandos:
{Enviar, escuchar, habitaciones, sin leer, cola}
Enviar envío algo a una habitación
Escuche escuchar para siempre para eventos
Las habitaciones obtienen todas las habitaciones unidas
no leído Obtener notificaciones no leídas
Impresión de cola Últimos mensajes
Para enumerar las opciones de un sub comando específico, (por ejemplo, enviar)
matrixcli send --help Cada submand que se supone que actúa en una habitación específica acepta el argumento opcional -r/–-ID-id que lleva el ID de la sala para actuar, o -a/–nelias, que toma un alias de habitación.
Para obtener una sala de habitaciones de una habitación:
Matrixcli habitaciones
emite lo siguiente (para mi cuenta).
Iniciar sesión .... iniciado sesión .... 0: Momenamr :! ocomuldomkojwyzxts: matrix.org 1: Mahmoudhafez:! Fcxcmulziohnqomvxd: saadnpq.com 2: Emacs Matrix Client:! Zrzoyxeyfrzcbzknis: matrix.org 3: Elm3alem Zaki :! Oabjenlttvqgpqrpes: matrix.org 4: matrix-python-sdk:! Yhhmbtmgbhgqolgpaz: matrix.org 5: emacs :! pwxniidhcbabnitssn: matrix.org 6: Moatazomar:
Si no especificó el ID de la habitación o los alias de la habitación a través de la línea de comando, el programa lo solicitará con sus habitaciones unidas cuando sea necesario.
matrixcli listenescucha para siempre para eventos y emite mensajes entrantes a las notificaciones de STDOUT y OS, si está ejecutando este comando en un sistema sin cabeza o el programa no puede enviar notificaciones por alguna razón, solo generará eventos a STDOT sin quejarse.
Puede presionar CC para dejar el modo de escuchar.
También hay un servicio Systemd instalado con el programa que usa matrixcli listen para habilitarlo, puede ejecutar lo siguiente.
systemctl --user enable --now matrixcliDevuelve los últimos n mensajes de una habitación.
matrixcli tail -h Uso: Matrixcli Tail [-h] [-r Room_id | -A Room_alias] [-f] [-n [1-100]]
Argumentos opcionales:
-h, --help muestra este mensaje de ayuda y salida
-r Room_id,-Room-id Room_id
especificar la identificación de la habitación
-A Room_alias,-Room-Alias Room_alias
Especifique la habitación por alias de habitación
-f, -Fuecir la espera de los mensajes e imprima a medida que vengan
-n [1-100],-Messages [1-100]
Imprima los últimos mensajes especificados
La opción -f imprime los últimos mensajes, pero espere nuevos mensajes e imprima a medida que lleguen.
También puede enviar mensajes mientras está en el modo de siguiente escribiendo el mensaje que desea enviar y presione Enter para enviarlo.
matrixcli send --help Uso: Matrixcli Enviar [-h] [-r Room_id | -A Room_alias] [-t | -f] contenido
Argumentos posicionales:
contenido
Argumentos opcionales:
-h, --help muestra este mensaje de ayuda y salida
-r Room_id,-Room-id Room_id
especificar la identificación de la habitación
-A Room_alias,-Room-Alias Room_alias
Especifique la habitación por alias de habitación
-t, -text forzue al programa a tratar el contenido como mensaje de texto
-F, -File forzar al programa a tratar el contenido como un archivo
El comando SEND toma el contenido que desea enviar como argumentos posicionales, el programa primero ve si el texto aprobado representa un archivo que existe en el sistema de archivos, si es así, intentará adivinar su tipo MIME basado en la extensión para obtener una vista previa correctamente del contenido al final del receptor. Si el texto aprobado no representa ningún archivo en el sistema de archivos, el programa lo tratará como un mensaje de texto.
Para obligar al programa a tratar el contenido como un archivo o un texto, puede especificar los argumentos opcionales –file o –Text.
matrixcli unread --help Uso: MatrixCli Unread [-h] [-f] [-r Room_id | -A Room_alias]
Argumentos opcionales:
-h, --help muestra este mensaje de ayuda y salida
-f, --follow no cierre la conexión e imprima el número de no leído
mensajes siempre que se actualice
-r Room_id,-Room-id Room_id
especificar la identificación de la habitación
-A Room_alias,-Room-Alias Room_alias
Especifique la habitación por alias de habitación
emite mensajes no leídos para Room_id o todas las habitaciones (excepto las que están en Ignore_Orooms) si no se especifica Room_id o Room_alias