starting refactorisation to support better chafa
This commit is contained in:
parent
133be0dc13
commit
543455e1c6
20
offpunk.py
20
offpunk.py
|
@ -364,13 +364,13 @@ class AbstractRenderer():
|
||||||
def prepare(self,body,mode=None):
|
def prepare(self,body,mode=None):
|
||||||
return body
|
return body
|
||||||
|
|
||||||
def get_body(self,readable=True,width=None):
|
def get_body(self,readable=True,width=None,mode=None):
|
||||||
if not width:
|
if not width:
|
||||||
width = term_width()
|
width = term_width()
|
||||||
if self.rendered_text == None or not readable:
|
if self.rendered_text == None or not readable:
|
||||||
if readable :
|
if not mode and readable :
|
||||||
mode = "readable"
|
mode = "readable"
|
||||||
else :
|
elif not mode :
|
||||||
mode = "full"
|
mode = "full"
|
||||||
prepared_body = self.prepare(self.body,mode=mode)
|
prepared_body = self.prepare(self.body,mode=mode)
|
||||||
result = self.render(prepared_body,width=width,mode=mode)
|
result = self.render(prepared_body,width=width,mode=mode)
|
||||||
|
@ -378,6 +378,9 @@ class AbstractRenderer():
|
||||||
self.rendered_text = result[0]
|
self.rendered_text = result[0]
|
||||||
self.links = result[1]
|
self.links = result[1]
|
||||||
return self.rendered_text
|
return self.rendered_text
|
||||||
|
|
||||||
|
def display_cmd(self):
|
||||||
|
return less_cmd
|
||||||
# An instance of AbstractRenderer should have a self.render(body,width,mode) method.
|
# An instance of AbstractRenderer should have a self.render(body,width,mode) method.
|
||||||
# 3 modes are used : readable (by default), full and links_only (the fastest, when
|
# 3 modes are used : readable (by default), full and links_only (the fastest, when
|
||||||
# rendered content is not used, only the links are needed)
|
# rendered content is not used, only the links are needed)
|
||||||
|
@ -701,6 +704,8 @@ class ImageRenderer(AbstractRenderer):
|
||||||
def get_title(self):
|
def get_title(self):
|
||||||
return "Picture file"
|
return "Picture file"
|
||||||
def render(self,img,width=None,mode=None):
|
def render(self,img,width=None,mode=None):
|
||||||
|
#with inline, we use symbols to be rendered with less.
|
||||||
|
#else we use the best possible renderer.
|
||||||
if mode == "links_only":
|
if mode == "links_only":
|
||||||
return "", []
|
return "", []
|
||||||
if not width:
|
if not width:
|
||||||
|
@ -709,14 +714,17 @@ class ImageRenderer(AbstractRenderer):
|
||||||
else:
|
else:
|
||||||
spaces = int((term_width() - width)//2)
|
spaces = int((term_width() - width)//2)
|
||||||
try:
|
try:
|
||||||
|
cmd = "chafa --bg white -s %s -w 1 "%width
|
||||||
|
#if mode=="inline":
|
||||||
|
cmd += "-f symbols "
|
||||||
if _NEW_CHAFA:
|
if _NEW_CHAFA:
|
||||||
cmd = "chafa --animate=off -f symbols --bg white -s %s -w 1 \"%s\"" %(width,img)
|
cmd += "--animate=off "
|
||||||
else:
|
else:
|
||||||
img_obj = Image.open(img)
|
img_obj = Image.open(img)
|
||||||
if hasattr(img_obj,"n_frames") and img_obj.n_frames > 1:
|
if hasattr(img_obj,"n_frames") and img_obj.n_frames > 1:
|
||||||
# we remove all frames but the first one
|
# we remove all frames but the first one
|
||||||
img_obj.save(img,save_all=False)
|
img_obj.save(img,save_all=False)
|
||||||
cmd = "chafa --bg white -f symbols -s %s -w 1 \"%s\"" %(width,img)
|
cmd += "\"%s\""%img
|
||||||
return_code = subprocess.run(cmd,shell=True, capture_output=True)
|
return_code = subprocess.run(cmd,shell=True, capture_output=True)
|
||||||
ansi_img = return_code.stdout.decode()
|
ansi_img = return_code.stdout.decode()
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
|
@ -783,7 +791,7 @@ class HtmlRenderer(AbstractRenderer):
|
||||||
size = 40
|
size = 40
|
||||||
else:
|
else:
|
||||||
size = width
|
size = width
|
||||||
ansi_img = "\n" + renderer.get_body(width=size)
|
ansi_img = "\n" + renderer.get_body(width=size,mode="inline")
|
||||||
except Exception as err:
|
except Exception as err:
|
||||||
#we sometimes encounter really bad formatted files or URL
|
#we sometimes encounter really bad formatted files or URL
|
||||||
ansi_img += "[BAD IMG] %s"%src
|
ansi_img += "[BAD IMG] %s"%src
|
||||||
|
|
Loading…
Reference in New Issue