<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Videos on Rhys&#39; website</title>
    <link>/vids/</link>
    <description>Recent content in Videos on Rhys&#39; website</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-gb</language>
    <lastBuildDate>Sun, 15 Feb 2026 20:15:00 +0000</lastBuildDate>
    <atom:link href="/vids/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <!--allowedUsers:["rhys","connor","william"]-->
      <title>The Big Apple Trip 2025</title>
      <link>/vids/the-big-apple-trip-2025/</link>
      <pubDate>Sun, 15 Feb 2026 20:15:00 +0000</pubDate>
      <guid>/vids/the-big-apple-trip-2025/</guid>
      <description>&lt;p&gt;A long weekend in the &amp;ldquo;big apple&amp;rdquo;.&lt;/p&gt;







&lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdn.plyr.io/3.7.8/plyr.css&#34; /&gt;

&lt;video id=&#34;video-the-south-trip-2025&#34; playsinline controls&gt;&lt;/video&gt;

&lt;script src=&#34;https://cdn.plyr.io/3.7.8/plyr.polyfilled.js&#34; onerror=&#34;console.error(&#39;Failed to load Plyr&#39;)&#34;&gt;&lt;/script&gt;

&lt;script&gt;
  (function() {
    const video = document.querySelector(&#39;#video-the-south-trip-2025&#39;);
    if (!video) return;

    const baseURL = &#39;\/api\/video\/the-south-trip-2025&#39;;

    if (video.canPlayType(&#39;application/vnd.apple.mpegurl&#39;)) {
      video.src = baseURL + &#39;/manifest-cbcs.m3u8&#39;;
      const player = new Plyr(video, {
        fullscreen: { iosNative: true },
        previewThumbnails: {
          enabled: true,
          src: baseURL + &#39;/thumbnails.vtt&#39;,
        },
      });
    } else {
      const script = document.createElement(&#39;script&#39;);
      script.src = &#39;https://cdn.jsdelivr.net/npm/hls.js@latest&#39;;
      script.onload = () =&gt; {
        const hls = new Hls();
        hls.loadSource(baseURL + &#39;/manifest.m3u8&#39;);
        hls.attachMedia(video);
        window.hls = hls;

        hls.on(Hls.Events.MANIFEST_PARSED, function() {
          const availableQualities = [0, ...hls.levels.map((l) =&gt; l.height).sort((a, b) =&gt; b - a)];
          const player = new Plyr(video, {
            fullscreen: { iosNative: true },
            previewThumbnails: {
              enabled: true,
              src: baseURL + &#39;/thumbnails.vtt&#39;,
            },
            quality: {
              default: 0,
              options: availableQualities,
              forced: true,
              onChange: (newQuality) =&gt; {
                if (newQuality === 0) {
                  window.hls.currentLevel = -1;
                } else {
                  window.hls.levels.forEach((level, levelIndex) =&gt; {
                    if (level.height === newQuality) {
                      window.hls.currentLevel = levelIndex;
                    }
                  });
                }
              },
            },
            i18n: {
              qualityLabel: { 0: &#39;Auto&#39; },
            },
          });
        });
      };
      document.head.appendChild(script);
    }
  })();
&lt;/script&gt;

&lt;p&gt;&lt;em&gt;Canterbury, Dover, Margate, and Brogdale  (10th-12th October 2025)&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <!--allowedUsers:[]-->
      <title>Bristol with Music</title>
      <link>/vids/bristol-with-music/</link>
      <pubDate>Wed, 11 Feb 2026 23:00:00 +0000</pubDate>
      <guid>/vids/bristol-with-music/</guid>
      <description>&lt;p&gt;Here is a video from Bristol.&lt;/p&gt;







&lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdn.plyr.io/3.7.8/plyr.css&#34; /&gt;

&lt;video id=&#34;video-bristol-with-music&#34; playsinline controls&gt;&lt;/video&gt;

&lt;script src=&#34;https://cdn.plyr.io/3.7.8/plyr.polyfilled.js&#34; onerror=&#34;console.error(&#39;Failed to load Plyr&#39;)&#34;&gt;&lt;/script&gt;

&lt;script&gt;
  (function() {
    const video = document.querySelector(&#39;#video-bristol-with-music&#39;);
    if (!video) return;

    const baseURL = &#39;\/api\/video\/Bristol%20with%20music&#39;;

    if (video.canPlayType(&#39;application/vnd.apple.mpegurl&#39;)) {
      video.src = baseURL + &#39;/manifest-cbcs.m3u8&#39;;
      const player = new Plyr(video, {
        fullscreen: { iosNative: true },
        previewThumbnails: {
          enabled: true,
          src: baseURL + &#39;/thumbnails.vtt&#39;,
        },
      });
    } else {
      const script = document.createElement(&#39;script&#39;);
      script.src = &#39;https://cdn.jsdelivr.net/npm/hls.js@latest&#39;;
      script.onload = () =&gt; {
        const hls = new Hls();
        hls.loadSource(baseURL + &#39;/manifest.m3u8&#39;);
        hls.attachMedia(video);
        window.hls = hls;

        hls.on(Hls.Events.MANIFEST_PARSED, function() {
          const availableQualities = [0, ...hls.levels.map((l) =&gt; l.height).sort((a, b) =&gt; b - a)];
          const player = new Plyr(video, {
            fullscreen: { iosNative: true },
            previewThumbnails: {
              enabled: true,
              src: baseURL + &#39;/thumbnails.vtt&#39;,
            },
            quality: {
              default: 0,
              options: availableQualities,
              forced: true,
              onChange: (newQuality) =&gt; {
                if (newQuality === 0) {
                  window.hls.currentLevel = -1;
                } else {
                  window.hls.levels.forEach((level, levelIndex) =&gt; {
                    if (level.height === newQuality) {
                      window.hls.currentLevel = levelIndex;
                    }
                  });
                }
              },
            },
            i18n: {
              qualityLabel: { 0: &#39;Auto&#39; },
            },
          });
        });
      };
      document.head.appendChild(script);
    }
  })();
&lt;/script&gt;</description>
    </item>
    <item>
      <!--allowedUsers:["rhys","connor"]-->
      <title>Wales Trip 2023</title>
      <link>/vids/wales-trip-2023/</link>
      <pubDate>Tue, 15 Aug 2023 12:00:00 +0000</pubDate>
      <guid>/vids/wales-trip-2023/</guid>
      <description>&lt;h1 id=&#34;wales-trip-with-connor-2023&#34;&gt;Wales trip with Connor 2023&lt;/h1&gt;







&lt;link rel=&#34;stylesheet&#34; href=&#34;https://cdn.plyr.io/3.7.8/plyr.css&#34; /&gt;

&lt;video id=&#34;video-wales-trip-2023-connor-export&#34; playsinline controls&gt;&lt;/video&gt;

&lt;script src=&#34;https://cdn.plyr.io/3.7.8/plyr.polyfilled.js&#34; onerror=&#34;console.error(&#39;Failed to load Plyr&#39;)&#34;&gt;&lt;/script&gt;

&lt;script&gt;
  (function() {
    const video = document.querySelector(&#39;#video-wales-trip-2023-connor-export&#39;);
    if (!video) return;

    const baseURL = &#39;\/api\/video\/wales-trip-2023-connor-export&#39;;

    if (video.canPlayType(&#39;application/vnd.apple.mpegurl&#39;)) {
      video.src = baseURL + &#39;/manifest-cbcs.m3u8&#39;;
      const player = new Plyr(video, {
        fullscreen: { iosNative: true },
        previewThumbnails: {
          enabled: true,
          src: baseURL + &#39;/thumbnails.vtt&#39;,
        },
      });
    } else {
      const script = document.createElement(&#39;script&#39;);
      script.src = &#39;https://cdn.jsdelivr.net/npm/hls.js@latest&#39;;
      script.onload = () =&gt; {
        const hls = new Hls();
        hls.loadSource(baseURL + &#39;/manifest.m3u8&#39;);
        hls.attachMedia(video);
        window.hls = hls;

        hls.on(Hls.Events.MANIFEST_PARSED, function() {
          const availableQualities = [0, ...hls.levels.map((l) =&gt; l.height).sort((a, b) =&gt; b - a)];
          const player = new Plyr(video, {
            fullscreen: { iosNative: true },
            previewThumbnails: {
              enabled: true,
              src: baseURL + &#39;/thumbnails.vtt&#39;,
            },
            quality: {
              default: 0,
              options: availableQualities,
              forced: true,
              onChange: (newQuality) =&gt; {
                if (newQuality === 0) {
                  window.hls.currentLevel = -1;
                } else {
                  window.hls.levels.forEach((level, levelIndex) =&gt; {
                    if (level.height === newQuality) {
                      window.hls.currentLevel = levelIndex;
                    }
                  });
                }
              },
            },
            i18n: {
              qualityLabel: { 0: &#39;Auto&#39; },
            },
          });
        });
      };
      document.head.appendChild(script);
    }
  })();
&lt;/script&gt;

&lt;p&gt;&lt;em&gt;Cardiff, Neath Port Talbot, Swansea, Snowdonia, and Anglesey (14th-18th August 2023)&lt;/em&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
