diff options
Diffstat (limited to 'app/syndication')
-rw-r--r-- | app/syndication/models.py | 10 | ||||
-rw-r--r-- | app/syndication/syndicators.py | 29 |
2 files changed, 37 insertions, 2 deletions
diff --git a/app/syndication/models.py b/app/syndication/models.py index 7ddb941..6e4fd1c 100644 --- a/app/syndication/models.py +++ b/app/syndication/models.py @@ -4,7 +4,7 @@ from django.contrib.contenttypes.fields import GenericForeignKey from django.db.models.signals import post_save from django.dispatch import receiver -from .syndicators import post_to_medium, build_facebook_feed +from .syndicators import post_to_medium, build_facebook_feed, post_photo_to_twitter, post_photo_to_flickr class Syndicate(models.Model): @@ -43,9 +43,15 @@ def post_save_events(sender, update_fields, created, instance, **kwargs): if item.name == "Medium": instance.rel_link = post_to_medium(instance.content_object) instance.status = 2 - if item.name == "Facebook": + if item.name == "Facebook Instant Articles": build_facebook_feed() instance.status = 2 + if item.name == "Twitter": + if instance.content_type.name == "LuxPhoto": + post_photo_to_twitter(instance.content_object) + if item.name == "Flickr": + if instance.content_type.name == "LuxPhoto": + post_photo_to_flickr(instance.content_object) post_save.disconnect(post_save_events, sender=SyndicatedItem) instance.save() post_save.connect(post_save_events, sender=SyndicatedItem) diff --git a/app/syndication/syndicators.py b/app/syndication/syndicators.py index 2e11c7d..4455815 100644 --- a/app/syndication/syndicators.py +++ b/app/syndication/syndicators.py @@ -1,8 +1,10 @@ from django.conf import settings from django.test.client import Client +from twython import Twython from bs4 import BeautifulSoup from medium import Client as MediumClient +import flickrapi def absolute_urls_for_syndication(s): @@ -39,3 +41,30 @@ def build_facebook_feed(): f = open("%siafeed.xml" % settings.FLATFILES_ROOT, 'wb') f.write(response.content) f.close() + + +def post_photo_to_twitter(photo): + p = open(photo.get_image_path_by_size("2280"), 'rb') + t = Twython(settings.TWITTER_API_KEY, settings.TWITTER_API_SECRET, settings.TWITTER_ACCESS_TOKEN, settings.TWITTER_ACCESS_SECRET) + try: + geo = t.reverse_geocode(lat=photo.latitude, lon=photo.longitude, accuracy=1500, granularity="city") + geo_id = geo['result']['places'][0]['id'] + except: + pass + response = t.upload_media(media=p) + try: + status = t.update_status(status=photo.caption, media_ids=[response['media_id']], place_id=geo_id) + except: + status = t.update_status(status=photo.caption, media_ids=[response['media_id']]) + print(status['entities']['media'][0]['expanded_url']) + + +def post_photo_to_flickr(photo): + flickr = flickrapi.FlickrAPI(settings.FLICKR_API_KEY, settings.FLICKR_API_SECRET) + sent = flickr.upload(filename=photo.get_image_path_by_size("original"), title=photo.title, description=photo.caption) + photo_id = sent.find('photoid').text + photo.flickr_id = photo_id + try: + flickr.photos.geo.setLocation(photo_id=photo_id, lat=photo.latitude, lon=photo.longitude, accuracy=12) + except: + pass |