Various computer magazines by Lorenzo Vigentini

This commit is contained in:
Kovid Goyal 2010-01-16 14:40:23 -07:00
parent 612526166b
commit 3715fd26b2
10 changed files with 885 additions and 0 deletions

View File

@ -0,0 +1,111 @@
#!/usr/bin/env python
__license__ = 'GPL v3'
__author__ = 'Lorenzo Vigentini'
__copyright__ = '2009, Lorenzo Vigentini <l.vigentini at gmail.com>'
__version__ = 'v1.01'
__date__ = '14, January 2010'
__description__ = 'CIO is the leading information brand for today s busy chief information officer. '
'''
http://www.cio.co.uk/
'''
from calibre.web.feeds.news import BasicNewsRecipe
from calibre.ptempfile import PersistentTemporaryFile
class cio(BasicNewsRecipe):
__author__ = 'Lorenzo Vigentini'
description = 'CIO is the leading information brand for today\'s busy chief information officer.'
cover_url = 'http://media.cio.co.uk/graphics/shared/cio-logo.gif'
title = 'CIO '
publisher = 'IDG Communication'
category = 'IT, technology, business, industry'
language = 'en'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 7
max_articles_per_feed = 10
use_embedded_content = False
recursion = 10
remove_javascript = True
no_stylesheets = True
temp_files = []
articles_are_obfuscated = True
def get_obfuscated_article(self, url):
br = self.get_browser()
br.open(url)
response = br.follow_link(url_regex='&print&intcmp=ROSATT2$', nr = 0)
html = response.read()
self.temp_files.append(PersistentTemporaryFile('_fa.html'))
self.temp_files[-1].write(html)
self.temp_files[-1].close()
return self.temp_files[-1].name
keep_only_tags = [
dict(name='div', attrs={'id':'mainContent'})
]
feeds = [
(u'News', u'http://www.cio.co.uk/rss/feeds/cio-news.xml'),
(u'Debate', u'http://www.cio.co.uk/rss/feeds/cio-debate.xml'),
(u'Analysis', u'http://www.cio.co.uk/rss/feeds/cio-analysis.xml'),
(u'Opinion', u'http://www.cio.co.uk/rss/feeds/cio-opinion.xml'),
(u'In-Depth', u'http://www.cio.co.uk/rss/feeds/cio-in-depth.xml'),
(u'Change management', u'http://www.cio.co.uk/rss/feeds/cio-change-management-management.xml'),
(u'Regulatory compliance', u'http://www.cio.co.uk/rss/feeds/cio-regulatory-compliance-management.xml'),
(u'Business strategy', u'http://www.cio.co.uk/rss/feeds/cio-business-strategy-management.xml'),
(u'Technology', u'http://www.cio.co.uk/rss/feeds/cio-technology-management.xml'),
(u'Security', u'http://www.cio.co.uk/rss/feeds/cio-security-management.xml'),
(u'Soft skills', u'http://www.cio.co.uk/rss/feeds/cio-soft-skills-management.xml'),
(u'The CIO career', u'http://www.cio.co.uk/rss/feeds/cio-cio-career-management.xml'),
(u'Budgets', u'http://www.cio.co.uk/rss/feeds/cio-budgets-management.xml'),
(u'Supplier management', u'http://www.cio.co.uk/rss/feeds/cio-supplier-management-management.xml'),
(u'Board politics', u'http://www.cio.co.uk/rss/feeds/cio-board-politics-management.xml'),
(u'Enterprise software', u'http://www.cio.co.uk/rss/feeds/cio-enterprise-software-technology.xml'),
(u'Mobile and wireless', u'http://www.cio.co.uk/rss/feeds/cio-mobile-wireless-technology.xml'),
(u'Security', u'http://www.cio.co.uk/rss/feeds/cio-security-technology.xml'),
(u'Storage', u'http://www.cio.co.uk/rss/feeds/cio-storage-technology.xml'),
(u'Desktop and client', u'http://www.cio.co.uk/rss/feeds/cio-desktop-client-technology.xml'),
(u'Outsourcing', u'http://www.cio.co.uk/rss/feeds/cio-outsourcing-technology.xml'),
(u'Internet and e-commerce', u'http://www.cio.co.uk/rss/feeds/cio-internet-technology.xml'),
(u'Database management', u'http://www.cio.co.uk/rss/feeds/cio-database-management-technology.xml'),
(u'Communications and networking ', u'http://www.cio.co.uk/rss/feeds/cio-communication-networking-technology.xml'),
(u'Grid computing', u'http://www.cio.co.uk/rss/feeds/cio-grid-computing-cloud-technology.xml'),
(u'Enterprise search', u'http://www.cio.co.uk/rss/feeds/cio-enterprise-search-technology.xml'),
(u'CRM ', u'http://www.cio.co.uk/rss/feeds/cio-crm-technology.xml'),
(u'Ade McCormack ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-ade-mccormack.xml'),
(u'Andy Hayler ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-andy-hayler.xml'),
(u'CEB ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-ceb.xml'),
(u'CIO Staff ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-cio-staff.xml'),
(u'Dave Pepperell ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-dave-pepperell.xml'),
(u'Elliot Limb ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-elliot-limb.xml'),
(u'Freeform Dynamics ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-freeform-dynamics.xml'),
(u'Giles Nelson ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-giles-nelson.xml'),
(u'Mark Chillingworth ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-mark-chillingworth.xml'),
(u'Martin Veitch ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-martin-veitch.xml'),
(u'Mike Altendorf ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-mike-altendorf.xml'),
(u'Richard Steel ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-richard-steel.xml'),
(u'Richard Sykes ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-richard-sykes.xml'),
(u'Rob Llewellyn ', u'http://www.cio.co.uk/rss/feeds/cio-opinion-rob-llewellyn.xml'),
(u'Free thinking ', u'http://www.cio.co.uk/rss/feeds/cio-blog-free-thinking.xml'),
(u'Leading CIOs ', u'http://www.cio.co.uk/rss/feeds/cio-blog-leading-cios.xml'),
(u'CIO News View ', u'http://www.cio.co.uk/rss/feeds/cio-blog-cio-news-view.xml'),
(u'CIO Blog ', u'http://www.cio.co.uk/rss/feeds/cio-blog-cio-blog.xml'),
(u'Transformation CIO ', u'http://www.cio.co.uk/rss/feeds/cio-blog-transformation-cio.xml')
]
extra_css = '''
h1 {color:#FF2222;font-family:Arial,Helvetica,sans-serif; font-size:20px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:20px;}
h2 {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:16px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:16px; }
h3 {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:15px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:15px;}
h4 {color:#333333; font-family:Arial,Helvetica,sans-serif;font-size:13px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:13px; }
h5 {color:#333333; font-family:Arial,Helvetica,sans-serif; font-size:11px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:11px; text-transform:uppercase;}
.newsdate {color:#333333;font-family:Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:italic; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
.articleInfo {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:bold; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
img {align:left;}
'''

View File

@ -0,0 +1,91 @@
#!/usr/bin/env python
__license__ = 'GPL v3'
__author__ = 'Lorenzo Vigentini'
__copyright__ = '2009, Lorenzo Vigentini <l.vigentini at gmail.com>'
__version__ = 'v1.01'
__date__ = '14, January 2010'
__description__ = 'Computeractive publishes new downloads, reviews, news stories, step-by-step guides and answers to PC problems every day.'
'''
http://www.computeractive.co.uk/
'''
from calibre.web.feeds.news import BasicNewsRecipe
class computeractive(BasicNewsRecipe):
__author__ = 'Lorenzo Vigentini'
description = 'Computeractive publishes new downloads, reviews, news stories, step-by-step guides and answers to PC problems every day.'
cover_url = 'http://images.pcworld.com/images/common/header/header-logo.gif'
title = 'Computer act!ve'
publisher = 'Incisive media'
category = 'PC, video, computing, product reviews, editing, cameras, production'
language = 'en'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 7
max_articles_per_feed = 25
use_embedded_content = False
recursion = 10
remove_javascript = True
no_stylesheets = True
keep_only_tags = [
dict(name='div', attrs={'id':'main'})
]
remove_tags = [
dict(name='div', attrs={'id':['seeAlsoTags','commentsModule','relatedArticles','mainLeft','mainRight']}),
dict(name='div', attrs={'class':['buyIt','detailMpu']}),
dict(name='a', attrs={'class':'largerImage'})
]
feeds = [
(u'General content', u'http://feeds.computeractive.co.uk/rss/latest/computeractive/all'),
(u'News', u'http://feeds.computeractive.co.uk/rss/latest/computeractive/news'),
(u'Downloads', u'http://feeds.computeractive.co.uk/rss/latest/computeractive/downloads'),
(u'Hardware', u'http://feeds.computeractive.co.uk/rss/latest/computeractive/hardware'),
(u'Software', u'http://feeds.computeractive.co.uk/rss/latest/computeractive/software'),
(u'Competitions', u'http://www.v3.co.uk/feeds/rss20/personal-technology/competitions')
]
extra_css = '''
h1 {font-family:Arial,Helvetica,sans-serif; font-size:20px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold;}
h2 {font-family:Arial,Helvetica,sans-serif; font-size:18px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; }
h3 {color:#333333;font-family:Arial,Helvetica,sans-serif; font-size:16px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold;}
h4 {color:#333333; font-family:Arial,Helvetica,sans-serif;font-size:14px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold;}
h5 {color:#333333; font-family:Arial,Helvetica,sans-serif; font-size:12px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold;text-transform:uppercase;}
.newsdate {color:#333333;font-family:Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:italic; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
.author {color:#333333;font-family:Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:bold; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
p {font-family:"Trebuchet MS",Arial,Helvetica,sans-serif; font-size:10px;}
.breadcrumbs {margin:0 0 0.6em 0;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif; font-size:8px;}
#breadcrumbsLeft {width:360px; }
.breadcrumbs ul {color:#999; display:inline; margin:1em 0 0 0; padding:0; list-style:none; }
.breadcrumbs li { display:inline; }
.breadcrumbs a:link, .breadcrumbs a:visited { color:#999; text-decoration:none; }
.breadcrumbs a:hover, .breadcrumbs a:active { color:#999; text-decoration:underline; }
#postHeader #reviewDetails { padding-left: 0px; }
#reviewDetails { float:left; margin:0 0 0 10px; padding:0; width:574px; border-top:1px dotted #0071BC; }
#reviewDetails div { margin:0; padding:0; }
#reviewDetailsLeft { float:left; width:334px; margin:0 10px 0 0; padding:0; }
#reviewDetailsRight { float:right; width:230px; margin:0; padding:0; }
#reviewDetails div h2 { font-size:1.2em; float:none; margin:0.5em 0 0.5em 0; padding:0; }
#reviewDetails #verdict { width:334px; float:left; margin:0; padding:0; }
#reviewDetails #ratings, #reviewDetails #price { width:230px; float:left; margin:0; padding:0; }
#reviewDetails #ratings img { border:0; margin:0; padding:0; }
#verdict p strong { width:334px; float:left; margin:0 0 0.25em; padding:0; }
#verdict ul { width:334px; float:left; margin:0; padding:0; }
#verdict li { width:334px; float:left; list-style:none; clear:left; margin:0 4px 0.3em 0px; padding:0 0 0 12px;}
html > body #verdict li { width:322px; }
#post { margin-bottom:2em; clear:both; }
#post .content p { margin:1em 0; line-height:1.5em; }
#post p a:link { color:#005599; text-decoration:none; font-weight:bold; }
#post p a:hover, #post p a:active { color:#cc0000; text-decoration:underline; }
#post p a:visited { color:#003366; text-decoration:none; font-weight:bold; }
#postHeader .author { font-weight:normal; margin:1em 8px 0.25em 0; }
#postHeader .postMetaData { color:#666; margin:0 8px 0 0; }
'''

View File

@ -0,0 +1,76 @@
#!/usr/bin/env python
__license__ = 'GPL v3'
__author__ = 'Lorenzo Vigentini'
__copyright__ = '2009, Lorenzo Vigentini <l.vigentini at gmail.com>'
__version__ = 'v1.01'
__date__ = '14, January 2010'
__description__ = 'Digital Arts - comprehensive coverage of the art of graphic design, 3D, animation, video, effects, web and interactive design, in print and online.'
'''
http://media.digitalartsonline.co.uk/
'''
from calibre.web.feeds.news import BasicNewsRecipe
from calibre.ptempfile import PersistentTemporaryFile
temp_files = []
articles_are_obfuscated = True
class digiArts(BasicNewsRecipe):
__author__ = 'Lorenzo Vigentini'
description = 'Digital Arts - comprehensive coverage of the art of graphic design, 3D, animation, video, effects, web and interactive design, in print and online.'
cover_url = 'http://media.digitalartsonline.co.uk/graphics/logo_digital_arts.gif'
title = 'Digital Arts Magazine '
publisher = 'IDG Communication'
category = 'Multimedia, photo, video, computing, product reviews, editing, cameras, production'
language = 'en'
encoding = 'cp1252'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 30
max_articles_per_feed = 100
use_embedded_content = False
recursion = 10
remove_javascript = True
no_stylesheets = True
def get_obfuscated_article(self, url):
br = self.get_browser()
br.open(url+'&print')
response = br.follow_link(url, nr = 0)
html = response.read()
self.temp_files.append(PersistentTemporaryFile('_fa.html'))
self.temp_files[-1].write(html)
self.temp_files[-1].close()
return self.temp_files[-1].name
keep_only_tags = [
dict(name='div', attrs={'id':['articleHeader','articleContent']})
]
remove_tags = [
dict(name='div', attrs={'class':['submissionBar','mpuContainer']}),
dict(name='div', attrs={'id':['articleSidebar','articleFooter']})
]
remove_tags_after = [
dict(name='p', attrs={'id':'articlePageList'})
]
feeds = [
(u'Content', u'http://rss.feedsportal.com/c/662/f/8410/index.rss')
]
extra_css = '''
h1 {font-family:"Trebuchet MS",Arial,Helvetica,sans-serif; font-size:20px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:18px;}
h2 {font-family:"Trebuchet MS",Arial,Helvetica,sans-serif; font-size:18px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:16px; }
h3 {color:#333333;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif; font-size:16px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px;}
h4 {color:#333333; font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:16px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px; }
h5 {color:#333333; font-family:"Trebuchet MS",Arial,Helvetica,sans-serif; font-size:12px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px; text-transform:uppercase;}
.newsdate {color:#333333;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:italic; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
.author {color:#333333;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:bold; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
img {align:left;}
'''

View File

@ -0,0 +1,82 @@
#!/usr/bin/env python
__license__ = 'GPL v3'
__author__ = 'Lorenzo Vigentini'
__copyright__ = '2009, Lorenzo Vigentini <l.vigentini at gmail.com>'
__version__ = 'v1.01'
__date__ = '14, January 2010'
__description__ = 'MacVideo is an independent journal not affiliated with Apple Computer, It is a publication of IDG Communication focusing on video production and editing.'
'''
http://www.macvideo.tv/
'''
from calibre.web.feeds.news import BasicNewsRecipe
from calibre.ptempfile import PersistentTemporaryFile
temp_files = []
articles_are_obfuscated = True
class macVideo(BasicNewsRecipe):
__author__ = 'Lorenzo Vigentini'
description = 'MacVideo is an independent journal not affiliated with Apple Computer, It is a publication of IDG Communication focusing on video production and editing.'
cover_url = 'http://www.macvideo.tv/images/shared/macvideo-logo.jpg'
title = 'MacVideo '
publisher = 'IDG Communication'
category = 'Apple, Mac, video, computing, product reviews, editing, cameras, production'
language = 'en'
encoding = 'cp1252'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 30
max_articles_per_feed = 25
use_embedded_content = False
recursion = 10
remove_javascript = True
no_stylesheets = True
def get_obfuscated_article(self, url):
br = self.get_browser()
br.open(url+'&print')
response = br.follow_link(url, nr = 0)
html = response.read()
self.temp_files.append(PersistentTemporaryFile('_fa.html'))
self.temp_files[-1].write(html)
self.temp_files[-1].close()
return self.temp_files[-1].name
keep_only_tags = [
dict(name='div', attrs={'id':'mainContent'})
]
remove_tags = [
dict(name='div', attrs={'class':['submissionBar','mpuContainer']}),
dict(name='p', attrs={'class':'articlePag'}),
dict(name='ul', attrs={'id':'articleIconsList'})
]
feeds = [
(u'News', u'http://www.macvideo.tv/rss/feeds/macvideo-news.xml'),
(u'Reviews', u'http://www.macvideo.tv/rss/feeds/macvideo-reviews.xml'),
(u'Interviews', u'http://www.macvideo.tv/rss/feeds/macvideo-features-interviews.xml'),
(u'Features', u'http://www.macvideo.tv/rss/feeds/macvideo-features-features.xml'),
(u'Rick Young', u'http://www.macvideo.tv/rss/feeds/blog100140.xml'),
(u'Matt Davis', u'http://www.macvideo.tv/rss/feeds/blog101658.xml'),
(u'Adrian Miskelly', u'http://www.macvideo.tv/rss/feeds/blog101750.xml')
]
extra_css = '''
h1 {font-family:"Trebuchet MS",Arial,Helvetica,sans-serif; font-size:20px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:18px;}
h2 {font-family:"Trebuchet MS",Arial,Helvetica,sans-serif; font-size:18px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:16px; }
h3 {color:#333333;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif; font-size:16px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px;}
h4 {color:#333333; font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:16px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px; }
h5 {color:#333333; font-family:"Trebuchet MS",Arial,Helvetica,sans-serif; font-size:12px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px; text-transform:uppercase;}
.newsdate {color:#333333;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:italic; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
.author {color:#333333;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:bold; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
p {font-family:Arial,Helvetica,sans-serif; font-size:10px;}
img {align:left;}
'''

View File

@ -0,0 +1,94 @@
#!/usr/bin/env python
__license__ = 'GPL v3'
__author__ = 'Lorenzo Vigentini'
__copyright__ = '2009, Lorenzo Vigentini <l.vigentini at gmail.com>'
__version__ = 'v1.01'
__date__ = '14, January 2010'
__description__ = 'Macworld is an independent journal not affiliated with Apple Computer.'
'''
http://www.macworld.co.uk/
'''
from calibre.web.feeds.news import BasicNewsRecipe
from calibre.ptempfile import PersistentTemporaryFile
temp_files = []
articles_are_obfuscated = True
class macWorld(BasicNewsRecipe):
__author__ = 'Lorenzo Vigentini'
description = 'Macworld is an independent journal not affiliated with Apple Computer.'
cover_url = 'http://images.macworld.com/images/templates/v4/mw-logo.gif'
title = 'Mac World '
publisher = 'IDG Communication'
category = 'Apple, Mac, video, computing, product reviews, editing, cameras, production'
language = 'en'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 7
max_articles_per_feed = 20
use_embedded_content = False
recursion = 10
remove_javascript = True
no_stylesheets = True
def get_obfuscated_article(self, url):
br = self.get_browser()
br.open(url+'&print')
response = br.follow_link(url, nr = 0)
html = response.read()
self.temp_files.append(PersistentTemporaryFile('_fa.html'))
self.temp_files[-1].write(html)
self.temp_files[-1].close()
return self.temp_files[-1].name
keep_only_tags = [
dict(name='div', attrs={'id':'article'})
]
remove_tags = [
dict(name='div', attrs={'class':['toolBar','mac_tags','toolBar btmTools','textAds']}),
dict(name='p', attrs={'class':'breadcrumbs'}),
dict(name='div', attrs={'id':['breadcrumb','sidebar','comments']})
]
feeds = [
(u'MacWorld Headlines', u'http://rss.macworld.com/macworld/news'),
(u'How-To', u'http://rss.macworld.com/macworld/howto'),
(u'Security', u'http://rss.macworld.com/macworld/topics/security'),
(u'MAC IT', u'http://rss.macworld.com/macworld/topics/mac_it'),
(u'Business Mac', u'http://rss.macworld.com/macworld/topics/business_mac'),
(u'Reviews', u'http://rss.macworld.com/macworld/reviews'),
(u'Products: Mac', u'http://rss.macworld.com/macworld/products/mac'),
(u'Products: iPod', u'http://rss.macworld.com/macworld/products/ipod'),
(u'Products: iPhone', u'http://rss.macworld.com/macworld/products/iphone'),
(u'Products: Software', u'http://rss.macworld.com/macworld/products/mac/software'),
(u'OSX Hints', u'http://rss.macworld.com/macworld/weblogs/macosxhints'),
(u'Mac Gems', u'http://rss.macworld.com/macworld/weblogs/macgems'),
(u'Mac 911', u'http://rss.macworld.com/macworld/weblogs/mac911'),
(u'Game Room', u'http://rss.macworld.com/macworld/topics/games'),
(u'Editos notes', u'http://rss.macworld.com/macworld/weblogs/editors'),
(u'Creative notes', u'http://rss.macworld.com/macworld/weblogs/creative'),
(u'Playlist', u'http://rss.macworld.com/macworld/weblogs/ipodblog'),
(u'Mobile', u'http://rss.macworld.com/macworld/weblogs/mobile'),
(u'From the lab', u'http://rss.macworld.com/macworld/weblogs/macworldlab'),
(u'MacUser', u'http://rss.macworld.com/macworld/weblogs/macuser')
]
extra_css = '''
h1 {color:#008852;font-family:Arial,Helvetica,sans-serif; font-size:20px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:18px;}
h2 {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:16px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:16px; }
h3 {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:15px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px;}
h4 {color:#333333; font-family:Arial,Helvetica,sans-serif;font-size:13px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px; }
h5 {color:#333333; font-family:Arial,Helvetica,sans-serif; font-size:11px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px; text-transform:uppercase;}
.newsdate {color:#333333;font-family:Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:italic; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
.articleInfo {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:bold; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
img {align:left;}
'''

View File

@ -0,0 +1,91 @@
#!/usr/bin/env python
__license__ = 'GPL v3'
__author__ = 'Lorenzo Vigentini'
__copyright__ = '2009, Lorenzo Vigentini <l.vigentini at gmail.com>'
__version__ = 'v1.01'
__date__ = '14, January 2010'
__description__ = 'Macworld is a publication of IDG Communication in the UK specifically on the Apple Mac.'
'''
http://www.macworld.co.uk/
'''
from calibre.web.feeds.news import BasicNewsRecipe
from calibre.ptempfile import PersistentTemporaryFile
class pcMag(BasicNewsRecipe):
__author__ = 'Lorenzo Vigentini'
description = 'Macworld is a publication of IDG Communication in the UK specifically on the Apple Mac.'
cover_url = 'http://media.macworld.co.uk/images/masthead.jpg'
title = 'Mac World UK '
publisher = 'IDG Communication'
category = 'Apple, Mac, computing, product reviews, UK'
language = 'en_GB'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 15
max_articles_per_feed = 25
use_embedded_content = False
recursion = 10
remove_javascript = True
no_stylesheets = True
temp_files = []
articles_are_obfuscated = True
def get_obfuscated_article(self, url):
br = self.get_browser()
br.open(url)
response = br.follow_link(url_regex='&print$', nr = 0)
html = response.read()
self.temp_files.append(PersistentTemporaryFile('_fa.html'))
self.temp_files[-1].write(html)
self.temp_files[-1].close()
return self.temp_files[-1].name
keep_only_tags = [
dict(name='div', attrs={'id':'wrapper'})
]
remove_tags = [
dict(name='div', attrs={'class':'bannerContainer'}),
dict(name='p', attrs={'class':'breadcrumbs'}),
dict(name='ul', attrs={'id':'articleIconsList'})
]
remove_tags_after = [
dict(name='p', attrs={'id':'articlePageList'}),
]
feeds = [
(u'MacWorld Headlines', u'http://www.macworld.co.uk/rss/macworld.xml'),
(u'Reviews', u'http://www.macworld.co.uk/rss/reviews.xml'),
(u'Masterclass', u'http://www.macworld.co.uk/rss/masterclasses.xml'),
(u'MacWorld Team', u'http://www.macworld.co.uk/rss/blog8.xml'),
(u'Andy Ihnatko', u'http://www.macworld.co.uk/rss/blog7.xml'),
(u'Andy Penfold', u'http://www.macworld.co.uk/rss/blog11.xml'),
(u'Jonny Evans', u'http://www.macworld.co.uk/rss/blog1.xml'),
(u'Karen Haslam', u'http://www.macworld.co.uk/rss/blog4.xml'),
(u'Mark Hattersley', u'http://www.macworld.co.uk/rss/blog2.xml'),
(u'Nick Spence', u'http://www.macworld.co.uk/rss/blog12.xml'),
(u'Simon Iary', u'http://www.macworld.co.uk/rss/blog3.xml')
]
extra_css = '''
h1 {color:#0066CC;font-family:Arial,Helvetica,sans-serif; font-size:20px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:20px;}
h2 {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:16px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:16px; }
h3 {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:15px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:15px;}
h4 {color:#333333; font-family:Arial,Helvetica,sans-serif;font-size:13px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:13px; }
h5 {color:#333333; font-family:Arial,Helvetica,sans-serif; font-size:11px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:11px; text-transform:uppercase;}
p.authorCredit {-x-system-font:none;font-family:Arial,sans-serif;font-size:10pt;font-size-adjust:none;font-stretch:normal;font-style:normal;font-variant:normal;font-weight:normal;line-height:1.1em;}
p.date {font-size:10pt;margin-bottom:0;}
img {align:left;}
'''

View File

@ -0,0 +1,87 @@
#!/usr/bin/env python
__license__ = 'GPL v3'
__author__ = 'Lorenzo Vigentini'
__copyright__ = '2009, Lorenzo Vigentini <l.vigentini at gmail.com>'
__version__ = 'v1.01'
__date__ = '14, January 2010'
__description__ = 'PC Advisor delivers expert advice you can trust to business and home PC users who want to buy the best-value equipment and make the most out of the equipment they already own.'
'''
http://www.pcadvisor.co.uk/
'''
from calibre.web.feeds.news import BasicNewsRecipe
class pcAdvisor(BasicNewsRecipe):
__author__ = 'Lorenzo Vigentini'
description = 'PC Advisor delivers expert advice you can trust to business and home PC users who want to buy the best-value equipment and make the most out of the equipment they already own.'
cover_url = 'http://media.pcadvisor.co.uk/images/spacer.gif'
title = 'Pc Advisor '
publisher = 'IDG Communication'
category = 'PC, computing, product reviews, UK'
language = 'en'
encoding = 'cp1252'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 15
max_articles_per_feed = 25
use_embedded_content = False
recursion = 10
remove_javascript = True
no_stylesheets = True
keep_only_tags = [
dict(name='div', attrs={'id':'articlecontent'})
]
remove_tags = [
dict(name='div', attrs={'id':['crosssitesignup','submitarticle','dontPrint','commentsForm','userReviewFormContainer','reevooContainerId']}),
dict(name='div', attrs={'class':'mpu'}),
dict(name='p', attrs={'id':'articlePageList'}),
dict(name='div', attrs={'style':['margin: 0pt 10px 5px;','margin: 0pt 10px 5px;']}),
dict(name='p', attrs={'class':'dontPrint'}),
dict(name='h2', attrs={'class':'sectionTitle'}),
dict(name='a', attrs={'title':'Subscribe to PC Advisor'}),
dict(name='a', attrs={'name':'revooContent'}),
{'name':['form','script','link']}
]
remove_tags_after = [
dict(name='p', attrs={'id':'crosssitesignup'})
]
def get_article_url(self, article):
return article.get('guid', None)
feeds = [
(u'News Headlines', u'http://www.pcadvisor.co.uk/rss/feeds/pcanews.xml'),
(u'Reviews', u'http://www.pcadvisor.co.uk/rss/feeds/pcareviews.xml'),
(u'New Products', u'http://www.pcadvisor.co.uk/rss/feeds/blog18.xml'),
(u'PC Advisor Blog', u'http://www.pcadvisor.co.uk/rss/feeds/blog4.xml'),
(u'PC Security', u'http://www.pcadvisor.co.uk/rss/feeds/pca-security.xml'),
(u'Laptops', u'http://www.pcadvisor.co.uk/rss/feeds/pca-laptop.xml'),
(u'Green Computing', u'http://www.pcadvisor.co.uk/rss/feeds/pca-green-computing.xml'),
(u'Internet and broadband', u'http://www.pcadvisor.co.uk/rss/feeds/pca-internet.xml'),
(u'Prones and PDAs', u'http://www.pcadvisor.co.uk/rss/feeds/pca-phones.xml'),
(u'Software', u'http://www.pcadvisor.co.uk/rss/feeds/pca-software.xml'),
(u'Small Business', u'http://www.pcadvisor.co.uk/rss/feeds/pca-small-business.xml'),
(u'Photo and video', u'http://www.pcadvisor.co.uk/rss/feeds/pca-photo-video.xml'),
(u'Mac News', u'http://www.pcadvisor.co.uk/rss/feeds/pca-mac.xml'),
(u'Linux', u'http://www.pcadvisor.co.uk/rss/feeds/pca-linux.xml'),
(u'WiFi and Networking', u'http://www.pcadvisor.co.uk/rss/feeds/pca-networking.xml'),
(u'Gadgets', u'http://www.pcadvisor.co.uk/rss/feeds/pca-gadgets.xml')
]
extra_css = '''
h1 {font-family:"Trebuchet MS",Arial,Helvetica,sans-serif; font-size:20px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:18px;}
h2 {font-family:"Trebuchet MS",Arial,Helvetica,sans-serif; font-size:18px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:16px; }
h3 {color:#333333;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif; font-size:16px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px;}
h4 {color:#333333; font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:16px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px; }
h5 {color:#333333; font-family:"Trebuchet MS",Arial,Helvetica,sans-serif; font-size:12px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px; text-transform:uppercase;}
.newsdate {color:#333333;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:italic; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
.author {color:#333333;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:bold; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
p {font-family:"Trebuchet MS",Arial,Helvetica,sans-serif; font-size:10px;}
'''

View File

@ -0,0 +1,56 @@
#!/usr/bin/env python
__license__ = 'GPL v3'
__author__ = 'Lorenzo Vigentini'
__copyright__ = '2009, Lorenzo Vigentini <l.vigentini at gmail.com>'
__version__ = 'v1.01'
__date__ = '13, January 2010'
__description__ = 'PCMag (www.pcmag.com) delivers authoritative, labs-based comparative reviews of computing and Internet products to highly engaged technology buyers.'
'''
http://www.pcmag.com/
'''
from calibre.web.feeds.news import BasicNewsRecipe
class pcMag(BasicNewsRecipe):
__author__ = 'Lorenzo Vigentini'
description = 'PCMag (www.pcmag.com) delivers authoritative, labs-based comparative reviews of computing and Internet products to highly engaged technology buyers.'
cover_url = 'http://www.pcmag.com/images/bg-logo-sharp.2.gif'
title = 'PC Magazine'
publisher = 'Ziff Davis Media'
category = 'PC, computing, product reviews'
language = 'en'
encoding = 'cp1252'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 15
max_articles_per_feed = 25
use_embedded_content = False
recursion = 10
remove_javascript = True
no_stylesheets = True
keep_only_tags = [
dict(name='div', attrs={'id':'articleContent'})
]
feeds = [
(u'Tech Commentary from the Editors of PC Magazine', u'http://rssnewsapps.ziffdavis.com/PCMAG_commentary.xml'),
(u'PC Magazine Breaking News', u'http://rssnewsapps.ziffdavis.com/pcmagtips.xml'),
(u'PC Magazine Tips and Solutions', u'http://rssnewsapps.ziffdavis.com/pcmagofficetips.xml'),
(u'PC Magazine Small Business', u'http://blogs.pcmag.com/atwork/index.xml'),
(u'PC Magazine Security Watch', u'http://feeds.ziffdavis.com/ziffdavis/securitywatch?format=xml'),
(u'PC Magazine: the Official John C. Dvorak RSS Feed', u'http://rssnewsapps.ziffdavis.com/PCMAG_dvorak.xml'),
(u'PC Magazine Editor-in-Chief Lance Ulanoff', u'http://rssnewsapps.ziffdavis.com/pcmagulanoff.xml'),
(u'Michael Millers Forward Thinking from PCMag.com', u'http://feeds.ziffdavis.com/ziffdavis/pcmag-miller?format=xml'),
(u'Technology News from Ziff Davis', u'http://rssnewsapps.ziffdavis.com/pcmagbreakingnews.xml')
]
remove_tags = [
dict(name='div', attrs={'id':['microAd','intellitxt','articleDeckTalkback','inlineDigg','underArticleLinks','w_talkback']}),
dict(name='span', attrs={'id':['highlights_content','yahooBuzzBadge-48558872521263350499378']})
]

View File

@ -0,0 +1,105 @@
#!/usr/bin/env python
__license__ = 'GPL v3'
__author__ = 'Lorenzo Vigentini'
__copyright__ = '2009, Lorenzo Vigentini <l.vigentini at gmail.com>'
__version__ = 'v1.01'
__date__ = '14, January 2010'
__description__ = 'PC World and Macworld consistently deliver editorial excellence through award-winning content and trusted product reviews.'
'''
http://www.pcworld.com/
'''
from calibre.web.feeds.news import BasicNewsRecipe
from calibre.ptempfile import PersistentTemporaryFile
temp_files = []
articles_are_obfuscated = True
class pcWorld(BasicNewsRecipe):
__author__ = 'Lorenzo Vigentini'
description = 'PC World and Macworld consistently deliver editorial excellence through award-winning content and trusted product reviews.'
cover_url = 'http://images.pcworld.com/images/common/header/header-logo.gif'
title = 'PCWorld '
publisher = 'IDG Communication'
category = 'PC, video, computing, product reviews, editing, cameras, production'
language = 'en'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 7
max_articles_per_feed = 20
use_embedded_content = False
recursion = 10
remove_javascript = True
no_stylesheets = True
def get_obfuscated_article(self, url):
br = self.get_browser()
br.open(url+'&print')
response = br.follow_link(url, nr = 0)
html = response.read()
self.temp_files.append(PersistentTemporaryFile('_fa.html'))
self.temp_files[-1].write(html)
self.temp_files[-1].close()
return self.temp_files[-1].name
keep_only_tags = [
dict(name='div', attrs={'class':'article'})
]
remove_tags = [
dict(name='div', attrs={'class':['toolBar','mac_tags','toolBar btmTools','recommend longRecommend','recommend shortRecommend','textAds']}),
dict(name='div', attrs={'id':['sidebar','comments','mac_tags']}),
dict(name='ul', attrs={'class':'tools'}),
dict(name='li', attrs={'class':'sub'})
]
feeds = [
(u'PCWorld Headlines', u'http://feeds.pcworld.com/pcworld/latestnews'),
(u'How-To', u'http://feeds.pcworld.com/pcworld/update/howto'),
(u'Today@PCWorld', u'http://feeds.pcworld.com/pcworld/blogs/todayatpcw'),
(u'Reviews', u'http://feeds.pcworld.com/pcworld/update/reviews'),
(u'Most Popular Downloads', u'http://feeds.pcworld.com/pcworld/downloads/monthly'),
(u'Answer Lines', u'http://feeds.pcworld.com/pcworld/blogs/answer_line'),
(u'Digital Focus', u'http://feeds.pcworld.com/pcworld/blogs/digital_focus'),
(u'Download this', u'http://feeds.pcworld.com/pcworld/blogs/download_this/'),
(u'Game on', u'http://feeds.pcworld.com/pcworld/blogs/game_on'),
(u'Geek tech', u'http://feeds.pcworld.com/pcworld/blogs/geektech/'),
(u'Hassle free PC', u'http://feeds.pcworld.com/pcworld/blogs/hassle-free_pc'),
(u'Mobile computing', u'http://feeds.pcworld.com/pcworld/blogs/mobile_computing'),
(u'Security alert', u'http://feeds.pcworld.com/pcworld/blogs/security_alert/'),
(u'BizFeed', u'http://feeds.pcworld.com/pcworld/businesscenter/bizfeed/'),
(u'The Cost Cutter', u'http://feeds.pcworld.com/pcworld/businesscenter/cost_cutter/'),
(u'Linux line', u'http://feeds.pcworld.com/pcworld/businesscenter/linuxline/'),
(u'Net Work', u'http://feeds.pcworld.com/pcworld/businesscenter/network/'),
(u'Peer-to-Peer', u'http://feeds.pcworld.com/pcworld/businesscenter/peertopeer/'),
(u'Tech inciter', u'http://feeds.pcworld.com/pcworld/businesscenter/tech_inciter/'),
(u'Gadgets and gear', u'http://feeds.pcworld.com/pcworld/update/gadgets'),
(u'Home Entertainment', u'http://feeds.pcworld.com/pcworld/update/home-entertainment'),
(u'Mobile Devices', u'http://feeds.pcworld.com/pcworld/update/mobile-devices')
]
extra_css = '''
h1 {color:#FF0000;font-family:Arial,Helvetica,sans-serif; font-size:20px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:18px;}
h2 {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:16px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:16px; }
h3 {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:15px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px;}
h4 {color:#333333; font-family:Arial,Helvetica,sans-serif;font-size:13px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px; }
h5 {color:#333333; font-family:Arial,Helvetica,sans-serif; font-size:11px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:14px; text-transform:uppercase;}
.newsdate {color:#333333;font-family:Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:italic; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
.articleInfo {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:bold; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
img {align:left;}
#breadcrumb {}
#breadcrumb ul {padding:0;margin:2px 0 0 0;}
#breadcrumb li {list-style:none;display:inline;padding:0;}
#breadcrumb li big {padding-right:2px;}
#articleHead {border-top:1px solid #CCC;padding-top:5px;clear:both;margin-bottom:10px;}
#articleHead h1 {font-size:25px;line-height:28px;margin:10px 0px 2px;padding:0px;}
#articleHead h2 {font-size:14px;line-height:16px;margin:0px 0px 6px;padding:0px;}
#articleHead p {font-size:15px;font-weight:bold;margin:0px;padding:0px;}
#articleHead .date {color:#999;margin:0px 0px 20px;padding:0px;}
'''

View File

@ -0,0 +1,92 @@
#!/usr/bin/env python
__license__ = 'GPL v3'
__author__ = 'Lorenzo Vigentini'
__copyright__ = '2009, Lorenzo Vigentini <l.vigentini at gmail.com>'
__version__ = 'v1.01'
__date__ = '14, January 2010'
__description__ = 'Techworld offers the latest breaking IT industry news, product reviews, enterprise software downloads, how-to articles and expert blogs for technical professionals and enterprise users in the UK'
'''
http://www.techworld.com/
'''
from calibre.web.feeds.news import BasicNewsRecipe
from calibre.ptempfile import PersistentTemporaryFile
class techworld(BasicNewsRecipe):
__author__ = 'Lorenzo Vigentini'
description = 'Techworld offers the latest breaking IT industry news, product reviews, enterprise software downloads, how-to articles and expert blogs for technical professionals and enterprise users in the UK'
cover_url = 'http://www.techworld.com/graphics/header/site_logo.jpg'
title = 'TechWorld'
publisher = 'IDG Communication'
category = 'Apple, Mac, video, computing, product reviews, editing, cameras, production'
language = 'en'
timefmt = '[%a, %d %b, %Y]'
oldest_article = 7
max_articles_per_feed = 15
use_embedded_content = False
recursion = 10
remove_javascript = True
no_stylesheets = True
temp_files = []
articles_are_obfuscated = True
def get_obfuscated_article(self, url):
br = self.get_browser()
br.open(url)
response = br.follow_link(url_regex='?getDynamicPage&print$', nr = 0)
html = response.read()
self.temp_files.append(PersistentTemporaryFile('_fa.html'))
self.temp_files[-1].write(html)
self.temp_files[-1].close()
return self.temp_files[-1].name
keep_only_tags = [
dict(name='div', attrs={'id':'articleBody'}),
dict(name='h2', attrs={'class':'blogTitle'}),
dict(name='h3', attrs={'class':'blogger'}),
]
remove_tags = [
dict(name='div', attrs={'class':['submissionBar','mpuContainer']}),
dict(name='div', attrs={'id':['breadcrumb','mainContentSidebar','articleIconsList','loginSubscribeBoxout']}),
dict(name='ul', attrs={'class':'articleIconsList'})
]
remove_tags_after = [
dict(name='div', attrs={'id':'articleFooter'})
]
feeds = [
(u'News', u'http://www.techworld.com/rss/feeds/techworld-news.xml'),
(u'How-Tos', u'http://www.techworld.com/rss/feeds/techworld-how-tos.xml'),
(u'Reviews', u'http://www.techworld.com/rss/feeds/techworld-reviews.xml'),
(u'Features', u'http://www.techworld.com/rss/feeds/techworld-features.xml'),
(u'Storage', u'http://www.techworld.com/rss/feeds/techworld-storage.xml'),
(u'Applications', u'http://www.techworld.com/rss/feeds/techworld-applications.xml'),
(u'Virtualization', u'http://www.techworld.com/rss/feeds/techworld-virtualisation.xml'),
(u'Personal Tech', u'http://www.techworld.com/rss/feeds/techworld-personal-tech.xml'),
(u'Green IT', u'http://www.techworld.com/rss/feeds/techworld-green-it.xml'),
(u'Security', u'http://www.techworld.com/rss/feeds/techworld-security.xml'),
(u'Operating Systems', u'http://www.techworld.com/rss/feeds/techworld-operating-systems.xml'),
(u'Networking', u'http://www.techworld.com/rss/feeds/techworld-networking.xml'),
(u'Mobile and Wireless', u'http://www.techworld.com/rss/feeds/techworld-mobile-wireless.xml'),
(u'Data Centre', u'http://www.techworld.com/rss/feeds/techworld-data-centre.xml'),
(u'SME', u'http://www.techworld.com/rss/feeds/techworld-sme.xml'),
(u'TechWorld Blogs', u'http://blogs.techworld.com/atom.xml')
]
extra_css = '''
h1 {color:#0066CC;font-family:Arial,Helvetica,sans-serif; font-size:20px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:20px;}
h2 {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:16px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:16px; }
h3 {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif; font-size:15px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:15px;}
h4 {color:#333333; font-family:Arial,Helvetica,sans-serif;font-size:13px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:13px; }
h5 {color:#333333; font-family:Arial,Helvetica,sans-serif; font-size:11px; font-size-adjust:none; font-stretch:normal; font-style:normal; font-variant:normal; font-weight:bold; line-height:11px; text-transform:uppercase;}
.newsdate {color:#333333;font-family:Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:italic; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
.articleInfo {color:#4D4D4D;font-family:Arial,Helvetica,sans-serif;font-size:10px; font-size-adjust:none; font-stretch:normal; font-style:bold; font-variant:normal; font-weight:bold; line-height:10px; text-decoration:none;}
img {align:left;}
'''