summaryrefslogtreecommitdiff
path: root/apps/links/utils.py
diff options
context:
space:
mode:
authorluxagraf@c63593aa-01b0-44d9-8516-4b9c7e931d7f <luxagraf@c63593aa-01b0-44d9-8516-4b9c7e931d7f>2009-01-10 13:44:26 +0000
committerluxagraf@c63593aa-01b0-44d9-8516-4b9c7e931d7f <luxagraf@c63593aa-01b0-44d9-8516-4b9c7e931d7f>2009-01-10 13:44:26 +0000
commitc5924fb42438bf9a1dd69414ad0b42594c429fea (patch)
treebcadba23aabec712f742dffbf36e6dde7a4b1767 /apps/links/utils.py
parent637d71d2c3a7c1c65a931e1eb094052a095cdf05 (diff)
added links app (non public)
Diffstat (limited to 'apps/links/utils.py')
-rw-r--r--apps/links/utils.py133
1 files changed, 133 insertions, 0 deletions
diff --git a/apps/links/utils.py b/apps/links/utils.py
new file mode 100644
index 0000000..a575f4f
--- /dev/null
+++ b/apps/links/utils.py
@@ -0,0 +1,133 @@
+import time, datetime
+
+from django.core.exceptions import ObjectDoesNotExist
+from django.template.defaultfilters import slugify,striptags
+from django.core.mail import EmailMessage
+from django.utils.encoding import smart_unicode
+
+from strutils import safestr,unquotehtml
+from APIClients import MagnoliaClient
+from urlgrabber.grabber import URLGrabber
+import pydelicious as delicious
+
+import markdown2 as markdown
+from links.models import Link
+from django.conf import settings
+
+def flickr_datetime_to_datetime(fdt):
+ from datetime import datetime
+ from time import strptime
+ date_parts = strptime(fdt, '%Y-%m-%dT%H:%M:%S%Z')
+ return datetime(*date_parts[0:6])
+
+def sync_magnolia_links(*args, **kwargs):
+ #Number of links to retrieve at one time
+ get_num = 15
+ BASE_PATH = 'http://ma.gnolia.com/api/rest/1/'
+ client = MagnoliaClient(BASE_PATH, settings.MAGNOLIA_API_KEY)
+ data = client.bookmarks_find(person="luxagraf",limit=get_num)
+ dupe = False
+ for post in data.findall('bookmarks/bookmark'):
+ taglist = []
+ info = dict((k, smart_unicode(post.get(k))) for k in post.keys())
+ try:
+ row = Link.objects.get(magnolia_id=safestr(info['id']))
+ # If the row exists already, set the dupe flag
+ dupe = True
+ except ObjectDoesNotExist:
+ f = copy_file(safestr(post.findtext('screenshot')), safestr(info['id']))
+ local_image_url = "%s/%s.jpg" %(safestr(datetime.datetime.today().strftime("%b").lower()), safestr(info['id']))
+
+ for t in post.findall('tags/tag'):
+ tag = dict((k, smart_unicode(t.get(k))) for k in t.keys())
+ taglist.append(tag['name'])
+ print tag['name']
+ for tag in taglist:
+ if tag == '2lux':
+ status = 1
+ break
+ else:
+ status = 0
+ descr = markdown.markdown(unquotehtml(safestr(post.findtext('description'))), safe_mode = False)
+ l, created = Link.objects.get_or_create(
+ title = post.findtext('title'),
+ magnolia_id = safestr(info['id']),
+ url = safestr(post.findtext('url')),
+ description = descr,
+ screen_url = local_image_url,
+ rating = safestr(info['rating']),
+ pub_date = datetime.datetime(*(time.strptime(str(info['created'][:-6]), '%Y-%m-%dT%H:%M:%S')[0:6])),
+ status = status,
+ enable_comments = True,
+ tags = ", ".join(t for t in taglist if t != "2lux")
+ )
+
+ email_link(l)
+ send_to_delicious(l)
+ if(dupe):
+ break
+ """
+ b, created = Link.objects.get_or_create(
+ url = info['href'],
+ description = info['extended'],
+ tags = info.get('tag', ''),
+ date = parsedate(info['time']),
+ title = info['description']
+ )
+ for b in bookmarks.bookmarks.bookmark:
+
+ try:
+ row = Link.objects.get(magnolia_id=safestr(b.id))
+ # If the row exists already, set the dupe flag
+ print b.title.PCDATA
+ dupe = True
+ except ObjectDoesNotExist:
+ tags=", ".join(t.name for t in b.tags.tag if t.name != "2lux")
+ # grab the photo (local copies are good, should I ever change bookmark services)
+ local_image_url = "%s/%s.jpg" %(safestr(datetime.datetime.today().strftime("%b").lower()), safestr(b.id))
+ f = copy_file(safestr(b.screenshot.PCDATA), safestr(b.id))
+ # set the privacy flag (default to false to be on the safe side)
+ public = 0
+ if safestr(b.private) == 'false': public=1
+ # Create and save a new link obj
+ l = Link.objects.create(
+ title = safestr(b.title.PCDATA),
+ magnolia_id = safestr(b.id),
+ url = safestr(b.url.PCDATA),
+ description = unquotehtml(safestr(b.description.PCDATA)),
+ screen_url = local_image_url,
+ rating = safestr(b.rating),
+ pub_date = datetime.datetime(*(time.strptime(str(b.created[:-6]), '%Y-%m-%dT%H:%M:%S')[0:6])),
+ status = public,
+ enable_comments = True,
+ tags=", ".join(t.name for t in b.tags.tag if t.name != "2lux")
+ )
+ email_link(l)
+ send_to_delicious(l)
+ if (dupe):
+ break
+ """
+
+
+def email_link(link):
+ """
+ Sends an imported link to Gmail (never hurts to have backups)
+ """
+ subject = link.title
+ body = "%s\n\n%s\n\n\nvisit site:%s\non ma.gnolia: http://ma.gnolia.com/people/luxagraf/bookmarks/%s\n\non luxagraf: http://luxagraf.net/link/%s/" %(link.title, link.description, link.url, link.magnolia_id, link.id)
+ msg = EmailMessage(subject, striptags(body), 'sng@luxagraf.net', ['luxagraf@gmail.com'])
+ msg.send()
+
+def send_to_delicious(link):
+ del_tags = ''
+ tags = link.tags.split(',')
+ for tag in tags:
+ del_tags += tag.strip().replace(' ','_')+' '
+ print del_tags
+ delicious.add('luxagraf', 'translinguis#', link.url, link.title, tags = del_tags, extended = link.description, dt =safestr(link.pub_date), replace="no")
+
+def copy_file(url, id):
+ g = URLGrabber()
+ filename="/home2/luxagraf/webapps/images/magnolia_thumbs/%s/%s.jpg" %(datetime.datetime.today().strftime("%b").lower(), id)
+ local_filename = g.urlgrab(url, filename)
+ return id \ No newline at end of file