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

📄 srtrecord.java

📁 subtitlesync这是我写的一个小程序, 用于将下载的电影的字幕同步,因为很多时候字幕跟声音有不同步现象.现在只能处理SRT.格式的字幕. 开发平台是eclipse,使用方法是运行Main.j
💻 JAVA
字号:
package org.jeasylife.tools.subsync;

import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

/**
 * SRTRecord is SRT Record for  SRT file.
 * 
 * SRT record includes four field
 * id: begin from 1 to n, inc by 1, so can be sort
 * startTime: start time for sutitle,count in milli-second
 *     00:01:38,500
 *     hour:minute:second,milli-second
 * endTime: end time for subtitle,see above
 * 
 * This class will be put in a Sorted Set or Sorted Map
 * @author Owner
 *
 */
class SrtRecord implements Comparable<SrtRecord>{
	private Integer id;
	private Date startTime;
	private Date endTime;
	private String subtitle;

	public SrtRecord(Integer id, Date start, Date end, String subtitle) {
		super();
		this.id = id;
		setStartTime(new Date(start.getTime()));
		setEndTime(new Date(end.getTime()));
		this.subtitle = subtitle;
	}

	/**
	 * @param args
	 */
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Date start = new Date();
		start.setTime(2753);
		Date end = new Date();
		end.setTime(657634563454796L);
		SrtRecord record = new SrtRecord(1,start,end,"abc\ndef...\nddd...");
		System.out.println(record.toString());
		SrtRecord record1 = new SrtRecord(2,end,end,"okok");
		System.out.println(record.equals(record1));
		System.out.println(SrtRecord.parseTime("sdf").getTime());
		
		

	}

	/**
	 * @return the endTime
	 */
	public Date getEndTime() {
		return endTime;
	}

	/**
	 * @param endTime the endTime to set
	 */
	public void setEndTime(Date endTime) {
		this.endTime = endTime;
	}

	/**
	 * @return the id
	 */
	public Integer getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	private void setId(Integer id) {
		this.id = id;
	}

	/**
	 * @return the startTime
	 */
	public Date getStartTime() {
		return startTime;
	}

	/**
	 * @param startTime the startTime to set
	 */
	public void setStartTime(Date startTime) {
		this.startTime = startTime;
	}

	/**
	 * @return the subtitle
	 */
	public String getSubtitle() {
		return subtitle;
	}

	/**
	 * @param subtitle the subtitle to set
	 */
	private void setSubtitle(String subtitle) {
		this.subtitle = subtitle;
	}



	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
//		final int PRIME = 31;
//		int result = 1;
//		result = PRIME * result + ((id == null) ? 0 : id.hashCode());
		// could be faster
		return id.hashCode();
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		final SrtRecord other = (SrtRecord) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		
		Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
		cal.setTime(getStartTime());	
		//System.out.println("s: "+ cal.getTime().getTime());
		
		StringBuilder sb = new StringBuilder();
	
		sb.append(getId());
		sb.append("\r\n");
		sb.append(String.format("%02d:%02d:%02d,%03d --> ", 
				cal.get(Calendar.HOUR),cal.get(Calendar.MINUTE),
				cal.get(Calendar.SECOND),cal.get(Calendar.MILLISECOND)));

		
		cal.setTime(getEndTime());
		//System.out.println("e: "+ cal.getTime().getTime());
		
		sb.append(String.format("%02d:%02d:%02d,%03d\r\n", 
				cal.get(Calendar.HOUR),cal.get(Calendar.MINUTE),
				cal.get(Calendar.SECOND),cal.get(Calendar.MILLISECOND)));

		sb.append(getSubtitle());
		sb.append("\r\n");
		return sb.toString();
	}

	public int compareTo(SrtRecord o) {
		
		return this.id.compareTo(o.id);
	}
	public static Date parseTime(String time){
		//time = "00:01:10,345";
		String[] sa = time.split("[:,]");

		Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
		cal.setTimeInMillis(0);
		cal.set(Calendar.HOUR, Integer.parseInt(sa[0]));
		
		cal.set(Calendar.MINUTE, Integer.parseInt(sa[1]));
		cal.set(Calendar.SECOND, Integer.parseInt(sa[2]));
		cal.set(Calendar.MILLISECOND, Integer.parseInt(sa[3]));
		return cal.getTime();
		
	}
	
	

}

⌨️ 快捷键说明

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