⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transcription2tabdelimitedtext.java

📁 编辑视频文件
💻 JAVA
字号:
/* * File:     Transcription2TabDelimitedText.java * Project:  MPI Linguistic Application * Date:     02 May 2007 * * Copyright (C) 2001-2007  Max Planck Institute for Psycholinguistics * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */package mpi.eudico.client.util;import mpi.eudico.server.corpora.clom.AnnotationCore;import mpi.eudico.server.corpora.clom.Transcription;import mpi.eudico.server.corpora.clomimpl.abstr.TierImpl;import mpi.eudico.util.TimeRelation;import mpi.search.content.result.model.ContentMatch;import mpi.util.TimeFormatter;import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.nio.charset.UnsupportedCharsetException;import java.util.List;/** * Created on Apr 20, 2004 Jun 2005: added optional export of time values in * milliseconds * * @author Alexander Klassmann * @version June 30, 2005 * @version Aug 2005 Identity removed */public class Transcription2TabDelimitedText {    /** Holds value of property DOCUMENT ME! */    final static public String TAB = "\t";    /** Holds value of property DOCUMENT ME! */    final static private String NEWLINE = "\n";    /**     * Exports all annotations on specified tiers     *     * @param transcription     * @param tierNames     * @param exportFile     *     * @throws IOException     */    static public void exportTiers(Transcription transcription,        String[] tierNames, File exportFile) throws IOException {        exportTiers(transcription, tierNames, exportFile, 0L, Long.MAX_VALUE);    }    /**     * Exports annotations that overlap with specified time interval     *     * @param transcription     * @param tierNames     * @param exportFile     * @param beginTime     * @param endTime     *     * @throws IOException     */    static public void exportTiers(Transcription transcription,        String[] tierNames, File exportFile, long beginTime, long endTime)        throws IOException {        exportTiers(transcription, tierNames, exportFile, beginTime, endTime,            true, true, true, true, true, false);    }    /**     * Exports annotations of the specified tiers that overlap the specified     * interval. Which time information and in which time formats should be     * included in the output is specified by the last 6 params.     *     * @param transcription the source transcription     * @param tierNames the names of the tiers to export     * @param exportFile the destination file     * @param beginTime begin time of the selected interval     * @param endTime end time of the selected interval     * @param includeBeginTime if true include the begin time of annotations     * @param includeEndTime if true include the end time of annotations     * @param includeDuration if true include the duration of annotations     * @param includeHHMM if true include the times in hh:mm:ss.ms format     * @param includeSSMS if true include the times in ss.ms format     * @param includeMS if true include the times in ms format     *     * @throws IOException i/o exception     */    static public void exportTiers(Transcription transcription,        String[] tierNames, File exportFile, long beginTime, long endTime,        boolean includeBeginTime, boolean includeEndTime,        boolean includeDuration, boolean includeHHMM, boolean includeSSMS,        boolean includeMS) throws IOException {        exportTiers(transcription, tierNames, exportFile, "UTF-8", beginTime,            endTime, includeBeginTime, includeEndTime, includeDuration,            includeHHMM, includeSSMS, includeMS);    }    /**     * Exports annotations of the specified tiers that overlap the specified     * interval. Which time information and in which time formats should be     * included in the output is specified by the last 6 params.     *     * @param transcription the source transcription     * @param tierNames the names of the tiers to export     * @param exportFile the destination file     * @param charEncoding the character encoding     * @param beginTime begin time of the selected interval     * @param endTime end time of the selected interval     * @param includeBeginTime if true include the begin time of annotations     * @param includeEndTime if true include the end time of annotations     * @param includeDuration if true include the duration of annotations     * @param includeHHMM if true include the times in hh:mm:ss.ms format     * @param includeSSMS if true include the times in ss.ms format     * @param includeMS if true include the times in ms format     *     * @throws IOException i/o exception     */    static public void exportTiers(Transcription transcription,        String[] tierNames, File exportFile, String charEncoding,        long beginTime, long endTime, boolean includeBeginTime,        boolean includeEndTime, boolean includeDuration, boolean includeHHMM,        boolean includeSSMS, boolean includeMS) throws IOException {        exportTiers(transcription, tierNames, exportFile, charEncoding,            beginTime, endTime, includeBeginTime, includeEndTime,            includeDuration, includeHHMM, includeSSMS, includeMS, false, false,            0L);    }    /**     * Exports annotations of the specified tiers that overlap the specified     * interval. Which time information and in which time formats should be     * included in the output is specified by the last 6 params.     *     * @param transcription the source transcription     * @param tierNames the names of the tiers to export     * @param exportFile the destination file     * @param charEncoding the character encoding     * @param beginTime begin time of the selected interval     * @param endTime end time of the selected interval     * @param includeBeginTime if true include the begin time of annotations     * @param includeEndTime if true include the end time of annotations     * @param includeDuration if true include the duration of annotations     * @param includeHHMM if true include the times in hh:mm:ss.ms format     * @param includeSSMS if true include the times in ss.ms format     * @param includeMS if true include the times in ms format     * @param includeSMPTE if true include times in hh:mm:ss:ff format     * @param palFormat if includeSMPTE is true: use PAL timecode if palFormat is true,     * otherwise use NTSC drop frame     * @param mediaOffset the (master) media offset to be added to the annotations' time values     *     * @throws IOException i/o exception     */    static public void exportTiers(Transcription transcription,        String[] tierNames, File exportFile, String charEncoding,        long beginTime, long endTime, boolean includeBeginTime,        boolean includeEndTime, boolean includeDuration, boolean includeHHMM,        boolean includeSSMS, boolean includeMS, boolean includeSMPTE,        boolean palFormat, long mediaOffset) throws IOException {        if (exportFile == null) {            throw new IOException("No destination file specified for export");        }        FileOutputStream out = new FileOutputStream(exportFile);        OutputStreamWriter osw = null;        try {            osw = new OutputStreamWriter(out, charEncoding);        } catch (UnsupportedCharsetException uce) {            osw = new OutputStreamWriter(out, "UTF-8");        }        BufferedWriter writer = new BufferedWriter(osw);        AnnotationCore[] annotations = null;        for (int j = 0; j < tierNames.length; j++) {            TierImpl tier = (TierImpl) transcription.getTierWithId(tierNames[j]);            annotations = (AnnotationCore[]) tier.getAnnotations().toArray(new AnnotationCore[0]);            for (int i = 0; i < annotations.length; i++) {                if (annotations[i] != null) {                    if (TimeRelation.overlaps(annotations[i], beginTime, endTime)) {                        //writer.write(tierNames[j] + getTabString(annotations[i]));                        writer.write(tierNames[j] +                            getTabString(annotations[i], includeBeginTime,                                includeEndTime, includeDuration, includeHHMM,                                includeSSMS, includeMS, includeSMPTE,                                palFormat, mediaOffset));                    }                }            }        }        writer.close();    }    /**     * Exports a List of AnnotationCores to Tab limited text     *     * @param tierName DOCUMENT ME!     * @param annotations     * @param exportFile     *     * @throws IOException     */    static public void exportAnnotations(String tierName, List annotations,        File exportFile) throws IOException {        if (exportFile == null) {            return;        }        FileOutputStream out = new FileOutputStream(exportFile);        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out,                    "UTF-8"));        for (int i = 0; i < annotations.size(); i++) {            if (annotations.get(i) instanceof AnnotationCore) {                writer.write(tierName +                    getTabString((AnnotationCore) annotations.get(i)));            }        }        writer.close();    }    /**     * DOCUMENT ME!     *     * @param annotationCore     *     * @return String     */    static public String getTabString(AnnotationCore annotationCore) {        return getTabString(annotationCore, true, true);    }    /**     * DOCUMENT ME!     *     * @param annotationCore     * @param HHMMformat if true, output of times in HHMMss.mmm format     * @param SSMSFormat if true, output of times in second.milliseconds format     *     * @return String     */    static public String getTabString(AnnotationCore annotationCore,        boolean HHMMformat, boolean SSMSFormat) {        return getTabString(annotationCore, true, true, true, HHMMformat,            SSMSFormat, false);    }    /**     * Creates a tab delimited string with time information and the annotation     * value.     *     * @param annotationCore the annotation     * @param beginTime include begintime in output     * @param endTime include endtime in output     * @param duration include duration in output     * @param HHMMformat if true, output of times in HHMMss.mmm format     * @param SSMSFormat if true, output of times in sec.milliseconds format     * @param MSFormat if true, output of times in milliseconds format     *     * @return String the tab seperated result string     */    static public String getTabString(AnnotationCore annotationCore,        boolean beginTime, boolean endTime, boolean duration,        boolean HHMMformat, boolean SSMSFormat, boolean MSFormat) {        return getTabString(annotationCore, beginTime, endTime, duration,            HHMMformat, SSMSFormat, MSFormat, false, false, 0L);    }    /**     * Creates a tab delimited string with time information and the annotation     * value.     *     * @param annotationCore the annotation     * @param beginTime include begintime in output     * @param endTime include endtime in output     * @param duration include duration in output     * @param HHMMformat if true, output of times in HHMMss.mmm format     * @param SSMSFormat if true, output of times in sec.milliseconds format     * @param MSFormat if true, output of times in milliseconds format     * @param SMPTEFormat if true, output times in SMPTE timecode format     * @param PAL if SMPTEFormat is true and PAL is true use PAL timecode,     * if SMPTEFormat is true and PAL is false use NTSC drop frame timecode     * @param mediaOffset the (master) media offset to be added to the annotations' time values     *     * @return String the tab seperated result string     */    static public String getTabString(AnnotationCore annotationCore,        boolean beginTime, boolean endTime, boolean duration,        boolean HHMMformat, boolean SSMSFormat, boolean MSFormat,        boolean SMPTEFormat, boolean PAL, long mediaOffset) {        StringBuffer sb = new StringBuffer(TAB);        long bt = annotationCore.getBeginTimeBoundary() + mediaOffset;        long et = annotationCore.getEndTimeBoundary() + mediaOffset;        // begin time        if (beginTime) {            if (HHMMformat) {                sb.append(TimeFormatter.toString(bt) + TAB);            }            if (SSMSFormat) {                sb.append(Double.toString(bt / 1000.0) + TAB);            }            if (MSFormat) {                sb.append(bt + TAB);            }            if (SMPTEFormat) {                if (PAL) {                    sb.append(TimeFormatter.toTimecodePAL(bt) + TAB);                } else {                    sb.append(TimeFormatter.toTimecodeNTSC(bt) + TAB);                }            }        }        // end time        if (endTime) {            if (HHMMformat) {                sb.append(TimeFormatter.toString(et) + TAB);            }            if (SSMSFormat) {                sb.append(Double.toString(et / 1000.0) + TAB);            }            if (MSFormat) {                sb.append(et + TAB);            }            if (SMPTEFormat) {                if (PAL) {                    sb.append(TimeFormatter.toTimecodePAL(et) + TAB);                } else {                    sb.append(TimeFormatter.toTimecodeNTSC(et) + TAB);                }            }        }        // duration        if (duration) {            long d = et - bt;            if (HHMMformat) {                sb.append(TimeFormatter.toString(d) + TAB);            }            if (SSMSFormat) {                sb.append(Double.toString(d / 1000.0) + TAB);            }            if (MSFormat) {                sb.append(d + TAB);            }        }        sb.append(annotationCore.getValue().replace('\n', ' ') + NEWLINE);        return sb.toString();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -