Transmission RSS direct-download
	
	
		Хотел бы поделиться скриптом, который следит за новостями в direct-download RSS ленте трэккера и автоматически закачивает интересующие .torrent файлы в указанную папку для последующей обработки, например, transmission'ом.
Это мой ~первый shell-script, и пост этот с целю получить поучительные комментарии ;)
Идея такая: берем stdout от rsstail, пропускаем через grep'ы и закачиваем понравившиеся wget'ом.
Примечание: Из ленты, на которую подписан я, при параметрах "rsstail -N -l" в stdout для каждого torrenta выдаются 2 стоки:
<Torrent1 title> 
<Torrent1 link>
<Torrent2 title>
<Torrent2 link>
...
Вызов:
	Code:
	
rsstail -N -l -u http://tracker.dom/rssdl.php | /opt/etc/direct-downloader/direct-downloader.sh
 
	Code:
	
#!/bin/sh
#
# direct-downloader.sh
#
Apply_Watchlist()
{
        # line by line thru watchlist
        watchlist_lengh=`wc -l "$watchlist" | cut -c1-8`
        watchlist_length=`expr $watchlist_lengh + 0`
        i=1
        while [ "$i" -le "$watchlist_length" ]
        do
                matcher=`head -n $i "$watchlist" | tail -n -1`
                cmd="echo \"${torrentName}\" | ${matcher}"
                matched=`eval $cmd`
                [ -n "$matched" ] && return
                i=`expr $i + 1`
        done
        echo Not interested in $torrentName >> $logfile
        torrentName=""
}
Exclude_Taken()
{
    found=`grep "${torrentName}" $taken`
    if [ -n "$found" ]; then
                torrentName=""
    fi
}
######
taken="/opt/etc/direct-downloader/taken"
watchlist="/opt/etc/direct-downloader/watchlist"
downloadTo="/tmp/harddisk/torrent/source/"
logfile="/opt/var/log/direct-downloader.log"
touch "$taken"
touch "$watchlist"
while read feedLine
do
    feedLink=`echo "$feedLine" | grep "^http:"`
    if [ -z "$feedLink" ]; then
        torrentName="$feedLine"
        Exclude_Taken
        if [ -n "$torrentName" ]; then
            Apply_Watchlist
        fi
    elif [ -n "$torrentName" ]; then
            echo "Retrieving: ${torrentName}.torrent" >> $logfile
        wget -b -O "${downloadTo}${torrentName}.torrent" "$feedLink" 2>&1 >> $logfile
        echo $torrentName >> $taken
    fi
done
 watchlist:
	Code:
	
grep "Prison\.Break\.S03" | grep -v "720p"
grep "Stargate\.Atlantis" | grep "HDTV" | grep -v "720p"
 Andris
	 
	
	
	
		расширение FireFox для скачивания ссылок на "БК"
	
	
		Помогите довести до ума следующую идею:
В FireFoxe через контекстное меню правой кнопки отправлять ссылки на закачку в "Белую коробку (БК)" 
причем "БК" установлена дома, а ссылки отправляются с компа на работе, дома и.т.д вобщем отовсюду.
Частично эту идею реализовать удалось, но опыта пока маловато поэтому прошу совета гуру как эту реализацию можно улушить.
Сообственно что уже получилось:
1.   Регистриуемся на www.laterloop.com (сервис по хранению ссылок)
1.1. В разделе "Settings" ставим галку напротив "Publish my Links at"
1.2. Копирум куда нибудь ссылку "public RSS feed" (пригодится в дальнейшем)
1.3. В разделе "Tools" устанавливаем расширение для FireFox
1.4. Пробуем сохранять ссылки - убеждаемся что сервис работает, и ссылки на RSS появляются
2. Устанвливаем на "БК" из репозитария  rsstail 
2.1 запускаем 
	Code:
	
 rsstail -i 5 -u http://www.laterloop.com/links/НАШ ЛОГИН/rss
 2.2. Из FireFox отправляем ссылки на LaterLoop и убеждаемся что они появляюся на консоле "БК" 
3. берем в качестве основы скрипт написанный andyqp
3.1. модифицируем его немного:
	Code:
	
#!/bin/sh
#
# direct-downloader.sh
#
Exclude_Taken()
{
    found=`grep "${torrentName}" $taken`
    if [ -n "$found" ]; then
        torrentName=""
    fi
}
######
taken="/opt/etc/laterloop/taken"
watchlist="/opt/etc/laterloop/watchlist"
downloadTo="/opt/share/down/"
logfile="/opt/etc/laterloop/log.log"
touch "$taken"
touch "$watchlist"
while read feedLine
do
    feedLink=`echo "$feedLine" | egrep "^http:|^ftp:"` 
    echo "$feedLink"
    if [ -z "$feedLink" ]; then
        torrentName="$feedLine"
        Exclude_Taken
    elif [ -n "$torrentName" ]; then
        echo "Retrieving: ${torrentName}" >> $logfile
        wget -b -c -P "$downloadTo"  "$feedLink" 2>&1 >> $logfile
        echo $torrentName >> $taken
    fi
done
 3.2. чтобы конструкция egrep "^http:|^ftp:"`  работала дополнительно устанавливаем busybox 1.10.3-1 (хотя видимо это можно реализовать и по другому , подскажите как )
3.3. запускаем rsstail со скриптом
	Code:
	
rsstail -N -l -i 5 -u http://www.laterloop.com/links/НАШ ЛОГИН/rss/ | /opt/etc/laterloop/direct-downloader.sh
 4. Отправляем ссылки с FireFox на LaterLoop
5. Наблюдаем как они скачиваются на нашу "БК"
	 
	
	
	
		Способ передачи ссылок на Dlengine, wget и прочие качалки через FireFox
	
	
		1. Устанавливаем rsstail на роутер
2. Регистрируемся на сервисе http://www.laterloop.com/
3. В разделе Settings этого сервиса отмечаем галкой пункт  Publish my Links at
4. Запоминаем ссылку на ваш Public RSS feed
5. Устанавливаем плагин для FireFox в разделе Tools этого сервиса.
6. Дальше модифицируем скрипт описанный andyqp под свои задачи
дополнение
для скачивания с Rapidshare нужно добавить еще и это дополнение
и скрипт к нему
Greasemonkey
Rapidshare Bundle
кроме того нужно положить в папку со скриптом для rsstail
файл cookies.txt содержащую плюшку с того компа откуда будет оправлена ссылка и соответсвенно добавить в скрипт параметр для wget
--load-cookies=cookies.txt
	 
	
	
		1 Attachment(s)
	
	
		Скрипт скачивания торрент файлов из rss
	
	
		Здравствуйте.
есть вот такой интересный скрипт на habrahabr который в заданный промежуток времени скачивает .torrent файлы из rss и кладет их определенную папку, из которой rtorrent их и подхватывает.
я, к сожалению, слабо в этом шарю и прошу помощи :)
при его запуске вываливается вот такая картина:
	PHP Code:
	
PHP Warning:  simplexml_load_string(): Entity: line 1: parser error : Unsupported encoding windows-1251 in /opt/etc/torrents/torrents.php on line 43
PHP Warning:  simplexml_load_string(): <?xml version="1.0" encoding="windows-1251" ?> in /opt/etc/torrents/torrents.php on line 43
PHP Warning:  simplexml_load_string():   ^ in /opt/etc/torrents/torrents.php on line 43
PHP Notice:  Trying to get property of non-object in /opt/etc/torrents/torrents.php on line 45
PHP Notice:  Trying to get property of non-object in /opt/etc/torrents/torrents.php on line 45
PHP Warning:  Invalid argument supplied for foreach() in /opt/etc/torrents/torrents.php online 45
 гуглится на переустановки всяких libiconv. что смог поделал, но так и не нашел решения :(