summaryrefslogtreecommitdiff
path: root/apps/links
diff options
context:
space:
mode:
Diffstat (limited to 'apps/links')
-rw-r--r--apps/links/admin.py2
-rw-r--r--apps/links/models.py15
-rw-r--r--apps/links/retriever.py120
3 files changed, 41 insertions, 96 deletions
diff --git a/apps/links/admin.py b/apps/links/admin.py
index acd22df..2c73c76 100644
--- a/apps/links/admin.py
+++ b/apps/links/admin.py
@@ -8,7 +8,7 @@ class LinkAdmin(admin.ModelAdmin):
list_filter = ['rating', 'status']
fieldsets = (
(None, {'fields': ('title','url','description','rating')}),
- ('Details', {'fields': ('screen_url', 'pub_date', 'magnolia_id', 'tags', 'status'), 'classes': 'collapse'}),
+ ('Details', {'fields': ('screen_url', 'pub_date', 'link_id', 'tags', 'status'), 'classes': 'collapse'}),
)
admin.site.register(Link, LinkAdmin) \ No newline at end of file
diff --git a/apps/links/models.py b/apps/links/models.py
index e8fee43..09acc1c 100644
--- a/apps/links/models.py
+++ b/apps/links/models.py
@@ -4,9 +4,7 @@ from django.db import models
from django.contrib.syndication.feeds import Feed
from django.contrib.sitemaps import Sitemap
-from tagging.fields import TagField
-from tagging.models import Tag
-
+from taggit.managers import TaggableManager
RATINGS = (
('1', "1 Star"),
@@ -19,20 +17,19 @@ RATINGS = (
DEBUG = 1
class Link(models.Model):
+ link_id = models.CharField(max_length=60, blank=True, null=True)
title = models.CharField(max_length=400)
- magnolia_id = models.CharField(max_length=60, blank=True, null=True)
url = models.CharField(max_length=400)
description = models.TextField(blank=True, null=True)
- screen_url = models.CharField(max_length=400, blank=True)
- rating = models.CharField(max_length=1, choices=RATINGS)
+ screen_url = models.CharField(max_length=400, blank=True, null=True)
+ rating = models.CharField(max_length=1, choices=RATINGS, null=True)
pub_date = models.DateTimeField()
- enable_comments = models.NullBooleanField(default=False)
PUB_STATUS = (
(0, 'Private'),
(1, 'Public'),
)
status = models.IntegerField(choices=PUB_STATUS, default=0)
- tags = TagField()
+ tags = TaggableManager(blank=True)
class Meta:
ordering = ['-pub_date']
@@ -52,8 +49,6 @@ class Link(models.Model):
def get_next_published(self):
return self.get_next_by_pub_date(status__exact=1)
- def get_tags(self):
- return Tag.objects.get_for_object(self)
def get_thumbnail_url(self):
return "http://images.luxagraf.net/magnolia_thumbs/%s" %(self.screen_url)
diff --git a/apps/links/retriever.py b/apps/links/retriever.py
index 35bd41a..f876405 100644
--- a/apps/links/retriever.py
+++ b/apps/links/retriever.py
@@ -1,75 +1,46 @@
-import time, datetime, urllib
+import datetime
from django.core.exceptions import ObjectDoesNotExist
-from django.template.defaultfilters import slugify,striptags
+from django.template.defaultfilters import striptags
from django.core.mail import EmailMessage
-from django.utils.encoding import smart_unicode
from django.conf import settings
from utils.strutils import safestr,unquotehtml
-from utils.APIClients import MagnoliaClient
-from utils import pydelicious as delicious
-from utils import markdown2 as markdown
-
from links.models import Link
+from utils import pinboard
-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)
+def sync_pinboard_links():
+ """
+ sync bookmarks from my pinboard account
+
+ dependancies: python-pinboard https://github.com/mgan59/python-pinboard/
+ """
+ p = pinboard.open(settings.PIN_USER, settings.PIN_PASS)
dupe = False
- for post in data.findall('bookmarks/bookmark'):
- taglist = []
- info = dict((k, smart_unicode(post.get(k))) for k in post.keys())
+ links = p.posts(count=30)
+ for link in links:
try:
- row = Link.objects.get(magnolia_id=safestr(info['id']))
- # If the row exists already, set the dupe flag
- dupe = True
+ #check to see if link exists
+ row = Link.objects.get(link_id=safestr(link['hash']))
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")
+ title = link['description'],
+ link_id = safestr(link['hash']),
+ url = safestr(link['href']),
+ description = safestr(link['extended']),
+ rating = "3",
+ pub_date = datetime.datetime.strptime(link['time'], "%Y-%m-%dT%H:%M:%SZ"),
+ status = 0
)
-
+ print l.title
+ if created:
+ print l.title
+ for t in link['tags']:
+ l.tags.add(t)
email_link(l)
- send_to_delicious(l)
- if l.status == 1:
- post_to_tumblr(l)
- send_to_deliciousfb(l)
- if(dupe):
- break
-
+
+'''
def sync_delicious_links(*args, **kwargs):
b = delicious.get_all(settings.DELICIOUS_USER, settings.DELICIOUS_PASS)
dupe = False
@@ -116,8 +87,7 @@ def sync_delicious_links(*args, **kwargs):
break
-
-
+'''
def email_link(link):
"""
@@ -125,9 +95,12 @@ def email_link(link):
"""
subject = link.title
body = "%s\n\n%s\n\n\nvisit site:%s\n" %(link.title, link.description, link.url)
- msg = EmailMessage(subject, striptags(body), 'sng@luxagraf.net', ['luxagraf@gmail.com'])
+ msg = EmailMessage(subject, striptags(body), 'sng@luxagraf.net', ['luxagraf+links@gmail.com'])
msg.send()
-
+ msg = EmailMessage(subject, striptags(body), 'sng@luxagraf.net', ['sng+links@luxagraf.net'])
+ msg.send()
+
+'''
def send_to_delicious(link):
del_tags = ''
tags = link.tags.split(',')
@@ -135,27 +108,4 @@ def send_to_delicious(link):
del_tags += tag.strip().replace(' ','_')+' '
delicious.add(settings.DELICIOUS_USER, settings.DELICIOUS_PASS, link.url, link.title, tags = del_tags, extended = striptags(link.description), dt =safestr(link.pub_date), replace="no")
-def copy_file(url, id):
- filename="/home/luxagraf/webapps/static/images/magnolia_thumbs/%s/%s.jpg" %(datetime.datetime.today().strftime("%b").lower(), id)
- urllib.urlretrieve(url, filename)
- return id
-
-def post_to_tumblr(link):
- from links import tumblr
- blog = settings.TUMBLR_URL
- user= settings.TUMBLR_USER
- password = settings.TUMBLR_PASSWORD
- api = tumblr.Api(blog,user,password)
- post = api.write_link(link.url,name=link.title,description=link.description,date=safestr(link.pub_date))
-
-def send_to_deliciousfb(link):
- """Wanted my links to go to Facebook and since the Facebook API is needlessly complex
- I just created a second delicious account and added the feed via facebook"""
- del_tags = ''
- tags = link.tags.split(',')
- for tag in tags:
- del_tags += tag.strip().replace(' ','_')+' '
- desc = link.description.replace('<blockquote>','\n&#8220;')
- desc = desc.replace('</blockquote>','&#8221;\n')
- desc = striptags(desc)
- delicious.add(settings.DELTOFACEUSER, settings.DELTOFACEPASS, link.url, link.title, tags = del_tags, extended = desc, dt =safestr(link.pub_date), replace="no")
+''' \ No newline at end of file