Linux(NAS通用)下自动匹配射手字幕脚本

coding

2014/02/17更新:加入因超时导致获取字幕不成功的状况。 2014/02/15更新:优化了脚本,充分考虑获取字幕失败后的状况,保证在下次运行时还能再次获取上次失败的字幕。 从头学起,用了一天的时间写的第一个实用BASH脚本,基本达到可用状态。 使用场景:家中有一台Atom的miniPC,安装了OpenMediaVault作为NAS使用,添加了transmission插件用作PT下载,下载完成后会自动转移到complete目录下。 早前曾使用transmission自带的“完成后脚本”功能尝试自动匹配字幕,但是一直没有成功,而且通用性不强。这次利用学习机会改写了一下,使得脚本可以几乎用在所有Linux Based的机器上。 使用前必须安装GetSubtitle,主页地址:https://github.com/firnsan/GetSubtitle 编译安装前需确认安装libcurl4-openssl-dev库,接着就可以直接编译GetSubtitle,不需要再手动安装curl库了。过程不详述。 脚本很初级,高手勿笑。

#!/bin/bash

# transmission 下载完成后运行的脚本

# TR_APP_VERSION

# TR_TIME_LOCALTIME

# TR_TORRENT_DIR

# TR_TORRENT_HASH

# TR_TORRENT_ID

# TR_TORRENT_NAME

#WATCH_DIR:下载完成后的保存目录,根据个人需要自行更改(输入绝对路径)

WATCH_DIR="/media/btdownload/completed"

FILE_CHECKED="./checked.txt"

FILE_NEW="./new.txt"

FILE_UNCHECK="./uncheck.txt"

LOG_FILE="./GetSub.log"

TEMP_FILE="./temp.txt"

cd $WATCH_DIR

if [ ! -f "$FILE_CHECKED" ]; then

  echo "`date "+%Y-%m-%d %H:%M:%S" `  Can't find checked.txt, create one!" >> $LOG_FILE

  find $WATCH_DIR -name "*.mkv" ! -name "*.Sample.mkv" > "$FILE_CHECKED"

  echo "`date "+%Y-%m-%d %H:%M:%S" `  checked.txt created!" >> $LOG_FILE

fi

echo "`date "+%Y-%m-%d %H:%M:%S" `  creating new mkv file list..." >> $LOG_FILE

find $WATCH_DIR -type f -name "*.mkv" ! -name "*.Sample.mkv"  > "$FILE_NEW"

echo "`date "+%Y-%m-%d %H:%M:%S" `  new mkv file list created!" >> $LOG_FILE

#比较文件,输出新增文件名

echo "`date "+%Y-%m-%d %H:%M:%S" `  Checking the new files..." >> $LOG_FILE

grep -vxFf "$FILE_CHECKED" "$FILE_NEW" > "$FILE_UNCHECK"

echo "`date "+%Y-%m-%d %H:%M:%S" `  New added file list created!" >> $LOG_FILE

#按行获取文件名

echo "`date "+%Y-%m-%d %H:%M:%S" `  Start getting sub..." >> $LOG_FILE

while read line

do

  #MKVFILE=$(ls $line |sed "s:^:`pwd`/:")

  echo "`date "+%Y-%m-%d %H:%M:%S" `  Getting sub for $line" >> $LOG_FILE

  #提取字幕

  GetSubtitle $line  >> $TEMP_FILE

  if cat $TEMP_FILE | grep "No subtitle finded" >/dev/null

  then

    #未找到字幕

    cat $TEMP_FILE >> $LOG_FILE

  elif cat $TEMP_FILE | grep "Timeout was reached" >/dev/null

  then

    #超时

    cat $TEMP_FILE >> $LOG_FILE

  else

    #找到字幕

    echo "$line" >> $FILE_CHECKED

    cat $TEMP_FILE >> $LOG_FILE

  fi

  rm -f $TEMP_FILE

  echo -e "n" >> $LOG_FILE

done < $FILE_UNCHECK

rm -f $FILE_UNCHECK

rm $FILE_NEW

最后将此脚本添加到transmission的完成后自动执行里,或者设置为定时任务,就可以达到效果了。另外需要注意的是这里只添加了mkv文件的识别,如果有需要的话完全可以再添加更多的文件类型。如果不会改的朋友可以联系我。

以上是 Linux(NAS通用)下自动匹配射手字幕脚本 的全部内容, 来源链接: utcz.com/z/508543.html

回到顶部