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 @app.route('/') def index(): return render_template('index.html') @app.route('/upload', methods=['POST']) 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)