
This repository contains Transmission RSS Manager with the following changes: - Fixed dark mode navigation tab visibility issue - Improved text contrast in dark mode throughout the app - Created dedicated dark-mode.css for better organization - Enhanced JavaScript for dynamic styling in dark mode - Added complete installation scripts 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
114 lines
2.5 KiB
JavaScript
114 lines
2.5 KiB
JavaScript
// Transmission client module for Transmission RSS Manager
|
|
// This is a basic implementation that will be extended during installation
|
|
const Transmission = require('transmission');
|
|
|
|
class TransmissionClient {
|
|
constructor(config) {
|
|
this.config = config;
|
|
this.client = new Transmission({
|
|
host: config.host || 'localhost',
|
|
port: config.port || 9091,
|
|
username: config.username || '',
|
|
password: config.password || '',
|
|
url: config.path || '/transmission/rpc'
|
|
});
|
|
}
|
|
|
|
// Get all torrents
|
|
getTorrents() {
|
|
return new Promise((resolve, reject) => {
|
|
this.client.get((err, result) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve(result.torrents || []);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
// Add a torrent
|
|
addTorrent(url) {
|
|
return new Promise((resolve, reject) => {
|
|
this.client.addUrl(url, (err, result) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve(result);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
// Remove a torrent
|
|
removeTorrent(id, deleteLocalData = false) {
|
|
return new Promise((resolve, reject) => {
|
|
this.client.remove(id, deleteLocalData, (err, result) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve(result);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
// Start a torrent
|
|
startTorrent(id) {
|
|
return new Promise((resolve, reject) => {
|
|
this.client.start(id, (err, result) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve(result);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
// Stop a torrent
|
|
stopTorrent(id) {
|
|
return new Promise((resolve, reject) => {
|
|
this.client.stop(id, (err, result) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve(result);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
// Get torrent details
|
|
getTorrentDetails(id) {
|
|
return new Promise((resolve, reject) => {
|
|
this.client.get(id, (err, result) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve(result.torrents && result.torrents.length > 0 ? result.torrents[0] : null);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
// Test connection to Transmission
|
|
testConnection() {
|
|
return new Promise((resolve, reject) => {
|
|
this.client.sessionStats((err, result) => {
|
|
if (err) {
|
|
reject(err);
|
|
} else {
|
|
resolve({
|
|
connected: true,
|
|
version: result.version,
|
|
rpcVersion: result.rpcVersion
|
|
});
|
|
}
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
module.exports = TransmissionClient;
|