Le site arthur.bebou.netlib.re - retour accueil
git clone git://bebou.netlib.re/arthur.bebou
Log | Files | Refs |
index.sh (51979B)
1 #! page 2 3 title: Guide de survie en territoire youtubesque 4 author: Arthur Pons 5 publication: 2022-10-19 6 description: Comment consulter des vidéos youtube autrement qu\'en utilisant youtube.com 7 sectionmd: main 8 9 10 ## Pourquoi ? 11 12 Sur Youtube on trouve de l'excellent contenu. 13 Malheureusement, Youtube est une entreprise qui a ses torts. 14 15 Parmis eux, se trouve celui d'avoir une très mauvaise interface. 16 17 Liste non exhaustive, non ordonnée et personnelle des défauts de l'interface 18 web de youtube : 19 20 * contient trop de fonctionnalités, je veux avoir mes abonnements, les 21 vidéos et éventuellement les métadonnées des vidéos 22 * est dispendieuse, à la fois en calcul et en mémoire, essayez la sur un 23 ordinateur avec peu de ressources pour vous en convaincre 24 * change souvent 25 * requiert l'éxecution de javascript pour fonctionner, javascript qui sert 26 en partie à collecter des données sur votre personne 27 * intègre un ensemble de technique à la limite du [dark pattern] pour vous 28 inciter à rester plus longtemps sur le site (recommandations, lecture 29 automatique, etc) 30 * oublie certaines de vos préférences - comme celle de la résolution par 31 défaut - en particulier si vous avez configuré votre navigateur pour 32 supprimer les cookies etc 33 * requiert un compte google pour profiter de la fonctionnalité des 34 abonnements 35 * n'affiche pas systématiquement les nouvelles vidéos dans la file des 36 abonnements, d'où l'ajout quelque peu absurde de la cloche 37 * utilise un algorithme de recommandation qui, au moins par moment, a un 38 fort penchant pour les vidéos incitant à l'énervement, la colère, la 39 réaction à chaud et favorisant les vidéos faisant la promotion 40 d'idéologies réactionnaires (comme tous les réseaux sociaux) 41 * utilise un lecteur de vidéo offrant relativement peu de contrôle en 42 comparaison avec les standards non web (vlc, mpv, etc) 43 * affiche des publicités 44 45 [Un bon article] sur des soucis environnementaux de l'interface youtube que je 46 ne soupçonnais pas. 47 48 Améliorer l'interface existante ou en utiliser une autre pourrait donc, en 49 théorie et à des degrés divers : 50 51 * d'utiliser de vieux ordinateurs plus longtemps, bon pour le porte monnaie 52 bon pour la planète voir de redéfinir ce qu'est un "ordinateur" (capable de 53 lire des vidéos) 54 * d'économiser de la bande passante, bon pour le porte monnaie, bon pour la 55 planète 56 * de mieux préserver votre confidentialité 57 * de mieux contrôler le temps que vous passez à regarder des vidéos 58 * d'adapter le visionnage de la vidéo à vos besoins spécifiques (vitesse de 59 lecture, apparence des sous-titre, ajustement de l'image en fonction de 60 votre écran, etc) 61 * limiter le nombre de comptes que vous possédez 62 * ne pas rater de vidéos de vos créateurices préférées 63 * ne pas être exposé·e à de la publicité 64 65 ## Pour les smartphones 66 67 Je connais mal les systèmes d'exploitation de smartphones. Je les trouve, 68 au moins au premier abord, trop peu accueillant à la bidouille pour avoir envie 69 de consacrer du temps. Cependant puisqu'une majorité du temps passé sur Youtube 70 l'est à travers d'un [smartphone] il semble utile que je donne au conseil. 71 72 J'utilise [NewPipe], une application libre qui offre à peu près les mêmes 73 fonctionnalités que l'on verra dans la partie PC à travers une interface 74 similaire à l'application android youtube officielle. Elle permet de s'abonner 75 sans compte, de choisir une résolution par défaut, de télécharger les vidéos, 76 de n'avoir que l'audio, de vérouiller l'écran du téléphone sans interrompre la 77 lecture etc. 78 79 Hormis quelque rare bugs et crashs cette application est géniale, je n'envisage 80 pas de regarder une vidéo youtube autrement sur un téléphone android. Il en 81 existe un fork (une version alternative) nommée [SkipTube] qui intègre 82 SponsorBlock (on en reparlera). 83 84 Je n'utilise pas iOS, je ne sais pas s'il existe un équivalent. Si vous avez 85 connaissance d'une application similaire dîtes le moi. J'imagine qu'il est 86 possible de bidouiller quelque chose de similaire à ce que l'on va voir dans la 87 partie PC grâce à [Termux] mais je n'ai pas essayé. 88 89 ## Pour les ordinateurs 90 91 Les ordinateurs sont en moyenne des machines avec des systèmes plus ouverts. 92 Il est généralement plus facile d'écrire ou de modifier les logiciels faits 93 pour fonctionner sur des PC. C'est en partie pour cela que l'on trouve une 94 diversité d'option plus large quand il s'agit de modifier ou de remplacer 95 l'interface web de youtube. 96 97 En cinq étapes nous irons progressivement de modifications subtiles et 98 "simples" à un système nous affranchissant entièrement de l'interface de 99 youtube. Vous pourrez ainsi vous arrêter là où vous le souhaitez selon votre 100 besoin et votre niveau de confort avec les outils que l'on utilisera. Vous 101 pourrez également piocher dans les différentes étapes pour les combiner et en 102 faire le système qui vous convient le mieux. Certaines astuces en rendent 103 d'autres inutiles, je vous invite à les tester. 104 105 ### 1. Extensions de navigateur 106 107 Il existe tout un tas d'extensions faciles à installer dans votre navigateur 108 qui permettront d'améliorer votre navigation sur youtube. Ci-dessous une liste 109 non exhaustive et pour Firefox : 110 111 [Ublock Origin] 112 113 Meilleur bloqueur de pub. 114 115 [Enhancer for youtube] 116 117 Si j'ai bien fait le tour de l'extension c'est surtout pour améliorer le player 118 youtube et inscrire dans le marbre quelques paramètres défauts. J'y vois un 119 intérêt notamment pour figer la résolution. 120 121 [Sponsorblock] 122 123 Sponsorblock est un base référençant le contenu sponsorisé dans les vidéos. 124 Elle est alimentée par les utilisateurices de youtube. Cette extension ajoute 125 des éléments à l'interface de youtube permettant de sauter le contenu 126 sponsorisé si vous le souhaitez. Par ailleurs la base offre une api si vous 127 voulez consommer ces infos pour autre chose. 128 129 [Youtube recommended videos] 130 131 Cette extension permet de dissimuler certains éléments de l'interface dont les 132 recommandations, les commentaires etc. 133 134 [Youtube addon] 135 136 Pas essayé. 137 138 **Attention**, les extensions peuvent prendre une place significative à 139 l'installation et consommer une quantité certaine de cycles CPU et de RAM. Si 140 vous utilisez une machine peu puissante faites attention de peser les arguments 141 pour et contre de l'utilisation d'extension notamment si vous utilisez une 142 machine peu puissante. 143 144 ### 2. Lecteur RSS 145 146 Les utilisateurices de youtube utilisent souvent la fonctionnalité 147 d'abonnement. Celle-ci permet, sur une page spécifique de l'interface, d'avoir 148 la liste chronologique des dernières sorties des chaînes auxquelles on est 149 abonné. Alternativement, il est possible de demander à youtube d'envoyer un 150 mail. 151 152 Ce fonctionnement a ses limites. D'abord, il est bien connu que la liste n'est 153 pas fiable. C'est pourquoi youtube a ajouté la fonctionnalité de la "cloche" 154 qui permet de garantir que l'on sera notifié. Deuxièmement, au même titre que 155 le reste de l'interface, la page d'abonnement est lourde et chargera très 156 lentement sur un ordinateur peu puissant. Finalement, elle ne propose aucune 157 personnalisation. Il n'est pas possible de choisir ce qui s'affiche comme info, 158 combien de vidéos par page, de créer des catégories de chaînes etc. 159 160 Une partie de ces limites peuvent être résolues par les extensions vues 161 précédemment mais une autre solution est possible. Pour notre plus grand 162 plaisir Youtube maintient des flux [RSS] pour chacune des chaînes. 163 Techniquement ce sont des flux Atom mais nous considérerons que ces deux types 164 de flux sont équivalents. 165 166 Si vous savez déjà ce qu'est un flux RSS vous pouvez sauter jusqu'au prochain 167 titre. 168 169 Un flux RSS est un fichier au format XML qui renseigne un ensemble de contenu, 170 typiquement les dernières mise à jour d'un site tel qu'un blog ou un journal. 171 Ainsi quand un·e youtubeureuse publie une nouvelle vidéo, le fichier RSS de la 172 chaîne est mis à jour de façon à déclarer ce nouveau contenu. En consultant 173 périodiquement le contenu de ce fichier on peut être tenu au courant des 174 dernières vidéos. Par exemple, le flux RSS de la chaîne Heu?reka se trouve à 175 cette url : 176 177 https://www.youtube.com/feeds/videos.xml?channel_id=UC7sXGI8p8PvKosLWagkK9wQ 178 179 On y trouve plusieurs "entrées", à savoir plusieurs vidéos, et leurs 180 informations respectives. On y retrouve le titre de la vidéo, la date de 181 publication, le lien vers la vidéo mais aussi la description qui apparait 182 habituellement en dessous, le nombre de vues etc. Il serait techniquement 183 possible de consulter "à la main" ces fichiers pour être à jour mais ça n'est 184 pas très pratique pour un humain, notamment si vous voulez vous abonner à un 185 grand nombre de chaîne. Pour vous en convaincre voici ce à quoi ça ressemble : 186 187 <entry> 188 <id>yt:video:WqDVmluGdec</id> 189 <yt:videoId>WqDVmluGdec</yt:videoId> 190 <yt:channelId>UC7sXGI8p8PvKosLWagkK9wQ</yt:channelId> 191 <title>Immobilier & inflation : l'inflation est-elle sous estimée ?</title> 192 <link rel="alternate" href="https://www.youtube.com/watch?v=WqDVmluGdec"/> 193 <author> 194 <name>Heu?reka</name> 195 <uri>https://www.youtube.com/channel/UC7sXGI8p8PvKosLWagkK9wQ</uri> 196 </author> 197 <published>2022-10-17T07:12:08+00:00</published> 198 <updated>2022-10-17T14:37:15+00:00</updated> 199 ... 200 201 Il existe des logiciels spécialisés pour agréger et consulter des flux RSS. Ils 202 sont généralement appelés "Lecteurs RSS". Il existe une très grande diversité 203 de [lecteurs RSS]. Je prendrais pour exemple Thunderbird puisque c'est un 204 outil que je connais déjà, que beaucoup de gens utilisent pour leurs mails, 205 qu'il est libre et pas une application web. 206 207 Dans Thunderbird vous pouvez aller dans 208 209 Fichier -> Nouveau -> Compte de flux 210 211 Pour créer un "compte" qui regroupera tout vos flux au même titre que vous avez 212 un ou des "comptes" pour vos différentes adresses mails. Vous pouvez aussi 213 utiliser le raccourci (en maintenant alt) : 214 215 alt+f+n+d 216 217 Une boite de dialogue s'ouvre où vous pouvez choisir le nom du compte. Si l'on 218 ne veut y mettre que des chaînes youtube on peut choisir un nom similaire à 219 "flux Youtube". L'important est que vous puissiez le reconnaître rapidement 220 quand il s'affichera dans la barre Thunderbird à gauche. 221 222 Une fois créé, vous pouvez cliquer sur "Gérer les abonnements" pour en ajouter. 223 La boite de dialogue qui suit vous invite à rentrer l'url du flux, configurer 224 la fréquence à laquelle Thunderbird va vérifier si de nouvelles vidéos sont 225 sorties, l'emplacement Thunderbird du flux etc. 226 227 Une fois les paramètres rentrés, vous pouvez cliquer sur "Ajouter" et 228 Thunderbird ira récupérer un historique des dernières vidéos. Chaque message 229 contiendra le titre de la vidéo en "sujet" et le lien vers la vidéo dans un 230 champ "site web". Malheureusement je ne sais pas comment faire en sorte que 231 Thunderbird affiche la description de la vidéo dans le corps du message. 232 233 Si vous avez beaucoup d'abonnements et souhaitez recréer un style de flux comme 234 celui de l'interface web de youtube vous pouvez ajouter un premier flux, 235 renommer le dossier qui s'est créé à gauche - qui devrait avoir le nom de la 236 chaîne que vous venez d'ajouter - par "Youtube" en faisant 237 238 clique droit -> renommer 239 240 puis, lors de l'ajout des futurs flux, choisir dans la liste déroulante le 241 dossier "Youtube". Si tout est bien paramétré, la boite de dialogue d'ajout 242 devrait avoir un champ "Articles stockés dans" avec la valeur 243 "nom_du_compte/Youtube" et, après avoir cliqué sur ajouté, ce dossier devrait 244 entremêler les vidéos des différentes chaînes par ordre chronologique. 245 246 Vous avez dorénavant dans une application locale et rapide toutes les nouvelles 247 vidéos de vos chaînes préférées sans avoir recours à un compte Google et sans 248 avoir à consulter l'interface. 249 250 Si vous avez compris ce qu'est un flux RSS, comment récupérer son lien et 251 comment l'ajouter à Thunderbird, vous devriez pouvoir vous adapter à la plupart 252 des lecteurs RSS disponibles. Les lecteurs ont tous leurs avantages et 253 inconvénients, si vous n'êtes pas satisfaits par Thunderbird je vous incite à 254 chercher des alternatives. Nous allons en voir une ensemble à la quatrième 255 étape. Évitez tout de même de payer un lecteur RSS ou pire, de prendre 256 abonnement à un lecteur RSS. Il existe de nombreux logiciels libres entièrement 257 gratuits qui font l'affaire. 258 259 Il n'y a malheureusement pas de moyen parfaitement fiable d'obtenir le flux rss 260 d'un site/chaîne/blog. Il existe parfois le logo des flux quelque part sur la 261 page. Le flux est parfois caché dans le footer des pages. Il est souvent 262 possible de le trouver dans les sources de la page. Pour cela, sur firefox, 263 faire `Ctrl+U` pour afficher les sources du site qui vous intéresse puis 264 cherchez "rss" avec `Ctrl+F` pour peut-être tomber sur le lien du flux. 265 266 Sinon l'ubiquité de certains CMS fait que beaucoup de sites ont un flux rss 267 sans même le savoir, accessible en ajoutant "/rss" ou "/feed" à la fin de l'url 268 de la page d'accueil. 269 270 Il existe un script nommé [sfeed_web] qui prend en entrée une page html et 271 cherche le ou les flux rss dans la page. 272 273 Par exemple sur linux : 274 275 curl -sL lemonde.fr | sfeed_web 276 https://www.lemonde.fr/rss/une.xml application/rss+xml 277 278 ### 3. Un lecteur de vidéos alternatif 279 280 Nous sommes dorénavant débarrassés du compte Google et n'avons plus à 281 consulter la page d'abonnement des enfers. Pour parfaire nos besoins de 282 performances il faut également substituer la page de lecture de la vidéo elle 283 même. Le lecteur web est très peu performant. 284 285 Il semblerait que le décodage de la vidéo ne soit pas plus gourmand selon s'il 286 est fait sur youtube.com ou en accédant à la vidéo directement en la lisant 287 dans le lecture HTML5 de base. En terme de performance la différence notable se 288 trouve au temps de chargement de la page. On peut donc émettre l'hypothèse que 289 la difficulté du décodage vidéo n'est imputable qu'à firefox et pas youtube. 290 Les performances que je constate sont similaires sur d'autres navigateurs que 291 firefox. 292 293 Quoi qu'il en soit sur ma machine professionnelle équipée d'un 294 Intel i5 de septième génération avec quatre cœurs, un simple comparatif de 295 charge entre le lecteur web et vlc donne les résultats suivant : 296 297 1080p60fps 1080p30fps 480p 240p audio 298 firefox 70% 48% 32% 26% - 299 vlc 25% 15% 10% 9% 5% 300 301 Chaque valeur est en % utilisé de la puissance totale du cpu 302 303 Commentaire : 304 305 J'ai retesté sur cette vidéo https://www.youtube.com/watch?v=LXb3EKWsInQ. 306 C'est marrant, en 1080p60 tous les cœurs sont à 100% pour les flux vidéos HDR, 307 plutôt autour de 55/60% pour les flux non HDR. Constat similaire sur mpv. 308 309 Fin de commentaire 310 311 Sur un raspberry3 on obtient ces résultats : 312 313 720p 480p 240p audio 314 firefox bloquée sur une image 77% 65% - 315 mpv 40% 25% 15% 10% 316 317 On constate une charge diminuée par un facteur de 3 ou plus ! Autrement dit, 318 utiliser un vieil/micro ordinateur ne condamne pas à ne pas pouvoir lire de 319 vidéo. C'est le web qui nous fait croire l'inverse. Vous aviez peut-être déjà 320 entendu qu'un raspberry "ça tourne bien mais faut pas espérer regarder des 321 vidéos youtube quoi". En fait si, si l'on se sépare du puits de ressource que 322 sont les navigateurs. 323 324 En plus de cela, le fait de pouvoir fortement personnaliser les lecteurs tels 325 que vlc ou mpv me fait penser qu'ils sont plus accessibles. N'étant pas en 326 situation de handicap je ne peux pas confirmer cette intuition, si vous êtes 327 concerné·e cela m'intéresse. 328 329 La liste des avantages fonctionnels de logiciels comme mpv ou vlc sur des 330 lecteurs de vidéo web est très longue. Deux exemples qui me concernent 331 directement. Je regarde pas mal de directs, sur youtube ou twitch. 332 Les regarder dans mpv permet de remonter dans le temps. Vous avez vu ou entendu 333 quelque chose que vous voulez revoir tout de suite mais personne n'a "clippé" 334 ce passage ? Le replay n'a pas choisi la bonne action ? Pas d'inquiétude, les 335 lecteurs gardent une partie de la vidéo en cache pour que vous puissiez revenir 336 en arrière et le regarder au rythme ou vous voulez. 337 Maintenant vous voulez aller aux toilettes et vous regardez autre chose qu'un 338 match de foot qui pourrait vous être spoilé par vos voisins ? Faîtes pause et 339 regardez le reste de la vidéo en revenant. Vous aimeriez tout de même revenir 340 au direct sans rien rater ? Accélérez la lecture de la vidéo et laissez faire. 341 342 Cela dit, comment faire pour lire une vidéo youtube en dehors du navigateur ? 343 Il y a plusieurs approches et plusieurs outils, nous allons nous intéresser à 344 chacune des briques pour ensuite pouvoir les combiner selon notre souhait. 345 346 #### yt-dlp + mpv 347 348 Nous allons utiliser le lecteur [mpv]. C'est une sorte d'équivalent à VLC qui a 349 la particularité d'être facile à utiliser via les lignes de commande. Sur un 350 fichier vidéo locale mpv s'utilise aussi simplement que : 351 352 mpv video.mp4 353 354 Comme tous les lecteurs vidéos dignes de ce nom mpv peut aussi lire un flux 355 vidéo streamé. Pour cela il suffit de lui passer en argument le lien vers ce 356 flux à la place du nom du fichier. Par exemple, la commande suivante ouvrira 357 une vidéo de démo du logiciel "aerc" habituellement présentée sur 358 https://aerc-mail.org/ : 359 360 mpv https://yukari.sr.ht/aerc-intro.webm 361 362 Si l'on fait la même chose pour une vidéo youtube : 363 364 mpv https://www.youtube.com/watch?v=dQw4w9WgXcQ 365 366 La vidéo s'ouvre bien avec mpv. Cependant vous noterez ce qui s'affiche dans 367 votre console : 368 369 (+) Video --vid=1 (*) (h264 1920x1080 25.000fps) 370 (+) Audio --aid=1 --alang=eng (*) (opus 2ch 48000Hz) 371 AO: [pulse] 48000Hz stereo 2ch float 372 VO: [gpu] 1920x1080 yuv420p 373 374 La vidéo a automatiquement été lancée en 1080p. Par défaut mpv choisi la 375 résolution disponible la plus élevée. Même si cela peut parfaitement convenir 376 à votre besoin il serait préférable d'avoir un peu plus de contrôle, par choix 377 mais aussi par nécessité. Si vous exécutez cette commande par exemple : 378 379 mpv https://www.youtube.com/embed/LrzWrvOjJm8 380 381 vous risqueriez d'avoir des surprises. La plus haute résolution disponible pour 382 cette vidéo est la 8k. J'espère pour vous que vous avez une bonne bande 383 passante et une machine de guerre. Pour nous permettre de choisir la résolution 384 nous allons faire appel à un logiciel nommé [yt-dlp], un fork activement 385 développé de youtube-dl. 386 387 Ce logiciel permet, entre mille autres choses, d'afficher et de sélectionner 388 les différentes qualités d'une vidéo youtube. Il fonctionne pour de nombreux 389 autres sites d'ailleurs. Avec l'option `-F` nous pouvons afficher les 390 résolutions disponibles pour cette vidéo du débat présidentiel sur le climat : 391 392 yt-dlp -F 1-28-grEZjk 393 [youtube] 1-28-grEZjk: Downloading webpage 394 [youtube] 1-28-grEZjk: Downloading android player API JSON 395 [youtube] 1-28-grEZjk: Downloading player c6736352 396 [info] Available formats for 1-28-grEZjk: 397 ID EXT RESOLUTION FPS | FILESIZE TBR PROTO | VCODEC VBR ACODEC ABR ASR MORE INFO 398 ------------------------------------------------------------------------------------------------------------------------ 399 sb2 mhtml 48x27 | mhtml | images storyboard 400 sb1 mhtml 80x45 | mhtml | images storyboard 401 sb0 mhtml 160x90 | mhtml | images storyboard 402 139 m4a | 67.62MiB 48k https | audio only mp4a.40.5 48k 22050Hz low, m4a_dash 403 249 webm | 70.80MiB 51k https | audio only opus 51k 48000Hz low, webm_dash 404 250 webm | 88.68MiB 63k https | audio only opus 63k 48000Hz low, webm_dash 405 140 m4a | 179.47MiB 129k https | audio only mp4a.40.2 129k 44100Hz medium, m4a_dash 406 251 webm | 159.61MiB 115k https | audio only opus 115k 48000Hz medium, webm_dash 407 17 3gp 176x144 7 | 105.09MiB 75k https | mp4v.20.3 75k mp4a.40.2 0k 22050Hz 144p 408 160 mp4 256x144 30 | 79.39MiB 57k https | avc1.4d400c 57k video only 144p, mp4_dash 409 278 webm 256x144 30 | 95.95MiB 69k https | vp9 69k video only 144p, webm_dash 410 133 mp4 426x240 30 | 161.61MiB 116k https | avc1.4d4015 116k video only 240p, mp4_dash 411 242 webm 426x240 30 | 161.06MiB 116k https | vp9 116k video only 240p, webm_dash 412 134 mp4 640x360 30 | 295.99MiB 213k https | avc1.4d401e 213k video only 360p, mp4_dash 413 18 mp4 640x360 30 | 760.45MiB 548k https | avc1.42001E 548k mp4a.40.2 0k 44100Hz 360p 414 243 webm 640x360 30 | 413.92MiB 298k https | vp9 298k video only 360p, webm_dash 415 135 mp4 854x480 30 | 472.75MiB 341k https | avc1.4d401f 341k video only 480p, mp4_dash 416 244 webm 854x480 30 | 574.87MiB 414k https | vp9 414k video only 480p, webm_dash 417 136 mp4 1280x720 30 | 1.47GiB 1084k https | avc1.4d401f 1084k video only 720p, THROTTLED, mp4_dash 418 247 webm 1280x720 30 | 1.02GiB 755k https | vp9 755k video only 720p, THROTTLED, webm_dash 419 22 mp4 1280x720 30 | ~ 1.68GiB 1213k https | avc1.64001F 1213k mp4a.40.2 0k 44100Hz 720p 420 298 mp4 1280x720 60 | 2.60GiB 1923k https | avc1.4d4020 1923k video only 720p60, mp4_dash 421 302 webm 1280x720 60 | 2.32GiB 1715k https | vp9 1715k video only 720p60, webm_dash 422 299 mp4 1920x1080 60 | 5.05GiB 3731k https | avc1.64002a 3731k video only 1080p60, mp4_dash 423 303 webm 1920x1080 60 | 4.35GiB 3213k https | vp9 3213k video only 1080p60, webm_dash 424 425 Si on passe un peu de temps à analyser ce tableau nous pouvons en apprendre 426 beaucoup sur le fonctionnement de youtube. On constate que youtube a des 427 streams audio (ID de 139 à 251), des streams vidéos (tous ceux avec "video 428 only" dans la colonne ACODEC - audio codec) et deux streams avec les deux 429 ensemble (ID 18 et 22). A l'aide d'algo un peu malin et du protocole [HLS] 430 youtube peut identifier la combinaison de streams audio et vidéo qui conviendra 431 le mieux à votre débit - mais pas la puissance de votre machine ou alors c'est 432 très mal implémenté - et s'adaptera en temps réel. 433 434 En ayant connaissance de ces identifiants et à l'aide de l'option `-f` de 435 yt-dlp nous pouvons dorénavant choisir précisément les streams que l'on veut. 436 C'est le moment de faire son marché. Puisque c'est un débat présidentiel, nous 437 décidons de ne récupérer que l'audio, comme nous le ferions pour un podcast. 438 Mais attention, si nous lancions telle quelle la commande : 439 440 yt-dlp -f 139 https://www.youtube.com/watch\?v\=1-28-grEZjk 441 442 nous téléchargerions en local la totalité du débat (67Mo). Pour pouvoir le 443 streamer dans mpv il nous faut ajouter une option `--get-url` qui permet 444 d'obtenir le lien direct vers ce stream audio. C'est ensuite ce lien que l'on 445 fera passer en argument à mpv : 446 447 yt-dlp -f 139 --get-url https://www.youtube.com/watch\?v\=1-28-grEZjk 448 https://rr1---sn-4g5e6ns6.googlevideo.com/videoplayback?expire=1648249604&ei=pPY9YtiPB837xN8PiuiKsAU&ip=2a01%3Acb10%3A2da%3A2600%3Ae488%3A3768%3A858%3Afc0d&id=o-AB05vEVWFOI_-gi5O6CK_NLkCWMx0X_CVYKxDabR7WTp&itag=139&source=youtube&requiressl=yes&mh=pM&mm=31%2C26&mn=sn-4g5e6ns6%2Csn-25ge7nzs&ms=au%2Conr&mv=m&mvi=1&pl=40&initcwndbps=1018750&vprv=1&mime=audio%2Fmp4&gir=yes&clen=70904512&dur=11627.809&lmt=1647388719857621&mt=1648227660&fvip=1&keepalive=yes&fexp=24001373%2C24007246&beids=23886207&c=ANDROID&txp=5432434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIgdV_eYJ9F1UehezBlnjURICGL7dkKjdz2NPCya6b7tWICIQCMzNCuNNZrg9YE04omDXHQZ6zr0xiYyS2mhKtYA9ZihA%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIgdGhwPJPgf4QTOD6i3hiDPURnvoNBfc0kMcxY_IKY5VoCIQDB-B35CY6KlUPI0FmhyjFww9nKfwnsUkOHVaWMToHtdA%3D%3D 449 450 C'est derrière ce lien barbare que se cache le stream. Si vous avez exécuté la 451 commande vous pouvez essayer d'ouvrir le lien récupéré dans un navigateur, cela 452 fonctionnera parfaitement bien. Celui dans l'article est expiré, youtube les 453 change constamment. Pour éviter d'avoir à le copier/coller vous pouvez capturer 454 le résultat de la commande pour la faire passer en argument à MPV : 455 456 mpv $(yt-dlp -f 139 --get-url https://www.youtube.com/watch\?v\=1-28-grEZjk) 457 458 Les formats de yt-dlp peuvent être conditionnels, porter sur la taille des 459 fichiers, le bitrate etc. Par exemple on peut lui demander le pire stream audio 460 avec le format `worstaudio` ou le flux vidéo le plus proche d'un certain 461 bitrate. Voir la [documentation] pour plus d'infos. 462 463 Une liste non exhaustive des options de `yt-dlp` que je trouve utiles : 464 465 * `-F` permet de lister les formats disponibles 466 * `-f` permet de choisir le format 467 * `--get-url` renvoie l'url directe vers la vidéo au bon format plutôt que de 468 lancer le téléchargement 469 * `-U` met à jour yt-dlp 470 * `--write-subs` extrait les sous-titres disponibles 471 472 Encore plus simple, mpv vient avec une option qui, si vous avez yt-dlp 473 installé sur votre pc, vous permet de faire passer des formats dans la même 474 commande. Par exemple, si l'on veut un son d'une bonne qualité et une image un 475 peu médiocre parce que l'on fait à manger en même temps et que l'on y jettera 476 un coup d'oeil que rarement : 477 478 mpv --ytdl-format="251+134" https://www.youtube.com/watch\?v\=1-28-grEZjk 479 480 mpv se chargera de faire appel à `yt-dlp` lui même. 481 482 Liste non exhaustive d'options de `mpv` que je trouve utiles : 483 484 * `--ytdl-format` pour choisir le format de la vidéo 485 * `--volume` pour choisir le volume au démarrage de la vidéo 486 * `--cache-secs` pour déterminer le nombre de secondes pré-chargées 487 * `--term-osd-bar` pour afficher une barre de progression dans la console, 488 pour un podcast par exemple 489 490 TODO : Ajouter un passage sur --script-opts=ytdl_hook-all-formats=yes et --hls-bitrate si ça fonctionne 491 TODO : prérequis, créer une issue sur github ? 492 493 A ce stade là vous pourriez vous faire la remarque : "Génial mais c'est 494 fatiguant de taper la commande à chaque fois, de faire des copier/coller etc et 495 qu'est-ce que l'on fait si l'on veut faire une recherche ?" Et vous auriez 496 raison ! 497 498 Nous allons voir trois solutions, l'une pour les liens youtube sur lesquels 499 vous tomberez inévitablement en parcourant le web, l'autre qui ne dispensera 500 pas de copier/coller mais facilitera l'affaire si quelqu'un vous envoie un lien 501 youtube via une application de messagerie par exemple, la dernière qui vous 502 permettra de chercher une vidéo youtube sans passer par youtube.com. 503 504 #### ff2mpv 505 506 [ff2mpv] est une extension chrome ou firefox permettant de lancer la lecture 507 d'une vidéo youtube depuis le navigateur dans mpv. Elle fonctionne en 508 installant sur votre machine un script qui lancera une commande identique à 509 celle que l'on a construit précédemment. Ce script se lancera quand vous ferez 510 clique droit sur un lien youtube puis "Play in MPV". 511 512 La procédure d'installation est disponible sur [le wiki du dépôt github] de 513 l'extension. 514 515 Le nerf de la guerre se trouve dans un script nommé `ff2mpv.py` qui a pour but de 516 lancer une commande similaire à celles que l'on a construit plus tôt dans 517 l'article. 518 519 Dans mon ff2mpv.py j'ai par exemple : 520 521 args = ["mpv","--ytdl-format=worstvideo[height>=400]+worstaudio/worstvideo[height>=300]+worstaudio/worstvideo[height>=700]+worstaudio/worst/best","--cache-secs=15","--",url] 522 523 Cette commande utilise les formats conditionnels de yt-dlp pour tenter d'avoir, 524 dans cet ordre précisément, la meilleure qualité en 480p, sinon en 360p sinon 525 en 720p sinon la meilleure qualité tout court. 526 527 #### alias 528 529 Si vous utilisez une distribution linux vous pouvez créer des alias. Un alias 530 permet d'exécuter une commande en en tapant une autre généralement plus courte. 531 C'est une sorte de raccourci. Nous pourrions par exemple créer l'alias 532 533 yt() mpv --ytdl-format="18" --cache-secs=15 --volume=50 "$@" 534 535 Grâce à cet alias, si vous avez actuellement dans le presse-papier un lien 536 youtube il suffit de taper 537 538 yt ctrl+v 539 540 pour lancer une vidéo youtube dans mpv avec les options que vous conviennent. 541 Ici j'ai choisi le format `18`, vidéo et audio muxés en 360p. 542 543 #### Idiotbox pour la recherche youtube 544 545 Vous voulez retrouver ce super meme qui vous avait bien fait rire ? Vous ne 546 voulez pas avoir affaire à l'interface youtube.com ? Quelqu'un a créé un petit 547 logiciel nommé [idiotbox] exactement pour cela. Il offre une interface web - 548 et gopher ! - très simple, qui va faire la recherche youtube pour vous et vous 549 présente les résultats de façon claire et sobre. Pas besoin de l'installer, la 550 personne l'ayant développé en héberge une [instance] elle même. 551 552 ### 4 : Vive la console 553 554 Cette étape vise à transposer ce que l'on a vu précemment dans la console en 555 faisant appel à peu de dépendances. L'idée est d'avoir un ensemble d'outils qui 556 permet d'avoir une utilisation agréable et efficace de youtube sur un 557 ordinateur aussi peu puissant qu'un raspberry et avec une quantité de mémoire 558 limitée. Cela permet également d'avoir uniquement recours au clavier. Deux 559 nouveaux outils vont nous aider dans ce travail, sfeed et lynx. 560 561 #### sfeed et sfeed_curses 562 563 [sfeed] est un ensemble d'outils permettant de parser, manipuler, lire des 564 flux atom/rss. Le nom du projet porte celui de son composant principal, le 565 programme sfeed, qui fait le gros du travail en parsant l'xml des flux. 566 567 Bien qu'sfeed ne soit pas si compliqué que ça je ne vais pas m'aventurer à en 568 expliquer tout le fonctionnement. Le [README] du projet et les pages de manuel 569 des scripts fournis sont très bien fait, je vous recommande vivement de les 570 lire attentivement - et pas que en diagonale en cherchant rapidement ce dont 571 vous avez besoin, je vous vois ! 572 573 Je vais expliquer les modifications que j'y ai apporté pour deux raisons. 574 575 1. Vous voudriez peut-être faire les mêmes 576 2. Démontrer que c'est un ensemble d'outil très "hackable", certains diraient 577 conviviale 578 579 Tout commence avec sfeed. Fondamentalement tout ce qu'sfeed fait est de 580 transformer des données ayant cette tête - ici les deux premiers articles de la 581 une du monde tel que décrits dans le flux rss du journal : 582 583 <item> 584 <title><![CDATA[Pénurie de carburant, en direct : la grève est reconduite sur les sites de TotalEnergies et Esso-ExxonMobil, la CGT appelle à élargir le mouvement à tout le secteur de l’énergie]]></title> 585 <pubDate>Thu, 13 Oct 2022 08:14:13 +0200</pubDate> 586 <description><![CDATA[TotalEnergies « doit augmenter ses salaires » et la CGT doit « se saisir de la main qui a été tendue » pour négocier, a affirmé jeudi matin sur RTL, le ministre de l’économie, Bruno Le Maire.]]></description> 587 <guid isPermaLink="true">https://www.lemonde.fr/economie/live/2022/10/13/penurie-de-carburant-la-greve-se-poursuit-dans-les-raffineries-premieres-requisitions-chez-esso-exxonmobil-suivez-la-situation-en-direct_6145597_3234.html</guid> 588 <link>https://www.lemonde.fr/economie/live/2022/10/13/penurie-de-carburant-la-greve-se-poursuit-dans-les-raffineries-premieres-requisitions-chez-esso-exxonmobil-suivez-la-situation-en-direct_6145597_3234.html</link> 589 <media:content url="https://img.lemde.fr/2022/10/13/500/0/6000/3000/644/322/60/0/0a467f5_1665643499826-dsc04333bis.jpg" width="644" height="322"> 590 <media:credit scheme="urn:ebu">MARIE BENOIST POUR « LE MONDE »</media:credit> 591 </media:content> 592 </item> 593 <item> 594 <title><![CDATA[Pap Ndiaye, ministre de l’éducation nationale : « Il y a bel et bien une vague de port de tenues pouvant être considérées comme religieuses »]]></title> 595 <pubDate>Thu, 13 Oct 2022 06:55:08 +0200</pubDate> 596 <description><![CDATA[Le ministre dévoile les chiffres des atteintes à la laïcité, qui sont en hausse. Un phénomène porté notamment par les réseaux sociaux, assure-t-il.]]></description> 597 <guid isPermaLink="true">https://www.lemonde.fr/societe/article/2022/10/13/pap-ndiaye-la-republique-est-plus-forte-que-tiktok_6145585_3224.html</guid> 598 <link>https://www.lemonde.fr/societe/article/2022/10/13/pap-ndiaye-la-republique-est-plus-forte-que-tiktok_6145585_3224.html</link> 599 <media:content url="https://img.lemde.fr/2022/10/12/1664/0/4438/2219/644/322/60/0/ab91c70_1665584679283-ndiaye-alcock-008.JPG" width="644" height="322"> 600 <media:description type="plain">Pap Ndiaye, ministre de l'Éducation nationale et de la Jeunesse, au ministère de l'éducation nationale, à Paris, le 11 octobre 2022. </media:description> 601 <media:credit scheme="urn:ebu">ED ALCOCK/MYOP POUR « LE MONDE »</media:credit> 602 </media:content> 603 </item> 604 605 en un format TSV - Tab Separated Value : 606 607 1665641653 Pénurie de carburant, en direct : la grève est reconduite sur les sites de TotalEnergies et Esso-ExxonMobil, la CGT appelle à élargir le mouvement à tout le secteur de l’énergie https://www.lemonde.fr/economie/live/2022/10/13/penurie-de-carburant-la-greve-se-poursuit-dans-les-raffineries-premieres-requisitions-chez-esso-exxonmobil-suivez-la-situation-en-direct_6145597_3234.html TotalEnergies « doit augmenter ses salaires » et la CGT doit « se saisir de la main qui a été tendue » pour négocier, a affirmé jeudi matin sur RTL, le ministre de l’économie, Bruno Le Maire. html https://www.lemonde.fr/economie/live/2022/10/13/penurie-de-carburant-la-greve-se-poursuit-dans-les-raffineries-premieres-requisitions-chez-esso-exxonmobil-suivez-la-situation-en-direct_6145597_3234.html 608 1665636908 Pap Ndiaye, ministre de l’éducation nationale : « Il y a bel et bien une vague de port de tenues pouvant être considérées comme religieuses » https://www.lemonde.fr/societe/article/2022/10/13/pap-ndiaye-la-republique-est-plus-forte-que-tiktok_6145585_3224.html Le ministre dévoile les chiffres des atteintes à la laïcité, qui sont en hausse. Un phénomène porté notamment par les réseaux sociaux, assure-t-il. html https://www.lemonde.fr/societe/article/2022/10/13/pap-ndiaye-la-republique-est-plus-forte-que-tiktok_6145585_3224.html 609 610 L'avantage de ce format est qu'il est bien plus facile de le manipuler, 611 notamment avec tous les outils standards Unix. 612 613 On pourrait requêter à la main le flux rss et le faire passer par sfeed à 614 chaque fois que l'on veut se mettre à jour mais ce ne serait pas très pratique. 615 Le projet sfeed prévoit un mécanisme de mise à jour nommé `sfeed_update`. Ce 616 script a pour but de prendre une liste de flux auxquels vous êtes abonné·e et 617 écrire les fichiers correspondants au format sfeed dans le dossier adéquat - 618 normalement `~/.sfeed/feeds`. Il est configurable via le fichier de conf 619 `~/.sfeed/sfeedrc`. 620 621 sfeedrc est un fichier de "configuration" mais en réalité c'est un script shell 622 qui surcharge la fonction `feeds` qui se trouve dans le script `sfeed_update`. 623 La surcharge permet d'appeler la fonction `feed` de `sfeed_update` sur tous les 624 flux. S'abonner à un flux revient donc à ajouter une ligne type 625 626 feed 'Le Réveilleur' 'https://www.youtube.com/feeds/videos.xml?channel_id=UC1EacOJoqsKaYxaDomTCTEQ' 627 628 à la fonction `feed` dans sfeedrc. Le premier argument sera le nom du fichier 629 créé qui contiendra la sortie sfeed appelé sur le lien vers le flux. 630 631 Après avoir listé toutes les chaînes auxquelles vous voulez vous abonner il 632 suffit d'exécuter `sfeed_update` pour générer tous les fichiers. Il devrait y 633 avoir dans `~/.sfeed/feeds` des fichiers texte au format TSV. 634 635 Il est assez évident que s'il n'est pas agréable de lire un flux rss en xml, ce 636 n'est pas beaucoup mieux au format sfeed tel quel. Le projet vient donc avec un 637 ensemble de script qui permettent de formatter la sortie d'sfeed. Par exemple 638 `sfeed_html` transforme le flux en fichier html, `sfeed_plain` en un format 639 texte relativement lisible pour un humain etc. 640 641 L'interface fournie la plus aboutie est probablement sfeed_curses. C'est un 642 logiciel, basé sur la librairie curses, qui génère une interface TUI - Terminal 643 User Interface - permettant de parcourir ses flux et ouvrir les éléments. 644 645 Si vous avez réussi à exécuter sfeed_update une première fois et que vous faites 646 647 sfeed_curses ~/.sfeed/feeds/* 648 649 l'interface devrait charger l'ensemble des flux. S'affichera à gauche un menu 650 permettant de parcourir les flux. En un sélectionnant vous verrez s'afficher à 651 droite tous les éléments du flux. 652 653 Il faut encore choisir comment vous allez ouvrir le contenu. Par défaut 654 `sfeed_curses` utilise le paramétrage de `xdg-open` et ouvrira très 655 probablement les liens dans votre navigateur de choix. Vous pouvez conserver ce 656 fonctionnement ou le modifier. `sfeed_curses` laisse la possibilité de donner 657 une valeur à une variable d'environnement `SFEED_PLUMBER` qui devra pointer 658 vers un script. `sfeed_curses` exécutera ce script en lui passant en argument 659 le lien de l'élément que l'on veut ouvrir. On peut ainsi dans le script choisir 660 très exactement avec quoi nous voulons ouvrir l'élément, selon si c'est un 661 article, une image, une vidéo etc. Si vous voulez que le contenu s'ouvre dans 662 la même fenêtre il faut aussi donner la valeur "1" à la variable 663 `SFEED_PLUMBER_INTERACTIVE`. 664 665 Pour modifier la valeur des variables d'environnement 666 667 export SFEED_PLUMBER=~/.sfeed/sfeed_plumber 668 export SFEED_PLUMBER_INTERACTIVE="1" 669 670 Evidemment le script `sfeed_plumber` peut se nommer n'importe comment et se 671 trouver où vous voulez. 672 673 A la lumière de tout ce que l'on a vu précedemment, je recommande d'ouvrir les 674 vidéos youtube avec mpv, les articles avec lynx etc. Pour exemple mon script 675 `sfeed_plumber` ressemble à quelque chose comme ça : 676 677 #!/bin/sh 678 679 case $1 in 680 *"youtube.com/watch"* ) 681 [ "$2" = 'audio' ] && format="worstaudio" || format="18" 682 mpv --ytdl-format="$format" --cache-secs=30 --volume=50 "$1" 683 ;; 684 *"tube.picasoft.net"* ) 685 mpv --ytdl-format="480p" --cache-secs=15 --volume=50 "$1" 686 ;; 687 *"twitch.tv"* ) 688 mpv --ytdl-format="480p" --volume=50 "$1" 689 ;; 690 *".mp4"* ) 691 mpv "$1" 692 ;; 693 * ) 694 lynx "$1" 695 esac 696 697 Dernière modification que je vais couvrir mais qui m'est particulièrement 698 personnelle. Je suis abonné a beaucoup de chaînes. Mon `sfeed_update` génère 699 donc beaucoup de fichiers dans `~/.sfeed/feeds`. En les ouvrant dans 700 `sfeed_curses` je dois donc parcourir une longue liste sur la gauche pour 701 vérifier quelles chaînes ont publié récemment. Je préfère avoir une liste 702 unique comme sur l'interface youtube. Pour cela il faut que je concatène tous 703 les flux youtube en un seul fichier au format sfeed, trié chronologiquement. 704 705 J'ai modifié `sfeedrc` pour que les fichiers générés depuis des flux youtube 706 contiennent tous `[Y]` dans leurs noms. Exemple : 707 708 feed '[Y] Le Réveilleur' 'https://www.youtube.com/feeds/videos.xml?channel_id=UC1EacOJoqsKaYxaDomTCTEQ' 709 710 J'ai ensuite ajouté ce bout de shell à la fin de la fonction `feed` - écrit y'a 711 longtemps, j'pense qu'on peut mieux faire - pour faire la concaténation. 712 713 wait 714 cd ~/.sfeed/feeds 715 twoweeksago=$(date --date="2 weeks ago" +%s) 716 cat \[Y\]\ * | awk -v t=$twoweeksago '$1 > t' | sort -t ' ' -k1rn,1 > youtube 717 rm -f \[Y\]\ * 718 719 J'obtiens ainsi un seul fichier youtube qui décrit, dans l'ordre 720 antéchronologique, toutes les vidéos sorties sur les deux dernières semaines. 721 722 Je peux finalement faire 723 724 sfeed_curses < ~/.sfeed/feeds/youtube 725 726 pour ouvrir mon flux d'abonnement youtube. 727 Si vous voulez pas retaper cette commande souvenez vous des alias. 728 729 Si vous avez suivi jusque là vous remarquerez qu'`sfeed_curses` n'affiche pas 730 les noms de chaînes et les titres mais la date de publication de l'élément. 731 732 Pour y remédier j'ai patché les sources afin que s'affiche dans la première 733 colonne non pas le nom du fichier mais la valeur que l'on trouve dans le champ 734 "auteur" du flux rss. Vous pouvez trouver le patch 735 [ici](./display_author.patch). 736 737 Il est appliquable avec la commande `patch -p1 < fichier_du_patch`. 738 739 [Autre patch](./arguments-to-plumber.patch) pour permettre de passer un 740 argument supplémentaire au script `sfeed_plumber`, en plus du lien à ouvrir. En 741 l'occurence je l'ai utilisé pour que le raccourci `o` ne fasse plus strictement 742 la même chose que d'appuyer sur entrée mais à la place passe en argument une 743 chaîne de caractère "audio". Je vérifie ensuite dans `sfeed_plumber` la valeur 744 de cette chaîne et choisi le format à lancer en conséquence. 745 746 J'ai fait un semestre de C en cours en 2013 quand j'avais 17 ans. J'ai pourtant 747 été capable d'effectuer ces modifications relativement facilement. C'est une 748 démonstration de plus qu'un logiciel simple, modeste dans ses fonctionnalités 749 et bien compartimenté peut être réappropriable pour un·e informaticien·ne très 750 moyen·ne même s'il est développé en C. Pas besoin de documentation, pas besoin 751 d'un système d'extension complexe, pas besoin d'un panneau de configuration. 752 Vous voulez modifier quelque chose, modifiez le code. Vous n'avez *jamais* codé 753 ? Demandez à votre geek préféré·e et il y arrivera peut-être ou cherchez sur 754 internet des patchs simples à appliquer. Dans tous les cas on ne complexifie 755 pas le socle, il se doit d'être maintenable et simple à comprendre. 756 757 Je détail la procédure que j'ai suivi pour la première modification pour que 758 vous puissiez juger de vous même de la difficulté de l'opération (et peut-être 759 penser que j'abuse totalement en disant que c'est pas si difficile). 760 761 Pour ce patch j'ai ouvert `sfeed_curses.c` dans vim. J'ai jeté un coup d'oeil 762 aux structures de données, j'ai repéré `struct item` ligne 121. Cette 763 structure a un attribut `char *fields`. J'ai effectué une recherche dessus - en 764 me plaçant dessus et appuyant sur `*` de façon répétée - pour tomber sur 765 `fields[FieldUnixTimestamp]` ligne 1132. J'en déduis qu'il doit exister quelque 766 part la liste des champs d'un item. Je me place au début du mot, le copie - en 767 faisant `yw`- écrit sur la ligne suivante la commande - en collant le nom du 768 champ avec `p`: 769 770 grep -n "FieldUnixTimestamp" ./* 771 772 Je récupère le résultat de la commande en l'exécutant avec `.!sh`. J'obtiens 773 774 ./sfeed_atom.c:79: if (strtotime(fields[FieldUnixTimestamp], &parsedtime) || 775 ./sfeed_curses.c:1137: if (!strtotime(fields[FieldUnixTimestamp], &parsedtime)) { 776 ./sfeed_curses.c:1275: if (!strtotime(fields[FieldUnixTimestamp], &parsedtime)) 777 ./sfeed_frames.c:44: if (!strtotime(fields[FieldUnixTimestamp], &parsedtime) && 778 ./sfeed_gopher.c:89: if (!strtotime(fields[FieldUnixTimestamp], &parsedtime) && 779 ./sfeed_html.c:44: if (!strtotime(fields[FieldUnixTimestamp], &parsedtime) && 780 ./sfeed_mbox.c:77: if (!strtotime(fields[FieldUnixTimestamp], &parsedtime) && 781 ./sfeed_mbox.c:89: fields[FieldUnixTimestamp], 782 ./sfeed_mbox.c:90: fields[FieldUnixTimestamp][0] ? "." : "", 783 ./sfeed_plain.c:29: if (!strtotime(fields[FieldUnixTimestamp], &parsedtime) && 784 ./sfeed_twtxt.c:27: if (!strtotime(fields[FieldUnixTimestamp], &parsedtime) && 785 grep: ./themes: Is a directory 786 ./util.h:55: FieldUnixTimestamp = 0, FieldTitle, FieldLink, FieldContent, 787 788 Je vois qu'il existe une liste des champs dans `util.h` à la ligne 55. Je me 789 place sur le nom du fichier et je l'ouvre avec `Ctrl+W F` et me rends à la 790 ligne 55 avec la commande `:55`. Je constate l'existence d'un champ 791 `FieldAuthor` qui semble être ce dont j'ai besoin. Je ferme le ficher avec 792 `:q`. Je supprime les lignes que j'avais généré en faisant `u`. Puisque l'on 793 sait que la fonction que l'on veut modifier affiche déjà le titre de l'élément 794 on continue notre recherche sur `FieldTitle`. On tombe tout de suite sur la 795 fonction `item_row_format` ligne 1807. Ligne 1824 si l'élément est daté (c'est 796 plus ou moins toujours le cas) alors la fonction imprime la date et le titre de 797 l'élément. Nous supprimons les lignes 1827 et 1828 pour afficher à la place 798 l'auteur·ice et le titre. Il faut également modifier le troisième argument de 799 la fonction `snprintf` ligne 1825 pour lui dire que les éléments à afficher 800 sont une chaîne de caractère dont on limite la taille à 25 caractères (choix 801 personnel) et une seconde chaîne de caractère sans limite de taille et non plus 802 des entiers. Finalement je modifie le calcul de `needsize` ligne 1818 pour 803 inclure la longeur du nom de l'auteurice. 804 805 Au passage, je sais pas vraiment ce que je fais et je crois que cette modif 806 introduit un très léger bug d'affichage du titre du premier élément dans la 807 liste à l'ouverture d'`sfeed_curses`. 808 809 Vous n'avez bien sûr aucune obligation d'utiliser `sfeed` comme je le fais. 810 C'est la beauté de cet ensemble d'outil, il cause très bien avec lui même et 811 avec le reste des outils Unix. Vous pouvez donc relativement facilement en 812 faire ce que vous voulez. Le détail de ma configuration est plus là pour faire 813 la démonstration que c'est accessible à toute personne un peu technique et 814 facilement "packageable" pour les autres que pour vous convaincre que vous 815 devriez faire pareil. 816 817 #### lynx 818 819 Lynx est un navigateur qui tourne dans la console. C'est un logiciel 820 relativement léger qui permet de rapidement parcourir des pages webs. Du moins 821 quand elles sont simples et proches de la vision originelle du web. Lynx n'est 822 pas capable d'exécuter du javascript et ne se base que sur la sémantique des 823 balises HTML pour produire la mise en page. Autant dire que la grande majorité 824 des sites webs commerciaux ne fonctionnent pas sur Lynx, en particulier 825 youtube. 826 827 Un simple blog, un site institutionnel "vitrine" ou un outil tel qu'idiotbox 828 fonctionnera bien. Par exemple, si l'on exécute : 829 830 lynx codemadness.org/idiotbox 831 832 Search: "" sorted by relevance 833 __________________________________________________________ 834 Search [Relevance____] 835 836 on voit que Lynx nous propose de rentrer un terme de recherche. Un résultat de 837 recherche aura la tête suivante : 838 839 3blue1brown_______________________________________________ 840 Search [Relevance____] 841 _____________________________________________________ 842 843 Oh, wait, actually the best Wordle opener is not “crane”… 844 3Blue1Brown | Atom feed 845 Published: 1 month ago 846 4,122,490 views 847 10:53 848 _____________________________________________________ 849 850 Solving Wordle using information theory 851 3Blue1Brown | Atom feed 852 Published: 1 month ago 853 8,200,917 views 854 30:38 855 856 Ce qui est autrement plus léger et lisible que l'interface web youtube pour peu 857 que l'on accepte de ne plus voir les vignettes. Ce qui, j'espère que vous en 858 conviendrez, est plus une feature qu'un bug. Si vous appuyez sur la touche 859 entrée pour tenter de consulter la vidéo vous verrez ce charmant message 860 d'erreur 861 862 Try watching this video on www.youtube.com, or enable JavaScript if it is disabled in your browser. 863 864 Il va falloir trouver une parade. Personnellement j'utilise la fonctionnalité 865 des "externals" de Lynx. Dans le fichier de configuration de lynx - sur ma 866 machine `/etc/lynx/lynx.cfg` - se trouve un élément de configuration nommé 867 `EXTERNAL_MENU`. Cet élément permet d'exécuter des commandes arbitraires depuis 868 lynx en leur passant en argument le lien sous lequel se trouve le curseur. Dans 869 mon fichier de configuration j'ai les entrées suivantes : 870 871 EXTERNAL_MENU:https\://www.youtube.com:360p:mpv --ytdl-format="18" --cache-secs=15 %s 872 EXTERNAL_MENU:https\://www.youtube.com:720p:mpv --ytdl-format="22" --cache-secs=15 %s 873 874 Ainsi, quand le curseur de lynx se trouve sur un lien commençant par 875 `https://www.youtube.com`, appuyer sur `.` ouvrira un petit menu permettant de 876 lancer la vidéo en 360p ou 720p dans mpv. En combinant cela avec la fonction 877 suivante qui construit l'url de recherche de vidéo pour idiotbox 878 879 yts() { 880 lynx https://codemadness.org/idiotbox/\?q=$(echo "$@" | sed 's/ /%20/g')\&o=relevance 881 } 882 883 je peux rapidement dans la console taper `yts machin bidule` pour avoir la 884 liste des vidéos de machin bidule, parcourir les résultats dans lynx, appuyer 885 sur `.` et choisir la résolution que je veux. Simple, rapide, efficace. 886 887 Si vous ne voulez pas dépendre de l'instance codemadness vous pouvez cloner le 888 [projet] et le compiler vous même. Cela génèrera un cgi pour une interface web 889 comme idiotbox mais aussi une interface en ligne de commande qui renvoie le 890 résultat de la recherche sous format texte. 891 892 cli "Never Gonna Give You Up" 893 Rick Astley - Never Gonna Give You Up (Official Music Video) 894 URL: https://www.youtube.com/embed/dQw4w9WgXcQ 895 Atom feed: https://www.youtube.com/feeds/videos.xml?channel_id=UCuAXFkgsw1L7xaCfnd5JJOw 896 Channel title: Rick Astley 897 Channelid: UCuAXFkgsw1L7xaCfnd5JJOw 898 Published: 12 years ago 899 Viewcount: 1,298,048,819 views 900 Duration: 3:33 901 === 902 Never Gonna Give You Up - Rick Astley (Lyrics) 🎵 903 URL: https://www.youtube.com/embed/34Ig3X59_qA 904 Atom feed: https://www.youtube.com/feeds/videos.xml?channel_id=UCvR2R7j218tzejtTsb_X6Rw 905 ... 906 907 Vous remarquerez au passage que la recherche renvoie, et ce peu importe 908 l'interface, le flux atom de la chaîne. Ca peut donc être un moyen comme un 909 autre de récupérer le flux rss d'une chaîne youtube. 910 911 ## Limites 912 913 On s'affranchit pas de youtube 914 915 Streaming maison ? 916 917 Peertube ? 918 919 Questionner le besoin, moins de vidéos ? 920 921 Impact de rendre plus accessible et facile la conso de vidéo sur le temps 922 investit là dedans ? Anecdote perso, je regarde + de twitch depuis que j'ai un 923 bidule pour "m'abonner" sans compte. C'est agréable mais est-ce que c'était 924 vraiment l'effet recherché ? 925 926 Solutions : 927 928 * mutualiser les séances de visionage (projections/débats, ...) 929 * copier sur disque a vos amis 930 * préférer les podcasts (thinkerview, radio-france par exemple) 931 * préferer le peer2peer et les plateformes communautaires 932 933 [dark pattern]: https://fr.wikipedia.org/wiki/Dark_pattern 934 [Un bon article]: https://www.temesis.com/blog/youtube-com-un-modele-de-performance-web-environnementale/ 935 [smartphone]: https://www.statista.com/statistics/1173543/youtube-viewing-time-share-device 936 [NewPipe]: https://newpipe.net/ 937 [SkipTube]: https://github.com/Taregnaeem/SkipTube 938 [Termux]: https://termux.com/ 939 [Ublock Origin]: https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/ 940 [Enhancer for youtube]: https://addons.mozilla.org/en-US/firefox/addon/enhancer-for-youtube 941 [Sponsorblock]: https://addons.mozilla.org/en-US/firefox/addon/sponsorblock/ 942 [Youtube recommended videos]: https://addons.mozilla.org/en-US/firefox/addon/youtube-recommended-videos 943 [Youtube addon]: https://addons.mozilla.org/en-US/firefox/addon/youtube-addon 944 [RSS]: https://fr.wikipedia.org/wiki/RSS 945 [lecteurs RSS]: https://fr.wikipedia.org/wiki/Comparaison_des_agr%C3author:9gateurs_de_flux 946 [sfeed_web]: https://git.codemadness.org/sfeed/files.html 947 [mpv]: https://mpv.io/ 948 [yt-dlp]: https://github.com/yt-dlp/yt-dlp 949 [HLS]: https://en.wikipedia.org/wiki/HTTP_Live_Streaming 950 [documentation]: https://github.com/yt-dlp/yt-dlp#format-selection 951 [ff2mpv]: https://addons.mozilla.org/en-US/firefox/addon/ff2mpv/ 952 [le wiki du dépôt github]: https://github.com/woodruffw/ff2mpv/wiki 953 [idiotbox]: https://codemadness.org/idiotbox.html 954 [instance]: https://codemadness.org/idiotbox/ 955 [sfeed]: http://codemadness.org/sfeed-simple-feed-parser.html 956 [README]: http://codemadness.org/git/sfeed/file/README.html 957 [projet]: https://git.codemadness/idiotbox