summaryrefslogtreecommitdiff
path: root/app/links/retriever.py
blob: 8916f7c25bd9e93f2302ec32258a26f12b6614d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import datetime
from random import randint

from django.core.exceptions import ObjectDoesNotExist
from django.template.defaultfilters import striptags
from django.core.mail import EmailMessage
from django.conf import settings

from links.models import Link

import requests
import json


def sync_pinboard_links():
    PB_URL = "https://api.pinboard.in/v1/posts/all?results=70&format=json"
    r = requests.get(PB_URL, auth=((settings.PIN_USER, settings.PIN_PASS)))
    links = json.loads(r.text)
    for link in links:
        try:
            # check to see if link exists
            row = Link.objects.get(url=link['href'])
            print("already have" + row.title)
        except ObjectDoesNotExist:
            md = get_markdown(link['href'])
            l, created = Link.objects.get_or_create(
                title=link['description'],
                url=link['href'],
                description=link['extended'],
                pub_date=datetime.datetime.strptime(link['time'], "%Y-%m-%dT%H:%M:%SZ"),
                status=0,
                body_markdown=md['markdown']
            )
            if created:
                print(l.title)
                for t in link['tags'].split(" "):
                    l.tags.add(t)
            email_link(l)


def get_markdown(source):
    url = "http://heckyesmarkdown.com/go/?read=1&preview=0&showframe=0&output=json&u=%s" % (source)
    r = requests.get(url, timeout=15.001)
    data = r.json()
    return data


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\n" % (link.title, link.description, link.url)
    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 random_link():
    total = Link.objects.all().count()
    pk = randint(1, total)
    try:
        link = Link.objects.get(pk=pk)
    except:
        try:
            link = Link.objects.get(pk=pk+1)
        except:
            link = Link.objects.get(pk=pk+91)
    subject = "today's link: %s" % link.title
    body = "%s\n\n%s\n\n\nvisit site:%s\n\n\ndelete link: https://live.luxagraf.net/admin/links/link/%s/" % (link.title, link.description, link.url, link.pk)

    msg = EmailMessage(subject, striptags(body), 'sng@luxagraf.net', ['sng@luxagraf.net'])
    msg.send()