rtorrent med conky, någon som vill göra en HowTo?[löst]

Här diskuteras programmering och utveckling
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 med conky, någon som vill göra en HowTo?[löst]

Inlägg av BadOmen »

En fil igång blir:
[[1234,1235]]

En fil closed blir:
[[0,0]]

tvåfiler blir:
[[0,0],[0,0]]

Jag har inte vågat ta bort alla nedladdningar helt från rtorrent. Det är en som har stått på länge för den laddar så sakta.
Jag kan inte säga hur det är när rtorrent är tom tyvärr =(

Om du känner dig extra sugen kan du ju testa howTo som jag gjorde här en bit upp och se om du kan få det att funka genom att följa den :)
Vad är awk??
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Inlägg av Konservburk »

Jag tänkte att jag skulle slippa bygga om rtorrent :P, men visst jag kanske får ta och testa din howto senare.

När det gäller awk så är det ett gammalt hederligt skriptspråk från unix barndom på 70-talet. Men det fungerar fortfarande alldeles utmärkt, speciellt om vi nu ska pipe:a till den. Här är ett första försök:

Kod: Markera allt

xmlrpc2scgi.py -p rpc.socket d.multicall started d.get_up_rate= d.get_down_rate= | awk -F'[],[]' '{for(i=1;i<=NF;i++)if(i%2)u+=$i;else d+=$i}END{printf"upp: %.1f kB/s\nner: %.1f kB/s\n",u/1024,d/1024}'
Det var allt på en rad (om nu inte conky klarar av flera rader), annars blir det mer lättläst så här istället:

Kod: Markera allt

xmlrpc2scgi.py -p rpc.socket d.multicall started d.get_up_rate= d.get_down_rate= |
awk -F'[],[]' '{
   for(i=1;i<=NF;i++) {
      if(i%2) {
         u+=$i
      } else {
         d+=$i
      }
   }
} END {
   printf("upp: %.1f kB/s\nner: %.1f kB/s\n",u/1024,d/1024)
}'
Du kan ju såklart även dumpa hela skiten i ett skript och sedan anropa själva skriptet från conky istället.
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 med conky, någon som vill göra en HowTo?[löst]

Inlägg av BadOmen »

Den där med allt på en rad fungerade medan den andra blev sytax error så man måste nog ha allt på en rad :)

Om man skulle göra så att man bara tar emot download_rate kan du då göra så man får det för varje torrent man laddar?

Så här ser det ut jag har 3 filer i rtorrent Fil ett laddar, fil två är done, fil tre laddar:
[[24531],[0],[35124]]
ner 1: 24531 KB/s
ner 2: 0 KB/s
ner 3: 35124 KB/s

Vist är jag så där härligt besvärlig ;)

Det här börjar verkligen likna nåt :)
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 med conky, någon som vill göra en HowTo?[löst]

Inlägg av BadOmen »

Med denna rad så får man ut namnen på torrentsen i en array på samma sätt som det var med download_rate=

Kod: Markera allt

${exec ~/rtorrent_rpc/xmlrpc2scgi.py -p ~/rtorrent_rpc/rpc.socket d.multicall default d.get_name=}
Det kanske inte är så svårt för dig att dela upp den. Du kan göra det lättast genom att bara bryta vid varje kommatecken och strunta i klamren [ ]. Vissa torrents har ju ändå dom i namnet så det skulle bara ställa till det :)

[[Namnet],[namn2],[namn3]]

Gör gärna ett test och se om det innehåller nåt alls så att det inte blir error ifall rtorrent inte skickar nåt tillbaka när man inte har nån fil i rtorrent :)
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Inlägg av Konservburk »

BadOmen skrev:Om man skulle göra så att man bara tar emot download_rate kan du då göra så man får det för varje torrent man laddar?

Så här ser det ut jag har 3 filer i rtorrent Fil ett laddar, fil två är done, fil tre laddar:
[[24531],[0],[35124]]
ner 1: 24531 KB/s
ner 2: 0 KB/s
ner 3: 35124 KB/s
Vi gör väl ett försök:

Kod: Markera allt

xmlrpc2scgi.py -p rpc.socket d.multicall started d.get_down_rate= | awk -F'[],[]' '{for(i=1;i<=NF;i++)if(!(i%3))printf("ner%d: %.1f kB/s\n",i/3,$i/1024)}'
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Inlägg av Konservburk »

BadOmen skrev:Med denna rad så får man ut namnen på torrentsen i en array på samma sätt som det var med download_rate=

Kod: Markera allt

${exec ~/rtorrent_rpc/xmlrpc2scgi.py -p ~/rtorrent_rpc/rpc.socket d.multicall default d.get_name=}
Det kanske inte är så svårt för dig att dela upp den. Du kan göra det lättast genom att bara bryta vid varje kommatecken och strunta i klamren [ ]. Vissa torrents har ju ändå dom i namnet så det skulle bara ställa till det :)

[[Namnet],[namn2],[namn3]]
Om vi ska dela upp namn så vill vi nog vara lite försiktigare. Det kan ju vara så att det finns både klammrar och kommatecken i själva namnet. :P

Men vad är egentligen målet? Vill du lista alla torrents som är igång med: namn, procent klart, eta, down/up-rate, osv?
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 med conky, någon som vill göra en HowTo?[löst]

Inlägg av BadOmen »

Måste man ha ett speciellt mål ;)

Det hade ju varit trevligt att få denna info direkt i conky, tydligt och enkelt att förstå :)

Namn: Ubuntu 8.04.iso
Klart: 48%
Ner: 154 KB/s
Upp: 35 KB/s

Namn: Ubuntu 8.10 Alpha 3.iso
klart: 27 %
Ner: 98 KB/s
Upp: 35 KB/s

Total nedladdningshastighet:
252 KB/s
total Uppladningshastighet:
70 KB/s

Nånting sådant kanske och att man kan lägga det på en rad om man skulle vilja det :) I koden vore det praktiskt om man bara uträttade en sak i taget så att man kan flytta om sina saker som man vill eller välja vad man vill visa.

Du har rätt i det med namn man kan ju faktiskt ha namn med , tecken i också även om jag tycker namn med , eller ] är rätt dumt :)
Men om man gör en som delar upp namnet vid komman så kan man ju när man sparar torrentfilen tabort kommana om man vill eller låta bli att lägga till den raden som visar namn i sin conky :) Då har man gett valmöjligheten att visa namn iaf :)

Om du känner att det är nåt annat som borde vara med så är jag öppen för förslag :)
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Inlägg av Konservburk »

BadOmen skrev:I koden vore det praktiskt om man bara uträttade en sak i taget så att man kan flytta om sina saker som man vill eller välja vad man vill visa.
Jag skulle vilja påstå att det är bäst med så få anrop till rtorrent som möjligt. Ska du dela upp det så att allting får ett eget anrop så blir det nog väldigt resurskrävande. Det är inte heller speciellt svårt att flytta runt saker i själva awk-koden, så det behöver du egentligen inte vara rädd för.
BadOmen skrev:Du har rätt i det med namn man kan ju faktiskt ha namn med , tecken i också även om jag tycker namn med , eller ] är rätt dumt :)
Men om man gör en som delar upp namnet vid komman så kan man ju när man sparar torrentfilen tabort kommana om man vill eller låta bli att lägga till den raden som visar namn i sin conky :) Då har man gett valmöjligheten att visa namn iaf :)
Det borde gå att göra det här på ett "bra" sätt så att klammrar och kommatecken i namnet inte spelar någon roll, men då kan man inte gå den enkla vägen och bara hugga så fort man ser ett kommatecken :P
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Inlägg av Konservburk »

Sen antar jag att det borde finnas någon maxgräns för antalet torrents som listas. Du lär ju inte få plats med att visa all info om säg 35 stycken på en gång.
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 med conky, någon som vill göra en HowTo?[löst]

Inlägg av BadOmen »

Du har helt rätt i det du säger och om man vill visa det som jag föreslog så borde det ju också gå med ett enda anrop :) Beroende på om conky har nån max längd på vad en rad får vara :)

Hur man ska lösa det utan att hugga vilt vid kommatecken blir nog inte så lätt eftersom man måste ju välja att hugga på nått :)

Det kan ju som sagt bli ganska fullt på skärmen om det blir en 35 torrents med långa namn :P Men om man först och främst får den att visa så här:

Namn: Ubuntu 8.04.iso
Klart: 48%
Ner: 154 KB/s
Upp: 35 KB/s

Namn: Ubuntu 8.10 Alpha 3.iso
klart: 27 %
Ner: 98 KB/s
Upp: 35 KB/s

så kan man väll sen börja se om man kan göra nån max antal torrent test. Då har man ju fått en bra grund att bygga från. Går det nu absolut inte att kolla det så får man väl sätta ut en liten varning för koden. Koden skulle nog inte krasch conky utan det skulle nog bara bli så att allt inte syntes på skärmen. Jag gjorde min conky 230 pix bred och då fick jag bara in halva andra namnet från rtorrent men resten funkade.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Inlägg av Konservburk »

BadOmen skrev:Hur man ska lösa det utan att hugga vilt vid kommatecken blir nog inte så lätt eftersom man måste ju välja att hugga på nått :)
Det finns ett kommando som heter xmlstarlet som verkar vara precis vad vi behöver här. Jag ska se om jag kan förstå hur man använder det bara :)
BadOmen skrev:Det kan ju som sagt bli ganska fullt på skärmen om det blir en 35 torrents med långa namn :P Men om man först och främst får den att visa så här:

Namn: Ubuntu 8.04.iso
Klart: 48%
Ner: 154 KB/s
Upp: 35 KB/s

Namn: Ubuntu 8.10 Alpha 3.iso
klart: 27 %
Ner: 98 KB/s
Upp: 35 KB/s

så kan man väll sen börja se om man kan göra nån max antal torrent test. Då har man ju fått en bra grund att bygga från.
Att sätta ett maxantal är egentligen inget problem. Bara att avbryta efter ett visst antal varv i slingan. Jag oroar mig mest för att ha allting på en enda rad... blir ju sjukt jobbigt att läsa då.
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 med conky, någon som vill göra en HowTo?[löst]

Inlägg av BadOmen »

Konservburk skrev:
BadOmen skrev:Om man skulle göra så att man bara tar emot download_rate kan du då göra så man får det för varje torrent man laddar?

Så här ser det ut jag har 3 filer i rtorrent Fil ett laddar, fil två är done, fil tre laddar:
[[24531],[0],[35124]]
ner 1: 24531 KB/s
ner 2: 0 KB/s
ner 3: 35124 KB/s
Vi gör väl ett försök:

Kod: Markera allt

xmlrpc2scgi.py -p rpc.socket d.multicall started d.get_down_rate= | awk -F'[],[]' '{for(i=1;i<=NF;i++)if(!(i%3))printf("ner%d: %.1f kB/s\n",i/3,$i/1024)}'
Jag hade missat detta inlägg som du gjort. Det funkar halvbra...
min nedladdning är nu 51 KB 0 KB/s 0 KB/s men ditt script visar ner1: 0.0KB/s ner2: 51 KB/s och ingen ner3. så årdningen verkar dessutom vara lite omkasstad. En annan sak är att det blir fel i scriptet om jag skriver nånting efter det. Det blir så här:

sh: text: not found
sh: text: not found
sh: text: not found
jag har skrivit ordet text två rader under ditt script.

Är xmlstarlet nåt man använder som xmlrpc2scgi.py?
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 med conky, någon som vill göra en HowTo?[löst]

Inlägg av BadOmen »

Nu när jag testar med din första kodrad så får jag samma felmeddelande om den inte ligger längst ned.

Kod: Markera allt

    xmlrpc2scgi.py -p rpc.socket d.multicall started d.get_up_rate= d.get_down_rate= | awk -F'[],[]' '{for(i=1;i<=NF;i++)if(i%2)u+=$i;else d+=$i}END{printf"upp: %.1f kB/s\nner: %.1f kB/s\n",u/1024,d/1024}'
sh: text: not found
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Inlägg av Konservburk »

BadOmen skrev:Är xmlstarlet nåt man använder som xmlrpc2scgi.py?
Nej, vi behöver båda. xmlstarlet hugger upp det som kommer från xmlrpc2scgi.py (som fortfarande behövs för att prata med rtorrent).

Har du någon idé om vad som kan användas för att få fram "klart" i procent? Kan vi t.ex. få tag på den totala storleken för en torrent?
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 med conky, någon som vill göra en HowTo?[löst]

Inlägg av BadOmen »

ok då hänger jag med :)

Jag har än så länge bara hittat den som visar hur mycket man har fått hem men snart så även den totala storleken hoppas jag :)
d.multicall default d.get_bytes_done=
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Inlägg av Konservburk »

Jag gav upp med att få allting på en rad, så det fick bli ett skript istället:

Kod: Markera allt

#!/bin/sh
"$@" d.multicall started \
   d.get_name= \
   d.get_up_rate= \
   d.get_down_rate= \
   d.get_completed_chunks= \
   d.get_size_chunks= \
|
xmlstarlet sel -t -v / |
sed '/^$/d' |
awk '{
   switch (NR%5) {
   case 1:
      name=$0
      break
   case 2:
      up[name]=$0
      break
   case 3:
      down[name]=$0
      break
   case 4:
      done[name]=$0
      break
   case 0:
      size[name]=$0
      break
   }
} END {
   for(name in up) {
      up_sum += up[name]
      down_sum += down[name]
      #if(++i<=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")
      }
   }
   printf("Upp totalt: %.1f kB/s\n", up_sum / 1024)
   printf("Ner totalt: %.1f kB/s\n", down_sum / 1024)
}'
Kör det typ så här:

Kod: Markera allt

./skriptet.sh ./xmlrpc2scgi.py rpc.socket
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 med conky, någon som vill göra en HowTo?[löst]

Inlägg av BadOmen »

ok, ska testa det.
Den här hade varit bra om vi kunde använda.
p.get_completed_percent jag försökte använda det så här p.multicall default p.get_completed_percent=
jag får detta felmeddelande:
Traceback (most recent call last):
File "/home/jonas/rtorrent_rpc/xmlrpc2scgi.py", line 235, in <module>
main(sys.argv[1:])
File "/home/jonas/rtorrent_rpc/xmlrpc2scgi.py", line 232, in main
print xmlrpclib.loads(respxml)[0][0]
File "/usr/lib/python2.5/xmlrpclib.py", line 1132, in loads
return u.close(), u.getmethodname()
File "/usr/lib/python2.5/xmlrpclib.py", line 787, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault -501: 'Unsupported target type found.'>
och kör jag bara p.get_completed_percent= så frå jag detta fel:
Traceback (most recent call last):
File "/home/jonas/rtorrent_rpc/xmlrpc2scgi.py", line 235, in <module>
main(sys.argv[1:])
File "/home/jonas/rtorrent_rpc/xmlrpc2scgi.py", line 232, in main
print xmlrpclib.loads(respxml)[0][0]
File "/usr/lib/python2.5/xmlrpclib.py", line 1132, in loads
return u.close(), u.getmethodname()
File "/usr/lib/python2.5/xmlrpclib.py", line 787, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault -506: "Method 'p.get_completed_percent=' not defined">
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 med conky, någon som vill göra en HowTo?[löst]

Inlägg av BadOmen »

Konservburk skrev:Jag gav upp med att få allting på en rad, så det fick bli ett skript istället:

Kod: Markera allt

#!/bin/sh
"$@" d.multicall started \
   d.get_name= \
   d.get_up_rate= \
   d.get_down_rate= \
   d.get_completed_chunks= \
   d.get_size_chunks= \
|
xmlstarlet sel -t -v / |
sed '/^$/d' |
awk '{
   switch (NR%5) {
   case 1:
      name=$0
      break
   case 2:
      up[name]=$0
      break
   case 3:
      down[name]=$0
      break
   case 4:
      done[name]=$0
      break
   case 0:
      size[name]=$0
      break
   }
} END {
   for(name in up) {
      up_sum += up[name]
      down_sum += down[name]
      #if(++i<=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")
      }
   }
   printf("Upp totalt: %.1f kB/s\n", up_sum / 1024)
   printf("Ner totalt: %.1f kB/s\n", down_sum / 1024)
}'
Kör det typ så här:

Kod: Markera allt

./skriptet.sh ./xmlrpc2scgi.py rpc.socket
jag får följande fel:
/home/jonas/skriptet.sh: 44: xmlstarlet: not found
awk: line 2: syntax error at or near {
awk: line 6: syntax error at or near :
awk: line 9: syntax error at or near :
awk: line 12: syntax error at or near :
awk: line 15: syntax error at or near :
close failed: [Errno 32] Broken pipe

kan du ge mig en länk så jag kan ladda ned xmlstarlet och ska jag ha den i samma mapp som ditt script då?

Så här startade jag det:

Kod: Markera allt

${exec ~/skriptet.sh ~/rtorrent_rpc/xmlrpc2scgi.py -p ~/rtorrent_rpc/rpc.socket}
och den verkar ju börja kommunicera som det är tänkt med dit script :)
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 med conky, någon som vill göra en HowTo?[löst]

Inlägg av BadOmen »

xmlstarlet verkar man ju måsta configurera och installera tyvärr. Har du testat det?
http://sourceforge.net/project/showfile ... 8&abmode=1
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: rtorrent med conky, någon som vill göra en HowTo?[löst]

Inlägg av Konservburk »

BadOmen skrev:jag får följande fel:
/home/jonas/skriptet.sh: 44: xmlstarlet: not found
awk: line 2: syntax error at or near {
awk: line 6: syntax error at or near :
awk: line 9: syntax error at or near :
awk: line 12: syntax error at or near :
awk: line 15: syntax error at or near :
close failed: [Errno 32] Broken pipe
Du måste ju ha xmlstarlet såklart. Börja med att skaffa det och se om du fortfarande få de andra felen.
BadOmen skrev:kan du ge mig en länk så jag kan ladda ned xmlstarlet och ska jag ha den i samma mapp som ditt script då?

Kod: Markera allt

sudo apt-get install xmlstarlet
BadOmen skrev:Så här startade jag det:

Kod: Markera allt

${exec ~/skriptet.sh ~/rtorrent_rpc/xmlrpc2scgi.py -p ~/rtorrent_rpc/rpc.socket}
och den verkar ju börja kommunicera som det är tänkt med dit script :)
Du ska inte ha -p, annars verkar det bra.
Skriv svar

Återgå till "Programmering och webbdesign"