2011-06-15 16:12:27 +00:00
{
"translatorID" : "d49e3a67-e2c1-4217-825c-2b22cffd332a" ,
"label" : "LiveJournal" ,
"creator" : "Avram Lyon" ,
"target" : "^https?://.*\\.livejournal\\.com/(?:$|[0-9]+\\.html)" ,
"minVersion" : "2.1" ,
"maxVersion" : "" ,
"priority" : 100 ,
2011-06-18 08:39:42 +00:00
"browserSupport" : "gcs" ,
2011-06-15 16:12:27 +00:00
"inRepository" : true ,
"translatorType" : 4 ,
2011-06-20 01:31:24 +00:00
"lastUpdated" : "2011-06-19 21:11:50"
2011-06-15 16:12:27 +00:00
}
/* 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
2011-06-20 01:31:24 +00:00
2011-06-15 16:12:27 +00:00
/ * *
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/>.
* /
2011-07-01 07:08:37 +00:00
/ * T h e r e a r e a t l e a s t 4 m a j o r p a g e s t r u c t u r e s o n L J , r e p r e s e n t e d
2011-06-15 16:12:27 +00:00
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 ( )
} ) ;
2011-07-01 07:08:37 +00:00
// 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 ( /:.*$/ )
} ) ;
2011-06-15 16:12:27 +00:00
// 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"
}
]
2011-06-20 01:31:24 +00:00
} ,
{
"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"
} ,
2011-07-01 07:08:37 +00:00
2011-06-20 01:31:24 +00:00
{
"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"
}
]
2011-07-01 07:08:37 +00:00
} ,
{
"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"
}
]
2011-06-15 16:12:27 +00:00
}
]
/** END TEST CASES **/