Spaces:
Runtime error
Runtime error
from flask import Flask, render_template, request, jsonify | |
import requests | |
import base64 | |
import os | |
app = Flask(__name__) | |
# Instagram Graph API settings | |
ACCESS_TOKEN = "EACN93e8btl8BOzqCVifPdgeg6U8ikAgJZACLFU0mrBZBuwT9iF21nFOLLF8RnYfbHgaUuLkoddZC16pe9hkntYmHfnMLADH730oHfmQ0DjKTX4cAC8e7p6UpqdfHADjeFZCkRbXfMTRZCzv7wMSqSpeEBGxOd0PREr6qsenXc0IZATCw01QNQZAff2hhlBV4oP1" | |
INSTAGRAM_ACCOUNT_ID = "YOUR_INSTAGRAM_ACCOUNT_ID" # Replace with your Instagram Business Account ID | |
def index(): | |
return render_template('index.html') | |
def upload_image(): | |
try: | |
# Get the base64 image data from the frontend | |
image_data = request.form['image'] | |
image_data = image_data.split(',')[1] # Remove the data:image/jpeg;base64, prefix | |
image_binary = base64.b64decode(image_data) | |
# Save the image temporarily | |
temp_image_path = 'temp_image.jpg' | |
with open(temp_image_path, 'wb') as f: | |
f.write(image_binary) | |
# Step 1: Upload image to Instagram as a media object | |
media_url = f"https://graph.facebook.com/v20.0/{INSTAGRAM_ACCOUNT_ID}/media" | |
media_payload = { | |
'image_url': 'https://your-image-hosting-url/temp_image.jpg', # You need to host the image publicly | |
'caption': 'Uploaded via Camera App #HuggingFace #Instagram', | |
'access_token': ACCESS_TOKEN | |
} | |
# For Hugging Face, you may need to upload the image to a temporary public URL | |
# For simplicity, assuming the image is accessible; in production, use a service like S3 or a temporary file server | |
response = requests.post(media_url, data=media_payload) | |
response_data = response.json() | |
if 'id' not in response_data: | |
return jsonify({'error': 'Failed to create media object', 'details': response_data}), 500 | |
media_id = response_data['id'] | |
# Step 2: Publish the media object | |
publish_url = f"https://graph.facebook.com/v20.0/{INSTAGRAM_ACCOUNT_ID}/media_publish" | |
publish_payload = { | |
'creation_id': media_id, | |
'access_token': ACCESS_TOKEN | |
} | |
publish_response = requests.post(publish_url, data=publish_payload) | |
publish_data = publish_response.json() | |
# Clean up temporary file | |
if os.path.exists(temp_image_path): | |
os.remove(temp_image_path) | |
if 'id' in publish_data: | |
return jsonify({'message': 'Image uploaded to Instagram successfully!'}) | |
else: | |
return jsonify({'error': 'Failed to publish media', 'details': publish_data}), 500 | |
except Exception as e: | |
return jsonify({'error': str(e)}), 500 | |
if __name__ == '__main__': | |
app.run(debug=True) |