summaryrefslogtreecommitdiff
path: root/app/syndication
diff options
context:
space:
mode:
Diffstat (limited to 'app/syndication')
-rw-r--r--app/syndication/models.py10
-rw-r--r--app/syndication/syndicators.py29
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