Template:AudioPlayer: Difference between revisions

From Tuyin Archives
No edit summary
No edit summary
Tag: Manual revert
 
(14 intermediate revisions by the same user not shown)
Line 1: Line 1:
<html>
<includeonly>{{#tag:div|Loading audio player...|class=audioplayer|data-filename={{{1}}}|data-caption={{{2|Audio File}}}}}</includeonly>
<script>
(function(){
  var playerId = 'player_' + Math.random().toString(36).substr(2, 9);
  var audioFile = new Audio();
  audioFile.src = 'https://tuyin.online/images/{{{1}}}';
  audioFile.preload = 'metadata';
 
  function updateProgress() {
    var progress = document.getElementById(playerId + '_progress');
    if (progress && audioFile.duration) {
      progress.style.width = ((audioFile.currentTime / audioFile.duration) * 100) + '%';
    }
  }
 
  function resetPlayer() {
    document.getElementById(playerId + '_btn').innerHTML = '▶️';
    document.getElementById(playerId + '_progress').style.width = '0%';
  }
 
  document.addEventListener('DOMContentLoaded', function() {
    var button = document.getElementById(playerId + '_btn');
    button.addEventListener('click', function() {
      if (audioFile.paused || audioFile.ended) {
        audioFile.play().then(() => {
          button.innerHTML = '⏸️';
        }).catch((e) => {
          alert("Could not play audio: " + e.message);
        });
      } else {
        audioFile.pause();
        button.innerHTML = '▶️';
      }
    });
 
    audioFile.addEventListener('timeupdate', updateProgress);
    audioFile.addEventListener('ended', resetPlayer);
  });
 
  document.write(`
    <div style="display:inline-flex; align-items:center; gap:12px;">
      <div style="border:1px solid #8B7355; padding:8px; display:inline-block; border-radius:4px; background-color:#F5F0E8; width:200px;">
        <button id="${playerId}_btn" style="padding:4px 8px; margin-right:8px; font-size:12px; border:1px solid #8B7355; background:#D4C4A8; color:#5D4E37;">▶️</button>
        <div style="display:inline-block; width:120px; height:6px; background-color:#D4C4A8; border-radius:3px; vertical-align:middle;">
          <div id="${playerId}_progress" style="height:100%; background-color:#8B7355; border-radius:3px; width:0%; transition:width 0.1s;"></div>
        </div>
      </div>
      <span style="color:#8B7355; font-style:italic;">{{{2|Audio File}}}</span>
    </div>
  `);
})();
</script>
</html>

Latest revision as of 20:23, 23 July 2025