active library

mediavault

mediavault - Universal Media Playlist Manager

Started 2024 Python

Resources & Distribution

Source Code

Package Registries

MediaVault ๐Ÿ“š

Previously PlaylistD - Now a Universal Media List Manager

Python License: MIT PyPI

MediaVault is a universal media list manager that follows the Unix philosophy: do one thing well. Manage playlists of any media type from any source with a clean Python API, CLI, and optional web interface.

โœจ Features

  • ๐ŸŽฏ Universal - Works with any media: YouTube, Vimeo, local files, any URL
  • ๐Ÿ”Œ Extensible - Plugin architecture for new sources and features
  • ๐Ÿ Pythonic - Clean, fluent API for developers
  • ๐Ÿ’พ Simple Storage - JSON-based, no database required
  • ๐Ÿš€ Fast - Efficient search with facets and suggestions
  • ๐ŸŒ Web Interface - Beautiful dashboard (optional)
  • ๐Ÿ”’ Secure - Input validation, path sanitization, thread-safe

๐Ÿš€ Quick Start

Install from PyPI

# Core package only
pip install mediavault

# With YouTube support
pip install mediavault[youtube]

# With API and Dashboard
pip install mediavault[api]

# Everything
pip install mediavault[all]

Basic Usage

# Create a playlist
mediavault playlist create "My Learning Path"

# List playlists
mediavault playlist list

# Import from YouTube (requires youtube plugin)
mediavault import "https://youtube.com/watch?v=..."

# Start interactive REPL
mediavault repl

# Start web interface
mediavault quickstart

๐Ÿ Python API

from mediavault import PlaylistManager, PlaylistStorage, Video

# Initialize
storage = PlaylistStorage("./data")
playlists = PlaylistManager(storage)

# Create playlist with fluent API
playlist = (playlists.create("Python Tutorials")
    .with_description("Best Python learning resources")
    .tag("programming")
    .tag("python")
    .save())

# Add videos
video = Video(
    title="Python in 100 Seconds",
    url="https://youtube.com/watch?v=...",
    duration=100
)
playlist.add_video(video)

# Search
from mediavault import SearchEngine
search = SearchEngine(storage)
results = search.search("python", limit=10)

๐Ÿ”Œ Plugin System

MediaVault uses a plugin architecture for extensibility:

from mediavault import Plugin

class MyPlugin(Plugin):
    name = "My Custom Plugin"
    version = "1.0.0"
    
    def get_importers(self):
        return {"mysource": self.import_from_mysource}

Available Plugins

  • youtube - Import videos, playlists, channels from YouTube
  • api - RESTful API server (FastAPI)
  • dashboard - Web interface
  • More coming soon: vimeo, twitch, local files

๐Ÿ—๏ธ Architecture

mediavault/
โ”œโ”€โ”€ core/           # Core functionality
โ”‚   โ”œโ”€โ”€ models.py   # Data models
โ”‚   โ”œโ”€โ”€ storage.py  # JSON storage
โ”‚   โ”œโ”€โ”€ search.py   # Search engine
โ”‚   โ””โ”€โ”€ plugin.py   # Plugin system
โ”œโ”€โ”€ cli/            # CLI interface
โ”œโ”€โ”€ plugins/        # Built-in plugins
โ””โ”€โ”€ integrations/   # External integrations

๐ŸŽฏ Novel Features

  • Video Annotations - Add timestamped notes to videos
  • Collaborative Playlists - Multi-user playlist curation
  • Learning Paths - Track progress through educational content
  • Smart Search - Full-text search with facets and ranking
  • Playlist Analytics - View patterns and engagement metrics
  • Cross-platform Import - YouTube, Vimeo, and more via plugins

๐Ÿ“ฆ Installation Options

Development

# Clone repository
git clone https://github.com/queelius/mediavault.git
cd mediavault

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest

# Format code
black mediavault/

๐Ÿšง Repository Rename Instructions

This repository is in the process of being renamed from playlistd to mediavault. To update your local clone:

# After GitHub rename is complete, update your remote:
git remote set-url origin https://github.com/queelius/mediavault.git

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request. See CONTRIBUTING.md for guidelines.

๐Ÿ“š Documentation

๐Ÿ“„ License

MIT License - see LICENSE file for details.

๐Ÿ™ Acknowledgments

MediaVault is inspired by the Unix philosophy and tools like:

  • git for its plugin architecture
  • jq for JSON manipulation
  • youtube-dl for media downloading concepts

Made with โค๏ธ for media collectors everywhere

Transforming how we organize and share media collections

Discussion