{"id":49223,"date":"2025-12-05T15:22:36","date_gmt":"2025-12-05T20:22:36","guid":{"rendered":"https:\/\/bitcoinmagazine.com\/?page_id=49223"},"modified":"2026-03-24T20:53:06","modified_gmt":"2026-03-25T01:53:06","slug":"video","status":"publish","type":"page","link":"https:\/\/bitcoinmagazine.com\/video","title":{"rendered":"Video"},"content":{"rendered":"<div id=\"tdi_1\" class=\"tdc-zone\"><div class=\"tdc_zone tdi_2  wpb_row td-pb-row\"  >\n<style scoped>\n\/* custom css - generated by TagDiv Composer *\/\n\n\/* custom css - generated by TagDiv Composer *\/\n.tdi_2{\r\n                    min-height: 0;\r\n                }\n<\/style><div id=\"tdi_3\" class=\"tdc-row\"><div class=\"vc_row tdi_4  wpb_row td-pb-row\" >\n<style scoped>\n\/* custom css - generated by TagDiv Composer *\/\n\n\/* custom css - generated by TagDiv Composer *\/\n.tdi_4,\r\n                .tdi_4 .tdc-columns{\r\n                    min-height: 0;\r\n                }.tdi_4,\r\n\t\t\t\t.tdi_4 .tdc-columns{\r\n\t\t\t\t    display: block;\r\n\t\t\t\t}.tdi_4 .tdc-columns{\r\n\t\t\t\t    width: 100%;\r\n\t\t\t\t}.tdi_4:before,\r\n\t\t\t\t.tdi_4:after{\r\n\t\t\t\t    display: table;\r\n\t\t\t\t}\n<\/style><div class=\"vc_column tdi_6  wpb_column vc_column_container tdc-column td-pb-span12\">\n<style scoped>\n\/* custom css - generated by TagDiv Composer *\/\n\n\/* custom css - generated by TagDiv Composer *\/\n.tdi_6{\r\n                    vertical-align: baseline;\r\n                }.tdi_6 > .wpb_wrapper,\r\n\t\t\t\t.tdi_6 > .wpb_wrapper > .tdc-elements{\r\n\t\t\t\t    display: block;\r\n\t\t\t\t}.tdi_6 > .wpb_wrapper > .tdc-elements{\r\n\t\t\t\t    width: 100%;\r\n\t\t\t\t}.tdi_6 > .wpb_wrapper > .vc_row_inner{\r\n\t\t\t\t    width: auto;\r\n\t\t\t\t}.tdi_6 > .wpb_wrapper{\r\n\t\t\t\t    width: auto;\r\n\t\t\t\t    height: auto;\r\n\t\t\t\t}\n<\/style><div class=\"wpb_wrapper\" ><div class=\"wpb_wrapper td_block_wrap vc_raw_html tdi_8 \"><div class=\"td-fix-index\"><div id=\"yt\" style=\"width:100%;background:#000;color:#fff;font-family:Roboto,Arial,sans-serif;padding:40px 15px 120px;min-height:100vh;\">\r\n\r\n  <!-- SEO Text \u2013 smaller on mobile -->\r\n  <div style=\"text-align:center;margin-bottom:30px;max-width:900px;margin-left:auto;margin-right:auto;\">\r\n    <h1 style=\"font-size:24px;font-weight:700;margin:0 0 20px;color:#fff;line-height:1.3;\">\r\n      Subscribe to the Bitcoin Magazine and Bitcoin Magazine Pro YouTube channels for nonstop Bitcoin news, expert market intel, and exclusive keynotes and panels from the world\u2019s largest Bitcoin conference.\r\n    <\/h1>\r\n  <\/div>\r\n\r\n  <!-- Subscribe Buttons -->\r\n  <div style=\"text-align:center;margin-bottom:70px;\">\r\n    <div style=\"display:flex;justify-content:center;gap:30px;flex-wrap:wrap;\">\r\n      <a href=\"https:\/\/www.youtube.com\/channel\/UCtOV5M-T3GcsJAq8QKaf0lg?sub_confirmation=1\" target=\"_blank\" class=\"sub-btn\" rel=\"noopener\">Subscribe to Bitcoin Magazine<\/a>\r\n      <a href=\"https:\/\/www.youtube.com\/channel\/UCWdRpsNKyoFeMROPT3KXygA?sub_confirmation=1\" target=\"_blank\" class=\"sub-btn\" rel=\"noopener\">Subscribe to Bitcoin Magazine Pro<\/a>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- Search -->\r\n  <div style=\"text-align:center;margin:0 auto 70px;max-width:600px;\">\r\n    <input type=\"text\" id=\"search\" placeholder=\"Search all videos...\"\r\n           style=\"width:100%;padding:18px 32px;font-size:18px;border-radius:50px;background:#111;border:none;outline:none;color:#fff;\">\r\n  <\/div>\r\n\r\n  <!-- Loading -->\r\n  <div id=\"loading\" style=\"text-align:center;padding:120px 0;font-size:22px;color:#888;\">Loading videos from both channels...<\/div>\r\n\r\n  <!-- Grid -->\r\n  <div id=\"grid\" style=\"display:grid;gap:26px;max-width:1600px;margin:0 auto;\"><\/div>\r\n\r\n  <!-- Bottom Message with Subscribe Buttons -->\r\n  <div style=\"text-align:center;margin:100px 0 60px;\">\r\n    <p style=\"font-size:20px;margin:0 0 30px;color:#fff;line-height:1.4;\">\r\n      To view our extensive full video archive and stay informed on future content, please subscribe to our YouTube Channels.\r\n    <\/p>\r\n    <div style=\"display:flex;justify-content:center;gap:30px;flex-wrap:wrap;\">\r\n      <a href=\"https:\/\/www.youtube.com\/channel\/UCtOV5M-T3GcsJAq8QKaf0lg?sub_confirmation=1\" target=\"_blank\" class=\"sub-btn\" rel=\"noopener\">Subscribe to Bitcoin Magazine<\/a>\r\n      <a href=\"https:\/\/www.youtube.com\/channel\/UCWdRpsNKyoFeMROPT3KXygA?sub_confirmation=1\" target=\"_blank\" class=\"sub-btn\" rel=\"noopener\">Subscribe to Bitcoin Magazine Pro<\/a>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<style>\r\n  body{background:#000!important}\r\n  #search::placeholder{color:#888;opacity:1}\r\n\r\n  \/* SEO text smaller on mobile *\/\r\n  h1 { font-size:20px; }\r\n  @media (max-width:768px) { h1 { font-size:14px; line-height:1.4; } }\r\n  @media (max-width:480px) { h1 { font-size:14px; } }\r\n\r\n  .sub-btn{\r\n    padding:18px 40px;background:#F86800;color:#fff;font-size:18px;font-weight:600;\r\n    border-radius:50px;text-decoration:none;box-shadow:0 12px 40px rgba(248,104,0,.7);\r\n    transition:all .3s;min-width:260px;\r\n  }\r\n  .sub-btn:hover{transform:translateY(-5px);box-shadow:0 20px 50px rgba(248,104,0,.9)}\r\n\r\n  #grid{grid-template-columns:repeat(4,1fr)}\r\n  @media(max-width:1200px){#grid{grid-template-columns:repeat(3,1fr)}}\r\n  @media(max-width:900px){#grid{grid-template-columns:repeat(2,1fr)}}\r\n  @media(max-width:640px){#grid{grid-template-columns:1fr}}\r\n\r\n  .card{background:#111;border-radius:20px;overflow:hidden;cursor:pointer;transition:.4s;box-shadow:0 4px 15px rgba(0,0,0,.3)}\r\n  .card:hover{transform:translateY(-16px);box-shadow:0 25px 60px rgba(248,104,0,.7)}\r\n  .card img{width:100%;display:block}\r\n  .card-content{padding:16px}\r\n  .title{font-weight:600;font-size:16.5px;line-height:1.35;color:#fff;margin-bottom:6px}\r\n  .meta{font-size:14px;color:#aaa}\r\n<\/style>\r\n\r\n<script>\r\nconst CHANNELS = [\"UCtOV5M-T3GcsJAq8QKaf0lg\",\"UCWdRpsNKyoFeMROPT3KXygA\"];\r\nconst API_KEY = \"AIzaSyD5f71jseELIUiD-YAq47kELWssy73MkXM\";\r\n\r\nlet allVideos = [];\r\nlet nextTokens = {};\r\n\r\nasync function getPlaylist(id){\r\n  const r = await fetch(`https:\/\/youtube.googleapis.com\/youtube\/v3\/channels?part=contentDetails&id=${id}&key=${API_KEY}`);\r\n  const d = await r.json();\r\n  return d.items[0].contentDetails.relatedPlaylists.uploads;\r\n}\r\n\r\nasync function loadVideos(playlistId, token=\"\"){\r\n  let url = `https:\/\/youtube.googleapis.com\/youtube\/v3\/playlistItems?part=snippet&maxResults=50&playlistId=${playlistId}&key=${API_KEY}`;\r\n  if(token) url += `&pageToken=${token}`;\r\n\r\n  const r = await fetch(url);\r\n  const j = await r.json();\r\n\r\n  j.items.forEach(i=>{\r\n    const v = i.snippet;\r\n    if(v.thumbnails?.medium){\r\n      allVideos.push({\r\n        id: v.resourceId.videoId,\r\n        title: v.title,\r\n        thumb: v.thumbnails.medium.url,\r\n        date: v.publishedAt,\r\n        channel: v.videoOwnerChannelTitle || \"Bitcoin Magazine\"\r\n      });\r\n    }\r\n  });\r\n\r\n  nextTokens[playlistId] = j.nextPageToken || null;\r\n}\r\n\r\nfunction render(videos=allVideos){\r\n  videos.sort((a,b)=>new Date(b.date)-new Date(a.date));\r\n  const seen=new Set();\r\n  videos=videos.filter(v=>!seen.has(v.id)&&seen.add(v.id));\r\n\r\n  const grid=document.getElementById(\"grid\");\r\n  grid.innerHTML=\"\";\r\n\r\n  videos.slice(0,40).forEach(v=>{\r\n    const c=document.createElement(\"div\");\r\n    c.className=\"card\";\r\n    c.innerHTML=`\r\n      <img decoding=\"async\" src=\"${v.thumb}\" loading=\"lazy\">\r\n      <div class=\"card-content\">\r\n        <div class=\"title\">${v.title}<\/div>\r\n        <div class=\"meta\">${timeAgo(v.date)} \u2022 ${v.channel}<\/div>\r\n      <\/div>`;\r\n    c.onclick=()=>play(v.id);\r\n    grid.appendChild(c);\r\n  });\r\n}\r\n\r\ndocument.getElementById(\"search\").addEventListener(\"input\",e=>{\r\n  const q=e.target.value.toLowerCase();\r\n  const f=allVideos.filter(v=>v.title.toLowerCase().includes(q));\r\n  render(f);\r\n});\r\n\r\nfunction play(id){\r\n  const o=document.createElement(\"div\");\r\n  o.style.cssText=\"position:fixed;inset:0;background:rgba(0,0,0,.96);display:flex;align-items:center;justify-content:center;z-index:99999;\";\r\n  o.innerHTML=`\r\n    <div style=\"position:relative;width:90%;max-width:1200px;\">\r\n      <iframe src=\"https:\/\/www.youtube.com\/embed\/${id}?autoplay=1&rel=0\" frameborder=\"0\" allowfullscreen style=\"width:100%;aspect-ratio:16\/9;\"><\/iframe>\r\n      <button onclick=\"this.parentElement.parentElement.remove()\" style=\"position:absolute;top:-65px;right:0;background:none;border:none;color:#fff;font-size:50px;cursor:pointer;\">\u00d7<\/button>\r\n    <\/div>`;\r\n  document.body.appendChild(o);\r\n}\r\n\r\nfunction timeAgo(d){\r\n  const s=Math.floor((Date.now()-new Date(d))\/1000);\r\n  if(s<3600)return Math.floor(s\/60)+\"m ago\";\r\n  if(s<86400)return Math.floor(s\/3600)+\"h ago\";\r\n  if(s<2592000)return Math.floor(s\/86400)+\"d ago\";\r\n  return Math.floor(s\/2592000)+\"mo ago\";\r\n}\r\n\r\n\/\/ START \u2013 Load both channels\r\n(async()=>{\r\n  const playlists = await Promise.all(CHANNELS.map(id=>getPlaylist(id)));\r\n  await Promise.all(playlists.map(id=>loadVideos(id)));\r\n  render();\r\n  document.getElementById(\"loading\").style.display=\"none\";\r\n})();\r\n<\/script><\/div><\/div><div class=\"td_block_wrap td_block_raw_css tdi_9 td-pb-border-top td_block_template_1\"  data-td-block-uid=\"tdi_9\" ><div id=tdi_9 class=\"td_block_inner td-fix-index\"><style>.td-crumb-container > .entry-crumbs,\n.td-page-title,\nspan.td-bred-no-url-last,\n.entry-crumbs {\n  display: none !important;\n}\n<\/style><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":5,"featured_media":41001,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"categories":[],"class_list":["post-49223","page","type-page","status-publish","has-post-thumbnail"],"_links":{"self":[{"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/pages\/49223","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/comments?post=49223"}],"version-history":[{"count":0,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/pages\/49223\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/media\/41001"}],"wp:attachment":[{"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/media?parent=49223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bitcoinmagazine.com\/wp-json\/wp\/v2\/categories?post=49223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}