Ξεκίνησα το
http://www.greeksubtitles.info/ορίστε ο κώδικας (θα τον ανεβάσω στο github μάλλον άυριο )
ουσιαστικά την μέθοδο querry θέλει να φτιάξεις
(και με λίγο Beautifulsoup γίνεται η παϊθωνόσουπα

)
(Επιστρέφει ένα dictionary με τα links προς την σελίδα για κατέβασμα
δεν ξέρω αν αυτό πρέπει να επιστρέφει αλλά
δεν το έκανα να κατεβάζει ακόμα τα zips ούτε να κοιτάει πέρα από το όνομα (τίτλο)) *
- Κώδικας: Επιλογή όλων
# -*- coding: utf-8 -*-
import urllib, urllib2,re
from BeautifulSoup import BeautifulSoup
from collections import defaultdict
import SubtitleDatabase
log = logging.getLogger(__name__)
LANGUAGES = {u"Greek(EN)" : "el",
u"English (US)" : "en"
}
class greeksubtitles(SubtitleDatabase.SubtitleDB):
url = "http://www.greeksubtitles.info/"
site_name = "greeksubtitles"
def __init__(self, config, cache_folder_path):
super(greeksubtitles, self).__init__(langs=None,revertlangs=LANGUAGES)
self.host = "http://www.greeksubtitles.info/"
def process(self, filepath, langs):
''' main method to call on the plugin, pass the filename and the wished
languages and it will query the subtitles source '''
fname = unicode(self.getFileName(filepath).lower())
guessedData = self.guessFileData(fname)
if guessedData['type'] == 'tvshow':
subs = self.query(guessedData['name'], guessedData['season'], guessedData['episode'], guessedData['teams'], langs)
return subs
else:
return []
def query(self, name, season, episode, teams, langs=None):
''' makes a query and returns info (link, lang) about found subtitles'''
User_Agent = "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0"
Headers = { 'User-Agent' : User_Agent }
values = { 'name' : name }
data = urllib.urlencode( values )
req = urllib2.Request( self.host, data, Headers )
responce = urllib2.urlopen(req)
HTML = responce.read()
responce.close()
soup = BeautifulSoup(HTML)
tdSoup = soup.findAll('td',attrs = {'class' : "result_top"})
results =set()
resDict = defaultdict(list)
for td in tdSoup:
a = td.findAll('a')[0]
results.add( (a.contents[0], self.host + dict(a.attrs)[u'href']) )
[resDict[k].append(v) for k,v in list(results)]
return resDic
def listTeams(self, subteams, separators):
pass
def splitTeam(self, subteams, sep):
pass
def createFile(self, subtitle):
'''pass the URL of the sub and the file it matches, will unzip it
and return the path to the created file'''
pass
def downloadFile(self, url, filename):
''' Downloads the given url to the given filename '''
User_Agent = "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0"
Headers = { 'Referer' : url , 'User-Agent' : User_Agent }
req = urllib2.Request(url, Headers)
f = urllib2.urlopen(req)
dump = open(filename, "wb")
dump.write(f.read())
dump.close()
f.close()
και η σκέτη συνάρτηση για scraping στο greeksubtitles.info
- Κώδικας: Επιλογή όλων
import urllib, urllib2,re
from BeautifulSoup import BeautifulSoup
from collections import defaultdict
def scrap4subs (name, host = "http://www.greeksubtitles.info/"):
User_Agent = "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0"
Headers = { 'User-Agent' : User_Agent }
values = { 'name' : name }
data = urllib.urlencode( values )
req = urllib2.Request( host, data, Headers )
responce = urllib2.urlopen(req)
HTML = responce.read()
responce.close()
soup = BeautifulSoup(HTML)
tdSoup = soup.findAll('td',attrs = {'class' : "result_top"})
results =set()
resDict = defaultdict(list)
for td in tdSoup:
a = td.findAll('a')[0]
results.add( (a.contents[0], host + dict(a.attrs)[u'href']) )
[resDict[k].append(v) for k,v in list(results)]
return resDic
Και μια ερώτηση
Η querry μέθοδος τι πιστευέτε ότι ακριβώς πρέπει να επιστρέφει
τα links προς τις σελίδες του κάθε υπότιτλου ή
τα links προς τα zip αρχεία με τους υπότιτλους ;
Φαντάζομαι το δεύτερο
εσείς;

* Είδα στο SubtitleDatabase.py module (που γράφει) ότι
κάποια στιγμή θα το μετρατρέψον με το ABC module που βοηθάει στην συνέπεια του άλλων προγραμματιστών
στις απαιτήσεις του κύριου προγράμματος πχ όταν κάποιος θέλει να φτιάξει plugin
περισσότερα και ΑΠΛΟΥΣΤΕΡΑ για αυτό εδώ
http://pysnippet.blogspot.com/2010/05/a ... asses.htmlhttp://www.doughellmann.com/PyMOTW/abc/