Skip to content

Repository files navigation

TikTok Uploader GUI

App Icon

A graphical user interface (GUI) to interact with the tiktok-uploader CLI tool. This project is built with Next.js, NextUI, and packaged as a desktop application using Tauri.

Tiếng Việt (Vietnamese)

Table of Contents

👋 Introduction

This application provides a visual way to upload videos to TikTok, leveraging the power of the tiktok-uploader CLI in the background. Instead of using the command line, you can manage your uploads through a user-friendly interface.

🗺️ Roadmap / TODO

This project is currently under active development. The UI is mostly built, but backend integration is pending.

Legend:

  • ⏳ TODO
  • [~] 🏗️ In Progress / Partially Implemented (UI Only)
  • ✅ Done

✨ Core Functionality

  • 🏗️ 📹 Video Selection: Select single or multiple videos via file dialog or drag-and-drop (UI Done).
  • ⏳ 📁 File Handling: Process and temporarily store selected video file paths for upload.
  • ⏳ 🐍 tiktok-uploader Integration:
    • ⏳ 🦀 Create Tauri commands (Rust) to invoke the tiktok-uploader Python script/CLI.
    • ⏳ ➡️ Pass video path, description, hashtags, mentions, privacy settings, etc., from the UI to the backend command.
    • ⏳ 📊 Handle output/progress/errors from the Python script and display them in the UI.
  • 🏗️ 📝 Video Metadata Input: Enter Title/Caption, Hashtags, Mentions (UI Done).
  • 🏗️ 🔒 Privacy Settings: Configure 'Allow Comments', 'Allow Duets', 'Allow Stitches' (UI Done).
  • ⏳ 👥 Audience Control: Select 'Public', 'Friends', 'Private' (UI might need adjustment based on CLI capabilities).
  • 🏗️ 📅 Scheduling: Select date and time for scheduled uploads (UI Done, backend logic needed).
  • 🏗️ 📚 Batch Upload: UI for managing multiple videos with individual or common settings (UI Done, backend logic needed).
  • ⏳ 🛒 TikTok Shop / Affiliate Links: Integrate Product ID input with CLI option (if supported).

⚙️ Settings & Configuration

  • ⏳ 🔑 Authentication:
    • ⏳ 📄 UI for selecting cookies.txt file path.
    • ⏳ 💾 Securely store and load the cookies path.
    • ⏳ ➡️ Pass cookies path/content to the tiktok-uploader command.
    • ⏳ ✅ Display authentication status (e.g., "Cookies Loaded" / "Cookies Missing").
  • ⏳ 🌐 Browser Selection: Allow users to choose the browser for Selenium (Chrome, Firefox, etc.) if needed.
  • ⏳ 🔗 Proxy Configuration: UI and backend logic for setting proxy details (Host, Port, User, Pass).
  • ⏳ 👻 Headless Mode: Option to run the browser headlessly.

🖥️ User Experience & Desktop App

  • ⏳ 🛠️ Environment Setup:
    • Python Check for Python installation on startup.
    • Pip Check/Install tiktok-uploader Python package.
    • ⏳ 📦 Consider bundling Python/dependencies or providing a one-click setup script.
  • 🏗️ 🔄 Upload Progress: Display real-time progress during upload (Requires feedback from Python script).
  • ⏳ 📈 Upload History: Persistently store and display a history of successful, failed, and scheduled uploads.
  • ⏳ 🐛 Error Handling: Provide clear feedback for common errors (invalid cookies, network issues, TikTok blocks, invalid video format, etc.).
  • ⏳ 🌍 Internationalization (i18n): Fully translate UI elements based on language selection (Currently separate READMEs).

💻 Code & Project

  • Basic UI Structure: Next.js frontend with shadcn/ui components.
  • Tauri Integration: Basic setup for packaging as a desktop app.
  • ⏳ 🗃️ Refine State Management: Move beyond local useState for persistent data (history, settings).
  • ⏳ 🧪 Testing: Add unit/integration tests.

⚙️ How it Works

This application uses the tiktok-uploader library, which employs Selenium to automate the upload process in a web browser. It requires your TikTok session cookies to authenticate.

  • Authentication: You'll need to export your cookies from TikTok.com using a browser extension (like "Get cookies.txt") and upload the cookies.txt file in the application's settings.
  • Supported Browsers: Chrome (Recommended), Firefox, Edge, Safari, Chromium.
  • Proxies: Proxy configuration is supported (primarily via Chrome) to help avoid rate limits.
  • Potential Issues: Uploads might fail due to TikTok's detection methods, expired cookies, network issues, or uploading too frequently. ⚠️

🔧 Original CLI Tool

This interface relies on the tiktok-uploader CLI tool by wkaisertexas. Please refer to the original documentation for details on the CLI's features and options.

🙏 Acknowledgements

  • Huge thanks to wkaisertexas for creating the original tiktok-uploader CLI tool, which this project builds upon.
  • The initial frontend structure was generated using v0.dev by Vercel.
  • The application icon (app-icon.svg) was generated by ChatGPT.
  • This project was developed with the assistance of Cursor and Gemini 2.5 Pro. ✨

💾 Installation

To run this project locally, follow these steps:

  1. Clone repository (If needed):
    git clone https://github.com/thanhnn16/tiktok-uploader-gui.git
    cd tiktok-uploader-gui
  2. Install dependencies: This project uses bun as the package manager.
    bun install
    Note: Tauri dependencies (Rust, etc.) are also required. See the Tauri prerequisites guide.

🚀 Usage

🌐 Web Application (Next.js)

  1. Run development server:

    bun run dev

    Open http://localhost:3000 in your browser to see the application.

  2. Build the application for production:

    bun run build
  3. Run production server:

    bun run start

💻 Desktop Application (Tauri)

The Next.js application is wrapped using Tauri to create a cross-platform desktop app. The Tauri-specific code resides in the src-tauri directory.

  1. Run Tauri development mode: This will build the frontend and launch the desktop application with hot-reloading.

    bun run tauri dev
  2. Build Tauri application: This will bundle the frontend and the Rust backend into a distributable desktop application for your platform.

    bun run tauri build

    The output can be found in src-tauri/target/release/bundle/.

🤝 Contributing

Contributions are welcome! Please open an issue or pull request if you have suggestions or bug fixes. 🙌

📜 License

This project is licensed under the MIT License.

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages