Code for automating these websites, for convenience and for accessibility: BBC iPlayer - Home BBC Sounds - Music. Radio. Podcasts Code tested 2026-03-05.
Code: Select all
//get playback rate (default: 1.0):
document.querySelector('smp-toucan-player').playbackRate;
//set playback rate:
document.querySelector('smp-toucan-player').playbackRate = 1.5;
Code: Select all
//get elapsed time (seconds and fractions of seconds):
document.querySelector('smp-toucan-player').currentTime;
//get duration (seconds and fractions of seconds, read-only):
document.querySelector('smp-toucan-player').duration;
//rewind by 5 seconds:
document.querySelector('smp-toucan-player').currentTime -= 5;
//fast-forward by 5 seconds:
document.querySelector('smp-toucan-player').currentTime += 5;
//set elapsed time:
document.querySelector('smp-toucan-player').currentTime = 0;
Code: Select all
//get volume (minimum: 0.0, maximum: 1.0):
document.querySelector('smp-toucan-player').volume;
//set volume:
document.querySelector('smp-toucan-player').volume = 1.0;
//get mute state (boolean value, true/false):
document.querySelector('smp-toucan-player').muted;
//set mute to on:
document.querySelector('smp-toucan-player').muted = true;
//set mute to off:
document.querySelector('smp-toucan-player').muted = false;
//toggle mute on/off:
document.querySelector('smp-toucan-player').muted = !document.querySelector('smp-toucan-player').muted;
//toggle mute on/off (uses XOR assignment operator):
document.querySelector('smp-toucan-player').muted ^= 1;
Code: Select all
//get play/pause state (boolean value, true/false, read-only):
document.querySelector('smp-toucan-player').paused;
//pause the video:
document.querySelector('smp-toucan-player').pause();
//play/resume the video:
document.querySelector('smp-toucan-player').play();
//toggle play/pause:
if (document.querySelector('smp-toucan-player').paused)
document.querySelector('smp-toucan-player').play();
else
document.querySelector('smp-toucan-player').pause();
Code: Select all
//get the subtitles on/off state (boolean value, true/false):
document.querySelector('smp-toucan-player').subtitles.isOn;
//set the subtitles to on:
document.querySelector('smp-toucan-player').subtitles.on();
//set the subtitles to off:
document.querySelector('smp-toucan-player').subtitles.off();
//toggle subtitles on/off:
if (document.querySelector('smp-toucan-player').subtitles.isOn)
document.querySelector('smp-toucan-player').subtitles.off();
else
document.querySelector('smp-toucan-player').subtitles.on();
There are many terms for skip interval: E.g. seek amount, seek interval. E.g. skip duration, skip interval. Note: in BBC iPlayer, toggling the subtitles on/off will revert the intervals, back to the default values. Note: in BBC Sounds, the intervals will almost immediately revert.
Code: Select all
//one-liner to set both skip intervals to 5 seconds:
document.querySelector('smp-toucan-player').shadowRoot.querySelector('smp-video-layout').shadowRoot.querySelector('smp-core-controls').shadowRoot.querySelectorAll('smp-interval-button').forEach(o => o.interval = 5);
//get the skip intervals:
oBtns = document.querySelector('smp-toucan-player').shadowRoot.querySelector('smp-video-layout').shadowRoot.querySelector('smp-core-controls').shadowRoot.querySelectorAll('smp-interval-button');
vIvl1 = oBtns[0].interval;
vIvl2 = oBtns[1].interval;
//set the skip intervals:
oBtns = document.querySelector('smp-toucan-player').shadowRoot.querySelector('smp-video-layout').shadowRoot.querySelector('smp-core-controls').shadowRoot.querySelectorAll('smp-interval-button');
oBtns[0].interval = 5;
oBtns[1].interval = 5;
//note: for BBC Sounds, use 'smp-audio-layout' instead of 'smp-video-layout'
Code: Select all
//for a video (e.g. BBC iPlayer):
//get the autoplay on/off state (string value, 'true'/'false', setting the value doesn't update the autoplay state):
document.querySelector('smp-toucan-player').shadowRoot.querySelector('smp-video-layout').shadowRoot.querySelector('smp-secondary-controls').shadowRoot.querySelector('smp-playback-settings-panel').shadowRoot.querySelector('smp-autoplay-setting').shadowRoot.querySelector('smp-toggle').shadowRoot.querySelector('div').ariaChecked;
//for audio (e.g. BBC Sounds):
//get the autoplay on/off state:
document.querySelector('smp-toucan-player').shadowRoot.querySelector('smp-audio-layout').shadowRoot.querySelector('smp-secondary-controls').shadowRoot.querySelector('smp-playback-settings-panel').shadowRoot.querySelector('smp-autoplay-setting').shadowRoot.querySelector('smp-toggle').shadowRoot.querySelector('div').ariaChecked;
The smp-toucan-player object has available many of the standard media/video/audio element methods/properties. Links: HTMLMediaElement - Web APIs | MDN HTMLVideoElement - Web APIs | MDN HTMLAudioElement - Web APIs | MDN Use 'console.dir' in the console, to investigate the methods/properties for an object. E.g. console.dir(document.querySelector('smp-toucan-player').subtitles);