wikipedia

wikipedia extension

  1. // ==UserScript==
  2. // @name wikipedia
  3. // @include *wikipedia*
  4. // @supportURL https://github.com/sxlgkxk/browser_script/issues
  5. // @version 0.1
  6. // @description wikipedia extension
  7. // @namespace http://sxlgkxk.github.io/
  8. // @author sxlgkxk
  9. // @icon http://sxlgkxk.github.io/im/avatar.jpg
  10. // @license MIT
  11. // @grant GM_getValue
  12. // @grant GM_setValue
  13. // @grant GM_xmlhttpRequest
  14. // @require https://unpkg.com/axios/dist/axios.min.js
  15. // ==/UserScript==
  16.  
  17. (function(){
  18. // axios.get('http://127.0.0.1:8003/inc_cnt')
  19.  
  20. // toggle sidebar
  21. function toggleSidebar(){
  22. let sidebar=document.querySelector('#mw-panel')
  23. if(sidebar)
  24. sidebar.hidden=!sidebar.hidden
  25. }
  26. _head=document.querySelector('#mw-head')
  27. if(_head)
  28. _head.addEventListener('click',toggleSidebar)
  29. toggleSidebar()
  30.  
  31.  
  32. // random page
  33. // head=document.querySelector('#firstHeading')
  34. head=document.querySelector('main#content')
  35. dom = document.createElement("div")
  36. dom.innerHTML=""
  37. dom.id="randomPage"
  38. dom.style.cssText = 'background-color: #000; color: #ddd; padding: 15px; margin: 5px;text-align: center;'
  39. head.before(dom)
  40.  
  41. let doms=document.querySelector('#bodyContent').querySelectorAll('a')
  42. let urlSet=new Set()
  43. for(let dom of doms){
  44. let url=dom.href
  45. if(url.match(/^https:\/\/en.(m\.)*wikipedia.org\/wiki/)){
  46. if(url.match(/^https:\/\/en.(m\.)*wikipedia.org\/wiki\/.*?([:\(#]|Main_Page|undefined)+.*?/))
  47. continue
  48. if(url == location.href)
  49. continue
  50. urlSet.add(url)
  51. }
  52. }
  53. let randomUrls=Array.from(urlSet)
  54. randomUrls=randomUrls.sort(()=>Math.random()-0.5).slice(0,3)
  55. for(let url of randomUrls){
  56. title=url.match(/^https:\/\/en.(m\.)*wikipedia.org\/wiki\/(.*)/)[2]
  57. console.log(title)
  58. dom.innerHTML+='<a href="'+url+'">'+title+'</a><br>'
  59. }
  60.  
  61.  
  62. // move category up
  63. category=document.querySelector('#mw-normal-catlinks')
  64. if(category){
  65. category=category.firstElementChild.nextElementSibling
  66. head.before(category)
  67. }
  68.  
  69.  
  70. // move see_also up: not do-able
  71.  
  72.  
  73. // style
  74. function addStyle(html) {
  75. style = document.createElement("div")
  76. document.body.before(style)
  77. style.innerHTML = `<style>` + html + `</style>`
  78. }
  79. addStyle(`
  80. table.nowraplinks.mw-collapsible.navbox-inner.mw-made-collapsible{
  81. border: 10px solid #8bdb81 !important;
  82. }
  83. #See_also{
  84. background-color: #8bdb81 !important;
  85. }
  86. `)
  87.  
  88.  
  89. // -------------------------------- slider --------------------------------
  90.  
  91. addStyle(`
  92. button.sliderBtn{
  93. background-color: #fff;
  94. color: #333;
  95. padding-top: 4px;
  96. padding-bottom: 4px;
  97. padding-left: 9px;
  98. padding-right: 9px;
  99. margin-right: 5px;
  100. margin-bottom: 3px;
  101. margin-top: 3px;
  102. border:0px;
  103. }
  104. `)
  105.  
  106. dom = document.createElement("div")
  107. dom.innerHTML=`<button id='sliderStopBtn' class="sliderBtn" onclick="document.sliderRun=!document.sliderRun">toggle</button>`
  108. + `<div id="sliderList"></div>`
  109. dom.id="slider"
  110. dom.style.cssText = 'background-color: #000; color: #ddd; padding: 15px; margin: 5px;text-align: center;'
  111. head.before(dom)
  112. document.sliderRun=true;
  113. let urlList=Array.from(urlSet).sort((url1,url2)=>url1.localeCompare(url2))
  114. let currentPage=0;
  115. let pageCapacity=10;
  116. console.log(urlList)
  117. function setSliderPage(page){
  118. let sliderList=document.querySelector('#sliderList')
  119. sliderList.innerHTML=""
  120. for(let i=page*pageCapacity;i<(page+1)*pageCapacity;i++){
  121. if(i>=urlList.length)
  122. sliderList.innerHTML+="<br>"
  123. else
  124. sliderList.innerHTML+='<a href="'+urlList[i]+'">'+urlList[i].match(/^https:\/\/en.(m\.)*wikipedia.org\/wiki\/(.*)/)[2].substr(0,35)+'</a><br>'
  125. }
  126. }
  127. setInterval(()=>{
  128. currentPage=(currentPage+1);
  129. if(currentPage>=urlList.length/pageCapacity)
  130. currentPage=0;
  131.  
  132. if(document.sliderRun)
  133. setSliderPage(currentPage)
  134. },1000)
  135.  
  136.  
  137. })();

QingJ © 2025

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