diff --git a/resources/recipes/cio.recipe b/resources/recipes/cio.recipe new file mode 100644 index 0000000000..562b954825 --- /dev/null +++ b/resources/recipes/cio.recipe @@ -0,0 +1,111 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' +__author__ = 'Lorenzo Vigentini' +__copyright__ = '2009, Lorenzo Vigentini ' +__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;} + ''' diff --git a/resources/recipes/computer_active.recipe b/resources/recipes/computer_active.recipe new file mode 100644 index 0000000000..93d8b5bbb5 --- /dev/null +++ b/resources/recipes/computer_active.recipe @@ -0,0 +1,91 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' +__author__ = 'Lorenzo Vigentini' +__copyright__ = '2009, Lorenzo Vigentini ' +__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; } + ''' + diff --git a/resources/recipes/digital_arts.recipe b/resources/recipes/digital_arts.recipe new file mode 100644 index 0000000000..77aab01349 --- /dev/null +++ b/resources/recipes/digital_arts.recipe @@ -0,0 +1,76 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' +__author__ = 'Lorenzo Vigentini' +__copyright__ = '2009, Lorenzo Vigentini ' +__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;} + ''' diff --git a/resources/recipes/mac_video.recipe b/resources/recipes/mac_video.recipe new file mode 100644 index 0000000000..a2b65979da --- /dev/null +++ b/resources/recipes/mac_video.recipe @@ -0,0 +1,82 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' +__author__ = 'Lorenzo Vigentini' +__copyright__ = '2009, Lorenzo Vigentini ' +__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;} + ''' diff --git a/resources/recipes/mac_world.recipe b/resources/recipes/mac_world.recipe new file mode 100644 index 0000000000..bf1403820a --- /dev/null +++ b/resources/recipes/mac_world.recipe @@ -0,0 +1,94 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' +__author__ = 'Lorenzo Vigentini' +__copyright__ = '2009, Lorenzo Vigentini ' +__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;} + ''' diff --git a/resources/recipes/mac_world_uk.recipe b/resources/recipes/mac_world_uk.recipe new file mode 100644 index 0000000000..cf470578cc --- /dev/null +++ b/resources/recipes/mac_world_uk.recipe @@ -0,0 +1,91 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' +__author__ = 'Lorenzo Vigentini' +__copyright__ = '2009, Lorenzo Vigentini ' +__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;} + ''' + + + diff --git a/resources/recipes/pc_advisor.recipe b/resources/recipes/pc_advisor.recipe new file mode 100644 index 0000000000..e45a0f1a81 --- /dev/null +++ b/resources/recipes/pc_advisor.recipe @@ -0,0 +1,87 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' +__author__ = 'Lorenzo Vigentini' +__copyright__ = '2009, Lorenzo Vigentini ' +__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;} + ''' diff --git a/resources/recipes/pc_mag.recipe b/resources/recipes/pc_mag.recipe new file mode 100644 index 0000000000..7d6049ec2b --- /dev/null +++ b/resources/recipes/pc_mag.recipe @@ -0,0 +1,56 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' +__author__ = 'Lorenzo Vigentini' +__copyright__ = '2009, Lorenzo Vigentini ' +__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']}) + ] + diff --git a/resources/recipes/pc_world.recipe b/resources/recipes/pc_world.recipe new file mode 100644 index 0000000000..bf1d8e3c1f --- /dev/null +++ b/resources/recipes/pc_world.recipe @@ -0,0 +1,105 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' +__author__ = 'Lorenzo Vigentini' +__copyright__ = '2009, Lorenzo Vigentini ' +__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;} + ''' diff --git a/resources/recipes/tech_world.recipe b/resources/recipes/tech_world.recipe new file mode 100644 index 0000000000..9c8dc76413 --- /dev/null +++ b/resources/recipes/tech_world.recipe @@ -0,0 +1,92 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' +__author__ = 'Lorenzo Vigentini' +__copyright__ = '2009, Lorenzo Vigentini ' +__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;} + '''