AudioStation support the MediaSession API

让AudioStation支持系统级别的媒体控制(上一首、下一首、暂停/播放)

  1. // ==UserScript==
  2. // @name AudioStation support the MediaSession API
  3. // @name:en AudioStation support the MediaSession API
  4. // @name:zh AudioStation的MediaSession API支持
  5. // @namespace https://gf.qytechs.cn/en/users/1434718-ot0kaz4
  6. // @version 1.0
  7. // @description 让AudioStation支持系统级别的媒体控制(上一首、下一首、暂停/播放)
  8. // @description:en Make AudioStation support system-level media control (Previous, Next, Pause/Play)
  9. // @description:zh 让AudioStation支持系统级别的媒体控制(上一首、下一首、暂停/播放)
  10. // @homepageURL https://otokaze.me
  11. // @license MIT
  12. // @author otokaze.me
  13. // @match *://*/*
  14. // @grant GM_setValue
  15. // @grant GM_getValue
  16. // @grant GM_registerMenuCommand
  17. // ==/UserScript==
  18.  
  19. (function() {
  20. 'use strict';
  21. GM_registerMenuCommand("配置AudioStation域名", function(){
  22. let domains = prompt("配置AudioStation域名(多个用逗号隔开)")
  23. if (domains){
  24. GM_setValue("allowedDomains", domains.split(','))
  25. }
  26. })
  27. let allowedDomains = GM_getValue("allowedDomains", []);
  28. const currentDomain = window.location.hostname;
  29. const isAllowed = allowedDomains.some(domain => currentDomain.endsWith(domain));
  30. if (!isAllowed) {
  31. console.log("当前域名未在白名单内,脚本不会执行。");
  32. return;
  33. }
  34. console.log("✅ 脚本已启用!当前站点:" + currentDomain);
  35.  
  36. setInterval(function() {
  37. if (!navigator.mediaSession) {
  38. return
  39. }
  40. var main = SYNO?.SDS?.AudioStation?.Window?.getPanelScope("SYNO.SDS.AudioStation.Main")
  41. if (!main) {
  42. return
  43. }
  44. navigator.mediaSession.metadata = new MediaMetadata({
  45. title: main.playerPanel.Ctrl.getCurrentTitle(),
  46. artist: main.playerPanel.Ctrl.getCurrentArtist(),
  47. album: main.playerPanel.Ctrl.getCurrentAlbum(),
  48. artwork: [{
  49. src: main.playerPanel.Ctrl.getCurrentCover(),
  50. // sizes: "480x480",
  51. // type: "image/jpeg",
  52. }],
  53. });
  54. navigator.mediaSession.setActionHandler('play', function() {
  55. main.audioPlayer.doPlay();
  56. });
  57. navigator.mediaSession.setActionHandler('pause', function() {
  58. main.audioPlayer.doPlay();
  59. });
  60. navigator.mediaSession.setActionHandler('previoustrack', function() {
  61. main.audioPlayer.doPrevious();
  62. });
  63. navigator.mediaSession.setActionHandler('nexttrack', function() {
  64. main.audioPlayer.doNext();
  65. });
  66. },1000)
  67. })();

QingJ © 2025

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