-
Notifications
You must be signed in to change notification settings - Fork 5
/
torrentdone.sh
133 lines (119 loc) · 6 KB
/
torrentdone.sh
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#!/bin/bash
# Torrent Done Script v0.0.8
# Скрипт для Transmission Daemon
# Перемещение завершенных торрентов по папкам
#
# Протестировано на:
# Debian GNU/Linux 9.4 (stretch)
# transmission-daemon 2.92 (14714)
#
# Подключение:
# Редактированием конфигурационного файла settings.json
# "script-torrent-done-enabled": true,
# "script-torrent-done-filename": "/mypath/torrentdone.sh",
#
# Базовые переменные. Они передаются скрипту самим Transmission
# =================================================================================
# $TR_APP_VERSION: версия Transmission
# $TR_TORRENT_ID: идентификатор торрента (число, показывается в remote-GUI)
# $TR_TORRENT_NAME: имя торента в том виде, как оно отображается в интерфейсе
# $TR_TORRENT_DIR: папка торрента
# $TR_TORRENT_HASH: хэш торрента
# $TR_TIME_LOCALTIME: дата и время запуска скрипта
#
# Определяем дополнительные переменные
PREF="transsaver:"
TR_LOGIN="user"
TR_PASSWORD="12345"
TR_TORRENT_DIR="$TR_TORRENT_DIR/"
regex_ser="(LostFilm|TV|serial|Serial|S[0-9].E[0-9].|novafilm)"
regex_film="(\([0-9]+\)\.(mkv|avi|mp4))"
regex_3d="(\s(3D|3d)\s)"
# ФУНКЦИИ
# ВЫПОЛНЕНИЕ
# Проверяем существует ли файл
if [ -f "$TR_TORRENT_DIR$TR_TORRENT_NAME" ]
then
# Файл на месте
echo "$PREF Начало обработки торрента - $TR_TORRENT_NAME"
# Формируем путь к исходному файлу
FILE="$TR_TORRENT_DIR$TR_TORRENT_NAME"
# Ищем соответствие сериалу
if [[ "${TR_TORRENT_NAME}" =~ $regex_ser ]]; then
# Это сериал
# Вытаскиваем имя сериала и его сезон
# Формируем путь сохранения из этих данных
# Пример папки сериала: Marvels_Agents_of_S_H_I_E_L_D
# Пример пути расположения файла: /mnt/data/media/serials/Marvels_Agents_of_S_H_I_E_L_D/Season_05/Marvels.Agents.of.S.H.I.E.L.D.S05E17.rus.LostFilm.TV.avi
SERIALNAME=$(echo $TR_TORRENT_NAME | grep -Eo '^(.*+).S[0-9].' | sed -r 's/(\.)/_/g' | sed -r 's/(_S[0-9].)//')
SEASON=$(echo $TR_TORRENT_NAME | grep -Eo 'S[0-9].' | grep -Eo '[0-9].')
SERIALPATH="/mnt/data/media/serials/$SERIALNAME/Season_$SEASON/"
# Проверяем есть ли уже такая дирректория
if ! [ -d $SERIALPATH ]; then
echo "$PREF Пути $SERIALPATH не существует. Создаем недостающие папки."
mkdir -m 777 -p $SERIALPATH
fi
# Перемещаем файл силами самого Transmission, чтобы не останавливать раздачу
# mv -f $FILE $SERIALPATH # Если нет желания использовать Transmission
transmission-remote 192.168.88.21:9091 -n $TR_LOGIN:$TR_PASSWORD -t $TR_TORRENT_ID --move $SERIALPATH
# Проверяем корректно ли переместился файл
if [ -f "$SERIALPATH$TR_TORRENT_NAME" ]
then
echo "$PREF Файл $TR_TORRENT_NAME успешно сохранен в папку $SERIALPATH"
exit 0;
else
echo "$PREF Файл $TR_TORRENT_NAME НЕ сохранен в папку $SERIALPATH"
exit 0;
fi
else
# Файл не сериал
# Ищем соответствие фильму
if [[ "${TR_TORRENT_NAME}" =~ $regex_film ]]; then
# Это фильм
# Пример названия фильма для сохранения: Дикий Запад (2018).mkv
# Пример названия 3D фильма для сохранения: Дикий Запад 3D (2018).mkv
# Пример пути расположения файла: /mnt/data/media/films/2018/Дикий Запад (2018).mkv
# Пример пути расположения файла: /mnt/data/media/films/3d/2018/Дикий Запад 3D (2018).mkv
# Вытаскиваем год фильма
YEAR=$(echo $TR_TORRENT_NAME | grep -Eo '\([0-9]+\)' | sed -r 's/(\(|\))//g')
# Проверяем в 3D фильм или нет
if [[ "${TR_TORRENT_NAME}" =~ $regex_3d ]]; then
# Фильм в 3D
# Меняем путь для сохранения
FILMPATH="/mnt/data/media/films/3d/$YEAR/"
else
# Обычный фильм
# Задаем базовый путь сохранения фильма
FILMPATH="/mnt/data/media/films/$YEAR/"
fi
# Проверяем есть ли уже такая дирректория
if ! [ -d $FILMPATH ]; then
# Создаем папки
echo "$PREF Пути $FILMPATH не существует. Создаем нужные папки."
mkdir -m 777 -p $FILMPATH
fi
# Перемещаем файл силами самого Transmission, чтобы не останавливать раздачу
# mv -f $FILE $FILMPATH # Если нет желания использовать Transmission
transmission-remote 192.168.88.21:9091 -n $TR_LOGIN:$TR_PASSWORD -t $TR_TORRENT_ID --move $FILMPATH
# Проверяем корректно ли переместился файл
if [ -f "$FILMPATH$TR_TORRENT_NAME" ]
then
echo "$PREF Файл $TR_TORRENT_NAME успешно сохранен в папку $FILMPATH"
exit 0;
else
echo "$PREF Файл $TR_TORRENT_NAME НЕ сохранен в папку $FILMPATH"
exit 0;
fi
else
# Просто какой-то файл
# Он не Сериал и не Фильм
# Оставляем его лежать в папке Complete
echo "$PREF Неизвестный файл. Место хранения не изменяется."
exit 0;
fi
fi
else
# Файла нет
echo "$PREF Запрашиваемый файл \"$TR_TORRENT_NAME\" не существует по пути \"$TR_TORRENT_DIR\""
exit 0;
fi