diff options
Diffstat (limited to 'apps/links/utils.py')
-rw-r--r-- | apps/links/utils.py | 133 |
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 |