Get chapter links

Dodaje przycisk do skopiowania linkow do rozdzalow

  1. // ==UserScript==
  2. // @name Get chapter links
  3. // @namespace dtm
  4. // @include https://novelki.pl/projekty/*
  5. // @version 1
  6. // @grant none
  7. // @description Dodaje przycisk do skopiowania linkow do rozdzalow
  8. // @require https://code.jquery.com/ui/1.12.1/jquery-ui.js
  9. // ==/UserScript==
  10.  
  11. function getHref(item){
  12. return $(item).prop('href');
  13. }
  14.  
  15. function copyToClipboard(){
  16. var dummy = document.createElement("textarea");
  17. document.body.appendChild(dummy);
  18. dummy.setAttribute("id", "dummy_id");
  19. document.getElementById("dummy_id").value=$.map(slicedLinks, getHref).join('\r\n');
  20. dummy.select();
  21. document.execCommand("copy");
  22. document.body.removeChild(dummy);
  23. }
  24.  
  25.  
  26. var links = [];
  27. var maxLinksPerPage = 50;
  28. var slicedLinks = [];
  29. var button;
  30. var input;
  31.  
  32. var tmp = [];
  33.  
  34. function onlyUnique(value, index, self) {
  35. if (tmp.indexOf(value.prop('href')) < 0){
  36. tmp.push(value.prop('href'));
  37. return true;
  38. }
  39. else{
  40. return false;
  41. }
  42. }
  43.  
  44. function findLinks() {
  45. $tempsA = []
  46. tmp = [];
  47. $('table.chapters tr td:first-child a').each(function () {
  48. $tempsA.push($(this));
  49. });
  50. links = $tempsA.filter(onlyUnique).reverse();
  51. }
  52.  
  53. function changeTitle(title){
  54. button.prop('title', title);
  55. }
  56.  
  57. function getText(item) {
  58. return $(item).text();
  59. }
  60.  
  61. function linksPageNumberChanged(){
  62. var pageNumber = input.val()
  63. if(isNaN(pageNumber) || pageNumber <= 0){
  64. slicedLinks = links;
  65. changeTitle('Nieprawidłowy input\r\n Wszystkie linki \n Ilość:' + slicedLinks.length)
  66. } else {
  67. var startPosition = (pageNumber-1)*maxLinksPerPage;
  68. if(startPosition >= links.length){
  69. slicedLinks = links;
  70. changeTitle('Strona za duża, brak linków'
  71. + ' \r\nLiczba stron: ' + links.length/maxLinksPerPage
  72. + ' \r\nLinków na stronie: ' + maxLinksPerPage
  73. + " \r\nWszystkich linków: " + links.length)
  74. } else {
  75. slicedLinks = links.slice((pageNumber-1)*maxLinksPerPage, pageNumber*maxLinksPerPage);
  76. changeTitle($.map(slicedLinks, getText).join('<|>'));
  77. }
  78. }
  79. }
  80.  
  81. function getChaptersLinks(){
  82. var pageNumber = $('#links-page-number').val()
  83. if(isNaN(pageNumber) || pageNumber <= 0){
  84. copyToClipboard();
  85. } else {
  86. var startPosition = (pageNumber-1)*maxLinksPerPage;
  87. if(startPosition >= links.length){
  88. alert('Nie ma takiej strony');
  89. } else {
  90. copyToClipboard();
  91. }
  92. }
  93. }
  94.  
  95. function addInputsToPage(){
  96. var $tc = $('table.chapters').get(1);
  97. $('<input id="links-page-number" />').insertBefore($tc);
  98. $('<button id="getLinks" type="button" >Pobierz linki</button>').insertBefore($tc);
  99. button = $('button#getLinks');
  100. input = $('input#links-page-number');
  101. button.click(getChaptersLinks);
  102. input.keyup(linksPageNumberChanged);
  103. }
  104.  
  105. $(document).ready(function () {
  106. console.log('test');
  107. findLinks();
  108. addInputsToPage();
  109. linksPageNumberChanged();
  110. $(document).tooltip({
  111. open: function (event, ui) {
  112. ui.tooltip.css("min-width", "800px");
  113. }
  114. });
  115. });