module inscription newsletter haut de page forum mobile

Rejeter la notice

ateliers live resolve avec forest

Ateliers Live Resolve - Formez-vous en ligne tous les mois avec Forest !
Faites rapidement évoluer la qualité de vos étalonnage avec nos ateliers mensuels de 3h.
Toutes les infos

Ateliers et Formations

Script remplacer des calques textes par un texe contenu dans un fichier txt ou word

Discussion dans 'Adobe After Effects' créé par jdvroum, 29 Janvier 2007.

Tags:
  1. jdvroum

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    58
    Appréciations:
    +0 / 0 / -0
    Script remplacer des calques textes par un texe contenu dans un fichier txt ou word

    Bonjour,

    J'aimerais mettre à jour les calques texte d'une composition en exécutant un script permettant de remplacer le contenu d'un calque texte par le texte contenu dans un fichier txt ou word...

    Si par exemple j'ai une composition comprenant 10 calques de textes que je dois mettre à jour tous les jours. pour ne pas devoir toucher au projet, j'aimerais pouvoir écrire 10 lignes dans un fichier texte et l'appeler à partir d'after.

    Je ne suis pas très ceratin d'être clair.
    J'ai trouvé un script très interressant à l'adresse suivante mais cela ne correspond pas vraiment à ce que je recherche. Creative Workflow Hacks » Blog Archive » How to use a spreadsheet to generate Lower Thirds, Slates, Titles, etc. in After Effects

    Merci pour votre aide
    Julien
     
  2. logicalnot

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    491
    Appréciations:
    +0 / 0 / -0
  3. jdvroum

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    58
    Appréciations:
    +0 / 0 / -0
    Je comprends très mal l'anglais, est-ce que tu pourrais m'en dire plus. Comment créer la composition avant de lancer le script ?

    Julien
     
  4. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    Salut, est-ce toi qui avait demandé un script pour les résultats de foot l'année dernière ? je crois bien que oui :D

    Celui que je t'avais écrit doit être un bon point de départ pour l'adapter à ton projet. Il y a tout ce dont tu as besoin dedans.

    (en espérant que tu aies appris un peu de javascript pendant l'année...)
     
  5. jdvroum

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    58
    Appréciations:
    +0 / 0 / -0
    eh oui

    Nab17 connexion,

    en effet, c'est bien moi qui t'ai demandé ce script l'an dernier et il fonctionne très bien mais je suis perdu dedans. Malheureusement je n'ai pas progressé en javascript même si j'ai ouvert un bouquin ! En fait, le script que tu m'as fait est très bien mais je n'arrive pas à l'adapter.

    De le cas présent, j'aimerais simplement remplacer les calques lignes par lignes. Par exmple j'ai trois calques de texte, j'écris trois lignes et dès que je vais à la ligne dans mon fichier txt, il change de calque dans after. J'aimerais pouvoir avoir trois lignes ou plus au choix.

    J'ai recherché des infos sur l'import d'un fichier txt dans after, j'ai même trouvé l'import de fichier pdf ou word mais tout est en anglais ou le script ne correspond pas exactemeny à ce que je recherche.

    Pour on anglais je regarde les podcast de creative cow mais pour le javascipt j'ai beaucoup plus de mal.

    Merci pour ton aide Nab17connexion, ton site sur les expressions et les cripts est très interressant, j'utilise ta "console" de script au boulot de temps en temps et je dois dire qu'elle est bien pratique.
    @+
    Julien
     
  6. nab17connection

    Points Repaire:
    1 900
    Recos reçues:
    1
    Messages:
    1 051
    Appréciations:
    +0 / 0 / -0
    Tutorial

    Ok, alors on va essayer de tourner cela en petit tutorial, qui j'espère servira à tous ceux qui ont besoin d'automatiser ce genre de choses.

    Pour simplifier au maximum, nous allons écrire un script un peu voyou qui omettra tout ce qui est vérification des prérequis et interception des éventuelles erreurs, pour ne garder que "le plus important" (en temps normal il va de soi que je n'écris jamais de tel script et le déconseille dans un cadre professionel de production).

    1. OBJECTIF

    Pour comprendre les choses, nous allons nous exercer sur un exemple très simple.
    Notre composition ressemble à cela:

    [​IMG]

    Nous avons un fichier texte qui contient le nouveau texte.
    Ce fichier .txt ressemble à cela:

    [​IMG]

    Et notre objectif est d'obtenir ceci:

    [​IMG]

    2. LE SCRIPT

    Le script doit pouvoir :

    • récupérer le fichier .txt

    • lire une ligne

    • remplacer dans AE l'ancien texte par le nouveau

    Dans le code qui suit, les termes en bleu sont des termes spécifiques à AE, les termes en rouge sont du javascript normal, les chaines de caractères en vert et en noir nos variables.

    2.1 récupérer le fichier .txt
    Il existe une fonction prédéfinie pour afficher une boite de dialogue pour sélectionner un fichier sur le disque.
    La syntaxe est la suivante:

    Code:
    [COLOR="Red"]var[/COLOR] monFichier = [COLOR="RoyalBlue"]fileGetDialog([/COLOR][COLOR="SeaGreen"]"Choisissez un fichier texte:"[/COLOR], [COLOR="SeaGreen"]"TEXT txt"[/COLOR][COLOR="RoyalBlue"])[/COLOR];
    2.2 si tout est ok
    Si le fichier a été sélectionné (i.e. monFichier n'est pas null) et qu'on peut l'ouvrir en mode lecture ("r" pour read) ...
    La syntaxe pour l'ouverture du fichier est à apprendre bêtement , les ? sont pour le système mac.

    Code:
    [COLOR="Red"]if[/COLOR] [COLOR="Red"]([/COLOR]monFichier [COLOR="Red"]&&[/COLOR] monFichier.[COLOR="RoyalBlue"]open([/COLOR][COLOR="SeaGreen"]"r"[/COLOR],[COLOR="SeaGreen"]"TEXT"[/COLOR],[COLOR="SeaGreen"]"????"[/COLOR][COLOR="RoyalBlue"])[/COLOR][COLOR="Red"])[/COLOR] [COLOR="Red"]{[/COLOR]
    2.3 on stocke quelques variables utiles
    On suppose que la composition est activée, nous la récupérons dans une variable 'myComp'. Nous déclarons aussi une autre variable qui nous servira d'index pour les calques à modifier (cet index va bien évidemment augmenter au cours du processus..)

    Code:
    	[COLOR="Red"]var[/COLOR] myComp = [COLOR="RoyalBlue"]app[/COLOR].[COLOR="RoyalBlue"]project[/COLOR].[COLOR="RoyalBlue"]activeItem[/COLOR];
    	[COLOR="Red"]var[/COLOR] indexCalque = 1;	
    
    2.4 Le Undo (Ctrl Z)
    C'est tjs pratique d'avoir la possiblité de supprimer ce qui vient d'être fait...surtout qd on teste un script.
    Voila la syntaxe pour faire cela (ici c est le début de l'Undo):

    Code:
    	[COLOR="RoyalBlue"]app[/COLOR].[COLOR="RoyalBlue"]beginUndoGroup([/COLOR][COLOR="SeaGreen"]"TextFromFile_tutorial.jsx"[/COLOR][COLOR="RoyalBlue"])[/COLOR];
    2.5 début de la boucle
    Nous supposons qu'il y a autant de lignes dans le fichier que de calques texte à remplacer.
    Nous allons donc lire le fichier du début jusqu'à la fin. La fin d'un fichier est notée eof (pour end of file).
    Tant que nous ne sommes pas arrivés à la fin:

    Code:
    	[COLOR="Red"]while ([/COLOR]!monFichier.[COLOR="RoyalBlue"]eof[/COLOR][COLOR="Red"])[/COLOR] [COLOR="Red"]{[/COLOR]
    2.6 The Real Job
    On commence par lire la ligne, puis on attribue une nouvelle valeur à la source du calque texte en cours et enfin on augmente d'une unité notre variable représentant l'index du calque (si on ne faisait pas cela, on remplacerait tjs le même calque)
    Notons que lorsqu'une ligne est lue avec readln(), le "curseur" se déplace automatiquement à la ligne suivante.

    Code:
    		[COLOR="Red"]var[/COLOR] laLigne = monFichier.[COLOR="RoyalBlue"]readln()[/COLOR];				
    		myComp.[COLOR="RoyalBlue"]layer([/COLOR]indexCalque[COLOR="RoyalBlue"])[/COLOR].[COLOR="RoyalBlue"]sourceText[/COLOR].[COLOR="RoyalBlue"]setValue([/COLOR]laLigne[COLOR="RoyalBlue"])[/COLOR];					
    		indexCalque ++;		
    

    2.7 La messe est dite

    On a fini, il faut fermer la boucle while, terminer notre Undo, fermer le fichier , fermer le bloc du if.

    Code:
    	[COLOR="Red"]}[/COLOR]	
    	[COLOR="RoyalBlue"]app[/COLOR].[COLOR="RoyalBlue"]endUndoGroup()[/COLOR];	
    	monFichier.[COLOR="RoyalBlue"]close()[/COLOR];
    [COLOR="Red"]}[/COLOR]
    3. TELECHARGER

    Et comme un lot de fichiers apparait souvent à la fin d'un tutorial, voilà le traditionnel zip contenant tout ce dont j'ai palé plus haut.

    Pour tester, c'est simple: ouvrir le projet, s'assurer que la comp est bien active et exécuter le script. (le projet a été fait sur AE7.0, j'imagine que ceux qui sont sur AE6.5 savent créer 4 calques texte dans une comp vierge).

    download: TextFromFile_tutorial.zip

    ps: n'oublier pas de cocher la case "Allow Scripts..."/ "Autoriser les scripts..." dans les Preferences section General
     
  7. logicalnot

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    491
    Appréciations:
    +0 / 0 / -0
    Voilà un joli tut ! Bravo et merci Nab.
    J'espére que Sequelles le mettra dans les FAQ car c'est une question qui revient une fois par mois.
     
  8. jdvroum

    Points Repaire:
    1 000
    Recos reçues:
    0
    Messages:
    58
    Appréciations:
    +0 / 0 / -0
    Merci beaucoup Nab, j'ai testé le script, il fonctionne bien. Je vais regardé de prêt l'écriture du scipt. Merci beaucoup pour ton message. J'avoue que je n'avais pas pensé à certains petits problèmes du style : Il y a plus de lignes dans le fichier texte ou dans la composition = error ! S'il y a un solide, une image, une vidéo dans la composition, il y a erreur. Il faut donc passer par une précomposition pour chaque habillage. Sinon pour la mise en forme du texte aucun problème.

    Ce script est très utile lorsqu'il faut mettre à jour rapidement et quotidiennement des infos qui ont été préparées par des personnes qui n'utilisent pas after mais uniquement office. Mon but est de créer une formulaire pour les rédacteurs au format word ou excel, de le convertir en fichier txt si besoin puis de faire moulinet after sans devoir reproduire une tâche parfois longue et répétitive.

    Je constate qu'il y a peu de pages consacrées à la mise en place de procédures techniques permettant de réduire la durée de tâches répétitives utilisant le texte...

    Merci encore pour ce tuto.
    Julien
     
Chargement...

Dernières occasions

 

Partager cette page