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): soup = BeautifulSoup(s, "lxml") for a in soup.find_all('a'): if a['href'][:1] == "/": a['href'] = "https://luxagraf.net%s" % a['href'] return soup def post_to_medium(item): client = MediumClient(application_id=settings.MEDIUM_CLIENT_ID, application_secret=settings.MEDIUM_CLIENT_SECRET) client.access_token = settings.MEDIUM_INT_TOKEN user = client.get_current_user() head = '
This was originally posted on my own site.
' % item.get_absolute_url() body = "%s %s" % (head, absolute_urls_for_syndication(item.body_html)) # Create a post. post = client.create_post( user_id=user["id"], title=item.title, content=body, content_format="html", publish_status="public", canonical_url="https://luxagraf.net%s" % item.get_absolute_url(), license="all-rights-reserved" ) return post["url"] def build_facebook_feed(): print("+++++++++++++building+++++++++++") c = Client() response = c.get('/iafeed.xml', HTTP_HOST='127.0.0.1') 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') print(p) 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) print(response) if photo.caption: status = photo.caption else: status = photo.title try: status = t.update_status(status=status, media_ids=[response['media_id']], place_id=geo_id) except: status = t.update_status(status=status, 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