Como subir vídeos usando la api de peertube

Con el siguiente script se puede hacer:

#!/usr/bin/env python3
# Testeado contra peertube 4.x.x

import time
import json
from pprint import pprint
from mimetypes import guess_type

import requests
import click
from requests.structures import CaseInsensitiveDict


@click.group(no_args_is_help=True)
def cli():
pass


@cli.command("list-licenses")
@click.option(
"--host",
"-h",
default="https://fediverse.tv",
help="Dirección del servidor de peertube",
)
def list_licenses(host):
try:
api = host + "/api/v1"
licenses = requests.get(api + "/videos/licences").json()
pprint(licenses)
except Exception as e:
print("Ha ocurrido un error: {e}", e)


@cli.command("list-languages")
@click.option(
"--host",
"-h",
default="https://fediverse.tv",
help="Dirección del servidor de peertube",
)
def list_languages(host):
try:
api = host + "/api/v1"
licenses = requests.get(api + "/videos/languages").json()
pprint(licenses)
except Exception as e:
print("Ha ocurrido un error: {e}", e)


@cli.command("list-categories")
@click.option(
"--host",
"-h",
default="https://fediverse.tv",
help="Dirección del servidor de peertube",
)
def list_categories(host):
try:
api = host + "/api/v1"
licenses = requests.get(api + "/videos/categories").json()
pprint(licenses)
except Exception as e:
print("Ha ocurrido un error: {e}", e)


@cli.command("list-privacy")
@click.option(
"--host",
"-h",
default="https://fediverse.tv",
help="Dirección del servidor de peertube",
)
def list_categories(host):
try:
api = host + "/api/v1"
licenses = requests.get(api + "/videos/privacies").json()
pprint(licenses)
except Exception as e:
print("Ha ocurrido un error: {e}", e)


@cli.command("upload-video")
@click.option(
"--host",
"-h",
default="https://fediverse.tv",
help="Dirección del servidor de peertube",
)
@click.option("--username", "-u", help="Usuario para hacer login", required=True)
@click.option("--password", "-p", help="Contraseña para hacer login", required=True)
@click.option("--video-name", "-v", help="Nombre del vídeo", required=True)
@click.option("--channel", "-c", help="Canal al que subir el vídeo", required=True)
@click.option("--license-id", "-l", help="Licencia del vídeo")
@click.option("--description", "-d", help="Descripción del vídeo")
@click.option(
"--nsfw", is_flag=True, default=False, help="Activar si es un vídeo sensible"
)
@click.option("--tag", "-t", multiple=True, help="Tag a categorizar el vídeo")
@click.option("--privacy-id", "-P", default=1, help="Tipo de privacidad del vídeo")
@click.option("--language-id", "-L", help="Lenguaje del vídeo")
@click.option("--video-path", "-V", help="Ruta del vídeo", required=True)
@click.option("--category-id", "-C", help="Categoría del vídeo")
def upload_video(
host,
username,
password,
video_name,
channel,
license_id,
description,
nsfw,
tag,
privacy_id,
language_id,
video_path,
category_id,
):
api = host + "/api/v1"

try:
# Conseguir el token de usuarie
client_tokens = requests.get(api + "/oauth-clients/local").json()
# Conseguir el token de acceso personal
data = {
"client_id": client_tokens["client_id"],
"client_secret": client_tokens["client_secret"],
"grant_type": "password",
"response_type": "code",
"username": username,
"password": password,
}
access_token = requests.post(api + "/users/token", data=data).json()[
"access_token"
]
# Definir el token de acceso personal para subir el vídeo
headers = CaseInsensitiveDict()
headers["Authorization"] = "Bearer " + access_token
# Conseguir el ID del canal
channel_id = requests.get(api + "/video-channels/" + channel).json()["id"]
# Definir las características del video
data = {
"name": video_name,
"channelId": channel_id,
"category": category_id,
"licence": license_id,
"language": language_id,
"description": description,
"nsfw": nsfw,
"tags": tag,
"privacy": privacy_id,
"waitTranscoding": True,
"commentsEnabled": True,
"downloadEnabled": True,
}
file_mime_type = guess_type(video_path)[0]
with open(video_path, "rb") as f:
upload_video = requests.post(
api + "/videos/upload",
data=data,
headers=headers,
files={"videofile": (data["name"], f, file_mime_type)},
)
pprint(upload_video.json())
except Exception as e:
print("Ha ocurrido un error: {e}", e)


if __name__ == "__main__":
cli()

Para usarlo, hay que  copiarlo en un directorio, crear un virtualenv y descargar sus dependencias:

virtualenv venv
source venv/bin/activate
pip install requests click

Se pueden ver todos los parámetros que aceptan cada orden usando el parámetro help. Una cosa a tener en cuenta es que por defecto apunta a fediverse.tv, pero se puede cambiar con el parámetro –host.

El script, además de permitir subir vídeos, tiene utilidades para conseguir la información necesaria para poder modificar los parámetros del vídeo, como por ejemplo el lenguaje o la licencia. Se podría usar de la siguiente forma:

python uploadPeertubeVideo.py list-categories
python uploadPeertubeVideo.py list-languages
python uploadPeertubeVideo.py list-licenses
python uploadPeertubeVideo.py list-privacy

Estas órdenes nos darán los IDs de cada sección y podremos usarlas al subir vídeo, aunque no son obligatorias, como se verá en el ejemplo. Para usarlas, consultar la ayuda:

python uploadPeertubeVideo.py upload-video -u user -p password -v nombreVideo -c canal -V rutaVideo

 

Etiquetado:

Las ventajas que nos trae la nueva versión 4.0.0 de Peertube

Buenas amigues!

Os vamos a explicar que ventajas nos trae la nueva versión de Peertube, la versión 4.0.0, traducida directamente de aquí.

La gran característica de esta V4 es la vista de todos los videos de una instancia. Esto facilitará la administración de las instancias y la moderación permitiendo seleccionar un lote de vídeos para hacer la misma acción en varios videos a la vez: borrar, bloquear, transcodificar o borrar un formato de vídeo determinado, etc.

Las características avanzadas de filtrado facilitan este proceso, distinguiendo entre vídeos locales (almacenados en un servidor propio) y vídeos remotos (almacenados en servidores con quienes se elija federar), o tambien pudiendo ordenarlos por fecha de publicación.

Les creadores de contenido se verán beneficiados por esta característica, pudiendo manejar de manera más eficiente todos los videos en su canal de peertube o ver a sus suscriptores. Por ahora, la vista de suscriptores es básica y no permite mucho, pero es una base sobre la que se podrá trabajar y satisfacer más necesidades.

 

Otra característica «low-tech» en PeerTube es la introducción de la resolución de vídeos 144p. Esta es muy útil para conexiones lentas, también para emisión solo de audio, y vídeos donde no es necesaria una gran calidad.

Finalmente el lanzamiento de esta V4 ha servidor para hacer limpieza de todo el proyecto. La configuración, el código pero también la API (que permite a otros programas interactuar con PeerTube) han sido renovadas, modificadas y mejoradas.

Hasta aquí todas las nuevas características. También han arreglado muchos errores y han hecho otros cambios menores, pero no entraremos en detalle.

Estamos muy contentes de que el proyecto siga avanzando y esperamos que estas nuevas ventajas os ayuden a tener una mejor experiencia en FediverseTV, la tele del fediverso.

Etiquetado:

Amigues de FediverseTV, Feliz Año 2022!

El año termina y no queremos pasar por alto agradecer a todes quienes se fueron sumando a lo largo de este tiempo, un año lleno de aprendizaje y sueños que vamos poco a poco concretando.

Somos un colectivo que busca brindar un servicio de alojamiento de videos y streaming respetando la libertad de expresión, la diversidad, la cultura de manera segura.

Buscamos cada día ir mejorando!

Desde el Equipo de FediverseTV te deseamos un muy Feliz año 2022!

Etiquetado:

¿Porqué ya no aceptamos faircoins?

Hola, antes de nada indicaros que lamentamos mucho lanzar este mensaje, ya que tras una larga y ardua investigación hemos decidido dejar de aceptar aportaciones de faircoins, nos es muy difícil poder darles usabilidad, la trayectoria es un bucle infinito en el que dan vueltas como donaciones sin otro destino. La situación en la que nos encontramos pues también tenemos que pagar a nuestros proveedores, nos ha empujado a tomar tan triste solución. Nos gustaría que el proyecto pudiera seguir y que en un corto periodo podamos informaros de lo contrario, deseándoos lo mejor a todas y todos os enviamos un saludo.

Etiquetado: /
FediverseTV