Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
ice
Зарегистрирован: 25.04.2008 Сообщения: 13
|
Добавлено: 2008-05-02 13:59 pm Заголовок сообщения: Re: скрипт генерации ed2k и DC++ ссылок |
|
|
Instruktor писал(а): | скрипт генерации ed2k и DC++ ссылок
- не дружит с пробелами в пути к файлу. |
я например из этой ситуации вышел так
Код: | # выполнять пока есть пустые поля dc++ или ed2k
while [ `echo "select count(ID) from files where dcppLink=''" | $my` -gt 0 ]
do
row=`echo "select ID,Size,Path from files where dcppLink='' and Path like '%ftp6%' limit 1" | $my` # получаем объект
f_id=`echo $row | awk '{print $1}'` # ID
f_size=`echo $row | awk '{print $2}'` # объём в байтах
row1=`echo "select Path from files where ID=$f_id" | $my`
f_path=`echo $row1` # путь
f_name=`basename "$f_path"` # имя файла
dat=`date "+%Y-%m-%d_%H:%M:%S"`
if test -f "$f_path" # проверяем есть ли доступ к файлу, если нет то всё бросаем
then
else
echo "$dat file not found: id=$f_id path=$f_path" >> $log
rm -f $lock
exit
fi
|
|
|
Вернуться к началу |
|
Spamer
Зарегистрирован: 11.05.2008 Сообщения: 1
|
Добавлено: 2008-05-11 04:57 am Заголовок сообщения: |
|
|
Поддержку ftp никто не пытался прикрутить?
Т.е. wget'им фильм, создаем магнет, обрабатываем, удаляем фильм |
|
Вернуться к началу |
|
Алексей
Зарегистрирован: 29.02.2008 Сообщения: 29 Откуда: Одесса
|
Добавлено: 2008-06-06 15:00 pm Заголовок сообщения: |
|
|
А можно ли начёркать скриптик без е2к, чтоб только DC++ а то я в вашей руганине не могу разобраться или боюсь ... .
П.с. freeBSD ....
Взарание спасиб. |
|
Вернуться к началу |
|
Marcus
Зарегистрирован: 29.02.2008 Сообщения: 15
|
Добавлено: 2008-06-19 08:23 am Заголовок сообщения: |
|
|
Я для себя сразу оставил только dc++ (если ещё актуально)
Код: |
#!/bin/sh
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
my="mysql -N -hIP_БАЗЫ ИМЯ_БАЗЫ" # обращение к mysql
lock="/var/run/p2p_hash_count.lock" # флаг блокировки
log="/var/log/p2p_hash_count.log" # лог
my_chs="utf8" # кодировка имён файлов в mysql
sys_chs="utf-8" # системная кодировка имён
#--------------------------------------------
test -f $lock && exit # проверяем не запущен ли уже процесс
touch $lock # ставим флаг блокировки
#--------------------------------------------
# выполнять пока есть пустые поля dc++ или ed2k
while [ `echo "select count(ID) from files where dcppLink=''" | $my` -gt 0 ]
do
row=`echo "select ID,FilmID,Size from files where dcppLink='' limit 1" | $my` # получаем объект
f_id=`echo $row | awk '{print $1}'` # ID
f_fid=`echo $row | awk '{print $2}'` # FilmID
f_size=`echo $row | awk '{print $3}'` # объём в байтах
f_path=`echo "set names $my_chs; select Path from files where ID=$f_id" | $my` # путь
f_name=`echo "set names $my_chs; select Name from files where ID=$f_id" | $my` # имя файла
dat=`date "+%Y-%m-%d_%H:%M:%S"`
if test -f "$f_path" # проверяем есть ли доступ к файлу, если нет то всё бросаем
then
pwd
else
echo "$dat file not found: FilmID=$f_fid path=$f_path" | iconv -f $my_chs -t $sys_chs >> $log
rm -f $lock
exit
fi
# DC++ Генерим ссылку (если нет), забиваем в базу и пишем лог.
if [ `echo "select count(ID) from files where ID=$f_id and dcppLink=''" | $my` != "0" ]
then
dcpp=`nice -n 5 tthsum "$f_path" | awk '{print $1}'`
echo "set names $my_chs; update files set dcppLink=\"magnet:?xt=urn:tree:tiger:$dcpp&xl=${f_size}&dn=${f_name}\" where
ID=$f_id" | $my 2>&1 >> $log
echo "$dat dc++ link created: FilmID=$f_fid name=$f_name link=$dcpp" | iconv -f $my_chs -t $sys_chs >> $log
fi
done
#-------------------------------------------
rm -f $lock # снимаем блокировку
exit
|
|
|
Вернуться к началу |
|
Алексей
Зарегистрирован: 29.02.2008 Сообщения: 29 Откуда: Одесса
|
Добавлено: 2008-06-24 08:03 am Заголовок сообщения: |
|
|
За прошедшее время я конечно отредактировал приведённое на 1-ой странице, но конечно актуально ! Спасибо |
|
Вернуться к началу |
|
Sir.D.Shadow
Зарегистрирован: 10.06.2008 Сообщения: 7
|
Добавлено: 2008-07-08 14:03 pm Заголовок сообщения: |
|
|
Господа, тербуется мозговое вливание.
Скрипт стопорится при нахождении путей вида ftp://etc и выключается. Таких путей в базе очень много, потому что при переносе базы и каталога пришлось отказаться от маунта этого сервера, но все фильмы имеются и имеют реальные и нормальные фтп ссылки.
Как бы заставить скрипт продолжать работу игнорируя такие пути? |
|
Вернуться к началу |
|
Sir.D.Shadow
Зарегистрирован: 10.06.2008 Сообщения: 7
|
Добавлено: 2008-07-09 16:14 pm Заголовок сообщения: |
|
|
Ответа не дождался и просто закомментил проверку доступности файла. Ссылки скрипт пишет все, но недоступные, соответственно, без хэша как такового. Не найдут, так не найдут в DC++ |
|
Вернуться к началу |
|
</life>
Зарегистрирован: 15.03.2008 Сообщения: 32
|
Добавлено: 2008-07-09 17:12 pm Заголовок сообщения: |
|
|
Если вникнуть в логику скрипта, то можно понять, что используется две утилиты, для работы которых нужно что б файл находился локально. Иначе я не знаю как заставить tthsum работать по ftp.
Кстати, кроном кто научил пользоваться скриптом? У меня такая же ситуация как у iVale выше, размер файла не создаётся.
Код: |
# корректируем PATH
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin:/root/sbin; export PATH
#my="mysql -N -h127.0.0.1 -ulmss -pjtdMNmRPUepUwACE lmss1" # обращение к mysql
my="mysql -N -ulmss -pjtdMNmRPUepUwACE lmss1"
lock="/var/run/p2p_hash_count.lock" # флаг блокировки
log="/var/log/p2p_hash_count.log" # лог
my_chs="cp1251"
sys_chs="koi8-r"
tthsum="/usr/local/bin/tthsum"
iconv="/usr/bin/iconv"
rm="/bin/rm"
#--------------------------------------------
test -f $lock && exit # проверяем не запущен ли уже процесс
touch $lock # ставим флаг блокировки
#--------------------------------------------
# выполнять пока есть пустые поля dc++ или ed2k
while [ `echo "select count(ID) from files where dcppLink=''" | $my` -gt 0 ]
do
row=`echo "select ID,Size,Path from files where dcppLink='' limit 1" | $my` # получаем объект
f_id=`echo $row | awk '{print $1}'` # ID
f_size=`echo $row | awk '{print $2}'` # объём в байтах
f_path=`echo "set names $my_chs; select Path from files where ID=$f_id" | $my`
f_name=`echo "set names $my_chs; select Name from files where ID=$f_id" | $my`
dat=`date "+%Y-%m-%d_%H:%M:%S"`
if test -f "$f_path" >> $log # проверяем есть ли доступ к файлу, если нет то всё бросаем
then
pwd
else
echo "$dat file not found: id=$f_id path=$f_path" >> $log
rm -f $lock
exit
fi
# DC++ Генерим ссылку (если нет), забиваем в базу и пишем лог.
if [ `echo "select count(ID) from files where ID=$f_id and dcppLink=''" | $my` != "0" ]
then
dcpp="magnet:?xt=urn:tree:tiger:`nice -n 5 $tthsum "$f_path" | awk '{print $1}'`&xl=${f_size}&dn=${f_name}" >> $log
#
echo "update files set dcppLink=\"$dcpp\" where ID=$f_id" | $my 2>&1 >> $log
echo "$dat dc++ link created: id=$f_id link=$dcpp" | $iconv -f $my_chs -t $sys_chs >> $log
fi
done
rm -f $lock
exit
|
|
|
Вернуться к началу |
|
Sir.D.Shadow
Зарегистрирован: 10.06.2008 Сообщения: 7
|
Добавлено: 2008-07-09 21:23 pm Заголовок сообщения: |
|
|
второй день работы скрипта, полет нормальный, за исключением того, что у файлов с путями типа ftp://etc хэш не прописывается, только размер и имя файла.
/life
Размер какого файла? Файла фильма? |
|
Вернуться к началу |
|
</life>
Зарегистрирован: 15.03.2008 Сообщения: 32
|
Добавлено: 2008-07-11 16:48 pm Заголовок сообщения: |
|
|
Sir.D.Shadow писал(а): |
/life
Размер какого файла? Файла фильма? |
Да, именно при запуске кроном. |
|
Вернуться к началу |
|
Sir.D.Shadow
Зарегистрирован: 10.06.2008 Сообщения: 7
|
Добавлено: 2008-07-12 11:54 am Заголовок сообщения: |
|
|
Vlamos писал(а): | Не могу понять в чем проблема.
Юникс генерит одно TTH, а клиент FlylinkDC++ совсем другое значение
В итоге фильм не находит. В чем может быть причина такого различия? |
Поддержу. Ни одна сгенерированных скриптом ссылка из более 4х тысяч файлов не совпадает по хэшу с генерированными клиентом DC++.
Неужели только у нас двоих такая проблема? |
|
Вернуться к началу |
|
ice
Зарегистрирован: 25.04.2008 Сообщения: 13
|
Добавлено: 2008-07-13 06:25 am Заголовок сообщения: |
|
|
Sir.D.Shadow писал(а): | Vlamos писал(а): | Не могу понять в чем проблема.
Юникс генерит одно TTH, а клиент FlylinkDC++ совсем другое значение
В итоге фильм не находит. В чем может быть причина такого различия? |
Поддержу. Ни одна сгенерированных скриптом ссылка из более 4х тысяч файлов не совпадает по хэшу с генерированными клиентом DC++.
Неужели только у нас двоих такая проблема? |
Нет не только
у меня FreeBSD
просто заметил такую вещь, что если ставить из портов tthsum то он генерирует хеши различные с виндовс, выход компилить microdc2 в поставке есть правильный tthsum |
|
Вернуться к началу |
|
Frogile
Зарегистрирован: 17.04.2008 Сообщения: 36 Откуда: Минск
|
Добавлено: 2008-07-13 10:42 am Заголовок сообщения: |
|
|
вопрос к разработчику, будет ли встроена функция генерации ссылок во второй версии?
сейчас она у меня написана отдельным скриптом, на php..
Последний раз редактировалось: Frogile (2008-09-09 08:46 am), всего редактировалось 1 раз |
|
Вернуться к началу |
|
Илья Спесивцев Администратор
Зарегистрирован: 26.02.2008 Сообщения: 703 Откуда: Техподдержка
|
Добавлено: 2008-07-14 06:19 am Заголовок сообщения: |
|
|
Frogile писал(а): | вопрос к разработчику, будет ли встроена функция генерации ссылок во второй версии?
сейчас она написана отдельным скриптом, на php.. |
В планах есть (либо встроенная, либо через запуск сторонней утилиты) |
|
Вернуться к началу |
|
phant0m4eg Phant0m
Зарегистрирован: 22.06.2008 Сообщения: 44
|
Добавлено: 2008-08-11 01:11 am Заголовок сообщения: |
|
|
Народ подскажите что может быть не так, пишет No such file directory, лог не создает, что ему не нравится непонятно, у меня стоял microdc2, я заюзал tthsum который он сам создал, путь прописан правильно, скрипт такой что в принципе там и менять почти нечего кроме еще доступа к базе. У </life> в скрипте обратил внимание есть rm="/bin/rm", у меня такого нет, я даже незнаю зачем он нужен, может быть все же необходим? Сразу скажу что мне нужен только dc, для e2k ничего не ставил, взял отдельно скрипт для него.
Цитата: | #!/bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin:/root/bin:/root/sbin; export PATH
my="mysql -N -h127.0.0.1 -uЛогин -pПароль video" # обращение к mysql
lock="/var/run/p2p_hash_count.lock" # флаг блокировки
log="/var/log/p2p_hash_count.log" # лог
файлов в mysql
my_chs="cp1251"
sys_chs="koi8-r"
tthsum="/usr/local/bin/tthsum"
iconv="/usr/local/bin/iconv" # системная кодировка имён
#--------------------------------------------
test -f $lock && exit # проверяем не запущен ли уже процесс
touch $lock # ставим флаг блокировки
#--------------------------------------------
# выполнять пока есть пустые поля dc++
while [ `echo "select count(ID) from files where dcppLink=''" | $my` -gt 0 ]
do
row=`echo "select ID,FilmID,Size from files where dcppLink='' limit 1" | $my` # получаем объект
f_id=`echo $row | awk '{print $1}'` # ID
f_fid=`echo $row | awk '{print $2}'` # FilmID
f_size=`echo $row | awk '{print $3}'` # объём в байтах
f_path=`echo "set names $my_chs; select Path from files where ID=$f_id" | $my` # путь
f_name=`echo "set names $my_chs; select Name from files where ID=$f_id" | $my` # имя файла
dat=`date "+%Y-%m-%d_%H:%M:%S"`
if test -f "$f_path" # проверяем есть ли доступ к файлу, если нет то всё бросаем
then
pwd
else
echo "$dat file not found: FilmID=$f_fid path=$f_path" | iconv -f $my_chs -t $sys_chs >> $log
rm -f $lock
exit
fi
# DC++ Генерим ссылку (если нет), забиваем в базу и пишем лог.
if [ `echo "select count(ID) from files where ID=$f_id and dcppLink=''" | $my` != "0" ]
then
dcpp=`nice -n 5 tthsum "$f_path" | awk '{print $1}'`
echo "set names $my_chs; update files set dcppLink=\"magnet:?xt=urn:tree:tiger:$dcpp&xl=${f_size}&dn=${f_name}\" where
ID=$f_id" | $my 2>&1 >> $log
echo "$dat dc++ link created: FilmID=$f_fid name=$f_name link=$dcpp" | iconv -f $my_chs -t $sys_chs >> $log
fi
done
#-------------------------------------------
rm -f $lock # снимаем блокировку
exit |
|
|
Вернуться к началу |
|
|