Pull to refresh

Читаем Альдебаран с удобством

Reading time2 min
Views1.3K
Наверняка некоторые хабралюди читают книги на сайте http://lib.aldebaran.ru. Они знают о том, что с некоторых пор текст на сайте «защищён» от копирования. Конечно, большая часть книг осталась доступна для скачивания в удобных для чтения форматах, но многие популярные книги можно только читать он-лайн. Что неудобно.
Следующий несложный скрипт на Питоне скачает книгу целиком, попутно вырезав весь мусор напиханый туда для затруднения копирования.

import urllib, re, sys
p_key = re.compile('http:\/\/lib\.aldebaran\.ru\/getpage\/1\/.*?"')
p_span = re.compile('<span class=h>(.*?)<\/span>')
p_s = re.compile('\';s \+= \'')
p_p = re.compile('(<p>.*?<\/p>)')
p_url_name = re.compile('^(http:\/\/lib.aldebaran.ru\/author\/.*?__)')
def getpage(url):
    try:
        key =  p_key.findall(urllib.urlopen(url).read())[0][-33:-1]
    except:
        return None
    urllib.urlopen("http://lib.aldebaran.ru/getpage/1/" + key) .read()
    page =  urllib.urlopen("http://lib.aldebaran.ru/getpage/2/" + key) .read()
    page = p_span.sub('', page)
    page = ''.join(p_p.findall(page))
    page = p_s.sub('', page)
    return page

url = sys.argv[1]
url = p_url_name.findall(url)[0]
i = 1
while True:
    page = getpage(url + str(i) + '.html')
    i += 1
    if page != None:
        print page
    else:
        sys.exit(0)

Скрипт принимает параметром командной строки ссылку на любую страницу книги и выводит её текст на стандартный вывод.
Пользоватся им очень просто:
python lit.py lib.aldebaran.ru/author/sadov_sergei/sadov_sergei_klinki_u_trona/sadov_sergei_klinki_u_trona__0.html > lit.html


P.S. Пожалуйста, оставим вопрос о этике в стороне. Лично я оплачиваю полюбившиеся книги непосредственно автору.
UPD
Не я один такой умный. В комментариях подсказали
eBookDownloader — целое приложение которое поддерживает библиотеки фикшнбук, альдебара, литпортал (требует .NET)
А так же небольшой плагин для FireFox хабраюзера DirectXDirectX
Tags:
Hubs:
+27
Comments56

Articles