View Single Post
Old 09-17-2016, 09:06 AM   #58
davidfor
Grand Sorcerer
davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.davidfor ought to be getting tired of karma fortunes by now.
 
Posts: 24,905
Karma: 47303824
Join Date: Jul 2011
Location: Sydney, Australia
Device: Kobo:Touch,Glo, AuraH2O, GloHD,AuraONE, ClaraHD, Libra H2O; tolinoepos
Quote:
Originally Posted by oren64 View Post
Hi Pr.BarnArt

I have a problem when the rating is x.x0, for example 4.10 the rating show 41.0, Calibre 2.67.

EDIT: I find the problem in goodreadsX-2.1.zip, I changed the code in worker.py file.

Spoiler:
Code:
    def parse_rating(self, root):
        rating_node = root.xpath('//div[@id="metacol"]/div[@id="bookMeta"]/span[@class="value rating"]/span')
        if rating_node:
            rating_text = tostring(rating_node[0], method='text', encoding=unicode)
            rating_text = re.sub('[^0-9]', '', rating_text)
            rating_value = float(rating_text)
	    if 5 < rating_value < 100:
                return rating_value / 10
            if rating_value >= 100:
                return rating_value / 100
            return rating_value

Now it works okay.
A much simpler fix is:

Code:
    def parse_rating(self, root):
        rating_node = root.xpath('//div[@id="metacol"]/div[@id="bookMeta"]/span[@class="value rating"]/span')
        if rating_node:
            try:
                rating_text = rating_node[0].text
                rating_value = float(rating_text)
                return rating_value
            except:
                return None
davidfor is offline   Reply With Quote