- Bump version from 1.2.0 to 2.0.0 - Update repository URL - Update README.md with new features and installation instructions - Add documentation for web-based update system - Update file structure documentation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
402 lines
12 KiB
Markdown
Executable File
402 lines
12 KiB
Markdown
Executable File
# Transmission RSS Manager v2.0.0
|
|
|
|
A comprehensive web-based tool to automate and manage your Transmission torrent downloads with RSS feed integration, intelligent media organization, and enhanced security features. Now with automatic updates and easy installation!
|
|
|
|
## Features
|
|
|
|
- 🔄 **RSS Feed Integration**: Automatically download torrents from RSS feeds with customizable filters
|
|
- 📊 **Torrent Management**: Monitor and control your Transmission torrents from a clean web interface
|
|
- 📚 **Intelligent Media Organization**: Automatically categorize and organize downloads by media type
|
|
- 📖 **Book & Magazine Sorting**: Specialized processing for e-books and magazines with metadata extraction
|
|
- 📂 **Post-Processing**: Extract archives, rename files, and move content to appropriate directories
|
|
- 🔄 **Remote Support**: Connect to remote Transmission instances with local path mapping
|
|
- 🔒 **Enhanced Security**: Authentication, HTTPS support, and secure password storage
|
|
- 📱 **Mobile-Friendly UI**: Responsive design works on desktop and mobile devices
|
|
- 🔧 **One-Click Updates**: Built-in version checking and automated update system
|
|
- 🚀 **Automatic Transmission Installation**: Installs and configures Transmission if needed
|
|
|
|
## Installation
|
|
|
|
### Prerequisites
|
|
|
|
- Ubuntu/Debian-based system (may work on other Linux distributions)
|
|
- Git (will be automatically installed by the bootstrap installer if needed)
|
|
- Internet connection (for downloading and updates)
|
|
|
|
### System Requirements
|
|
|
|
- Memory: 512MB minimum, 1GB recommended
|
|
- CPU: Any modern processor (1GHz+)
|
|
- Disk: At least 200MB for the application, plus storage space for your media
|
|
- Network: Internet connection for RSS feed fetching and torrent downloading
|
|
|
|
### Automatic Installation
|
|
|
|
The easiest way to install Transmission RSS Manager is with the bootstrap installer:
|
|
|
|
```bash
|
|
# Download the bootstrap installer
|
|
wget https://git.powerdata.dk/masterdraco/transmission-rss-manager/raw/main/bootstrap-installer.sh
|
|
|
|
# Make it executable
|
|
chmod +x bootstrap-installer.sh
|
|
|
|
# Run it with sudo
|
|
sudo ./bootstrap-installer.sh
|
|
```
|
|
|
|
The bootstrap installer will:
|
|
1. Install git if needed
|
|
2. Clone the latest version from the repository
|
|
3. Run the main installer which guides you through configuration
|
|
4. Set up the service and web interface
|
|
|
|
**New in v2.0.0:** The installer now detects if Transmission is installed and offers to install and configure it automatically if needed.
|
|
|
|
### Manual Installation
|
|
|
|
If you prefer to install manually:
|
|
|
|
1. Clone the repository:
|
|
```bash
|
|
git clone https://git.powerdata.dk/masterdraco/transmission-rss-manager.git
|
|
cd transmission-rss-manager
|
|
```
|
|
|
|
2. Install dependencies:
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
3. Configure settings:
|
|
```bash
|
|
cp config.example.json config.json
|
|
nano config.json
|
|
```
|
|
|
|
4. Start the server:
|
|
```bash
|
|
# Using the convenience script (recommended)
|
|
./scripts/test-and-start.sh
|
|
|
|
# Or start with debug logging
|
|
./scripts/test-and-start.sh --debug
|
|
|
|
# Or run in foreground mode
|
|
./scripts/test-and-start.sh --foreground
|
|
|
|
# Or start directly
|
|
node server.js
|
|
```
|
|
|
|
## Configuration
|
|
|
|
### Main Configuration Options
|
|
|
|
The system can be configured through the web interface or by editing the `config.json` file:
|
|
|
|
```json
|
|
{
|
|
"transmissionConfig": {
|
|
"host": "localhost",
|
|
"port": 9091,
|
|
"username": "transmission",
|
|
"password": "password",
|
|
"path": "/transmission/rpc"
|
|
},
|
|
"destinationPaths": {
|
|
"movies": "/mnt/media/movies",
|
|
"tvShows": "/mnt/media/tvshows",
|
|
"music": "/mnt/media/music",
|
|
"books": "/mnt/media/books",
|
|
"magazines": "/mnt/media/magazines",
|
|
"software": "/mnt/media/software"
|
|
},
|
|
"processingOptions": {
|
|
"enableBookSorting": true,
|
|
"extractArchives": true,
|
|
"renameFiles": true,
|
|
"ignoreSample": true
|
|
}
|
|
}
|
|
```
|
|
|
|
### Remote Transmission Setup
|
|
|
|
For remote Transmission instances, configure the directory mapping:
|
|
|
|
```json
|
|
"remoteConfig": {
|
|
"isRemote": true,
|
|
"directoryMapping": {
|
|
"/var/lib/transmission-daemon/downloads": "/mnt/transmission-downloads"
|
|
}
|
|
}
|
|
```
|
|
|
|
This maps paths between your remote Transmission server and the local directories.
|
|
|
|
## Usage
|
|
|
|
### Web Interface
|
|
|
|
The web interface provides access to all functionality and is available at:
|
|
```
|
|
http://your-server-ip
|
|
```
|
|
|
|
### RSS Feed Management
|
|
|
|
1. Go to the "RSS Feeds" tab in the web interface
|
|
2. Click "Add Feed" and enter the RSS feed URL
|
|
3. Configure optional filters for automatic downloads
|
|
4. The system will periodically check feeds and download matching items
|
|
|
|
### Managing Torrents
|
|
|
|
From the "Torrents" tab, you can:
|
|
- Add new torrents via URL or magnet link
|
|
- Start, stop, or delete existing torrents
|
|
- Monitor download progress and stats
|
|
|
|
### Media Organization
|
|
|
|
The post-processor automatically:
|
|
1. Waits for torrents to complete and meet seeding requirements
|
|
2. Identifies the media type based on content analysis
|
|
3. Extracts archives if needed
|
|
4. Moves files to the appropriate category directory
|
|
5. Renames files according to media type conventions
|
|
6. Updates the media library for browsing
|
|
|
|
### Book & Magazine Sorting
|
|
|
|
When enabled, the system can:
|
|
- Differentiate between books and magazines
|
|
- Extract author information from book filenames
|
|
- Organize magazines by title and issue number
|
|
- Create appropriate folder structures
|
|
|
|
## Detailed Features
|
|
|
|
### Automatic Media Detection and Processing
|
|
|
|
The system uses sophisticated detection to categorize downloads:
|
|
|
|
- **Movies**: Recognizes common patterns such as resolution (1080p, 720p) and release year
|
|
- **TV Shows**: Identifies season/episode patterns (S01E01) and TV-specific naming
|
|
- **Music**: Detects audio formats like MP3, FLAC, album folders
|
|
- **Books**: Identifies e-book formats (EPUB, MOBI, PDF) and author-title patterns
|
|
- **Magazines**: Recognizes magazine naming patterns, issues, volumes, and publication dates
|
|
- **Software**: Detects software installers, ISOs, and other program files
|
|
|
|
### Enhanced Post-Processing
|
|
|
|
The post-processor automatically processes completed torrents that have met seeding requirements:
|
|
|
|
- **Smart File Categorization**: Automatically detects media type based on content analysis
|
|
- **Intelligent Folder Organization**: Creates category-specific directories and file structures
|
|
- **Archive Extraction**: Automatically extracts compressed files (.zip, .rar, .7z, etc.)
|
|
- **File Renaming**: Cleans up filenames by removing dots, underscores, and other unwanted characters
|
|
- **Quality Management**: Optionally replace existing files with better quality versions
|
|
- **Seeding Requirements**: Configurable minimum ratio and seeding time before processing
|
|
|
|
### Robust Transmission Integration
|
|
|
|
The improved Transmission client integration provides:
|
|
|
|
- **Enhanced Error Handling**: Automatic retry on connection failures
|
|
- **Media Information**: Deep analysis of torrent content for better categorization
|
|
- **Remote Support**: Comprehensive path mapping between remote and local systems
|
|
- **Torrent Management**: Complete control over torrents (add, start, stop, remove)
|
|
- **Performance Monitoring**: Track download/upload speeds and other performance metrics
|
|
|
|
### RSS Feed Filtering
|
|
|
|
Powerful filtering options for RSS feeds:
|
|
|
|
- **Title matching**: Regular expression support for title patterns
|
|
- **Category filtering**: Filter by feed categories
|
|
- **Size limits**: Set minimum and maximum size requirements
|
|
- **Custom rules**: Combine multiple criteria for precise matching
|
|
|
|
### Remote Transmission Support
|
|
|
|
Full support for remote Transmission instances:
|
|
|
|
- **Secure authentication**: Username/password protection
|
|
- **Path mapping**: Configure how remote paths map to local directories
|
|
- **Full API support**: Complete control via the web interface
|
|
|
|
## Updating
|
|
|
|
### Using the Web Interface (New in v2.0.0)
|
|
|
|
The easiest way to update is through the web interface:
|
|
|
|
1. Navigate to the Dashboard
|
|
2. Look for the "System Status" section
|
|
3. If an update is available, an "Update Now" button will appear
|
|
4. Click the button to automatically update to the latest version
|
|
|
|
The system will:
|
|
- Back up your configuration
|
|
- Pull the latest code from the repository
|
|
- Install any new dependencies
|
|
- Restore your configuration
|
|
- Restart the service automatically
|
|
|
|
### Using the Command Line
|
|
|
|
If you prefer to update via command line:
|
|
|
|
```bash
|
|
cd /opt/transmission-rss-manager
|
|
sudo scripts/update.sh
|
|
```
|
|
|
|
Use the `--force` flag to force an update of dependencies even if no code changes are detected:
|
|
|
|
```bash
|
|
sudo scripts/update.sh --force
|
|
```
|
|
|
|
### Manual Update
|
|
|
|
Alternatively, you can download and run the update script:
|
|
|
|
```bash
|
|
wget https://git.powerdata.dk/masterdraco/transmission-rss-manager/raw/main/scripts/update.sh
|
|
chmod +x update.sh
|
|
sudo ./update.sh
|
|
```
|
|
|
|
## File Structure
|
|
|
|
```
|
|
transmission-rss-manager/
|
|
├── server.js # Main application server
|
|
├── modules/ # Modular components
|
|
│ ├── post-processor.js # Media processing module
|
|
│ ├── rss-feed-manager.js # RSS feed management module
|
|
│ ├── transmission-client.js # Transmission API integration
|
|
│ ├── config-module.sh # Installation configuration
|
|
│ ├── dependencies-module.sh # Dependency installation
|
|
│ ├── file-creator-module.sh # File creation for installation
|
|
│ ├── service-setup-module.sh # Service setup
|
|
│ └── utils-module.sh # Utility functions
|
|
├── bootstrap-installer.sh # Minimal installer that clones the repository
|
|
├── main-installer.sh # Main installation script
|
|
├── config.json # Configuration file
|
|
├── scripts/ # Utility scripts
|
|
│ ├── update.sh # Update script
|
|
│ └── test-and-start.sh # Test and start script
|
|
├── public/ # Web interface files
|
|
│ ├── index.html # Main web interface
|
|
│ ├── js/ # JavaScript files
|
|
│ │ ├── app.js # Core application logic
|
|
│ │ └── utils.js # Utility functions
|
|
│ └── css/ # CSS stylesheets
|
|
│ └── styles.css # Main stylesheet
|
|
└── README.md # This file
|
|
```
|
|
|
|
## Modules
|
|
|
|
### Post-Processor
|
|
|
|
The Post-Processor module handles:
|
|
- Monitoring completed torrents
|
|
- Categorizing content by type
|
|
- Extracting archives
|
|
- Organizing files into the correct directories
|
|
- Renaming files according to conventions
|
|
|
|
### RSS Feed Manager
|
|
|
|
The RSS Feed Manager module provides:
|
|
- Regular checking of configured RSS feeds
|
|
- Filtering of feed items based on rules
|
|
- Automated downloading of matching content
|
|
- History tracking of downloaded items
|
|
|
|
## Advanced Configuration
|
|
|
|
### Seeding Requirements
|
|
|
|
Set minimum seeding requirements before processing:
|
|
|
|
```json
|
|
"seedingRequirements": {
|
|
"minRatio": 1.0,
|
|
"minTimeMinutes": 60,
|
|
"checkIntervalSeconds": 300
|
|
}
|
|
```
|
|
|
|
### Security Settings
|
|
|
|
Enable authentication and HTTPS for secure access:
|
|
|
|
```json
|
|
"securitySettings": {
|
|
"authEnabled": true,
|
|
"httpsEnabled": true,
|
|
"sslCertPath": "/path/to/ssl/cert.pem",
|
|
"sslKeyPath": "/path/to/ssl/key.pem",
|
|
"users": [
|
|
{
|
|
"username": "admin",
|
|
"password": "your-hashed-password",
|
|
"role": "admin"
|
|
},
|
|
{
|
|
"username": "user",
|
|
"password": "your-hashed-password",
|
|
"role": "user"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
*Note: Passwords are automatically hashed on first login if provided in plain text.*
|
|
|
|
### Processing Options
|
|
|
|
Customize how files are processed:
|
|
|
|
```json
|
|
"processingOptions": {
|
|
"enableBookSorting": true,
|
|
"extractArchives": true,
|
|
"deleteArchives": true,
|
|
"createCategoryFolders": true,
|
|
"ignoreSample": true,
|
|
"ignoreExtras": true,
|
|
"renameFiles": true,
|
|
"autoReplaceUpgrades": true,
|
|
"removeDuplicates": true,
|
|
"keepOnlyBestVersion": true
|
|
}
|
|
```
|
|
|
|
## Contributing
|
|
|
|
Contributions are welcome! Here's how you can help:
|
|
|
|
1. Fork the repository
|
|
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
|
|
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
5. Open a Pull Request
|
|
|
|
## License
|
|
|
|
This project is licensed under the MIT License.
|
|
|
|
## Acknowledgments
|
|
|
|
- [Transmission](https://transmissionbt.com/) for the excellent BitTorrent client
|
|
- [Node.js](https://nodejs.org/) and the npm community for the foundation libraries
|
|
- All contributors who have helped improve this project
|