Järjestelmäviesti:Verkkoviite helper.js
Siirry navigaatioon
Siirry hakuun
Huomautus: Selaimen välimuisti pitää tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan.
- Firefox ja Safari: Napsauta Shift-näppäin pohjassa Päivitä, tai paina Ctrl-F5 tai Ctrl-R (⌘-R Macilla)
- Google Chrome: Paina Ctrl-Shift-R (⌘-Shift-R Macilla)
- Internet Explorer ja Edge: Napsauta Ctrl-näppäin pohjassa Päivitä tai paina Ctrl-F5
- Opera: Paina Ctrl-F5.
/*
* Tämä kaksisainen scripti luo halutulla sivulla sivusta verkkoviitteen.
*
* Scripti muodostuu kahdesta osasta:
* - Bookmarkletista joka lataa tämän sivun
* - Tällä sivulla olevasta koodista joka parsii kohdesivun ja tulostaa verkkoviitteen
*/
/*
* Bookmarkletin koodi:
* "javascript:(function(){document.body.appendChild(document.createElement('script')).src='//fi.wikipedia.org/w/index.php?title=Mediawiki:verkkoviite_helper.js&action=raw&ctype=text/javascript';})();"
*/
/*
* Yksittäisten sivujen parserit
*/
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
String.prototype.ucwords = function() {
return this.toLowerCase().replace(/(^| |-)[a-z]/g, function(letter) { return letter.toUpperCase(); });
}
String.prototype.normalizedate = function() {
var input_str=this.replace(/\s+/g,' ').trim();
// Jätetään pois kellonaika silloin kun päiväys on muodossa "(Maanantai)? 16.6.2014 klo? 07:20"
var re=/^(([Pp]ublicerad:?|[Jj]ulkaistu:?|[Mm]aanantai|[Tt]iistai|[Kk]eskiviikko|[Tt]orstai|[Pp]erjantai|[Ll]auantai|[Ss]unnuntai) )?([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4}),? (- |klo )?[0-9]{1,2}[.:][0-9][0-9](:[0-9][0-9])?\.?$/;
m = re.exec(input_str.trim());
if (m)
{
return m[3];
}
// parsitaan bi3dPubDate: 2014-06-19 12:13:36
var re=/^([12][0129][0-9][0-9])-([01]?[0-9])-([0123]?[0-9]) [0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2}$/;
m = re.exec(input_str);
if (m)
{
var pvm = m[3] + "." + m[2] + "." + m[1]; // dd.mm.yyyy
return pvm;
}
//2014-06-24T21:40:14+00:00
// Muutetaan 2014-06-16T06:01:07.000+03:00 muotoon dd.mm.yyyy
if (input_str.match(/[12][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]T/))
{
var d=new Date(input_str);
if (d.getFullYear())
{
var year = d.getFullYear();
var month = d.getMonth() +1; // GetMonth() is zero based
var day = d.getDate(); // GetMonth() is zero based
return day + "." + month +"." + year;
}
}
// Mikäli löytyy pelkkä päiväys ilman vuotta, niin täydennetään vuosi ja poistetaan kellonaika
var d=new Date();
var re=/^([0-9]{1,2}\.[0-9]{1,2})\.? [0-9][0-9]:[0-9][0-9]$/;
m = re.exec(input_str);
if (m)
{
return m[1] + "." + d.getFullYear();
}
// Mikäli julkaistu ja päivitetty päivämäärä on sama niin tiivistetään teksti julkaistu-päivämääräksi
var publish_date="";
var update_date="";
var re=/([Jj]ulkaistu|[Pp]ublicerad):? ([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4})/;
m = re.exec(input_str);
if (m)
{
publish_date=m[2];
}
var re=/([Pp]äivitetty|[Uu]ppdaterad):? ([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4})/;
m = re.exec(input_str);
if (m)
{
update_date=m[2] ;
}
if (publish_date != "" && publish_date==update_date)
{
return publish_date;
}
return input_str;
}
String.prototype.parseIso8601 = function() {
var regexIso8601 = /^(\d{4}|\+\d{6})(?:-(\d{2})(?:-(\d{2})(?:T(\d{2}):(\d{2}):(\d{2})\.(\d{1,})(Z|([\-+])(\d{2}):(\d{2}))?)?)?)?$/;
var lOff = -(new Date().getTimezoneOffset());
var lHrs = Math.floor(lOff / 60);
var lMin = lOff % 60;
var m = regexIso8601.exec(this.trim());
if (m) {
return Date.UTC(
m[1],
(m[2] || 1) - 1,
m[3] || 1,
m[4] - (m[8] ? m[9] ? m[9] + m[10] : 0 : lHrs) || 0,
m[5] - (m[8] ? m[9] ? m[9] + m[11] : 0 : lMin) || 0,
m[6] || 0,
((m[7] || 0) + '00').substr(0, 3)
);
}
return Date.parse(this.trim());
}
function get_today_date_str()
{
var d=new Date;
return d.getDate() + "." + (d.getMonth()+1) + "." + d.getFullYear();
}
function get_rss(p)
{
var rss_url="";
var target_url=p['url'];
$("link[rel='alternate']").each(function(){
if (typeof $(this).attr("type") != "undefined" && $(this).attr("type") == "application/rss+xml")
{
if ((rss_url)=="" || (rss_url.length > $(this).attr("href").length ) )
{
rss_url=$(this).attr("href");
}
}
});
var rss_feed="";
var item;
$.ajax({
type: "GET",
url: rss_url,
async: false,
success : function(data) {
rss_feed = $(data);
rss_feed.find("item").each(function() {
var $this = $(this);
if ($this.find("link").text()==target_url)
{
item = {
title: $this.find("title").text(),
link: $this.find("link").text(),
description: $this.find("description").text(),
pubDate: $this.find("pubDate").text(),
author: $this.find("author").text()
}
alert("found" + item['title']);
}
});
item['feed_title']=rss_feed.find("channel > title").text();
}
});
if ((typeof p['nimike']=='undefined' || p['nimike']=="") && item['title'].length )
{
p['nimike']=item['title'];
}
if ((typeof p['pvm']=='undefined' || p['pvm']=="") && item['pubDate'].length )
{
p['pvm']=item['pubDate'];
}
if ((typeof p['julkaisija']=='undefined' || p['julkaisija']=="") && item['feed_title'].length )
{
p['julkaisija']=item['feed_title'];
}
if ((typeof p['authors']=='undefined' || p['authors']=="") && item['author'].length )
{
p['authors']=item['author'];
}
return p;
}
function parse_doria() {
var ret={};
ret['url']=$("meta[name='citation_abstract_html_url']").attr("content");
ret['selite']=$("meta[name='citation_keywords']").attr("content");
ret['nimike']=$("meta[name='citation_title']").attr("content");
ret['kieli']=$("meta[name='citation_language']").attr("content");
ret['authors']=$("meta[name='citation_authors']").attr("content");
ret['pvm']=$("meta[name='citation_date']").attr("content");
ret['julkaisija']=$("meta[name='DC.contributor']").attr("content");
return ret;
}
/*
Vaikkei wikipediaa voikkaan käyttää lähteenä itsellen, niin tuetaan
mediawikiä jotta jengi voi testata linkkiä wikisivulla
*/
function parse_mediawiki() {
var ret={};
ret['url']=$("link[rel='canonical']").attr("href");
if (typeof(ret['url'])=="undefined")
{
ret['url']=document.location.href;
}
ret['selite']="revid:" + mw.config.get("wgRevisionId");
ret['nimike']=mw.config.get("wgPageName");
ret['kieli']=$("html").attr("lang");
ret['authors']="";
ret['pvm']=$("#mw-revision-date").text();
if (ret['pvm']=="")
{
ret['pvm']=$("#footer-info-lastmod").text();
}
ret['julkaisija']=$("#footer-copyrightico").find("img").attr("alt");
return ret;
}
function parse_turunsanomat() {
var ret={};
ret['url']=$("meta[property='og:url']").attr("content");
ret['selite']='';
ret['nimike']=$("meta[property='og:title']").attr("content");
ret['kieli']='';
ret['authors']=$(".content-left").find(".author").text();
if (ret['authors']=='')
{
// Yritetään hakea ISOLLA kirjoitettu henkilön nimi
ret['authors']=$(".content-left").find(".text").find("p").filter(function () {
return (/^[A-ZÄÖÅ ]+$/.test($(this).text().trim()) && !(/(STT|TS|LUE L)/.test($(this).text().trim())));
}).text();
}
ret['authors']=(ret['authors'] + "").ucwords();
// title-attribuutissa on pelkästään kuluvan päivän päivämäärä
// muiden kohdalla päiväys haetaan tagin sisältä.
ret['pvm']=$("div.info-container").find(".date").attr('title');
if (typeof(ret['pvm'])=="undefined")
{
ret['pvm']=$("div.info-container").find(".date").html();
}
// Jätetään pois kellonaika silloin kun päiväys on muodossa "16.6.2014 07:20"
if (typeof(ret['pvm'])!="undefined"
&& ret['pvm'].match("^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4} [0-9]{1,2}:[0-9][0-9]$"))
{
ret['pvm']=ret['pvm'].split(" ")[0];
}
ret['julkaisu']=$(".papername").html();
return ret;
}
function parse_verkkouutiset()
{
var ret=parse_og_and_bi3d();
ret['pvm']=$("article").find("time[itemprop='datePublished']").first().attr("datetime");
// mikäli datetime-attribuuttia ei ole asetettu, niin yritetään poimia kohdan tekstisisältö
if (typeof(ret['pvm'])=="undefined")
{
ret['pvm']=$("article").find("time[itemprop='datePublished']").first().text().trim();
}
ret['pvm']=ret['pvm'].normalizedate();
ret['authors']=$("article").find("div[itemprop='author']").first().text().trim().normalizedate();
return ret;
}
// Parseri Satakunnan Kansan ja Lapin Kansan käyttämälle julkaisumoottorille
function parse_lapinkansa()
{
var ret=parse_generic();
var title=$("title").first().text().trim();
var title_parts=title.split("|");
if (title_parts.length>1)
{
ret['julkaisu']=title_parts[1].trim();
ret['nimike']=title_parts[0].trim();
}
ret['authors']=$("isense").find(".meta").find("strong").text().trim();
// Mikäli julkaistu ja päivitetty päivämäärä on sama niin tiivistetään teksti julkaistu-päivämääräksi
var julkaistu_pvm="";
var paivitetty_pvm="";
var re=/[Jj]ulkaistu ([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4})/;
m = re.exec(ret['pvm']);
if (m)
{
julkaistu_pvm=m[1];
}
var re=/[Pp]äivitetty ([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4})/;
m = re.exec(ret['pvm']);
if (m)
{
paivitetty_pvm=m[1] ;
}
if (julkaistu_pvm != "" && julkaistu_pvm==paivitetty_pvm)
{
ret['pvm']=julkaistu_pvm;
}
return ret;
}
function parse_kauppalehti()
{
var ret=parse_generic();
ret['julkaisu']="Kauppalehti";
ret['nimike']=ret['nimike'].replace(" | Kauppalehti.fi", "");
if ($("div#textcontent > p.timestamp").length)
{
ret['authors']=$("div#textcontent > p.timestamp").first().html().split("<br>")[0].trim();
}
ret['pvm']=$("isense").find("p.timestamp").first().text().trim().split("\n")[0].normalizedate();
if (ret['pvm']=="")
{
ret['pvm']= $("#content").find("p.timestamp").text().trim().split("\n")[0].normalizedate();
}
return ret;
}
function parse_taloussanomat()
{
var ret=parse_generic();
ret['nimike']=ret['nimike'].replace(" | Taloussanomat", "");
ret['authors']=$("article").find("div.authorInfo").find(".author").text().trim();
ret['pvm']=$("article").find("div.authorInfo").find(".time").text().normalizedate();
return ret;
}
function parse_karjalainen()
{
var ret=parse_generic();
ret['authors']=$("meta[name='author']").attr("content");
ret['julkaisu']="Karjalainen";
ret['pvm']=$("#ja-content-main").find(".date_time").text().normalizedate();
return ret;
}
function parse_lansisavo()
{
var ret=parse_generic();
if (ret['authors']=="")
{
ret['authors']=$("article").find(".author").find("h3").first().text().trim();
}
return ret;
}
function parse_esaimaa()
{
var ret=parse_generic();
ret['authors']=$(".news-item").find("#main_text").find(".signeeraus").text().replace("|", " ").trim();
if (ret['authors']=="")
{
ret['authors']=$(".news-item").find(".author").text().trim();
}
ret['pvm']=$(".news-item").find(".news-info").find(".date").text().normalizedate();
return ret;
}
function parse_savonsanomat()
{
var ret=parse_generic();
ret['authors']=$("isense").find(".byline").find(".authorName").text().trim();
ret['julkaisu']="Savon sanomat";
var pvm=$("isense").find(".article-meta").first().text();
// DD.MM.YYYY löytyi
if (pvm.match(/[0-9]{1,2}\.[0-9]{1,2}\.[12][0-9][0-9][0-9]/))
{
ret['pvm']=pvm.normalizedate();
}
else if (pvm.match(/[0-9]{1,2}:[0-9][0-9]/))
{
// Jos löytyy pelkkä kellonaika niin käytetään kuluvaa vuorokautta
var d=new Date;
ret['pvm']=d.getDate() + "." + (d.getMonth()+1) + "." + d.getFullYear();
}
else
{
ret['pvm']=pvm.trim();;
}
return ret;
}
function parse_ilkka()
{
var ret=parse_generic();
var pvm_e=$("isense").find("p.date").first();
var pvm_str=pvm_e.text().trim();
var comment_str=pvm_e.find(".commentsBubble").text().trim();
ret['pvm']=pvm_str.replace(comment_str, "").normalizedate();
if (ret['authors']=='')
{
// Yritetään hakea ISOLLA kirjoitettu henkilön nimi
ret['authors']+=$("isense").find("div.articleBody").find("p").filter(function () {
return (/^[A-ZÄÖÅ\- ]+$/.test($(this).text().trim()));
}).text();
ret['authors']=ret['authors'].trim().ucwords();
}
return ret;
}
function parse_ess()
{
var ret=parse_generic();
ret['authors']="";
$("article").find("ul.authors").find("li").each(function(i,e) {
if (i==0) { ret['authors']+=$(e).find(".author-name").text().trim(); }
else { ret['authors']+=", " + $(e).find(".author-name").text().trim(); }
});
ret['julkaisu']="Etelä-Suomen Sanomat";
ret['pvm']=$("article").find("time.article-date").first().text().normalizedate();
return ret;
}
function parse_koillissanomat()
{
var ret=parse_generic();
ret['authors']=$("#contentMain").find(".writer").first().text().trim();
ret['pvm']=$("#contentMain").find(".date").first().text().normalizedate();
ret['julkaisu']="Koillissanomat";
return ret;
}
function parse_abounderrattelser()
{
var ret=parse_generic();
// Korjataan päiväyksen virheellinen aikavyöhyke
pvm=$("#content").find(".post").first().find(".entry-info").find(".published").attr("title");
var re=/T[0-9]{1,2}:[0-9]{2}:[0-9]{2}([+-][0-9]{2}:[0-9]{2})/;
m=re.exec(pvm);
if (m)
{
pvm=pvm.replace(m[1], "+02:00");
}
ret['pvm']= (typeof(pvm)=="undefined") ? "" : pvm.normalizedate();
return ret;
}
function parse_hbl()
{
var ret=parse_generic();
ret['authors']=$("article").find("#publishedinfo").first().find(".article-author").text().trim();
ret['pvm']=$("article").find("#publishedinfo").first().find(".article-published").text().normalizedate();
var title=$("title").text().trim();;
if (title.match("Hbl.fi")) { ret['julkaisu']="Hufvudstadsbladet"; }
else if (title.match("Bbl.fi")) { ret['julkaisu']="Borgåbladet"; }
else if (title.match("Vastranyland.fi")) { ret['julkaisu']="Västra Nyland"; }
else ret['julkaisu']=title;
return ret;
}
function parse_kp24()
{
var ret=parse_generic();
ret['julkaisu']="KP24";
ret['pvm']="TARKISTA: " + $("isense").find("#pvm2").text().normalizedate();
return ret;
}
function parse_demari()
{
var ret=parse_generic();
ret['julkaisu']="Demokraatti";
ret['authors']=$(".content-block").find(".meta-holder").find(".info").text().replace(/\s+/g, " ").trim();
var e=$(".content-block").find(".meta-holder").first();
var pvm=e.text().trim().replace(e.find(".time").text().trim(), "").trim();
var re=/([0-9]{1,2})\.([0-9]{1,2})\.([0-9]{4})/;
m = re.exec(pvm);
if (m)
{
ret['pvm']=m[0];
}
return ret;
}
function parse_itahame()
{
var ret=parse_generic();
ret['julkaisu']="Itä-Häme";
return ret;
}
function parse_iisalmensanomat()
{
var ret=parse_generic();
if (document.location.href.match("iisalmensanomat"))
{
ret['julkaisu']="Iisalmen sanomat";
}
else if (document.location.href.match("warkaudenlehti"))
{
ret['julkaisu']="Warkauden Lehti";
}
ret['pvm']=$("isense").find(".date").first().text().trim() + " " + $("isense").find(".lastModified").first().text().trim();
ret['pvm']=ret['pvm'].normalizedate();
ret['authors']=$("isense").find("#articleText").find(".author").text().trim();
ret['nimike']=$("isense").find("h1.h1_article").text().trim();
return ret;
}
function parse_forssanlehti()
{
var ret=parse_generic();
ret['julkaisu']="Forssan Lehti";
ret['pvm']=$(".main").find(".scoop_date").text().normalizedate();
if (ret['pvm']=="")
{
var str=$(".main").find(".scoop_item").find("em").text().trim();
var re=/([0-9]{1,2})\.([0-9]{1,2}) [0-9]{2}:[0-9]{2}/;
m = re.exec(str);
if (m)
{
var d=new Date();
var month = d.getMonth() +1; // GetMonth() is zero based
var day = d.getDate();
if (parseInt(m[1])==day && parseInt(m[2]) == month )
{
ret['pvm']=get_today_date_str();
}
else
{
ret['pvm']=m[0];
}
}
}
ret['nimike']=$(".main").find(".scoop_item").find("h2").text().trim();
ret['authors']=$(".main").find(".scoop_item").find(".byline").text().trim();
return ret;
}
function parse_vasabladet()
{
var ret=parse_generic();
ret['julkaisu']=$("title").text().trim().split(" - ")[0];;
ret['nimike'] = $("article").find("h1").first().text().trim();
var pvm=$("article").find("div.published").find("time").first().attr("datetime");
if (typeof(pvm) != "undefined")
{
ret['pvm']=pvm.normalizedate();
}
return ret;
}
function parse_salonseudunsanomat()
{
var ret=parse_generic();
ret['julkaisu']="Salon Seudun Sanomat";
ret['nimike'] = $("#columnFrontMain").find("h1").text().trim();
var pvm = $("#columnFrontMain").find("p.date").text().trim();
var re=/Salon Seudun Sanomat ([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4})/;
m = re.exec(pvm);
if (m)
{
ret['pvm']=m[1];
}
return ret;
}
function parse_hameensanomat()
{
var ret=parse_generic();
var pvm=$("isense").find(".submitted-info").find(".published").first().text().trim();
var updated=$("isense").find(".submitted-info").find(".updated").first().text().trim();
if (pvm.match(/Julkaistu: [0-9]{1,2}:[0-9]{2}/))
{
ret['pvm']=get_today_date_str() + " " + updated;
}
else
{
ret['pvm']=pvm + " " + updated;
}
return ret;
}
function parse_maaseuduntulevaisuus()
{
var ret=parse_generic();
var current_date = new Date();
var new_date = new Date();
ret['authors']=$("meta[name='author']").attr("content");
ret['julkaisu']="Maaseudun tulevaisuus";
ret['pvm']="";
var pvm=$("div.article").find("div.meta").first().text().trim();
var tag_str=$("div.article").find("div.meta").find(".tag").first().text().trim();
var re=/(maanantai|tiistai|keskiviikko|torstai|perjantai|lauantai|sunnuntai), [0-9][0-9]:[0-9][0-9]/;
m = re.exec(pvm);
if (m)
{
var days=[ 'sunnuntai', 'maanantai', 'tiistai', 'keskiviikko', 'torstai', 'perjantai', 'lauantai'];
for (pubday=0; pubday<days.length; pubday++) {
if (days[pubday] == m[1]) {
if (current_date.getDay() != pubday)
{
// Siirretään päivä-indeksi edelliseen sunnuntaihin
var distance = (current_date.getDay() == 0 ? 7 : current_date.getDay()) * -1;
// Siirretään päivä-indeksiä eteenpäin julkaisuviikonpäivän verran
distance+=pubday;
new_date.setDate(current_date.getDate() + distance);
}
ret['pvm']=new_date.getDate() + "." + (new_date.getMonth()+1) + "." + new_date.getFullYear();
break;
}
}
}
else
{
var re=/([0-9]{1,2}\.[0-9]{1,2}) [0-9][0-9]:[0-9][0-9]/;
m = re.exec(pvm);
if (m)
{
ret['pvm'] = m[1] + "." + current_date.getFullYear();
}
}
if (ret['pvm'] == "" )
{
ret['pvm']=($("div.article").find("div.meta").first().text().replace(tag_str, "").trim().split("\n")[0] + "").trim();
}
return ret;
}
function parse_aamulehti()
{
var ret=parse_generic();
ret['julkaisu']="Aamulehti";
ret['nimike']=ret['nimike'].replace(/( \| Aamulehti|Aamulehti \| )/, "");
var meta=$("div.bodytext").find("span.meta").text().trim().split("|");
if (meta.length>1)
{
ret['pvm']=meta[1].trim();
}
ret['authors']=$("div.bodytext").find("p.Kirjoittaja").text().trim();
ret['authors']=ret['authors'].replace(/Aamulehti, |Aamulehti|STT, |STT/, "");
return ret;
}
// Funktio hakee artikkelin header-tiedoista yms julkaisupäivämäärän
function parse_meta_pubdate()
{
var pvm;
if (typeof($("meta[property='og:updated_time']").attr("content"))!="undefined")
{
pvm=$("meta[property='og:updated_time']").attr("content");
}
else if (typeof($("meta[property='article:modified_time']").attr("content"))!="undefined")
{
pvm=$("meta[property='article:modified_time']").attr("content");
}
else if (typeof($("meta[property='article:published_time']").attr("content"))!="undefined")
{
pvm=$("meta[property='article:published_time']").attr("content");
}
else if (typeof($("meta[name='bi3dPubDate']").attr("content"))!="undefined")
{
pvm=$("meta[name='bi3dPubDate']").attr("content").normalizedate();
}
return pvm;
}
function get_article_element()
{
var e=$(".should_be_not_found");
// Haetaan isensellä;
if ($("isense").length)
{
e=$("isense").first();
}
else if ($("article").length)
{
e=$("article").first();
}
else if ($("div.article").length)
{
e=$("div.article").first();
}
else if ($("div#content").find(".post").first().find(".entry-info").length)
{
// WordPress
e=$("div#content").find(".post").first();
}
return e;
}
// Funktio yrittää arvata julkaisupäivän
function parse_content_pubdate()
{
var e=get_article_element();
if (e.length)
{
// Etsitään time:datePublished-elementtiä
var pvm=e.find("time[itemProp='datePublished']").text().trim().normalizedate();
// Parse Drupal 7 date
if (pvm=="")
{
var created_date=$("article").find(".time-container").find(".created-date").text().trim();
var created_year=$("article").find(".time-container").find(".created-year").text().trim();
if (created_year != "" && created_date != "")
{
return created_date + "." + created_year;
}
}
// Parse Drupal 7 date 2
if (pvm=="")
{
var generator=$("meta[name='generator']").attr("content");
if ((typeof(generator) != "undefined") && (generator.search("Drupal") != -1))
{
pvm=$("article").find(".field-name-post-date").first().text().normalizedate();
}
}
// WordPress
if (pvm=="")
{
pvm=$("article.post").first().find(".entry-date").text().normalizedate();
}
if (pvm=="")
{
// Sisällön tulkitseminen
var pvm=e.find("*").filter(function () {
return (/[Jj]ulkaistu.{1,30}[12][0129][0-9][0-9]/.test(this.innerHTML));
}).text();
}
if (pvm=="")
{
pvm=e.find(".date").text().trim();
}
if (pvm=="")
{
var re=/[0123]?[0-9]\.[0123]?[0-9]\.[12][0129][0-9][0-9]/g;
var delim="";
while (m = re.exec(e.text().trim()))
{
if (pvm.search(m[0])==-1)
{
pvm+=delim + m[0];
delim=", ";
}
}
if (pvm!="") pvm="TARKISTA: " + pvm;
}
}
return pvm;
}
function parse_og_and_bi3d() {
var ret={};
ret['url']=$("link[rel='canonical']").attr("href");
if (typeof(ret['url'])=="undefined"
|| (ret['url'].search("https://")==-1 && ret['url'].search("http://")==-1) )
{
ret['url']=$("meta[property='og:url']").attr("content");
}
ret['selite']='';
ret['nimike']=$("meta[property='og:title']").attr("content");
if (typeof(ret['nimike']) == "undefined" || ret['nimike']=="")
{
ret['nimike']=$("title").text();
}
ret['kieli']='';
ret['authors']="";
ret['pvm']=parse_meta_pubdate();
if (typeof(ret['pvm'])=="undefined")
{
ret['pvm']=parse_content_pubdate();
}
ret['julkaisu']=$("meta[property='og:site_name']").attr("content");
return ret;
}
function parse_helsinginsanomat() {
var ret=parse_og_and_bi3d();
ret['authors']="";
$('div.byline.vcard').each(function(i,e) {
var delim = i ? ", " : "";
ret['authors']+= delim + $(e).find("p.fn").text();
});
return ret;
}
function parse_iltasanomat() {
var ret=parse_og_and_bi3d();
ret['authors']=($('#article-main').find('p.byline').text() + "").trim();
return ret;
}
function parse_kaleva() {
var ret=parse_og_and_bi3d();
ret['authors']=$('span.news-info').find('span.author').text();
return ret;
}
function parse_rumba() {
var e=get_article_element();
var ret=parse_generic();
ret['authors']=e.find("em").filter(function () {
return (/Teksti:/.test(this.innerHTML));
}).text().replace("Teksti: ", "");
var pvm=e.find(".main_content_singlestory_timestamp").text();
var re=/[0-9]{1,2}:[0-9]{1,2} -? ?([0123]?[0-9]\.[0123]?[0-9]\.[12][0129][0-9][0-9])/g;
var m = re.exec(e.text().trim());
if (m)
{
ret['pvm']=m[1];
}
return ret;
}
function parse_uusisuomi() {
var ret=parse_og_and_bi3d();
var e=$("article");
ret['authors']=e.find(".author-wrapper").find(".author-name").text();
ret['pvm']=e.find(".author-wrapper").find("span[property='dc:date']").text().split(" ")[0];
return ret;
}
function parse_kansanuutiset() {
var ret=parse_generic();
ret['nimike']=ret['nimike'].replace("| Kansan Uutiset | Verkkolehti", "").trim();
ret['julkaisu']="Kansan uutiset";
ret['authors']=$(".article").find("#author").text().trim();
return ret;
}
function parse_iltalehti() {
var ret=parse_og_and_bi3d();
ret['pvm']=$('p.juttuaika').text().trim();
var re=/^[A-Z][a-z]+ +([0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4}) +klo +[0-9]{1,2}[.:][0-9][0-9]$/;
var m = re.exec(ret['pvm']);
if (m)
{
ret['pvm']=m[1];
}
ret['julkaisu']=$("meta[name='application-name']").attr("content");
// Muutetaan authorin capseilla kirjoitetut nimet muotoon Ville Pekka Vallaton
var e=$('div.author');
//Tekijä on aina henkilö
if (e.first().text().trim().match(/(IS|STT|STT-IS|IS-STT)/))
{
ret['authors']="";
}
else if (e.length)
{
var tmp=($('div.author').html() + "").split("<br") ;
tmp=tmp[0].toLowerCase().split(" ");
ret['authors']="";
for (var n=0; n<tmp.length; n++)
{
ret['authors']+=tmp[n].capitalize()+ " ";
}
ret['authors']=ret['authors'].trim();
}
return ret;
}
function parse_yle_uutiset() {
var ret={};
ret['url']=$("meta[property='og:url']").attr("content");
ret['selite']='';
ret['nimike']=$("meta[property='og:title']").attr("content");
ret['kieli']='';
ret['authors']="";
$("article.content").find('ul.writers').find('a.author').find('span').each(function()
{
var author=$(this).text();
if (ret['authors']=="") ret['authors']=author;
else ret['authors']+=", " + author;
});
ret['pvm']="";
$("article.content").find('header').find('span.meta').find('time').each(function()
{
var pvm=$(this).text();
if (ret['pvm']=="") ret['pvm']=pvm;
else ret['pvm']+=", " + pvm;
});
ret['pvm']=ret['pvm'].normalizedate();
ret['julkaisija']=$("meta[property='og:site_name']").attr("content");
return ret;
}
function parse_ksml() {
var ret={};
ret['url']=$("meta[property='og:url']").attr("content");
ret['selite']='';
ret['nimike']=$("isense").find("#artPreHeadAndHead").find("h1").text().trim();
ret['kieli']='';
ret['authors']=$("isense").find("p.byline").find('span.authorName').text().trim();
ret['pvm']=$("isense").find("span.article-meta").find('time.date-published').find("span.lastModified").text().normalizedate();
if (ret['pvm']=="")
{
ret['pvm']=$("isense").find("span.article-meta").find('time.date-published').find("span.date").text().normalizedate();
}
if (ret['pvm']=="")
{
ret['pvm']=$("isense").find("span.article-meta").find('time.date-published').text().normalizedate();
}
ret['julkaisu']="Keskisuomalainen"
return ret;
}
/* MTV3 uutisparseri alkaa */
function parse_mtv3() {
var ret={};
ret['url']=$("meta[property='og:url']").attr("content");
ret['selite']='';
ret['nimike']=$("meta[property='og:title']").attr("content");
ret['kieli']='';
ret['authors']="";
$('.article').find('.article-authors').find('.author').each(function(i,e) {
var delim = i ? ", " : "";
ret['authors']+= delim + $(e).find(".author-name").text();
});
var datetime=$("div.article-info").find('time.dateCreated').attr("datetime");
if (typeof(datetime) != "undefined")
{
ret['pvm']=datetime.normalizedate();
}
ret['julkaisija']=$("meta[property='og:site_name']").attr("content");
return ret;
}
/* MTV3 uutisparseri loppuu */
/* Project Runebergin Tietosanakirja alkaa */
function parse_runeberg_tieto() {
var title=$("title").first().text().trim();
var selite="";
var julkaisu="";
var pvm="";
var re = re=/^([0-9 -]*?)\((.*?)\)/;
var m = re.exec(title);
if (m)
{
julkaisu=m[2].trim();
title="VIITATTU_SANA_TÄHÄN";
selite="palstat: " + m[1].trim();
}
var tmp=$("table").first().text().trim();
var re = re=/\(([0-9 -]+)\)/m;
m = re.exec(tmp);
if (m)
{
pvm=m[1];
}
var ret={};
ret['url']=document.location.href;
ret['selite']=selite;
ret['nimike']=title;
ret['kieli']='';
ret['authors']="";
ret['pvm']=pvm;
ret['julkaisu']=julkaisu;
return ret;
}
/* Project Runebergin Tietosanakirja loppuu */
function parse_generic() {
var ret=parse_og_and_bi3d();
var article_element=get_article_element();
if (typeof(ret['url'])=="undefined")
{
ret['url']=document.location.href;
}
if (typeof(ret['nimike'])=="undefined")
{
ret['nimike']=$('title').text();
}
if (typeof(ret['pvm'])=="undefined")
{
ret['pvm']=parse_content_pubdate();
}
// Drupal 7
if (ret['authors']=='')
{
ret['authors']=$("article").find(".field-name-field-creator").text().trim();
}
// WordPress
if (ret['authors']=='')
{
$("#content").find(".post").first().find(".entry-info").find(".author").each(function (i,e) {
if (i) ret['authors'] += ", " + $(e).text().trim();
else ret['authors'] += $(e).text().trim();
});
}
// WordPress 2
if (ret['authors']=='')
{
$("article.post").first().find(".author").each(function (i,e) {
if (i) ret['authors'] += ", " + $(e).text().trim();
else ret['authors'] += $(e).text().trim();
});
ret['authors']=ret['authors'].replace(/^, /, "");
}
if (ret['authors']=='')
{
ret['authors']=article_element.find(".meta").find(".assistant").text().trim();
}
if (ret['authors']=='')
{
ret['authors']=article_element.find(".meta").find(".author").text();
}
if (ret['authors'].match("^[A-ZÄÖÅ ]+$"))
{
ret['authors']=(ret['authors'] + "").ucwords();
}
// Haetaan koti-liitteen meta-blokki jos kellonaikaa ei olla muuten saatu
if (ret['pvm']=='')
{
ret['pvm']=article_element.find(".meta").find("time").text().trim();
}
// Jätetään pois kellonaika silloin kun päiväys on muodossa "16.6.2014 07:20"
if (ret['pvm'])
{
ret['pvm']=ret['pvm'].normalizedate();
}
return ret;
}
function parse_highfi_list()
{
if ($("li.verkkoviite-bookmarklet").length) return undefined;
var link=$("<a>W</a>");
link.css('color', 'silver');
link.hover(function() {
$(this).css({'color': 'black'});
}, function() {
$(this).css({'color': 'silver'});
});
link.attr('href','#');
link.click(function(){
var article=$(this).parent().parent().parent();;
var ret={};
ret['url']=article.find("a.main-link").attr('href');
ret['selite']='';
ret['nimike']=article.find("header").text().trim();
ret['kieli']='';
ret['authors']="";
ret['pvm']=article.find("div.info").find('time').attr('datetime');
ret['julkaisija']="";
var julkaisu_tmp=article.find("div.info").find('p.source').text().trim().split("(");
ret['julkaisu']=(julkaisu_tmp[0] + "").trim();
var outstr=print_verkkoviite(ret);
alert(outstr);
return false;
});
var list_e=$("<li>");
list_e.attr('class','verkkoviite-bookmarklet');
list_e.css('vertical-align','top');
list_e.append(link);
$("ul.actions").append(list_e);
}
function parse_ampparit_list()
{
if ($("div.verkkoviite-bookmarklet").length) return undefined;
var link=$("<a>W</a>");
link.css('color', 'silver');
link.hover(function() {
$(this).css({'color': 'black'});
}, function() {
$(this).css({'color': 'silver'});
});
link.attr('href','#');
link.click(function(){
var article=$(this).parent().parent().parent();
var ret={};
ret['url']=article.find("a.news-item-headline").attr('href');
ret['selite']='';
ret['nimike']=article.find("a.news-item-headline").text().trim();
ret['kieli']='';
ret['authors']="";
ret['pvm']=article.find("div.news-item-date").text().trim() + new Date().getFullYear();
ret['julkaisija']="";
var julkaisu_tmp=article.find("div.news-item-source").text().trim().split("(");
ret['julkaisu']=(julkaisu_tmp[0] + "").trim();
var outstr=print_verkkoviite(ret);
alert(outstr);
return false;
});
var list_e=$("<div>");
list_e.attr('class','verkkoviite-bookmarklet');
list_e.css('vertical-align','top');
list_e.css('float','right');
list_e.css('padding-left', '1em');
list_e.append(link);
$("div.news-item-wrapper").find(".news-item-info").append(list_e);
}
function test_is_set(value)
{
return (typeof value != 'undefined' && value != '');
}
/*
* Verkkoviitteen tulostus
*/
function print_verkkoviite(p, print_full_info)
{
print_full_info = print_full_info == 1 ? 1 : 0;
p['julkaisu'] = typeof(p['julkaisu'])=="undefined" ? "" : p['julkaisu'];
p['julkaisija'] = typeof(p['julkaisija'])=="undefined" ? "" : p['julkaisija'];
p['kieli']=(p['kieli'] != 'fi' ? p['kieli'] : '');
var current_date = new Date();
var viitattu_pvm=current_date.getDate() + "." + (current_date.getMonth()+1) + "." + current_date.getFullYear();
var end_of_line="";
if (print_full_info)
{
end_of_line="\n";
}
var outstr="<ref>" + end_of_line;
outstr +="{{Verkkoviite " + end_of_line;
outstr +="| Osoite = " + p['url'] + end_of_line;
outstr +="| Nimeke = " + p['nimike'] + end_of_line;
outstr +="| Tekijä = " + p['authors'] + end_of_line;
if (print_full_info || test_is_set(p['tiedostomuoto']) )
{
outstr +="| Tiedostomuoto = " + end_of_line;
}
if (print_full_info || test_is_set(p['selite']) )
{
outstr +="| Selite = " + p['selite'] + end_of_line;
}
if (print_full_info || test_is_set(p['julkaisu']) )
{
outstr +="| Julkaisu =" +p['julkaisu'] + end_of_line;
}
outstr +="| Ajankohta = " + p['pvm'] + end_of_line;
if (print_full_info || test_is_set(p['julkaisupaikka']))
{
outstr +="| Julkaisupaikka = " + end_of_line;
}
if (print_full_info || test_is_set(p['julkaisija']))
{
outstr +="| Julkaisija = " + p['julkaisija'] + end_of_line;
}
outstr +="| Viitattu = " + viitattu_pvm + end_of_line;
if (print_full_info || test_is_set(p['kieli']))
{
outstr +="| Kieli = " + p['kieli'] + end_of_line;
}
outstr +="}}" + end_of_line;
outstr +="</ref>" + end_of_line;
return outstr;
}
/*
* Logiikka sille mitä tehdään.
*/
function handle_request() {
if (typeof($("meta[name='citation_abstract_html_url']").attr("content")) != "undefined" )
{
// Käsittelee tieteelliset tietokannat jotka julkaisevat head-osiossa citation tiedot
// https://www.doria.fi/
// http://www.theseus.fi
//
var p=parse_doria();
}
else if (($("meta[name='generator']").attr("content")+"").search("MediaWiki") != -1 )
{
// Käsittelee tieteelliset tietokannat jotka julkaisevat head-osiossa citation tiedot
// https://www.doria.fi/
// http://www.theseus.fi
//
var p=parse_mediawiki();
}
else if (document.location.href.search("www.ts.fi")!=-1)
{
var p=parse_turunsanomat();
}
else if (document.location.href.search("kansanuutiset.fi")!=-1)
{
var p=parse_kansanuutiset();
}
else if (document.location.href.search("koti.ts.fi")!=-1)
{
var p=parse_generic();
}
else if (document.location.href.search("www.hs.fi")!=-1)
{
var p=parse_helsinginsanomat();
}
else if ((document.location.href.search("yle.fi/uutiset")!=-1) || (document.location.href.search("yle.fi/urheilu")!=-1))
{
var p=parse_yle_uutiset();
}
else if (document.location.href.search("mtv.fi")!=-1)
{
var p=parse_mtv3();
}
else if (document.location.href.search("iltasanomat.fi")!=-1)
{
var p=parse_iltasanomat();
}
else if (document.location.href.search("iltalehti.fi")!=-1)
{
var p=parse_iltalehti();
}
else if (document.location.href.search("kaleva.fi")!=-1)
{
var p=parse_kaleva();
}
else if (document.location.href.match("(lansi-uusimaa.fi|www.uusimaa.fi)"))
{
var p=parse_lansisavo();
}
else if (document.location.href.search("ksml.fi")!=-1)
{
var p=parse_ksml();
}
else if (document.location.href.search("uusisuomi.fi")!=-1)
{
var p=parse_uusisuomi();
}
else if (document.location.href.search("www.rumba.fi")!=-1)
{
var p=parse_rumba();
}
else if (document.location.href.search("www.forssanlehti.fi")!=-1)
{
var p=parse_forssanlehti();
}
else if (document.location.href.search("www.verkkouutiset.fi")!=-1)
{
var p=parse_verkkouutiset();
}
else if (document.location.href.match(
"(www.lapinkansa.fi"
+ "|www.satakunnankansa.fi"
+ "|www.jamsanseutu.fi"
+ "|www.janakkalansanomat.fi"
+ "|www.kankaanpaanseutu.fi"
+ "|www.kmvlehti.fi"
+ "|www.kuriirilehti.fi"
+ "|www.lounaislappi.fi"
+ "|www.luoteisvayla.fi"
+ "|www.merikarvialehti.fi"
+ "|www.nokianuutiset.fi"
+ "|www.pohjolansanomat.fi"
+ "|www.pyhajokiseutu.fi"
+ "|www.raahenseutu.fi"
+ "|www.rannikkoseutu.fi"
+ "|www.suurkeuruu.fi"
+ "|www.sydansatakunta.fi"
+ "|www.tyrvaansanomat.fi"
+ "|www.uusirovaniemi.fi"
+ "|www.valkeakoskensanomat.fi)"))
{
var p=parse_lapinkansa();
}
else if (document.location.href.search("www.kauppalehti.fi")!=-1)
{
var p=parse_kauppalehti();
}
else if (document.location.href.search("taloussanomat.fi")!=-1)
{
var p=parse_taloussanomat();
}
else if (document.location.href.search("maaseuduntulevaisuus.fi")!=-1)
{
var p=parse_maaseuduntulevaisuus();
}
else if (document.location.href.search("ess.fi")!=-1)
{
var p=parse_ess();
}
else if (document.location.href.search("koillissanomat.fi")!=-1)
{
var p=parse_koillissanomat();
}
else if (document.location.href.search("itahame.fi")!=-1)
{
var p=parse_itahame();
}
else if (document.location.href.search("sss.fi")!=-1)
{
var p=parse_salonseudunsanomat();
}
else if (document.location.href.search("hameensanomat.fi")!=-1)
{
var p=parse_hameensanomat();
}
else if (document.location.href.search("savonsanomat.fi")!=-1)
{
var p=parse_savonsanomat();
}
else if (document.location.href.match("hbl.fi|bbl.fi|vastranyland.fi"))
{
var p=parse_hbl();
}
else if (document.location.href.match("abounderrattelser.fi"))
{
var p=parse_abounderrattelser();
}
else if (document.location.href.match("(vasabladet.fi|online.osterbottenstidning.fi)"))
{
var p=parse_vasabladet();
}
else if (document.location.href.search("kp24.fi")!=-1)
{
var p=parse_kp24();
}
else if (document.location.href.search("demari.fi")!=-1)
{
var p=parse_demari();
}
else if (document.location.href.match("(www.iisalmensanomat.fi|www.warkaudenlehti.fi)"))
{
var p=parse_iisalmensanomat();
}
else if (document.location.href.search("www.karjalainen.fi")!=-1)
{
var p=parse_karjalainen();
}
else if (document.location.href.match("(www.esaimaa.fi|www.kouvolansanomat.fi|www.kymensanomat.fi)"))
{
var p=parse_esaimaa();
}
else if (document.location.href.match("(www.ilkka.fi|www.pohjalainen.fi)"))
{
var p=parse_ilkka();
}
else if (document.location.href.match("runeberg.org"))
{
var p=parse_runeberg_tieto();
}
else if (document.location.href.search("www.aamulehti.fi")!=-1)
{
var p=parse_aamulehti();
}
else if (document.location.href.search("high.fi")!=-1)
{
var p=parse_highfi_list();
}
else if (document.location.href.search("www.ampparit.com")!=-1)
{
var p=parse_ampparit_list();
}
else
{
var p=parse_generic();
}
//p=get_rss(p);
if (typeof(p)!="undefined")
{
var full_ref=print_verkkoviite(p,1);
var one_line_ref=print_verkkoviite(p,0);
prompt(full_ref, one_line_ref);
}
else
{
alert("ERROR: no data parsed");
}
}
// http://www.learningjquery.com/2009/04/better-stronger-safer-jquerify-bookmarklet/
// more or less stolen form jquery core and adapted by paul irish
function getScript(url,success){
var script=document.createElement('script');
script.src=url;
var head=document.getElementsByTagName('head')[0],
done=false;
// Attach handlers for all browsers
script.onload=script.onreadystatechange = function(){
if ( !done && (!this.readyState
|| this.readyState == 'loaded'
|| this.readyState == 'complete') ) {
done=true;
success();
script.onload = script.onreadystatechange = null;
head.removeChild(script);
}
};
head.appendChild(script);
}
// $("body")==null tarkistus on sitä varten, että jokiin muu
if (typeof(window.jQuery) == "undefined"
|| typeof($) == "undefined"
|| $("body") == null
|| (parseFloat($().jquery) < 1.7) )
{
var jquery_url="//code.jquery.com/jquery-1.9.1.js";
getScript(jquery_url,function() {
if (typeof jQuery=='undefined') {
alert("JQuery loading failed");
} else {
handle_request();
}
});
}
else
{
handle_request();
}