BadOmen skrev:Den verkar sortera det själv då men den sorterar olika om en fil är done eller inte och i bokstavsordning på nåt set och inte i vilken ordning de ligger i rTorrent. Skulle du kunna sortera efter namn, så spelar det inte nån roll hur rTorrent vill sortera? Det spelar ju inte nån roll att inte alla som är Done hamnar efter varandra eftersom man ser det tydligt genom att 100% är klart

Jag tänkte att det skulle vara enkelt att sortera, men eftersom det är 5 rader per torrent så kan man ju inte bara sortera radvis rakt av. I dessa fall brukar tricket vara att stoppa in ett nolltecken
\0 mellan varje element och sedan pipe:a vidare till
sort -z. Men det visade sig att vanliga
awk inte kan få ur sig några nolltecken
Om du väljer att installera
gawk så fungerar det bra, men jag kom även på en liten ful work-around som fungerar med vanliga
awk. Jag separerar helt enkelt med backspace
\b istället för med nolltecken. Därefter skickar jag vidare alltihop till
xargs som får byta ut alla backspace mot nolltecken så att det sen går att använda
sort -z. Det borde fungera bra så länge det inte finns några backspace i torrent-namnen.
BadOmen skrev:Skulle du kunna göra ett test om rTorrent är igång innan du skickar det till xmlrpc2scgi.py? Det blir ju felmeddelanden annars när ditt script försöker nå rTorrent via xmlrpc2scgi.py när rTorrent inte är igång

BadOmen skrev:Det är bättre att göra kollen i conky nåt typ så här:
Kod: Markera allt
${exec if pidof 'rtorrent'; then ~/skriptet.sh ~/rtorrent_rpc/xmlrpc2scgi.py /home/jonas/rtorrent_rpc/rpc.socket;fi }
Den skriver dock ut rtorrents pid nummer i conky och det vill man ju inte.
Att testa med
pidof är inte jättebra. Tänk om du har flera olika
rtorrent igång, eller om något annat program råkar heta samma sak, eller om själva
rtorrent skulle heta något annat, eller om kommunikationen med
rtorrent helt enkelt inte fungerar av någon anledning, osv. Det är betydligt bättre att göra en test mot socket:en istället.
Här är iaf en uppdaterad version (med ett enkelt socket-test):
Kod: Markera allt
#!/bin/sh
test -S "$2" &&
"$@" 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 / |
awk '/./ {
if (++i%5 == 1) name=$0
else if (i%5 == 2) up[name]=$0
else if (i%5 == 3) down[name]=$0
else if (i%5 == 4) done[name]=$0
else if (i%5 == 0) size[name]=$0
} END {
for(name in up) {
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
BadOmen skrev:Det som är konstigt är att när jag startar conky nu så för att få den att visa de filer som rtorrent har så måste jag först gå till rTorrent och trycka ctrl + S för att få dem att visas i conky och det även om filerna redan är igång och laddar i rTorrent. Ska testa lite mer

Det låter som att
rtorrent inte skickar det den blir ombedd att skicka isf. Man skulle ju kunna säga åt den att alltid rapportera alla torrents och istället sortera bort de stängda i efterhand.
EDIT:
BadOmen skrev:EDIT3: Jag fick bort pid nummret jag gjorde så här bara if pidof 'rtorrent' > 0; then. Så nu funkar det nog som jag vill hoppas jag

Nu behövs det bara fler som testar och ser om man hittar nån bug nån stans

Om du kör med
pidof 'rtorrent' > 0 så kommer du få in pid-numret i en fil som heter
0. Det är nog inte riktigt vad du tänkte dig.
