Informatique

Télécharger une émission en replay, mais avec Streamlink

Je viens de découvrir une suite d’émission, sur la chaine RTS, appelée « Dans la tête de ». On y parle de différentes personnes, les timides, les surdoués et bien d’autres.

Voulant conserver ces émissions sur mon disque dur plutôt que de dépendre d’une connexion internet capricieuse, j’ai cherché un moyen de les télécharger.


Comme la dernière fois, évidemment pas de dowload possible, ni par le site lui-même, ni par Youtube-DL, ni d’autres solutions connues.

Je vais encore une fois utiliser le mode Inspection de mon navigateur (ici Chrome) pour trouver le fichier manifest. Il s’agit soit d’un fichier manifest.f4m, ou .mpd ou encore .m3u8

Je commence par ouvrir la page d’inspection via un appui sur la touche F12.

Je me rends sur la page en question du site RTS.CH , fait défiler les vidéos et lance celle que je veux récupérer.

Dans l’onglet Network, des adresses défilent. J’arrête la vidéo au bout de quelques secondes et fait une recherche sur les termes manifest, f4m, mpd ou m3u8.

Bingo !

Depuis le dernier article, j’ai découvert l’existence de Streamlink, un logiciel en ligne de commande particulièrement puissant pour jouer ce genre de vidéo. Utile pour une intégration dans un fichier bash par exemple.

Ici, ça devient particulièrement trivial. Après installation du logiciel, j’ouvre un terminal et je lance la commande.

Streamlink est le nom de la commande

Suit l’URL complète copiée précédemment dans l’inspecteur.

Best pour choisir le meilleur format

-o surdoué.mp4 pour écrire le fichier sur le disque dur.

Sans option, ou avec l’option -p en précisant le chemin vers VLC ou MPV, on peut lancer le stream directement dans ces deux players. Pratique pour changer la taille de la fenêtre de rendu, ce qu’on ne peut pas faire sur la page Web.

Quelques minutes après le fichier est téléchargé. C’est d’une simplicité enfantine et je suis étonné de ne pas avoir reperé Streamlink avant. D’ailleurs, je vais sans doute y passer quelques temps à en explorer les possibilités.

Enjoy !

Sauvegarder un serveur Linux sur un NAS Synology avec Borg Backup

J’utilise au quotidien un serveur Linux dédié chez OVH sur lequel notamment j’héberge ce blog. Vu le peu de changement, jusqu’à maintenant je sauvegardais manuellement lorsque je jugeais bon de le faire, à coups de SFTP. J’ai décidé récemment d’automatiser cette tâche à l’aide de l’outil BorgBackup.
Il est facile à utiliser (CLI), il gère la déduplication, les sauvegardes incrémentales et différentielle, ainsi que la compression de fichier et le chiffrement.
Mon serveur de sauvegarde sera mon Synology NAS à la maison.


Activer les fonctions nécessaires du NAS et créer la connexion

  • Activer le service SFTP dans l’application Services du fichiers.

  • Vérifier que l’utilisateur a bien les droits sur FTP (oui c’est bizarre).

Le NAS va automatiquement créer un répertoire NetBackup dont je me servirais comme répertoire de sauvegarde. On ne peut le supprimer, alors autant s’en servir.

  • Si le NAS est derrière un routeur, créer la redirection de port qui va bien. Sur ma Freebox, ça donne ça (Athena est le nom de mon NAS)

Nous allons monter le répertoire de sauvegarde dans un répertoire du serveur en SSHFS. Pour éviter d’avoir à taper le mot de passe du NAS à chaque fois, nous allons créer une paire de clé d’authentification.

  • Si ce n’est pas déjà fait, activer le serveur SSH du NAS.

  • Activer le répertoire home des utilisateurs du NAS

  • Depuis le serveur, se connecter en SSH avec le login et le mot de passe. Si la connexion fonctionne, on continue.
ssh orlanth@<ip externe du NAS> -p 40022
  • Depuis le serveur, créer une paire de clé puis copier la clé sur le NAS
ssh-keygen - t rsa
ssh-copy-id -p 40022 orlanth@<ip externe du NAS>

Il va demander une dernière fois le mot de passe.
Une fois cette opération terminée, tentez de vous connecter à nouveau. Le serveur ne doit plus demander de mot de passe.

Installer Borgbackup, créer le répertoire de destination, lancer les sauvegardes

  • Sur le serveur distant, installer borgbackup et sshfs
sudo apt install borgbackup sshfs
  • Créer le répertoire de sauvegarde
sudo mkdir /mnt/BorgRepo && sudo chown <user>: /mnt/BorgRepo
  • Monter le repertoire du NAS sur le serveur
sshfs -p 40022 orlanth@<ip externe du NAS>:/NetBackup /mnt/BorgRepo

De là, vous pouvez tester que tout va bien en créant un fichier dans BorgRepo et en vérifiant qu’il apparait bien des deux côtés, sans problème de droits.

  • Initialiser le répertoire de destination ( à faire une seule fois)
borg init --encryption=none /mnt/BorgRepo
  • Créer une première sauvegarde
borg create -v --stats --progress /mnt/BorgRepo::{now} /var/www

Grâce à {now} la sauvegarde portera un nom créé à partir de l’heure du lancement de la commande.

Et voilà pour la mise en place d’une première sauvegarde.

Si tout fonctionne, il n’y a plus qu’à automatiser, ce qui fera l’objet d’un prochain article.


Références
Sebsauvage
Borg info
Just another blag

Récupérer un PDF à partir de youblisher

Youblisher est un site permettant d’uploader n’importe quel fichier pdf pour lui donner une apparence de livre, plus agréable à lire à l’écran.
Le partage se fait avec un simple lien, ce qui est très pratique.
Par contre, récupérer un pdf à partir d’une publication youblisher, pour le lire sur son ordinateur ou son téléphone est beaucoup moins simple puisqu’il n’y a pas de bouton télécharger. Je comprends pas trop, alors je me suis retroussé les manches.
Pour des recherches persos, j’ai voulu récupérer Suicide mode d’emploi, voilà comment je m’y suis pris.


Comme d’habitude, mes recherches commencent par afficher la console de Firefox.

D’abord se rendre sur la page du livre à récupérer puis clic droit sur une des pages du livre et sélectionner Examiner l’élément.

On voit immédiatement qu’il s’agit d’une simple image dont le source est :
http://static.youblisher.com/publications/31/181182/large-3.jpg

« large-3 » parce que j’ai cliqué sur les troisième page bien sûr.

Il y a 145 pages donc, petit copié collé dans un fichier texte pour obtenir les fichiers à télécharger

Et ainsi de suite jusqu’à large-145.jpg

Un petit coup de wget ou aria2c (plus rapide pour moi) et on récupère tous les fichiers dans un répertoire.

On renomme les fichiers pour qu’ils soient dans un ordre correct (j’aime bien Bulk Renamer), et on les donne à manger à imagemagick pour la conversion pdf (mais des tas d’autres logiciels le feront très bien, là j’avais ouvert ma console, j’étais chaud pour continuer (ouais sous Windows, jfais skejveux, kestuvafér ?))

Et voilà un PDF tout beau tout propre très simplement.

Télécharger une émission en replay

Un ami a participé à une émission de c8 diffusée le 25 Décembre et a souhaité garder cette émission. Plusieurs solutions étaient possibles, enregistrement par une freebox (pas essayé, mais probable difficulté de récupération du fichier), récupération par Captvty (il n’affiche pas l’émission), ou téléchargement par Youtube-dl (site de replay non pris en charge). Aucune de ces solutions n’ayant pu fonctionner facilement, je me suis retroussé les manches et je l’ai fait à la mano. Pas évident mais marrant.


Avec Firefox (sans doute possible avec d’autres)

D’abord trouver le flux :
https://www.mycanal.fr/theme/chaines/c8/divertissement/pid7609-couple-ou-pas-couple.html

Ensuite, appuyer sur F12 pour faire apparaitre la console.
Puis lancer le flux, sans adblock sinon c8 refuse de jouer la vidéo.


De plus, si on change le focus, on regarde une autre fenêtre ou autre, le flux de la pub se bloque.

Bienvenue dans Black Mirror.

Bref, on se tape la pub puis la vidéo se lance.
Il faut attendre quelques instant puis cliquer sur Réseau dans la console.

Repérer ce qui ressemble à une vidéo, ici on voit mp2t.
Probablement du .ts, c’est souvent le cas.
Cliquez sur une ligne puis regardez le contenu dans la boite à droite.

L’URL de la requête montre effectivement un fichier .ts. On voit aussi qu’il ne s’agit que d’un segment.
Au début de la vidéo, il s’agissait de « segment_1_1_av.ts » et le dernier « segment_260_3_av.ts »
Un clic-droit permet de récupérer l’adresse d’un segment et de faire un test de téléchargement avec youtube-dl.

Ça marche !
Maintenant plus qu’à récupérer tous les morceaux.
Je fais une liste de fichiers dans un fichier texte puis je lance le téléchargement dessus.

Ça prend un moment en fonction de la vitesse de la ligne.

Une fois tous les morceaux récupérés, on en lance quelques uns pour vérifier. Je m’aperçois que les morceaux de meilleures qualités sont les _3_av. Je supprime donc les autres.
Je renomme correctement les morceaux en 001.ts, 002.ts etc (avec Bulk Rename Utility, c’est rapide).
Puis je les joins.

Enfin, dernière étape (non obligatoire), je convertis en mp4.

Et voilà !

P2V Windows, double boot avec Mint

Il y a quelques semaines je suis passé sous Linux Mint pour ma machine principale et j’en suis vraiment très content.

Il y a encore deux choses pour lesquelles je dois conserver un Windows quelque part, c’est l’accès à iTunes pour récupérer mes photos et gérer ma bibliothèque musicale (c’est juste impossible ou presque de le faire sous Linux, à cause d’Apple hein), et aussi pour la plupart des jeux.

Pour ce dernier point je me débrouillais avec Wine et PlayOnLinux, mais les performances sont quand même moins bonnes et tous les jeux ne sont pas compatibles. Guildwars 2 et Path of Exile fonctionnent globalement correctement, mais dès que je veux pousser un truc un peu plus récent ou gourmand, ça devient rapidement galère.

Pour régler le problème d’iTunes j’avais monté une machine virtuelle Win 10 qui me donnait entière satisfaction. Pour les jeux, j’avais fait une croix dessus, mais j’ai pas réussi à tenir plus de quelques semaines.

C’est pourquoi je me suis dit que j’allais finalement me faire un double boot. Mais comme j’avais déjà fait le travail avec la VM, et que j’aime la difficulté, je me suis dit que j’allais utiliser ma VM et la transformer en physique.


Préparation

Il va y avoir des conversions de fichiers. Vérifiez que vous disposez d’assez d’espace disque pour entreposer tout ça. Vous pourrez les effacer par la suite.

Déterminez où vous voulez installer votre Windows 10. Soit sur un disque interne séparé, soit une partition sur votre disque principal. Pour ma part, après avoir testé avec un disque dur USB externe (ça marche ! Mais c’est lent. Mais ça marche !)  j’ai pris la deuxième solution.

Enfin, je fonctionne en UEFI, le Mint comme le Windows.

VM -> Raw

La première étape est de transformer le disque virtuel en Raw.

Ouvrez une ligne de commande et tapez :

$ VBoxManage clonehd <disqueWin10>.vdi <disqueWin10>.raw --format RAW

Application l’image Raw sur le disque

J’utilise la commande dd. Toujours dans la ligne de commande :

$ dd if=<disqueWin10>.raw of=<Disque destination> bs=8M

<Disque destination> est normalement sous la forme /dev/sdX avec X = b, c, d en fonction du nombre de disques déjà présent. A vous de voir pour trouver le bon disque (par exemple avec fdisk -l).

Ne vous trompez pas, cette commande supprime l’intégralité du disque de destination !

Ça peut prendre un certain temps, allez vous faire un café, ou un thé c’est le moment.

Lorsque vous récupérez la main, vous avez un disque avec toutes les partitions identiques à ce que vous aviez en virtuel.

Vous pouvez tester que le disque démarre bien en redémarrant votre machine et en changeant l’ordre de boot. Choisissez le disque Win10. Si ça boote, vous êtes bien 🙂

Profitez-en pour installer toutes les mises à jour que Windows ne manquera pas de télécharger. Normalement il fait tout, tout seul, mais sinon installez les drivers manquants manuellement, à commencer par le réseau et la carte graphique.

Modifier Grub2

J’ai pas mal galéré pour ça mais j’ai finalement trouvé la solution pour démarrer directement depuis Grub2 plutôt que depuis le bios/UEFI.

Ouvrez le fichier /etc/grub.d/40_custom puis ajoutez les lignes suivantes :

menuentry "Windows (UEFI)" {
search --set=root --file /EFI/Microsoft/Boot/bootmgfw.efi
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

Enfin updatez grub :

$ sudo update-grub

Redémarrez, testez, tout ça, normalement ça fonctionne !

Taille de partition

Normalement, la partition de votre Windows 10 a la même taille que ce qu’elle avait dans la VM. Pour l’étendre, utilisez GParted et redimensionnez comme vous le souhaitez.

[Linux Mint] Accéder aux partages réseau Windows/Samba

Je suis passé il y quelques semaines sous Linux Mint sur ma machine principale, oui celle-là même où je joue normalement. Comme toute migration, il y a encore des petites choses à polir, des machins qu’on faisait facilement avant, et qui ne sont pas à la même place maintenant.


J’ai un NAS Synology sur lequel je mets mes photos de vacances et auquel j’avais l’habitude d’accéder via un simple partage de fichiers. Autant c’est parfaitement transparent sous Windows, autant sous Linux il faut soit monter en dur les partages distants via sshfs dans le fstab, soit utiliser l’interface graphique et l’explorateur de fichier (Nemo par défaut sous Mint) pour y accéder.

Avec Nemo, la syntaxe smb://<user>@<machine>/<répertoire> fonctionne bien mais a tout de même deux inconvénients:

  1. Au redémarrage, il faut remonter les partages
  2. La plupart des applications ne sont pas capables d’accéder directement au partage. Par exemple, glisser-déposer une pièce jointe dans un mail Thunderbird depuis l’explorateur de fichier ne fonctionne pas.

Pour le 1. j’utilise l’application Gigolo qui permet de monter tout ce qu’on veut au démarrage. C’est très simple d’utilisation.

Pour le point 2. le backend Gnome Virtual File System (GVFS pour les intimes) qui se charge en arrière-plan de monter à la volée les partages distants dispose d’un fallback pas virtuel du tout dans le système de fichier global.

Pour accéder à ses partage il suffit d’aller dans /run/user/1000/gvfs/

Ok, les noms sont un peu chiants, mais on s’y retrouve, et toutes les applications peuvent y accéder sans problèmes.
Pour aller encore plus vite, je me suis fait un petit lien sur le bureau avec la commande :

$ ln -s /run/user/1000/gvfs Athena

Et maintenant tout roule !

iPhone en mode modem et route par défaut

Depuis quelques mois déjà, j’ai un abonnement téléphonique free avec un montant de data illimité. Je m’en sers régulièrement pour travailler hors de chez moi, regarder des vidéos Youtube et autres utilisations classiques nomades. Le confort de l’illimité est particulièrement appréciable et la 4G fonctionne excellemment bien dans les différents endroits que je fréquente. A tel point que cette connexion est meilleure que ma connexion ADSL classique, avec un débit en téléchargement de 2 à 3Mo/s en moyenne pour la 4G contre un maigre 600Ko/s pour l’ADSL.

J’ai donc décidé de me servir du téléphone comme modem quasi permanent. Le problème c’est que lorsque je me sers du téléphone pour accéder au net, je dois déconnecter l’interface réseau classique, ce qui me prive de l’accès à mon NAS notamment.

La solution c’est, lorsque le téléphone est branché, de supprimer la route par défaut de ma connexion classique. L’interface LAN reste alors disponible, et l’interface Internet bénéficie de la rapidité de la 4G.

Malheureusement, changer les routes manuellement est plutôt fastidieux alors j’ai décidé de me faire un petit script pour gérer ça à la volée.

Mon ordinateur principal est sous Linux Mint 18 (je parlerai de ma migration dans un autre article en été probablement).

M’inspirant de l’article suivant (https://lehollandaisvolant.net/?d=2017/06/10/23/37/39-linux-changer-de-sortie-audio-en-un-clic), j’ai composé le script suivant :

#!/bin/sh

CHOIX=$(zenity --list \
--column="Id" --column="Route" \
--hide-column=1 \
--hide-header \
1 "Passer par l'iPhone" \
2 "iPhone débranché");

if [ $CHOIX -eq 1 ]; then

gksudo route delete default gw 192.168.1.254;

elif [ $CHOIX -eq 2 ]; then

gksudo route add default gw 192.168.1.254;

fi

A coller dans un fichier quelconque, qu’on rendra exécutable (chmod +x <nomdufichier>). Ensuite j’ai créé un lanceur d’application, puis j’ai déplacé le lanceur dans la barre des tâches et hop, terminé.

Maintenant quand je le souhaite, je clique sur l’icône du programme, je choisis mon action, je mets mon mot de passe, et il me change la route.

J’ai bien conscience qu’il est sans doute possible d’automatiser encore plus cette action, que ça fait un peu verrue, mais ça m’amusait et le résultat me convient, alors si ça peut servir à quelqu’un, c’est toujours ça.

Passerelle SSHFS/Samba

Attention, article velu pour barbu linuxien. Si tu comprends pas, alors ce n’est probablement pas pour toi :). Cet article est plus une référence pour moi-même, mais si ça peut en aider d’autres, c’est tout bon.


J’ai actuellement un serveur de stockage hébergé chez OVH sur lequel j’effectue régulièrement des sauvegardes et qui me sers un peu à tout. Une sorte de box à tout faire informatique. Je partage quelques fichiers à l’aide nextcloud, je downloade un peu tavu, j’ai divers sites dont ce blog et pour accéder aux fichiers j’ai plusieurs possibilités (FTP, WebDav etc). Ma préférée est d’utiliser FUSE pour monter en local le partage de fichier distant SFTP.
Or, si cela fonctionne bien avec un client Linux via SSHFS, c’est bien plus difficile sous Windows.
J’ai essayé Dokan/Win-SSHFS, sans vraiment être convaincu, d’autant plus que le code n’est plus maintenu, et quelques autres solutions dont aucune ne m’a donné satisfaction.
Je me suis donc lancé dans la création d’une passerelle Linux/Windows de partage de fichier.

J’ai commencé à l’aide d’un RaspberyPi sous Raspbian branché en permanence chez moi. La solution fonctionne très bien, d’autant plus qu’elle me sert aussi de routeur, de serveur VPN et parfois de point d’accès Wifi.
Je peux aussi, au besoin, la débrancher et l’emmener avec moi n’importe où.
C’est pratique.
Mais je cherchais surtout une solution purement logicielle.
Je souhaitais une VM la plus petite possible, utilisant le minimum de RAM, pour qu’elle soit portable et rapide. La quête du Graal un peu.
Et là, paf, après plusieurs jours de recherche et de test je tombe sur mon Graal justement.
TinyCore que ça s’appelle.
Une distribution Linux de 11Mo, ultra-modulaire, qui se charge intégralement en RAM et qui met moins de 5 secondes à se charger.
Elle contient le strict minimum pour un système linux de base mais on peut ensuite y ajouter des tas d’extensions.
C’est idéal pour qui a un besoin extrêmement précis, une seule fonction et qui veut se concentrer dessus.

Pour mon propre besoin, voici les étapes qui m’ont permis de construire cette passerelle.

  1. Machine virtuelle
    1. Téléchargement et installation de VirtualBox dans sa dernière version
    2. Création d’une machine virtuelle avec la config suivante
      1. Disque dur 100Mo (juste pour conserver les extensions et les fichiers de config)
      2. RAM 64Mo
      3. Pas d’USB, Pas de carte son
      4. Réseau en Pont
  2. TinyCore
    1. Télécharger le fichier ISO de CorePlus sur le site officiel. C’est un plus gros fichier mais il contient l’installeur complet.
    2. Booter la VM sur l’ISO
    3. Suivre la procédure d’installation
    4. Enlever l’ISO et rebooter
  3. Configuration de TinyCore
    1. Modifier le fichier extlinux (qui est lu au boot) pour y ajouter quelques options
      1. vi /mnt/sda1/tce/boot/extlinux/extlinux.conf
      2. home=sda1 opt=sda1 kmap=azerty/fr-latin9 quiet host=sshfstc
    2. Rebooter (Par défaut aucun fichier n’est sauvegardé. Home et Opt définissent deux répertoires persistants au reboot.)
    3. Ajouter les extensions Openssh, SSHFS et Samba
      tce => S => openssh => Q => Install
      tce => S => sshfs => Q => Install
      tce => S => samba=> Q => Install
  4. Configuration de Samba (SHARE est à remplacer par un nom de partage quelconque)
    1. Créer le répertoire à partager
      1. mkdir /opt/SHARE
    2. Modifier le fichier de conf
      1. vi /usr/local/etc/samba/smb.conf
      2. Remplacer tout par :
        1. [SHARE]
        2. writable=yes
        3. browsable=yes
        4. path=/opt/SHARE
    3. Ajouter un utilisateur
      1. sudo smbpasswd -a tc
      2. <motdepasse>
    4. Lancer Samba au démarrage
      1. vi /opt/bootsync.sh
      2. /usr/local/etc/init.d/samba start
  5. Configuration de ssh/sshfs
    1. Créer les clés publique et privée dans le répertoire root
      1. cd root; sudo ssh-keygen; sudo cat .ssh/id_rsa.pub | ssh user@hostname « cat – >> .ssh/authorized_keys »
      2. Se connecter une première fois sur le serveur distant, ça ne doit plus demander de mot de passe
        1. ssh user@hostname
    2. Ajouter le montage du système de fichier distant
      1. vi /opt/bootlocal.sh
      2. sleep 20 #Je mets 20 secondes de sécurité avant de tenter le montage distant. On doit probablement pouvoir le réduire ou mettre un test qui checke que c’est bien monté et qui tente de le monter sinon.
      3. sshfs user@hostname:/<répertoire distant> /opt/SHARE -o allow_other,reconnect,_netdev,uid=1001,gid=50
  6. Finalisation
    1. On sauvegarde les paramètres. TinyCore ne sauvegarde que les répertoires home, opt et les fichiers et répertoires listés dans /opt/.filetool.lst
      1. vi /opt/.filetool.lst
      2. /root/.ssh
      3. /usr/local/etc/ssh
      4. /usr/local/etc/samba
    2. filetool.sh -b
    3. Reboot
    4. Depuis un client Windows le partage est accessible via \\sshfstc\SHARE avec l’utilisateur tc et le mot de passe <motdepasse> défini plus haut.

Exiftool

Accessoirement, dans la vie de tous les jours, je suis informaticien. Et mon travail m’oblige à une veille technique et me fait parfois découvrir des astuces, des programmes, des trucs et des machins que j’oublie souvent de conserver quelque part.

Je répare aujourd’hui cette erreur en inaugurant cette nouvelle rubrique, à la manière de Korben ou Sebsauvage.


Un mien collaborateur photographe passionné et compétent avait un besoin très spécifique pour effectuer des backups de ses photos. Plutôt que de copier dans le cloud 3.5To de photos stockées, il voulait faire une sélection de ses photos par leur note, le nombre d’étoile qu’il avait attribué, pour éviter de sauvegarder des photos de piètre qualité.

Les photos dont la note (ou rating) était supérieure à 2 devaient être copiées dans un répertoire spécifique avant d’être synchronisées.

J’ai trouvé un outil ultra-puissant (et le mot est faible) pour effectuer ce genre d’opération : exiftool
Cet outil en ligne de commande, gratuit, et multi-OS, est capable de lire et d’écrire les tags (ou metadonnées) d’un grand nombre de format de fichier, comme JPG, RAW, et bien d’autres, non limités à la photo comme le MP3 et bien d’autres.
Il existe des interfaces pour éviter la ligne de commandes, mais ceux que j’ai testé ne m’ont pas convaincu.

En attendant, pour résoudre son problème, j’ai utilisé la commande suivante (sous Windows) :

exiftool -o . -Filename=<destination>/%d/%f.%e -if "$rating ge <rating>" -r <source>

exiftool => programme à lancer
<destination> => répertoire de destination
<rating> => le rating minimum
<source> => point d’entrée du répertoire de base

Il est aussi possible de renommer en masse les fichiers en fonction des paramètres EXIF, comme par exemple la date, la résolution, ou n’importe quel autre paramètre.

Il est aussi possible de changer les paramètres EXIF de toutes les photos d’un répertoire (de manière récursive au besoin), pour par exemple, modifier la date ou géolocaliser les photos.

Clairement ce n’est pas un outil pour les utilisateurs lambda, mais les powerusers y trouveront sans problème leur compte.

Exiftool