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 = "ТвойПароль" прописываем свой пароль

на лостфильме

Соответственно прописываем права скрипту на запуск, директории на запись, и файлу настроек на чтение, для своего юзера