- Ensure server.js uses consistent .js extensions for module imports - Create compatibility symlinks for different module naming styles - Update file-creator-module.sh to handle module paths correctly - Bump version to 2.0.8 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
505 lines
17 KiB
Markdown
Executable File
505 lines
17 KiB
Markdown
Executable File
# Transmission RSS Manager v2.0.8
|
|
|
|
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!
|
|
|
|
## Changelog
|
|
|
|
### v2.0.8 (2025-03-07)
|
|
- **Fixed**: Module import issues on fresh installations with proper file extension handling
|
|
- **Fixed**: Adding compatibility symlinks for different module naming styles
|
|
- **Improved**: Server.js now uses consistent module import paths with .js extensions
|
|
- **Improved**: More robust module file handling in the installer
|
|
|
|
### v2.0.7 (2025-03-07)
|
|
- **Fixed**: Installation directory handling with prompt for choosing install path
|
|
- **Fixed**: Bootstrap-installer now defaults to /opt/trans-install with user configuration option
|
|
- **Improved**: Better detection and usage of existing installation directories during updates
|
|
- **Improved**: Updated documentation to clarify default installation paths
|
|
|
|
### v2.0.6 (2025-03-05)
|
|
- **Added**: Non-interactive mode support for scripted installations
|
|
- **Improved**: Remote Transmission configuration collection in install-script.sh
|
|
- **Improved**: Better handling of piped input for remote configuration details
|
|
- **Improved**: Added debug output to help troubleshoot configuration issues
|
|
- **Note**: When updating an existing installation, manual configuration of remote settings through the web interface may still be required
|
|
|
|
### v2.0.5 (2025-03-05)
|
|
- **Fixed**: Config file now properly stored in /etc/transmission-rss-manager directory
|
|
- **Fixed**: Remote Transmission detection in install-script.sh
|
|
- **Improved**: Enhanced symlink handling between installation dir and config dir
|
|
- **Improved**: Better environment variable passing between install scripts
|
|
|
|
### v2.0.4 (2025-03-05)
|
|
- **Fixed**: Remote transmission detection in installer
|
|
- **Fixed**: Configuration directory creation and permissions
|
|
- **Fixed**: Config file symlink now ensures application finds correct config location
|
|
|
|
### v2.0.3 (2025-03-05)
|
|
- **New**: Configuration file now stored in `/etc/transmission-rss-manager/`
|
|
- **Improved**: Installer creates config directory with proper permissions
|
|
- **Improved**: Application now stores path to installation directory for easier updates
|
|
|
|
### v2.0.2 (2025-03-05)
|
|
- **Fixed**: Bug in installer that would prompt to install Transmission for remote configurations
|
|
- **Improved**: Better detection of remote vs local Transmission installations
|
|
- **Improved**: Installation process now checks the TRANSMISSION_REMOTE flag correctly
|
|
|
|
### v2.0.1 (2025-03-05)
|
|
- **New**: Automatic detection of existing installations for seamless updates
|
|
- **Improved**: Enhanced update process that preserves existing configurations
|
|
- **Improved**: Installer now dynamically reads version from package.json
|
|
|
|
### v2.0.0 (2025-03-05)
|
|
- **Major**: Completely redesigned installation system using git
|
|
- **New**: One-click update feature with version checking
|
|
- **New**: Automatic Transmission detection and installation
|
|
- **New**: System status dashboard with update notifications
|
|
- **New**: About page with developer information
|
|
- **Improved**: Better error handling for Transmission connection
|
|
- **Fixed**: Various UI bugs and responsiveness issues
|
|
|
|
### v1.2.0 (2025-02-15)
|
|
- **New**: Enhanced media organization with better content detection
|
|
- **New**: Improved post-processor with configurable filtering
|
|
- **Improved**: Transmission client integration with better error handling
|
|
- **Improved**: UI enhancements for better usability
|
|
- **Fixed**: RSS feed parsing issues
|
|
- **Fixed**: Authentication problems in certain configurations
|
|
|
|
### v1.0.0 (2025-01-10)
|
|
- **Initial Release**: Basic functionality for RSS feed monitoring
|
|
- **New**: Integration with Transmission BitTorrent client
|
|
- **New**: Web interface for managing torrents and feeds
|
|
- **New**: Post-processing capability for downloaded content
|
|
- **New**: Basic content categorization by media type
|
|
|
|
## 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
|
|
|
|
### Known Issues
|
|
|
|
- When updating an existing installation with Remote Transmission settings, you may need to manually configure the remote settings through the web interface after installation.
|
|
- The installer will properly detect and collect remote Transmission settings, but they may not be applied to the configuration file in update mode.
|
|
|
|
### 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
|
|
|
|
### Installation Directory
|
|
|
|
**Note**: By default, the application will be installed to `/opt/trans-install`. During installation, you'll be prompted to choose a different directory if needed. If you're updating an existing installation, the installer will detect and use your current installation path.
|
|
|
|
### 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.
|
|
- The installer automatically detects existing installations and runs in update mode, preserving your existing configuration.
|
|
- When updating, only necessary files are modified while maintaining your custom settings and preferences.
|
|
|
|
### 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 configuration file, which is located at `/etc/transmission-rss-manager/config.json` (or at the application's installation directory as a fallback):
|
|
|
|
```json
|
|
{
|
|
"installPath": "/opt/transmission-rss-manager",
|
|
"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 Installer
|
|
|
|
You can also update by running the installer again:
|
|
|
|
```bash
|
|
# Navigate to the installation directory
|
|
cd /opt/transmission-rss-manager
|
|
|
|
# Run the installer with sudo
|
|
sudo ./main-installer.sh
|
|
```
|
|
|
|
The installer will:
|
|
1. Detect your existing installation automatically
|
|
2. Run in update mode
|
|
3. Preserve all your existing configurations
|
|
4. Update only the necessary files
|
|
5. Restart the service with your updated installation
|
|
|
|
### 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
|