mirror of
https://github.com/aquatix/digimarks.git
synced 2025-12-06 22:05:09 +01:00
Download and save favicon of the domain of a bookmark
This commit is contained in:
23
digimarks.py
23
digimarks.py
@@ -3,7 +3,9 @@ import hashlib
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import requests
|
import requests
|
||||||
|
import shutil
|
||||||
import bs4
|
import bs4
|
||||||
|
from urlparse import urlparse
|
||||||
|
|
||||||
from utilkit import datetimeutil
|
from utilkit import datetimeutil
|
||||||
|
|
||||||
@@ -66,7 +68,10 @@ class Bookmark(db.Model):
|
|||||||
url_hash = CharField()
|
url_hash = CharField()
|
||||||
tags = CharField()
|
tags = CharField()
|
||||||
|
|
||||||
# favicon http://codingclues.eu/2009/retrieve-the-favicon-for-any-url-thanks-to-google/
|
# Website favicon - http://codingclues.eu/2009/retrieve-the-favicon-for-any-url-thanks-to-google/
|
||||||
|
favicon = CharField(null=True)
|
||||||
|
|
||||||
|
# Status code: 200 is OK, 404 is not found, for example (showing an error)
|
||||||
http_status = IntegerField(default=200)
|
http_status = IntegerField(default=200)
|
||||||
|
|
||||||
|
|
||||||
@@ -108,6 +113,18 @@ class Bookmark(db.Model):
|
|||||||
return self.http_status
|
return self.http_status
|
||||||
|
|
||||||
|
|
||||||
|
def set_favicon(self):
|
||||||
|
""" Fetch favicon for the domain """
|
||||||
|
u = urlparse(self.url)
|
||||||
|
domain = u.netloc
|
||||||
|
filename = os.path.join(MEDIA_ROOT, 'favicons/' + domain + '.png')
|
||||||
|
response = requests.get('http://www.google.com/s2/favicons?domain=' + domain, stream=True)
|
||||||
|
with open(filename, 'wb') as out_file:
|
||||||
|
shutil.copyfileobj(response.raw, out_file)
|
||||||
|
del response
|
||||||
|
self.favicon = domain + '.png'
|
||||||
|
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
result = {
|
result = {
|
||||||
'title': self.title,
|
'title': self.title,
|
||||||
@@ -201,6 +218,10 @@ def addingbookmark(userkey):
|
|||||||
bookmark.set_title_from_source()
|
bookmark.set_title_from_source()
|
||||||
else:
|
else:
|
||||||
bookmark.set_status_code()
|
bookmark.set_status_code()
|
||||||
|
|
||||||
|
if bookmark.http_status == 200:
|
||||||
|
bookmark.set_favicon()
|
||||||
|
|
||||||
bookmark.save()
|
bookmark.save()
|
||||||
#return redirect(url)
|
#return redirect(url)
|
||||||
return redirect(url_for('editbookmark', userkey=userkey, urlhash=bookmark.url_hash))
|
return redirect(url_for('editbookmark', userkey=userkey, urlhash=bookmark.url_hash))
|
||||||
|
|||||||
0
static/favicons/.notempty
Normal file
0
static/favicons/.notempty
Normal file
@@ -29,6 +29,12 @@
|
|||||||
<a href="{{ url_for('editbookmark', userkey=userkey, urlhash=bookmark.url_hash) }}">edit</a>
|
<a href="{{ url_for('editbookmark', userkey=userkey, urlhash=bookmark.url_hash) }}">edit</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="card-action">
|
||||||
|
{% if bookmark.favicon %}
|
||||||
|
<img src="{{ url_for('static', filename='favicons/' + bookmark.favicon) }}" />
|
||||||
|
{% endif %}
|
||||||
|
<a href="{{ url_for('editbookmark', userkey=userkey, urlhash=bookmark.url_hash) }}">edit</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|||||||
Reference in New Issue
Block a user