A desktop GUI application to fetch, view, and analyze video transcriptions and comments from YouTube, without logging in and not using any API keys.
Built using technologies:
- π Overview
- πΈ Screenshots
- π₯ Features
- π Project Structure
- π Getting Started
- π» Roadmap
- π€ Contributing
- π License
- β¨ Acknowledgments
StaTube is a desktop GUI application built with Python and PySide6. It allows users to fetch, view, and analyze video transcriptions and comments from any YouTube channel without loggining in and not using any API keys.
The application utilizes a local architecture where data is scraped from YouTube and persisted into a local SQLite database (defined in Data/schema.sql). This allows for batch operations, offline viewing of fetched transcripts, and data storing capabilities.
- π No Credentials Needed: Use the application immediatelyβno registration, login, or API key is required.
- π― Channel Scraping: Fetch the list of videos from any specific YouTube channel.
- π Transcription Retrieval: Retrieve and display video transcriptions (if available).
- π¬ Comment Analysis: Fetch and display user comments for specific videos.
- π§° Modern GUI: A responsive desktop interface built with PySide6.
- π Batch Operations: Support for processing multiple videos.
- π Analysis Export: Export transcript and comment analysis image.
- πΎ Local Database: All data is structured and stored locally using SQLite.
βββ StaTube/
βββ .github
β βββ dependabot.yml
β βββ workflows
β βββ build-release.yml
β βββ python-package.yml
βββ Analysis
β βββ __init__.py
β βββ SentimentAnalysis.py
β βββ WordCloud.py
βββ assets
β βββ ER_Diagram.png
β βββ gif
β βββ icon
β βββ StaTube .png
β βββ StaTube_logo.png
β βββ wireframe.excalidraw
βββ Backend
β βββ __init__.py
β βββ ScrapeChannel.py
β βββ ScrapeComments.py
β βββ ScrapeTranscription.py
β βββ ScrapeVideo.py
βββ build
β βββ installer
β βββ installer
β βββ StaTube.iss
β βββ extract_metadata.py
βββ Data
β βββ __init__.py
β βββ DatabaseManager.py
β βββ schema.sql
βββ LICENSE
βββ main.py
βββ requirements.txt
βββ UI
β βββ __init__.py
β βββ CommentPage.py
β βββ Homepage.py
β βββ MainWindow.py
β βββ SettingsPage.py
β βββ SplashScreen.py
β βββ Style.qss
β βββ TranscriptPage.py
β βββ VideoPage.py
βββ utils
β βββ __init__.py
β βββ AppState.py
β βββ CheckInternet.py
β βββ Config.py
β βββ Logger.py
β βββ Proxy.py
β βββ ProxyThread.py
βββ widgets
βββ __init__.py
βββ DownloadableImage.pySTATUBE/
__root__
β¦Ώ __root__
File Name Summary LICENSE MIT License file for the project. main.py Entry point for the StaTube application. Initializes the PySide6 application loop. requirements.txt List of Python dependencies required to run the application (e.g., PySide6, aiohttp).
.github
β¦Ώ .github
File Name Summary dependabot.yml Configuration for Dependabot dependency updates. workflows
β¦Ώ .github.workflows
File Name Summary build-release.yml CI/CD workflow for creating the Windows executable and Inno Setup installer. python-package.yml CI/CD workflow for testing and packaging the Python module.
Analysis
β¦Ώ Analysis
File Name Summary __init__.py Marks the directory as a Python package. SentimentAnalysis.py Module for performing sentiment analysis on fetched comments. WordCloud.py Module for generating visual word clouds from text data (transcripts/comments).
assets
β¦Ώ assetsDirectory containing project images, diagrams (
ER_Diagram.png,wireframe.excalidraw), icons, GIFs, and the application logo (StaTube_logo.png).
Backend
β¦Ώ Backend
File Name Summary __init__.py Marks the directory as a Python package. ScrapeChannel.py Logic for fetching video lists from a YouTube Channel. ScrapeComments.py Logic for fetching user comments from specific videos. ScrapeTranscription.py Logic for retrieving video transcripts. ScrapeVideo.py Core logic for general video metadata scraping.
build
β¦Ώ buildinstaller
β¦Ώ build.installer
File Name Summary extract_metadata.py Helper script to extract version and metadata for the installer generation. StaTube.iss Inno Setup script used to generate the Windows Installer (.exe) for end-users.
Data
β¦Ώ Data
File Name Summary __init__.py Marks the directory as a Python package. DatabaseManager.py Handles interactions and operations with the local SQLite database. schema.sql Defines the SQL schema for the local SQLite database.
UI
β¦Ώ UI
File Name Summary __init__.py Marks the directory as a Python package. CommentPage.py UI widget for displaying and interacting with video comments. Homepage.py The main landing page or dashboard UI component. MainWindow.py The main window structure and application frame. SettingsPage.py UI widget for configuring application settings (e.g., proxy). SplashScreen.py UI component shown during application startup/loading. Style.qss Qt Stylesheet file for custom application look and feel. TranscriptPage.py UI widget for viewing and analyzing video transcripts. VideoPage.py UI component for displaying video list and metadata.
utils
β¦Ώ utils
File Name Summary __init__.py Marks the directory as a Python package. AppState.py Manages and holds the global state of the application. CheckInternet.py Utility function to verify network connectivity. Config.py Handles application configuration and settings management. Logger.py Utility for application logging and error handling. Proxy.py Module for managing proxy connection details. ProxyThread.py Threading logic for asynchronous proxy operations.
widgets
β¦Ώ widgets
File Name Summary __init__.py Marks the directory as a Python package. DownloadableImage.py Custom widget for displaying images that can be downloaded.
This project requires the following dependencies:
- Programming Language: Python 3.9 or later
- Package Manager: Pip
Windows:
Go to the Releases page and download the installer or portable version.
Linux/macOS:
Build StaTube from the source and install dependencies:
-
Clone the repository:
git clone https://github.com/Sakth1/StaTube.git
-
Navigate to the project directory:
cd StaTube -
Install UV package manager:
pip install uv
-
Create a virtual environment:
uv venv
with specific python version
uv venv -python 3.11
-
Activate the virtual environment:
Windows:
.venv/Scripts/activate
Linux/macOS:
source venv/bin/activate -
Install dependencies:
uv pip install -r requirements.txt
Run the project with:
python main.py- Search for the channel you want to do comment/transcript analysis.
- Select the channel.
- Select videos from the channel and scrape transcripts or comment.
- Analysis will be done and you will be able to visualize and download the analysis.
The project includes an automated workflow to create a portable executable and Windows Installer (.exe).
- Workflow: The
.github/workflows/build-release.ymlfile handles the CI/CD pipeline. - Inno Setup: The installer is generated using Inno Setup, utilizing the configuration script located at
build/installer/StaTube.iss. - Metadata:
build/installer/extract_metadata.pyis used during the build process to ensure the installer is versioned correctly.
To generate the installer locally, you must have Inno Setup installed and compile the StaTube.iss script after generating the executable.
- Export analysis: Export and save analysis result image to a file.
- Theming: Light/Dark theme support.
- In-App Help: Built-in documentation and help guide.
- Proxy Settings: Ability to configure network proxy settings.
- Docker Version: A Dockerized version of the application is planned.
- π¬ Join the Discussions: Share your insights, provide feedback, or ask questions.
- π Report Issues: Submit bugs found or log feature requests for the
StaTubeproject. - π‘ Submit Pull Requests: Review open PRs, and submit your own PRs.
Contributing Guidelines
- Fork the Repository: Start by forking the project repository to your account.
- Clone Locally: Clone the forked repository to your local machine.
git clone https://github.com/Sakth1/StaTube.git
- Create a New Branch: Always work on a new branch, giving it a descriptive name.
git checkout -b new-feature-x
- Make Your Changes: Develop and test your changes locally.
- Commit Your Changes: Commit with a clear message describing your updates.
git commit -m 'Implemented new feature x.' - Push to Remote: Push the changes to your forked repository.
git push origin new-feature-x
- Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
- HAVE FUN! π
StaTube is protected under the MIT License because sharing is caring β€οΈ. For more details, refer to the LICENSE file.
- Built using the PySide6 framework.
- YouTube data scraping powered by:
- Compiled into windows binary using:
YOU ALL ARE OFFICIALLY GREAT!