PROJET AUTOBLOG


Le blog de Mitsu

Archivé

Site original : Le blog de Mitsu

⇐ retour index

Projet de portail vidéo simplifié

dimanche 27 mai 2012 à 17:01

J’ai eu dans l’idée de faire un truc simple à maintenir, à la « upload and forget » . Alors j’ai pris mes petites mains et j’ai commis quelques heures de codage. Selon mes tests, c’est fonctionnel mais aussi très brouillon. Et, non, c’est pas pour Fansub Streaming: je tiens à mon blog, cette intégration « tout en un » de passions compatibles. J’imagine plutôt ce genre de portail pour le cadre familial, une gestion simplifiée pour ranger et partager des vidéos selon les sujets (un dossier « Vacances à Cannes » , un dossier « Anniversaire de Lulu » ,..).

Vraiment simple à maintenir: créer un dossier, et mettre dedans les vidéos WebM. C’est tout: PHP se charge de créer les listes, le titre de page, et afficher la vidéo, tout en 1 fichier PHP.

Je bosserai dessus de temps en temps, j’ai par exemple quelques idées comme: génération de balises meta description (ça c’est franchement facultatif, c’est pas destiné à une SEO de la mort), utiliser une image d’illustration pour la liste des dossiers, changer la couleur du dégradé CSS facilement en éditant une variable, compter et afficher à côté de la liste des dossiers le nombre de vidéos que chacun contient,… Et rationaliser le code existant (parce que là pour l’instant c’est très artisanal, même si avec le recul je me dis que ça permet à PHP de traiter juste ce qu’il faut).

Maintenant, important: remontez-moi des vulnérabilités de parcours (faire lister un autre dossier à PHP, l’ouverture de fichiers qui ne devraient pas l’être genre un WebM sur un serveur externe,…). J’ai bien fait plusieurs barrages notamment contre le listing de dossier parent, si un truc anormal est possible sans que ça sorte un code erreur 404 non trouvé ou 400 mauvaise requête, courir m’avertir :) Aussi si vous arrivez à obtenir des pages avec des messages d’erreur PHP (vu que le serveur retourne un état 200 ok, pas bon).

Principe de fonctionnement: le PHP a 3 « modes de fonctionnement »: si rien n’est donné, lister les dossiers. Si un dossier est donné (serie), lister le contenu du dossier. Si dossier est donné et un fichier est donné (episode), afficher la lecture de la vidéo. Dans les listings, les « - » (tirets/moins) sont remplacés par des  »  » (espaces) et le texte est capitalisé en mode titre (première lettre de chaque mot en majuscule). Le listing des fichiers montre sous la forme: dossier – fichier. Pour des raisons de sécurité, seuls les fichiers WebM peuvent être appelés via le PHP (si vous essayez de passer « index.php » en fichier, PHP retournerait un code de lecture vidéo pour « index.php.webm » – sauf que PHP vérifie la présence effective du fichier WebM).

/wp-content/uploads/2012/06/blog-120527-0-3_indexphp_.zip

flattr this!

Classement de fichiers

dimanche 27 mai 2012 à 16:57

Ce script vise à organiser une collection de fichiers nommés selon leur hash SHA-1. Il crée des sous-dossiers « 01″, « 02″,.. « ff » et déplace les fichiers dans le dossier adéquat.

Code: Ketpicloq et Cheaterman

#!/bin/bash

cd dossier_avec_les_images/

mkdir -p {0..9}{a..f} {a..f}{0..9} {a..f}{a..f} {0..9}{0..9}

find . -type f -maxdepth 1 | while read a; do a= »${a#*/} » ; mv « $a » « ${a:0:2} » ; done

flattr this!

Archive des BD de PirateSourcil

dimanche 27 mai 2012 à 16:52

Archive en date du 23 novembre 2011. BD suivantes: voir autoblog.

/wp-content/uploads/2012/06/blog-120527-piratesourcil_archive.zip

flattr this!

Playlist de webradios anime

dimanche 27 mai 2012 à 16:41

Le répertoire Xiph, résultats pour « anime »: et si on se faisait une compil’ de ces webradios, tout dans une liste de lecture, 1 seul stream par radio ? J’ai un peu tâtonné jusqu’à obtenir exactement ce que je voulais. Mais voilà:

TEXT

Une fois exécuté, ce script sort un fichier « Anime_mix.xspf » contenant 1 stream par webradio, à ouvrir dans un lecteur comme VLC :) Au moment où j’écris ça, c’est une playlist de 25 streams qu’on obtient.

  1. on récupère les 2 pages de résultats avec wget (on peut ajouter le téléchargement de 3, 4… autant de pages de résultats qu’il faut)
  2. on fusionne ces pages en 1 seule, et on enlève les 2 pages individuelles
  3. on « attrape » le lien vers les listes de lecture dans la page, et on le transforme en lien absolu
  4. on crée un dossier et on y récupère avec wget toutes les listes de lecture trouvées
  5. pour chaque liste de lecture dans le dossier, on extrait uniquement la première référence de piste (track) car beaucoup de radios ont plusieurs pistes sur des serveurs différents
  6. on « reconstruit » une liste de lecture avec toutes les références de pistes
  7. et on nettoie les fichiers de travail

Le fichier de sortie est un peu barbare (pas de retour à la ligne entre les pistes, pas de titre ni info,..) mais VLC le traite sans problème ;) Adaptez selon vos besoins (mot clé de la page de résultats, nombres de pages à scanner, type de playlist à sortir…).

/wp-content/uploads/2012/06/blog-120527-playlist.zip

flattr this!

Hardsub ASS avec mencoder

dimanche 27 mai 2012 à 16:31

Yop :)

Les fansubbeurs le savent, pour hardsubber (ou « burn » en anglais) des sous-titres ASS/SSA (à effets donc), les outils ne sont pas légion. Avidemux est le plus simple d’usage, en fait il exploite une fonctionnalité d’un autre outil, lui très puissant (pas autant que ffmpeg je trouve): mencoder. (on ajouterait Avisynth+MeGUI, mais non en fait). Avidemux a une fonction d’encodage par lot, mais c’est super-fastidieux à préparer (avant je copiais-collais le script et l’éditais avec un bête éditeur de texte pour ne pas devoir me taper toutes les étapes dans Avidemux). Bon entrons dans le vif du sujet: exploitons mencoder, qui fait partie de mplayer.

#!/bin/bash
for file in *; do
mkfifo fifo.y4m
mplayer -ass -sub "sub/$file.ass" -nosound -quiet -benchmark -vo yuv4mpeg:file=fifo.y4m "$file" &
mencoder -cache 8192 -audiofile "$file" -mc 0 -oac mp3lame -lameopts cbr=1:br=128 -ovc x264 -x264encopts crf=18:frameref=8:bframes=3:b_adapt:weight_b:partitions=all:8x8dct:me=esa:subq=7:trellis=2:threads=auto -o "${file%.???}.avi" fifo.y4m
rm fifo.y4m
done

Vous avez l’impression que j’ai brûlé les étapes ? :)

Ce script est à placer dans un dossier avec les vidéos à encoder. Les sous-titres sont à mettre dans un sous-dossier « sub ». Si vous voulez par exemple encoder « 05.mkv », le fichier de sous-titres doit s’appeler « 05.mkv.ass ».

Après exécution, vous obtenez un fichier -par exemple 05.avi. Bon le conteneur de sortie peut ne pas être AVI, je l’ai mis parce que c’est un container n’acceptant que pistes audio et vidéo (preuve donc à la lecture que les sous-titres sont incrustés dans la vidéo). Oui je sais, utiliser un puissant encodeur comme x264 et un crache-bouillie comme mp3lame.. L’AVI a ses contraintes.

J’ai pas souvent à hardsubber des animes, mais souffrez de voir le résultat de ce script dans les rééditions HD de Hen Zemi :blah: (upload courant de l’après-midi)

flattr this!