Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#76 Le 14/05/2014, à 09:34

Gaara

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

@zmo:
C'est clair que vu mon niveau, je ne peux pas te contredire, mais tout ça c'est du chinois pour moi ! Je débute en python (et en programmation en général) depuis le début d'année, avec un simple "Hello World". Donc pour moi, du moment que ça marche, je suis ravi!
Ton script en ligne de commande à marché chez moi, et j'ai l'impression que le téléchargement va plus vite. Ceci dit, pour l'interface graphique, tout le monde ne tourne pas en Qt, surtout avec Ubuntu. Donc pourquoi installer 100Mo de dépendances, alors que ça peut marcher avec Gtk2/3 ? hmm
Et pour pouvoir modifier ton script, il faut avoir de solides connaissances. J'ai regardé un peu, j'ai rien compris ! lol
Tu as parlé de lxml, justement, j'ai étudié hier l'implémentation du moteur de recherche Pluzz dans dPluzz, pour ne pas avoir à chercher les adresses à la main. C'est pas encore fait, mais j'avance. J'ai découvert aussi Beautifulsoup.
J'avance à mon rythme !


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#77 Le 14/05/2014, à 15:08

zmo

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

Gaara a écrit :

@zmo:
C'est clair que vu mon niveau, je ne peux pas te contredire, mais tout ça c'est du chinois pour moi ! Je débute en python (et en programmation en général) depuis le début d'année, avec un simple "Hello World". Donc pour moi, du moment que ça marche, je suis ravi!

je comprends, et s'il y a un bon conseil que je peux te donner, vu que tu démarres en python, n'apprends que le python3 et abandonne le python2, ça t'évitera d'avoir à subir une période de transition (j'ai arrêté de faire du python2 depuis 6 mois ;-) ).

Ton script en ligne de commande à marché chez moi, et j'ai l'impression que le téléchargement va plus vite. Ceci dit, pour l'interface graphique, tout le monde ne tourne pas en Qt, surtout avec Ubuntu. Donc pourquoi installer 100Mo de dépendances, alors que ça peut marcher avec Gtk2/3 ? hmm

Parce que j'ai fait près de 10 ans de développement avec Gtk en C et en python (il y a même des bouts de codes à moi dans pygtk), mais force est de constater que le gtk c'est, certes, un peu plus léger et un peu plus joli. Mais c'est surtout moins stable, moins portable et moins bien conçu – côté programmation – que le Qt. Sachant que comme Gtk n'est pas Gnome et Qt n'est pas KDE, les seules dépendances nécessaires sont celles de la bibliothèques qui ne font que quelques dizaines de méga, plus python-qt4 qui fait aussi une quinzaine de mégas.

Et pour pouvoir modifier ton script, il faut avoir de solides connaissances. J'ai regardé un peu, j'ai rien compris ! lol

c'est pourquoi j'ai commencé à séparer les modules:

je définie la classe PluzzMovie: https://github.com/guyzmo/pypluzz/blob/ … uzz.py#L44

qui a pour méthodes:

    PluzzMovie:
        __init__(url)
        retrieve_data()
        save(target, callback, avconv_path, verbose)
        keys()
        items()
        __getitem__(key)

l'idée de cette classe, c'est de faire en sorte qu'elle se comporte comme un dictionnaire de métadonnées pour le film. Donc les trois dernières méthodes permettent d'implémenter une fonction comme:

    def print_metadata():
        m = PluzzMovie('http://pluzz.francetv.fr/videos/doctor_who.html')
        m.retrieve_data()
        for k,v in m.items():
            print("{}: {}".format(k,v))

qui affiche toutes les métadonnées du film.

C'est ce que je fais pour la fonctionnalité `get()` dans https://github.com/guyzmo/pypluzz/blob/ … zz.py#L173

Ensuite, la méthode la plus compliquée de la classe c'est la méthode `save()`: https://github.com/guyzmo/pypluzz/blob/ … uzz.py#L66

Mais je l'ai rendue compliquée afin d'en simplifier l'usage. Donc voilà les étapes essentielles:

p = requests.get(list(filter(lambda x: x['format'] == 'm3u8-download', self.data['videos']))[0]['url'], headers=self.headers).text
video_url = list(filter(lambda l: "index_2" in l, p.split()))[0]

peut se décomposer comme suit:

# récupère l'url de la playlist m3u8 dans la liste des vidéos dans les métadonnées:
url = list(filter(lambda x: x['format'] == 'm3u8-download', self.data['videos']))[0]['url']
# récupère la playlist
p = requests.get(url).text
# pour chaque ligne de la page, ne garde que celle qui contient `index_2`, et récupère la première correspondance
video_url = list(filter(lambda l: "index_2" in l, p.split()))[0]

ensuite j'utilise subprocess pour appeler `avconv` et j'en récupère l'output pour le traiter:

p = subprocess.Popen([avconv_path, '-i', video_url] + self.avconv_args + [self.dest_file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out = io.TextIOWrapper(p.stdout)
err = io.TextIOWrapper(p.stderr)

toutefois, le problème, c'est que avconv écrit sur stdout et sur stderr… Donc j'ai du utiliser une technique ancestrale: utiliser `select()` sur les descripteurs de fichiers pour savoir quand avconv a dit quelque chose:

        while p.poll() == None:
            ret = select.select([out.fileno(), err.fileno()], [], [])

ensuite pour chacun des deux (stdout et stderr), on appelle la fonction `output_parser()` définie ici: https://github.com/guyzmo/pypluzz/blob/ … uzz.py#L69

            for fd in ret[0]
                if fd == out.fileno():
                    output_parser(out.readline())
                if fd == err.fileno():
                    output_parser(err.readline())

dans cette fonction, j'utilise une technique de gens qui font du python: j'utilise un dictionnaire mis par défaut dans un argument comme variable statique. Ça permet de stocker des informations locales à la fonction sans avoir une variable globale, ou définir une classe pour une tâche aussi peu importante que de parser des lignes et afficher du texte. C'est la variable `env` qui joue ce rôle là.

Cette fonction utilise les trois regex précompilées: https://github.com/guyzmo/pypluzz/blob/ … uzz.py#L59
qui permette de parser l'output d'avconv, une ligne à la fois. Pour permettre d'utiliser cette même fonction pour faire avancer
une progressbar graphique ou en ligne de commande, cette fonction appelle une callback externe à la fonction `save()` et à
la class `PluzzMovie`, avec les paramètres utiles pour traiter une progression.

Et cette fonction, elle est alors toute simple: https://github.com/guyzmo/pypluzz/blob/ … zz.py#L144 !

def show_progress(position, total, spent, start):
    width = (get_term_size()[0]*0.6)
    adv = position/total
    eta = int((time.time() - start)*total/position)
    print((_('Download and convert')+': [{: <'+str(int(width))+'s}] {:0.0%} ETA: {}s/{}s').format('#'*int(width*adv), adv, spent, eta), end='\r')

Ce qui rend l'usage de la fonction `save()` trivial:

                m.save(args['--target'],
                       callback=show_progress,
                       avconv_path=args['--avconv'],
                       verbose=args['--verbose'])

Bien que j'ai du copier cette autre fonction https://github.com/guyzmo/pypluzz/blob/ … zz.py#L121 qui permet de connaître la taille
du terminal à chaque rafraîchissement permettant de garder la barre bien proportionnée si on redimensionne le terminal.

Donc au final, rien ne t'empèche d'utiliser mon code pour le lier à ton interface en Gtk ;-)

Tu as parlé de lxml, justement, j'ai étudié hier l'implémentation du moteur de recherche Pluzz dans dPluzz, pour ne pas avoir à chercher les adresses à la main. C'est pas encore fait, mais j'avance. J'ai découvert aussi Beautifulsoup.
J'avance à mon rythme !

lxml utilise (entre autre) BeautifulSoup comme moteur (il utilise aussi html5lib), et est plus puissant dans sa capacité de chercher et de construire/déconstruire un HTML. Je te recommande vivement de l'étudier plus en profondeur.

Dernière modification par zmo (Le 14/05/2014, à 15:12)

Hors ligne

#78 Le 14/05/2014, à 17:40

Gaara

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

Merci beaucoup pour ces explications, je m'y plongerais un des ces jours. Un truc que je ne sais pas faire, c'est de multiplier les commandes en une seule ligne.
C'est pourquoi je ne comprend pas grand chose à ton code, vu que c'est "comprimé".
Et pour le moment, à chaque fonction que je cherche, je googlise ma  question, sauf quand je suis déjà tombé sur le problème. Mais je pense que c'est pour tout le monde pareil, sauf les étudiants qui ont leurs cours !
J'ai quand même réussi à intégrer un moteur de recherche. Reste à affiner tout ça, surtout au niveau des titres, car le choix proposé n'est pas évident. (pas de détail sur la chaine, la date etc..)
Mais ça renvoie l'adresse automatiquement, reste à choisir le dossier et de dl. Je suis content que ça marche!

mini_118548dPluzz5.jpg


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#79 Le 16/05/2014, à 17:46

Gaara

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

Voilà, c'est tout chaud !
La version dPluzz0.4 vient de sortir !!

-> Ajout d'un moteur de recherche pour trouver les adresses des vidéos facilement
-> Agrandissement de la fenêtre !

Edit: j'oubliais: une dépendance en plus: python-bs4

sudo apt-get install python-bs4

Dernière modification par Gaara (Le 16/05/2014, à 17:50)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#80 Le 17/05/2014, à 14:30

Gaara

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

Nouvelle version de dPluzz, c'est par ici: dPluzz v0.4.2

-> Sauvegarde du répertoire vidéos (via un fichier dPluzz.conf)
-> Correction d'un bug (fermeture avec la croix)
-> Correction de la case ffmpeg qui restait active lors du téléchargement

Enjoy smile

Dernière modification par Gaara (Le 17/05/2014, à 14:52)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#81 Le 18/05/2014, à 16:08

zmo

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

Hello les ubuntistes,

j'ai fait une mise à jour :

cf https://github.com/guyzmo/pypluzz/

pip install --upgrade pypluzz

en gros, cette fois-ci ça offre une interface à la netflix, il y a la sélection de programmes, l'affichage des data d'un programme et la recherche:

show

et

show

il me reste à revoir les traductions en français, ce que je ferai quand j'aurais à nouveau une paire d'heure à passer dessus. Améliorer la CSS serait pas un luxe non plus, j'ai pas vraiment de qualités d'artiste ;-)

Au passage, la sauvegarde du répertoire n'est pas nécessaire, car on peut simplement utiliser l'argument -p qui permet de définir le chemin dans un alias en ligne de commande, ou dans le "raccourci" sur le bureau.

Hors ligne

#82 Le 18/05/2014, à 21:40

Gaara

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

@zmo: Ce serait peut-être plus sage d'ouvrir un autre topic ...


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#83 Le 18/05/2014, à 23:03

bishop

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

Salut Gaara et Merci pour ce soft qui fonctionne trés bien sous Ubuntu Trusty 14.04 64 bits. cool


La plus grande surprise que puisse faire un con c'est de faire une pause.

Hors ligne

#84 Le 20/05/2014, à 11:06

Gaara

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

@bishop: Merci du retour, ça fait plaisir

@tous: Nouvelle version, dPluzz_v0.4.3

-> Ajout d'un bouton "Lire la vidéo" (lecture du fichier en cours de léléchargement avec mplayer)
-> Ajout d'un bouton "Annuler le téléchargement"

Nouvelle dépendance: mplayer

sudo apt-get install mplayer

Note: mplayer2 ne fonctionne pas, bug avec l'audio.


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#85 Le 21/05/2014, à 14:18

Gaara

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

@melixgaro:

En vue de la création d'un fichier .deb, j'ai quelques difficultés pour modifier ton script.

#Recuperation des infos
echo -e "$ROSE""-->TRAITEMENT DU JSON""$NORMAL"
DATE="$(echo "${JSON}" | sed 's+.*date_debut..\"\([^\"]*\)\".*+\1+g')"
PROG="$(echo "${JSON}" | sed 's+.*code_programme..\"\([^\"]*\)\".*+\1+g')"
M3U="$(echo "${JSON}" | sed 's+.*url..\"\([^\"]*m3u8\)\".*+\1+g')"

#Recuperation du master M3U et traitement
echo -e "$BLEU""-->RECUPERATION DU FICHIER VIDEO""$NORMAL"
M3U2="$(wget -q -U "'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0'" "${M3U}" -O - | grep -E ".*index_2.*")"

avconv -i "${M3U2}" -vcodec copy -acodec copy "${PROG}_${ID}.mkv"

Le logiciel sera placé dans /usr/bin, or la vidéo ne peut pas se créer dans ce répertoire.
Comment changer la destination de la vidéo téléchargée? Je souhaite qu'elle arrive dans /home/<user>/.dpluzz, avec le <user> reconnu, bien sur..
Mes compétences en bash étant proches de zéro, j’appelle à l'aide! smile

Merci !

Dernière modification par Gaara (Le 21/05/2014, à 14:19)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#86 Le 21/05/2014, à 15:29

gl38

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

Bravo pour ce travail et l'ajout du moteur de recherche qui évite à chercher l'adresse de l'émission.
Pour voir l'émission, je trouve que vlc est plus pratique que mplayer : j'ai des boutons, pause, plein-écran...
Cordialement,
Guy

Hors ligne

#87 Le 21/05/2014, à 15:40

melixgaro

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

à Gaara

ben tu remplaces

avconv -i "${M3U2}" -vcodec copy -acodec copy "${PROG}_${ID}.mkv"

par

avconv -i "${M3U2}" -vcodec copy -acodec copy "${HOME}/.dpluzz/${PROG}_${ID}.mkv"

ou alors

avconv -i "${M3U2}" -vcodec copy -acodec copy "/tmp/${PROG}_${ID}.mkv"

Après la vidéo est déplacée dans le dossier que l'on indique dans l'interface, c'est bien ça ?


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#88 Le 21/05/2014, à 16:04

melixgaro

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

ou alors voici une nouvelle version du script. On peut passer le répertoire de destination avec "-d". S'il est omis, la vidéo sera par défaut dans le home

./pluzz -d /tmp http://url_de_la_video
#!/bin/bash
##############################################################################################
#
# Version Du Script : v1.1
# Nom du Script : pluzz.sh
# Auteur : Matthieugoua
# Dernière Modification le 03 mai 2014
# RECUPERATION des video de pluzz
#
# -------------------------------------- HISTORIQUE ---------------------------------------
#
# 01/05/14 (1.0) : Écriture du script
# 01/05/14 (1.0.1) : correction d'un bug dans le nettoyage du json
# 03/05/14 (1.1) : Réécriture par melixgaro. Sans dépendance pour les fainéants qui ne veulent pas s'embêter :D
#
#-------------------------------------- DEPENDANCE UTILES --------------------------------------------
#
# AVCONV (sudo apt-get install --no-install-recommends libav-tools)
# Si vous utilisez FFMPEG plutot que AVCONV il vous suffit de remplacer AVCONV par FFMPEG en bas de script
#
##############################################################################################

BASEPATH=$(pwd)

usage()
{
    cat << EOF
usage: $0 options/

OPTIONS:
pluzz.sh -u url de l'emission sur pluzz
EOF
}

while getopts "d:hvu:" opt; do
    case $opt in
	"d")
	    Directory="${OPTARG%%/}"
	    ;;
	"h")
	    usage
	    exit 1
	    ;;
	"u")
	    URL="${OPTARG}"
	    ;;
	"v")
            set -x
	    ;;
	"?")
	    echo "Invalid option: -$OPTARG"
	    usage
	    exit 1
	    ;;
    esac
done

shift $(($OPTIND-1))

if [[ -z "${URL}" ]]
then
    URL="${1}"
fi

if [[ "x${Directory}" == "x" ]] 
then
    Directory="${HOME}"
fi

#COULEUR
VERT="\\033[0;32m"
ROUGE="\\033[7;0;31m"
ROSE="\\033[0;35m"
BLEU="\\033[1;34m"
JAUNE="\\033[0;33m"
NORMAL="\\033[0;39m"

echo -e "$VERT""DEBUT DU TRAITEMENT""$NORMAL"

#Recuperation de l' ID de l' emission
UserAgent='Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0'
ID=$(wget -q -U "${UserAgent}" "${URL}" -O - | grep -E "og:url.*content.*http://*" | sed 's+.*,\([0-9]*\).*+\1+g')

#wget du json conteant les infos
echo -e "$ROSE""-->RECUPERATION DU JSON""$NORMAL"
JSON="$(wget -q -U "${UserAgent}" "http://webservices.francetelevisions.fr/tools/getInfosOeuvre/v2/?idDiffusion=${ID}&catalogue=Pluzz&callback=webserviceCallback_${ID}" -O - | sed 's+\\/+/+g')"

#Recuperation des infos
echo -e "$ROSE""-->TRAITEMENT DU JSON""$NORMAL"
DATE="$(echo "${JSON}" | sed 's+.*date_debut..\"\([^\"]*\)\".*+\1+g')"
PROG="$(echo "${JSON}" | sed 's+.*code_programme..\"\([^\"]*\)\".*+\1+g')"
M3U="$(echo "${JSON}" | sed 's+.*url..\"\([^\"]*m3u8\)\".*+\1+g')"

#Recuperation du master M3U et traitement
echo -e "$BLEU""-->RECUPERATION DU FICHIER VIDEO""$NORMAL"
M3U2="$(wget -q -U "'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0'" "${M3U}" -O - | grep -E ".*index_2.*")"

avconv -i "${M3U2}" -vcodec copy -acodec copy "${Directory}/${PROG}_${ID}.mkv"

echo -e "$ROUGE""FIN DU TRAITEMENT""$NORMAL"
echo -e "$JAUNE""Votre Fichier Final Est :""$NORMAL"
echo -e "$VERT""${Directory}/${PROG}_${ID}.mkv""$NORMAL"

exit 0 

Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#89 Le 21/05/2014, à 17:08

Gaara

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

@gl38:
Merci pour le retour smile
Pour le choix de mplayer, c'est délibéré, car tout le monde n'a pas installé vlc. Et je ne peut pas le mettre en dépendance. Mplayer à l'avantage d'être très léger, donc on peut l'ajouter en dépendance.
Le bouton "lire la vidéo" est en fait "aperçu de la vidéo", car elle peut se couper si le téléchargement n'est pas assez rapide.
Pour utiliser vlc avec ce bouton, tu peux modifier la ligne 208 de mon script (v0.4.3):

command = ('mplayer', emission)

à remplacer par

command = ('vlc', emission)

@melixgaro:
Merci pour ton aide, ça fonctionne très bien. En fait je crée le répertoire ./dpluzz, car je dois y copier le fichier de config, et ton script.sh. Je suis obligé, car le bouton ffmpeg modifie ton script, et je ne peux pas faire intervenir gksudo, ça risque de faire bizarre ! Donc autant tout rassembler dans ce dossier, et copier ensuite la vidéo terminée dans le dossier choisi.
Ton deuxième script sera utile pour la version ssh, mais il faudra que j'adapte mon script en fonction. Il faudra aussi que je modifie le .bashrc pour pouvoir appeler directement le script, pour ne pas aller dans ~/.dpluzz à chaque fois...
En attendant, je modifie la ligne, une chose à la fois !

Dernière modification par Gaara (Le 21/05/2014, à 17:09)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#90 Le 21/05/2014, à 17:10

melixgaro

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

ah ben attends. Je te fais une version où on choisit ffmpeg ou avconv depuis la ligne de commande. Ce sera plus propre qu'une modif du script.


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#91 Le 21/05/2014, à 17:16

melixgaro

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

et qd tu fais ton deb, construis une architecture de ce type (je ne suis pas expert non plus en faisage de paquet)

/usr/local/bin
/usr/local/bin/dPluzz -> symlink qui pointe sur ../share/dPluzz/dPluzz.py
/usr/local/bin/pluzz -> symlink qui pointe sur ../share/dPluzz/pluzz.sh
/usr/local/share/dPluzz
/usr/local/share/dPluzz/dPluzz.py
/usr/local/share/dPluzz/pluzz.sh

Maintenant si /usr/local/bin est dans la variable PATH, alors :
1/ on peut appeler dPluzz.py en tapant simplement dPluzz
2/ on peut appeler pluzz.sh en tapant simplement pluzz
3/ dans dPluzz.py, marque simplement pluzz au lieu de /chemin/de/exec/pluzz.sh


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#92 Le 21/05/2014, à 17:28

Gaara

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

J'avais pensé à faire ça: (j'ai rajouté pluzz.sh ici)
mini_418115dPluzz10.jpg
(j'ai utilisé ce tuto)
Pourquoi des liens symboliques? (si en fait je vois pk..) Mais je ne sais pas faire avec le deb... Je sais faire que ce qui est marqué dans le tuto tongue
Pour choisir ffmpeg ou avconv, le choix serait enregistrable dans un log, pour ne pas avoir à répondre à chaque fois à la question? Car dans ce cas j'enlève ma case à cocher !

Dernière modification par Gaara (Le 21/05/2014, à 17:29)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#93 Le 21/05/2014, à 17:29

melixgaro

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

voilà
en tapant

./pluzz.sh -f -d /tmp -u http://ma_video.fr

ça récupère ma_video.fr avec ffmpeg et ça stocke dans le dossier /tmp

#!/bin/bash
##############################################################################################
#
# Version Du Script : v1.1.2
# Nom du Script : pluzz.sh
# Auteur : Matthieugoua
# Dernière Modification le 21/05/2014
# RECUPERATION des video de pluzz
#
# -------------------------------------- HISTORIQUE ---------------------------------------
#
# 01/05/2014 (1.0)   : Écriture du script
# 01/05/2014 (1.0.1) : correction d'un bug dans le nettoyage du json
# 03/05/2014 (1.1)   : Réécriture par melixgaro. Sans dépendance pour les fainéants qui ne veulent pas s'embêter :D
# 21/05/2014 (1.1.1) : Ajout de l'option pour choisir le dossier de destination (-d), par défaut c'est le home [melixgaro]
# 21/05/2014 (1.1.2) : Ajout de l'option pour choisir ffmpeg (-f) au lieu de avconv [melixgaro]
#
#-------------------------------------- DEPENDANCES UTILES --------------------------------------------
#
# AVCONV (sudo apt-get install --no-install-recommends libav-tools)
#
##############################################################################################

BASEPATH=$(pwd)

usage()
{
    cat << EOF
usage: $0 [OPTIONS] URL

OPTIONS:
-f        utilise ffmpeg au lieu de avconv
-d DIR    dossier de destination
-u URL    adresse de la vidéo
-h        affiche cette aide
EOF
}

IsFFMPEG="False"

while getopts "fd:hvu:" opt; do
    case $opt in
	"f")
	    IsFFMPEG="True"
	    ;;
	"d")
	    Directory="${OPTARG%%/}"
	    ;;
	"h")
	    usage
	    exit 1
	    ;;
	"u")
	    URL="${OPTARG}"
	    ;;
	"v")
            set -x
	    ;;
	"?")
	    echo "Invalid option: -$OPTARG"
	    usage
	    exit 1
	    ;;
    esac
done

shift $(($OPTIND-1))

if [[ -z "${URL}" ]]
then
    URL="${1}"
fi

if [[ "x${Directory}" == "x" ]] 
then
    Directory="${HOME}"
fi

#COULEUR
VERT="\\033[0;32m"
ROUGE="\\033[7;0;31m"
ROSE="\\033[0;35m"
BLEU="\\033[1;34m"
JAUNE="\\033[0;33m"
NORMAL="\\033[0;39m"

echo -e "$VERT""DEBUT DU TRAITEMENT""$NORMAL"

#Recuperation de l' ID de l' emission
UserAgent='Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0'
ID=$(wget -q -U "${UserAgent}" "${URL}" -O - | grep -E "og:url.*content.*http://*" | sed 's+.*,\([0-9]*\).*+\1+g')

#wget du json conteant les infos
echo -e "$ROSE""-->RECUPERATION DU JSON""$NORMAL"
JSON="$(wget -q -U "${UserAgent}" "http://webservices.francetelevisions.fr/tools/getInfosOeuvre/v2/?idDiffusion=${ID}&catalogue=Pluzz&callback=webserviceCallback_${ID}" -O - | sed 's+\\/+/+g')"

#Recuperation des infos
echo -e "$ROSE""-->TRAITEMENT DU JSON""$NORMAL"
DATE="$(echo "${JSON}" | sed 's+.*date_debut..\"\([^\"]*\)\".*+\1+g')"
PROG="$(echo "${JSON}" | sed 's+.*code_programme..\"\([^\"]*\)\".*+\1+g')"
M3U="$(echo "${JSON}" | sed 's+.*url..\"\([^\"]*m3u8\)\".*+\1+g')"

#Recuperation du master M3U et traitement
echo -e "$BLEU""-->RECUPERATION DU FICHIER VIDEO""$NORMAL"
M3U2="$(wget -q -U "'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:19.0) Gecko/20100101 Firefox/19.0'" "${M3U}" -O - | grep -E ".*index_2.*")"

if [[ "${IsFFMPEG}" == "False" ]]
then
    avconv -i "${M3U2}" -vcodec copy -acodec copy "${Directory}/${PROG}_${ID}.mkv"
else
    ffmpeg -i "${M3U2}" -vcodec copy -acodec copy "${Directory}/${PROG}_${ID}.mkv"
fi

echo -e "$ROUGE""FIN DU TRAITEMENT""$NORMAL"
echo -e "$JAUNE""Votre Fichier Final Est :""$NORMAL"
echo -e "$VERT""${Directory}/${PROG}_${ID}.mkv""$NORMAL"

exit 0 

Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#94 Le 21/05/2014, à 17:33

Gaara

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

Ah ok smile Nickel. J'avais pas bien capté. Donc je garde la case, et je modifie la commande en fonction. Parfait !
pour ffmpeg:

./pluzz.sh -f -d /tmp -u http://ma_video.fr

pour avconv:

./pluzz.sh -d /tmp -u http://ma_video.fr

c'est ça?

Dernière modification par Gaara (Le 21/05/2014, à 17:36)


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#95 Le 21/05/2014, à 17:41

melixgaro

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

Mes justifications pour les liens symboliques (tu me diras si tu as la même) :
1/ ça permet de faire dispraître les extensions des programmes. Toutefois, le vrai fichier garde son extension et c'est quand même vachement mieux pour savoir qui est qui.
2/ si demain, l'exécutable principal change de nom, ce sera invisible pour l'utilisateur qui continuera à taper dPluzz
3/ ça permet de garder tous les fichiers ensembles dans un sous-répertoire de /usr/local/share. Ça me paraît plus clair.

Pour ffmpeg, le choix se fait avec l'option "-f" (avec f comme ffmpeg, whouah vive la pédagogie). Tu dois pouvoir enregistrer le choix de l'utilisateur lors de sa première utilisation dans ton fichier .conf, non ? En fait, j'ai pas trop regardé cette partie là de ton code, mais j'imagine que ça marche/devrait marcher comme ça :

1/ si le fichier conf existe,
    a/ je lis quel est le choix du codeur vidéo et le choix du dossier de destination
    b/ je les propose à nouveau (en pré-remplissant le champ « Dossier » et en cochant ou pas la case ffmpeg)
2/ si le fichier conf n'existe pas, je ne propose rien et je sauvegarde le choix en cours à la fermeture de l'application
3/ si l'utilisateur modifie les choix (dossier ou codeur), je sauvegarde à nouveau la config

Dernière modification par melixgaro (Le 21/05/2014, à 17:45)


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#96 Le 21/05/2014, à 17:43

melixgaro

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

et pour faire les lien symboliques, la dernière fois que je me suis amusé à faire des paquets, j'ai crée l'arborescence comme décrit plus haut. Puis je vais dans ./usr/local/bin, et là je fais

ln -s ../share/dPluzz/dPluzz.py dPluzz

et

ln -s ../share/dPluzz/pluzz.sh pluzz

Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#97 Le 21/05/2014, à 18:03

Gaara

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

Pour la case, ça sauvegarde dès que la case est cochée. C'est direct. (mais pas encore implémenté)
Pour le moment, c'est juste le répertoire de sauvegarde qui est sauvegardé. (tu me suis?..)
Mais c'est bien comme ça, plus de modif de pluzz.sh, on va pouvoir le coller dans /usr/local/share.

si demain, l'exécutable principal change de nom, ce sera invisible pour l'utilisateur qui continuera à taper dPluzz

Oui, mais il faudra recréer le lien. Mais je vois pas pourquoi ça changerais de nom !

ça permet de garder tous les fichiers ensembles dans un sous-répertoire de /usr/local/share.

C'était ce que je pensais

ln -s ../share/dPluzz/dPluzz.py dPluzz

oui ça d'accord, mais comment on fait pour que ça soit automatique lors de l'installation du deb?
Je me répond moi même, si je comprend:
créer un fichier dPluzz dans usr/bin avec dedans: ln -s ../share/dPluzz/dPluzz.py dPluzz  pour que la commande soit redirigée?


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#98 Le 21/05/2014, à 18:04

melixgaro

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

peut-être que tu pourrais renommer les exéc, genre pluzz -> dPluzz-cli


Linux depuis ~2007. Xubuntu seulement.

Hors ligne

#99 Le 21/05/2014, à 18:11

Gaara

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

Pourquoi pas, mais pour les liens symboliques, tu as une idée?
Je met quoi dans /usr/bin/dPluzz ? (je ferais pareil pour dPluzz-cli)
python ../share/dPluzz/dPluzz.py
ou
ln -s ../share/dPluzz/dPluzz.py
?


Kubuntu 18.04 x64
Un terminal tactile Raspberry Pi et Odroid

                                        <code>zenity  --question --title "Alert"  --text "Microsoft Windows has been found! Would you like to remove it?"</code>

Hors ligne

#100 Le 21/05/2014, à 18:13

melixgaro

Re : [dPluzz+] Télécharger les vidéos Pluzz, C+ et TNT sous Ubuntu

nan pour les deb, (ne te vexe pas si ce que je dis tu l'as déjà compris) : tu crées localement l'arborescence usr/local/bin, usr/local/share etc etc
Par exemple, si tu travailles dans le dossier /home/gaara/paquetage, tu fais tes mkdir

cd /home/gaara/paquetage
mkdir usr/local/bin
mkdir -p usr/local/share/{dPluzz,applications,doc,icons}
mkdir usr/local/share/doc/dPluzz

puis tu copies les exec dans usr/local/share/dPluzz et tu les rends exécutables

cd usr/local/share/dPluzz
cp -iv /chemin/vers/dPluzz.py .
cp -iv /chemin/vers/pluzz.sh .
chmod +x dPluzz.py
chmod +x pluzz.sh

puis

cd ../../bin
ln -s ../share/dPluzz/dPluzz.py dPluzz
ln -s ../share/dPluzz/pluzz.sh pluzz

ça créera un lien symbolique avec un chemin relatif : on remonte d'un niveau puis on descend dans share/dPluzz

Quand le deb est installé par dpkg ou gdebi, il se contente de copier les fichiers de ton architecture dans l'architecture existante, en créant au besoin les dossiers manquants. Donc il copiera pluzz.sh dans /usr/local/share/dPluzz et il copiera le lien symbolique dans /usr/local/bin (lien qui pointera bien sur le ficher dans /usr/local/share/dPluzz).

C'est + clair ?

Édition : il faut rendre les .py et .sh exécutables, ben sûr.

Dernière modification par melixgaro (Le 21/05/2014, à 18:17)


Linux depuis ~2007. Xubuntu seulement.

Hors ligne