Ver Fonte

add link preview

Daniel Sheffield há 1 ano atrás
pai
commit
5650d260fc

+ 15 - 1
app/rest/pyapi.py

@@ -15,6 +15,7 @@ from bottle import (
 )
 from psycopg import Cursor, connect
 from psycopg.rows import TupleRow
+from linkpreview import link_preview
 
 from .validate import validate, validate_file, validate_parameter, validate_url
 from .hash_util import normalize_base32
@@ -219,7 +220,20 @@ def goto():
             content=content,
             disabled=disabled
         )
-        return template('goto', form=form, link=link, disabled=disabled)
+        preview = dict()
+        if content:
+            page = link_preview(link, parser="lxml")
+            preview['title'] = page.title
+            preview['img'] = page.absolute_image
+            preview['domain'] = page.site_name
+
+        return template(
+            'goto',
+            form=form,
+            link=link,
+            disabled=disabled,
+            preview=preview,
+        )
 
     if request.method == 'POST':
         content = validate_parameter(request, 'url')

+ 1 - 0
app/rest/requirements.txt

@@ -4,3 +4,4 @@ bottle
 wsgigzip
 cherrypy
 base32-lib
+linkpreview

+ 9 - 4
app/rest/templates/goto.tpl

@@ -1,6 +1,6 @@
 % link = setdefault("link", "") or ""
 % disabled = setdefault("disabled", "") and 'disabled="true"'
-% download = setdefault("download", "") or ""
+% preview = setdefault("preview", None)
 <!DOCTYPE html>
 <html>
   <head>
@@ -33,12 +33,17 @@ body {
         <div class="pure-button" style="margin: 1em 0 1em; background: #8f4f4f">
           <a href="{{!link}}" style="color: floralwhite;">{{ link }}</a>
         </div>
+      </div>
       <div class="pure-u-1">
 {{!form}}
-<form id="download" method="get" action="{{ download }}">
-<input name="raw" type="text" hidden="true" value="true" />
-</form>
       </div>
+      <div class="pure-u-1-3"></div>
+      <div class="pure-u-1-3">
+      % if preview:
+      %   include('goto-preview', **preview)
+      % end
+      </div>
+      <div class="pure-u-1-3"></div>
     </div>
   </body>
 </html>

+ 1 - 0
app/rest/templates/paste.tpl

@@ -36,6 +36,7 @@ body {
         <div class="pure-button" style="margin: 1em 0 1em; background: #4f8f4f;">
           <a href="{{!link}}" style="color: floralwhite;">{{ link }}</a>
         </div>
+      </div>
       <div class="pure-u-1">
 {{!form}}
 <form id="download" method="get" action="{{ download }}">

+ 1 - 0
app/rest/templates/upload.tpl

@@ -33,6 +33,7 @@ body {
         <div class="pure-button" style="margin: 1em 0 1em; background: #afaf0f;">
           <a href="{{!link}}" style="color: floralwhite;">{{ link }}</a>
         </div>
+      </div>
       <div class="pure-u-1">
 {{!form}}
       </div>