Pixiv Auto Like

Click **like** automatically in new illust pages

As of 10/01/2019. See the latest version.

  1. // ==UserScript==
  2. // @name Pixiv Auto Like
  3. // @name:zh-TW Pixiv 自動點讚
  4. // @description Click **like** automatically in new illust pages
  5. // @description:zh-TW 在新版頁面自動點讚
  6. // @namespace https://github.com/FlandreDaisuki
  7. // @version 1.2.1
  8. // @author FlandreDaisuki
  9. // @include *://www.pixiv.net/member_illust.php?*mode=medium*
  10. // @require https://unpkg.com/sentinel-js@0.0.5/dist/sentinel.js
  11. // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAACw0lEQVRYhe2YvU9TURjGDxGMX4lhZDK6ACGObv4BJixEggvuxNHJ3egKpb3FtooLpjAYXWyoyEAMCYNoYiLGQEKoiXyJQPko9D3nvI/DvdWCh9NzSYMdeJN3aNP79Hefc97n5F4hTitMecU2Eae8GCCcSMcpL7ximw1m+cRg/kItm6FO0hmTU//U/4Ip9SlQVYA8gugPOhp8DvtHXnBtSecojYpAUcKNlxILW4ylXcZ8ntE6LCGihDoHkLoBH6B1WOLbhq+xsMW49UZCxMICRQmjOQVTPf+q/DuuBNVPGJkza4zlNC4lXIE8ws3X0ihUqitD0r58HuH6iF3jzttDGkcCRQi/9tgqtrjDEBELUISQ27JrbBYZTSkXoD6C0naxbWKIXgtQL2GzaNdQzGhKOgIVpF1sfZ8h+ixAfYTVgl1jX7kCRQn3J82bsVS3s8o8KWUad8ftGo+mD2nYpuxskrBwxB6YXNQQcYcpixM+r2mjxuyGxuVnIXPo4lPCvfcaFGjuSaBrTOHMEweYoBsShK4xhd1g4EgDD6Y0LqQMv68EVLpLEfOXQMTIzZnjajgBlYt6QYeBCnOdM1Cc0Dgo0ZlV6JlQaE5L/0yqBNNPaE5L9EwodGYVGgelHSqMQ3ObGhzs8S9rjI5R5QejKa09gogQOkYVfuz4FzEDD6e1/Qx03UMtaQnmgxNXkEByRvtuRehAN6clUjMa6/sHJ+vDKuPaC4tLrg7VJ8xByQzsKWClAGRyjEyOsVLwvzMF/at5Rr1tQp2XzCN0v5NY2rUnr61WC4yW4QoHcqgpi/mZkv3O2CZ3sKJifPrJaEiQPdlDA5XlSXtGYj5vh9IMTC0x2jPSPb9CA5W5dXWI0D0uMbtRmiL+06QZjz8qnE85uFIVoHLHgtA7l/T7WOFZNaBqd+0D1dyjdM29bPgLVSOvY07LXL8BZ79TYIQHQXsAAAAASUVORK5CYII=
  12. // @grant none
  13. // @compatible firefox
  14. // @compatible chrome
  15. // @noframes
  16. // ==/UserScript==
  17. /* global globalInitData, sentinel */
  18. const $ = (s) => document.querySelector(s);
  19.  
  20. sentinel.on('button._35vRH4a:not(._1vHxmVH)', async () => {
  21. const likeBtn = $('button._35vRH4a');
  22. const likeSVG = $('svg._3eF4D7o');
  23. const sp = new URLSearchParams(location.search);
  24.  
  25. const resp = await fetch('/ajax/illusts/like', {
  26. method: 'POST',
  27. headers: {
  28. Accept: 'application/json',
  29. 'Content-Type': 'application/json',
  30. 'x-csrf-token': globalInitData.token,
  31. },
  32. credentials: 'same-origin',
  33. body: JSON.stringify({
  34. illust_id: sp.get('illust_id'),
  35. }),
  36. });
  37.  
  38. const data = await resp.json();
  39. if (!data.error) {
  40. changeLikedStyle(likeBtn, likeSVG);
  41. }
  42. });
  43.  
  44. function changeLikedStyle(likeBtn, likeSVG) {
  45. if (likeBtn) {
  46. likeBtn.classList.add('_1vHxmVH');
  47. }
  48. if (likeSVG) {
  49. likeSVG.classList.add('_2sram-m');
  50. const svgPath = document.createElementNS('http://www.w3.org/2000/svg', 'path');
  51. svgPath.setAttribute('d', `M5,7.08578644 L9.29289322,2.79289322 C9.68341751,2.40236893 10.3165825,2.40236893 10.7071068,
  52. 2.79289322 C11.0976311,3.18341751 11.0976311,3.81658249 10.7071068,4.20710678 L5,9.91421356 L2.29289322,
  53. 7.20710678 C1.90236893,6.81658249 1.90236893,6.18341751 2.29289322,5.79289322 C2.68341751,5.40236893 3.31658249,
  54. 5.40236893 3.70710678,5.79289322 L5,7.08578644 Z`);
  55. while (likeSVG.firstChild) {
  56. likeSVG.firstChild.remove();
  57. }
  58. likeSVG.appendChild(svgPath);
  59. }
  60. }