zotero/translators/LiveJournal.js

545 lines
28 KiB
JavaScript
Raw Normal View History

{
"translatorID": "d49e3a67-e2c1-4217-825c-2b22cffd332a",
"label": "LiveJournal",
"creator": "Avram Lyon",
"target": "^https?://.*\\.livejournal\\.com/(?:$|[0-9]+\\.html)",
"minVersion": "2.1",
"maxVersion": "",
"priority": 100,
"browserSupport":"gcs",
"inRepository": true,
"translatorType": 4,
"lastUpdated": "2011-06-19 21:11:50"
}
/* FW LINE 46:127318f30c1d */ function flatten(c){var b=new Array();for(var d in c){var e=c[d];if(e instanceof Array){b=b.concat(flatten(e))}else{b.push(e)}}return b}var FW={_scrapers:new Array()};FW._Base=function(){this.callHook=function(b,c,e,a){if(typeof this["hooks"]==="object"){var d=this["hooks"][b];if(typeof d==="function"){d(c,e,a)}}};this.evaluateThing=function(f,e,c){var b=typeof f;if(b==="string"){return f}else{if(b==="object"){if(f instanceof Array){var d=this.evaluateThing;var a=f.map(function(g){return d(g,e,c)});return flatten(a)}else{return f.evaluate(e,c)}}else{if(b==="function"){return f(e,c)}else{return undefined}}}}};FW.Scraper=function(a){FW._scrapers.push(new FW._Scraper(a))};FW._Scraper=function(a){for(x in a){this[x]=a[x]}this._singleFieldNames=["abstractNote","applicationNumber","archive","archiveLocation","artworkMedium","artworkSize","assignee","audioFileType","audioRecordingType","billNumber","blogTitle","bookTitle","callNumber","caseName","code","codeNumber","codePages","codeVolume","committee","company","conferenceName","country","court","date","dateDecided","dateEnacted","dictionaryTitle","distributor","docketNumber","documentNumber","DOI","edition","encyclopediaTitle","episodeNumber","extra","filingDate","firstPage","forumTitle","genre","history","institution","interviewMedium","ISBN","ISSN","issue","issueDate","issuingAuthority","journalAbbreviation","label","language","legalStatus","legislativeBody","letterType","libraryCatalog","manuscriptType","mapType","medium","meetingName","nameOfAct","network","number","numberOfVolumes","numPages","pages","patentNumber","place","postType","presentationType","priorityNumbers","proceedingsTitle","programTitle","programmingLanguage","publicLawNumber","publicationTitle","publisher","references","reportNumber","reportType","reporter","reporterVolume","rights","runningTime","scale","section","series","seriesNumber","seriesText","seriesTitle","session","shortTitle","studio","subject","system","thesisType","title","type","university","url","version","videoRecordingType","volume","websiteTitle","websiteType"];this._makeAttachments=function(q,b,f,s){if(f instanceof Array){f.forEach(function(k){this._makeAttachments(q,b,k,s)},this)}else{if(typeof f==="object"){var p=f.urls||f.url;var m=f.types||f.type;var e=f.titles||f.title;var h=this.evaluateThing(p,q,b);var o=this.evaluateThing(e,q,b);var r=this.evaluateThing(m,q,b);var l=(r instanceof Array);var n=(o instanceof Array);if(!(h instanceof Array)){h=[h]}for(var j in h){var c=h[j];var g;var d;if(l){g=r[j]}else{g=r}if(n){d=o[j]}else{d=o}s.attachments.push({url:c,title:d,type:g})}}}};this.makeItems=function(o,b,m,c,l){var q=new Zotero.Item(this.itemType);q.url=b;for(var h in this._singleFieldNames){var n=this._singleFieldNames[h];if(this[n]){var g=this.evaluateThing(this[n],o,b);if(g instanceof Array){q[n]=g[0]}else{q[n]=g}}}var r=["creators","tags"];for(var f in r){var p=r[f];var d=this.evaluateThing(this[p],o,b);if(d){for(var e in d){q[p].push(d[e])}}}this._makeAttachments(o,b,this["attachments"],q);c(q,this,o,b);l([q])}};FW._Scraper.prototype=new FW._Base;FW.MultiScraper=function(a){FW._scrapers.push(new FW._MultiScraper(a))};FW._MultiScraper=function(a){for(x in a){this[x]=a[x]}this._mkSelectItems=function(e,d){var b=new Object;for(var c in e){b[d[c]]=e[c]}return b};this._selectItems=function(d,c,e){var b=new Array();Zotero.selectItems(this._mkSelectItems(d,c),function(f){for(var g in f){b.push(g)}e(b)})};this._mkAttachments=function(g,d,f){var b=this.evaluateThing(this["attachments"],g,d);var c=new Object();if(b){for(var e in f){c[f[e]]=b[e]}}return c};this._makeChoices=function(f,p,c,d,h){if(f instanceof Array){f.forEach(function(k){this._makeTitlesUrls(k,p,c,d,h)},this)}else{if(typeof f==="object"){var m=f.urls||f.url;var e=f.titles||f.title;var n=this.evaluateThing(m,p,c);var j=this.evaluateThing(e,p,c);var l=(j instanceof Array);if(!(n instanceof Array)){n=[n]}for(var g in n){var b=n[g];var o;if(l){o=j[g]}else{o=j}h.push(b);d.push(o)}}}};this.makeItems=function(j,b,g,c,f){Zotero.debug("Entering MultiS
/**
Copyright (c) 2011, Avram Lyon
This program is free software: you can redistribute it and/or
modify it under the terms of the GNU Affero General Public License
as published by the Free Software Foundation, either version 3 of
the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public
License along with this program. If not, see
<http://www.gnu.org/licenses/>.
*/
/* There are at least 4 major page structures on LJ, represented
by the scrapers and tests specified below. Additional structures
may need additional logic. */
function detectWeb(doc, url) { return FW.detectWeb(doc, url); }
function doWeb(doc, url) { return FW.doWeb(doc, url); }
FW.MultiScraper({
itemType : 'multiple',
detect : FW.Url().match(/livejournal\.com\/?$/),
choices : {
titles : FW.Xpath('//a[@class="subj-link"]').text(),
urls : FW.Xpath('//a[@class="subj-link"]').key("href")
}
});
// http://kurgus.livejournal.com
FW.Scraper({
itemType : "blogPost",
detect : FW.Xpath('//dt[@class="entry-title"]/text()[1]'),
title : FW.Xpath('//dt[@class="entry-title"]/text()[1]').text(),
date : FW.Xpath('//dt[@class="entry-title"]/following-sibling::dd[1]/dl/dd[@class="entry-date"]/abbr')
.key("title").remove(/T.*$/),
attachments : [{ url: FW.Url(),
title: "LiveJournal Snapshot",
type: "text/html" }],
creators : FW.Xpath('//dt[@class="entry-title"]/following-sibling::dd[1]/dl/dd[@class="username"]/span/a/b').text().cleanAuthor("author"),
blogTitle : FW.Xpath('//h2/span').text(),
tags : FW.Xpath('//div[@class="ljtags"]/a').text()
});
// http://ulr.livejournal.com
FW.Scraper({
itemType : "blogPost",
detect : FW.Xpath('//div[@class="asset-header-content-inner"]'),
title : FW.Xpath('//div[@class="asset-header-content-inner"]/h2/a').text(),
date : FW.Xpath('//div[@class="asset-header-content-inner"]/div[@class="asset-meta"]//abbr')
.text().remove(/at.*$/),
attachments : [{ url: FW.Url(),
title: "LiveJournal Snapshot",
type: "text/html" }],
creators : FW.Xpath('//dd[@class="profile-username item"]/span[@class="ljuser ljuser-name_"]/a/b').text().cleanAuthor("author"),
blogTitle : FW.Xpath('//div[@id="header-name"]/a').text()
});
// http://shlyahtich.livejournal.com/ (Lanzelot design)
FW.Scraper({
itemType : "blogPost",
detect : FW.Xpath('//table[@class="lanzelot-content"]'),
title : FW.Xpath('//div[@id="content-wrapper"]/div/font/i').text(),
date : FW.Xpath('//div[@id="content-wrapper"]/table//td[last()]')
.text().trimInternal().remove(/^.*@/),
attachments : [{ url: FW.Url(),
title: "LiveJournal Snapshot",
type: "text/html" }],
creators : FW.Xpath('//div[@id="content-wrapper"]/table//span[@class="ljuser ljuser-name_"]/preceding-sibling::text()').text().remove(/\(\s*$/).cleanAuthor("author"),
blogTitle : FW.Xpath('/html/head/title').text().remove(/:.*$/)
});
// http://irek-murtazin.livejournal.com
FW.Scraper({
itemType : "blogPost",
detect : FW.Xpath('//table[@class="entrybox"]//table[1]//td[@class="caption"]'),
title : FW.Xpath('//table[@class="entrybox"]//table[1]//td[@class="caption"]').text(),
date : FW.Xpath('//table[@class="entrybox"]//table[1]//td[@class="index"]')
.text().replace(/\[(.*)\|.*\]/, '$1'),
attachments : [{ url: FW.Url(),
title: "LiveJournal Snapshot",
type: "text/html" }],
creators : FW.Xpath('//form[@class="w-cs-search"]/input[@name="journal"]').key("value").cleanAuthor("author"),
blogTitle : FW.Xpath('//table[@id="topbox"]//div[@align="center"]').text()
});
/** BEGIN TEST CASES **/
var testCases = [
{
"type": "web",
"url": "http://irek-murtazin.livejournal.com/487966.html",
"items": [
{
"itemType": "blogPost",
"creators": [
{
"firstName": "",
"lastName": "irek_murtazin",
"creatorType": "author"
}
],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"url": "http://irek-murtazin.livejournal.com/487966.html",
"title": "LiveJournal Snapshot",
"type": "text/html"
}
],
"url": "http://irek-murtazin.livejournal.com/487966.html",
"blogTitle": "Ирек Муртазин",
"date": "Jun. 12th, 2011",
"title": "12 июня 1991 года",
"libraryCatalog": "LiveJournal",
"accessDate": "CURRENT_TIMESTAMP",
"checkFields": "title"
}
]
},
{
"type": "web",
"url": "http://kurgus.livejournal.com/60523.html",
"items": [
{
"itemType": "blogPost",
"creators": [
{
"firstName": "",
"lastName": "kurgus",
"creatorType": "author"
}
],
"notes": [],
"tags": [
"apple",
"safari",
"zotero",
"Библиотеки"
],
"seeAlso": [],
"attachments": [
{
"url": "http://kurgus.livejournal.com/60523.html",
"title": "LiveJournal Snapshot",
"type": "text/html"
}
],
"url": "http://kurgus.livejournal.com/60523.html",
"blogTitle": "kurgus",
"date": "2011-06-14",
"title": "Zotero, Mac, пожелания и разочарания",
"libraryCatalog": "LiveJournal",
"accessDate": "CURRENT_TIMESTAMP",
"checkFields": "title"
}
]
},
{
"type": "web",
"url": "http://ulr.livejournal.com/164941.html",
"items": [
{
"itemType": "blogPost",
"creators": [
{
"firstName": "",
"lastName": "ulr",
"creatorType": "author"
}
],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"url": "http://ulr.livejournal.com/164941.html",
"title": "LiveJournal Snapshot",
"type": "text/html"
}
],
"url": "http://ulr.livejournal.com/164941.html",
"blogTitle": "Лариса",
"date": "May. 18th, 2011 ",
"title": "Двойной праздник",
"libraryCatalog": "LiveJournal",
"accessDate": "CURRENT_TIMESTAMP",
"checkFields": "title"
}
]
},
{
"type": "web",
"url": "http://kurgus.livejournal.com/",
"items": [
{
"itemType": "blogPost",
"creators": [
{
"firstName": "",
"lastName": "kurgus",
"creatorType": "author"
}
],
"notes": [],
"tags": [
"apple",
"safari",
"zotero",
"Библиотеки"
],
"seeAlso": [],
"attachments": [
{
"url": "http://kurgus.livejournal.com/60523.html",
"title": "LiveJournal Snapshot",
"type": "text/html"
}
],
"url": "http://kurgus.livejournal.com/60523.html",
"blogTitle": "kurgus",
"date": "2011-06-14",
"title": "Zotero, Mac, пожелания и разочарания",
"libraryCatalog": "LiveJournal"
},
{
"itemType": "blogPost",
"creators": [
{
"firstName": "",
"lastName": "kurgus",
"creatorType": "author"
}
],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"url": "http://kurgus.livejournal.com/60348.html",
"title": "LiveJournal Snapshot",
"type": "text/html"
}
],
"url": "http://kurgus.livejournal.com/60348.html",
"blogTitle": "kurgus",
"date": "2011-05-27",
"title": "Рейтинг-механизм в en.wikipedia",
"libraryCatalog": "LiveJournal"
},
{
"itemType": "blogPost",
"creators": [
{
"firstName": "",
"lastName": "kurgus",
"creatorType": "author"
}
],
"notes": [],
"tags": [
"Обскурантизм",
"Разгильдяйство"
],
"seeAlso": [],
"attachments": [
{
"url": "http://kurgus.livejournal.com/60049.html",
"title": "LiveJournal Snapshot",
"type": "text/html"
}
],
"url": "http://kurgus.livejournal.com/60049.html",
"blogTitle": "kurgus",
"date": "2011-05-26",
"title": "Многоклеточный шовинизм",
"libraryCatalog": "LiveJournal"
},
{
"itemType": "blogPost",
"creators": [
{
"firstName": "",
"lastName": "kurgus",
"creatorType": "author"
}
],
"notes": [],
"tags": [
"Жизнь",
"Природа"
],
"seeAlso": [],
"attachments": [
{
"url": "http://kurgus.livejournal.com/59586.html",
"title": "LiveJournal Snapshot",
"type": "text/html"
}
],
"url": "http://kurgus.livejournal.com/59586.html",
"blogTitle": "kurgus",
"date": "2011-05-23",
"title": "Погладь сосну!",
"libraryCatalog": "LiveJournal"
},
{
"itemType": "blogPost",
"creators": [
{
"firstName": "",
"lastName": "kurgus",
"creatorType": "author"
}
],
"notes": [],
"tags": [
"Наука",
"Обскурантизм",
"Этнография современности"
],
"seeAlso": [],
"attachments": [
{
"url": "http://kurgus.livejournal.com/59247.html",
"title": "LiveJournal Snapshot",
"type": "text/html"
}
],
"url": "http://kurgus.livejournal.com/59247.html",
"blogTitle": "kurgus",
"date": "2011-05-22",
"title": "О псевдонауке, \"точках зрения\" и прочем",
"libraryCatalog": "LiveJournal"
},
{
"itemType": "blogPost",
"creators": [
{
"firstName": "",
"lastName": "kurgus",
"creatorType": "author"
}
],
"notes": [],
"tags": [
"Жизнь",
"Наука"
],
"seeAlso": [],
"attachments": [
{
"url": "http://kurgus.livejournal.com/59082.html",
"title": "LiveJournal Snapshot",
"type": "text/html"
}
],
"url": "http://kurgus.livejournal.com/59082.html",
"blogTitle": "kurgus",
"date": "2011-05-21",
"title": "Украинский фестиваль науки: облом в ИТФ",
"libraryCatalog": "LiveJournal",
"shortTitle": "Украинский фестиваль науки"
},
{
"itemType": "blogPost",
"creators": [
{
"firstName": "",
"lastName": "kurgus",
"creatorType": "author"
}
],
"notes": [],
"tags": [
"Википедия",
"Химия",
"Этнография современности"
],
"seeAlso": [],
"attachments": [
{
"url": "http://kurgus.livejournal.com/58859.html",
"title": "LiveJournal Snapshot",
"type": "text/html"
}
],
"url": "http://kurgus.livejournal.com/58859.html",
"blogTitle": "kurgus",
"date": "2011-05-17",
"title": "Похвала японцам или о без(д)умии европеоидов.",
"libraryCatalog": "LiveJournal"
},
{
"itemType": "blogPost",
"creators": [
{
"firstName": "",
"lastName": "kurgus",
"creatorType": "author"
}
],
"notes": [],
"tags": [
"Википедия",
"Национал-лингвистика"
],
"seeAlso": [],
"attachments": [
{
"url": "http://kurgus.livejournal.com/58369.html",
"title": "LiveJournal Snapshot",
"type": "text/html"
}
],
"url": "http://kurgus.livejournal.com/58369.html",
"blogTitle": "kurgus",
"date": "2011-05-16",
"title": "Дефиниционно: сакральные отличия",
"libraryCatalog": "LiveJournal",
"shortTitle": "Дефиниционно"
},
{
"itemType": "blogPost",
"creators": [
{
"firstName": "",
"lastName": "kurgus",
"creatorType": "author"
}
],
"notes": [],
"tags": [
"Криптолитература",
"Литература"
],
"seeAlso": [],
"attachments": [
{
"url": "http://kurgus.livejournal.com/58242.html",
"title": "LiveJournal Snapshot",
"type": "text/html"
}
],
"url": "http://kurgus.livejournal.com/58242.html",
"blogTitle": "kurgus",
"date": "2011-05-11",
"title": "Эзоп и Аристофан",
"libraryCatalog": "LiveJournal"
},
{
"itemType": "blogPost",
"creators": [
{
"firstName": "",
"lastName": "kurgus",
"creatorType": "author"
}
],
"notes": [],
"tags": [
"Фотоложество"
],
"seeAlso": [],
"attachments": [
{
"url": "http://kurgus.livejournal.com/58023.html",
"title": "LiveJournal Snapshot",
"type": "text/html"
}
],
"url": "http://kurgus.livejournal.com/58023.html",
"blogTitle": "kurgus",
"date": "2011-05-10",
"title": "HDR на коленке",
"libraryCatalog": "LiveJournal"
}
]
},
{
"type": "web",
"url": "http://shlyahtich.livejournal.com/625326.html",
"items": [
{
"itemType": "blogPost",
"creators": [
{
"firstName": "Sergey",
"lastName": "Kalenik",
"creatorType": "author"
}
],
"notes": [],
"tags": [],
"seeAlso": [],
"attachments": [
{
"url": "http://shlyahtich.livejournal.com/625326.html",
"title": "LiveJournal Snapshot",
"type": "text/html",
"document": "[object]"
}
],
"url": "http://shlyahtich.livejournal.com/625326.html",
"blogTitle": "shlyahtich",
"date": " 2011-06-14 16:34:00",
"title": "Новая Утиная Правда о Буданове",
"libraryCatalog": "LiveJournal",
"accessDate": "CURRENT_TIMESTAMP",
"checkFields": "title"
}
]
}
]
/** END TEST CASES **/