LostFilm.tv Parser
Скрипт для загрузки новых torrent файлов
Решил изучить Python и сделать на нем парсер rss на новые торренты
LostParse.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
Created on 22.07.2011
@author: yourok
'''
import urllib
import urllib2
import cookielib
import feedparser
import re
import os
import time
cfgFilms = {}
linkFilms = []
WatchDir = "/home/ftpshare/upload/torrent_watchdir/"
Config = "/home/user/additionals/LostFilmPaser/LostFilm.cfg"
LoginName = "ТвойЛогин"
Password = "ТвойПароль"
def SaveFile(FileName):
file = open(FileName, "w")
for val, key in cfgFilms.items():
file.write(val+"="+key+"\n")
file.close()
def LoadFile(FileName):
try:
file = open(FileName)
except IOError:
return None
for line in file:
key, value = line.split('=')
key, value = key.strip(), value.strip()
try:
cfgFilms[key].append(value)
except KeyError:
cfgFilms[key] = value
def ifEntry(Title):
for val, key in cfgFilms.items():
if (val in Title):
if (key=="720p")+(key in Title)==2:
return 1
elif (key=="")+("720p" in Title)==1:
return 1
else:
return 0
return 0
def GetHttpFiles():
try:
rss = feedparser.parse('http://www.lostfilm.tv/rssdd.xml')
for entry in rss.entries:
if ifEntry(entry.title.encode('utf-8')):
linkFilms.append(urllib.url2pathname(entry.link))
except Exception:
return -1
def Login():
try:
url = "http://lostfilm.tv/useri.php"
data = {"FormLogin" : LoginName, "FormPassword" : Password, "module" : "1", "repage" : "user", "act" : "login"}
usagent = {'User-agent' : 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
enc_data=urllib.urlencode(data)
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
req=urllib2.Request(url,enc_data,usagent)
f = urllib2.urlopen(req)
cookie = f.headers['Set-Cookie']
cookie = re.sub(r'(expires=.*?;\s|path=\/;\s|domain=\.?lostfilm\.tv(?:,\s)?)', '', cookie)
return cookie
except Exception:
return -1
def DownloadTorrents(Cookies):
try:
for Link in linkFilms:
FileName = re.search(r"id=.+?&(.+)",Link).group(1)
if(os.path.isfile(WatchDir+FileName)==False):
ID = re.search(r"id=(.+?)&", Link)
ID = ID.group(1)+"&"+Link.split('/')[-1]
req=urllib2.Request("http://lostfilm.tv/details.php?id="+ID)
req.add_header("User-agent", "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)")
req.add_header("Cookie", Cookies + ";")
res = urllib2.urlopen(req).read()
passkey = re.search(r"setCookie\('dlt','([0-9a-z]+)'\)",res)
passkey = passkey.group(1)
cook = Cookies + " dlt_2="+passkey+";"
req=urllib2.Request(Link)
req.add_header("User-agent", "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)")
req.add_header("Cookie", cook + ";")
print "Download: "+ FileName
res = urllib2.urlopen(req)
lf = open(WatchDir+FileName,"wb")
lf.write(res.read())
lf.close()
time.sleep(1)
except Exception:
return -1
def Main():
print "Качаем новинки lostfilm.tv"
Cookies = Login()
if(Cookies==-1):
print "Error login to LostFilm.tv"
return
while True:
LoadFile(Config)
if(GetHttpFiles()==-1):
print "Error parse RSS"
return
if(DownloadTorrents(Cookies)==-1):
print "Error download torrent files"
return
time.sleep(6000)
return
if __name__ == '__main__':
Main()
Файл настроек выглядит так:
LostFilm.cfg
Хранилище 13=720p
Люди Альфа=
Эврика=
Доктор Хаус=720p
Во все тяжкие=720p
Обмани меня=720p
За гранью=720p
Он прописывается в скрипте, в переменной Config
В WatchDir прописывается путь, куда будут закачиваться торрент файлы
В LoginName = "ТвойЛогин" прописываем свой логин
В Password = "ТвойПароль" прописываем свой пароль
на лостфильме
Соответственно прописываем права скрипту на запуск, директории на запись, и файлу настроек на чтение, для своего юзера