IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Éditeur de sous-titres (fichier .srt).


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2013
    Messages : 17
    Par défaut Éditeur de sous-titres (fichier .srt).
    Bonsoir,

    Mon objectif est de créer un site web en javaee qui permet d'éditer des sous-titres(rendre un travail de traduction des sous-titres) comme le fonctionnement du site amara.org. Il m'a été demandé de remplir les conditions suivantes :
    1 / - Enregistrement de la traduction en base de données. (effectué mais je ne comprends pas le sens. car on ne saura pas après faire la correspondance entre la phrase traduite , le morceau et la durée du morceau).
    2/ - Code : utilisation du Pattern DAO (effectué)
    3/ - Export de la traduction en .srt ?????
    4/ - Upload d'un nouveau fichier à traduire(effectué)

    La seule question qui me pose problème est la question 1 et 2.

    Pour la question 1 :
    - J'ai essayé de lire le fichier et de stocker au fur et à mesure chaque ligne lue dans une liste ArrayList.
    - Ensuite j'ai essayé d'extraire uniquement les lignes contenant le texte. (pas les numéros de morceaux, pas les durées d'affichage du texte et pas de ligne vide).

    Voici la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    public ArrayList<String> trouverPhraseUniquement(ArrayList<String> original) {
    		originalSubtitles = new ArrayList<String>();
    		for (int i = 0; i < original.size(); i++) {
    			String ch = original.get(i);
    			if (!estUnEntier(ch)
    					&& !ch.matches("^$")
    					&& !ch.matches("[0-2][0-3]:[0-5][0-9]:[0-5][0-9],[0-9][0-9][0-9] --> [0-2][0-3]:[0-5][0-9]:[0-5][0-9],[0-9][0-9][0-9]")) {
    				originalSubtitles.add(ch);
    			}
    		}
    		return originalSubtitles;
    	}
     
    private boolean estUnEntier(String line) {
    		try {
    			Integer.parseInt(line);
    			return true;
    		} catch (NumberFormatException e) {
    			return false;
    		}
    	}
    Cette fonction me permet grâce à une jsp d'afficher le texte à traduire.

    Seulement, après je ne sais pas à quelle morceau appartient telle ou telle phrase. càd je n'arrive pas à transformer le fichier traduit en fichier .srt.

    Alors du coup j'ai pensé à une solution qui s'avère facile à comprendre mais difficile à mettre en application. Voici l'idée :
    1/ création d'une hashMap : clé = numéro du morceau et valeur = numéro du morceau, durée, phrase1, phrase2, ..
    le type de la clé = int alors que le type de valeur = String.
    Ainsi chaque ligne correspondra à un numéro de morceau.
    Voilà un code très simple qui fonctionne juste pour le premier morceau à cause de la condition
    while ((line = br.readLine()) != null && !line.equals("")):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    public HashMap<String, String> SubtitlesHandlerBis(String fileName) {
    		originalSubtitles = new ArrayList<String>();
    		ArrayList<String> temp = new ArrayList<String>();
    		HashMap<String, String> originalSubtitles2 = new HashMap<String, String>();
    		HashMap<String, String> temporaire = new HashMap<String, String>();
     
    		BufferedReader br;
    		try {
    			br = new BufferedReader(new FileReader(fileName));
    			String line;
    			while ((line = br.readLine()) != null && !line.equals("")) {
    				temp.add(line);
    				String morceau;
    				morceau = temp.get(0);
    				temporaire.put(morceau, temp.get(0));
    				for (int i = 0; i < temp.size(); i++) {
    					if (i != 0) {
    						temporaire.put(morceau, temp.get(i));
    					}
    				}
     
    				afficherMap(temporaire);
    			}
    			br.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return temporaire;
    	}
    Si j'arrive à extrapoler cette fonction pour l'ensemble des morceaux du fichier, c'est plus facile pour moi de reconnaître à quoi correspond chaque phrase traduite.

    Pour résumer, la traduction ne me pose pas de problème. mais l'export de la traduction en fichier .srt me pose problème car je ne comprends pas du tout ce qu'il faut faire.

    Rq : pour l'enregistrement dans la base de données : j'ai créé deux tables (une contenant : id_morceau(clé primaire) et la durée (date de début morceau et date de fin. la deuxième table contenant : id_phrase (clé primaire), id_morceau(clé secondaire), phrase(string)).

    Si quelqu'un pourrait me proposer une idée ou rectifier la mienne. je le remercie d'avance pour son aide.

    Merci

    Batman90

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par Batman90 Voir le message
    Pour la question 1 :
    - J'ai essayé de lire le fichier et de stocker au fur et à mesure chaque ligne lue dans une liste ArrayList.
    - Ensuite j'ai essayé d'extraire uniquement les lignes contenant le texte. (pas les numéros de morceaux, pas les durées d'affichage du texte et pas de ligne vide).
    Et c'est ton problème. Vu que tu as jeté l'information Morceau, durée, moment, tu ne pourra jamais refaire un .srt à partir de là. Tu dois conserver toute l'information. Par exemple en créeant une classe Morceau, et en créant une List<Morceau>

    Ta HashMap est aussi une bonne idée, par contre la mauvaise c'est d'essayer de t'obstiner à vouloir retomber sur une String stockant toute l'information. Tu es dans un langage objet. Crée des classes et des objets, ça te facilitera le travail

  3. #3
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 1
    Par défaut Bonjour
    Bonjour a tu trouvé la solution a ton excercice ? si oui peut tu me l'expliquer ?

Discussions similaires

  1. [XL-2003] Enregistrer un onglet excel sous un fichier titré seulement avec la date du jour.
    Par Naoned005 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/04/2012, 16h55
  2. Réponses: 7
    Dernier message: 18/04/2012, 12h45
  3. Réponses: 0
    Dernier message: 17/01/2009, 11h33
  4. Modification d'un fichier de sous-titres
    Par W-XM3 dans le forum C
    Réponses: 5
    Dernier message: 08/04/2008, 23h51
  5. Modifier sous-titre fichier ogm.
    Par Johnny P. dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 02/04/2006, 17h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo