Skip to content

jspro0109/UploadVerse

Β 
Β 

Repository files navigation

UploadVerse

Python License

Multi-platform video publishing automation with smart format detection.

Automatically upload videos to YouTube, TikTok, and Instagram with intelligent routing based on aspect ratio.


πŸš€ Quick Start

# Clone and install
git clone https://github.com/OnlyShoky/UploadVerse.git
cd UploadVerse
python -m venv venv
venv\Scripts\activate  # Windows
source venv/bin/activate  # Linux/Mac

# Upgrade pip
python -m pip install --upgrade pip

# Install
pip install -r requirements.txt
pip install -e .

# Run app 
python .\app.py

# Authenticate YouTube
video-publisher auth youtube

# Upload
# Upload
video-publisher upload video.mp4 --platforms youtube
video-publisher upload video.mp4 --platforms tiktok --metadata metadata.json
video-publisher upload video1.mp4 video2.mp4 --platforms tiktok  # Batch upload

πŸ“‹ Prerequisites

  • Python 3.10+
  • Google Cloud account (for YouTube)
  • Chrome browser (for TikTok/Instagram)

βš™οΈ Configuration

Create .env file:

# YouTube (safe, recommended)
YOUTUBE_CLIENT_SECRETS_FILE=client_secrets.json

# Global Browser Settings
# Set to 'true' to run without a visible browser window (default)
HEADLESS=true

πŸ”‘ Platform Setup

YouTube (Recommended)

TikTok

  • ⚠️ Browser automation (violates TOS)
  • Use test accounts only
  • Setup Guide β†’

Instagram


πŸ’» CLI Usage

Basic Upload

# Upload (auto-detects platform from aspect ratio)
video-publisher upload video.mp4

# Specify platform
video-publisher upload video.mp4 --platforms youtube
video-publisher upload video.mp4 --platforms tiktok

Advanced Features

# With custom thumbnail and metadata
video-publisher upload video.mp4 \
  --platforms tiktok \
  --thumbnail cover.jpg \
  --metadata metadata.json

# Run with visible browser (override default headless)
video-publisher upload video.mp4 --no-headless

Batch Upload & Auto-Discovery

Process multiple videos in a single browser session. Metadata files (.json) and thumbnails (.jpg/.png) are automatically detected if they share the same filename as the video.

Example: 3 Videos with unique metadata & thumbnails Given these files:

  • vids/clip1.mp4, vids/clip1.json, vids/clip1.jpg
  • vids/clip2.mp4, vids/clip2.json (no thumb)
  • vids/clip3.mp4 (no metadata, no thumb)

Run:

# Batch upload using auto-discovery (detects .json and .jpg with same name)
video-publisher upload vids/*.mp4 --platforms tiktok

# Explicit batch upload with mapped metadata and thumbnails
video-publisher upload video1.mp4 video2.mp4 --platforms tiktok \
  --metadata "meta1.json,meta2.json" \
  --thumbnail "thumb1.jpg,thumb2.jpg"

video-publisher upload .\data\videos\112_es_vertical.mp4 .\data\videos\112_es_vertical.mp4 --platforms tiktok --metadata ".\data\videos\112_es_horizontal.json,.\data\videos\112_es_horizontal2.json" --thumbnail ".\data\videos\thumb_114_en_1.jpg,.\data\videos\thumb_114_en_2.jpg"

What happens:

  1. clip1: Uploads with title/tags from clip1.json AND custom cover clip1.jpg.
  2. clip2: Uploads with title/tags from clip2.json.
  3. clip3: Uploads with default settings. All uploads occur in ONE browser session.

Other Commands

# Check status
video-publisher status

# Authenticate
video-publisher auth youtube
video-publisher auth tiktok
video-publisher auth instagram

Full CLI Reference β†’


πŸ“ File Structure

UploadVerse/
β”œβ”€β”€ .env                       ← Your config
β”œβ”€β”€ client_secrets.json        ← YouTube OAuth (from Google Cloud)
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ videos/               ← Your videos
β”‚   └── sessions/             ← Auth tokens (auto-created)
β”‚       β”œβ”€β”€ youtube_token.pickle
β”‚       β”œβ”€β”€ tiktok_session.pkl
β”‚       └── instagram_session.pkl
β”œβ”€β”€ docs/                     ← Documentation
β”‚   β”œβ”€β”€ youtube_setup.md
β”‚   β”œβ”€β”€ tiktok_setup.md
β”‚   β”œβ”€β”€ instagram_setup.md
β”‚   └── cli_usage.md
└── src/                      ← Source code

🎨 Features

  • Smart Routing: 16:9 β†’ YouTube, 9:16 β†’ TikTok/Instagram
  • Multi-Platform: Upload to multiple platforms simultaneously
  • CLI Interface: Simple command-line tool
  • Python Library: Programmatic access
  • Authentication: Persistent sessions/tokens

πŸ“š Documentation

Guide Description
YouTube Setup Google Cloud Console + OAuth setup
TikTok Setup Browser automation setup (risky)
Instagram Setup Browser automation setup (very risky)
CLI Usage All CLI commands and examples

⚠️ Important Warnings

TikTok

  • Automation violates TikTok Terms of Service
  • Account bans are common
  • Always use test accounts

Instagram

  • Automation violates Instagram Terms of Service
  • Account bans are almost guaranteed
  • Never use your personal account
  • Very high risk

YouTube

  • βœ… Uses official API (safe)
  • No TOS violations
  • Recommended platform

πŸ§ͺ Testing

pip install -r requirements-dev.txt
pytest

πŸ“„ License

MIT License


πŸ™ Built With


Version: 0.1.0
Status: Alpha
Repository: https://github.com/OnlyShoky/UploadVerse

About

UploadVerse is a Python tool that automatically uploads videos to YouTube, Instagram, and TikTok. It detects video orientation and routes horizontal clips to YouTube and vertical clips to TikTok, Instagram Reels, and YouTube Shorts, providing a unified multi-platform upload workflow.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 74.5%
  • HTML 15.3%
  • CSS 7.9%
  • JavaScript 1.8%
  • Dockerfile 0.5%