Di bawah ini adalah kode Python yang saya buat selagi iseng. Skrip yang saya buat akan mengambil gambar (image) dari situs mangavolume.
import urllib,urllib2, urllister, os.path
imageTotal = 0
imageNow = 0
sizeNow = 0
def myReportHook(count, blockSize, totalSize):
global sizeNow
sizeNow = sizeNow + blockSize
print count, sizeNow, totalSize
def getImage(url):
x = url.rfind("compressed/") + 11
y = url[x:]
print y
if not os.path.isfile(y):
sizeNow = 0
urllib.urlretrieve(url, y,reporthook=myReportHook)
urllib.urlcleanup()
def retrieve(url):
sock = urllib.urlopen(url)
htmlSource = sock.read()
sock.close()
return htmlSource
def cekImage(parser):
for image in parser.images:
if image.find("http") != -1:
getImage(image)
def getNextPage(parser):
for url in parser.urls:
if url.find("serie=") != -1:
return url
def parserURL(url):
htmlSource = retrieve(url)
parser = urllister.URLLister()
parser.feed(htmlSource)
parser.close()
return parser
host = "http://www.mangavolume.com"
manga = "/addicted-to-curry/"
chapter = "chapter-addicted-to-curry-1/"
print "Starting..."
parse = parserURL(host + manga + chapter)
cekImage(parse)
next = getNextPage(parse)
while next != "":
parse = parserURL(host + next)
cekImage(parse)
next = getNextPage(parse)
Kode di atas saya simpan dengan nama mangavolume.py. Pada kode diatas ada modul yang diimpor yang tidak ada di Python, karena modul itu buatan sendiri. Idenya di ambil dari http://diveintopython.org/. Hanya saja sudah saya modifikasi agar sesuai dengan kebutuhan. Kodenya tampak seperti di bawah ini. Kode dibawah saya simpan dengan nama urllister.py.
from sgmllib import SGMLParser
class URLLister(SGMLParser):
def reset(self):
SGMLParser.reset(self)
self.urls = []
self.options = []
self.images = []
def start_a(self, attrs):
href = [v for k, v in attrs if k=='href']
if href:
self.urls.extend(href)
def start_option(self, attrs):
option = [v for k, v in attrs if k=='value']
if option:
self.options.extend(option)
def start_img(self, attrs):
image = [v for k, v in attrs if k=='src']
if image:
self.images.extend(image)
Karena saya membuat kode diatas cuma iseng, fitur-fiturnya masih dasar banget. Kalo ada yang ingin mengembangkannya, saya persilahkan untuk melakukannya. Jika berkenan, mohon untuk mencantumkan blog ini sebagai asal kode yang anda kembangkan. Happy hacking.
Tidak ada komentar:
Posting Komentar