|
import streamlit as st |
|
import requests |
|
from src.github_analysis import analyze_github_repo |
|
from src.url_fetcher import fetch_url_title |
|
from src.fine_tune_helpers import fine_tune_model |
|
|
|
|
|
st.title("OSINT Tool 🏢") |
|
st.markdown(""" |
|
This tool performs **Open Source Intelligence (OSINT)** analysis on GitHub repositories and fetches titles from URLs. |
|
It also allows uploading datasets (CSV format) for fine-tuning models like **DistilBERT**. |
|
""") |
|
|
|
|
|
st.sidebar.title("Navigation") |
|
app_mode = st.sidebar.radio("Choose the mode", ["GitHub Repository Analysis", "URL Title Fetcher", "Dataset Upload & Fine-Tuning"]) |
|
|
|
|
|
if app_mode == "GitHub Repository Analysis": |
|
st.header("GitHub Repository Analysis") |
|
repo_owner = st.text_input("Enter GitHub Repository Owner", "huggingface") |
|
repo_name = st.text_input("Enter GitHub Repository Name", "transformers") |
|
|
|
if st.button("Analyze Repository"): |
|
if repo_owner and repo_name: |
|
repo_data = analyze_github_repo(repo_owner, repo_name) |
|
if repo_data: |
|
st.subheader("Repository Details") |
|
for key, value in repo_data.items(): |
|
st.write(f"**{key}**: {value}") |
|
else: |
|
st.error("Failed to retrieve repository details.") |
|
else: |
|
st.warning("Please enter both repository owner and name.") |
|
|
|
|
|
elif app_mode == "URL Title Fetcher": |
|
st.header("URL Title Fetcher") |
|
url = st.text_input("Enter URL", "https://www.huggingface.co") |
|
|
|
if st.button("Fetch Title"): |
|
if url: |
|
title = fetch_url_title(url) |
|
if title: |
|
st.write(f"**Page Title**: {title}") |
|
else: |
|
st.error("Failed to retrieve the page title.") |
|
else: |
|
st.warning("Please enter a valid URL.") |
|
|
|
|
|
elif app_mode == "Dataset Upload & Fine-Tuning": |
|
st.header("Dataset Upload & Fine-Tuning") |
|
|
|
uploaded_file = st.file_uploader("Upload a CSV file for fine-tuning", type="csv") |
|
|
|
if uploaded_file is not None: |
|
fine_tune_model(uploaded_file) |
|
|