문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 다음 판 양쪽 다음 판 | ||
subtitle_helper [2011/11/03 23:16] kwon37xi |
subtitle_helper [2014/10/28 00:44] kwon37xi |
||
---|---|---|---|
줄 1: | 줄 1: | ||
- | ====== 자막 도우미 ====== | + | ====== 자막 |
- | 리눅스에서 동영상의 제목이나 파일 이름을 사용해 자막 제공 싸이트에 자동으로 검색어를 입력해 띄워준다. | + | 리눅스(맥에서도 될거 같음)에서 동영상의 제목이나 파일 이름을 사용해 자막 제공 싸이트에 자동으로 검색어를 입력해 띄워준다. |
- | <code sh> | + | 일반 |
- | # 일반 | + | |
- | ssub.py CSI S12E06 | + | |
- | # 파일명 검색. 파일명의 확장자와 특수문자를 제거하고 | + | 수정/ |
- | ssub.py | + | |
+ | * python 2.4 이상 환경(테스트는 2.6에서만 해봤음) | ||
+ | * UTF-8 리눅스 환경 | ||
+ | * {{: | ||
+ | gunzip | ||
+ | chmod +x ssub.py | ||
+ | sudo cp ssub.py / | ||
+ | </ | ||
+ | * 사용예 <code sh> | ||
+ | |||
+ | # 사용할 브라우저 명령 지정. 설정 안하면 파이썬이 자동 탐색 | ||
+ | export SEARCH_SUBTITLE_BROWSER_COMMAND=" | ||
# 파일명 검색. S01E23 형태의 패턴이 존재하면 미드로 간주하며, | # 파일명 검색. S01E23 형태의 패턴이 존재하면 미드로 간주하며, | ||
ssub.py House.S08E04.720p.HDTV.X264-DIMENSION.mkv # 실제 검색어 House S08E04 | ssub.py House.S08E04.720p.HDTV.X264-DIMENSION.mkv # 실제 검색어 House S08E04 | ||
+ | |||
+ | # 일반 검색어 검색. 파라미터가 모두 검색어가 됨 | ||
+ | ssub.py CSI S12E06 | ||
+ | |||
+ | # 파일명 검색. 파일명의 확장자와 특수문자를 제거하고 검색함. 최대 5개 까지의 단어만 검색어로 간주 | ||
+ | ssub.py Kramer\ vs.\ Kramer\ \(BDrip\ 1080p\ ENG-ITA-FRA\)\ Multisub\ x264\ bluray\ \(1979\).mkv | ||
</ | </ | ||
줄 19: | 줄 34: | ||
- http:// | - http:// | ||
+ | ====== smi2srt ====== | ||
+ | * [[http:// | ||
+ | * {{: | ||
+ | * smi 파일이 **UTF-8**로 인코딩 돼 있어야만 한다. | ||
+ | |||
+ | ====== 동영상/ | ||
+ | * 동영상과 자막 파일이 여러개 있는데, 서로 이름이 안 맞을 경우 자막 파일의 이름을 동영상 파일의 이름에 맞춰 변경해 준다. | ||
+ | * 단! 동영상과 자막 파일이 같은 디렉토리에 있고 갯수가 동일해야 한다. | ||
+ | * 동영상과 자막 파일이 이름으로 정렬시 순서가 동일해야 한다. | ||
+ | * Groovy로 만들었음. | ||
+ | %gist(5692721)% | ||
+ | |||
+ | ====== smi time sync ====== | ||
+ | smi 파일의 시간을 싱크한다. | ||
+ | <code groovy> | ||
+ | if (args.length < 2) { | ||
+ | println "Usage groovy smi_timing filename milliseconds-to-adjust [encoding: | ||
+ | System.exit(-1) | ||
+ | } | ||
+ | |||
+ | def smi = new File(args[0]) | ||
+ | def millis = Long.parseLong(args[1]) | ||
+ | def encoding = args.length == 3 ? args[2] : " | ||
+ | |||
+ | println "$smi, $millis, $encoding" | ||
+ | |||
+ | def text = smi.getText(encoding) | ||
+ | def converted = text.replaceAll(/ | ||
+ | " | ||
+ | } | ||
+ | |||
+ | smi.setText(converted, | ||
+ | </ | ||