Uni FM96.7 Player Updater

產生下載連結,修改 Flash Player 為 HTML5 內鍵撥放器

当前为 2016-07-07 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Uni FM96.7 Player Updater
  3. // @name:zh-TW FM96.7 環宇廣播電台線上收聽播放器調整
  4. // @namespace http://www.twsiyuan.com/
  5. // @version 0.3
  6. // @description:zh-TW 產生下載連結,修改 Flash Player 為 HTML5 內鍵撥放器
  7. // @author Siyuan
  8. // @match http://www.uni967.com/newweb/AOD2_no.php*
  9. // @match http://www.uni967.com/newweb/index.php*
  10. // @grant none
  11. // @require http://code.jquery.com/jquery-latest.js
  12. // @description 產生下載連結,修改 Flash Player 為 HTML5 內鍵撥放器
  13. // ==/UserScript==
  14.  
  15. $(document).ready(function() {
  16. if (window.location.pathname.toString().startsWith('/newweb/AOD2_no')) {
  17. doPlayer();
  18. } else {
  19. doTable();
  20. }
  21. });
  22.  
  23. var analysisCallback = function(embed, url, callback) {
  24. if (!embed) {
  25. return;
  26. }
  27. var flashvars = embed.attr("flashvars");
  28. if (!flashvars) {
  29. return;
  30. }
  31. // 音源位置
  32. var vars = /son=([^&]+)/.exec(flashvars);
  33. if (!vars){
  34. return;
  35. }
  36.  
  37. var audioUrl = vars[1];
  38.  
  39. // 節目資料網頁位置
  40. var ids = /ID=([0-9]+)$/.exec(url);
  41. if (!ids){
  42. return;
  43. }
  44. var id = ids[1];
  45. var dataUrl = "http://www.uni967.com/newweb/index.php?menu=2&page=2_1&ID=" + id;
  46.  
  47. $.get(dataUrl, function(data) {
  48. // 分析資料網頁,抓取節目名稱
  49. var title = $(data).find("span.news_title_blue").text();
  50.  
  51. callback(audioUrl, title);
  52. });
  53. };
  54.  
  55. var doPlayer = function() {
  56. var embed = $("embed");
  57. analysisCallback(embed, window.location.href, function(audioUrl, title) {
  58. // 產生下載連結
  59. var download = $('<a href="' + audioUrl + '" download="' + title + '">Download (' + title + ')</a>');
  60.  
  61. // 產生音源播放 (HTML5 標準)
  62. var paramSaveName = "ui967Volume";
  63. var volumeChanged = "if(typeof(Storage) !== 'undefined'){localStorage.setItem('" + paramSaveName + "', this.volume);}";
  64. var loadStart = "if(typeof(Storage) !== 'undefined'){this.volume=localStorage.getItem('" + paramSaveName + "');}";
  65.  
  66. var player = $('<audio controls autoplay src="' + audioUrl + '" onvolumechange="' + volumeChanged + '" onloadstart="' + loadStart + '" style="width:100%;">Your browser does not support the audio tag.</audio>');
  67. var parent = embed.parent();
  68. parent.append(player);
  69. parent.append(download);
  70.  
  71. embed.remove();
  72. });
  73. };
  74.  
  75. var doTable = function() {
  76. var links = $("a");
  77. links.each(function(){
  78. var link = $(this);
  79. var onclick = link.attr('onclick');
  80. if (onclick) {
  81. var arr = /window.open\('([^']+)'/.exec(onclick);
  82. if (arr) {
  83. var uri = arr[1];
  84. var dataUrl = "http://www.uni967.com/newweb/" + uri;
  85.  
  86. $.get(dataUrl, function(data) {
  87. var embed = /<embed(.+)<\/embed>/.exec(data);
  88. if (embed) {
  89. analysisCallback($(embed[0]), dataUrl, function(audioUrl, title) {
  90. var parent = link.parent();
  91. var download = $('<a href="' + audioUrl + '" download="' + title + '">下載</a>');
  92.  
  93. parent.append($('<br/>'));
  94. parent.append(download);
  95. });
  96. }
  97. });
  98. }
  99. }
  100. });
  101. };