Bandcamp: Auto Play Discover

Auto-playing tracks on https://bandcamp.com/discover page

  1. // ==UserScript==
  2. // @name Bandcamp: Auto Play Discover
  3. // @name:en Bandcamp: Auto Play Discover
  4. // @name:ru Bandcamp: Автовоспроизведение на Discover
  5. // @name:zh Bandcamp: 自动播放发现
  6. // @namespace http://tampermonkey.net/
  7. // @version 1.0
  8. // @description Auto-playing tracks on https://bandcamp.com/discover page
  9. // @description:ru Автоматическое воспроизведение треков на странице hhttps://bandcamp.com/discover
  10. // @author Grihail
  11.  
  12. // @match https://bandcamp.com/discover*
  13.  
  14. // @icon https://s4.bcbits.com/img/favicon/favicon-32x32.png
  15. // @grant none
  16. // @license CC-BY
  17. // ==/UserScript==
  18.  
  19. (function() {
  20. 'use strict';
  21. var AllLi
  22. var cur
  23.  
  24. String.prototype.float = function() {
  25. return parseFloat(this.replace(',', '.')).toFixed(3);
  26. }
  27. function refreshList() {
  28. var allLiElements = document.querySelectorAll("ul.items li");
  29. AllLi = allLiElements
  30. }
  31.  
  32. function LoadMore(id){
  33. var position = AllLi.length - id;
  34.  
  35.  
  36. if(position <= 5){
  37. var more = document.querySelector("button[data-test='view-more']");
  38. if(more){
  39. more.click();
  40. refreshList();
  41. }
  42. }
  43. }
  44.  
  45. function seekControlCheck() {
  46.  
  47. var seekControl = document.querySelector("input.seek-control");
  48. try {
  49.  
  50.  
  51. if (seekControl.value.float() > "0.995".float() || seekControl.value.float() == "1.00".float()) {
  52. refreshList();
  53. for (var i = 0; i < AllLi.length; i++) {
  54. //ищем кнопку в ли с датой aria-label pause
  55.  
  56. var btn = AllLi[i].querySelector("button[aria-label='Pause']");
  57. if (btn) {
  58. LoadMore(i);
  59. // если наша кнопка есть с паузой в aria
  60. var next = AllLi[i + 1].querySelector("button[aria-label='Play']");
  61. // Проверяем, существует ли кнопка play для следующей песни
  62. if (next) {
  63. // Нажимаем на кнопку play
  64. next.click();
  65. cur = i;
  66.  
  67. }else{
  68. var next1 = AllLi[i + 2].querySelector("button[aria-label='Play']");
  69. if(next1){
  70. next1.click();
  71. cur = i+2;
  72. }else{
  73. var next2 = AllLi[i + 3].querySelector("button[aria-label='Play']");
  74. if(next2){
  75. next2.click();
  76. cur = i+3;
  77. }else{
  78. LoadMore(i);
  79. }
  80. }
  81. }
  82. break
  83. }else{
  84. if(cur > 1){
  85. var nextcur = AllLi[cur + 1].querySelector("button[aria-label='Play']");
  86. if (nextcur) {
  87. nextcur.click();
  88. cur = i+1;
  89. }
  90. }
  91. }
  92. }
  93. }else{
  94. for (var s = 0; s < AllLi.length; s++) {
  95. //ищем кнопку в ли с датой aria-label pause
  96.  
  97. var btna = AllLi[s].querySelector("button[aria-label='Pause']");
  98. if(btna){
  99. cur = s;
  100. break
  101. }
  102.  
  103. }
  104. }
  105.  
  106. } catch (error) {
  107. //не играет музыка
  108.  
  109. }
  110. }
  111.  
  112. refreshList();
  113. setInterval(refreshList, 10000);
  114. setInterval(seekControlCheck,500); //смотрим за окончанием трека
  115. })();

QingJ © 2025

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