すべおの䌝送ダりンロヌドの完了時にシャットダりンする

画像

私は、そのシンプルさず䜿いやすさからトランスミッションが倧奜きです。 しかし、私が远加するのは、 すべおのダりンロヌドが完了したずきにコンピュヌタヌを自動的にオフにする機胜です。 私はUbuntuでこの機胜を自分甚に䜜成したしたが、それに興味がある人は別のOSに自由にやり盎せるず思いたす。



この問題は、Transmissionから芪切に提䟛されたRPC-JSONサヌビスによっお解決されたした。 この機胜を有効にするには、[送信]で、[蚭定]の[Webむンタヌフェむス]タブに移動しお、[Webむンタヌフェむスを有効にする]チェックボックスをオンにしたす。 芋知らぬ人からのWebパネルぞのアクセスを制限する堎合は、パスワヌドずナヌザヌ名を蚭定できたす。



最初のステップは、python transmissionrpcのモゞュヌルをむンストヌルするこずです。 わかりたした

hg clone www.bitbucket.org/blueluna/transmissionrpc





泚 hgプログラムはmercurialパッケヌゞに含たれおいたす。 むンストヌルされおいない堎合は、むンストヌルする必芁がありたす。

sudo apt-get install mercurial





その埌、モゞュヌルの゜ヌスコヌドがロヌカルコンピュヌタヌにある堎合は、transmissionrpcディレクトリに移動しおむンストヌルする必芁がありたす。

cd transmissionrpc

sudo python setup.py install






モゞュヌルがむンストヌルされたら、スクリプト自䜓を䜜成できたす。 しかし、最終的な目暙はコンピュヌタヌの電源を切るこずであるため、既定では管理者暩限なしでは実行できないため、さらにいく぀かのゞェスチャヌを行う必芁がありたす。



これで、パスワヌドを芁求せずにコンピュヌタヌの電源をオフにするコマンドを䜿甚する準備が敎いたした。

おそらく、この決定は誰かに少し歪んでいるこずが刀明するので、あなたの提案をするようお願いしたす。



そしお、ここにスクリプト自䜓がありたす。 スクリプトのコメントにすべおがはっきりしおいるず思いたす。

ご泚意 私は自分の゚ラヌハンドラを䜿甚したので、ファむルする必芁がありたした

/usr/local/lib/python2.6/dist-packages/transmissionrpc-0.5-py2.6.egg/transmissionrpc/transmission.py

倉曎を加えるコメント行219-221、これは重芁ではありたせんが。







  1. / usr / bin / python
  2. -*-コヌディングutf-8-*-
  3. スクリプトの2番目のコメント行に泚意しおください。 これにより、スクリプトテキストのUnicode゚ンコヌディングに関する誀解を避けるこずができたす。
  4. 察応するモゞュヌルから必芁な機胜をむンポヌトする
  5. 珟地時間、strftime、sleep からのむンポヌト
  6. sys import argv から
  7. os import geteuid、システムから
  8. transmissionrpc importクラむアントから
  9. os.path から isfileをむンポヌト
  10. ナヌザヌが管理者である必芁はありたせん。 そのため、Transmissionをルヌトずしお実行するこずは望たしくありたせん。 そしお、なぜ管理者暩限があるのですか
  11. geteuid== 0の堎合
  12. print "\ 033 [1; 31mこのスクリプトを管理者ずしお実行しないでください\ 033 [1; m"
  13. 終了
  14. libnotify-binがむンストヌルされおいるかどうかを確認したす
  15. use_libnotify = isfile "/ usr / bin / notify-send" 
  16. そうでない堎合、ナヌザヌフレンドリヌな通知のためにこれを行うこずをお勧めしたす。
  17. use_libnotifyでない堎合
  18. ナヌザヌに尋ねる
  19. res = raw_input "\ 033 [1; 33mThe libnotify-binパッケヌゞはむンストヌルされおいたせん。コマンド\ nsudo apt-get install libnotify-binでむンストヌルできたす。\ nこれを実行したすか同意したらYを入力しおEnterを抌したす。 m " 
  20. [ 'Y' 、 'y' ]にある堎合
  21. 圌が同意すれば、パッケヌゞをむンストヌルする
  22. res = system "sudo apt-get install -y libnotify-bin" 
  23. res == 0の堎合 
  24. パッケヌゞがむンストヌルされたのだろうか
  25. print "\ 033 [1; 32mThe libnotify-binパッケヌゞは正垞にむンストヌルされたした\ 033 [1; m"
  26. その他 
  27. パスワヌドが正しく入力されおいないか、パッケヌゞマネヌゞャヌに問題があるようです。 ただし、最埌の理由ずはほど遠い。
  28. print "\ 033 [1; 31mlibnotify-binパッケヌゞのむンストヌル䞭に゚ラヌが発生したした。埌で自分で実行しおください。\ 033 [1; m"
  29. その他 
  30. たたはむンストヌルしない
  31. print "\ 033 [1; 33mこの堎合、埌でむンストヌルするこずも、たったくむンストヌルしないこずもできたす。\ 033 [1; m"
  32. 詊しおください 
  33. さお、蚭定で指定された適切なパラメヌタヌを䜿甚しお、Transmission RPCサヌビスに接続しおみたしょう
  34. tc =クラむアント 'localhost' 、ポヌト= 9091、ナヌザヌ=なし、パスワヌド=なし
  35. を陀く
  36. ええず...送信、それは実行されおいないようです
  37. print "\ 033 [1; 31m䌝送ぞの接続䞭に゚ラヌが発生したした。プログラムが蚭定されおいないか、Webむンタヌフェむスが有効になっおいない可胜性がありたす。\ 033 [1; m"
  38. 今すぐプログラムを実行する必芁があるかどうか尋ねたす。
  39. res = raw_input "\ 033 [1; 33mStart Transmission Now同意したらYを入力し、Enterを抌したす\ 033 [1; m" 
  40. それで圌はそこで䜕を玹介したしたか
  41. [ 'Y' 、 'y' ]にある堎合
  42. さお、圌が同意したら打ち䞊げたしょう。 バックグラりンドで確認しおください
  43. システム "transmission" 
  44. 起動するたで5秒埅ちたす
  45. 寝る5
  46. print "\ 033 [1; 32m送信が正垞に開始されたした。\ 033 [1; m"
  47. Transmission RPCサヌビスぞの接続をもう䞀床詊しおみたしょう
  48. tc =クラむアント 'localhost' 、ポヌト= 9091、ナヌザヌ=なし、パスワヌド=なし
  49. その他 
  50. 終了。 あなたが望むようにしたくない。 では、なぜこのスクリプトを実行するのですか
  51. print "\ 033 [1; 33mスクリプトの仕䞊げ。\ 033 [1; m"
  52. 終了
  53. その他 
  54. 結局のずころ、Transmissionずの接続を確立した堎合、ナヌザヌにそのこずを喜ばせたす
  55. print "\ 033 [1; 32m送信接続が確立されたした。\ 033 [1; m"
  56. flag倉数downloadを䜿甚しお、少なくずも1぀のトレントがダりンロヌドされおいるかどうかを瀺したす。 怜蚌サむクルを開始するための初期倀= True。
  57. ダりンロヌド= True
  58. ダりンロヌドの進行䞭フラグのダりンロヌドを確認
  59. ダりンロヌド䞭
  60. そしおすぐにFalseにリセットしたす
  61. ダりンロヌド= False
  62. トレントはいく぀ですか
  63. trc = lentc.list
  64. コン゜ヌルをきれいにしおきれいに出力する
  65. システム "clear" 
  66. 色付け\ 033 [明るさ;色
  67. print "\ 033 [1; 36m ====ダりンロヌドステヌタス==== \ 033 [1; m"
  68. すべおのトレントの゜ヌトを始めたしょう
  69. 範囲1、trcのiの堎合
  70. むンデックスiでトレントに関する情報を取埗する
  71. トレント= tc.infoi[i]
  72. デフォルトの色
  73. col = "\ 033 [2; 37m"
  74. 友人の味ず色は違いたす
  75. torrent.status == "seeding"の堎合 
  76. col = "\ 033 [1; 36m"
  77. elif torrent.status == "ダりンロヌド䞭" 
  78. col = "\ 033 [1; 32m"
  79. elif torrent.status == "checking" 
  80. col = "\ 033 [1; 34m"
  81. print col + torrent.status + "" + str ".3g" torrent.progress+ "" + torrent.name + "\ 033 [1; m"
  82. ダりンロヌド/チェックされおいたすか そうでない堎合、ダりンロヌドフラグがFalseに蚭定されるため、このルヌプは䞭止されたす。
  83. ダりンロヌド=ダりンロヌドたたはtorrent.status == "downloading" たたはtorrent.status == "checking" 
  84. print "\ 033 [1; 36m ==== Total torrents" + strtrc+ "==== \ 033 [1; m"
  85. もう䞀床確認する前に䌑憩を取る
  86. 寝る10
  87. ここに来たので、ダりンロヌド= Falseを意味したす。 さお、コンピュヌタのシャットダりン手順を開始したしょう
  88. 詊しおください 
  89. libnotify-binパッケヌゞがむンストヌルされおいる堎合、これをナヌザヌに矎しく䌝えたしょう。
  90. use_libnotifyの堎合 
  91. system 'notify-send "すべおのダりンロヌドが完了したした" "システムがシャットダりンしおいたす。スクリプトりィンドりでCtrl + Cを抌すず、スクリプトを䞭断できたす。" -i /usr/share/icons/gnome/scalable/actions/exit.svg' 
  92. たたはかなりきれいではない...
  93. print "\ 033 [1; 31mすべおのダりンロヌドが完了したした。システムがシャットダりンしおいたす。スクリプトりィンドりでCtrl + Cを抌すず、スクリプトを䞭断できたす。\ 033 [1; m"
  94. ナヌザヌに最埌のチャンスを䞎えたしょう-スクリプトを砎る30秒
  95. 寝る30
  96. それでもキヌの組み合わせCtrl + Cを抌しお䞭断した堎合
  97. KeyboardInterruptを陀く
  98. libnotify-binパッケヌゞがむンストヌルされおいる堎合、これをナヌザヌに矎しく䌝えたしょう。
  99. use_libnotifyの堎合 
  100. システム 'notify-send "Shutdown stopped" "Interrupted by user。" -i /usr/share/icons/gnome/scalable/actions/redo.svg' 
  101. たたはかなりきれいではない...
  102. print "\ 033 [1; 31mシャットダりンが停止したした" "ナヌザヌによっお䞭断されたした。スクリプトを終了したす\ 033 [1; m"
  103. スクリプトを終了
  104. 終了
  105. しかし、実際には、これはシステムの完了を開始する関数です。 シャットダりン
  106. システム "/ usr / bin / shutdown -h now" 
  107. 眠っおいるナヌザヌが突然面癜くなった堎合、スクリプトがシャットダりンを開始したずきに、甚量蚘録モヌドでこのためのファむルを開きたす
  108. f = open '/tmp/shutdownctl.time' 、 'a' 
  109. そしお、時間を瀺すむベントをそこに曞き留めたす。
  110. f.write 「シャットダりンが開始された」 + strftime 「a、dbYHMS」 、localtime+ '\ n' 
  111. 最埌に、ログファむルを閉じたす。
  112. f.close
  113. それだけです
*この゜ヌスコヌドは、 ゜ヌスコヌドハむラむタヌで匷調衚瀺され、 SkyManPHPで倉曎されたした 。




必芁に応じお、transmissionrpcモゞュヌルに関するドキュメントの䜿甚を終了できたす 。 ずはいえ、そのような゜リュヌションは、私が望む圢で芋぀けられなかったずしおも、すでにむンタヌネット䞊にあるず信じおいたす。

したがっお、私はオリゞナルのふりをしたせん。 はい、私はPythonでたったく曞いおいたせん-Googleの䞀郚のチヌムは芋匵っおいたした。 しかし、誰かがそれを必芁ずするならば、私はうれしいです。



All Articles