X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/8132fc186eb0c5fd02c86828c3a4735754296d02..5913c54d19b8f6775633176032161d49f9b2f1aa:/src/cover/management/commands/refresh_covers.py diff --git a/src/cover/management/commands/refresh_covers.py b/src/cover/management/commands/refresh_covers.py new file mode 100644 index 00000000..cc0ef31c --- /dev/null +++ b/src/cover/management/commands/refresh_covers.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# +# This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later. +# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. +# +import urllib2 as urllib +from optparse import make_option + +from django.core.files.base import ContentFile +from django.core.management import BaseCommand + +from cover.models import Image +from cover.utils import get_flickr_data, URLOpener, FlickrError + + +class Command(BaseCommand): + option_list = BaseCommand.option_list + ( + make_option('--from', dest='from_id', type=int, default=1), + ) + + def handle(self, *args, **options): + from_id = options.get('from_id', 1) + images = Image.objects.filter(id__gte=from_id).exclude(book=None).order_by('id') + images = images.filter(source_url__contains='flickr.com').exclude(download_url__endswith='_o.jpg') + for image in images: + print image.id + try: + flickr_data = get_flickr_data(image.source_url) + print flickr_data + except FlickrError as e: + print 'Flickr analysis failed: %s' % e + else: + flickr_url = flickr_data['download_url'] + if flickr_url != image.download_url: + same_url = Image.objects.filter(download_url=flickr_url) + if same_url: + print 'Download url already present in image %s' % same_url.get().id + continue + try: + t = URLOpener().open(flickr_url).read() + except urllib.URLError: + print 'Broken download url' + except IOError: + print 'Connection failed' + else: + image.download_url = flickr_url + image.file.save(image.file.name, ContentFile(t)) + image.save()