Feeds:
Innlegg
Kommentarar

Posts Tagged ‘rss’

Her er ei av dei meir underomtalte tenestene for internettmenneske: RSS. RSS er ikkje noko mystisk, og ikkje noko vanskeleg, berre veldig smart. Mange veit allereie kva RSS er for noko, men her er nokre ord om det. Det vert med utgangspunkt i korleis eg sjølv har organisert meg, og eg bør vel understreke at bloggposten ikkje er sponsa. Dei som kan dette, er herved åtvara om at eg bruker «RSS» om nyhendemating generelt utan å drøfte det særleg.

Så altså. Eg prøver å fylgje med på oppunder 300 nettstader, fordi eg synest dei i ein eller annan grad er verde å fylgje med på, anten det kjem nye oppslag ørten gonger for dag eller berre eit par gonger i året. Somme nettstader les eg nøye, særleg bloggane til kjentfolk og nokre av mine tidlegare studentar. Andre nettstader les eg meir overflatisk, slik som overskriftene til Herøynytt eller MacRumors, der eg heller les nøye dei oppslaga som er spesielt interessante. Men å sjekke oppunder 300 nettstader manuelt og etter innfallsmetoden, det gjer eg ikkje. Og å sjekke dei manuelt og systematisk, det har eg ikkje tid til.

I staden abonnerer eg på desse nettstadene. Men ikkje slik at eg får ein e-post kvar gong noko skjer. Dét hadde vore for masete. Ikkje abonnerer eg via Twitter heller. Twitter fyk litt for fort forbi. Facebook sameleis (dessutan er eg ikkje på Facebook).

RSS-lesar

På datamaskina mi har eg ein RSS-lesar, enkelt sagt ein spesiell type nettlesar som berre bryr seg om akkurat desse abonnementa. Med ein RSS-lesar er alle dei nesten 300 nettstadene samla på éin plass. Kjem det eit nytt oppslag, ligg det oppslaget der og ventar til eg anten les saka eller markerer saka som lesen. Eg slepp å taste inn adresser eller leite meg fram i bokmerka. Og eg slepp å sjekke om det har kome eit nytt oppslag som eg ikkje hugsar å ha sett før. Eg slepp til og med å hugse at eg ville fylgje med på akkurat den og den nettstaden. Alt skjer automatisk, bortsett frå akkurat det å lese. Og det er kjempeenkelt å hoppe frå den eine til den andre nettstaden som eg abonnerer på.

På biletet her frå RSS-lesaren ReadKit (klikk på biletet for å sjå ein større versjon) ser vi at sidan sist eg las noko på dei aktuelle nettstadene, så har det m.a. kome 11 nye oppslag på Herøynytt og 10 på MacRumors. Eg har gruppert abonnementa mine slik at t.d. MacRumors, iMore og andre Mac-relaterte nettstader ligg i mappa «Mac», medan Herøynytt, NRKbeta og Vikebladet ligg under «anna». Nettstader der ingenting er ulese, viser ikkje på oversikta her (men kan sjåast vha. eit lite klikk).

ReadKit

ReadKit. Klikk for større bilete.

Her har eg klikka på overskrifta til ei ny sak frå nettstaden iMore, og får sjå til høgre kva som er å lese om den saka. Somme tider, og avhengig av korleis nettstadene har konfigurert systemet sitt, ser ein heile saka her og no, med bilete og det heile (men med litt forenkla formatering, sjå under), andre tider får vi sjå berre ingressen, og må trykkje på ein ekstra tast for å sjå saka slik ho er meint sjå ut i ein vanleg nettlesar. RSS-lesaren har innebygd nettlesar og kan vise nettsida direkte, men kan også sende den aktuelle nettsaka vidare til ein vanleg nettlesar (t.d. Safari eller Chrome) og opne nyhendet der.

Løyndomen bak denne nydeleg praktiske måten å fylgje med på ligg i at kvar av desse nettstadene oppdaterer ei lita fil kvar gong dei publiserer ei ny sak. La oss enkelt kalle denne fila for «RSS-fila» på nettstaden. Og det er denne fila RSS-lesaren sjekkar med jamne mellomrom, slik at alt ligg klart når det skal lesast.

Til høgre på biletet over ser vi kva RSS-fila har å fortelje om denne bestemte saka. Det er ikkje sjølve nettsaka vi ser, berre varselet om nettsaka, og det varselet inneheld altså av og til heile nettsaka, andre tider berre litt. Fordi dette eigentleg berre er eit varsel, er formateringa litt enkel, og det trengst ikkje stor kapasitet eller mykje tid for at RSS-lesaren skal laste det ned. Men vi kan altså enkelt gå vidare til sjølve nettsaka slik ho er meint å sjå ut, dersom vi gidd. Eg gidd ikkje alltid.

feed iconHar du lagt merke til dette symbolet på nettsider her og der? Dette er RSS-symbolet (eller meir generelt «feed-ikonet», om ein vil, sidan RSS eigentleg er namnet på ein spesifikk teknisk standard innanfor det som av og til vert kalla «nyhendemating»). Klikkar ein på dette symbolet på diverse nettstader, så kjem ein til «RSS-fila». Om ein då har ein RSS-lesar installert på maskina si, så kan det godt vere at denne tek hintet og tilbyr deg å abonnere på nettstaden. Slik fungerer t.d. ReadKit, som altså er den RSS-lesaren eg kjenner best for tida. (ReadKit er eigentleg eit meir generelt leseprogram som støttar meir enn RSS, til dømes også Readability og Pocket, men eg bruker programmet primært til RSS.)

Ulike måtar å lese på

I ReadKit er det også lett å setje opp filter (faste søk), slik at dersom det dukkar opp noko spesielt på ein nettstad som ein til vanleg les overflatisk, så vert det likevel oppdaga. Mellom anna har eg eit søk etter «Norway» på avdelinga med moro-nettstader, slik som Not Always Right, der vi kan lese om kundar som ikkje alltid har rett sjølv om dei trur at dei har det. (Denne kunden hadde rett, forresten. Det hadde ikkje denne.) For tida har eg også eit søk gåande på Mac-nettstadene for å få med meg artiklane om det nyaste operativsystemet.

Press

Nytt å lese også på mobil.

No skal eg vedgå at eg har litt fleire behov enn som så. Sidan eg sit ved litt skiftande datamaskiner, synest eg det er praktisk å samle abonnementa mine på ein nettstad som eg kan vitje via nettlesaren uavhengig av kvar eg er, altså ha abonnementa mine «i skya», som det heiter no for tida. Eg har abonnementa mine på ei teneste som heiter Feedbin, og som kostar 30 amerikanske dollar i året. Der kan ein logge på i nettlesaren og lese som om det var ein vanleg RSS-lesar lokalt på datamaskina, men heile greia ligg altså på ein amerikansk nettstad. Feedbin er dermed ein nettbasert RSS-lesar som ikkje bryr seg om du har Mac, Windows eller Linux.

Og eigentleg er Feedbin så bra at ein ikkje treng noko eige program på datamaskina utover nettlesaren, og ofte nok les eg direkte der, men eg bruker altså i tillegg ReadKit, på grunn av nokre ekstra finessar der. ReadKit koplar seg opp mot Feedbin, og alt eg gjer i ReadKit (eller direkte på feedbin.com i nettlesaren), vert synkronisert med alle datamaskinene som eg les RSS på, inkludert mobilen. Altså, les eg ein artikkel på Macen, eller markerer ein artikkel som favoritt, så vert dette automatisk oppdatert på mobilen, der eg bruker RSS-lesaren Press.

Det finst også andre nettbaserte RSS-lesarar i same sjanger som Feedbin, t.d. NewsBlur og Feed Wrangler. Før fanst Google Reader. Då det vart annonsert i mars 2013 at denne snart skulle leggjast ned, fekk Feedly (denne har både gratis- og betalingsversjon) 3 millionar nye brukarar berre dei to fyrste vekene.

Og som program på eins eiga datamaskin finst det RSS-lesarar som t.d. ReadKit og Reeder, som kan synkroniserast vha. Feedbin, NewsBlur og desse andre tenestene, og det finst RSS-lesarar som ikkje er avhengige av (eller ikkje klarer) å synkronisere via slike tenester. Og det finst dei som kan begge delar: Om ein ikkje vil synkronisere med ein nettbasert RSS-lesar, så kan t.d. ReadKit sitje og ruge på abonnementa på lokal datamaskin heilt i det skjulte. Også somme nettlesarar har innebygd RSS-støtte.

Å abonnere

Over nemnde eg RSS-symbolet. Klikkar ein på det i nettlesaren, vil gjerne RSS-lesaren tilby oss å abonnere, som nemnt i stad. Men det hender seg at nettstader tilbyr RSS men ikkje har nokon synleg knapp å klikke på. Også då finst det råd. Anten det er ein slik knapp synleg eller ikkje, så er det i ReadKit berre å velje «Add Feed Subscription…» (eller trykkje ⌘N), liknande finst nok også i andre RSS-lesarar. Dette opnar ein dialogboks der ein kan opplyse om adressa til sjølve nettstaden, t.d. http://www.heroynytt.no, slik som her:

heroynytt1-437

Då sjekkar ReadKit den nettstaden, og startar abonnementet så sant der er noko å abonnere på. Akkurat denne nettstaden tilbyr meir enn éin abonnementstype, og då får vi fyrst valet mellom «heroynytt RSS» og «heroynytt ATOM», og så må ein velje den eine (desse to tenestene går ut på det same, Atom er berre ein nyare standard enn RSS-standarden, men RSS-lesarar taklar begge fint):

heroynytt2-437

Dette fungerer altså anten det finst ei synleg RSS-lenkje på nettsida eller ikkje, så lenge html-koden til sida inneheld opplysningar, til ære for RSS-lesaren, om at det er mogeleg å abonnere. YouTube-kanalar, til dømes, tilbyr RSS men utan å annonsere det med ein eigen knapp. Slik som morokanalen Knallerfrauen.

Mine abonnement ligg altså på Feedbin, og Feedbin har den same funksjonaliteten. Men sidan Feedbin er ei teneste som ein har tilgjenge til gjennom nettlesaren, kan ein også bruke eit spesielt bokmerke. Dersom eg vil abonnere på noko som eg les akkurat her og no, så klikkar eg berre på eit bokmerke i nettlesaren som ser slik ut:

javascript:location='https://feedbin.me/?subscribe='+location.href

Dersom eg tidlegare har logga inn på Feedbin i nettlesaren, så fyk nettlesaren no frå den nettsida eg les, over til Feedbin, leiter etter RSS-tenester på nettsida som eg nettopp var på, og byrjar å abonnere (eller tilbyr meg eit val mellom ulike abonnement fyrst) utan at eg treng å taste inn noka nettadresse. Og i mitt tilfelle er jo Feedbin og ReadKit synkroniserte, så same kva eg gjer den eine staden, så viser det att den andre staden.

Somme nettstader, slik som VG, Dagbladet og Aftenposten, har også eigne nyhendematingar for t.d. innanriksnytt, utanriksnytt, sport og liknande, og NRK har både slikt og distriktsnyhende. Det er ikkje alltid ein finn alt dette direkte via framsida (lenkjene i dette avsnittet går til eigne nettsider på dei nemnde nettstadene med oversikt over kva dei tilbyr). På bloggar kan ein sameleis ofte abonnere ikkje berre på nye innlegg men også nye kommentarar.

For dei ukule?

Somme har fått det føre seg at RSS er på veg ut. Då til dømes ein nettstad som eg fylgjer med på, fekk seg nye nettsider for noko sidan, vart det ikkje prioritert å skru på RSS. Webdesignerane hadde nemleg fortalt at RSS ikkje er så vanleg lenger. Eg trur desse webdesignerane blanda saman «ikkje vanleg lenger» med «Twitter sløyfar RSS til fordel for Twitter, og Google Reader er nedlagd». Dei er i så fall ikkje dei einaste.

RSS har neppe nokon gong vore for det store fleirtalet av nettbrukarar (men det finst svært mange nettbrukarar, då). Likevel kjem ein ikkje unna at RSS både er praktisk og – heldigvis for brukarane – i full vigør, trass i at Google la ned Reader og at Apple ein kort periode fjerna RSS-støtta i Safari (gjeninnført i 2014). På verdsbasis tilbyr 20–30 % av trafikktunge nettstader RSS pr. juni 2015 (dynamisk kjelde, artikkel frå mars 2015). Dei fleste nettaviser som eg har vore innom, tilbyr RSS. Framsida på Aftenposten har rundt 3000 RSS-abonnentar via Feedly åleine, medan xkcd vert opplyst å ha 346 000 RSS-abonnentar der. Feedly sjølv har i dag 15 millionar brukarar, og dette er berre éin nettbasert RSS-lesar. RSS er ikkje spesielt daudt, altså. Det er forresten også RSS som ligg og durar under panseret i podkast-teknologien.

Mange RSS-brukarar formidlar elles gjerne dei beste funna sine til andre via t.d. Twitter og Facebook, eller i nabopraten, slik at det er fleire som dreg nytte av opplegget enn berre dei som faktisk sit og abonnerer. Og finn vi ein nettstad som prøver å gjere seg for kul til å kunne tilby RSS, så finst det løysingar på det òg, i alle fall for dei av oss som ikkje er redde for litt html-kode.

RSS, eller nyhendemating generelt, er kanskje ikkje det som folk snakkar mest om for tida. Men nettopp derfor var det vel på tide at også eg skreiv ein liten bloggpost om det. (Å avslutte bloggposten med ein metakommentar er nesten like bra som å opne ein tale med «eg er ingen talar, men».)

Read Full Post »

Farvel til Google Reader

Google Reader-logoEit par kveldar før Google Reader legg inn årane, har eg så vidt byrja å finne ut av kvar eg skal gjere av meg, med alle atterhald om at eg ombestemmer meg. Eg tippar at eg ikkje er den einaste som har venta på både finessar hjå alternativa og på kvar Reeder, gReader Pro og artsfrendar skulle ta vegen.

For frå 1. juli av er det altså slutt hjå Google. Og ettersom også eg har gjort meg avhengig av å kunne synkronisere mellom fleire apparat (du verda, det gjekk fort å ta dette for gjeve), er det vel på tide no å byrje å tenkje på å hive seg rundt.

Betalingstenestene Feedbin og NewsBlur har mange snakka om. Men etter at gratistenesta Feedly (registreringsfri Google-kopla konto med heilautomagikk) annonserte at dei skal få OPML-støtte snart, er heller ikkje dei så avskrekkande lenger. Reeder har snakka om ditt og dutt og meir til men ikkje om datt, og siste nytt derifrå er at den nye Mac-versjonen rett og slett ikkje finst enno. Dermed er det tydelegvis ReadKit som seglar opp som lokal lesar i alle fall i starten, for ReadKit stør allereie no både ditt og datt men ikkje dutt, men derimot også dått, altså Feed Wrangler. Og medan gReader stør ditt men ikkje datt eller dutt, stør Press både ditt, datt og dått men ikkje dutt.

Ein siste tryggingskopi av RSS-lenkjene vart henta ut via Google Takeout i går kveld. At RSS er ein bra ting, har mange andre skrive utførlege utgreiingar om desse månadene. Og at verda går vidare utan Google Reader.

No prøver eg ut Feedbin, etter å leikt litt med Feedly fyrst. Brukargrensesnittet til Feedbin i nettlesaren er så bra at eg gløymer at eg ikkje er i ReadKit eller Reeder. Arkivet strekkjer seg til dels fleire år tilbake. Favorittane mine frå Google Reader kunne importerast frå starred.json i Takeout-tryggingskopien. Einskildstraumar kan merkjast for å gå automatisk via Readability. Og så finst det sikkert slikt eg kjem til å sakne etter kvart. Den tid, den sorg.

Read Full Post »

Frå Safari til Google Reader

Summary in English at the bottom of the blogpost. The script extracts RSS feeds from the Safari bookmarks export (limited to feeds in the Bookmarks Bar and subfolders) and saves them in an opml file.

* * * * * * *

Eg har Safari som nettlesar i det daglege, og i Safari har eg også ein del RSS-bokmerke. Men når eg er på reisefot med iPad, bruker eg ein app som kommuniserer med Google Reader, det var visst litt praktisk. Eg kunne sjølvsagt konstant ha brukt berre Google Reader når eg sit ved datamaskina, men slik har det no ikkje vorte. Mellom anna fordi Google Reader ikkje tillèt mappe i mappe, og det er også meir tungvint å redigere bokmerka der. Men kven veit korleis eg les RSS i framtida.

I alle fall, til poenget: Eg var for lat til å leggje alle RSS-lenkjene mine frå Safari manuelt inn i Google Reader. I staden laga eg eit skript som trekkjer ut RSS-bokmerke frå bokmerkeeksporten i Safari 5.1 for Mac, og lagrar dei i ei opml-fil, som så kan importerast i Google Reader eller andre RSS-lesarar.

Fyrst, ha i bakhovudet at Safari viser talet på ulesne RSS-artiklar i ein parentes, men at dette gjeld berre for RSS-bokmerke som ligg i bokmerkelina. RSS-lenkjer som ligg i bokmerkemenyen, oppdaterer seg ikkje. Derfor hentar skriptet ut RSS-lenkjer berre frå bokmerkelina med undermapper.

Skjermbilete: Safari med RSS-bokmerke

Då eg tok skjermbiletet, hadde eg 220 + 3 ulesne artiklar. Som vi ser på biletet, er bokmerka mine til dels – men ikkje fullstendig – sorterte i mapper.

Det vi kan kalle 1. nivå, er sjølve bokmerkelina, som i seg sjølv er ei mappe (det ser du om du ser etter i bokmerkemenyen). Alt innhald som ligg direkte på bokmerkelina, er på 2. nivå. Der på 2. nivå ligg det eitt RSS-bokmerke i min Safari, det heiter «feed», og har 3 ulesne artiklar på biletet. Her på 2. nivå ligg også mappa «Nyhende» med 220 ulesne artiklar. Inne i den mappa har vi både lenkjer (den eine har 1 ulesen artikkel) og nye mapper. La oss kalle dette 3. nivå. Og den eine mappa på 3. nivå inneheld mapper på 4. nivå, desse mappene har namn etter årstal, og inni der finst fleire bokmerke igjen.

Det er heilt i orden å behalde denne strukturen i opml-fila, og vanlege RSS-lesarar taklar det. Heilt mot slutten av skriptet kan ein velje korleis ein vil gjere dette, om ein vil behalde heile mappestrukturen eller ikkje. Som standard er det stilt inn til ikkje å behalde heile strukturen, dette til ære for Google Reader.

For Google Reader liker altså ikkje mapper inne i mapper. Så sjølv om bokmerka overlever, må skriptet gjere noko med mappestrukturen som dei ligg i. Skriptet tek då vare berre på mappenamna på nivå 3. Dette tyder at når opml-fila vert importert i Google Reader, så er alt innhaldet frå mappene «2006», «2008», «2009», «2010» og «2011» samla i den mappa som desse årstala var grupperte under i Safari, men sjølve årstalssorteringa er borte. Bokmerka som ligg direkte på bokmerkelina (altså «feed») og bokmerke som ligg rett under «Nyhende», vil lande utanfor mappestrukturen i Google Reader.

Men skriptet kan altså også redigerast slik at fullstendig mappestruktur vert teken vare på. Det er berre å la vere å køyre tekststrengene gjennom «mappeslettingsubrutine». For å slette mapper på andre måtar er det elles denne subrutinen som må redigerast.

Og her er skriptet

(This is the Norwegian version. See below for the English version.)

#!/bin/sh
# Jardar Eggesbø Abrahamsen 19.8.2011, 15.10.2011, 1.3.2012
# https://jardar.wordpress.com/2012/03/10/fra-safari-til-google-reader/
# Skriptet tek føre seg av bokmerkeeksport frå Safari 5.1,
# og plukkar ut rss-lenkjene frå bokmerkelina og undermappene, ikkje 
# frå andre stader, og lagar ei opml-fil.
#
# LISENS
# Du har lov til å modifisere skriptet. Du har lov til å distribuere 
# modifikasjonen din, så sant han inneheld informasjon om kven som laga 
# det opphavlege skriptet, og så sant du ikkje krev betalt for det. Om 
# du ynskjer å distribuere skriptet eller ein modifisert versjon av det 
# under andre vilkår, eller inkorporere det i andre produkt, må du be 
# meg om løyve.
# Kontakt: abjaeg krullalfa gmail punktum com (eg les ikkje denne adressa kvar dag)

if [ "$1" = "" ] ; then
  echo
  echo "   safariopml filnamn.html"
  echo "   Det vil verte laga ei fil som heiter filnamn.opml"
  echo
  exit
fi

filnamn="$1"
nytt_filnamn=`echo "$filnamn" | sed 's/\.html$/.opml/'`

# Sile bort andre linkar enn feed-URL-ar, og ta vare på overliggjande mapper,
# fjerne hermeteikn frå mappenamn, skifte ut mappenamna med opml-taggar.
bokmerka=`cat "$filnamn" \
| grep -v 'HREF="[^f][^e][^e][^d]' \
| sed 's/<DT>//' \
| awk '/<H3 FOLDED>/ { gsub ("\"", "") ; print } ; !/<H3 FOLDED>/ { print }' \
| grep -e '^	*<H3 FOLDED' -e '^	*<A HREF' -e '</DL><p>' \
| sed 's/<H3 FOLDED>/<outline text="/
       s/<\/H3>/">/
       s/<\/DL><p>/<\/outline>/

# sed: gjere URL og linknamn om til to felt med TAB mellom
# awk: fjerne eventuelle hermeteikn i linknamna (Google Reader liker dei ikkje)
# sed: få på plass resten av taggane
       s/<A HREF="[^>]*>/&	/
       s/">	/	/
       s/<A HREF="//' \
| awk '/	feed:/ { gsub ("\"", "") ; print } ; !/	feed:/ { print }' \
| sed 's/	feed:/	<outline type="rss" text="" xmlUrl="feed:/
       s/<outline type="rss"[^	]*/&" title="/
       s/title="	/title="/
       s/<\/A>$/" \/>/'`

# ta vare berre på bokmerkeline-delen av bokmerka
hit=`echo "$bokmerka" \
| grep -n . \
| grep "^[0-9]*:	<outline" \
| head -2 | tail -1 \
| sed 's/:.*//'`
hit=$(($hit-1))

bokmerka=`echo "$bokmerka" | head -"$hit"`

# Fjerne tome mapper:
# Opnar med å slå saman liner.
# Så kjem sjølve fjerninga, og denne kjem så lenge der er noko å fjerne.
# Fjerninga må skje rekursivt pga mapper i mapper.

bokmerka=`echo "$bokmerka" \
| tr -d '\n'`
testdingseboms=`echo "$bokmerka" | grep "	*<outline text=\"[^\"][^>]*>	*<\/outline>"`
while [ "$testdingseboms" != "" ] ; do
  bokmerka=`echo "$bokmerka" \
            | sed 's/	*<outline text=\"[^\"][^>]*>	*<\/outline>//g'`
  testdingseboms=`echo "$bokmerka" | grep "	*<outline text=\"[^\"][^>]*>	*<\/outline>"`
done
# Det som vert fjerna, er <outline text="mappenamn"> og </outline>.
# Sjølve lenkjene er <outline type="rss"...

# Vi deler opp til liner igjen etter avslutta tagg, og fiksar &:
bokmerka=`echo "$bokmerka" \
| tr '>' '\n' \
| grep -v '^$' \
| sed 's/$/>/
       s/&/\&amp;/g'`

#####
# Google Reader taklar ikkje mappe i mappe.
# Denne subrutinen må køyrast dersom opml-fila skal inn i Google Reader.
#####
mappeslettingsubrutine()
{
# Slette mappeetikett på 1. nivå (1 TAB, "Bokmerkelinje") og på 2. nivå 
# (2 TAB, menyar/mapper i bokmerkelina).
# Merk at på dette stadiet er det berre mapper som har sekvensen "<outline text"
# Og berre mapper har ein eigen avsluttande tagg.
sed -E 's/^		?<outline text.*//
        s/^		?<\/outline>//

# slette mappeetikettar på 4. nivå og oppover (4 TAB og meir), tek 
# altså vare berre på hovudmappene i menyane
       s/^					*<outline text.*//
       s/^					*<\/outline>//' \
| grep -v "^$"
}

sistefiks()
{
# Ein siste fiks som gjer title- og text-attributtane identiske,
# slik det er i opml-eksportane frå Google Reader,
# og fordi eg las det her: http://www.therssweblog.com/?guid=20051003145153
sed 's/text="" //
     s/text="/title="/
     s/title="[^"]*"/& text="&"/
     s/"title=//
     s/""/"/'
}

{
cat << EOF
<?xml version="1.0" encoding="UTF-8"?>
<opml version="1.0">
	<head>
		<title>Safari OPML Export</title>
	</head>
	<body>
EOF

# For Google Reader, slett dei fleste mappenivåa:
echo "$bokmerka" | mappeslettingsubrutine | sistefiks

# Alternativt: ta vare på alle mappenivåa:
# echo "$bokmerka" | sistefiks

cat << EOF
	</body>
</opml>
EOF
} > "$nytt_filnamn"
  1. Eksporter bokmerka frå Safari (Arkiv > Eksporter bokmerker…), slik at du har fila «Safari-bokmerker.html».
  2. Kopier skriptet frå boksen over, lim det inn i eit tekstdokument som du lagrar som rein tekst og med filnamnet safariopml der du vil, typisk i ~/bin om det finst.
  3. I Terminal: chmod +x safariopml
  4. Rediger skriptet dersom det trengst. Som standard fjernar det mesteparten av mappestrukturen til ære for Google Reader, som nemnt over, men dette kan ein endre. Sjå kommentarar mot slutten av skriptet og ved «mappeslettingsubrutine».
  5. Køyr det slik: safariopml Safari-bokmerker.html
  6. No har du ei fil «Safari-bokmerker.opml» som kan importerast i ein RSS-lesar.

Eg reknar med at dei som har lese så langt som dette, også veit korleis dei skal chmod-e (punkt 3) og forhalde seg til skriptet elles, t.d. modifisere det etter eigne behov, så eg skriv ikkje noka meir utførleg rettleiing. Ekte datafolk vil same kva sjå at dette er eit amatørskript frå ein som har lært slikt på eiga hand, og som også har arbeidt med det i fleire omgangar.

Summary in English

  1. In Safari, export the bookmarks (File > Export Bookmarks…) to the file “Safari Bookmarks.html”.
  2. Copy the script from the box below, paste it in a text document that you save as plain text and with the name safariopml wherever you want, typically in ~/bin if it exists.
  3. In Terminal: chmod +x safariopml
  4. Edit the script as you need. By default it will remove the folder structure apart from any folders at the top level inside a folder that is found in the Bookmarks Bar. For reference, this means that although the RSS feeds are kept, the folders «2006», «2008» etc. in the screendump above will be removed, and all their contents will be found in a flat structure in the folder where all those subfolders were previously grouped. This is the default behaviour because Google Reader does not permit nested folders. The behaviour can be altered to keep the full folder structure, see comments near the bottom of the script and at the «folderdeletionsubroutine». Edit that subroutine to delete folders in other ways than described here.
  5. Run the script like this: safariopml Safari\ Bookmarks.html
  6. You now have a file “Safari Bookmarks.opml” that can be imported into an RSS reader.

The script has been tested with exports from Safari 5.1 for Mac. It extracts only RSS feeds found in the Bookmarks Bar and any subfolders of it. I’m just an amateur, so don’t expect to find a very sophisticated piece of code.

#!/bin/sh
# Jardar Eggesbø Abrahamsen 2011-08-19, 2011-10-15, 2012-03-01
# https://jardar.wordpress.com/2012/03/10/fra-safari-til-google-reader/
# The script uses a bookmarks file from Safari 5.1, extracts the rss 
# feeds from the Bookmarks Bar and its subfolders, and makes an opml file.
#
# LICENSE
# You are allowed to modify the script. You are allowed to distribute 
# your modification, provided that the modified version contains 
# information about the original author, and provided that you do not 
# make charges for it. If you wish to distribute the script or a 
# modified version of it under other conditions, or incorporate it into 
# other products, you must ask permission from the original author.
# Contact: abjaeg at gmail dot com (I don't read this address every day)

if [ "$1" = "" ] ; then
  echo
  echo "   safariopml filename.html"
  echo "   A file called filname.opml will be created."
  echo
  exit
fi

filename="$1"
new_filename=`echo "$filename" | sed 's/\.html$/.opml/'`

# Remove any other URLs than RSS feeds, keep the folder structure,
# remove quotes from foldernames, turn folder names into opml tags
bookmarks=`cat "$filename" \
| grep -v 'HREF="[^f][^e][^e][^d]' \
| sed 's/<DT>//' \
| awk '/<H3 FOLDED>/ { gsub ("\"", "") ; print } ; !/<H3 FOLDED>/ { print }' \
| grep -e '^	*<H3 FOLDED' -e '^	*<A HREF' -e '</DL><p>' \
| sed 's/<H3 FOLDED>/<outline text="/
       s/<\/H3>/">/
       s/<\/DL><p>/<\/outline>/

# sed: convert URL and linkname to 2 fields separated by TAB
# awk: remove quotes from linknames
# sed: the rest of the tags
       s/<A HREF="[^>]*>/&	/
       s/">	/	/
       s/<A HREF="//' \
| awk '/	feed:/ { gsub ("\"", "") ; print } ; !/	feed:/ { print }' \
| sed 's/	feed:/	<outline type="rss" text="" xmlUrl="feed:/
       s/<outline type="rss"[^	]*/&" title="/
       s/title="	/title="/
       s/<\/A>$/" \/>/'`

# keep only bookmarks that are found in the bookmarks bar
hitherto=`echo "$bookmarks" \
| grep -n . \
| grep "^[0-9]*:	<outline" \
| head -2 | tail -1 \
| sed 's/:.*//'`
hitherto=$(($hitherto-1))

bookmarks=`echo "$bookmarks" | head -"$hitherto"`

# Remove empty folders:
# 1) Merge lines.
# 2) Remove folders as long as there is something to remove.
#    The removal is recursive due to nested folders.

bookmarks=`echo "$bookmarks" \
| tr -d '\n'`
testthingy=`echo "$bookmarks" | grep "	*<outline text=\"[^\"][^>]*>	*<\/outline>"`
while [ "$testthingy" != "" ] ; do
  bookmarks=`echo "$bookmarks" \
            | sed 's/	*<outline text=\"[^\"][^>]*>	*<\/outline>//g'`
  testthingy=`echo "$bookmarks" | grep "	*<outline text=\"[^\"][^>]*>	*<\/outline>"`
done
# What is removed is <outline text="foldername"> and </outline>.
# The links themselves are <outline type="rss"...

# Reinsert newlines right after closed tags, and fix &:
bookmarks=`echo "$bookmarks" \
| tr '>' '\n' \
| grep -v '^$' \
| sed 's/$/>/
       s/&/\&amp;/g'`

#####
# Google Reader does not like nested folders.
# This subroutine must be run if the opml file is meant for Google Reader.
#####
folderdeletionsubroutine()
{
# Remove folder from level 1 (1 TAB, "Bookmarks bar") and level 2 (2 
# TAB, folders in the bookmarks bar).
# Note that at this stage the sequence "<outline text" uniquely identifies folders.
# And only folders have a separate closing tag.
sed -E 's/^		?<outline text.*//
        s/^		?<\/outline>//

# Remove folders from level 4+ (4+ TAB). In other words, keep only the names
# of the folders that are on the top level inside any folder placed in
# the bookmarks bar.
       s/^					*<outline text.*//
       s/^					*<\/outline>//' \
| grep -v "^$"
}

lastfixsubroutine()
{
# A last fix so the title and text attributes are identical,
# just like in the opml exports from Google Reader,
# and because I read it here: http://www.therssweblog.com/?guid=20051003145153
sed 's/text="" //
     s/text="/title="/
     s/title="[^"]*"/& text="&"/
     s/"title=//
     s/""/"/'
}

{
cat << EOF
<?xml version="1.0" encoding="UTF-8"?>
<opml version="1.0">
	<head>
		<title>Safari OPML Export</title>
	</head>
	<body>
EOF

# For Google Reader, delete most folder levels:
echo "$bookmarks" | folderdeletionsubroutine | lastfixsubroutine

# Alternatively, keep all folder levels:
# echo "$bookmarks" | lastfixsubroutine

cat << EOF
	</body>
</opml>
EOF
} > "$new_filename"

Read Full Post »