1 # -*- coding: utf-8 -*-
3 # This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
4 # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
6 import urllib2 as urllib
7 from optparse import make_option
9 from django.core.files.base import ContentFile
10 from django.core.management import BaseCommand
12 from cover.models import Image
13 from cover.utils import get_flickr_data, URLOpener, FlickrError
16 class Command(BaseCommand):
17 option_list = BaseCommand.option_list + (
18 make_option('--from', dest='from_id', type=int, default=1),
21 def handle(self, *args, **options):
22 from_id = options.get('from_id', 1)
23 images = Image.objects.filter(id__gte=from_id).exclude(book=None).order_by('id')
24 images = images.filter(source_url__contains='flickr.com').exclude(download_url__endswith='_o.jpg')
28 flickr_data = get_flickr_data(image.source_url)
30 except FlickrError as e:
31 print 'Flickr analysis failed: %s' % e
33 flickr_url = flickr_data['download_url']
34 if flickr_url != image.download_url:
35 same_url = Image.objects.filter(download_url=flickr_url)
37 print 'Download url already present in image %s' % same_url.get().id
40 t = URLOpener().open(flickr_url).read()
41 except urllib.URLError:
42 print 'Broken download url'
44 print 'Connection failed'
46 image.download_url = flickr_url
47 image.file.save(image.file.name, ContentFile(t))