Shellskript

Fra Harald Grovens wiki

Gå til: navigasjon, søk

[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>&nbsp;(", -1), ")", 1)
WHERE publisert > 0
;
 
-- stilling/tittel 
UPDATE cristin.nvi_tmp SET 
	tittel = SUBSTRING_INDEX(SUBSTRING_INDEX(xmldata,"&nbsp;(", -1),")&nbsp;-&nbsp;", 1)
WHERE SUBSTRING_INDEX(SUBSTRING_INDEX(xmldata,"&nbsp;(", -1),")&nbsp;-&nbsp;", 1) NOT LIKE "%<P>%"
;
 
 
 
-- institutt 
UPDATE cristin.nvi_tmp SET 
	institutt = SUBSTRING_INDEX(SUBSTRING_INDEX(xmldata, "&nbsp;", 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.