rTorrent info i Conky guide

Här kan du dela med dig av dina bästa tips och knep.
Kategoriregler
Här ligger de utförliga instruktionerna vi kan tänkas behöva. Leta här om du tex behöver installera nåt program eller sätta upp någon funktion. Starta inte trådar utan att ha ett svar.
Användarvisningsbild
BadOmen
Inlägg: 1172
Blev medlem: 18 aug 2006, 10:45
OS: Kubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Umeå

rTorrent info i Conky guide

Inlägg av BadOmen »

Jag kör Ubuntu 8.04.

EDIT Här är en länk så ni kan se hur det kan se ut i Conky.
http://fc05.deviantart.com/fs31/f/2008/ ... Omen02.jpg

För er som gillar Conky och använder rTorrent så är det här guiden för er :)
Nästan längst ned i detta inlägg så ser ni hur det vissas i Conky (det går att få det på en rad också)

kom ihåg att ni kör den här guiden på egen risk för den har inte gått igenom så många tester... Men det funkar för mig :)

Jag vill också tacka Konservburk här på forumet för utan honom hade det inte blivit nån kommunikation mellan rtorrent och conky alls... :)


För att kommunicera med rtorrent via xmlrpc så måste man konfigurera rtorrent med denna --with-xmlrpc-c flagga

Så här har jag gjort:
1. Avinstallea rtorrent om den är installerad,detta kan göras via synaptic men annars kan man göra det via terminalen

Kod: Markera allt

apt-get remove rtorrent
2. Sen installerade jag det som behövs för att få det att funka:

Kod: Markera allt

sudo apt-get install build-essential libsigc++-2.0-dev pkg-config libcurl3-openssl-dev libidn11-dev libkadm55 libkrb5-dev libssl-dev zlib1g-dev libncurses5 libncurses5-dev libxmlrpc-c3-dev


Om du kör en äldre version än Ubuntu 8.04, så kanske du måste installera comerr-dev också men kolla först om den är installerad. Du kan söka den i synaptic så ser du. OBS! comerr-dev är alltså redan installerad i åtminstone Ubuntu 8.04 och behövs inte installeras där.

3. Efter det så hämtade jag hem de nyaste libpaketet för rtorrent, när jag gjorde det var denna nyast:
libtorrent-0.12.2.tar.gz och sen hemtade jag även den nyaste rtorrent, det var denna rtorrent-0.8.2.tar.gz. Dessa filer hämtade jag härifrån:
http://libtorrent.rakshasa.no/downloads/
Efter det packade jag upp dem med Arkivhanteraren, dubbelklickade alltså bara på filen :)

4. Nu är det dax att installera libtorrent-0.12.2 jag körde följande kommandon i terminalen:

Kod: Markera allt

cd libtorrent-0.12.2
./configure
make
sudo make install
5. Sen ska vi installera rTorrent med xmlrpc möjligheter.

Kod: Markera allt

cd rtorrent-0.8.2
./configure --with-xmlrpc-c
make
sudo make install
6. För att nu få rTorrent att utnyttja sina nya funktioner så måste rTorrent skapa en rpc.socket. Det gör den i den mapp du välger. Öppna nautilus och högerklicka i din hemma mapp och välj skapa mapp. Döpa den till rtorrent_rpc för att lätt kommaihåg det. Den ska sedan även användas av Conky. Nu är det bara en kodsnutt som ska läggas till i rtorrent.rc, jag öppnade rtorrent.rc med gedit så här Alt + F2 skriv gedit och la den nederst.

Kod: Markera allt

scgi_local =~/rtorrent_rpc/rpc.socket
Sätt sökvägen till den mapp som du skapade just, i den mappen man pekar på kommer rtorrent att skapa rpc.socket inuti.

7. Testkör rTorrent genom att bara starta den med att skriva rtorrent i terminalen.
Nu ska det stå "XMLRPC initialized with 444 functions" när rTorrent just har startat. Om det gör det så är allt bra :)

8. Skaffa ett python script som kan kommunicera mellan rTorrent och Conky. Här hittar ni det scriptet längst ner på sidan.
http://libtorrent.rakshasa.no/wiki/UtilsXmlrpc2scgi
Jag laddade hem xmlrpc2scgi.py som lades till av glenn on 05/23/08 06:02:00.
Spara den i rtorrent_rpc som du skapade vid punkt 6.
När ni har fått hem filen så högerklicka på den och klicka på Egenskaper och nu på fliken Rättigheter och kryssa för kör: "tillåt körning av filen som ett program "

9. Nu måste vi installera xmlstarlet som hjälper till att få utskriften snygg i Conky. Skriv detta i terminalen:

Kod: Markera allt

sudo apt-get install xmlstarlet
10. För att conky ska visa rTorrent infon på ett bra sett behövs detta lilla script:

Kod: Markera allt

#!/bin/sh
test -S "$2" &&
"$@" d.multicall default \
   d.get_name= \
   d.get_up_rate= \
   d.get_down_rate= \
   d.get_completed_chunks= \
   d.get_size_chunks= \
   d.is_active= \
|
xmlstarlet sel -t -v / |
awk '/./ {
   if (++i%6 == 1) name=$0
   else if (i%6 == 2) up[name]=$0
   else if (i%6 == 3) down[name]=$0
   else if (i%6 == 4) done[name]=$0
   else if (i%6 == 5) size[name]=$0
   else if (i%6 == 0) active[name]=$0
} END {
   for(name in up) {
      if(active[name]) {
         up_sum += up[name]
         down_sum += down[name]
         #if(++j<=4)
         {
            printf("Namn: %s\n", name)
            printf("Klart: %d%%\n", 100 * done[name] / size[name])
            printf("Upp: %.1f kB/s\n", up[name] / 1024)
            printf("Ner: %.1f kB/s\n", down[name] / 1024)
            printf("\n\b")
         }
      }
   }
   printf("Upp totalt: %.1f kB/s\n", up_sum / 1024)
   printf("Ner totalt: %.1f kB/s\n", down_sum / 1024)
}' |
xargs -d'\b' -n1 printf '%s\0' |
sort -z |
xargs -0 -n1 printf '%s'
Markera all kod genom att klicka på Kod: Markera allt överst i kodrutan. Kopiera det och starta gedit, Alt + F2 skriv gedit nu öppnas en tom fil som ni klistrar in allt i och sparar som skriptet.sh. Det kommer att hänvisas till den filen i kod senare så döp den inte till nåt annat om ni inte vet vad ni gör :)
Spara den under er hemma mapp.

11. Starta nautilus Alt + F2 skriv nautilus sök igen filen skriptet.sh och gör nu som ni gjorde i punkt 8 för att få den körbar.

12. Nu ska vi få conky att prata med rtorrent via dessa script vilket inte är svårt.
Sätt bara in raden nedan på valfritt ställe i eran conkyrc fil under TEXT där ni vill få fram infon från rTorrent.

Kod: Markera allt

${color }${exec ~/skriptet.sh ~/rtorrent_rpc/xmlrpc2scgi.py ~/rtorrent_rpc/rpc.socket}
Ni måste bara se till att peka på skriptet.sh, xmlrpc2scgi.py och på rpc.socket.

13. Det är risk att text_buffer_size som är standard 128 inte räcker till. Ni får öka den så att det passar er men den får inte vara mindre än 128. Jag fick sätta min på 220 annars klipptes texten av... Sett in denna rad i conkyrc på valfri rad ovanför TEXT

Kod: Markera allt

text_buffer_size 220
Nu ska det vara klart om jag inte har glömt nåt... :)

Så här får ni ut det i conky:

Namn: ubuntu-7.10-desktop-amd64.iso
Klart: 100%
Upp: 10.0 kB/s
Ner: 0.0 kB/s

Namn: ubuntu-8.04.1-desktop-i386.iso
Klart: 45%
Upp: 14.5 kB/s
Ner: 45.0 kB/s

Namn: ubuntu-8.04-desktop-amd64.iso
Klart: 100%
Upp: 0.0 kB/s
Ner: 0.0 kB/s

Upp totalt: 24.5 kB/s
Ner totalt: 45.0 kB/s

TIPS
1. Om ni vill få det på en rad får ni ändra lite i skriptet.sh. Efter printf står det /n på vissa ställen. Den gör ny rad så tar ni bort den borde det bli på rad i stället :)

2. I skriptet.sh finns en if-sats som ser ut så här #if(++j<=4). Om ni tar bort # så kan ni välja hur många torrents som max ska visas. Som det är nu i skriptet.sh så finns det ingen max gräns utan den visar alla torrents som är aktiva, alltså inte satta som Closed.

3. Raden som heter printf("Namn: %s\n", name) som är strax under #if(++j<=4) kan man byta ut mot denna rad om man vill printf ("%.10s\n", name) Den gör att man bara skriver ut de 10 första tecknen i namnet på torrentsfilerna. Ni kan byta ut 10 till det antal bokstäver ni vill visa :)

Här är två länk med fler kommandon man kan använda om man bara listar ut hur :)

http://libtorrent.rakshasa.no/wiki/RTorrentCommandsRaw
http://libtorrent.rakshasa.no/wiki/RTorrentCommands

Det har ju inte gått igenom så jättemånga tester det här så om ni stöter på ett problem så säg till, om inte jag kan så kan säkert nån annan tex Konservburk hjälpa er :)

Stöter ni på ett problem som ni löser så lägg in vad problemet var och hur ni löste det :)

Här är tråden vi pratade med varandra undertiden vi gjorde det här:
http://ubuntu-se.org/phpBB3/viewtopic.p ... &sk=t&sd=a
På den sidan ska man om man ids läsa lite kunna lista ut hur man får Conky att kommunicera över en port med rTorrent. Eller om man vill att rTorrent ska kommunicera över internet med wTorrent. Jag använde då servern lighttpd för att kommunicera med conky, dock bara från min egendator. Om man använder rTorrent och öppnar porten så att Conky eller wTorrent kan kommunicera via den porten så blir det en säkerhetsrisk. Ni får själva i så fall läsa på internet och se om det är värt det... :)

Sist men inte minst ännu ett jätte tack till konservburk som har hjälpt mig jättemycket, det kanske snarare borde vara han som skriver den här guiden :)
Konservbork har gjort skriptet.sh som gör det möjligt att kommunicera och få rTorrent infon på ett snyggt set i Conky.

Lycka till!

EDIT: Nåt litet stav fel å så fixade jag, lär nog finnas några kvar också :P

EDIT: Satte dit en TIPS rubrik och att man kan välja hur många torrents som max får visas om man vill.
EDIT: Här är en länk så ni kan se hur Conky kan se ut http://fc05.deviantart.com/fs31/f/2008/ ... Omen02.jpg
EDIT: Jag la till punkt 3 under TIPS
EDIT: Jag skrev in att man kanske måste skriva in en högre text_buffer_size, se punkt 13.
Användarvisningsbild
BadOmen
Inlägg: 1172
Blev medlem: 18 aug 2006, 10:45
OS: Kubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Umeå

Re: rTorrent info i Conky guide

Inlägg av BadOmen »

OBS! detta gäller Conky 1.6
Om man kör Conky 1.6 så kan man få det riktig snyggt :) Man sätter bara in ett p efter exec så det ser ut så här:
${execp ~/skriptet.sh ~/rtorrent_rpc/xmlrpc2scgi.py ~/rtorrent_rpc/rpc.socket}

Nu kan man i skript filens printf del lägga in tex $[color orange] och få texten i de färger man vill :)

Detta går inte så jättebra i Conky 1.5, det blir nåt fel med text bufferten så när man sätter en torrent till close så blir det inte så vackert... Det är dock löst med 1.6 :)

Så här har jag ändrat mitt skriptet.sh så den passar mig. Jag har gjort så att ifall alla torrents är closed eller att rTorrent inte är igång så visas inget utom det man normalt har lagt in i sin Conkyrc. Jag har även lagt allt som en panel och lagt in de färger jag vill ha :)

Kod: Markera allt

#!/bin/sh
test -S "$2" &&
"$@" d.multicall default \
   d.get_name= \
   d.get_up_rate= \
   d.get_down_rate= \
   d.get_completed_chunks= \
   d.get_size_chunks= \
   d.is_active= \
|
xmlstarlet sel -t -v / |
awk '/./ {
   if (++i%6 == 1) name=$0
   else if (i%6 == 2) up[name]=$0
   else if (i%6 == 3) down[name]=$0
   else if (i%6 == 4) done[name]=$0
   else if (i%6 == 5) size[name]=$0
   else if (i%6 == 0) active[name]=$0
} END {
	bolActives = 0
		for(name in up) {
			if(active[name]) {
			bolActives = 1
			up_sum += up[name]
			down_sum += down[name]
				if(++j<=4) {
					printf ("${color red}%.10s ", name) 
					printf("${color orange}%d%% ", 100 * done[name] / size[name])
					printf("${color yellow}Upp/Ner:${color orange} %.1f /", up[name] / 1024)	
					printf(" %.1f kB/s    ", down[name] / 1024)
				}
			}
   		}
		if (bolActives == 1) {
		printf("${color yellow}Totalt Upp/Ner:${color orange} %.1f / ", up_sum / 1024)
		printf("%.1f kB/s ", down_sum / 1024)
		}
 	
 
}' |
xargs -d'\b' -n1 printf '%s\0' |
sort -z |
xargs -0 -n1

På den här http://fc03.deviantart.com/fs31/i/2008/ ... Omen02.jpg länken kan ni se hur skrivbordet ser ut med panelen där uppe :) Tyvärr så är det bara en av torrentfilerna som har nån att ladda från/till så det är inte så mycket action där uppe :)
Senast redigerad av 1 BadOmen, redigerad totalt 10 gånger.
Användarvisningsbild
dmz
Inlägg: 3292
Blev medlem: 29 jul 2008, 19:42
OS: Arch Linux

Re: rTorrent info i Conky guide

Inlägg av dmz »

Trevligt. Man kan göra mycket med conky. :>
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
Användarvisningsbild
BadOmen
Inlägg: 1172
Blev medlem: 18 aug 2006, 10:45
OS: Kubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Umeå

Re: rTorrent info i Conky guide

Inlägg av BadOmen »

dmz skrev:Trevligt. Man kan göra mycket med conky. :>
Ja verkligen det är riktigt kul :)

Om du får för dig att köra guiden så skriv gärna hur det har gått så jag vet om den funkar som den ska :)
Användarvisningsbild
BadOmen
Inlägg: 1172
Blev medlem: 18 aug 2006, 10:45
OS: Kubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Umeå

Re: rTorrent info i Conky guide

Inlägg av BadOmen »

skriptet.sh med återstående tid på torrent nedladdningarna.

Kod: Markera allt

#!/bin/sh
test -S "$2" &&
"$@" d.multicall default \
   d.get_name= \
   d.get_up_rate= \
   d.get_down_rate= \
   d.get_completed_chunks= \
   d.get_size_chunks= \
   d.get_size_bytes= \
   d.get_bytes_done= \
   d.is_active= \
|
xmlstarlet sel -t -v / |
awk '/./ {

# Det här skriptet visar återstående tid av nedladdning samt att den har textformatering, samma som Conky. Den visar även torrent namn och upp/ned ladningshastig het både per enskild nedladdning och totalt. Skriptet skriver ut allt på en rad som en panel. Det går att ändra genom att lägga in \n i printf "blabla\nblabla" där man vill ha radbrytning.
# Tid nedräkningen kan slås av och på en bit ned i skriptet, timeOnOff = 1 # on = 1, off = 0
#Det går även att välja hur många tecken i namnen man vill visa, se kommentar i koden nedan.

# Detta Skript kräver detta eller nyare versioner:
# Skapa först en mappen rtorrent_rpc i din hemma mapp.
# xmlrpc2scgi.py laddas ned och läggs i mappen rtorrent_rpc som du just skapat.
# http://libtorrent.rakshasa.no/wiki/UtilsXmlrpc2scgi
# xmlrpc2scgi.py (7.9 kB) - added by glenn on 05/23/08 06:02:00.


# Denna rad lägs in i conkyrc under TEXT
# ${execp ~/rtorrent_rpc/skriptet.sh ~/rtorrent_rpc/xmlrpc2scgi.py ~/rtorrent_rpc/rpc.socket}
# Conky 1.6 är den version som måste användas, eller en nyare.


#Installera dessa för att kunna göra installationen av rtorrent och dess lib.
# sudo apt-get install build-essential libsigc++-2.0-dev pkg-config libcurl3-openssl-dev libidn11-dev libkadm55 libkrb5-dev libssl-dev zlib1g-dev libncurses5 libncurses5-dev

# installera xmlrpc-c-1.14.00  se nedan:
# sudo apt-get install subversion
# svn co http://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/release_number/1.14.00 xmlrpc-c-1.14.00
# cd xmlrpc-c-1.14.00
# ./configure
# make
# sudo make install

# Hämta libtorrent-0.12.2 och rtorrent-0.8.2.tar.gz här http://libtorrent.rakshasa.no/downloads/ och packa upp dem.
# cd libtorrent-0.12.2
# ./configure
# make
# sudo make install

# rtorrent-0.8.2.tar.gz confas med flaggan --with-xmlrpc-c
# cd rtorrent-0.8.2
# ./configure --with-xmlrpc-c
# make
# sudo make install

# Denna rad läggs in i rtorrent.rc
# scgi_local = ~/rtorrent_rpc/rpc.socket


 
  if (++i%8 == 1) name=$0
   else if (i%8 == 2) up[name]=$0
   else if (i%8 == 3) down[name]=$0
   else if (i%8 == 4) done[name]=$0
   else if (i%8 == 5) size[name]=$0
   else if (i%8 == 6) totbytes[name]=$0
   else if (i%8 == 7) bytesdone[name]=$0
   else if (i%8 == 0) active[name]=$0
    } END {
	
       timeOnOff = 1 # on = 1, off = 0

       for(name in up) {
          if(active[name]) {
		
		bolActives = 1

			
				up_sum += up[name]
				down_sum += down[name]
			
				if(++j<=4) {
					
				# Byt ut 15 mot så många tecken i namnet du vill visa.
				printf ("${color red}%.15s ", name) 
					
					if (done[name] != 0 && size[name] !=0){					
						printf("${color }%d%% ", 100 * done[name] / size[name])
					}

					if (timeOnOff == 1){
						if ( down[name]== 0 || bytesdone[name] == 0 || totbytes[name]== 0 ||  totbytes[name] == bytesdone[name] || int(down[name] / 512) ==0 )
						printf("${color } -.- ")
						else { 
							if ((down[name] / 1024) >= 0.4) { 
							sekunder_kvar = (totbytes[name] - bytesdone[name]) / (int(down[name] / 512) * 512)
							sekunder  = sekunder_kvar % 60
							minuter   = sekunder_kvar / 60 % 60
							timmar    = sekunder_kvar / 60 / 60 % 24
							dagar    = sekunder_kvar / 60 / 60 / 24
													
								if (sekunder == 60){
								minuter++ 
								sekunder = 0
								}
								if (minuter == 60){
								timmar++ 
								minuter = 0
								}

 							# Ändra # för att bestämma om Sekunder ska visas eller inte.
							# OBS stämmer inte hundra om du har satt Conky att uppdatera tex. var tredje sekund ;)
							
							#printf("${color orange} %dd %02d:%02d:%02d ", dagar, timmar, minuter, sekunder)
							printf("${color orange} %dd %02d:%02d ", dagar, timmar, minuter )
							
							}				
						
						}
				      }
						if ( down[name]!= 0 || up[name]!=0){
						printf("${color yellow}Upp/Ner:${color } %.1f /", up[name] / 1024)
						printf(" %.1f kB/s    ", down[name] / 1024)
 						}	
				}
         }
      }
       		if (bolActives == 1) {
			if ( down_sum!= 0 || up_sum!=0){
				printf("${color yellow}Totalt Upp/Ner:${color } %.1f / ", up_sum / 1024)
				printf("%.1f kB/s ", down_sum / 1024)
			}
		}

}' |
xargs -d'\b' -n1 printf '%s\0' | 
sort -z | 
xargs -0 -n1
vinkler
Inlägg: 1
Blev medlem: 19 feb 2009, 15:06
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS

Re: rTorrent info i Conky guide

Inlägg av vinkler »

Thank you.
It works for me. :-)

Bild
Senast redigerad av 1 vinkler, redigerad totalt 7 gånger.
Användarvisningsbild
BadOmen
Inlägg: 1172
Blev medlem: 18 aug 2006, 10:45
OS: Kubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Umeå

Re: rTorrent info i Conky guide

Inlägg av BadOmen »

vinkler skrev:Thank you.
It works for me. :-)

Bild
Finally someone who has tried it =)
thanx for the feedback =)
Betygsätt din Hårdvara och underlätta inköp av ny för andra:http://ubuntu-se.org/phpBB3/viewforum.php?f=138
Ubuntu-se forsknings team, här.
Min Ubuntu blogg som funkar som en stor post-it lapp för mig http://attminnas.blogspot.com/
Användarvisningsbild
BadOmen
Inlägg: 1172
Blev medlem: 18 aug 2006, 10:45
OS: Kubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Umeå

Re: rTorrent info i Conky guide

Inlägg av BadOmen »

Jag håller på att lära mig Python så nu har jag gjort om skriptet åvan till att vara helt i python.

Så här kan det se ut:
Bild

Om man inte vill använda utdatan som automatiskt genereras så kan man utnyttja def iterTorrents för att få en python dictionary med info från varje torrent i rTorrent.

Man kan också ändra en massa färg och annat i skriptet under __init__ delen samt ändra en del av vad man vill visa under __main__.

Det end skriptet är beroende av är att rtorrent med xmlrpc-c fungerar och att xmlrpc2scgi.py är i samma map som det här skriptet.
xmlrpc2scgi.py can be downloaded at the bottom of this site: http://libtorrent.rakshasa.no/wiki/UtilsXmlrpc2scgi

Kod: Markera allt

#!/usr/bin/env python
# -*- coding:utf-8 -*-

#----      
#      Copyright 2010 Jonas Lindberg
#      
#      This program is free software; you can redistribute it and/or modify
#      it under the terms of the GNU General Public License as published by
#      the Free Software Foundation; either version 2 of the License, or
#      (at your option) any later version.
#      
#      This program is distributed in the hope that it will be useful,
#      but WITHOUT ANY WARRANTY; without even the implied warranty of
#      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#      GNU General Public License for more details.
#      
#      You should have received a copy of the GNU General Public License
#      along with this program; if not, write to the Free Software
#      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
#      MA 02110-1301, USA.
#      
# Contact:  Jonas Lindberg <badomen02 gmail>
#----

#Script Info:
# This script collects information from the torrents in rTorrent and prints it out.
# If you do not want the conky code then just use the def iterTorrents to get a dictionary of information from every torrent.
# it is possible to configure it under def  __init__() and change def __main__ if needed.

#Dependencies:
# rtorrent with xmlrpc-c working.
# xmlrpc2scgi.py to be in the same directory as this script.

# xmlrpc2scgi.py can be downloaded at the bottom of this site: http://libtorrent.rakshasa.no/wiki/UtilsXmlrpc2scgi

#.conkyrc setting
# Conky needs this line in the Text part:
# ${execp ~/Dokument/programmering/workspace/prjXMLrpc2scgi/src/xmlrpc2rtorrent.py}
# Set the text_buffer_size so it's not cutting the output.

from __future__ import print_function
from xmlrpc2scgi import do_scgi_xmlrpc_request_py
import socket

class TorrentInfo():

    def __init__(self):
        # Change settings here.
        self.rpcSocketPath='/home/jonas/rtorrent_rpc/rpc.socket'
        
        self.visible=6
        # Just one of them can be true at the same time. if all is False then Just Total Down/Up will be shown.
        self.showActiveTorrents=False
        self.showClosedTorrents=False
        self.showActAndCloTorrents=True
        self.showDownTorrents=False
        self.showUpTorrents=False
        self.showDowUpTorrents=False

        
        self.maxNameLength=40
        # Replacing a color with an empty string '' will show your default Conky color.
        self.activeColor = 'green'
        self.closedColer = 'red'
        self.txtColor = 'white'
        self.downColor = 'orange'
        self.upColor = 'brown'
        self.totalColor = 'purple'
        self.totalDoUpColor = 'LightGreen'
        self.timeColor = 'grey'
        self.lineColor = 'cyan'
        self.procentColor ='yellow'
        self.receivedColor = 'LightBlue'
        
        # Do not change this:
        self.countVisible = 1
        self.countLines=0
        self.totalUpSpeed=0
        self.totalDownSpeed=0
        self.rTorrentOff=False
    
    def iterTorrents(self):
        """ A iterator that returns a dictionary with information from every torrent in rTorrent. """
        
        self.params=('default', 'd.get_name=','d.get_up_rate=','d.get_down_rate=','d.get_completed_chunks=','d.get_size_chunks=','d.get_size_bytes=','d.get_bytes_done=','d.is_active=')
        self.dictKey=('name','up_rate','down_rate','done','size','total_bytes','bytes_done','is_active')
        try:
            self.lolRtorrents = do_scgi_xmlrpc_request_py(self.rpcSocketPath, 'd.multicall',self.params)
        except socket.error:
            self.rTorrentOff=True
            pass
        else:
            self.lodTorrents=[]
            for self.torrent in self.lolRtorrents:
                self.lodTorrents.append(dict(zip(self.dictKey,self.torrent)))
               
            for self.torrent in self.lodTorrents:
                yield self.torrent
        
    def collectTorrentInfo(self,torrent):
        """Collects information from the torrent.
        
        This must be called for every torrent"""
        self.totalUpSpeed+=torrent['up_rate'] 
        self.totalDownSpeed+=torrent['down_rate']
        self.fProcentDone=float(torrent['bytes_done'])/float(torrent['total_bytes'])*100
        self.name=torrent['name']
        self.downRate=float(torrent['down_rate']) / 1024

        self.upRate=float(torrent['up_rate'])  / 1024
        self.totalBytes=float(torrent['total_bytes']) / 1024 / 1024
        self.receivedMB=float(torrent['bytes_done']) / 1024 / 1024
        self.isActive=torrent['is_active']
                
    def __showTorrentInfo(self):
        """ Is colled from showTorrentInfo to display the correct torrents specified in __init__. """
        
        if self.countVisible<=self.visible:
            self.countVisible+=1  
            if self.isActive:
                print('${{color {0}}}Active:${{color {1}}} {2:.{3}s}'.format(self.activeColor,self.txtColor,self.name,self.maxNameLength), end='\n')
            else:
                print('${{color {0}}}Closed:${{color {1}}} {2:.{3}s}'.format(self.closedColer,self.txtColor,self.name,self.maxNameLength), end='\n')
    
            print('${{color {0}}}Down:${{color {1}}} {2:.1f} KB/s'.format(self.downColor,self.txtColor,self.downRate), end='\n')
            print('${{color {0}}}Up:${{color {1}}} {2:.1f} KB/s'.format(self.upColor,self.txtColor,self.upRate), end='\n')
            print('${{color {0}}}Received:${{color {1}}} {2:.1f} MB'.format(self.receivedColor,self.txtColor,self.receivedMB))
            print('${{color {0}}}Total:${{color {1}}} {2:.1f} MB'.format(self.totalColor,self.txtColor,self.totalBytes) ,end='\n')
            print('${{color {0}}}Done:${{color {1}}} {2:.2f}%'.format(self.procentColor,self.txtColor,self.fProcentDone))
                   
    def showTorrentInfo(self):
        """ Shows the torrent that you have specified in __init__. """
        if self.showActiveTorrents:
            if self.isActive:
                self.__showTorrentInfo()
        elif self.showClosedTorrents:
            if not self.isActive:
                self.__showTorrentInfo()
        elif self.showActAndCloTorrents:
            self.__showTorrentInfo()
        elif self.showDownTorrents and self.downRate!=0:
            self.__showTorrentInfo()
        elif self.showUpTorrents and self.upRate!=0:
            self.__showTorrentInfo()
        elif self.showDowUpTorrents and (self.upRate!=0 or self.downRate!=0):
            self.__showTorrentInfo()

 
    def ShowTimeLeft(self,torrent):
        """ Calls __ShowTimeLeft() just when needed. """
        if (self.showActiveTorrents or self.showActAndCloTorrents) and self.countVisible<=self.visible:
            if self.isActive:
                self.__ShowTimeLeft(torrent)

        elif self.showDownTorrents and self.downRate!=0 and self.countVisible<=self.visible:
            self.__ShowTimeLeft(torrent)
        
        elif self.showDowUpTorrents and self.downRate!=0:
            self.__ShowTimeLeft(torrent)
                                
        
    def __ShowTimeLeft(self,torrent):
        if torrent['total_bytes'] != torrent['bytes_done'] and (torrent['down_rate'] / 512) !=0:
            if (float(torrent['down_rate']) / 1024) >= 0.4:
                self.seconds_left = (torrent['total_bytes'] - torrent['bytes_done']) / ((torrent['down_rate'] / 512) * 512)
                self.seconds = self.seconds_left % 60
                self.minutes = self.seconds_left / 60 % 60
                self.hours = self.seconds_left / 60 / 60 % 24
                self.days = self.seconds_left / 60 / 60 / 24
                                                                  
                if self.seconds == 60:
                    self.minutes+=1
                    self.seconds = 0
                                      
                if self.minutes == 60:
                    self.hours+=1
                    self.minutes = 0
                print('${{color {0}}}Countdown: ${{color {1}}}{2:02d}:{3:02d}:{4:02d}:{5:02d}'.format(self.timeColor,self.txtColor,self.days,self.hours,self.minutes,self.seconds))
        
     
    def showTotalSpeed(self):
        """ Shows the total upload and download speed """
        if not self.rTorrentOff:
            self.totalDownSpeedKB=float(self.totalDownSpeed)/1024
            self.totalUpSpeedKB=float(self.totalUpSpeed)/1024
            print('${{color {0}}}Total Down/Up:${{color {1}}} {2:.1f}/{3:.1f} KB/s'.format(self.totalDoUpColor,self.txtColor,self.totalDownSpeedKB,self.totalUpSpeedKB),end='\n')

    def showLine(self):
        """ Shows the line and makes shore that the liens just show up for the visible torrents."""
        if self.countLines < self.countVisible-1:
            self.countLines+=1
            print('${{color {0}}}-----'.format(self.lineColor))
    
            
def main():
    Ti=TorrentInfo()
    for torrent in Ti.iterTorrents():
        Ti.collectTorrentInfo(torrent)
        Ti.showTorrentInfo()
        Ti.ShowTimeLeft(torrent)
        Ti.showLine()
        
    Ti.showTotalSpeed()

if __name__ == "__main__":
    main()
EDIT: Ändrade Procent till Done, så bilden borde visa Done: X.X%

EDIT: Uppdaterade skript, lade till fler configurationsmöjligheter.
Betygsätt din Hårdvara och underlätta inköp av ny för andra:http://ubuntu-se.org/phpBB3/viewforum.php?f=138
Ubuntu-se forsknings team, här.
Min Ubuntu blogg som funkar som en stor post-it lapp för mig http://attminnas.blogspot.com/
Skriv svar

Återgå till "Guider"