Cover image improvement
This commit is contained in:
parent
79e2a704cc
commit
28364b79da
1 changed files with 12 additions and 8 deletions
|
|
@ -8,7 +8,7 @@ import logging
|
||||||
import argparse
|
import argparse
|
||||||
import requests
|
import requests
|
||||||
import traceback
|
import traceback
|
||||||
from lxml import html
|
from lxml import html, etree
|
||||||
from html import escape
|
from html import escape
|
||||||
from random import random
|
from random import random
|
||||||
from multiprocessing import Process, Queue, Value
|
from multiprocessing import Process, Queue, Value
|
||||||
|
|
@ -169,7 +169,7 @@ class Display:
|
||||||
return message
|
return message
|
||||||
|
|
||||||
|
|
||||||
class WinQueue(list): # TODO: error while use Process in Windows: can't pickle _thread.RLock objects
|
class WinQueue(list): # TODO: error while use `process` in Windows: can't pickle _thread.RLock objects
|
||||||
def put(self, el):
|
def put(self, el):
|
||||||
self.append(el)
|
self.append(el)
|
||||||
|
|
||||||
|
|
@ -555,18 +555,22 @@ class SafariBooks:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_cover(html_root):
|
def get_cover(html_root):
|
||||||
images = html_root.xpath("//img[contains(@id, 'cover') or contains(@class, 'cover') or"
|
lowercase_ns = etree.FunctionNamespace(None)
|
||||||
"contains(@name, 'cover') or contains(@src, 'cover')]")
|
lowercase_ns["lower-case"] = lambda _, n: n[0].lower() if n and len(n) else ""
|
||||||
|
|
||||||
|
images = html_root.xpath("//img[contains(lower-case(@id), 'cover') or contains(lower-case(@class), 'cover') or"
|
||||||
|
"contains(lower-case(@name), 'cover') or contains(lower-case(@src), 'cover') or"
|
||||||
|
"contains(lower-case(@alt), 'cover')]")
|
||||||
if len(images):
|
if len(images):
|
||||||
return images[0]
|
return images[0]
|
||||||
|
|
||||||
divs = html_root.xpath("//div[contains(@id, 'cover') or contains(@class, 'cover') or"
|
divs = html_root.xpath("//div[contains(lower-case(@id), 'cover') or contains(lower-case(@class), 'cover') or"
|
||||||
"contains(@name, 'cover') or contains(@src, 'cover')]//img")
|
"contains(lower-case(@name), 'cover') or contains(lower-case(@src), 'cover')]//img")
|
||||||
if len(divs):
|
if len(divs):
|
||||||
return divs[0]
|
return divs[0]
|
||||||
|
|
||||||
a = html_root.xpath("//a[contains(@id, 'cover') or contains(@class, 'cover') or"
|
a = html_root.xpath("//a[contains(lower-case(@id), 'cover') or contains(lower-case(@class), 'cover') or"
|
||||||
"contains(@name, 'cover') or contains(@src, 'cover')]//img")
|
"contains(lower-case(@name), 'cover') or contains(lower-case(@src), 'cover')]//img")
|
||||||
if len(a):
|
if len(a):
|
||||||
return a[0]
|
return a[0]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue