From d3f58b44fda4233fc96ba4afccc3394a89beea27 Mon Sep 17 00:00:00 2001 From: j <0x006A@0x2620.org> Date: Tue, 6 Mar 2007 22:07:25 +0000 Subject: [PATCH] opensubtitles --- scrapeit/__init__.py | 2 +- scrapeit/btjunkie.py | 2 +- scrapeit/opensubtitles.py | 44 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 scrapeit/opensubtitles.py diff --git a/scrapeit/__init__.py b/scrapeit/__init__.py index 9193535..9b45836 100644 --- a/scrapeit/__init__.py +++ b/scrapeit/__init__.py @@ -9,6 +9,6 @@ import mininova import thepiratebay import torrent import rottentomatoes - +import opensubtitles __version__ = '1.0.0' diff --git a/scrapeit/btjunkie.py b/scrapeit/btjunkie.py index d42cac4..a1c3220 100644 --- a/scrapeit/btjunkie.py +++ b/scrapeit/btjunkie.py @@ -1,5 +1,5 @@ -# -*- Mode: Python; -*- # -*- coding: utf-8 -*- +# -*- Mode: Python; -*- # vi:si:et:sw=2:sts=2:ts=2 from urllib import quote diff --git a/scrapeit/opensubtitles.py b/scrapeit/opensubtitles.py new file mode 100644 index 0000000..a68d274 --- /dev/null +++ b/scrapeit/opensubtitles.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# -*- Mode: Python; -*- +# vi:si:et:sw=2:sts=2:ts=2 + +from utils import read_url +import feedparser +import StringIP +import zipfile + +def searchSubtitlesByIMDb(imdb, parts = 1, language = "eng"): + url = "http://www.opensubtitles.org/en/search/sublanguageid-%s/subsumcd-%s/subformat-srt/imdbid-%s/rss_2_00" % (language, parts, imdb) + data = read_url(url) + fd = feedparser.parse(data) + os_id = None + if fd.entries: + link = fd.entries[0]['links'][0]['href'] + os_id = re.compile('subtitles/(.*?)/').findall(link) + if os_id: + os_id = os_id[0] + return os_id + +def getZipFileLink(opensubtitle_id): + return "http://www.opensubtitles.org/en/download/sub/%s" % opensubtitle_id + +def downloadSubtitle(zip_link): + srts ={} + zip = StringIO.StringIO() + zip.write(read_url(zip_link)) + zfile = zipfile.ZipFile(zip) + files = zfile.namelist() + def is_not_nfo(file): return not file.endswith('nfo') + files = filter(is_not_nfo, files) + if len(files) == 1: + srts[files[0]] = zfile.read(files[0]) + else: + for f in zfile.namelist(): + if f.endswith('.srt'): + srts[f] = zfile.read(f) + return srts + + +def downloadSubtitleByID(opensubtitle_id): + zip_file = getZipFileLink(opensubtitle_id) + return downloadSubtitle(zip_file)