# import streamlit as st # import numpy as np # import cv2 # import tempfile # import os # # ---- Page Configuration ---- # st.set_page_config(page_title="Fake & Deepfake Detection", layout="wide") # st.title("📰 Fake News & Deepfake Detection Tool") # st.write("🚀 Detect Fake News, Deepfake Images, and Videos using AI") # # ---- Fake News Detection Section ---- # st.subheader("📝 Fake News Detection") # news_input = st.text_area("Enter News Text:", "Type here...") # if st.button("Check News"): # st.write("🔍 Processing...") # # Fake news detection logic (Placeholder) # st.success("✅ Result: This news is FAKE.") # Replace with ML Model # # ---- Deepfake Image Detection Section ---- # st.subheader("📸 Deepfake Image Detection") # uploaded_image = st.file_uploader("Upload an Image", type=["jpg", "png", "jpeg"]) # if uploaded_image is not None: # st.image(uploaded_image, caption="Uploaded Image", use_column_width=True) # if st.button("Analyze Image"): # st.write("🔍 Processing...") # # Deepfake detection logic (Placeholder) # st.error("⚠️ Result: This image is a Deepfake.") # Replace with model # # ---- Deepfake Video Detection Section ---- # st.subheader("🎥 Deepfake Video Detection") # uploaded_video = st.file_uploader("Upload a Video", type=["mp4", "avi", "mov"]) # if uploaded_video is not None: # st.video(uploaded_video) # if st.button("Analyze Video"): # st.write("🔍 Processing...") # # Deepfake video detection logic (Placeholder) # st.warning("⚠️ Result: This video contains Deepfake elements.") # Replace with model # st.markdown("🔹 **Developed for Fake News & Deepfake Detection Hackathon**") import gradio as gr import cv2 import numpy as np # ✅ Image Size Limit (MB) MAX_IMAGE_SIZE_MB = 5 # 5MB se zyada allow nahi karega # ✅ Video Size Limit (MB) MAX_VIDEO_SIZE_MB = 20 # 20MB se zyada allow nahi karega # ✅ Image Processing Function def process_image(image): if image is None: return "❌ No image uploaded!" # ✅ Image Resize (Optional: 512x512) image = cv2.resize(image, (512, 512)) return image # ✅ Video Processing Function def process_video(video_path): if video_path is None: return "❌ No video uploaded!" # ✅ Video Size Check import os file_size_mb = os.path.getsize(video_path) / (1024 * 1024) if file_size_mb > MAX_VIDEO_SIZE_MB: return f"❌ Video is too large! (Size: {file_size_mb:.2f}MB) - Limit: {MAX_VIDEO_SIZE_MB}MB" return f"✅ Video uploaded successfully! (Size: {file_size_mb:.2f}MB)" # ✅ Gradio Interface with gr.Blocks() as app: gr.Markdown("## 🕵️‍♂️ Fake News & Deepfake Detection Tool") with gr.Row(): img_input = gr.Image(type="numpy", label="🖼 Upload Image (Max: 5MB)") img_output = gr.Image(label="📌 Processed Image") img_button = gr.Button("🔍 Detect Image") img_button.click(process_image, inputs=img_input, outputs=img_output) with gr.Row(): video_input = gr.File(label="🎥 Upload Video (Max: 20MB)", file_types=[".mp4"]) video_output = gr.Textbox(label="📌 Video Status") video_button = gr.Button("🔍 Detect Video") video_button.click(process_video, inputs=video_input, outputs=video_output) app.launch()