No images in this repository’s iceberg at this time
Download raw (1.9 KB)
import datetime import pytumblr import time from django.core.management.base import BaseCommand from django.conf import settings from twitblr.models import Tumblr, Photo, Tag def tumblr_loop(client, before=None, after=0): posts = client.tagged("anna kavan", before=before, limit=20) recurse = True for post in posts: date = post.get("timestamp") if date <= after: recurse = False break initial = { "date": datetime.datetime.fromtimestamp(post.get("timestamp")), "body": post.get("body", ""), "text": post.get("text", ""), "caption": post.get("caption", ""), "url": post.get("post_url"), "blog_name": post.get("blog_name") } obj = Tumblr.objects.create(**initial) for photo in post.get("photos", []): original_photo = photo["original_size"] initial = { "caption": photo.get("caption", ""), "height": original_photo["height"], "width": original_photo["width"], "url": original_photo["url"] } p = Photo.objects.create(**initial) obj.photos.add(p) for tag in post.get("tags", []): t, created = Tag.objects.get_or_create(name=tag) obj.tags.add(t) if recurse: timestamp = posts[-1]["timestamp"] tumblr_loop(client, before=timestamp, after=after) class Command(BaseCommand): help = 'Indexes Tumblr posts' def handle(self, *args, **options): try: latest_tumblr = Tumblr.objects.order_by('-date')[:1].get() timestamp = int(time.mktime(latest_tumblr.date.timetuple())) except: timestamp = 0 client = pytumblr.TumblrRestClient(*settings.TUMBLR_KEYS) tumblr_loop(client, after=timestamp)