Shellskript
Fra Harald Grovens wiki
[rediger] FRIDA
Hente ned liste over alle ansatte ved norske Universitet tilknyttet FRIDA fra Sitemap-fil.
# Versjon2, 2011: cd /tmp curl http://www.cristin.no/sitemap/sitemap_[1-4].txt | grep '=no'|sed 's/\\r/\\n/g'|sed 's/^/url = "/'|sed 's/la=no/la=no"/g' > sitemap.url curl -K sitemap.url > cristin_forskerliste.html
DROP TABLE IF EXISTS cristin.nvi_tmp; CREATE TABLE IF NOT EXISTS cristin.nvi_tmp ( xmldata LONGTEXT NOT NULL, navn VARCHAR(200) NOT NULL, tittel VARCHAR(255) NOT NULL, org VARCHAR(100) NOT NULL, institutt VARCHAR(255) NOT NULL, pid INT(12) NOT NULL, publisert INT(10) DEFAULT NULL, publikasjoner INT(10) NOT NULL, url TEXT NOT NULL, vitenskapsdisipliner TEXT NOT NULL, emner TEXT NOT NULL, land TEXT NOT NULL, region TEXT NOT NULL, prosjekter TEXT NOT NULL, eng VARCHAR(100) NOT NULL, nn VARCHAR(100) NOT NULL, mail TEXT NOT NULL, KEY pid (pid), KEY navn (navn) ) ; TRUNCATE cristin.nvi_tmp ; LOAD DATA INFILE '/tmp/cristin_forskerliste.html' INTO TABLE cristin.nvi_tmp CHARACTER SET utf8 FIELDS TERMINATED BY 'kafarsken' -- dummyverdi for unngå tab som defaultsplitter LINES TERMINATED BY '</html>' (xmldata) SET pid = SUBSTRING_INDEX(SUBSTRING_INDEX(xmldata, "&pnr=", -1), "&", 1), -- hente ut personløpenummer xmldata = SUBSTRING_INDEX(xmldata, "<h2>", -1), xmldata = SUBSTRING_INDEX(xmldata, "</td>", 1), xmldata = TRIM(xmldata) ; -- vask og krymping av html UPDATE cristin.nvi_tmp SET xmldata = REPLACE(xmldata, "\r", " "), xmldata = REPLACE(xmldata, "\t", " "), xmldata = REPLACE(xmldata, "\n", " "), xmldata = REPLACE(xmldata, '<div class="rightBulk">', ''), xmldata = REPLACE(xmldata, '<div class="bulk">', ''), xmldata = REPLACE(xmldata, '</div>', ''), xmldata = REPLACE(xmldata, '<div class="bottom">', ''), xmldata = REPLACE(xmldata, '<div class="leftBulk">', ''), xmldata = REPLACE(xmldata, '<div class="clean">', ''), xmldata = REPLACE(xmldata, ' ', ' '), xmldata = REPLACE(xmldata, ' ', ' '), xmldata = REPLACE(xmldata, ' ', ' '), xmldata = REPLACE(xmldata, ' ', ' '), xmldata = REPLACE(xmldata, '<BR>', '') ; -- navn, og personløpenummer UPDATE cristin.nvi_tmp SET publisert = SUBSTRING_INDEX(SUBSTRING_INDEX(xmldata, "&pnr=", -1), "&", 1), navn = TRIM(SUBSTRING_INDEX(xmldata, "</h2>", 1)) ; -- antall publikasjoner i Cristin lagt inn UPDATE cristin.nvi_tmp SET publikasjoner = SUBSTRING_INDEX(SUBSTRING_INDEX(xmldata, "Cristin</a> (", -1), ")", 1) WHERE publisert > 0 ; -- stilling/tittel UPDATE cristin.nvi_tmp SET tittel = SUBSTRING_INDEX(SUBSTRING_INDEX(xmldata," (", -1),") - ", 1) WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(xmldata," (", -1),") - ", 1) NOT LIKE "%<P>%" ; -- institutt UPDATE cristin.nvi_tmp SET institutt = SUBSTRING_INDEX(SUBSTRING_INDEX(xmldata, " ", 1), "<p>", -1) WHERE xmldata LIKE "%- <a %" ; -- org UPDATE cristin.nvi_tmp SET org = SUBSTRING_INDEX(SUBSTRING_INDEX(xmldata, "</a>", 1), '">', -1) WHERE xmldata LIKE "%- <a %" ; -- disipliner UPDATE cristin.nvi_tmp SET vitenskapsdisipliner = TRIM(REPLACE( REPLACE( REPLACE( SUBSTRING_INDEX(SUBSTRING_INDEX(xmldata, "<h3> Emner", 1), "</h3>", -1), "</p> <p>", "]] ; [["), "<p>", "[["), "</p>", "]]")) WHERE 1 -- xmldata LIKE "%- <a %" ; -- undervisningsemner UPDATE cristin.nvi_tmp SET emner = TRIM(REPLACE( REPLACE( REPLACE( SUBSTRING_INDEX(SUBSTRING_INDEX(xmldata, "<h3> Land", 1), "</h3>", -1), "</p> <p>", "]] ; [["), "<p>", "[["), "</p>", "]]")) WHERE 1 -- xmldata LIKE "%- <a %" ; -- land UPDATE cristin.nvi_tmp SET land = TRIM(REPLACE( REPLACE( REPLACE( SUBSTRING_INDEX(SUBSTRING_INDEX(xmldata, "<h3> Region", 1), "</h3>", -1), "</p> <p>", "]] ; [["), "<p>", "[["), "</p>", "]]")) WHERE 1 -- xmldata LIKE "%- <a %" ; -- slett ingeniører, renholdsbetjenter og byråkrater -- slett ingeniører, renholdsbetjenter og byråkrater DELETE FROM cristin.nvi_tmp WHERE tittel IN( 'Førstekonsulent', 'Avdelingsingeniør', 'Konsulent', 'Overingeniør', 'Senioringeniør', 'Førstesekretær', 'Sekretær', 'Kontorsjef', 'Renholder', 'Bibliotekar', 'ingeniør', 'Renholdsbetjent', 'klinikksekretær', 'Sjåfør', 'Ung arbeidstaker' 'Forskningstekniker', 'fagarbeider /fagbrev', 'Led forskningstekn', 'Administrasjonsjef', 'Psykolog', 'Husholdsleder', 'Overarkitekt', 'Avd.bibliotekar', 'ledende forsk.tekniker', 'lesesalsinspektør', 'seniorarkitekt', 'Førstebetjent', 'Laborant', 'Betjent', 'Barnehageassistent', 'Driftstekniker', 'Fullmektig', 'driftsoperatør', 'Driftsleder', 'instruktørtannpleier', 'Førstefullmektig', 'Tannhelsesekretær', 'barnepleier', 'bhgass.m/barnepl.utd', 'førskolelærer', 'Spesialutd sykepl', 'Renholdsleder', 'Økonomisjef', 'Styrer', 'oversykepleier', 'Arkivleder', 'Formann', 'Førstekokk', 'Preparant', 'Husøkonom', 'Prosjektøkonom', 'Hjelpearbeider', 'Spesialrådgiver', 'Personalkonsulent', 'Sykepleier', 'Husholdbestyrer', 'Kokk', 'Bedriftssykepleier', 'Laboratorieassistent', 'Kontorassistent', 'Skipsfører', 'Prosjektkonsulent', 'Spesialpsykolog', 'Tekniker', 'Tegneleder', 'Tegneassistent', 'Prosjektkoordinator', 'Avdelingsbibliotekar', 'Fotoleder', 'Styrmann', 'Bibliotekfullmektig', 'informasjonssjef', 'Husholdassistent', 'Fotograf', 'timeansatt orakel', 'Mester', 'Pedagogisk leder', 'adjunkt', 'Teknisk assistent', 'Nattevakt', 'Rådgiver/sosiallærer', 'Kontorleder', 'Informasjonskons.', 'Sjefsfysioterapeut', 'Radiograf', 'u.pers.u/godkj.utd', 'Utredningsleder' ) ; -- legge inn hvilke artikler som har engelsk-wikipediaartikkel. -- importert til tabell en_wp med to kolonner, pid og navn UPDATE cristin.nvi_tmp N, en_wp EN SET N.eng = CONCAT("[[:en:", N.navn, "|en]]") WHERE N.pid = EN.pid ; -- legge inn hvilke artikler som har nynorsk-wikipediaartikkel. -- importert til tabell en_wp med to kolonner, pid og navn UPDATE cristin.nvi_tmp N, nn_wp EN SET N.nn = CONCAT("[[:nn:", N.navn, "|nn]]") WHERE N.pid = EN.pid ; -- lage wikitabell. Eksempel "univeristetet i ..." SELECT CONCAT("|-\n|| ", tittel), CONCAT(" || [[", navn, "]]") AS navn, CONCAT(" || ", "<nowiki>{{Frida|", CAST(pid AS CHAR), "}}</nowiki>") AS fridalink, -- CONCAT(" || ", org) AS org, CONCAT(" || ", institutt) AS institutt, CONCAT(" || ", CAST(publikasjoner AS CHAR)) AS publikasjoner, CONCAT(" || ", vitenskapsdisipliner) AS vitenskapsdisipliner, CONCAT(" || ", emner) AS emner, CONCAT(" || ", eng) AS enwp, CONCAT(" || ", nn) AS nnwp -- land -- region, -- prosjekter FROM cristin.nvi_tmp N WHERE ((tittel LIKE "%professor%" OR tittel LIKE "%amanuensis%" OR tittel LIKE "Instituttleder" OR tittel LIKE "Dekan") OR publikasjoner > 4) AND tittel <> "gjest" AND org = "Universitetet i Tromsø" ORDER BY institutt ;
[rediger] Bokhylla
Liste over bøker som er tilgjengelige.
#!/bin/bash # Author : Harald Groven # variabler brukernavn=brukernavn passord=passord cat <<DELIM -- -------------------------------------------------------- -- Script: nb_skrap.sql -- Description: laste ned digitaliserte bøker fra Nasjonalbibliotekets bokhylla.no -- Author: Harald Groven -- Date: 25. apr 2010 -- Version: 0.1 -- Requirements: MySQL > 5.1.5, tabeller fra databasen "ymse" med kommunekoder og styrk-koder -- DELIM quota -q $(cat /etc/passwd|cut -d ':' -f 1) # laster dagens dump curl "http://www.nb.no/nbdigital/bokliste/bokhylla_02.txt" > ~/Desktop/nb_bokhylla_$(date +%F).txt chmod 775 ~/Desktop/nb_bokhylla_$(date +%F).txt mysql -u$brukernavn -p$passord -h127.0.0.1 -Dtest -e'
DROP TABLE IF EXISTS bokhylla.nb_bokhylla ; CREATE TABLE IF NOT EXISTS bokhylla.nb_bokhylla ( id INT(10) NOT NULL, urn VARCHAR(200) CHARACTER SET utf8 NOT NULL, oai VARCHAR(200) CHARACTER SET utf8 NOT NULL, hashid VARCHAR(200) CHARACTER SET utf8 NOT NULL, isbn LONGTEXT CHARACTER SET utf8 NOT NULL, somenum INT(10) NOT NULL, title VARCHAR(1000) CHARACTER SET utf8 NOT NULL, author VARCHAR(1000) CHARACTER SET utf8 NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; TRUNCATE bokhylla.nb_bokhylla ; LOAD DATA INFILE "/Users/harald/Desktop/nb_bokhylla_2010-04-25.txt" INTO TABLE bokhylla.nb_bokhylla CHARACTER SET utf8 FIELDS TERMINATED BY "|" IGNORE 1 LINES ; DROP TABLE IF EXISTS bokhylla.nb_author ; CREATE TABLE IF NOT EXISTS bokhylla.nb_author ( id INT(10) NOT NULL, author VARCHAR(255) NOT NULL, author_wp VARCHAR(200) NOT NULL, UNIQUE KEY id (id, author) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; -- normalisere forfattere i egen tabell INSERT IGNORE INTO bokhylla.nb_author SELECT id, SUBSTRING_INDEX(author, "; ", 1), '' AS author_wp FROM bokhylla.nb_bokhylla UNION SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(author, "; ", 2), "; ", -1), '' AS author_wp FROM bokhylla.nb_bokhylla UNION SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(author, "; ", 3), "; ", -1), '' AS author_wp FROM bokhylla.nb_bokhylla UNION SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(author, "; ", 4), "; ", -1), '' AS author_wp FROM bokhylla.nb_bokhylla UNION SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(author, "; ", 5), "; ", -1), '' AS author_wp FROM bokhylla.nb_bokhylla UNION SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(author, "; ", 6), "; ", -1), '' AS author_wp FROM bokhylla.nb_bokhylla UNION SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(author, "; ", 7), "; ", -1), '' AS author_wp FROM bokhylla.nb_bokhylla UNION SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(author, "; ", 8), "; ", -1), '' AS author_wp FROM bokhylla.nb_bokhylla UNION SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(author, "; ", 9), "; ", -1), '' AS author_wp FROM bokhylla.nb_bokhylla UNION SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(author, "; ", 10), "; ", -1), '' AS author_wp FROM bokhylla.nb_bokhylla ; -- lage wikipedialenker av forfatternavnet UPDATE bokhylla.nb_author SET author_wp = CONCAT("", SUBSTRING_INDEX(author, ", ", -1), " ", SUBSTRING_INDEX(author, ", ", 1) , "") WHERE author <> "" AND author LIKE "%,%" ; UPDATE bokhylla.nb_author SET author_wp = CONCAT("", author , "") WHERE author <> "" AND author NOT LIKE "%,%" ; -- lage wikilenker med forfatter, og url SELECT -- A.id, CONCAT("\n\n\n=== [[", A.author_wp, "]] === \n"), GROUP_CONCAT(CONCAT("* [http://urn.nb.no/", B.urn, " ", B.title, "] ", " ISBN ", B.isbn) SEPARATOR " \n") AS url FROM bokhylla.nb_author A INNER JOIN bokhylla.nb_bokhylla B ON (B.id = A.id) INNER JOIN bokhylla.wp_pages W ON (W.page_title = A.author_wp) WHERE B.title <> "" AND A.author_wp <> "" AND B.title LIKE "%histori%" GROUP BY A.author_wp ORDER BY A.author_wp ; -- sjekke hvilke forfattere som har artikkel i WP SELECT DISTINCT CONCAT("# ", author_wp) FROM bokhylla.nb_author N WHERE author <> "" ORDER BY author ; -- WIKIPEDIAARTIKKEL DUMP -- laste inn tabell over alle artikler i no wikipedia -- http://dumps.wikimedia.org/nowiki/latest/ DROP TABLE IF EXISTS bokhylla.wp_pages ; CREATE TABLE IF NOT EXISTS bokhylla.wp_pages ( page_title VARCHAR(255) CHARACTER SET utf8 NOT NULL, UNIQUE KEY (page_title) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; TRUNCATE bokhylla.wp_pages; LOAD DATA INFILE "/Users/harald/Downloads/nowiki-latest-all-titles-in-ns0 " IGNORE INTO TABLE bokhylla.wp_pages CHARACTER SET utf8 IGNORE 1 LINES (page_title) SET page_title = REPLACE(page_title, "_", " ") ; SELECT DISTINCT A.author_wp FROM bokhylla.nb_author A INNER JOIN bokhylla.wp_pages W ON (W.page_title = A.author_wp) INNER JOIN WHERE A.author_wp <> "" AND W.page_title <> "" ORDER BY A.author ; ' * [http://urn.nb.no/URN:NBN:no-nb_digibok_2009060500023 I samfunnet. 4 : Internasjonal politikk : lærebok i samfunnskunnskap studieretningsfag VK2] ISBN 82-00-41111-7 SELECT N.author, CONCAT("* [http://urn.nb.no/", N.urn, " ", N.title, "] ISBN ", N.isbn) AS lenke, N.author, N.urn, N.isbn, N.title FROM bokhylla.nb_bokhylla N INNER JOIN nb_author A ON (A.id = N.id) INNER JOIN wp_pages W ON (W.page_title = A.author_wp) WHERE A.author_wp LIKE 'Kjell Fjørtoft' ;
[rediger] Laste ned Wikipediadump fra XML, konvertere til MySQL
http://dumps.wikimedia.org/nowiki/latest/
cd /tmp curl -O http://dumps.wikimedia.org/nowiki/latest/nowiki-latest-pages-articles.xml.bz2 bzip2 -d /Users/hg/Downloads/nowiki-20110616-pages-meta-current.xml.bz2 sudo chmod -R 775 /Users/Shared sudo chmod 775 /tmp/nowiki*.xml
TRUNCATE wikipedia.article ; LOAD DATA INFILE "/Users/Shared/nowiki-20110616-pages-meta-current.xml" INTO TABLE wikipedia.article CHARACTER SET utf8 FIELDS TERMINATED BY 'zøzøzøz' LINES TERMINATED BY "</page>" (body) SET body = REPLACE(body, "<page>", -1) title = SUBSTRING_INDEX(SUBSTRING_INDEX(body, "</title>", 1), "<title>", -1), nid = SUBSTRING_INDEX(SUBSTRING_INDEX(body, "</id>", 1), "<id>", -1), vid = SUBSTRING_INDEX(SUBSTRING_INDEX(body, "<revision> <id>", -1), "</id>", -1), comm = SUBSTRING_INDEX(SUBSTRING_INDEX(body, "</comment>", 1), "<comment>", -1), changed = SUBSTRING_INDEX(SUBSTRING_INDEX(body, "</timestamp>", 1), "<timestamp>", -1), comment ; # 747350 rad(er) berørt.

