284 lines
7.8 KiB
Markdown
284 lines
7.8 KiB
Markdown
# Transmission RSS Manager
|
|
|
|
A comprehensive web-based tool to automate and manage your Transmission torrent downloads with RSS feed integration and intelligent media organization.
|
|
|
|
## 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
|
|
- 📱 **Mobile-Friendly UI**: Responsive design works on desktop and mobile devices
|
|
|
|
## Installation
|
|
|
|
### Prerequisites
|
|
|
|
- Ubuntu/Debian-based system (may work on other Linux distributions)
|
|
- Node.js 14+ and npm
|
|
- Transmission daemon installed and running
|
|
- Nginx (for reverse proxy)
|
|
|
|
### Automatic Installation
|
|
|
|
The easiest way to install Transmission RSS Manager is with the installation script:
|
|
|
|
```bash
|
|
# Download the installation script
|
|
wget https://raw.githubusercontent.com/username/transmission-rss-manager/main/install.sh
|
|
|
|
# Make it executable
|
|
chmod +x install.sh
|
|
|
|
# Run it with sudo
|
|
sudo ./install.sh
|
|
```
|
|
|
|
The script will guide you through the configuration process and set up everything you need.
|
|
|
|
### Manual Installation
|
|
|
|
If you prefer to install manually:
|
|
|
|
1. Clone the repository:
|
|
```bash
|
|
git clone https://github.com/username/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
|
|
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
|
|
|
|
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
|
|
|
|
### 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
|
|
|
|
To update to the latest version:
|
|
|
|
```bash
|
|
wget https://raw.githubusercontent.com/username/transmission-rss-manager/main/update.sh
|
|
chmod +x update.sh
|
|
sudo ./update.sh
|
|
```
|
|
|
|
## File Structure
|
|
|
|
```
|
|
transmission-rss-manager/
|
|
├── server.js # Main application server
|
|
├── postProcessor.js # Media processing module
|
|
├── rssFeedManager.js # RSS feed management module
|
|
├── install.sh # Installation script
|
|
├── update.sh # Update script
|
|
├── config.json # Configuration file
|
|
├── public/ # Web interface files
|
|
│ ├── index.html # Main web interface
|
|
│ ├── js/ # JavaScript files
|
|
│ │ └── enhanced-ui.js # Enhanced UI functionality
|
|
│ └── css/ # CSS stylesheets
|
|
└── 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
|
|
}
|
|
```
|
|
|
|
### 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
|