mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
...
This commit is contained in:
parent
05d555d4ed
commit
2ed06d43db
@ -6,7 +6,7 @@
|
|||||||
## Copyright: Kiavash
|
## Copyright: Kiavash
|
||||||
##
|
##
|
||||||
## Written: Jan 2012
|
## Written: Jan 2012
|
||||||
## Last Edited: 2012-01-07
|
## Last Edited: Jan 2012
|
||||||
##
|
##
|
||||||
|
|
||||||
__license__ = 'GNU General Public License v3 - http://www.gnu.org/copyleft/gpl.html'
|
__license__ = 'GNU General Public License v3 - http://www.gnu.org/copyleft/gpl.html'
|
||||||
@ -20,12 +20,14 @@ You need to sign up (free) and get username/password.
|
|||||||
|
|
||||||
import re # Import the regular expressions module.
|
import re # Import the regular expressions module.
|
||||||
from calibre.ptempfile import TemporaryFile # we need this for saving to a temp file
|
from calibre.ptempfile import TemporaryFile # we need this for saving to a temp file
|
||||||
|
|
||||||
from calibre.web.feeds.news import BasicNewsRecipe
|
from calibre.web.feeds.news import BasicNewsRecipe
|
||||||
|
|
||||||
class MWJournal(BasicNewsRecipe):
|
class MWJournal(BasicNewsRecipe):
|
||||||
# Title to use for the ebook.
|
# Title to use for the ebook.
|
||||||
title = u'Microwave Journal'
|
title = u'Microwave Journal'
|
||||||
__author__ = 'Kiavash'
|
__author__ = 'Kiavash'
|
||||||
|
language = 'en'
|
||||||
|
|
||||||
#A brief description for the ebook.
|
#A brief description for the ebook.
|
||||||
description = u'Microwave Journal web site ebook created using rss feeds.'
|
description = u'Microwave Journal web site ebook created using rss feeds.'
|
||||||
@ -33,7 +35,6 @@ class MWJournal(BasicNewsRecipe):
|
|||||||
# Set publisher and publication type.
|
# Set publisher and publication type.
|
||||||
publisher = 'Horizon House'
|
publisher = 'Horizon House'
|
||||||
publication_type = 'magazine'
|
publication_type = 'magazine'
|
||||||
language = 'en'
|
|
||||||
|
|
||||||
oldest_article = 31 # monthly published magazine. Some months are 31 days!
|
oldest_article = 31 # monthly published magazine. Some months are 31 days!
|
||||||
max_articles_per_feed = 100
|
max_articles_per_feed = 100
|
||||||
@ -44,43 +45,50 @@ class MWJournal(BasicNewsRecipe):
|
|||||||
no_stylesheets = True
|
no_stylesheets = True
|
||||||
remove_javascript = True
|
remove_javascript = True
|
||||||
|
|
||||||
|
asciiize = True # Converts all none ascii characters to their ascii equivalents
|
||||||
|
|
||||||
needs_subscription = True # oh yeah... we need to login btw.
|
needs_subscription = True # oh yeah... we need to login btw.
|
||||||
|
|
||||||
# Timeout for fetching files from the server in seconds. The default of 120 seconds, seems somewhat excessive.
|
# Timeout for fetching files from the server in seconds. The default of 120 seconds, seems somewhat excessive.
|
||||||
timeout = 30
|
timeout = 30
|
||||||
|
|
||||||
# Specify extra CSS - overrides ALL other CSS (IE. Added last).
|
# Specify extra CSS - overrides ALL other CSS (IE. Added last).
|
||||||
|
|
||||||
extra_css = 'body { font-family: verdana, helvetica, sans-serif; } \
|
extra_css = 'body { font-family: verdana, helvetica, sans-serif; } \
|
||||||
.introduction, .first { font-weight: bold; } \
|
.introduction, .first { font-weight: bold; } \
|
||||||
.cross-head { font-weight: bold; font-size: 125%; } \
|
.cross-head { font-weight: bold; font-size: 125%; } \
|
||||||
.cap, .caption { display: block; font-size: 80%; font-style: italic; } \
|
.cap, .caption { display: block; font-size: 80%; font-style: italic; } \
|
||||||
.cap, .caption, .caption img, .caption span { display: block; text-align: center; margin: 5px auto; } \
|
.cap, .caption, .caption img, .caption span { display: block; margin: 5px auto; } \
|
||||||
.byl, .byd, .byline img, .byline-name, .byline-title, .author-name, .author-position, \
|
.byl, .byd, .byline img, .byline-name, .byline-title, .author-name, .author-position, \
|
||||||
.correspondent-portrait img, .byline-lead-in, .name, .bbc-role { display: block; \
|
.correspondent-portrait img, .byline-lead-in, .name, .bbc-role { display: block; \
|
||||||
text-align: center; font-size: 80%; font-style: italic; margin: 1px auto; } \
|
font-size: 80%; font-style: italic; margin: 1px auto; } \
|
||||||
.story-date, .published { font-size: 80%; } \
|
.story-date, .published { font-size: 80%; } \
|
||||||
table { width: 100%; } \
|
table { width: 100%; } \
|
||||||
td img { display: block; margin: 5px auto; } \
|
td img { display: block; margin: 5px auto; } \
|
||||||
ul { padding-top: 10px; } \
|
ul { padding-top: 10px; } \
|
||||||
ol { padding-top: 10px; } \
|
ol { padding-top: 10px; } \
|
||||||
li { padding-top: 5px; padding-bottom: 5px; } \
|
li { padding-top: 5px; padding-bottom: 5px; } \
|
||||||
h1 { text-align: center; font-size: 175%; font-weight: bold; } \
|
h1 { font-size: 175%; font-weight: bold; } \
|
||||||
h2 { text-align: center; font-size: 150%; font-weight: bold; } \
|
h2 { font-size: 150%; font-weight: bold; } \
|
||||||
h3 { text-align: center; font-size: 125%; font-weight: bold; } \
|
h3 { font-size: 125%; font-weight: bold; } \
|
||||||
h4, h5, h6 { text-align: center; font-size: 100%; font-weight: bold; }'
|
h4, h5, h6 { font-size: 100%; font-weight: bold; }'
|
||||||
|
|
||||||
remove_tags = [
|
remove_tags = [
|
||||||
dict(name='div', attrs={'class':'boxadzonearea350'}), # Removes banner ads
|
dict(name='div', attrs={'class':'boxadzonearea350'}), # Removes banner ads
|
||||||
dict(name='font', attrs={'class':'footer'}), # remove fonts if you do like your fonts more! Comment out to use website's fonts
|
dict(name='font', attrs={'class':'footer'}), # remove fonts if you do like your fonts more! Comment out to use website's fonts
|
||||||
|
dict(name='div', attrs={'class':'newsarticlead'})
|
||||||
]
|
]
|
||||||
|
|
||||||
# Remove various tag attributes to improve the look of the ebook pages.
|
# Remove various tag attributes to improve the look of the ebook pages.
|
||||||
remove_attributes = [ 'border', 'cellspacing', 'align', 'cellpadding', 'colspan',
|
remove_attributes = [ 'border', 'cellspacing', 'align', 'cellpadding', 'colspan',
|
||||||
'valign', 'vspace', 'hspace', 'alt', 'width', 'height' ]
|
'valign', 'vspace', 'hspace', 'alt', 'width', 'height' ]
|
||||||
|
|
||||||
# Remove the line breaks,
|
# Remove the line breaks as well as href links. Books don't have links generally speaking
|
||||||
preprocess_regexps = [(re.compile(r'<br[ ]*/>', re.IGNORECASE), lambda m: ''),
|
preprocess_regexps = [(re.compile(r'<br[ ]*/>', re.IGNORECASE), lambda m: ''),
|
||||||
(re.compile(r'<br[ ]*clear.*/>', re.IGNORECASE), lambda m: '')]
|
(re.compile(r'<br[ ]*clear.*/>', re.IGNORECASE), lambda m: ''),
|
||||||
|
(re.compile(r'<a.*?>'), lambda h1: ''),
|
||||||
|
(re.compile(r'</a>'), lambda h2: '')
|
||||||
|
]
|
||||||
|
|
||||||
# Select the feeds that you are interested.
|
# Select the feeds that you are interested.
|
||||||
feeds = [
|
feeds = [
|
||||||
@ -104,11 +112,12 @@ class MWJournal(BasicNewsRecipe):
|
|||||||
return cover_url
|
return cover_url
|
||||||
|
|
||||||
def print_version(self, url):
|
def print_version(self, url):
|
||||||
'''
|
if url.find('/Journal/article.asp?HH_ID=') >= 0:
|
||||||
this function uses the print version of the article. Replaces the URL with its print version and fetch that page instead.
|
return self.browser.open_novisit(url).geturl().replace('/Journal/article.asp?HH_ID=', '/Journal/Print.asp?Id=')
|
||||||
'''
|
elif url.find('/News/article.asp?HH_ID=') >= 0:
|
||||||
return url.replace('http://mwjournal.com/Journal/article.asp?HH_ID=', 'http://mwjournal.com/Journal/Print.asp?Id=')
|
return self.browser.open_novisit(url).geturl().replace('/News/article.asp?HH_ID=', '/Journal/Print.asp?Id=')
|
||||||
|
elif url.find('/Resources/TechLib.asp?HH_ID=') >= 0:
|
||||||
|
return self.browser.open_novisit(url).geturl().replace('/Resources/TechLib.asp?HH_ID=', '/Resources/PrintRessource.asp?Id=')
|
||||||
|
|
||||||
def get_browser(self):
|
def get_browser(self):
|
||||||
'''
|
'''
|
||||||
|
Loading…
x
Reference in New Issue
Block a user