douban for calibre

2022/7/22 11:20:58

// ==UserScript==
// @name        douban for calibre
// @namespace   Violentmonkey Scripts
// @match       https://192.168.0.20:10003/admin/book/*
// @match       http://192.168.0.20:20003/admin/book/*
// @match       https://ds918plus.local:10003/admin/book/*
// @match       http://ds918plus.local:20003/admin/book/*
// @match       http://192.168.0.30:20003/admin/book/*
// @match       http://omv.local/admin/book/*
// @match       https://book.douban.com/subject/*
// @grant       GM_setValue
// @grant       GM_getValue
// @version     0.4.1
// @author      chopong
// @description 2022/7/22 11:20:58
// @license     MIT
// ==/UserScript==


// document.body.querySelector('h1').append(div);

cpcollect=function(){
  bookinfo={
    booktitle:'',
    bookauthor:'',
    abstract:'',
    isbn:'',
    booktags:'',
    bookseries:'',
    indexseries:'0',
    bookrate:'',
    toppage:'',
    pubdate:'',
    pubpress:'',
    lang:'中文',
    read:'0',
    version:'1',
    note:''
  };
  
  if(document.body.querySelector('h1')){
    bookinfo.booktitle=document.body.querySelector('h1').innerText.trim();
  }
  if(document.body.querySelector("#info")){
    infotext=document.body.querySelector("#info").innerText.split("\n");
    for(var ii in infotext){
      item=infotext[ii].split(":",1);
      if (item=="作者"){
        bookinfo.bookauthor=infotext[ii].substr(3).replaceAll("/","&").trim();
      } else if(item=="译者"){
        bookinfo.bookauthor=bookinfo.bookauthor+"&"+infotext[ii].substr(3).replaceAll("/","&").trim();
      } else if(item=="出版社"){
        bookinfo.pubpress=infotext[ii].substr(4).trim();
      } else if(item=="副标题"){
        bookinfo.booktitle=bookinfo.booktitle+": "+infotext[ii].substr(4).trim();
      } else if(item=="原作名"){
        bookinfo.booktitle=bookinfo.booktitle+" "+infotext[ii].substr(4).trim();
      } else if(item=="出版年"){
        rawpubdate=infotext[ii].substr(4).trim().split(/-|\/|年|月|日/);
        if(rawpubdate[rawpubdate.length-1]==""){
          rawpubdate.pop();
        }
        if(rawpubdate.length==1){
          rawpubdate[1] = "1";
          rawpubdate[2] = "1";
        }else if(rawpubdate.length==2){
          rawpubdate[2] = "1";
        }else{
          rawdate=rawpubdate
        }
        rawdate = new Date(rawpubdate)
        bookinfo.pubdate=rawdate.toLocaleDateString().replaceAll("/","-");
      } else if(item=="ISBN"){
        bookinfo.isbn=infotext[ii].substr(5).trim();
      } else if(item=="丛书"){
        bookinfo.bookseries=infotext[ii].substr(3).trim();
      }
    }
  }
  if(document.body.querySelector(".intro")){
    if(document.body.querySelector(".all.hidden>div>.intro")){
      bookinfo.abstract=document.body.querySelector(".all.hidden>div>.intro").innerHTML.trim(); 
    }else{
      bookinfo.abstract=document.body.querySelector(".intro").innerHTML.trim(); 
    }
  }
//  let doubanid = document.baseURI.split("/")[4];
//  if(document.body.querySelector("#dir_"+doubanid+"_full")){
//    bookinfo.abstract=bookinfo.abstract+"目录"+document.body.querySelector("#dir_"+doubanid+"_full").innerHTML.trim();
//  };
  if(document.body.querySelector(".rating_self>strong")){
    bookinfo.bookrate=document.body.querySelector(".rating_self>strong").innerText.trim();
  }
  if(document.body.querySelector(".nbg")){
    bookinfo.toppage=document.body.querySelector(".nbg").href
  }
  return bookinfo;
};

cpsend=function(bookinfo){
  if(bookinfo.booktitle){
    document.body.querySelector("#book_title").value=bookinfo.booktitle;    
  }
  if(bookinfo.bookauthor){
    document.body.querySelector("#bookAuthor").value=bookinfo.bookauthor;  
  }
  if(bookinfo.isbn && document.querySelector('#identifier-table').querySelectorAll("input").length == 0){
    document.body.querySelector("#add-identifier-line").click();
    document.body.querySelector('input[placeholder="书号类型"]').value="ISBN";
    document.body.querySelector('input[placeholder="书号编号"]').value=bookinfo.isbn;
  }
  if(bookinfo.booktags){
    document.body.querySelector("#tags").value=bookinfo.booktags;    
  }
  if(bookinfo.bookseries){
    document.body.querySelector("#series").value=bookinfo.bookseries;    
  }
  if(bookinfo.indexseries){
    document.body.querySelector("#series_index").value=bookinfo.indexseries;    
  }
  if(bookinfo.bookrate){
    document.body.querySelector("#rating").value=(Number(bookinfo.bookrate)/2).toFixed(0);    
  }
  if(bookinfo.toppage){
    document.body.querySelector("#cover_url").value=bookinfo.toppage;    
  }
  if(bookinfo.pubdate){
    document.body.querySelector("#pubdate").value=bookinfo.pubdate;    
  }
  if(bookinfo.pubpress){
    document.body.querySelector("#publisher").value=bookinfo.pubpress;    
  }
  if(bookinfo.lang && document.body.querySelector("#languages").value == ""){
    document.body.querySelector("#languages").value=bookinfo.lang;  
  }
  if(bookinfo.read && document.body.querySelector("#custom_column_1")){
    document.body.querySelector("#custom_column_1").value=bookinfo.read;
  }
  if(bookinfo.version && document.body.querySelector("#custom_column_2")){
    document.body.querySelector("#custom_column_2").value=bookinfo.version;
  }
  if(bookinfo.abstract){
    document.body.querySelector('#description_ifr').contentDocument.body.innerHTML=bookinfo.abstract;    
  }
  // document.body.querySelector("#bookAuthor").value=bookinfo.note;
}

cpsearch=function(item){
  window.open("https://search.douban.com/book/subject_search?search_text="+item);
}

window.onload=function(){
  let div=document.createElement("div");
  if(document.domain != "book.douban.com"){
    div.innerHTML='<div style="z-index:auto;position:fixed;top:50px;left:600px;color:black;"><button id="cpsearch">搜索</button><button id="cpsend">发送</button></div>';  
  } else {
    div.innerHTML='<div style="z-index:auto;position:fixed;top:50px;left:600px;color:black;"><button id="cpcollect">采集</button><button id="cpsend">发送</button></div>';
  }
  document.body.append(div);
  div.onclick=function(event){
    if(event.target.id=="cpcollect"){
      bookinfo=cpcollect();
      GM_setValue('bookinfo', bookinfo);
      bookinfojson=JSON.stringify(bookinfo);
      //navigator.clipboard.writeText(bookinfojson);
      alert(bookinfojson);
    }else if(event.target.id=="cpsend"){
      //bookinfojson=navigator.clipboard.writeText();
      //https://www.jianshu.com/p/fa3d5b2574a2
      bookinfo=GM_getValue("bookinfo");
      cpsend(bookinfo);
      bookinfojson=JSON.stringify(bookinfo);
      alert(bookinfojson)
    }else if(event.target.id=="cpsearch"){
      cpsearch(document.body.querySelector("#book_title").value);
    }
  };  
};

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址