1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
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 = '<p><i>This was originally posted <a href="https://luxagraf.net%s" rel="canonical">on my own site</a>.</i></p>' % 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)
authorize_url = flickr.auth_url(perms='write')
flickr.get_access_token(settings.FLICKR_VERIFIER)
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
|