Soucis Arte

"La télévision de rattrapage facile !"

Re: Soucis Arte

Messagede selligee » Mar 5 Nov 2024 09:36

Bonjour

puisque je vois des échanges sur les solutions alternatives, merci à Pulsar pour son message du 23 octobre , avec les deux commandes yl-dlp que j'ai mises en oeuvre
Une petite question , dans la fonction de l'assemblage automatique, est il possible d'ajouter aussi les sous-titres en français en se basant sur l'exemple ?

Merci!


Windows 10 64 bits / Czechia / Firefox 132.0 64 bits
selligee
 
Messages: 12
Inscription: Dim 13 Oct 2024 18:50

Re: Soucis Arte

Messagede tapirashabrack » Mar 5 Nov 2024 13:28

Salut, je suis nouveau sur le forum mais cette discussion m'a été bien utile, aussi je me permets de poster une récap des commandes yt-dlp que j'ai utilisées, si ça peut dépanner quelqu'un.
J'ai utilisé yt-dlp du 2024-04-09 installé par défaut sous Linux Mint 22 (6.8.0.48) et ffmpeg 6.1
Exemple donné pour https://www.arte.tv/fr/videos/101841-004-A/rematch-4-6/

Afficher les pistes audio / vidéo :

Code: Tout sélectionner
yt-dlp -F https://www.arte.tv/fr/videos/101841-004-A/rematch-4-6/


Télécharger les pistes audio+vidéo (sélection manuelle) :

Code: Tout sélectionner
yt-dlp -f VF-STF-4160+VF-STF-audio_0-Anglais https://www.arte.tv/fr/videos/101841-004-A/rematch-4-6/


Lister les sous-titres :

Code: Tout sélectionner
yt-dlp --list-subs https://www.arte.tv/fr/videos/101841-004-A/rematch-4-6/


Télécharger tous les sous-titres au format .vtt (exclusion des pistes audio / vidéo) :

Code: Tout sélectionner
yt-dlp --all-subs --skip-download https://www.arte.tv/fr/videos/101841-004-A/rematch-4-6/


Choisir un ou plusieurs sous-titres :
1) Dans mon exemple, les sous-titres fr sont pour la piste française = sous-titrage de ce qui n’est pas doublé en français (dialogues dans une autre langue volontairement conservés en l’état, inscriptions dans une autre langue à l’écran).
2) Sous-titres "fr-acc" = sous-titrage pour sourds et malentendants.
Dans mon exemple, il faut choisir les sous-titres “en” pour les ST français de la version originale en langue anglaise.

Télécharger uniquement certains sous-titres au format .vtt :

Code: Tout sélectionner
# Un seul sous-titre : "en"
yt-dlp --sub-langs en --write-subs --skip-download https://www.arte.tv/fr/videos/101841-004-A/rematch-4-6/

# Une liste de sous-titres : "en, fr"
yt-dlp --sub-langs “en,fr” --write-subs --skip-download https://www.arte.tv/fr/videos/101841-004-A/rematch-4-6/


Convertir un sous-titre .vtt en .srt :
Les sous-titres .vtt comportent des styles de couleur en début de fichier. La conversion directe .vtt -> .srt avec yt-dlp ne fonctionne pas (fichier .srt vide). Idem avec ffmpeg.
Au préalable, supprimer les styles de couleur en début de sous-titre par exemple avec un éditeur de texte.

Code: Tout sélectionner
ffmpeg -i Rematch\ \(4⧸6\)\ \[101841-004-A\].en.vtt Rematch\ \(4⧸6\)\ \[101841-004-A\].en.srt



Linux 64 bits / France / Firefox 132.0
Dernière édition par tapirashabrack le Mar 5 Nov 2024 16:23, édité 1 fois.
tapirashabrack
 
Messages: 2
Inscription: Mar 5 Nov 2024 12:35

Re: Soucis Arte

Messagede Pulsar33 » Mar 5 Nov 2024 16:00

Bonjour,

Bienvenue et merci pour ces informations détaillées. J'en étais au même point et j'allais poster mes expériences.
Nous sommes un peu hors sujet dans Captvty/Soucis Arte mais comme Guillaume ne répond toujours pas, il faut bien trouver des contournements.
Pour l'instant, je laisse donc ces messages dans ce sujet. Je les déplacerai peut-être plus tard.

Donc, premier conseil : toujours bien veiller à avoir un yt-dlp récent et faire des mises à jour fréquentes car il évolue souvent
Je l'ai faite aujourd'hui après avoir constaté que je n'arrivais pas à télécharger une vidéo de France2

Deuxièmement, si les sous-titres vous sont nécessaires, ajoutez leur listage ( --list-subs ) directement dans la commande de recherche. Exemple :
Code: Tout sélectionner
yt-dlp --list-subs -F https://www.arte.tv/fr/videos/115511-001-A/especes-invasives-sont-elles-si-nocives

Troisièmement, il y a deux options pour récupérer les sous-titres et une pour choisir quels sous-titres :
--embed-subs si vous voulez les graver directement dans la vidéo (mais ceci ne fonctionne pas actuellement)
--write-subs si vous voulez télécharger le fichier (ceci fonctionne mais peut nécessiter un traitement additionnel)
L'option qui permet de choisir quels sous-titres vous souhaitez récupérer est --sub-lang
Je vous conseille donc actuellement d'utiliser par exemple :
Code: Tout sélectionner
yt-dlp --write-subs --sub-lang fr-forced -f VF-STF-2114+VF-STF-audio_0-Français https://www.arte.tv/fr/videos/115511-001-A/especes-invasives-sont-elles-si-nocives/

Ensuite, je ne sais pas dire si c'est lié à mon OS Linux, aux applications Celluloid ou smplayer mais le fichier de sous-titres ne s'affiche pas bien qu'il soit vu.
C'est sans doute lié au format VTT comme indiqué par tapirashabrack . Vous pouvez utiliser sa commande pour obtenir un fichier SRT qui lui marchera.
Pour ma part j'ai utilisé un des nombreux convertisseurs en ligne (entre autre celui-ci) et tout fonctionne bien alors.

Bonne soirée
Pulsar33


Linux 64 bits / France / Google Chrome 130.0.0.
Mes matériels : PCs MINT 21.3, 3 x Raspberry PI4, NAS Asustor, Disques Multimédia EMTEC, Tuners TNT TERRATEC, Camescope DV, Caméra 4KVR360
Avatar de l’utilisateur
Pulsar33
 
Messages: 2909
Inscription: Dim 30 Sep 2012 14:23
Localisation: Bordeaux

Re: Soucis Arte

Messagede tapirashabrack » Mar 5 Nov 2024 17:59

Très pratiques les commandes combinées de Pulsar33, merci ! :pouce:

Je me permets de partager un bout de code en Python pour ne plus avoir à passer les commandes de yt-dlp dans la console (un peu lourdingue à la longue).
Le script permet de saisir l'url de la page Arte.Tv, et la langue des sous-titres / l'ID de la piste audio / l'ID de la piste vidéo après en avoir affiché la liste.
Il crée un fichier MP4 (vidéo+audio) et un ou plusieurs fichiers de sous-titres au format SRT.
Testé sous Linux Mint 22 et Windows 11.
Le How-to figure en début de script.

EDIT : Code MAJ le 2024-11-06 à 16:15

Code: Tout sélectionner
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Nov  5 15:03 2024
Updated on Wed Nov 6 16:15 2024

@author: tapirashabrack
"""

#=========================
# DESCRIPTION DU PROGRAMME
#=========================

# Script Python qui s'appuie :
    # - sur le programme externe yt-dlp pour télécharger des vidéos et leurs sous-titres à partir du site https://www.arte.tv
    # - sur le programme externe ffmpeg pour convertir les sous-titres téléchargés du format VTT utilisé par Arte.TV vers le format SRT
    # - fonctionne sous Linux et Windows

# Pré-requis (cf infra configuration de test) :
    # - obligatoire : installation de Python et yt-dlp
    # - facultatif : installation de ffmpeg (conversion des sous-titres VTT -> SRT)
    # - Python, yt-dlp, et ffmpeg doivent être présents dans le PATH du système

# Comment exécuter le script :
    # - copier-coller le script dans un document texte enregistré avec l'extension .py
    # - option (1) : double-cliquer sur le script. Sous Linux, choisir "Ouvrir dans un terminal".
    # - option (2) : ouvrir un terminal, se positionner dans le répertoire du script et lancer ce dernier via l'une des commandes suivantes : python script.py OU python3 script.py OU script.py
    # - option (3) : ouvrir un terminal et lancer le script en saisissant son chemin absolu. Ex : C:\Users\tapirashabrack\Downloads\script.py
    # - options (1) et (2) : les fichiers en sortie sont créés dans le répertoire courant (répertoire du script)
    # - option (3) : les fichiers en sortie sont créés dans le répertoire dans lequel l'utilisateur est positionné dans le terminal au moment d'exécuter le script

# Fichiers en sortie. Le programme crée :
    # - un fichier vidéo+audio au format MP4
    # - facultatif : un ou des fichiers de sous-titres au format SRT. Si un seul fichier de sous-titres est téléchargé, il portera le même nom que celui du fichier MP4.

# Le script prend en arguments à saisir dans le terminal :
    # - l'URL du contenu à télécharger. Ex : https://www.arte.tv/fr/videos/101841-001-A/rematch-1-6/
    # - facultatif : le ou les codes correspondant à la langue des sous-titres. Possibilité de saisir une liste séparée par des espaces. Ex : fr OU fr en
    # - l'ID de la piste audio. Ex : VF-STF-audio_0-Français
    # - l'ID de la piste vidéo. Ex : VF-STF-2118

# Recommandation pour la saisie des arguments :
    # - copier-coller les codes / ID tels qu'ils saffichent dans le terminal (utiliser CTRL+SHIFT+C / CTRL+SHIFT+V).
    # - La saisie est sensible à la casse. Les blancs en début / fin de saisie sont ignorés.
    # - Ne pas omettre les caractères spéciaux "_" qui terminent certains ID

# Configuration de test :
# Linux Mint 22 64 bits ((6.8.0.48)) / Windows 11 Pro 64 bits (23H2)
# Python 3.12.3 (Linux) / Python 3.13.0 (Windows)
# yt-dlp du 2024-04-09 (Linux) / du 2024-11-04 (Windows)
# ffmpeg 6.1 (Linux) / ffmpeg 2024-02-15 (Windows)

#===========
# LIBRAIRIES
#===========

import subprocess, os, re, sys

# =========
# FONCTIONS
# =========

# Exécuter une commande destinée à un programme externe (yt-dlp, ffmpeg)
def executer(commande, messageErreur=None) :   
    try:
        resultat = subprocess.run(commande, shell=True, check=True, text=True, capture_output=True)
        print(resultat.stdout)
    except subprocess.CalledProcessError as e:
        if messageErreur is not None :
            print(messageErreur)
        # print(e.stderr)
        sys.exit()
       
# Afficher la liste des pistes de sous-titres avec yt-dlp
def afficherListeSousTitres(url) :
    print('\nRécupération de la liste des sous-titres\n')
    commande = ' '.join(['yt-dlp --list-subs', url])
    messageErreur = '''
    Problème pour récupérer la liste des sous-titres
    Vérifiez l'URL saisie
    Vérifiez que yt-dlp est correctement installé et présent dans le PATH de votre système
    '''
    executer(commande, messageErreur)
   
# Télécharger les sous-titres
def telechargerSousTitres(url) :
    messageInput = '''
    Choix des sous-titres à télécharger (FACULTATIF)
    Saisir la langue des sous-titres à télécharger. Ex : fr-forced
    Pour télécharger plusieurs sous-titres, saisir une liste séparée par des espaces. Ex : fr-forced fr-acc
    Pour passer, appuyer sur ENTREE
   
    Votre choix : '''
    langue = input(messageInput).strip()
    if langue != '' :
        listeLangues = langue.split()
        langueFormattee = '"'+','.join(listeLangues)+'"' if len(listeLangues) > 1 else langue
        print('\nTéléchargement des sous-titres dans', os.getcwd(),'\n')
        commande = ' '.join(['yt-dlp --write-subs --sub-langs', langueFormattee, '--skip-download', url])
        # Pas de message d'erreur à imprimer dans le terminal : yt-dlp ne plante pas en cas de saisie d'une langue erronée pour les sous-titres, et affiche son propre message d'erreur
        executer(commande)

# Convertir les sous-titres du format VTT vers le format SRT       
def convertirSousTitres() :
       
    # Recherche dans le répertoire courant de fichier de sous-titres   
    repertoire = os.getcwd()
    listeFicSousTitres = [f for f in os.listdir(repertoire) if f.endswith(".vtt")] 
   
    if len(listeFicSousTitres) > 0 :
       
        print('Conversion de',str(len(listeFicSousTitres)),'fichier(s) de sous-titres au format VTT vers le format SRT')
       
        # Parcours de la liste des sous-titres au format VTT
        for fichier in listeFicSousTitres :
                       
            chemin_fichier = os.path.join(repertoire, fichier)
           
            # Lecture du contenu du fichier de sous-titres
            with open(chemin_fichier, "r", encoding="utf-8") as f:
                contenu = f.read()
               
                # Suppression des styles de couleurs (fait planter la conversion VTT -> SRT par ffmpeg)
                pattern = r"STYLE[^\{]+\{[^\}]+\}"
                contenu_modifie = re.sub(pattern, "", contenu)
           
            # Création d'un fichier de sous-titres au format VTT sans styles de couleur
            with open(chemin_fichier, "w", encoding="utf-8") as f:
                f.write(contenu_modifie)
           
            # Renommage du fichier de sous-titres : si un seul fichier de sous-titres est téléchargé, suppression du code langue dans le nom du fichier (= nom identique à celui du fichier MP4) 
            if len(listeFicSousTitres) == 1 :
                fichier_converti = re.sub(r"\.[^\.]+\.vtt$", ".srt", fichier)
            else :
                fichier_converti = re.sub(r"\.vtt$", ".srt", fichier)
            chemin_fichier_converti = os.path.join(repertoire, fichier_converti)
           
            # Suppression du fichier au format SRT s'il existe déjà (suspend la conversion avec ffmpeg)               
            if os.path.exists(chemin_fichier_converti):
                os.remove(chemin_fichier_converti)
               
            # Conversion du fichier au format VTT vers le format SRT avec ffmpeg
            commande = ' '.join(['ffmpeg -i', '"'+chemin_fichier+'"', '"'+chemin_fichier_converti+'"'])
            messageErreur = '''
            Problème pour convertir les sous-titres du format VTT vers SRT.
            Vérifiez que ffmpeg est correctement installé et présent dans le PATH de votre système
            '''
            executer(commande, messageErreur)
           
            # Suppression du fichier au format VTT
            os.remove(chemin_fichier)
           
# Afficher la liste des pistes audio et vidéo avec yt-dlp
def afficherListePistesAudVid(url) :
    print('\nRécupération de la liste des pistes audio et vidéo\n')
    commande = ' '.join(['yt-dlp -F', url])
    messageErreur = '''
    Problème pour récupérer la liste des pistes audio et video
    Vérifiez l'URL saisie
    Vérifiez que yt-dlp est correctement installé et présent dans le PATH de votre système
    '''
    executer(commande, messageErreur)
   
# Télécharger les pistes audio et vidéo et les fusionner dans un fichier MP4
def telechargerPisteAudVid(url) :
    messageInput = '''
    Choix de la piste AUDIO. Ex : VF-STF-audio_0-Français
   
    Votre choix : '''
    idAudio = input(messageInput).strip()
    messageInput = '''
    Choix de la piste VIDEO. Ex : VF-STF-2118
   
    Votre choix : '''
    idVideo = input(messageInput).strip()
    commande = ' '.join(['yt-dlp -f', idVideo+'+'+idAudio, url])
    print('\nTéléchargement et fusion des pistes audio et vidéo dans', os.getcwd(),'\n')
    messageErreur = 'Problème pour récupérer les pistes audio / vidéo. Vérifiez les ID de piste saisis.'
    executer(commande, messageErreur)

# ==================
# DEBUT DU PROGRAMME
# ==================

def main() :
    messageInput = '''
    Pré-requis : python, yt-dlp, et ffmpeg doivent être installés et présents dans le PATH du système.
   
    Saisir l'URL du contenu à télécharger. Ex : https://www.arte.tv/fr/videos/101841-001-A/rematch-1-6/
   
    Votre choix : '''
    url = input(messageInput).strip()
    afficherListeSousTitres(url)
    telechargerSousTitres(url)
    convertirSousTitres()
    afficherListePistesAudVid(url)
    telechargerPisteAudVid(url) 
    input("Fin d'exécution du programme.\nAppuyez sur ENTREE pour quitter...")   
   
if __name__ == "__main__":
    main()
   
# ================
# FIN DU PROGRAMME
# ================


Linux 64 bits / France / Firefox 132.0
Dernière édition par tapirashabrack le Mer 6 Nov 2024 16:21, édité 5 fois.
tapirashabrack
 
Messages: 2
Inscription: Mar 5 Nov 2024 12:35

Re: Soucis Arte

Messagede Pulsar33 » Mar 5 Nov 2024 20:21

Bonsoir,
Sympa, merci :pouce:
Pulsar33


Linux 64 bits / France / Google Chrome 130.0.0.
Mes matériels : PCs MINT 21.3, 3 x Raspberry PI4, NAS Asustor, Disques Multimédia EMTEC, Tuners TNT TERRATEC, Camescope DV, Caméra 4KVR360
Avatar de l’utilisateur
Pulsar33
 
Messages: 2909
Inscription: Dim 30 Sep 2012 14:23
Localisation: Bordeaux

Re: Soucis Arte

Messagede Philippe_E » Mar 5 Nov 2024 23:05

Merci pour toutes ces idées pratiques de manipulations avec yt-dlp.

Par ailleurs, l'outil Parabolic de Nick Logozzo (https://github.com/NickvisionApps/Parabolic/releases), continue d'évoluer. Il permet maintenant à partir d'une URL : le choix de la qualité de vidéo, de la langue de l'audio et de la langue du sous-titre. Le sous-titre est pour l'instant en vtt, mais pourra prochainement être choisi en srt.

Philippe


Windows 10 64 bits / France / Firefox 132.0 64 bits
Philippe_E
 
Messages: 9
Inscription: Dim 21 Aoû 2016 07:45

Re: Soucis Arte

Messagede Rastignac » Ven 15 Nov 2024 08:09

Argh ! Arte commence à squatter sur FranceTV. Y'a des films qu'on retrouve là-bas depuis peu ! Ça aide.
Avatar de l’utilisateur
Rastignac
 
Messages: 727
Inscription: Mer 13 Juil 2016 19:59

Re: Soucis Arte

Messagede Philippe_E » Ven 15 Nov 2024 09:44

Bonjour,
L'outil Parabolic de Nick Logozzo (https://github.com/NickvisionApps/Parabolic/releases), continue d'évoluer. La version 2024.11.0 permet à partir d'une URL : le choix de la qualité de vidéo, de la langue de l'audio et de la langue du sous-titre. Le format du sous-titre est à modifier dans paramètres (vtt, srt....). Même s'il n'y a pas la souplesse de Captvty avec la récupération de tous les programmes, c'est un parfait outil d'attente.
Philippe


Windows 10 64 bits / France / Firefox 132.0 64 bits
Philippe_E
 
Messages: 9
Inscription: Dim 21 Aoû 2016 07:45

Re: Soucis Arte

Messagede Pulsar33 » Ven 15 Nov 2024 11:02

Bonjour,
Dommage d'être obligé d'installer vcpkg pour pouvoir compiler
Je préfère rester avec mon outil perso, quitte à le faire évoluer si besoin
Bonne journée
Pulsar33


Linux 64 bits / France / Google Chrome 130.0.0.
Mes matériels : PCs MINT 21.3, 3 x Raspberry PI4, NAS Asustor, Disques Multimédia EMTEC, Tuners TNT TERRATEC, Camescope DV, Caméra 4KVR360
Avatar de l’utilisateur
Pulsar33
 
Messages: 2909
Inscription: Dim 30 Sep 2012 14:23
Localisation: Bordeaux

Re: Soucis Arte

Messagede selligee » Dim 17 Nov 2024 10:48

Rastignac a écrit:Argh ! Arte commence à squatter sur FranceTV. Y'a des films qu'on retrouve là-bas depuis peu ! Ça aide.


Oui et non
- je crois que les films Arte sur France TV ne sont pas visibles sur captvty /France 2 (il faut sans doute une petite adaptation de la part de Guillaume)
- j'enregistre toujours les films en VOSTF ; via captvty , pour le films France TV (contrairement à Arte) , on n'a pas le choix de la langue ; les films sont toujours en VF

Donc pas encore testé avec la baguette magique, mais je pense que les films et séries Arte depuis France Television ne doivent pas être téléchargeables en VO


Windows 10 64 bits / United Kingdom / Firefox 132.0 64 bits
selligee
 
Messages: 12
Inscription: Dim 13 Oct 2024 18:50

PrécédenteSuivante

Retourner vers Captvty

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités