Skip to content

Instantly share code, notes, and snippets.

@Cdaprod
Created September 7, 2023 18:59
Show Gist options
  • Select an option

  • Save Cdaprod/4975bdbf97278e56deb0c3a8866137a8 to your computer and use it in GitHub Desktop.

Select an option

Save Cdaprod/4975bdbf97278e56deb0c3a8866137a8 to your computer and use it in GitHub Desktop.
A Flask App for posting to social media platforms via POST request
from flask import Flask, jsonify
import logging
from airtable import Airtable
from twitter_api import TwitterAPI # This is a placeholder, replace it with the actual Twitter API library you are using
from linkedin_api import LinkedinAPI # This is a placeholder, replace it with the actual Linkedin API library you are using
from facebook_api import FacebookAPI # This is a placeholder, replace it with the actual Facebook API library you are using
app = Flask(__name__)
# Configure logging
logging.basicConfig(level=logging.INFO)
# Initialize Airtable
airtable = Airtable(base_key='base_key', table_name='table_name', api_key='api_key')
# These posts would come from your CMS
posts = [
{
'id': '1234',
'content-title': 'A Great Post',
'github-repo': 'username/repo',
'main-article': 'Lorem ipsum...',
'linkedin-caption': 'Hello, LinkedIn!',
'twitter-caption': 'Hello, Twitter!',
'facebook-caption': 'Hello, Facebook!',
'image-url': 'https://example.com/image.png',
},
# Add more posts...
]
@app.route('/post', methods=['GET'])
def post():
for entry in posts:
entry_id = entry['id']
content_title = entry['content-title']
github_repo = entry['github-repo']
main_article = entry['main-article']
linkedin_caption = entry['linkedin-caption']
twitter_caption = entry['twitter-caption']
facebook_caption = entry['facebook-caption']
image_url = entry['image-url']
# Create the data to post and to store in Airtable
data = {'Content Title': content_title,
'Github Repo': github_repo,
'Main Article': main_article,
'Image URL': image_url}
# Depending on platform, we call different posting function
try:
TwitterAPI.post(twitter_caption, image_url) # Placeholder method call, replace with actual API call
data['Twitter Post'] = twitter_caption
LinkedinAPI.post(linkedin_caption, image_url) # Placeholder method call, replace with actual API call
data['Linkedin Post'] = linkedin_caption
FacebookAPI.post(facebook_caption, image_url) # Placeholder method call, replace with actual API call
data['Facebook Post'] = facebook_caption
# Insert the data into Airtable
airtable.insert(data)
logging.info(f'Successfully posted content object {entry_id}')
except Exception as e:
logging.error(f'Error posting content object {entry_id}: {e}')
return jsonify({'status': 'finished'}), 200
if __name__ == '__main__':
app.run(debug=True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment