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) |