From 2c5884f117a0a1a034ef3d95e774ce5f016e1de0 Mon Sep 17 00:00:00 2001 From: Sean Takats Date: Mon, 30 Jul 2007 17:23:14 +0000 Subject: [PATCH] updated translators: Voyager: tweaks XPath to be more forgiving (better support for U-W Madison, etc.) Melvyl: now works on "review" view of search results ERIC: fixes regex added translators: bibsys.no BBC News AMS Online Journals (ams.allenpress.com) Education Week AGU Journals LA Times BioMed Central OpticsInfoBase SSRN RSC Publishing (rsc.org) GBV --- scrapers.sql | 1972 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 1949 insertions(+), 23 deletions(-) diff --git a/scrapers.sql b/scrapers.sql index e5f185012..695de8fd0 100644 --- a/scrapers.sql +++ b/scrapers.sql @@ -1,4 +1,4 @@ --- 248 +-- 249 -- ***** BEGIN LICENSE BLOCK ***** -- @@ -22,7 +22,7 @@ -- Set the following timestamp to the most recent scraper update date -REPLACE INTO version VALUES ('repository', STRFTIME('%s', '2007-07-14 22:56:53')); +REPLACE INTO version VALUES ('repository', STRFTIME('%s', '2007-07-30 22:00:00')); REPLACE INTO translators VALUES ('96b9f483-c44d-5784-cdad-ce21b984fe01', '1.0.0b4.r1', '', '2007-06-21 20:00:00', '1', '100', '4', 'Amazon.com', 'Sean Takats', '^https?://(?:www\.)?amazon', 'function detectWeb(doc, url) { @@ -762,7 +762,7 @@ function doWeb(doc, url) { Zotero.wait(); }'); -REPLACE INTO translators VALUES ('88915634-1af6-c134-0171-56fd198235ed', '1.0.0b3.r1', '', '2007-05-31 20:00:00', 1, 100, 4, 'Library Catalog (Voyager)', 'Simon Kornblith', 'Pwebrecon\.cgi', +REPLACE INTO translators VALUES ('88915634-1af6-c134-0171-56fd198235ed', '1.0.0b3.r1', '', '2007-07-30 22:00:00', '1', '100', '4', 'Library Catalog (Voyager)', 'Simon Kornblith', 'Pwebrecon\.cgi', 'function detectWeb(doc, url) { var export_options = doc.forms.namedItem(''frm'').elements.namedItem(''RD'').options; for(var i in export_options) { @@ -782,7 +782,7 @@ REPLACE INTO translators VALUES ('88915634-1af6-c134-0171-56fd198235ed', '1.0.0b } } } -}', +}', 'function doWeb(doc, url) { var postString = ''''; var form = doc.forms.namedItem(''frm''); @@ -809,7 +809,8 @@ REPLACE INTO translators VALUES ('88915634-1af6-c134-0171-56fd198235ed', '1.0.0b var checkboxes = new Array(); var urls = new Array(); - var tableRows = doc.evaluate(''/html/body/form/table/tbody/tr[td/input[@type="checkbox"]]'', doc, nsResolver, XPathResult.ANY_TYPE, null); + var tableRows = doc.evaluate(''//form[@name="frm"]//table/tbody/tr[td/input[@type="checkbox"]]'', doc, nsResolver, XPathResult.ANY_TYPE, null); + // Go through table rows var tableRow; var i = 0; @@ -1536,7 +1537,7 @@ function doWeb(doc, url) { }'); -REPLACE INTO translators VALUES ('e4660e05-a935-43ec-8eec-df0347362e4c', '1.0.0b4r1', '', '2007-06-27 02:00:00', '0', '100', '4', 'ERIC', 'Ramesh Srigiriraju', '^http://eric\.ed\.gov/', +REPLACE INTO translators VALUES ('e4660e05-a935-43ec-8eec-df0347362e4c', '1.0.0b4r1', '', '2007-07-30 22:00:00', '0', '100', '4', 'ERIC', 'Ramesh Srigiriraju', '^http://(?:www\.)?eric\.ed\.gov/', 'function detectWeb(doc, url) { var namespace=doc.documentElement.namespaceURI; var nsResolver=namespace?function(prefix) { @@ -1545,7 +1546,7 @@ REPLACE INTO translators VALUES ('e4660e05-a935-43ec-8eec-df0347362e4c', '1.0.0b var searchpath=''//form[@name="searchResultsForm"][@id="searchResultsForm"]''; if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) return "multiple"; - var singpath=''//a[text()="Back to Search Results"]''; + var singpath=''//tr/td[@class="primaryHeader"][contains(text(), "Result Details")]''; if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { var typepath=''//tr[td/strong/text()="Pub Types:"]/td[2]/text()''; var typestr=doc.evaluate(typepath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().nodeValue; @@ -1567,7 +1568,8 @@ REPLACE INTO translators VALUES ('e4660e05-a935-43ec-8eec-df0347362e4c', '1.0.0b return "audioRecording"; if(typearr[1]="Legal") return "statute"; - return "book"; + else + return "book"; } }', 'function doWeb(doc, url) { @@ -1578,7 +1580,7 @@ REPLACE INTO translators VALUES ('e4660e05-a935-43ec-8eec-df0347362e4c', '1.0.0b var searchpath=''//form[@name="searchResultsForm"][@id="searchResultsForm"]''; if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { var string="http://eric.ed.gov/ERICWebPortal/custom/portlets/clipboard/performExport.jsp"; - var idpath="//tr/td/a/@id"; + var idpath=''//a[img]/@id''; var ids=doc.evaluate(idpath, doc, nsResolver, XPathResult.ANY_TYPE, null); var items=new Array(); var titlpath=''//tr[1]/td[1]/p/a''; @@ -1595,21 +1597,41 @@ REPLACE INTO translators VALUES ('e4660e05-a935-43ec-8eec-df0347362e4c', '1.0.0b var trans=Zotero.loadTranslator("import"); trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); trans.setString(text); + trans.setHandler("itemDone", function(obj, newItem) { + var linkpath=''//tbody[tr/td/a/@id="''+newItem.itemID+''"]/tr/td/p/a[@class="action"]''; + var link=doc.evaluate(linkpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext(); + if(link) + newItem.attachments.push({url:link.href, title:newItem.title, mimeType:"application/pdf"}); + newItem.complete(); + }); trans.translate(); Zotero.done(); }); Zotero.wait(); } - var singpath=''//a[text()="Back to Search Results"]''; + var singpath=''//tr/td[@class="primaryHeader"][contains(text(), "Result Details")]''; if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { - var idpath=''//tr[td/strong/text()="ERIC #:"]/td[2]/text()''; - var id=doc.evaluate(idpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().nodeValue; + var idpath=''//input[@type="hidden"][@name="accno"]/@value''; + var idpath2=''//meta[@name="eric #"]/@content''; + var id; + var temp=doc.evaluate(idpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext(); + if(temp) + id=temp.nodeValue; + else + id=doc.evaluate(idpath2, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().nodeValue; var string="http://eric.ed.gov/ERICWebPortal/custom/portlets/clipboard/performExport.jsp?accno="; string+=id+"&texttype=endnote&citationtype=brief&Download.x=86&Download.y=14"; Zotero.Utilities.HTTP.doGet(string, function(text) { var trans=Zotero.loadTranslator("import"); trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); trans.setString(text); + trans.setHandler("itemDone", function(obj, newItem) { + var linkpath=''//tr/td/p[img/@alt="PDF"]/a''; + var link=doc.evaluate(linkpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext(); + if(link) + newItem.attachments.push({url:link.href, title:newItem.title, mimeType:"application/pdf"}); + newItem.complete(); + }); trans.translate(); Zotero.done(); }); @@ -1968,6 +1990,1892 @@ function doWeb(doc, url) { }'); +REPLACE INTO translators VALUES ('ab961e61-2a8a-4be1-b8a3-044f20d52d78', '1.0.0b4r1', '', '2007-07-30 22:00:00', '0', '100', '4', 'BIBSYS', 'Ramesh Srigiriraju', '^http://ask\.bibsys\.no/ask/action', +'function detectWeb(doc, url) { + var multireg=new RegExp("^http://ask\.bibsys\.no/ask/action/result"); + if(multireg.test(url)) + return "multiple"; + var singlereg=new RegExp("^http://ask\.bibsys\.no/ask/action/show"); + if(singlereg.test(url)) + return "book"; +}', +'function doWeb(doc, url) { + var namespace=doc.documentElement.namespaceURI; + var nsResolver=namespace?function(prefix) { + return (prefix=="x")?namespace:null; + }:null; + var multireg=new RegExp("http://ask\.bibsys\.no/ask/action/result"); + if(multireg.test(url)) { + var titlpath=''//tr/td[@width="49%"][@align="left"][@valign="top"]/a/text()''; + var titles=doc.evaluate(titlpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var codepath=''//tr/td/input[@type="checkbox"][@name="valg"]/@value''; + var codes=doc.evaluate(codepath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var items=new Array(); + var title; + titles.iterateNext(); + while(title=titles.iterateNext()) + items[codes.iterateNext().nodeValue]=title.nodeValue; + items=Zotero.selectItems(items); + var string="http://ask.bibsys.no/ask/action/result?control=ctr_top"; + for(var codes in items) + string+="&valg="+codes; + string+="&control=ctr_bottom&eksportFormat=refmanager&eksportEpostAdresse=&eksportEpostFormat=fortekst&cmd=sendtil"; + Zotero.Utilities.HTTP.doGet(string, function(text) { + var trans=Zotero.loadTranslator("import"); + trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + trans.setString(text); + trans.translate(); + Zotero.done(); + }); + Zotero.wait(); + } + var singlereg=new RegExp("http://ask\.bibsys\.no/ask/action/show"); + if(singlereg.test(url)) { + var urlstring="http://ask.bibsys.no/ask/action/show"; + var data="visningsformat=fortekst_m_eksemplarer&eksportFormat=refmanager&eksportEpostAdresse=&eksportEpostFormat=fortekst&cmd=sendtil"; + Zotero.Utilities.HTTP.doPost(urlstring, data, function(text) { + var trans=Zotero.loadTranslator("import"); + trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + trans.setString(text); + trans.translate(); + Zotero.done(); + }); + Zotero.wait(); + } +}'); + +REPLACE INTO translators VALUES ('f4130157-93f7-4493-8f24-a7c85549013d', '1.0.0b4r1', '', '2007-07-30 22:00:00', '0', '100', '4', 'BBC', 'Ben Parr', '^https?://(?:www|news?)\.bbc\.co.uk', +'function detectWeb(doc, url) +{ + + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var xpath; + + xpath=''//meta[@name="Headline"]''; + if(content=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext()) + { return "newspaperArticle"; } + + xpath=''//font[@class="poshead"]/b''; + if(doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext()) + { return "newspaperArticle"; } + + return null; +}', +'function scrape(doc,url,title) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var newItem = new Zotero.Item("newspaperArticle"); + + newItem.url=url; + newItem.repository="bbc.co.uk"; + newItem.publicationTitle="BBC"; + newItem.title=title; + + xpath=''//meta[@name="OriginalPublicationDate"]/@content''; + var temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext(); + if(temp) + { + temp=temp.value; + temp=temp.split(" ")[0]; + newItem.date=temp; + } + else + { + xpath=''//font[@class="postxt"][@size="1"]''; + var rows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + var row; + while(row=rows.iterateNext()) + { + temp=row.textContent; + if(temp.substr(0,9)=="Created: ") + { + newItem.date=temp.substr(9); + break; + } + } + } + + xpath=''//meta[@name="Section"]/@content''; + temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext(); + if(temp) + { newItem.section=temp.value; } + + xpath=''//meta[@name="Description"]/@content''; + temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext(); + if(temp) + { newItem.abstractNote=temp.value; } + else + { + xpath=''//meta[@name="description"]/@content''; + temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext(); + if(temp) + { newItem.abstractNote=temp.value; } + } + + newItem.attachments.push({url:url, title:"New York Times Snapshot",mimeType:"text/html"}); + + newItem.complete(); +} + + + +function doWeb(doc,url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var xpath=''//meta[@name="Headline"]/@content''; + var title; + if(title=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext()) + { scrape(doc,url,title.value) } + else + { + xpath=''//font[@class="poshead"]/b''; + if(title=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext()) + { scrape(doc,url,title.textContent) } + } + + +}'); + +REPLACE INTO translators VALUES ('dbb5d4bc-3b21-47a2-9751-5dcbb65b902a', '1.0.0b4r1', '', '2007-07-30 22:00:00', '0', '100', '4', 'AMS Online Journals - Allenpress', 'Ben Parr', '^http://ams.allenpress.com/', +'function detectWeb(doc,url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var xpath; + + //Homepage=AMS Top 20 + var temp=url.split("request=")[1]; + if(temp) + { + if(temp.substr(0,10)=="index-html") + { return "multiple"; } + } + + + //browse page + xpath=''//div[@class="group"]/p[@class="title"]''; + if(doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext()) + { return "multiple"; } + + //second browse page format + xpath=''//div[@class="toc include j"]/p/span[@class="title"]''; + if(doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext()) + { return "multiple"; } + + + //search page + xpath=''//td[@class="search"]/span[@class="title"]''; + if(doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext()) + { return "multiple"; } + + //single page + xpath=''//ul/li/a''; + var rows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + var row; + + while(row=rows.iterateNext()) + { + if(row.textContent=="Create Reference") + { return "journalArticle"; } + } + +}', +'function parseRIS(temp,PDFs) +{ + Zotero.Utilities.HTTP.doGet(temp, function(text){ + + // load translator for RIS + var translator = Zotero.loadTranslator("import"); + + translator.setHandler("itemDone", function(obj, newItem) { + //get doi of the item we''re currently saving from RIS file + var doi=newItem.DOI; + if(!doi) + {doi=newItem.url.replace(''http://dx.doi.org/'','''');} + else + {doi=doi.replace("doi%3A","");} + + var urlstring=''''; + var volume=newItem.volume; + var issue=newItem.issue; + var d=newItem.pages.split("-")[0]; + + var pdf = PDFs.shift(); + if(pdf) + { + if(pdf=="0") + { + var b=doi.split("/"); + if(b.length>1) + {b=b[1];} + else + {b=doi.split("%2F")[1];} + b=b.split("(")[0]; + b=b.split("%28")[0]; + if(!b||b.length!=9) + {b="1520-0477";} + urlstring="http://ams.allenpress.com/archive/"+b+"/"+volume+"/"+issue+"/pdf/i"+b+"-"+volume+"-"+issue+"-"+d+".pdf"; + } + else if(pdf=="1") + { + while(volume.length<3) + {volume="0"+volume;} + while(issue.length<2) + {issue="0"+issue;} + while(d.length<4) + {d="0"+d;} + + urlstring="http://docs.lib.noaa.gov/rescue/mwr/"+volume+"/mwr-"+volume+"-"+issue+"-"+d+".pdf"; + } + } + newItem.attachments[0]={ + title:"AMS Journals Full Text PDF", + url:urlstring, mimeType:"application/pdf"} + + if(Zotero.Utilities.cleanString(newItem.abstractNote).toLowerCase()=="no abstract available.") + {newItem.abstractNote='''';} + newItem.complete(); + }); + + translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + translator.setString(text); + translator.translate(); + + Zotero.done(); + }, function() {}); + Zotero.wait(); +} + + +function createLink(link) +{ + var url="http://ams.allenpress.com/perlserv/?request=download-citation&t=refman&doi="; + url+=getdoi(link); + url+="&site=amsonline"; + return url; +} + +function getdoi(link) +{ + doi=link.split("doi%3A")[1]; + if(!doi) + { + doi=link.split("doi=")[1]; + return doi; + } + return doi; +} + +function getType(text) +{ + if(text.indexOf("(")>-1) + {return "0";} + else + {return "1";} +} + +function doWeb(doc,url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var doi; + var PDFs=new Array(); + var xpath=''//ul/li/a''; + var rows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + var row; + + while(row=rows.iterateNext()) + { + if(row.textContent=="Create Reference") + { + //single page + + var thelink=createLink(row.href); + xpath=''//div[@class="mainPadding"]/div/div/div/div/div/p/a''; + rows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + while(row=rows.iterateNext()) + { + if(row.textContent.toLowerCase().indexOf("pdf")>-1) + {PDFs.push(getType(row.textContent));} + } + parseRIS(thelink,PDFs); + + return null; + } + } + + var items=new Array(); + + xpath=''//div[@class="group"]/p[@class="title"]''; + var xpath1=''''; + var xpath2=''''; + + if(doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext()) + { + //browse page + + xpath1=''//div[@class="group"]/p[@class="title"]''; + xpath2=''//p[@class="link"]/a''; + } + else + { + xpath=''//td[@class="search"]/span[@class="title"]''; + if(doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext()) + { + //search page + + xpath1=''//td[@class="search"]/span[@class="title"]''; + xpath2=''//tr/td/a''; + } + else + { + xpath=''//div[@class="toc include j"]/p/span[@class="title"]''; + if(doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null).iterateNext()) + { + //second browse format + + xpath1=''//div[@class="toc include j"]/p/span[@class="title"]''; + xpath2=''//div[@class="toc include j"]/p/a''; + } + } + } + + if(xpath1!='''') + { + var rows1=doc.evaluate(xpath1, doc, nsResolver,XPathResult.ANY_TYPE, null); + var row1; + + var rows2=doc.evaluate(xpath2, doc, nsResolver,XPathResult.ANY_TYPE, null); + var row2=rows2.iterateNext(); + + var rows3=doc.evaluate(xpath2, doc, nsResolver,XPathResult.ANY_TYPE, null); + var row3; + + var tPDFs=new Array(); + var nextType; + + var link; + var lastdoi; + + while(row1=rows1.iterateNext()) + { + while(row3=rows3.iterateNext()) + { + if(row3.textContent.toLowerCase().indexOf("pdf")>-1) + {tPDFs.push(getType(row3.textContent));} + } + while(getdoi(row2.href)==lastdoi || !getdoi(row2.href)) + {row2=rows2.iterateNext()} + + lastdoi=getdoi(row2.href); + link=createLink(row2.href); + + nextType=tPDFs.shift(); + if(!nextType) + {nextType="none";} + items[nextType+link]=row1.textContent; + } + } + else + { + var t=url.split("request=")[1]; + if(t) + { + if(t.substr(0,10)=="index-html") + { + //Homepage=AMS Top 20 + + xpath=''//div/p/a[@style="font-size: 85%;"]''; + var rows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + var row; + + while(row=rows.iterateNext()) + {items["0"+createLink(row.href)]=row.textContent;} + } + + } + } + + items = Zotero.selectItems(items); + + if(!items) + {return true;} + + var urls = new Array(); + for(var i in items) + { + PDFs.push(i[0]); + urls.push(i.substr(1)); + } + + parseRIS(urls,PDFs); +}'); + +REPLACE INTO translators VALUES ('7e51d3fb-082e-4063-8601-cda08f6004a3', '1.0.0b4r1', '', '2007-07-30 22:00:00', '0', '100', '4', 'Education Week', 'Ben Parr', '^https?://(?:www\.|blogs\.|www2\.)?edweek', +'function detectWeb(doc,url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var xpath=''//meta[@name="Story_type"]/@content''; + var temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE,null).iterateNext(); + if(temp) + { + if(temp.value=="Blog") + {return "blogPost";} + if(temp.value.indexOf("Story")>-1) + {return "magazineArticle";} + } +}', +'function associateMeta(newItem, metaTags, field, zoteroField) { + if(metaTags[field]) { + newItem[zoteroField] = metaTags[field]; + } +} + +function scrape(doc, url) { + + var newItem = new Zotero.Item("magazineArticle"); + if(url&&url.indexOf("blogs.edweek.org")>-1) + {newItem.itemType="blogPost";} + + newItem.url = doc.location.href; + + var metaTags = new Object(); + + var metaTagHTML = doc.getElementsByTagName("meta"); + var i; + for (i = 0 ; i < metaTagHTML.length ; i++) { + metaTags[metaTagHTML[i].getAttribute("name")]=Zotero.Utilities.cleanTags(metaTagHTML[i].getAttribute("content")); + } + associateMeta(newItem, metaTags, "Title", "title"); + associateMeta(newItem, metaTags, "Cover_date", "date"); + associateMeta(newItem, metaTags, "Description", "abstractNote"); + associateMeta(newItem, metaTags, "ArticleID", "accessionNumber"); + associateMeta(newItem,metaTags,"Source","publicationTitle"); + + + if (metaTags["Authors"]) { + var author = Zotero.Utilities.cleanString(metaTags["Authors"]); + if (author.substr(0,3).toLowerCase() == "by ") { + author = author.substr(3); + } + + var authors = author.split(" and "); + for each(var author in authors) { + var words = author.split(" "); + for (var i in words) { + words[i] = words[i][0].toUpperCase() +words[i].substr(1).toLowerCase(); + } + author = words.join(" "); + + newItem.creators.push(Zotero.Utilities.cleanAuthor(author, "author")); + } + } + + newItem.complete(); +} + +function doWeb(doc,url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var xpath=''//meta[@name="Story_type"]/@content''; + var temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE,null).iterateNext(); + if(temp) + { + if(temp.value.indexOf("Story")>-1 || temp.value=="Blog") + {scrape(doc,url);} + } +}'); + +REPLACE INTO translators VALUES ('9220fa99-b936-430e-a8ea-43ca6cb04145', '1.0.0b4r1', '', '2007-07-30 22:00:00', '0', '100', '4', 'AGU Journals', 'Ben Parr','^https?://(?:www.)?agu.org', +'function detectWeb(doc,url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var xpath; + + //abstract + xpath=''//p[@id="citation"]''; + if(doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE,null).iterateNext()) + { return "journalArticle"; } + + //full text + xpath=''//frameset[@rows="98, *"]''; + if(doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE,null).iterateNext()) + { return "journalArticle"; } + + //issue page + xpath=''//tr/td/p[@class="title"]''; + if(doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE,null).iterateNext()) + { return "multiple"; } + + //Search Page + if(doc.title.indexOf("Query Results")>-1) + {return "multiple";} +} +', +'function fixCaps(s) +{ + if(s!='''') + { + words=Zotero.Utilities.cleanString(s).toLowerCase().split(" "); + for (var j = 0 ; j < words.length ; j++) + { + if (j==0||(words[j][0] ==words[j][0].toLowerCase()&&words[j]!="or"&&words[j]!="and"&&words[j]!="of"&&words[j]!="in")) + { words[j]= words[j][0].toUpperCase() +words[j].substr(1); } + } + return words.join(" "); + } + return ''''; +} + +function scrape(doc,url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var newItem=new Zotero.Item("journalArticle"); + var temp; + var xpath; + var row; + var rows; + + newItem.url = doc.location.href; + + xpath=''//p[@id="title"]''; + temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE,null).iterateNext(); + if(temp) + {newItem.title=temp.textContent;} + + xpath=''//span[@id="published"]''; + temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE,null).iterateNext(); + if(temp) + { + temp=Zotero.Utilities.cleanString(temp.textContent).split(" ");; + newItem.date=temp[1]+" "+temp[0]+", "+temp[2]; + } + + xpath=''//p[@class="author"]''; + rows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + var count=0; + while(row=rows.iterateNext()) + {newItem.creators.push(Zotero.Utilities.cleanAuthor(row.textContent,"author")); + count++;} + + xpath=''//tr/td/p''; + temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + var temp2=temp.iterateNext(); + if(temp2) + { + for(var n=0;n<(3+2*count);n++) + {temp2=temp.iterateNext();} + newItem.abstractNote=Zotero.Utilities.cleanString(temp2.textContent); + } + + xpath=''//p[@id="runhead"]''; + temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE,null).iterateNext(); + if(temp) + { + temp=Zotero.Utilities.cleanString(temp.textContent).split(", "); + newItem.publicationTitle=fixCaps(temp[0]); + for(var n=1;temp[n];n++) + { + if(temp[n].indexOf("VOL")>-1) + {newItem.volume=temp[n].replace(''VOL. '','''');} + else if(temp[n].indexOf("NO.")>-1) + {newItem.issue=temp[n].replace(''NO. '','''');} + else if(temp[n].indexOf("doi:")>-1) + {newItem.DOI=temp[n].replace(''doi:'','''');} + else if(temp[n+1]) + {newItem.pages=temp[n];} + } + } + + xpath=''//p[@id="keywords"]''; + temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE,null).iterateNext(); + if(temp) + { + temp=Zotero.Utilities.cleanString(temp.textContent.replace(''Keywords:'','''')); + newItem.tags=temp.replace(''.'','''').split(''; ''); + } + xpath=''//p[@id="citation"]/span[@id="journal"]''; + temp=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE,null).iterateNext(); + if(temp) + {newItem.journalAbbreviation=temp.textContent;} + + newItem.complete(); +} + + +function processList(items) +{ + items = Zotero.selectItems(items); + var uris=new Array(); + + if (!items) + {return true;} + + for (var i in items) + {uris.push(i);} + + Zotero.Utilities.processDocuments(uris, scrape,function() {Zotero.done(); }); + Zotero.wait(); + + return true; +} + +function doWeb(doc,url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + //abstract + var xpath=''//p[@id="citation"]''; + if(doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE,null).iterateNext()) + { + scrape(doc,url); + return true; + } + + //full text + xpath=''//frameset[@rows="98, *"]''; + if(doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE,null).iterateNext()) + { + Zotero.Utilities.processDocuments(url+"0.shtml", scrape, function(){ Zotero.done(); }); + Zotero.wait(); + + return true; + } + + //issue page + xpath=''//tr/td/p[@class="title"]''; + if(doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE,null).iterateNext()) + { + var titlerows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + xpath=''//tr/td/p[@class="pubdate"]/a''; + var linkrows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + + var titlerow; + var linkrow; + var items=new Array(); + + while(titlerow=titlerows.iterateNext()) + { + linkrow=linkrows.iterateNext(); + while(linkrow.textContent.indexOf("Abstract")<0) + {linkrow=linkrows.iterateNext();} + items[linkrow.href]=titlerow.textContent; + } + + return processList(items); + } + + + //Search page + if(doc.title.indexOf("Query Results")>-1) + { + //FASTFind Search + + xpath=''//tr/td/h2''; + var tt=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE,null).iterateNext().textContent; + if(tt.indexOf("FASTFIND")>-1) + { + xpath=''//tr/td[1]/font''; + var citerows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + xpath=''//tr/td[2]/font/a''; + var linkrows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + + var citerow; + var linkrow; + var items=new Array(); + var temp; + var title; + + while(citerow=citerows.iterateNext()) + { + linkrow=linkrows.iterateNext(); + items[linkrow.href]=Zotero.Utilities.cleanString(citerow.textContent); + } + return processList(items); + } + else + { + //Advanced Search + + xpath=''//tr/td[1]/font/a''; + var titlerows=doc.evaluate(xpath, doc,nsResolver,XPathResult.ANY_TYPE, null); + xpath=''//tr/td[2]/font/a''; + var linkrows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + + var titlerow; + var linkrow; + var items=new Array(); + var temp; + + while(titlerow=titlerows.iterateNext()) + { + linkrow=linkrows.iterateNext(); + while(linkrow.textContent.indexOf("Abstract")<0) + {linkrow=linkrows.iterateNext();} + + items[linkrow.href]=titlerow.textContent; + } + return processList(items); + } + } + +} +'); + +REPLACE INTO translators VALUES ('e4fe1596-a8c4-4d09-945f-120c4d83e580', '1.0.0b4r1', '', '2007-07-30 22:00:00', '0', '100', '4', 'LA Times', 'Ben Parr', '^https?://(?:www.|travel.)?latimes.com', +'function detectWeb(doc, url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var xpath = ''//link[@title="Main"]''; + if(doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE,null).iterateNext()) + {return "newspaperArticle";} + + if(doc.title.indexOf("Search Results")>-1) + {return "multiple";} + + xpath = ''//h1''; + var rows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + var row; + while(row=rows.iterateNext()) + { + if(Zotero.Utilities.cleanString(row.textContent.toLowerCase())=="travel") + {return "newspaperArticle";} + } + + return null; +}', +'function getCount(s) +{ + if(!s||s=='''') + return 0; + if(s.indexOf("Displaying")>-1) + { + s=s.substr(19); + s=s.replace(''.'',''''); + s=s.split('' to ''); + return s[1]-s[0]+1; + } + return 0; +} + +function processList(items) +{ + items = Zotero.selectItems(items); + var uris=new Array(); + + if (!items) + {return true;} + + for (var i in items) + {uris.push(i);} + + Zotero.Utilities.processDocuments(uris, scrape,function() {Zotero.done(); }); + Zotero.wait(); + + return true; +} + +function findDate(s) +{ + var words=s.split(" "); + var months=new Array("january","febuary","march","april","may","june","july","august","september","october","november","december"); + for(var n=0;words[n];n++) + { + for(var m in months) + {if(words[n].toLowerCase()==months[m]) + {return words[n]+" "+words[n+1]+" "+words[n+2];} + } + } + return null; +} + + +function scrape(doc,url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var newItem = new Zotero.Item("newspaperArticle"); + newItem.publicationTitle = "The Los Angeles Times"; + newItem.ISSN = "0458-3035"; + + var xpath=''//h2/a''; + var t=doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE,null).iterateNext(); + if(t) + {newItem.section=t.textContent; } + else + { + xpath=''//a/img[@alt="WEST"]''; + if(doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE,null).iterateNext()) + {newItem.section="West";} + else + { + xpath = ''//h1''; + var rows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + if(t=rows.iterateNext()) + {newItem.section=t.textContent;} + } + } + + + xpath=''//h1[last()]''; + var rows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + if(t=rows.iterateNext()) + {newItem.title=t.textContent;} + + newItem.url = url; + xpath=''//div[@class="storybyline"]''; + var test=doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE,null).iterateNext(); + if(!test) + {xpath=''//p[@class="by-author"]'';} + var info=doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE,null).iterateNext().textContent; + info=Zotero.Utilities.cleanString(info); + var date=findDate(info); + if(date) + { + newItem.date=date; + info=info.replace(date,''''); + } + info=Zotero.Utilities.cleanString(info); + if(info.indexOf(", ")>-1) + { + var phrases=info.split(", "); + var a=phrases[0]; + if (a.substr(0,3).toLowerCase() == "by ") + {a= a.substr(3);} + if(a.substr(0,5).toLowerCase()!="from ") + { + var authors=a.split(" and "); + var n; + for(n in authors) + {newItem.creators.push(Zotero.Utilities.cleanAuthor(authors[n],"author"));} + } + } + else + { + xpath=''//div[@class="storydeckhead"]/a''; + temp=doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE,null).iterateNext(); + if(temp!=null && temp!='''') + {newItem.creators.push(Zotero.Utilities.cleanAuthor(temp.textContent,"author"));} + } + + newItem.attachments.push({document:doc, title:"The Los Angeles Times Snapshot"}); + newItem.complete(); +} + + + +function doWeb(doc, url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + + var xpath=''//link[@title="Main"]''; + if(doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE,null).iterateNext()) + {scrape(doc,url); return true;} + + xpath = ''//h1''; + var rows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + var row; + while(row=rows.iterateNext()) + { + if(Zotero.Utilities.cleanString(row.textContent.toLowerCase())=="travel") + {scrape(doc,url); return true;} + } + + if(doc.title.indexOf("Search Results")>-1) + { + xpath=''//div[@class="abstract1"]''; + var count=0; + rows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + while(row=rows.iterateNext()) + { + count=getCount(row.textContent); + if(count!=0) + {break;} + } + if(count==0) + { + xpath=''//td[@class="abstract1"]''; + rows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + while(row=rows.iterateNext()) + { + count=getCount(row.textContent); + if(count!=0) + {break;} + } + } + + if(count>0) + { + var items=new Array(); + xpath=''//div[@class="headline14"]/a''; + rows=doc.evaluate(xpath, doc, nsResolver,XPathResult.ANY_TYPE, null); + while(row=rows.iterateNext()) + { + if(count==0) + {break;} + if(row.href.indexOf("/travel/")<0) + {items[row.href]=Zotero.Utilities.cleanString(row.textContent);} + count--; + } + + return processList(items); + } + } +}'); + +REPLACE INTO translators VALUES ('1a3e63b2-0adf-4c8e-928b-c58c2594b45d', '1.0.0b4r1', '', '2007-07-30 22:00:00', '0', '100', '4', 'BioMed Central and More', 'Ben Parr', '^http://(www.)?(biomedcentral|actavetscand|aidsrestherapy|almob|ann-clinmicrob|annals-general-psychiatry|asir-journal|arthritis-research|anzhealthpolicy|behavioralandbrainfunctions|bjoc.beilstein-journals|biology-direct|biomagres|bio-diglib|biomedical-engineering-online|bpsmedicine|breast-cancer-research|cancerci|cbmjournal|cardiab|cardiovascularultrasound|cellandchromosome|biosignaling|celldiv|cerebrospinalfluidresearch|journal.chemistrycentral|capmh|cmjournal|chiroandosteo|clinicalmolecularallergy|cpementalhealth|comparative-hepatology|conflictandhealth|resource-allocation|coughjournal|ccforum|cytojournal|diagnosticpathology|dynamic-med|ete-online|ehjournal|epi-perspectives|filariajournal|frontiersinzoology|gvt-journal|genomebiology|geochemicaltransactions|globalizationandhealth|harmreductionjournal|head-face-med|hqlo|health-policy-systems|human-resources-health|immunityageing|immunome-research|implementationscience|infectagentscancer|internationalbreastfeedingjournal|equityhealthj|ijbnpa|ij-healthgeographics|issoonline|jautoimdis|jbiol|j-biomed-discovery|jbppni|carcinogenesis|cardiothoracicsurgery|jcircadianrhythms|ethnobiomed|jexpclinassistreprod|jibtherapies|journal-inflammation|jmedicalcasereports|jmolecularsignaling|jnanobiotechnology|jnrbm|jneuroengrehab|jneuroinflammation|occup-med|josr-online|translational-medicine|kinetoplastids|lipidworld|malariajournal|medimmunol|microbialcellfactories|molecular-cancer|molecularneurodegeneration|molecularpain|neuraldevelopment|nonlinearbiomedphys|nuclear-receptor|nutritionandmetabolism|nutritionj|ojrd|om-pc|particleandfibretoxicology|ped-rheum|peh-med|plantmethods|pophealthmetrics|proteomesci|ro-journal|rbej|reproductive-health-journal|respiratory-research|retrovirology|salinesystems|scoliosisjournal|scfbm|substanceabusepolicy|tbiomed|thrombosisjournal|trialsjournal|virologyj|wjes|wjso)\.(com|org|net)', +'function detectWeb(doc,url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == "x" ) return namespace; else return null; + } : null; + + var xpath=''//meta[@name="citation_fulltext_html_url"]''; + + //Single + if (doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + {return "journalArticle";} + + + //Multiple + xpath=''//a[@class="hiddenlink"][span[@class="xcitationtitle"][b]]''; + xpath+='' | //span[@class="xcitationtitle2"]/a[@class="hiddenlink"]''; + xpath+='' | //div[@class="bodytext"]/a[@class="hiddenlink"][font/b]''; + xpath+='' | //p[@class="bodytext"]/a[@class="hiddenblack"][b]''; + xpath+='' | //div[@class="bodytext"]/a[@class="hiddenblack"][b]''; + xpath+='' | //div[@class="bodytext"]/a[@class="hiddenlink"][font/b]''; + + var rows=doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var row; + var link; + while(row=rows.iterateNext()) + { + link=row.href; + if(link.indexOf("pubmed")<0 && link.substr(link.length-4)!=".pdf" && link.indexOf("blogs.")<0) + {return "multiple";} + } + +}', +'function parseRIS(getURL) +{ + Zotero.Utilities.HTTP.doGet(getURL, function(text){ + // load translator for RIS + var translator = Zotero.loadTranslator ("import"); + translator.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + translator.setString(text); + translator.translate(); + Zotero.done(); + }, function() {}); + + Zotero.wait(); +} + +function doWeb(doc,url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == "x" ) return namespace; else return null; + } : null; + + var xpath=''//meta[@name="citation_fulltext_html_url"]/@content''; + var rows; + var row=doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext(); + if (row) + { + //Single Article + var url=row.textContent+"/citation"; + Zotero.Utilities.HTTP.doPost(url, ''include=cit&format=refman&direct=on&submit=Download+references&action=submit'', function(text) + {parseRIS(url+''?include=cit&format=refman&direct=on&submit=Download+references&action=submit'');}); + + Zotero.wait(); + return true; + } + + + //Multiple + xpath=''//a[@class="hiddenlink"][span[@class="xcitationtitle"][b]]''; + xpath+='' | //span[@class="xcitationtitle2"]/a[@class="hiddenlink"]''; + xpath+='' | //div[@class="bodytext"]/a[@class="hiddenlink"][font/b]''; + xpath+='' | //p[@class="bodytext"]/a[@class="hiddenblack"][b]''; + xpath+='' | //div[@class="bodytext"]/a[@class="hiddenblack"][b]''; + xpath+='' | //div[@class="bodytext"]/a[@class="hiddenlink"][font/b]''; + + rows=doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var items=new Array(); + var link; + var t; + while(row=rows.iterateNext()) + { + link=row.href; + if(link.indexOf("pubmed")<0 && link.substr(link.length-4)!=".pdf" && link.indexOf("blogs.")<0) + { + t=link.split(''/''); + if(t[t.length-1].indexOf("comments#")>-1) + {link=t.slice(0,t.length-1).join(''/'');} + items[link.replace("/abstract","")+"/citation"]=row.textContent; + } + } + + items = Zotero.selectItems(items); + var uris=new Array(); + if (!items) + {return true;} + + for (var i in items) + {uris.push(i);} + + Zotero.Utilities.HTTP.doPost(uris, "include=cit&format=refman&direct=on&submit=Download+references&action=submit", function(text) + { + for (var j = 0 ; j < uris.length ; j++) + {parseRIS(uris[j] + "?include=cit&format=refman&direct=on&submit=Download+references&action=submit");} + }); + + Zotero.wait(); +} +'); + +REPLACE INTO translators VALUES ('a1a97ad4-493a-45f2-bd46-016069de4162', '1.0.0b4r1', '', '2007-07-03 18:05:11', '0', '100', '4', 'OpticsInfoBase', 'Ben Parr','^https?://(?:www\.)?opticsinfobase.org', +'function detectWeb(doc,url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + + var xpath=''//div[@id="abstract"]/p/strong'' + var rows= doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var row; + while(row=rows.iterateNext()) + { + if(row.textContent=="Citation") + {return "journalArticle";} + } + + xpath=''//form[@id="searchform"]/table/tbody/tr/td[1]/h1''; + var temp=doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE,null).iterateNext(); + if(temp&&temp.textContent=="Search Results") + {return "multiple";} +}', +'function processList(items) +{ + items = Zotero.selectItems(items); + var uris=new Array(); + if (!items) + {return true;} + + for (var i in items) + {uris.push(i);} + + Zotero.Utilities.processDocuments(uris, scrape,function() {Zotero.done(); }); + Zotero.wait(); + + return true; +} + + +function scrape(doc,url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var newItem=new Zotero.Item("journalArticle"); + + var xpath=''//div[@id="abstract"]/h1''; + var temp=doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE,null).iterateNext(); + if(temp) + { + temp=temp.textContent; + if(temp[temp.length-1]==".") + {temp=temp.substr(0,temp.length-1);} + newItem.title=Zotero.Utilities.cleanString(temp); + } + + xpath=''//div[@id="abstract"]/p''; + var rows= doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var row; + while(row=rows.iterateNext()) + { + temp=row.textContent; + if(temp.substr(0,8)=="Abstract") + { + temp=temp.replace("Abstract",""); + temp=Zotero.Utilities.cleanString(temp); + temp=Zotero.Utilities.cleanTags(temp); + newItem.abstractNote=temp; + } + } + + xpath=''//div[@id="abstract"]/p''; + rows= doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + while(row=rows.iterateNext()) + { + temp=Zotero.Utilities.cleanString(row.textContent); + if(temp.substr(0,8)=="Citation") + {temp=temp.split(" "); + newItem.url=temp[temp.length-1];} + } + + xpath=''//div[@id="abstract"]/h3'' + temp=doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE,null).iterateNext(); + if(temp) + { + temp=temp.textContent; + temp=temp.replace(" and ",","); + temp=temp.replace(" and,",","); + var authors=temp.split("\n")[0].split(","); + for(var a in authors) + { + if(Zotero.Utilities.cleanString(authors[a])) + {newItem.creators.push(Zotero.Utilities.cleanAuthor(authors[a], "author"));} + } + + temp=temp.replace(temp.split("\n")[0],''''); + temp=Zotero.Utilities.cleanString(temp); + var i=temp.split(","); + for(var b in i) + { + if(i[b].indexOf("Vol. ")>-1) + {newItem.volume=i[b].replace("Vol. ","");} + else if(i[b].indexOf("Issue ")>-1) + {newItem.issue=i[b].replace("Issue ","");} + else if(i[b].indexOf("pp. ")>-1) + { + var pages=i[b]; + if(pages[pages.length-1]=="-") + {pages=pages.substr(0,pages.length-1);} + newItem.pages=pages.replace("pp. ",""); + } + } + } + xpath=''//div[@id="abstract"]''; + temp=doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE,null).iterateNext(); + if(temp) + { + temp=Zotero.Utilities.cleanString(temp.textContent); + if(temp.substr(0,16)=="Conference Paper") + { + newItem.itemType="conferencePaper"; + xpath=''//div[@id="abstract"]''; + temp=doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE,null).iterateNext().textContent; + var journalsub=false; + var next=true; + temp=temp.replace("Conference Paper",""); + temp=temp.split("\n"); + for(var x in temp) + { + temp[x]=Zotero.Utilities.cleanString(temp[x]); + if(temp[x]&&!journalsub) + {newItem.publisher=temp[x]; journalsub=true;} + else if(temp[x]&&next) + {next=false;} + else if(temp[x]&&!next) + {newItem.date=temp[x]; break;} + } + } + else + { + xpath=''//div[@id="abstract"]/p''; + rows= doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + while(row=rows.iterateNext()) + { + temp=Zotero.Utilities.cleanString(row.textContent); + if(temp.substr(0,8)=="Citation") + { + temp=temp.replace("Citation",""); + temp=Zotero.Utilities.cleanString(temp); + temp=temp.replace(newItem.title,''''); + var journal=temp.split('',"''); + if(journal[1]) + { + journal=journal[1]; + var c=journal.split(","); + journal=c[0]; + if(c[1]) + { + var year=c[1].split("("); + if(year[1]) + {newItem.date=Zotero.Utilities.cleanString(year[1].split(")")[0]);} + } + + journal=journal.replace(newItem.volume,''''); + newItem.publicationTitle=Zotero.Utilities.cleanString(journal); + } + break; + } + } + } + } + newItem.complete(); + +} + +function doWeb(doc,url) +{ + var namespace = doc.documentElement.namespaceURI; + var nsResolver = namespace ? function(prefix) { + if (prefix == ''x'') return namespace; else return null; + } : null; + + var xpath=''//div[@id="abstract"]/p/strong'' + var rows= doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var row; + while(row=rows.iterateNext()) + { + if(row.textContent=="Citation") + {scrape(doc,url);return true;} + } + + xpath=''//form[@id="searchform"]/table/tbody/tr/td[1]/h1''; + var temp=doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE,null).iterateNext(); + if(temp&&temp.textContent=="Search Results") + { + var items=new Array(); + xpath=''//div[@id="col2"]/p/strong/a''; + rows=doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + while(row=rows.iterateNext()) + {items[row.href]=Zotero.Utilities.cleanString(row.textContent);} + + processList(items); + } +}'); + +REPLACE INTO translators VALUES ('b61c224b-34b6-4bfd-8a76-a476e7092d43', '1.0.0b4r1', '', '2007-07-30 22:00:00', '0', '100', '4', 'SSRN', 'Ramesh Srigiriraju', '^http://papers\.ssrn\.com/', +'function detectWeb(doc, url) { + var namespace=doc.documentElement.namespaceURI; + var nsResolver=namespace?function(prefix) { + return (prefix=="x")?namespace:null; + }:null; + var singpath=''//img[@title="go to Document Delivery"]''; + if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + return "book"; + var searchpath=''//td/font/strong[text()="Sort by"]''; + if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + return "multiple"; + var browspath=''//td/font/strong[text()="Sort by:"]''; + if(doc.evaluate(browspath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + return "multiple"; +}', +'function doWeb(doc, url) { + var namespace=doc.documentElement.namespaceURI; + var nsResolver=namespace?function(prefix) { + return (prefix=="x")?namespace:null; + }:null; + var singpath=''//img[@title="go to Document Delivery"]''; + if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var id=url.substring(url.indexOf("id=")+3); + var incase=id.indexOf("&"); + if(incase!=-1) + id=id.substring(0, incase); + var string="http://papers.ssrn.com/sol3/RefExport.cfm?abstract_id="+id+"&format=3"; + Zotero.Utilities.HTTP.doGet(string, function(text) { + var datareg=new RegExp(''input type="Hidden" name="hdnContent" value="([^"]+)"''); + var data=datareg.exec(text); + var trans=Zotero.loadTranslator("import"); + trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + trans.setString(data[1]); + trans.translate(); + }); + } + var searchpath=''//td/font/strong[text()="Sort by"]''; + if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var idpath=''//tr/td/font/strong/a[@class="textLink"]''; + var ids=doc.evaluate(idpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var id; + var items=new Array(); + while(id=ids.iterateNext()) { + var link=id.href; + var num=link.substring(link.lastIndexOf("id=")+3); + var incase=num.indexOf("&"); + if(incase!=-1) + num=num.substring(0, incase); + items[num]=id.textContent; + } + items=Zotero.selectItems(items); + var urls=new Array(); + for(var id in items) { + var string="http://papers.ssrn.com/sol3/RefExport.cfm?abstract_id="+id+"&format=3"; + Zotero.Utilities.HTTP.doGet(string, function(text) { + var datareg=new RegExp(''input type="Hidden" name="hdnContent" value="([^"]+)"''); + var data=datareg.exec(text); + var trans=Zotero.loadTranslator("import"); + trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + trans.setString(data[1]); + trans.translate(); + }); + } + } + var browspath=''//td/font/strong[text()="Sort by:"]''; + if(doc.evaluate(browspath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var idpath=''//font/strong/a[@class="textlink"]''; + var ids=doc.evaluate(idpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var id; + var items=new Array(); + while(id=ids.iterateNext()) { + var link=id.href; + var num=link.substring(link.lastIndexOf("id=")+3); + var incase=num.indexOf("&"); + if(incase!=-1) + num=num.substring(0, incase); + items[num]=id.textContent; + } + items=Zotero.selectItems(items); + var urls=new Array(); + for(var id in items) { + var string="http://papers.ssrn.com/sol3/RefExport.cfm?abstract_id="+id+"&format=3"; + Zotero.Utilities.HTTP.doGet(string, function(text) { + var datareg=new RegExp(''input type="Hidden" name="hdnContent" value="([^"]+)"''); + var data=datareg.exec(text); + var trans=Zotero.loadTranslator("import"); + trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + trans.setString(data[1]); + trans.translate(); + }); + } + } + Zotero.wait(); +}'); + +REPLACE INTO translators VALUES ('1c34744d-690f-4cac-b31b-b7f0c90ac14d', '1.0.0b3r1', '', '2007-07-30 22:00:00', '0', '100', '4', 'RSC Publishing', 'Ramesh Srigiriraju', 'http://(:?www\.|google\.)?rsc\.org/', +'function detectWeb(doc, url) { + var namespace=doc.documentElement.namespaceURI; + var nsResolver=namespace?function(prefix) { + return (prefix=="x")?namespace:null; + }:null; + var journalreg=new RegExp("http://(:?www\.)?rsc\.org/(:?P|p)ublishing/(:?J|j)ournals"); + if(journalreg.test(url)) { + var browspath=''//div/p/a[text()="Use advanced search"]''; + if(doc.evaluate(browspath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + return "multiple"; + var searchpath=''//a[text()="Back to Search Form"]''; + if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + return "multiple"; + var singpath=''//ul/li/a[text()="HTML Article" or text()="PDF"]''; + if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + return "journalArticle"; + } + var magpath=''//div/h3[text()="Link to journal article"]''; + if(doc.evaluate(magpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + return "magazineArticle"; + var magbrows=''//div/h4[@class="newstitle"]/a''; + if(doc.evaluate(magbrows, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + return "multiple"; + var magsearch=''//p[@class="more"]/strong/a[text()="Search RSC journals"]''; + if(doc.evaluate(magsearch, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + return "multiple"; + var bookreg=new RegExp("http://(:?www\.)?rsc\.org/(:?P|p)ublishing/e(:?B|b)ooks"); + if(bookreg.test(url)) { + var pagepath=''//title/text()''; + var page=doc.evaluate(pagepath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().nodeValue; + if((page=="Books in a publication year")||(page=="Subject Area Books")||(page=="A - Z Index") + ||(page=="Book Series")) + return "multiple"; + var chappath=''//dt/img[@alt="Chapter"]''; + var singpath=''//h3[text()="Table of Contents"]''; + if(doc.evaluate(chappath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + return "bookSection"; + else if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + return "book"; + } + var searchpath=''//div/p[@class="title"][text()="Search Results"]''; + if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + return "multiple"; +}', +'function doChap(newItem, chaptext) { + var chapdata=chaptext.split("
"); + for(var pos=chapdata.length-2; pos>=0; pos--) { + chapdata[pos]=Zotero.Utilities.cleanTags(chapdata[pos]); + if(chapdata[pos].indexOf("Editors")!=-1) { + var editors=chapdata[pos].split(","); + for(var i=0; i<=editors.length-1; i++) { + editors[i]=Zotero.Utilities.cleanString(editors[i]); + var names=editors[i].split(" "); + var creators=new Array(); + if(i==0) + creators.firstName=names[1]; + else + creators.firstName=names[0]; + creators.lastName=names[names.length-1]; + creators.creatorType="editor"; + newItem.creators.push(creators); + } + } + if(chapdata[pos].indexOf("Authors")!=-1) { + var authors=chapdata[pos].split(","); + for(var i=0; i<=authors.length-1; i++) { + authors[i]=Zotero.Utilities.cleanString(authors[i]); + var names=authors[i].split(" "); + var creators=new Array(); + if(i==0) + creators.firstName=names[1]; + else + creators.firstName=names[0]; + creators.lastName=names[names.length-1]; + creators.creatorType="editor"; + newItem.creators.push(creators); + } + } + if(chapdata[pos].indexOf("DOI")!=-1) + newItem.itemID=chapdata[pos].substring(chapdata[pos].indexOf("1")); + if(chapdata[pos].indexOf("Book")!=-1) + newItem.bookTitle=chapdata[pos].substring(chapdata[pos].indexOf(" ")+1); + } +} +function doBook(newItem, bookdata) { + var fields=bookdata.split("
"); + for(var pos=fields.length-2; pos>=0; pos--) { + fields[pos]=Zotero.Utilities.cleanTags(fields[pos]); + if(fields[pos].indexOf("Volume")!=-1) { + var i=fields[pos].lastIndexOf(";"); + var vol; + if(i!=-1) + vol=fields[pos].substring(i+1); + else + vol=fields[pos].substring(fields[pos].lastIndexOf(" ")); + newItem.volume=Zotero.Utilities.cleanString(vol); + } + if(fields[pos].indexOf("Edition")!=-1) { + var i=fields[pos].lastIndexOf(";"); + if(i!=-1) + ed=fields[pos].substring(i+1); + else + ed=fields[pos].substring(fields[pos].lastIndexOf(" ")); + newItem.edition=Zotero.Utilities.cleanString(ed); + } + if(fields[pos].indexOf("Copyright")!=-1) { + var i=fields[pos].lastIndexOf(";"); + var date; + if(i!=-1) + date=fields[pos].substring(i+1); + else + date=fields[pos].substring(fields[pos].indexOf(":")+2); + newItem.date=Zotero.Utilities.cleanString(date); + } + if(fields[pos].indexOf("ISBN")!=-1&&fields[pos].indexOf("print")!=-1) { + var i=fields[pos].lastIndexOf(";"); + var isbn; + if(i!=-1) + isbn=fields[pos].substring(i+1); + else + isbn=fields[pos].substring(fields[pos].indexOf(":")+2); + newItem.ISBN=Zotero.Utilities.cleanString(isbn); + } + if(fields[pos].indexOf("Author")!=-1||fields[pos].indexOf("Editor")!=-1) { + var authors=fields[pos].split(","); + for(var i=0; i<=authors.length-1; i++) { + authors[i]=Zotero.Utilities.cleanString(authors[i]); + var names=authors[i].split(" "); + var creators=new Array(); + creators.firstName=names[0]; + creators.lastName=names[names.length-2]; + if(names[names.length-1]=="(Editor)") + creators.creatorType="editor"; + if(names[names.length-1]=="(Author)") + creators.creatorType="author"; + newItem.creators.push(creators); + } + } + if(fields[pos].indexOf("DOI:")!=-1) + newItem.itemID=fields[pos].substring(fields[pos].indexOf("1")); + } +} +function doWeb(doc, url) { + var namespace=doc.documentElement.namespaceURI; + var nsResolver=namespace?function(prefix) { + return (prefix=="x")?namespace:null; + }:null; + var journalreg=new RegExp("http://(:?www\.)?rsc\.org/(:?P|p)ublishing/(:?J|j)ournals"); + if(journalreg.test(url)) { + var browspath=''//div/p/a[text()="Use advanced search"]''; + if(doc.evaluate(browspath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var doipath=''//p[strong/text()="DOI:"]/a/text()''; + var dois=doc.evaluate(doipath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var titlpath=''//p/strong/a''; + var titles=doc.evaluate(titlpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var items=new Array(); + var doi; + while(doi=dois.iterateNext()) + items[doi.nodeValue]=Zotero.Utilities.cleanString(titles.iterateNext().textContent); + items=Zotero.selectItems(items); + var string="http://www.rsc.org/delivery/_ArticleLinking/refdownload.asp?"; + for(var codes in items) { + var string="http://www.rsc.org/delivery/_ArticleLinking/refdownload.asp?ManuscriptID="; + string+=codes.substring(codes.indexOf("/")+1)+"&type=refman"; + Zotero.Utilities.HTTP.doGet(string, function(text) { + var trans=Zotero.loadTranslator("import"); + trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + trans.setString(text); + trans.translate(); + Zotero.done(); + }); + } + } + var searchpath=''//a[text()="Back to Search Form"]''; + if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var doipath=''//p[strong/text()="DOI:"]/a/text()''; + var dois=doc.evaluate(doipath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var titlpath=''//form/div/h5''; + var titles=doc.evaluate(titlpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var title; + var items=new Array(); + while(title=titles.iterateNext()) + items[dois.iterateNext().nodeValue]=title.textContent; + items=Zotero.selectItems(items); + var string="http://www.rsc.org/delivery/_ArticleLinking/refdownload.asp?"; + for(var codes in items) { + var string="http://www.rsc.org/delivery/_ArticleLinking/refdownload.asp?ManuscriptID="; + string+=codes.substring(codes.indexOf("/")+1)+"&type=refman"; + Zotero.Utilities.HTTP.doGet(string, function(text) { + var trans=Zotero.loadTranslator("import"); + trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + trans.setString(text); + trans.translate(); + Zotero.done(); + }); + } + } + var singpath=''//ul/li/a[text()="HTML Article" or text()="PDF"]''; + if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var doipath=''//div/p[strong/text()="DOI:"]''; + var text=doc.evaluate(doipath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().textContent; + var doi=text.substring(text.indexOf("/")+1); + var string="http://www.rsc.org/delivery/_ArticleLinking/refdownload.asp?ManuscriptID="+doi; + string+="&type=refman"; + Zotero.Utilities.HTTP.doGet(string, function(text) { + var trans=Zotero.loadTranslator("import"); + trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + trans.setString(text); + trans.setHandler("itemDone", function(obj, newItem) { + var url2=newItem.url; + var stringy; + var archpath=''//div[h3/text()="Journals archive purchaser access"]''; + if(doc.evaluate(archpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var stringy="http://www.rsc.org/ejarchive/"; + stringy+=url2.substring(url2.lastIndexOf("/")+1)+".pdf"; + newItem.attachments.push({url:stringy, title:"RSC PDF", mimeType:"application/pdf"}); + } + else { + var stringy="http://www.rsc.org/delivery/_ArticleLinking/DisplayArticleForFree.cfm?doi="; + stringy+=url2.substring(url2.lastIndexOf("/")+1); + newItem.attachments.push({url:stringy, title:"RSC PDF", mimeType:"application/pdf"}); + } + newItem.complete(); + }); + trans.translate(); + Zotero.done(); + }); + } + } + var magpath=''//div/h3[text()="Link to journal article"]''; + if(doc.evaluate(magpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var newItem=new Zotero.Item("magazineArticle"); + var titlpath=''//div/h2/div[@class="header"]/text()''; + newItem.title=doc.evaluate(titlpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().nodeValue; + var authpath=''//em/text()''; + var auth=doc.evaluate(authpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().nodeValue; + var authors=auth.split(","); + if(newItem.title.indexOf("Interview")==-1) + for(var i=0; i<=authors.length-1; i++) { + authors[i]=Zotero.Utilities.cleanString(authors[i]); + var names=authors[i].split(" "); + var creator=new Array(); + creator.firstName=names[0]; + creator.lastName=names[names.length-1]; + newItem.creators.push(creator); + } + var textpath=''//div[@id="content"]//text()''; + var text=doc.evaluate(textpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var temp; + while(temp=text.iterateNext()) + if(temp.nodeValue==newItem.title) { + newItem.date=text.iterateNext().nodeValue; + break; + } + var datapath= ''//div[@id="breadcrumbs"]/ul/li/a/text()''; + var data=doc.evaluate(datapath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var prev; + while(temp=data.iterateNext()) { + if(temp.nodeValue.indexOf("Chemi")!=-1) + newItem.publication=temp.nodeValue; + prev=temp; + } + newItem.issue=prev.nodeValue; + newItem.complete(); + } + var magbrows=''//div/h4[@class="newstitle"]/a''; + if(doc.evaluate(magbrows, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var titlpath=''//h4[@class="newstitle"]/a''; + var titles=doc.evaluate(titlpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var title; + var items=new Array(); + while(title=titles.iterateNext()) + items[title.href]=title.textContent; + items=Zotero.selectItems(items); + for(var linx in items) { + var newItem=new Zotero.Item("magazineArticle"); + newItem.url=linx; + newItem.title=items[linx]; + var datepath=''//div[h4/a/text()="''+items[linx]+''"]/h4[@class="datetext"]/text()''; + newItem.date=doc.evaluate(datepath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().nodeValue; + var datapath= ''//div[@id="breadcrumbs"]/ul/li/a/text()''; + var data=doc.evaluate(datapath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var prev; + var temp; + while(temp=data.iterateNext()) { + if(temp.nodeValue.indexOf("Chemi")!=-1) + newItem.publication=temp.nodeValue; + prev=temp; + } + if(prev.nodeValue!=newItem.publication) + newItem.issue=prev.nodeValue; + newItem.complete(); + } + } + var magsearch=''//p[@class="more"]/strong/a[text()="Search RSC journals"]''; + if(doc.evaluate(magsearch, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var titlpath=''//div/p/a''; + var titles=doc.evaluate(titlpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + titlpath=''//blockquote/p/a[span/@class="l"]''; + var titles2=doc.evaluate(titlpath, doc, nsResolver, XPathResult.ANY_TYPE, null) + var title; + var items=new Array(); + while(title=titles.iterateNext()) + items[title.href]=title.textContent; + while(title=titles2.iterateNext()) + items[title.href]=title.textContent; + items=Zotero.selectItems(items); + for(var linx in items) { + var newItem=new Zotero.Item("magazineArticle"); + newItem.url=linx; + newItem.title=items[linx]; + newItem.complete(); + } + } + var bookreg=new RegExp("http://(:?www\.)?rsc\.org/(:?P|p)ublishing/e(:?B|b)ooks"); + if(bookreg.test(url)) { + var browspath=''//title/text()''; + var page=doc.evaluate(browspath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().nodeValue; + if((page=="Books in a publication year")||(page=="Subject Area Books")||(page=="A - Z Index") + ||(page=="Book Series")) { + var doipath=''//dd/p/a/text()''; + var dois=doc.evaluate(doipath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var items=new Array(); + var title; + while(title=dois.iterateNext()) { + var doi=dois.iterateNext().nodeValue; + items[doi.substring(doi.indexOf("1"))]=title.nodeValue; + } + items=Zotero.selectItems(items); + for(var codes in items) { + var newItem=new Zotero.Item("book"); + newItem.itemID=codes; + newItem.title=items[codes]; + var itempath=''//dd/p[contains(a[2]/text(), "''+codes+''")]''; + var itempath2=''//dd/p[contains(a/text(), "''+codes+''")]''; + var data; + if(data=doc.evaluate(itempath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + data=data.innerHTML; + else if(data=doc.evaluate(itempath2, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + data=data.innerHTML; + doBook(newItem, data); + newItem.complete(); + } + } + var chappath=''//dt/img[@alt="Chapter"]''; + var singpath=''//h3[text()="Table of Contents"]''; + if(doc.evaluate(chappath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var newItem=new Zotero.Item("bookSection"); + var titlpath=''//span/h3/text()''; + var titles=doc.evaluate(titlpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + newItem.title=titles.iterateNext().nodeValue; + newItem.bookTitle=titles.iterateNext().nodeValue; + var datapath=''//dd/p''; + var entries=doc.evaluate(datapath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var chaptext=entries.iterateNext().innerHTML; + doChap(newItem, chaptext); + var bookdata=entries.iterateNext().innerHTML; + doBook(newItem, bookdata); + var linkpath=''//td[1][@class="td1"]/a[1]''; + var linx=doc.evaluate(linkpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var pdflink; + while(pdflink=linx.iterateNext()) + newItem.attachments.push({url:pdflink.href, title:"RCS PDF", mimeType:"application/pdf"}); + newItem.complete(); + } + else if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var newItem=new Zotero.Item("book"); + var itempath=''//dd/p''; + var data=doc.evaluate(itempath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().innerHTML; + doBook(newItem, data); + var titlpath=''//div/h2/text()''; + newItem.title=doc.evaluate(titlpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().nodeValue; + var linkpath=''//td[1][@class="td1"]/a[1]''; + var linx=doc.evaluate(linkpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var pdflink; + while(pdflink=linx.iterateNext()) + newItem.attachments.push({url:pdflink.href, title:"RCS PDF", mimeType:"application/pdf"}); + newItem.complete(); + } + } + var searchpath=''//div/p[@class="title"][text()="Search Results"]''; + if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var doipath=''//dd/p/a/text()''; + var dois=doc.evaluate(doipath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var title; + var items=new Array(); + while(title=dois.iterateNext()) { + var doi=dois.iterateNext().nodeValue; + items[doi.substring(doi.indexOf("1"))]=title.nodeValue; + } + items=Zotero.selectItems(items); + for(var codes in items) { + var itempath=''//dd/p[contains(a/text(), "''+codes+''")]''; + var newpath=''//dd[contains(p[2]/a/text(), "''+codes+''")]/p[1]/strong/text()''; + var data=doc.evaluate(itempath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().innerHTML; + if(data.indexOf("Book:")!=-1) { + var newItem=new Zotero.Item("bookSection"); + newItem.itemID=codes; + newItem.title=items[codes]; + doChap(newItem, data); + newItem.complete(); + } + else { + var newItem=new Zotero.Item("book"); + var newdata=doc.evaluate(newpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().nodeValue; + if(newdata.indexOf("Volume")!=-1) + newItem.volume=newdata.substring(newdata.lastIndexOf(" ")+1); + else + newItem.series=newdata; + newItem.itemID=codes; + newItem.title=items[codes]; + doBook(newItem, data); + newItem.complete(); + } + } + } + Zotero.wait(); +}'); + +REPLACE INTO translators VALUES ('0faa6714-927a-4b07-911e-7101895daae0', '1.0.0b4r1', '', '2007-07-30 22:00:00', '0', '100', '4', 'GBV', 'Ramesh Srigiriraju', '^http://(?:www\.|gso\.)?gbv\.de/', +'function detectWeb(doc, url) { + var namespace=doc.documentElement.namespaceURI; + var nsResolver=namespace?function(prefix){ + return (prefix=="x")?namespace:null; + }:null; + var searchpath=''//tr/td[@class="tab1"][text()="shortlist" or text()="Kurzliste"]''; + if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + return "multiple"; + var singpath=''//tr/td[@class="tab1"][text()="title data" or text()="Titeldaten"]''; + var singpath2=''//tr/td[@class="tab1"][text()="availability" or text()="Nachweisinformationen"]''; + if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()|| + doc.evaluate(singpath2, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) + return "website"; +}', +'function doWeb(doc, url) { + var namespace=doc.documentElement.namespaceURI; + var nsResolver=namespace?function(prefix){ + return (prefix=="x")?namespace:null; + }:null; + var searchpath=''//tr/td[@class="tab1"][text()="shortlist" or text()="Kurzliste"]''; + if(doc.evaluate(searchpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var titlpath=''//tr/td[@class="hit"]/a/text()''; + var idpath=''//tr/td[@class="hit"][@align="right"]/text()''; + var titles=doc.evaluate(titlpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var ids=doc.evaluate(idpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var items=new Array(); + var id; + while(id=ids.iterateNext()) { + var str=id.nodeValue; + str=str.substring(0, str.indexOf(".")); + items[str]=titles.iterateNext().nodeValue; + } + items=Zotero.selectItems(items); + var string="http://gso.gbv.de/DWN"; + for(var linx in items) { + var datastr="FRST="+linx+"&LAST="+linx+"&NORND=1&UFRST=" + +linx+"&ULAST="+linx+"&PRS=RIS&CHARSET_ONCE=UTF-8&MAXLINE=77&EMAIL="; + Zotero.Utilities.HTTP.doPost(string, datastr, function(text) { + var trans=Zotero.loadTranslator("import"); + trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + trans.setString(text); + trans.translate(); + Zotero.done(); + }); + } + Zotero.wait(); + } + var singpath=''//tr/td[@class="tab1"][text()="title data" or text()="Titeldaten"]''; + var singpath2=''//tr/td[@class="tab1"][text()="availability" or text()="Nachweisinformationen"]''; + if(doc.evaluate(singpath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()|| + doc.evaluate(singpath2, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext()) { + var pagepath=''//tr/td[@class="h2"]/strong[@class="pages"]/text()''; + var str=doc.evaluate(pagepath, doc, nsResolver, XPathResult.ANY_TYPE, null).iterateNext().nodeValue; + var string="http://gso.gbv.de/DWN"; + var regex=new RegExp("^([\\d]+)"); + var nums=regex.exec(str); + var datastr="FRST="+nums[0]+"&LAST="+nums[0]+"&NORND=1&UFRST=" + +nums[0]+"&ULAST="+nums[0]+"&PRS=RIS&CHARSET_ONCE=UTF-8&MAXLINE=77&EMAIL="; + Zotero.Utilities.HTTP.doPost(string, datastr, function(text) { + var trans=Zotero.loadTranslator("import"); + trans.setTranslator("32d59d2d-b65a-4da4-b0a3-bdd3cfb979e7"); + trans.setString(text); + trans.translate(); + Zotero.done(); + }); + } +}'); + REPLACE INTO translators VALUES ('4fd6b89b-2316-2dc4-fd87-61a97dd941e8', '1.0.0b3.r1', '', '2007-06-27 02:00:00', '1', '100', '4', 'Library Catalog (InnoPAC)', 'Simon Kornblith', '^https?://[^/]+/(?:search\??/|record=|search%7e/)', 'function detectWeb(doc, url) { // First, check to see if the URL alone reveals InnoPAC, since some sites don''t reveal the MARC button @@ -3162,7 +5070,7 @@ function doWeb(doc, url) { } }'); -REPLACE INTO translators VALUES ('5e3e6245-83da-4f55-a39b-b712df54a935', '1.0.0b3r1', '', '2007-06-18 23:30:00', '0', '50', '4', 'MELVYL', 'Sean Takats', '^https?://melvyl-dev.cdlib.org:8162/F(?:/[A-Z0-9\-]+(?:\?.*)?$|\?func=find|\?func=scan)', +REPLACE INTO translators VALUES ('5e3e6245-83da-4f55-a39b-b712df54a935', '1.0.0b3r1', '', '2007-07-30 22:00:00', '0', '90', '4', 'Melvyl', 'Sean Takats', '^https?://melvyl-dev.cdlib.org:8162/F(?:/[A-Z0-9\-]+(?:\?.*)?$|\?func=find|\?func=scan)', 'function detectWeb(doc, url) { var singleRe = new RegExp("^https?://[^/]+/F/[A-Z0-9\-]+\?.*(?:func=full-set-set.*\&format=[0-9]{3}|func=direct)"); @@ -3192,17 +5100,35 @@ REPLACE INTO translators VALUES ('5e3e6245-83da-4f55-a39b-b712df54a935', '1.0.0b if (prefix == ''x'') return namespace; else return null; } : null; - var xpath = ''//td[2][@class="resultsBrief"]/a[1]''; // gets MELVYL links - var elmts = doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null); - var elmt; - var titleXpath = ''//tr[td[@class="resultsBrief"][@id="bold"]/b[text()="Title"]]/td[4]''; // gets MELVYL results titles - var titleElmts = doc.evaluate(titleXpath, doc, nsResolver, XPathResult.ANY_TYPE, null); - var titleElmt; - var items = new Array(); - while ((elmt = elmts.iterateNext()) && (titleElmt = titleElmts.iterateNext())){ - items[elmt.href] = Zotero.Utilities.cleanString(titleElmt.textContent); - } + var reviewXpath = ''//table/tbody/tr[td[@class="resultsDisplayWhite"]]'' + var reviewRows = doc.evaluate(reviewXpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var reviewRow; + + var items = new Array(); + + if (reviewRow = reviewRows.iterateNext()){ + var xpath = ''./td[@class="resultsDisplayWhite"][2]/a[1]''; + var titleXpath = ''./td[@class="resultsDisplayWhite"][5]''; + var elmt; + var titleElmt; + do { + elmt = doc.evaluate(xpath, reviewRow, nsResolver, XPathResult.ANY_TYPE, null).iterateNext(); + titleElmt = doc.evaluate(titleXpath, reviewRow, nsResolver, XPathResult.ANY_TYPE, null).iterateNext(); + items[elmt.href] = Zotero.Utilities.cleanString(titleElmt.textContent); + } while (reviewRow = reviewRows.iterateNext()); + + } else { + var xpath = ''//td[2][@class="resultsBrief"]/a[1]''; // gets MELVYL links + var elmts = doc.evaluate(xpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var elmt; + var titleXpath = ''//tr[td[@class="resultsBrief"][@id="bold"]/b[text()="Title"]]/td[4]''; // gets MELVYL results titles + var titleElmts = doc.evaluate(titleXpath, doc, nsResolver, XPathResult.ANY_TYPE, null); + var titleElmt; + while ((elmt = elmts.iterateNext()) && (titleElmt = titleElmts.iterateNext())){ + items[elmt.href] = Zotero.Utilities.cleanString(titleElmt.textContent); + } + } items = Zotero.selectItems(items);