トレントの操作に関する多くの記事がありますが、必要なものが見つかりませんでした。
この記事では、php + mysql + rtorrentを使用してトレントを操作する方法を例に示して説明します。
必要です:
- rtorrent(--with-xmlrpc-c)
- PHP5 XML_RPC2ライブラリ
- PHPクラスTorrent.php
ダウンロードするトレントファイルを配置します
この例では、トレントファイルのアップロードを含むフォームですが、重要ではありません。 トラッカーを解析し、完成したトレントファイルをスクリプトに転送することを妨げるものはありません。
<?php .......... $torrent = new Torrent($_FILES['file']['tmp_name']); if ($hash = $torrent->hash_info()) { move_uploaded_file($_FILES['file']['tmp_name'], "torrent/new/" . microtime(true) . rand(1000, 9999) . ".torrent"); mysql_query("INSERT INTO video SET `show` = '" . mysql_real_escape_string($show) . "', hash = '" . mysql_real_escape_string($hash) . "'}'"); $error = " "; } else { $error = " torrent-"; } .......... ?>
rtorrentに接続します。
<?php ...... $xrc = XML_RPC2_Client::create("http://127.0.0.1/RPC2", array("encoding" => "utf-8")); .....
ダウンロードしたトレントのリストを操作します 。
..... foreach ($xrc->download_list("complete") as $hash) { $episode = mysql_fetch_assoc(mysql_query("SELECT * FROM video WHERE hash = '" . mysql_real_escape_string($hash) . "'")); if (!$episode) { // continue; } $base_path = $xrc->{"d.get_base_path"}($hash); if (is_file($base_path)) { // , mysql_query("UPDATE video SET filename = '" . mysql_real_escape_string($base_path) . "', hash = '' WHERE hash = '" . mysql_real_escape_string($hash) . "'"); $xrc->{"d.erase"}($hash); } else { printf("$base_path does not exist!\n"); } } ?>
rtorrentのすべてのコマンドのリスト: RTorrentCommands
最後に何がありますか?
rtorrentをphp + mysqlに接続した後、さらに自動化するための多くのアイデアがあります。 個人的には、新しいシリーズのテレビ番組の自動ダウンロードと、ダウンロードの成功に関するSMS通知を作成しました。
このような方法をCMSに埋め込み、新しい映画/テレビ番組/ソフトウェアのダウンロードを整理し、ファイルホスティングサービスにアップロードすることは難しくありません。