Filtrera och blanda många RSS-flöden?

Här diskuteras programmering och utveckling
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Filtrera och blanda många RSS-flöden?

Inlägg av ubot »

Konservburk skrev:
ubot skrev:Fast den stora nöten att knäcka är annars själva filtreringen.
En filtrering är löjligt mycket lättare än att sortera. I princip räcker det med grep -i linux så får du bara med saker som handlar om linux.
Jasså, jaha, på det viset. Hm, då frågar jag mig hur jag som rookie bäst åstadkommer ett skript (eller använder ett befintligt program) för att slå ihop rss-flöden så att jag får ett godkänt väl fungerande nytt RSS-flöde som jag sedan filtrerar på olika vis till ett antal nya RSS-flöden som också är giltiga och som går att publicera på en site? Någon eller några som vill ro båten i hamn?

Nu hoppar jag in i duschen och tar sedan en promenad vägen om hamburgerhaket. Tack för all hjälp så här långt, på återseende om 2-3h.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Filtrera och blanda många RSS-flöden?

Inlägg av Konservburk »

ubot skrev:Jasså, jaha, på det viset. Hm, då frågar jag mig hur jag som rookie bäst åstadkommer ett skript (eller använder ett befintligt program) för att slå ihop rss-flöden så att jag får ett godkänt väl fungerande nytt RSS-flöde som jag sedan filtrerar på olika vis till ett antal nya RSS-flöden som också är giltiga och som går att publicera på en site?
Det är nog lika bra att slå ihop, filtrera och sortera med en gång. Annars måste man dela på huvud-kropp-fot flera gånger, vilket verkar onödigt. Vi kan ju utgå från det jag började på förut:

Kod: Markera allt

#!/bin/bash

rss=(
"http://feeds.gawker.com/lifehacker/full"
"http://feeds.feedburner.com/weblogsinc/downloadsquad"
)

for rss in "${rss[@]}"
do wget -qO- "$rss" |
   sed ':1;N;s/\r//g;s/\n//g;b1' |
   sed '
      s/<[Ii][Tt][Ee][Mm][^>]*>/\n\0/g
      s/<\/[Ii][Tt][Ee][Mm][^>]*>/\0\n/g
   ' >/tmp/rss.xml
   if ((i++))
   then
      sed '1d;$d' </tmp/rss.xml >>/tmp/rss_body.xml
   else
      sed -n '1p' </tmp/rss.xml >/tmp/rss_head.xml
      sed '1d;$d' </tmp/rss.xml >/tmp/rss_body.xml
      sed -n '$p' </tmp/rss.xml >/tmp/rss_foot.xml
   fi
done

# rss-huvud
cat </tmp/rss_head.xml >/tmp/rss.xml

# filtrera rss-kropp
grep -i linux </tmp/rss_body.xml |

# sortera rss-kropp
sed -n 's/.*<[Pp][Uu][Bb][Dd][Aa][Tt][Ee][^>]*>\([^<]*\)<\/[Pp][Uu][Bb][Dd][Aa][Tt][Ee][^>]*>.*/date -d "\1" +%s; cat <<\\EOF\n\0\nEOF/p' |
bash |
sed '/^[0-9]\+$/{N;s/\n//}' |
sort -nr |
sed 's/^[0-9]\+//' >>/tmp/rss.xml

# rss-fot
cat </tmp/rss_foot.xml >>/tmp/rss.xml

# rensa upp temp-filer
rm -f /tmp/rss_head.xml /tmp/rss_body.xml /tmp/rss_foot.xml
Som du ser så är sorteringen väldigt mycket mer komplicerad än filtreringen. När det gäller validering så antar jag att det här blir godkänd rss/xml så länge indatan är godkänd.
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Filtrera och blanda många RSS-flöden?

Inlägg av ubot »

Konservburk skrev:
ubot skrev:Jasså, jaha, på det viset. Hm, då frågar jag mig hur jag som rookie bäst åstadkommer ett skript (eller använder ett befintligt program) för att slå ihop rss-flöden så att jag får ett godkänt väl fungerande nytt RSS-flöde som jag sedan filtrerar på olika vis till ett antal nya RSS-flöden som också är giltiga och som går att publicera på en site?
Det är nog lika bra att slå ihop, filtrera och sortera med en gång. Annars måste man dela på huvud-kropp-fot flera gånger, vilket verkar onödigt. Vi kan ju utgå från det jag började på förut:

Kod: Markera allt

#!/bin/bash

rss=(
"http://feeds.gawker.com/lifehacker/full"
"http://feeds.feedburner.com/weblogsinc/downloadsquad"
)

for rss in "${rss[@]}"
do wget -qO- "$rss" |
   sed ':1;N;s/\r//g;s/\n//g;b1' |
   sed '
      s/<[Ii][Tt][Ee][Mm][^>]*>/\n\0/g
      s/<\/[Ii][Tt][Ee][Mm][^>]*>/\0\n/g
   ' >/tmp/rss.xml
   if ((i++))
   then
      sed '1d;$d' </tmp/rss.xml >>/tmp/rss_body.xml
   else
      sed -n '1p' </tmp/rss.xml >/tmp/rss_head.xml
      sed '1d;$d' </tmp/rss.xml >/tmp/rss_body.xml
      sed -n '$p' </tmp/rss.xml >/tmp/rss_foot.xml
   fi
done

# rss-huvud
cat </tmp/rss_head.xml >/tmp/rss.xml

# filtrera rss-kropp
grep -i linux </tmp/rss_body.xml |

# sortera rss-kropp
sed -n 's/.*<[Pp][Uu][Bb][Dd][Aa][Tt][Ee][^>]*>\([^<]*\)<\/[Pp][Uu][Bb][Dd][Aa][Tt][Ee][^>]*>.*/date -d "\1" +%s; cat <<\\EOF\n\0\nEOF/p' |
bash |
sed '/^[0-9]\+$/{N;s/\n//}' |
sort -nr |
sed 's/^[0-9]\+//' >>/tmp/rss.xml

# rss-fot
cat </tmp/rss_foot.xml >>/tmp/rss.xml

# rensa upp temp-filer
rm -f /tmp/rss_head.xml /tmp/rss_body.xml /tmp/rss_foot.xml
Som du ser så är sorteringen väldigt mycket mer komplicerad än filtreringen. När det gäller validering så antar jag att det här blir godkänd rss/xml så länge indatan är godkänd.
Ok, det verkar ju lovande (även om jag inte begriper mycket av koden, hehe) men hur gör man sedan för att använda koden. Man lägger den i en fil som man sedan döper till något och sedan exekverar man filen, eller vad?

Hur testar jag koden, bara att köra rakt av från terminalen eller, copy & paste?

Och om man vill filtrera med mer än Linux, lägger man bara till ytterligare ord då eller?
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Filtrera och blanda många RSS-flöden?

Inlägg av Konservburk »

ubot skrev:Ok, det verkar ju lovande (även om jag inte begriper mycket av koden, hehe) men hur gör man sedan för att använda koden. Man lägger den i en fil som man sedan döper till något och sedan exekverar man filen, eller vad?

Hur testar jag koden, bara att köra rakt av från terminalen eller, copy & paste?
Du lägger koden i en fil som du döper till vad du vill, låt oss säga rss.sh. Lägg till alla dina rss-länkar i listan, gör filen körbar, och kör helt enkelt filen. Då dyker det upp en xml-fil, /tmp/rss.xml som du kan kopiera till din webserver och sedan använda som vilken rss-länk som helst.
ubot skrev:Och om man vill filtrera med mer än Linux, lägger man bara till ytterligare ord då eller?
Det beror på hur du vill filtrera, t.ex:

* både "linux" och "ubuntu".
* någon av "linux" eller "ubuntu" (eller båda)
* antingen "linux" eller "ubuntu" (men inte båda)
* varken "linux" eller "ubuntu"
* "linux" men inte "ubuntu"
* osv

Om du vill ha ut flera olika xml-filer med olika filtrering så måste du upprepa det som finns efter for-slingan flera gånger. Men man kan såklart stoppa in det in en funktion så att det inte blir så mycket upprepad kod.
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Filtrera och blanda många RSS-flöden?

Inlägg av ubot »

Konservburk skrev:
ubot skrev:Ok, det verkar ju lovande (även om jag inte begriper mycket av koden, hehe) men hur gör man sedan för att använda koden. Man lägger den i en fil som man sedan döper till något och sedan exekverar man filen, eller vad?

Hur testar jag koden, bara att köra rakt av från terminalen eller, copy & paste?
Du lägger koden i en fil som du döper till vad du vill, låt oss säga rss.sh. Lägg till alla dina rss-länkar i listan, gör filen körbar, och kör helt enkelt filen. Då dyker det upp en xml-fil, /tmp/rss.xml som du kan kopiera till din webserver och sedan använda som vilken rss-länk som helst.
ubot skrev:Och om man vill filtrera med mer än Linux, lägger man bara till ytterligare ord då eller?
Det beror på hur du vill filtrera, t.ex:

* både "linux" och "ubuntu".
* någon av "linux" eller "ubuntu" (eller båda)
* antingen "linux" eller "ubuntu" (men inte båda)
* varken "linux" eller "ubuntu"
* "linux" men inte "ubuntu"
* osv

Om du vill ha ut flera olika xml-filer med olika filtrering så måste du upprepa det som finns efter for-slingan flera gånger. Men man kan såklart stoppa in det in en funktion så att det inte blir så mycket upprepad kod.
Nu börjar det likna någonting det här. Ja, alltså jag vill ju egentligen kunna filtrera på alla möjliga sätt beroende på vilen typ av rss-fil jag vill skapa av alltihop, dvs typ alla alternativ som du nämnde. Sedan funderar jag på om det rä så att beskrivningen av RSS-flödena samt titeln verkligen innehåller tillräckligt mycket information för at tfiltrera effektivt. Men vad är annars alternativet, manuell filtrering är ju ett rent h-vete om man har 500 RSS-flöden med 10-30 länkar i varje.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Filtrera och blanda många RSS-flöden?

Inlägg av Konservburk »

ubot skrev:Sedan funderar jag på om det rä så att beskrivningen av RSS-flödena samt titeln verkligen innehåller tillräckligt mycket information för at tfiltrera effektivt. Men vad är annars alternativet, manuell filtrering är ju ett rent h-vete om man har 500 RSS-flöden med 10-30 länkar i varje.
Det går såklart att följa länken i varje <item>-block och filtrera mot det som den pekar på istället. Men då måste du ju ladda ner en väldans massa saker varje gång du uppdaterar dina generarade rss-filer. Och tanken med rss är ju just att det inte ska vara så mycket att ladda ner. Så det förslaget känns aningen kontraproduktivt.
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Filtrera och blanda många RSS-flöden?

Inlägg av ubot »

Konservburk skrev:
ubot skrev:Sedan funderar jag på om det rä så att beskrivningen av RSS-flödena samt titeln verkligen innehåller tillräckligt mycket information för at tfiltrera effektivt. Men vad är annars alternativet, manuell filtrering är ju ett rent h-vete om man har 500 RSS-flöden med 10-30 länkar i varje.
Det går såklart att följa länken i varje <item>-block och filtrera mot det som den pekar på istället. Men då måste du ju ladda ner en väldans massa saker varje gång du uppdaterar dina generarade rss-filer. Och tanken med rss är ju just att det inte ska vara så mycket att ladda ner. Så det förslaget känns aningen kontraproduktivt.
Mhm, vilket påverkar trafikmängden hos webbhotellet eller?

Jag kanske kan köra direkt från min dator? Då gör det väl inte så mycket om det skulle dra mycket trafik, jag lär väl inte överträffa ISPns gränser?

Hur exekverar jag filen, vilket kommando använde rjag i Terminalen? Jag försöker med rss.sh kort och gott, med det fungerar inte. Jag har fulla rättigheter till filen.

Edit:

Nu gick det att exekvera filen. När jag väljer kör i Terminal så kommer Terminalfönstret upp, men sedan händer inget. Ingen fil kommer ut. Vad är det som är fel?
Senast redigerad av 2 ubot, redigerad totalt 9 gång.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Filtrera och blanda många RSS-flöden?

Inlägg av Konservburk »

ubot skrev:Mhm, vilket påverkar trafikmängden hos webbhotellet eller?
Hur mycket det påverkar trafikmägden beror helt på hur ofta du uppdaterar dina rss-filer. I vanliga fall vill man nog uppdatera var femte minut eller liknade. Men ska du bara uppdatera någon gång per dag så lär det ju inte vara några problem att även dra ner det <item>-blocken pekar på.
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Filtrera och blanda många RSS-flöden?

Inlägg av ubot »

Konservburk skrev:
ubot skrev:Mhm, vilket påverkar trafikmängden hos webbhotellet eller?
Hur mycket det påverkar trafikmägden beror helt på hur ofta du uppdaterar dina rss-filer. I vanliga fall vill man nog uppdatera var femte minut eller liknade. Men ska du bara uppdatera någon gång per dag så lär det ju inte vara några problem att även dra ner det <item>-blocken pekar på.
Ok, det hade ju varit bra att automatisera alltihop. Fast det blir ju knepigt om det inte finns tillräckligt med info i RSS-flödet för att filtrera. Då kommer filterfunktionen inte ge rätt utfall.

Nu gick det att exekvera filen. När jag väljer kör i Terminal så kommer Terminalfönstret upp, men sedan händer inget. Ingen fil kommer ut. Vad är det som är fel?
Senast redigerad av 1 ubot, redigerad totalt 9 gånger.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Filtrera och blanda många RSS-flöden?

Inlägg av Konservburk »

ubot skrev:Jag kanske kan köra direkt från min dator? Då gör det väl inte så mycket om det skulle dra mycket trafik, jag lär väl inte överträffa ISPns gränser?
Det beror fortfarande helt på hur många rss-länkar du har, vad de pekar på, och hur ofta du uppdaterar filerna. Du säger att det rör sig om ca 500 rss-länkar. Säg att vare rss-länk har runt 50 <item>-block. Då måste du dra ner 50*500 = 25000 sidor varje gång du uppdaterar. Om sidorna i genomsnitt är 50kB stora så blir det 50*1024*50*500 = 1280000000, vilket är något mer än 1GB. Tänker du då uppdatera var femte minut så kan du ju själv räkna ut att det blir en hel del trafik på ett dygn.
Användarvisningsbild
micke_nordin
Inlägg: 1539
Blev medlem: 21 aug 2008, 17:03
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Re: Filtrera och blanda många RSS-flöden?

Inlägg av micke_nordin »

ubot skrev: Nu gick det att exekvera filen. När jag väljer kör i Terminal så kommer Terminalfönstret upp, men sedan händer inget. Ingen fil kommer ut. Vad är det som är fel?
Har du kollat i mappen /tmp/ efter filen rss.xml ?

/Micke
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Filtrera och blanda många RSS-flöden?

Inlägg av ubot »

Konservburk skrev:
ubot skrev:Jag kanske kan köra direkt från min dator? Då gör det väl inte så mycket om det skulle dra mycket trafik, jag lär väl inte överträffa ISPns gränser?
Det beror fortfarande helt på hur många rss-länkar du har, vad de pekar på, och hur ofta du uppdaterar filerna. Du säger att det rör sig om ca 500 rss-länkar. Säg att vare rss-länk har runt 50 <item>-block. Då måste du dra ner 50*500 = 25000 sidor varje gång du uppdaterar. Om sidorna i genomsnitt är 50kB stora så blir det 50*1024*50*500 = 1280000000, vilket är något mer än 1GB. Tänker du då uppdatera var femte minut så kan du ju själv räkna ut att det blir en hel del trafik på ett dygn.
Oj, oj, men om jag kör skriptet från min dator och sedan låter siten på webbhotellet läs in dom resulterande 10-30 RSS-filerna så borde det väl inte vara så farligt. Om man kör skriptet 5-10 ggr per dygn så blir det ju lika många GB som jag belastar min bredbandsuppkoppling. Det är väl inte så farligt?
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Filtrera och blanda många RSS-flöden?

Inlägg av ubot »

micke_nordin skrev:
ubot skrev: Nu gick det att exekvera filen. När jag väljer kör i Terminal så kommer Terminalfönstret upp, men sedan händer inget. Ingen fil kommer ut. Vad är det som är fel?
Har du kollat i mappen /tmp/ efter filen rss.xml ?

/Micke
Jag hitar ingen sådan mapp överhuvudtaget, kanske det som är felet, måste jag skapa den manuellt först?

Edit:

Jag har hittat filen. Jag velade runt i min Hemkatalog efter tmp-katalogen, sorry!
Senast redigerad av 1 ubot, redigerad totalt 9 gånger.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Filtrera och blanda många RSS-flöden?

Inlägg av Konservburk »

ubot skrev:Ok, det hade ju varit bra att automatisera alltihop. Fast det blir ju knepigt om det inte finns tillräckligt med info i RSS-flödet för att filtrera. Då kommer filterfunktionen inte ge rätt utfall.
RSS är till för att det ska finnas tillräckligt med info direkt i rss-filen för att man ska kunna filtrera på ett tillfredställande sätt. Tänken är just att det inte ska behöva bli så mycket trafik.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Filtrera och blanda många RSS-flöden?

Inlägg av Konservburk »

ubot skrev:Jag hitar ingen sådan mapp överhuvudtaget, kanske det som är felet, måste jag skapa den manuellt först?
Har du ingen /tmp-katalog? Då är det något som är allvarligt fel med din installation.
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Filtrera och blanda många RSS-flöden?

Inlägg av ubot »

Konservburk skrev:
ubot skrev:Ok, det hade ju varit bra att automatisera alltihop. Fast det blir ju knepigt om det inte finns tillräckligt med info i RSS-flödet för att filtrera. Då kommer filterfunktionen inte ge rätt utfall.
RSS är till för att det ska finnas tillräckligt med info direkt i rss-filen för att man ska kunna filtrera på ett tillfredställande sätt. Tänken är just att det inte ska behöva bli så mycket trafik.
Ok, ok, det kanske räcker med informationen i RSS-filen. Det är väl jag som får filtrera hårdare för att se till att få med det jag verkligen vill ha med dom olika metoderna du nämnde. Om man enbart använder sig av RSS-filernas innehåll, vad talar vi då om för trafikmängd vid en uppdatering av 500 RSS-flöden?
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Filtrera och blanda många RSS-flöden?

Inlägg av ubot »

Konservburk skrev:
ubot skrev:Jag hitar ingen sådan mapp överhuvudtaget, kanske det som är felet, måste jag skapa den manuellt först?
Har du ingen /tmp-katalog? Då är det något som är allvarligt fel med din installation.
Haha, jo, jag hittade den ju. Sorry! Det är inget fel på installationen, det är snarare fel på personen som sitter framför datorn. :)
ubot
Inlägg: 4613
Blev medlem: 04 jan 2008, 14:03
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS

Re: Filtrera och blanda många RSS-flöden?

Inlägg av ubot »

Jag har testat skriptet nu ett par gånger och det verkar som om bara Lifehackers RSS-flöde följer med, är det något som är fel eller är det filtret som filtrerat bort det andra flödet? Det var ju två i testet.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Filtrera och blanda många RSS-flöden?

Inlägg av Konservburk »

ubot skrev:Ok, ok, det kanske räcker med informationen i RSS-filen. Det är väl jag som får filtrera hårdare för att se till att få med det jag verkligen vill ha med dom olika metoderna du nämnde. Om man enbart använder sig av RSS-filernas innehåll, vad talar vi då om för trafikmängd vid en uppdatering av 500 RSS-flöden?
Det beror helt på hur stora de olika rss-filerna är. Men säg att de inte är större än 100kB styck. För 500 stycken blir det då i absolut värsta fall 50MB per uppdatering, men förmodligen mycket mindre än så. Med en uppdatering var femte minut så blir det som mest 15GB per dygn. Det exakta värdet per uppdatering kan du kolla när du väl har lagt in alla dina 500 rss-länkar.
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Filtrera och blanda många RSS-flöden?

Inlägg av Konservburk »

ubot skrev:Jag har testat skriptet nu ett par gånger och det verkar som om bara Lifehackers RSS-flöde följer med, är det något som är fel eller är det filtret som filtrerat bort det andra flödet? Det var ju två i testet.
Båda ska vara med... om det nu inte är så att den andra rss-länken helt enkelt inte innehåller några <item>-block som handlar om "linux".
Skriv svar

Återgå till "Programmering och webbdesign"