Sommaire
Bonjour nal, et bonjour à tou⋅te⋅s,
Tu connais Peertube, la super plateforme fédérée pour s'échanger des vidéos en (web)torrent. Si c'est pas le cas, je te renvoie à une dépêche parue récemment.
Une des questions qui secoue pas mal la communauté Peertube, c'est comment répliquer les vidéos de mon instance pour les seeder depuis un autre ordinateur ? Si les développeureuses de Peertube comptent intégrer un système de réplication à leur plateforme, ça fait pas de mal de bidouiller ça dans son coin en mode KISS en attendant.
La situation
Peertube diffuse ses vidéos en webtorrent, où l'instance Peertube est également annoncée dans le torrent comme "webseed", c'est à dire qu'elle peut streamer le contenu en HTTP(S) au client webtorrent si jamais le client ne supporte pas WebRTC.
Nous, de notre côté, on pourra pas offrir cette possibilité car il faudrait que le serveur modifie le fichier torrent pour nous enregistrer comme webseed. On se contentera donc de partager en webtorrent.
De son côté, Peertube propose des flux RSS, Atom et JSON pour suivre les dernières publications sur l'instance. Du coup on va pouvoir s'interfacer avec les outils de notre choix !
Trouver un client
Malheureusement, peu de clients Webtorrent existent à ce jour. La plupart des clients Bittorrent qu'on chérie ne supporte pas encore les webtorrents. Du coup, en attendant de trouver mieux, on va utiliser Webtorrent Desktop pour seeder les vidéos.
Webtorrent Desktop dispose d'ailleurs d'une option très pratique (et assez commune) pour automatiquement télécharger et partager les torrents qu'on ajoute dans un dossier. On va donc créer un dossier dédié, par exemple ~/seedbox.
Implémentation
Maintenant qu'on a un client équippé et configuré, il nous reste à écrire un programme pour télécharger régulièrement les torrents associés aux nouvelles vidéos sur notre instance Peertube préférée !
peertube-replication.sh
J'ai du coup créé un petit script en bash en une centaine de lignes. Il a pour dépendances :
- bash ← j'ai pas testé avec d'autres shell mais je crois que j'utilise des idiosyncrasies bashistes (je débute en programmation shell)
- curl ← pour récupérer les fichiers en HTTPS
- jq ← pour extraire des informations du flux JSON
- awk ← pour des manipulations de chaînes de caractères
- oi.sh ← pour gérer les niveaux d'information (DEBUG, INFO, ERROR) et la colorisation des sorties
Installation
Sur Debian, apt install cron jq
fera l'affaire. Ensuite, il faut rajouter peertube-replication.sh et oi.sh dans ton $PATH, c'est à dire dans la variable qui dit à ton shell où aller chercher les programmes. Sur Debian (et dérivées) tu pourras copier ça dans /usr/local/bin
par exemple :
sudo cp oi.sh peertube-replication.sh /usr/local/bin && sudo chmod +x /usr/local/bin/*.sh
Utilisation
La syntaxe de peertube-replication.sh
est très simple. Elle prend en premier paramètre l'adresse du flux JSON de ton instance Peertube, et en second paramètre le dossier dans lequel enregistrer les torrents et garder en mémoire la dernière vidéo qu'on connaît sur le serveur.
Par exemple, on peut faire:
peertube-replicate.sh "https://www.yiny.org/feeds/videos.json?sort=-publishedAt&filter=local" ~/seedbox/
Note: il est tout à fait possible de répliquer les vidéos de plusieurs instances dans le même dossier. En effet, la dernière vidéo connue de l'instance www.yiny.org est stockée dans le fichier ~/seedbox/www.yiny.org.latest
. Pas de collisions en vue avec d'autres instances, donc (ouf).
Checker les nouveautés
On va maintenant voir comment configurer ton système pour checker automatiquement si des nouvelles vidéos ont été publiées. cron est un outil permettant de plannifier des tâches récurrentes sur ta machine.
Si le système est configuré pour (c'est le cas par défaut), chaque utilisateurice sur la machine a un fichier dans lequel iel peut enregistrer ses tâches récurrentes : c'est le crontab. Pour éditer ton fichier crontab, il y a la commande crontab -e
.
Je vais pas faire un cours sur cron, parce que y'en a déjà plein des très biens (par exemple ici), mais voici un exemple pour checker l'apparition de nouvelles vidéos toutes les heures et enregistrer la sortie du programme dans un fichier de log :
0 * * * * /usr/local/bin/peertube-replication.sh "https://www.yiny.org/feeds/videos.json?sort=-publishedAt&filter=local" /home/yolo42/seedbox/ >> /home/yolo42/seedbox/peertube-replication.log
D'autres implémentations ?
Toutes les remarques sont bienvenues, mais je ne souhaite pas particulièrement recevoir de contributions extérieures sur peertube-replication.sh
. Par contre, n'hésite pas à pomper le code (c'est du copyleft en GPL) pour en faire autre chose, ou à juste écrire ta solution dans ton coin pour la repartager avec tout le monde !
À quand une implémentation en Rust ? En BrainFuck ? En Haskell ? En Lisp ? Bientôt plus d'implémentations que TapTempo ? Bon ptet pas quand même !
Sinon si tu trouves d'autres clients compatibles webtorrents avec lesquels on peut s'interfacer ça m'intéresse grave. N'hésite pas à me dire en commentaire. Mon idéal serait un programme en ligne de commande avec un daemon, qu'on puisse déployer ça sans installer un environnement de bureau pour faire tourner les surcouches Electron de Webtorrent Desktop.
Algorithme
Si jamais tu veux faire une implémentation compatible, voici les grandes lignes :
- On checke qu'on a deux arguments ; sinon (ou si la personne le demande), on affiche l'aide
- Le premier argument est l'URL du flux (JSON/RSS/Atom) à checker, le second le dossier où stocker les données
- Checker le format de l'URL pour déterminer le type de flux (et où stocker sa dernière vidéo connue)
- Si le flux est un flux d'instance, on sauvegarde la dernière vidéo dans le fichier
instance.tld
- Si le flux est un⋅e user, on sauvegarde dans
@user@instance.tld
(← pas encore implémenté)
- Si le flux est un flux d'instance, on sauvegarde la dernière vidéo dans le fichier
- Vérifier qu'on a les droits en lecture et écriture sur le dossier
- Si cette information existe, récupérer la dernière vidéo connue localement
- Récupérer le flux distant
- Comparer les dernières vidéos (locale et distante) : si elles sont identiques, on n'a pas de vidéos à importer
- Pour chaque vidéo publiée après la dernière vidéo connue (dans l'ordre chronologique)
- Récupérer dans le flux l'URL correspondante
- Télécharger le torrent dans le dossier, sous le nom original du fichier (
IDENTIFIANT-UNIQUE.torrent
) - Sauvegarder le nom de la vidéo comme dernière vidéo rencontrée pour ce flux
Limitations et améliorations
Webseed
On pourra pas faire webseed. Donc pour les clients qui ne supportent pas webrtc, c'est toujours l'instance peertube qui va balancer la sauce. Ça coûte cher en bande passante et surtout si t'es à l'autre bout du monde ça risque de moins bien marcher. Mais bon j'imagine que c'est mieux que pas de vidéo du tout :O
Suppression des vidéos
Si une vidéo est supprimée sur le serveur, je ne connais pas de mécanisme pour être mis⋅e au courant. Peut-être y a-t-il un flux dans l'API de Peertube pour les dernières vidéos supprimées ?
Ça pose problème si tu répliques le contenu d'une instance publique et que tu te retrouves malgré toi à héberger du contenu pas cool (genre une vidéo de propagande pour l'armée ou un groupuscule fasciste). Du coup j'ai pas de solution à proposer à part de répliquer les vidéos d'instances à qui tu fais confiance.
Gérer les flux des utilisateurices
On pourrait répliquer également les flux d'un⋅e utilisateurice bien précis⋅e. Après tout, pourquoi répliquer toute une instance quand peut-être il n'y a qu'une personne qui nous intéresse dessus ?
Les adresses de flux des utilisateurices ressemblent beaucoup au flux de l'instance, mais elles comprennent un paramètre accountId
. On pourrait passer un coup de regex sur l'URL fournie pour détecter s'il s'agit d'un flux d'instance, de user, ou bien à l'avenir peut-être d'une playlist ou d'un groupe.
Les flux utilisateurice pourraient ainsi être stockés dans le format @user@instance
. C'est décrit dans l'algorithme, mais j'ai pas encore implémenté ça.
Quota
On devrait pouvoir configurer le programme pour limiter le stockage maximum. En cas de spam ou de grosse activité sur un serveur, ça ne devrait pas remplir tes partitions à 100%. Dans tous les cas j'espère que tu feras pas tourner ce petit script sur ta partition racine.
Il faudrait du coup enregistrer la taille de chaque flux en cumulant les informations individuelles sur chaque torrent fournies par l'API de Peertube. On pourrait ensuite paramétrer ça avec des variables d'environnement tels que REPLICATION_MAXSIZE=40G
ou alors par flux REPLICATION_PERFLUX=5G
.
Perso je pense pas implémenter ça. Ça me paraît trop chiant à faire pour mon utilisation précise. Après je t'encourage à développer ça dans ton coin et à partager ton code pour inspirer plus de monde :)
Conclusion
La fédération c'est chouette, mais avec la réplication c'est encore mieux. Vivent les projets libres et décentralisés ! Longue vie à Peertube et au fediverse ! Feu aux prisons (dorées ou pas) ! Mort à toutes les polices, du ouèbe et d'ailleurs !
# Mort à toutes les polices
Posté par serge_sans_paille (site web personnel) . Évalué à 6.
Et pourtant il y a plein de polices utiles voire très jolies !
[^] # Re: Mort à toutes les polices
Posté par FantastIX . Évalué à 2.
Y en a pas une qui s'appellerait «Oq», par hasard?
-->[]
[^] # Peau lisse aux fesses
Posté par AlexTérieur . Évalué à 0.
Gardons la tête froide en toute circonstance.
# Commentaire supprimé
Posté par Anonyme . Évalué à 7. Dernière modification le 13 juillet 2018 à 21:35.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 4.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -2. Dernière modification le 13 juillet 2018 à 22:36.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Choix de son instance
Posté par Guillawme (site web personnel, Mastodon) . Évalué à 3.
L’intérêt de la fédération c’est justement de responsabiliser les utilisateurs : plutôt que de faire aveuglément confiance à un fournisseur de service unique (comme YouTube), tu as la possibilité de choisir l’entité qui hébergera ton contenu.
Vu ce que tu racontes là, on dirait que tu ne t’es pas beaucoup (pas du tout ?) renseigné sur cette instance avant d’y publier. Quelques minutes de recherche d’une instance auraient pu t’éviter ce problème.
De plus, pourquoi réactiver un compte YouTube quand tu pourrais simplement changer d’instance PeerTube ? C’est un autre intérêt de la fédération.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 3.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: Choix de son instance
Posté par Guillawme (site web personnel, Mastodon) . Évalué à 2.
Et il ne t'a pas prévenu dès le départ que c'était hébergé sur "une Trucbox dans un appart" ? Si ton activité principale dépend de la fiabilité de l'hébergement de tes créations, je suis désolé mais je ne peux que maintenir que tu aurais dû commencer par mieux te renseigner. En dehors d'internet, tu ferais confiance au premier venu pour assurer un service critique à ton activité sans poser plus de questions ?
C'est très difficile de renvoyer toi-même tes vidéos sur une autre instance depuis chez toi ? Je suis d'accord que la migration automatique entre instances en un clic est une fonctionnalité intéressante, mais c'est un peu gros de te prétendre complètement bloqué sans cette fonctionnalité. Alors oui, ça demande plus d'effort qu'un clic, mais guère plus que ce qu'aurait représenté l'effort initial de se renseigner sur les différentes instances. :-)
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à -7.
Ce commentaire a été supprimé par l’équipe de modération.
# Novlangue
Posté par Zenitram (site web personnel) . Évalué à 9.
développeureuses, utilisateurices… Ha ouais, quand même… il y a une règle décidée pour savoir quand mettre le point milieu et quand il ne faut pas mettre?
[^] # Re: Guide pratique
Posté par rigelk . Évalué à 1.
Non. Pas de règle, mais des "recommendations" du HCE.
La langue française étant une langue vivante, on ne peut pas faire beaucoup mieux que des recommendations, l'usage populaire se charge du reste ;)
[^] # Re: Guide pratique
Posté par Guillawme (site web personnel, Mastodon) . Évalué à 8.
Je n'ai pas pris le temps de lire ce document en détails (faut dire que dès l'avant-propos on se mange du "citoyen.ne.s désireuses et désireux d’agir pour l’égalité réelle", ce qui ne facilite pas la lecture…), mais ne serait-il pas plus raisonnable de recommander l'introduction de formes féminines des mots plutôt que d'inventer des mot hybrides ? Par exemple "développeure" ça pourrait encore marcher sans trop de mal, mais "développeureuse", vraiment ??
On peut tout à fait éviter les stéréotypes de genre et le parler sexiste tout en employant le français "normal", il suffit surtout de faire attention aux propos que l'on tient.
On peut aussi aspirer à une évolution de la langue qui puisse concilier égalité et lisibilité.
[^] # Re: Guide pratique
Posté par Yth (Mastodon) . Évalué à 8.
Ben développeuse ça marche très bien…
Ça sonne correct, c'est réglo, c'est propre, ya pas trop de débat là-dessus, non ?
Yth, père plexe…
[^] # Re: Guide pratique
Posté par raphj . Évalué à 5.
Intéressant, l’article derrière ce lien. Sans donner ma propre opinion sur le sujet (elle n’est pas fixée), je vous propose une petite analyse.
« tous les hommes et toutes les femmes » : effectivement, je suis d’accord avec l’auteur, ce n’est pas idéal. « tous les humains », « tous les gens », "toutes les personnes » son des tournures plus concises qui évitent d’impliquer la notion de genre inutilement dans la phrase. Aidons-le à reformuler son exercice de réécriture du passage de Descartes :
Tout de suite plus lisible ?
Bref. Cet académicien est un peu décevant, et vue la manipulation dont il abuse dans son écrit, je n’ai pas envie de lui faire confiance. Cet intellectuel, cette autorité devrait montrer un peu plus de rigueur, un peu plus l’exemple.
Sinon dans le fond, le vrai problème, c’est qu’il s’oppose à une solution (ce qui est valide) sans en proposer une autre. Il rejette cette charge « aux partisans de la féminisation ».
Déjà, il ne s’agit pas du tout de féminiser quoi que ce soit, il s’agit de rendre plus neutre. L’auteur choisit bien ses mots et manie bien sa langue, il est académicien et il ne se prive pas de le montrer dans ce même texte. Pour moi, c’est subtilement malhonnête.
On peut critiquer une solution. Mais si on reconnaît qu’il y a un problème, on le dit, et on propose une autre solution, sinon les choses ne vont pas avancer puisqu’une solution est nécessaire. Si on ne pense pas puisqu’une solution est nécessaire, c’est qu’on ne pense pas qu’il y a un problème. Ce qui est une position valide.
Aussi, il existe déjà des tas de propositions pour changer la langue. Peut-être qu’on peut en aimer certaines, d’autres moins, la langue va en retenir un ensemble et tout va bien se passer. Pas la peine de montrer une telle inquiétude pour cette langue française.
Je ne connaissais pas le document que rigelk pointe, mais je le trouve plutôt bien fait, il utilise trop peu l’écriture avec les points pour que ça soit si difficile à lire pour les gens qui ne l’aiment pas, et il propose justement un ensemble de solutions, et il n’y a aucune obligation de toutes les aimer. Il propose aussi un ensemble de choses à faire si on tient à casser les discriminations. C’est rapide à lire et ça vaut le coup à mon avis. Et il n’use pas de procédés rhétoriques « moisis » pour faire passer un message.
Donc s’il vous plaît, si vous n’aimez pas certains procédés linguistiques qui tentent d’apporter une solution à ce qui représente un problème pour un certain nombre de gens, si vous comptez le faire remarquer, ne tombez pas dans les travers de cet académicien, vous pouvez essayer de proposer une solution ! Il n’est pas obligatoire de donner une image de vous étant contre quelque chose « et c'est tout ». À ce stade, on sait largement que :
Ça ne sert à rien de montrer cette opposition sans proposer autre chose, les gens de la première catégorie ont besoin d’une solution de toute façon donc ils vont utiliser la meilleure (ou la moins mauvaise) des solutions qui existent actuellement à leur problème.
Bref : arrêtez de râler, ça n’apporte que du négatif. Mais n’hésitez pas à proposer ! :-)
[^] # Re: Guide pratique
Posté par Guillawme (site web personnel, Mastodon) . Évalué à 5. Dernière modification le 15 juillet 2018 à 00:22.
Je profite de cette remarque pour illustrer le comportement des "militant.e.s" de l'écriture inclusive, qui ont tendance justement à voir plus de sous-entendus qu'il n'y en a vraiment dans l'écriture conventionnelle de la plupart des personnes :
Donc même avec cette écriture supposée inclusive, en cherchant la petite bête on peut encore trouver des sous-entendus sexistes…
(Au passage, n'est-ce pas une intéressante propriété du français de pouvoir écrire "la forme masculine" et "le féminin" ? :-)
Je suis à peu près certain qu'en utilisant le mot "homme" Descartes (et autres auteurs des mêmes époques) veut dire "humain" et pas "monsieur l'humain de sexe masculin". C'est malheureux que certains lecteurs d'aujourd'hui y voient un sous-entendu sexiste.
Autrement, je suis d'accord que le texte de cet académicien n'est pas excellent pour les raisons que tu cites, mais son message principal "essayons d'éliminer les tournures discriminantes sans sacrifier la lisibilité" est à mon avis raisonnable. D'ailleurs, pour répondre à la fin de ton message, tout ce que je propose moi c'est d'utiliser la forme d'écriture inclusive la plus lisible, c'est-à-dire l'invention de noms féminins quand ils manquent (typiquement pour des professions ou des fonctions) plutôt que l'utilisation de points ou traits d'union comme dans "utilisateur.ice.s" et le raccourci des articles en le/la au lieu de prendre la peine d'écrire lisiblement les deux options l'une à la suite de l'autre.
[^] # Re: Guide pratique
Posté par raphj . Évalué à 1. Dernière modification le 16 juillet 2018 à 13:40.
Ce que j'ai écrit plait à certaines personnes, ne plait pas d'autres. Si vous êtes dans la deuxième catégorie, n'hésitez pas à me dire ce qui ne va pas pour que je puisse faire mieux la prochaine fois et éviter ce que je devrais éviter de faire :-)
# WebTorrent-Desktop
Posté par abakkk . Évalué à 2.
WebTorrent-Desktop est sur Flathub !
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.