Ok so I have been trying to get the rotate images code into the code Starson17 created and have got it to work. The recipe would be perfect, except that some images are still getting clipped at the top. See image in the bottom to see what I am talking about. Is there any way to justify the image so that the extra space at the bottom (or i guess the left once it is rotated) is deleted? Any help would be greatly appreciated. Thanks once again!
Code:
from calibre.web.feeds.news import BasicNewsRecipe
from calibre.ebooks.BeautifulSoup import BeautifulSoup
from calibre import strftime, __appname__, __version__
import calibre.utils.PythonMagickWand as pw
import calibre.utils.PythonMagickWand
class Explosm(BasicNewsRecipe):
title = 'Explosm 3'
__author__ = 'Starson17'
description = 'Explosm'
language = 'en'
use_embedded_content= False
no_stylesheets = True
linearize_tables = True
oldest_article = 24
remove_javascript = True
remove_empty_feeds = True
max_articles_per_feed = 10
feeds = [
(u'Explosm Feed', u'http://feeds.feedburner.com/Explosm')
]
def get_article_url(self, article):
return article.get('link', None)
keep_only_tags = [dict(name='div', attrs={'id':'maincontent'})]
def preprocess_html(self, soup):
table_tags = soup.findAll('table')
table_tags[1].extract()
NavTag = soup.find(text='« First')
NavTag.parent.parent.extract()
return soup
def postprocess_html(self, soup, first):
#process all the images. assumes that the new html has the correct path
for tag in soup.findAll(lambda tag: tag.name.lower()=='img' and tag.has_key('src')):
iurl = tag['src']
print 'resizing image' + iurl
with pw.ImageMagick():
img = pw.NewMagickWand()
p = pw.NewPixelWand()
if img < 0:
raise RuntimeError('Out of memory')
if not pw.MagickReadImage(img, iurl):
severity = pw.ExceptionType(0)
msg = pw.MagickGetException(img, byref(severity))
raise IOError('Failed to read image from: %s: %s'
%(iurl, msg))
width = pw.MagickGetImageWidth(img)
height = pw.MagickGetImageHeight(img)
if( width > height ) :
print 'Rotate image'
pw.MagickRotateImage(img, p, 90)
if not pw.MagickWriteImage(img, iurl):
raise RuntimeError('Failed to save image to %s'%iurl)
pw.DestroyMagickWand(img)
return soup
extra_css = '''
h1{font-family:Arial,Helvetica,sans-serif; font-weight:bold;font-size:large;}
h2{font-family:Arial,Helvetica,sans-serif; font-weight:normal;font-size:small;}
p{font-family:Arial,Helvetica,sans-serif;font-size:small;}
body{font-family:Helvetica,Arial,sans-serif;font-size:small;}
'''
Here is the image of what I am talking about with the clipping:
http://picturepush.com/public/3684920