The so scrolling pouët.net oneliner

1in10: "I wish the oneliner scrolled"

  1. // ==UserScript==
  2. // @name The so scrolling pouët.net oneliner
  3. // @namespace raina
  4. // @description 1in10: "I wish the oneliner scrolled"
  5. // @include /^https?:\/\/((m|www)\.)?pouet\.net($|\/|\/index\.php|\/oneliner\.php)/
  6. // @version 1.1
  7. // @grant none
  8. // ==/UserScript==
  9. (function() {
  10. "use strict";
  11. var style = document.createElement("style");
  12. style.textContent = '' +
  13. '.scroll {' +
  14. ' position: relative;' +
  15. ' height: 1.5em;' +
  16. '}' +
  17. '.scroll p {' +
  18. ' position: absolute;' +
  19. ' white-space: nowrap;' +
  20. ' animation: linear infinite scroll;' +
  21. '}' +
  22. '.scroll p:hover {' +
  23. ' animation-play-state: paused;' +
  24. '}' +
  25. '.scroll .usera,' +
  26. '.scroll a + time {' +
  27. ' margin-left: 32px;' +
  28. '}' +
  29. '.scroll time + .usera {' +
  30. ' margin-left: 0px;' +
  31. '}' +
  32. '@keyframes scroll {' +
  33. ' 0% {' +
  34. ' left: 100%;' +
  35. ' transform: translateX(0%);' +
  36. ' }' +
  37. ' 100% {' +
  38. ' left: -100%;' +
  39. ' transform: translateX(-100%);' +
  40. ' }' +
  41. '}';
  42. var lines = [];
  43. var lis = document.querySelectorAll('[id*="oneliner"] ul li');
  44. var newLine = document.createElement("li");
  45. var p = document.createElement("p");
  46. document.head.appendChild(style);
  47. for (var i = 0; i < lis.length; i++) {
  48. if ("day" == lis[i].className) {
  49. if ("" != newLine.innerHTML) {
  50. newLine.className = "scroll";
  51. lines.push(newLine);
  52. }
  53. newLine = document.createElement("li");
  54. p = document.createElement("p");
  55. } else {
  56. p.innerHTML += lis[i].innerHTML;
  57. p.setAttribute("style", "animation-duration: " + (p.textContent.length / 10) + "s");
  58. newLine.appendChild(p);
  59. lis[i].parentElement.removeChild(lis[i]);
  60. }
  61. }
  62. newLine.className = "scroll";
  63. lines.push(newLine);
  64. lis = document.querySelectorAll('[id*=oneliner] ul li.day');
  65. if (lis.length) {
  66. for (i = 0; i < lines.length; i++) {
  67. lis[i].parentElement.insertBefore(lines[i], lis[i].nextSibling);
  68. }
  69. } else {
  70. document.querySelector('[id*="oneliner"] ul').appendChild(lines[0]);
  71. }
  72. })();