Ignore:
Timestamp:
2022-07-29T22:19:12+12:00 (21 months ago)
Author:
davidb
Message:

Callback method added in that determines where there are DOI records for both CrossRef and Core

File:
1 edited

Legend:

Unmodified
Added
Removed
  • other-projects/bib-stinky/trunk/nodejs-server/public/doi-stinky.user.js

    r36322 r36349  
    77// @author       Dave Nichols
    88// @author       Mike Twidale
    9 // @require   https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js
    10 // @match     https://www.cs.waikato.ac.nz/*
    11 // @match     https://search.crossref.org/*
    12 // @grant     GM_xmlhttpRequest
    13 // @connect   bibstinky.sowemustthink.space
    14 // @connect   bib-stinky.so-we-must-think.space
     9// @require    https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js
     10// @match      https://www.cs.waikato.ac.nz/*
     11// @match      https://search.crossref.org/*
     12// @grant      GM_xmlhttpRequest
     13// @connect    bibstinky.sowemustthink.space
     14// @connect    bib-stinky.so-we-must-think.space
    1515// ==/UserScript==
    1616
    17 //alert("foo");
     17//alert("Testing, Testing!");
    1818
    1919(function() {
    20   'use strict';
     20    'use strict';
    2121
    22   var $ = window.jQuery;
     22    var $ = window.jQuery;
     23
     24    function createCrossCheckDOICallack(doi)
     25    {
     26        return function(responseDetails) {
     27            var returned_json_str = responseDetails.responseText;
     28            //console.log(returned_json_str);
     29            var doi_rec = JSON.parse(returned_json_str);
     30
     31            var totalHits = doi_rec.totalHits;
     32            if (doi_rec.totalHits == 0) {
     33                // Remove it
     34                var doi_id = "doistinky-" + doi.replaceAll("/","SLASH");
     35                console.log("No match found in Core => remove DOI " + doi);
     36                //console.log("Removing: id=" + doi_id);
     37                $('#'+doi_id).remove();
     38            }
     39            else if (totalHits == 1) {
     40                var result = doi_rec.results[0];
     41                console.log("Match found in Core for DOI " + doi + " => Investigate Title = " + result.title);
     42            }
     43            else {
     44                console.error("Error: API returned more than one DOI metadata record for doi: " + doi);
     45            }
     46        }
     47    }
     48
     49    function crossCheckDOIs(doi_list,doi_href_list)
     50    {
     51        console.log("Cross-checking #" + doi_list.length + " DOIs");
     52
     53        for (var i=0; i<doi_list.length; i++) {
     54            var doi = doi_list[i];
     55            var encoded_doi = encodeURIComponent(doi);
     56
     57            var crossCheckDOICallback = createCrossCheckDOICallack(doi);
     58
     59            console.log("cross-checking doi: " + doi);
     60            GM_xmlhttpRequest ( {
     61                method:  'GET',
     62                url:    'https://bibstinky.sowemustthink.space/api/get-doi?coreDOI='+encoded_doi,
     63                onload: crossCheckDOICallback
     64            });
     65
     66        }
     67    }
     68
    2369
    2470  var doi_list = [];
     71  var doi_href_list = [];
     72
    2573  var doi_pattern = /^http(?:s)?:\/\/doi.org\/(.*)$/i;
    2674
     
    3179            var doi_id = doi_pattern_matches[1];
    3280            doi_list.push(doi_id);
     81            doi_href_list.push(href);
    3382        }
    3483   });
     
    64113
    65114          if (doi_list.length > 0) {
    66               $('#doiStinkyInfo').append(doi_list.join(","));
     115              if (doi_list.length == 1) {
     116                  $('#doiStinkyInfo').html("Cross-checking extracted DOI:");
     117              }
     118              else {
     119                  $('#doiStinkyInfo').html("Cross-checking extracted DOIs:");
     120              }
     121              var $doi_list_div = $('<div>');
     122
     123              for (var i=0; i<doi_list.length; i++) {
     124                  var doi = doi_list[i];
     125                  var doi_id = doi.replaceAll("/","SLASH");
     126                  var $a_tag = $('<a>');
     127                  $a_tag.attr("id","doistinky-"+ doi_id);
     128                  $a_tag.attr("href","https://doi.org/"+doi);
     129                  $a_tag.append(doi);
     130
     131                  if (i>0) {
     132                      $doi_list_div.append(", ");
     133                  }
     134                  $doi_list_div.append($a_tag);
     135
     136              }
     137              $('#doiStinkyInfo').append($doi_list_div);
     138
     139              crossCheckDOIs(doi_list,doi_href_list);
     140
    67141          }
    68142          else {
    69143              $('#doiStinkyInfo').append("No DOIs detected on the page");
    70144          }
     145
    71146      }
    72147    } );
Note: See TracChangeset for help on using the changeset viewer.