{"id":227,"date":"2026-05-28T17:04:02","date_gmt":"2026-05-28T17:04:02","guid":{"rendered":"https:\/\/officialmaddpropz.com\/?page_id=227"},"modified":"2026-06-10T08:53:08","modified_gmt":"2026-06-10T08:53:08","slug":"227-2","status":"publish","type":"page","link":"https:\/\/officialmaddpropz.com\/227-2\/","title":{"rendered":"Videos"},"content":{"rendered":"<div class=\"brz brz-root__container brz-reset-all brz-root__container-page\" >\n<section id=\"inmipfmhsVFZ_inmipfmhsVFZ\" class=\"brz-section brz-css-d-section brz-css-1dexjlj\">\n<div class=\"brz-section__content brz-section--boxed brz-css-d-sectionitem-bg brz-css-ruyi5s\" data-brz-custom-id=\"hIwnzNA0sza8\">\n<div class=\"brz-container brz-css-d-sectionitem-container brz-css-139dzcs\">\n<div id=\"\" class=\"brz-css-d-wrapper brz-css-1toyzk brz-wrapper\">\n<div class=\"brz-wp-shortcode brz-css-d-wpcustomshortcode brz-css-1iftjpc\" data-brz-custom-id=\"rIduQ_kYPfFJ\">\n<div>\n<p><meta charset=\"UTF-8\"><br \/>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><br \/>\n<title>MaddPropz \u2013 Official Channel<\/title><\/p>\n<style>\n*{box-sizing:border-box;margin:0;padding:0}\n:root{\n  --bg:#0f0f0f;\n  --surface:#1a1a1a;\n  --surface2:#242424;\n  --border:rgba(255,255,255,0.08);\n  --red:#ff0000;\n  --red2:#cc0000;\n  --accent:#ff3333;\n  --text:#f1f1f1;\n  --muted:#aaa;\n  --muted2:#666;\n  --font:'Roboto','Segoe UI',system-ui,sans-serif;\n}\nhtml,body{min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--font)}<\/p>\n<p>\/* \u2500\u2500\u2500 BANNER IMAGE AREA \u2500\u2500\u2500 *\/\n.banner-art{\n  width:100%;height:160px;\n  background:linear-gradient(135deg,#1a0000 0%,#0d0d0d 50%,#001500 100%);\n  position:relative;overflow:hidden;\n}\n.banner-art::after{\n  content:'';position:absolute;inset:0;\n  background:repeating-linear-gradient(\n    -55deg,transparent,transparent 60px,\n    rgba(255,0,0,0.04) 60px,rgba(255,0,0,0.04) 61px\n  );\n}\n@media(max-width:600px){.banner-art{height:100px}}<\/p>\n<p>\/* \u2500\u2500\u2500 CHANNEL HEADER \u2500\u2500\u2500 *\/\n.ch-header{\n  max-width:1280px;margin:0 auto;\n  padding:1rem 2rem 0;\n  display:flex;align-items:flex-start;gap:1.25rem;\n  position:relative;\n}\n.ch-avatar-wrap{\n  position:relative;margin-top:-36px;flex-shrink:0;\n}\n.ch-avatar{\n  width:80px;height:80px;border-radius:50%;\n  background:linear-gradient(135deg,#ff2222,#7a0000);\n  display:flex;align-items:center;justify-content:center;\n  font-size:24px;font-weight:800;color:#fff;\n  border:3px solid var(--bg);\n  overflow:hidden;\n}\n.ch-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:none}\n.ch-info{flex:1;padding-top:.25rem}\n.ch-name{font-size:1.5rem;font-weight:700;letter-spacing:-.5px;line-height:1}\n.ch-name em{color:var(--accent);font-style:normal}\n.ch-meta{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-top:.35rem;font-size:13px;color:var(--muted)}\n.sep{opacity:.3}\n.ch-desc-short{font-size:12.5px;color:var(--muted);margin-top:.4rem;max-width:500px;\n  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}\n.ch-actions{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding-top:.5rem}\n.btn-sub{\n  display:inline-flex;align-items:center;gap:6px;\n  background:#fff;color:#0f0f0f;\n  font-size:13px;font-weight:700;\n  padding:7px 16px;border-radius:20px;text-decoration:none;\n  transition:opacity .15s;border:none;cursor:pointer;\n}\n.btn-sub:hover{opacity:.85}\n.btn-sub svg{width:14px;height:14px;fill:currentColor}\n.btn-ghost{\n  display:inline-flex;align-items:center;gap:6px;\n  background:var(--surface2);color:var(--text);\n  font-size:13px;font-weight:600;\n  padding:7px 14px;border-radius:20px;text-decoration:none;\n  border:1px solid var(--border);transition:background .15s;cursor:pointer;\n}\n.btn-ghost:hover{background:var(--surface)}<\/p>\n<p>\/* \u2500\u2500\u2500 TABS \u2500\u2500\u2500 *\/\n.tabs-bar{\n  max-width:1280px;margin:.75rem auto 0;\n  padding:0 2rem;\n  border-bottom:1px solid var(--border);\n  display:flex;gap:0;overflow-x:auto;\n}\n.tabs-bar::-webkit-scrollbar{display:none}\n.tab-btn{\n  padding:.75rem 1rem;font-size:13.5px;font-weight:500;color:var(--muted);\n  cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;\n  transition:color .12s,border-color .12s;flex-shrink:0;\n}\n.tab-btn:hover{color:var(--text)}\n.tab-btn.active{color:var(--text);border-bottom-color:var(--text)}<\/p>\n<p>\/* \u2500\u2500\u2500 STATUS BAR \u2500\u2500\u2500 *\/\n.status-bar{\n  background:var(--surface);border-bottom:1px solid var(--border);\n  padding:.45rem 2rem;display:flex;align-items:center;\n  justify-content:space-between;gap:1rem;flex-wrap:wrap;\n}\n.status-left{display:flex;align-items:center;gap:.5rem;font-size:12px;color:var(--muted)}\n.live-dot{width:7px;height:7px;border-radius:50%;background:#22c55e;\n  box-shadow:0 0 5px #22c55e;animation:pulse 2s ease-in-out infinite;flex-shrink:0}\n@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}<\/p>\n<p>\/* \u2500\u2500\u2500 MAIN CONTENT \u2500\u2500\u2500 *\/\n.main{max-width:1280px;margin:0 auto;padding:1.5rem 2rem}<\/p>\n<p>\/* section label *\/\n.sec-label{font-size:16px;font-weight:700;margin-bottom:1rem;\n  display:flex;align-items:center;justify-content:space-between}\n.see-all{font-size:13px;font-weight:500;color:var(--muted);text-decoration:none;cursor:pointer}\n.see-all:hover{color:var(--text)}<\/p>\n<p>\/* \u2500\u2500\u2500 VIDEO GRID \u2500\u2500\u2500 *\/\n.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:1rem;margin-bottom:2.5rem}<\/p>\n<p>\/* video card *\/\n.vcard{cursor:pointer;border-radius:8px;overflow:hidden;\n  transition:transform .15s}\n.vcard:hover{transform:translateY(-2px)}\n.vcard.playing .thumb-wrap{border:2px solid var(--accent)}\n.thumb-wrap{position:relative;aspect-ratio:16\/9;background:#000;border-radius:8px;overflow:hidden}\n.thumb-wrap img{width:100%;height:100%;object-fit:cover;display:block;transition:opacity .2s}\n.thumb-wrap iframe{position:absolute;inset:0;width:100%;height:100%;border:none;z-index:2}\n.play-over{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;\n  background:rgba(0,0,0,0);transition:background .2s;z-index:1}\n.vcard:hover .play-over{background:rgba(0,0,0,.3)}\n.play-over svg{width:48px;height:48px;opacity:0;transition:opacity .2s}\n.vcard:hover .play-over svg{opacity:1}\n.dur-pill{position:absolute;bottom:6px;right:6px;z-index:3;\n  background:rgba(0,0,0,.85);color:#fff;font-size:10.5px;font-weight:600;\n  padding:1px 5px;border-radius:3px}\n.new-pill{position:absolute;top:7px;left:7px;z-index:3;\n  background:var(--red);color:#fff;font-size:9.5px;font-weight:800;\n  padding:2px 6px;border-radius:2px;letter-spacing:.5px;text-transform:uppercase}\n.short-pill{position:absolute;top:7px;left:7px;z-index:3;\n  background:#ff4500;color:#fff;font-size:9px;font-weight:800;\n  padding:2px 6px;border-radius:2px;letter-spacing:.5px;text-transform:uppercase}\n.vinfo{padding:.55rem .1rem}\n.vtitle{font-size:13.5px;font-weight:500;line-height:1.4;color:var(--text);\n  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\n.vmeta{font-size:12px;color:var(--muted);margin-top:.25rem}<\/p>\n<p>\/* \u2500\u2500\u2500 SHORTS GRID (portrait) \u2500\u2500\u2500 *\/\n.sgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem;margin-bottom:2.5rem}\n.scard{cursor:pointer;border-radius:10px;overflow:hidden;transition:transform .15s}\n.scard:hover{transform:scale(1.02)}\n.sthumb{position:relative;aspect-ratio:9\/16;background:#000;border-radius:10px;overflow:hidden}\n.sthumb img{width:100%;height:100%;object-fit:cover;display:block}\n.sthumb iframe{position:absolute;inset:0;width:100%;height:100%;border:none;z-index:2}\n.sthumb .play-over{background:rgba(0,0,0,0)}\n.scard:hover .play-over{background:rgba(0,0,0,.3)}\n.scard:hover .play-over svg{opacity:1}\n.stitle{font-size:12.5px;font-weight:500;color:var(--text);margin-top:.45rem;\n  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\n.smeta{font-size:11px;color:var(--muted);margin-top:.15rem}<\/p>\n<p>\/* \u2500\u2500\u2500 PLAYLISTS \u2500\u2500\u2500 *\/\n.plgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1.25rem;margin-bottom:2.5rem}\n.plcard{cursor:pointer;border-radius:8px;overflow:hidden;transition:transform .15s}\n.plcard:hover{transform:translateY(-2px)}\n.plthumb{position:relative;aspect-ratio:16\/9;background:var(--surface2);border-radius:8px;overflow:hidden}\n.plthumb img{width:100%;height:100%;object-fit:cover;display:block}\n.pl-count{\n  position:absolute;right:0;top:0;bottom:0;width:38%;\n  background:rgba(0,0,0,.75);display:flex;flex-direction:column;\n  align-items:center;justify-content:center;gap:4px;\n}\n.pl-count span{font-size:18px;font-weight:700;color:#fff}\n.pl-count small{font-size:10px;color:#ccc;text-transform:uppercase;letter-spacing:.5px}\n.plinfo{padding:.55rem .1rem}\n.pltitle{font-size:13.5px;font-weight:600;color:var(--text);margin-bottom:.2rem;\n  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\n.plmeta{font-size:12px;color:var(--muted)}<\/p>\n<p>\/* \u2500\u2500\u2500 POSTS (community) \u2500\u2500\u2500 *\/\n.posts-col{max-width:640px;margin-bottom:2rem}\n.post-card{\n  background:var(--surface);border:1px solid var(--border);\n  border-radius:10px;padding:1.1rem;margin-bottom:1rem;\n}\n.post-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.75rem}\n.post-avatar{width:36px;height:36px;border-radius:50%;overflow:hidden;flex-shrink:0}\n.post-avatar img{width:100%;height:100%;object-fit:cover}\n.post-avatar-fallback{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#ff2222,#7a0000);\n  display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:800;color:#fff;flex-shrink:0}\n.post-author{font-size:13.5px;font-weight:600}\n.post-date{font-size:12px;color:var(--muted);margin-top:1px}\n.post-text{font-size:14px;line-height:1.65;color:var(--text);white-space:pre-wrap;word-break:break-word}\n.post-img{margin-top:.75rem;border-radius:8px;overflow:hidden;max-height:320px}\n.post-img img{width:100%;object-fit:cover;display:block}\n.post-actions{display:flex;align-items:center;gap:1rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border)}\n.post-action{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--muted);cursor:pointer}\n.post-action:hover{color:var(--text)}\n.post-action svg{width:16px;height:16px;fill:currentColor}<\/p>\n<p>\/* \u2500\u2500\u2500 ABOUT TAB \u2500\u2500\u2500 *\/\n.about-grid{display:grid;grid-template-columns:1fr 280px;gap:2rem;max-width:860px}\n@media(max-width:700px){.about-grid{grid-template-columns:1fr}}\n.about-block{margin-bottom:1.5rem}\n.about-block h3{font-size:14px;font-weight:600;color:var(--muted);margin-bottom:.6rem;text-transform:uppercase;letter-spacing:.5px}\n.about-block p{font-size:14px;line-height:1.75;color:var(--text)}\n.stat-row{display:flex;flex-direction:column;gap:.6rem}\n.stat-item{display:flex;align-items:center;gap:.6rem;font-size:14px;color:var(--text)}\n.stat-item svg{width:18px;height:18px;fill:var(--muted);flex-shrink:0}\n.link-list{display:flex;flex-direction:column;gap:.5rem}\n.ext-link{display:flex;align-items:center;gap:.5rem;font-size:14px;color:#3ea6ff;text-decoration:none}\n.ext-link:hover{text-decoration:underline}<\/p>\n<p>\/* \u2500\u2500\u2500 SKELETONS \u2500\u2500\u2500 *\/\n.skel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:1rem;margin-bottom:2.5rem}\n.skel{border-radius:8px;overflow:hidden;animation:shimmer 1.5s ease-in-out infinite}\n.skel-thumb{aspect-ratio:16\/9;background:var(--surface2);border-radius:8px}\n.skel-body{padding:.55rem 0}\n.skel-line{height:11px;border-radius:3px;background:var(--surface2);margin-bottom:6px}\n.skel-line.s{width:60%}\n@keyframes shimmer{0%,100%{opacity:1}50%{opacity:.45}}<\/p>\n<p>\/* \u2500\u2500\u2500 EMPTY \/ ERROR \u2500\u2500\u2500 *\/\n.empty{text-align:center;padding:3rem 1rem;color:var(--muted);font-size:14px}\n.empty strong{display:block;font-size:16px;color:var(--muted2);margin-bottom:.4rem}<\/p>\n<p>\/* TOAST *\/\n.toast{\n  position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(80px);\n  background:var(--red);color:#fff;padding:10px 20px;border-radius:6px;\n  font-size:13px;font-weight:700;z-index:9999;white-space:nowrap;\n  box-shadow:0 4px 20px rgba(255,0,0,.4);transition:transform .35s cubic-bezier(.34,1.56,.64,1);pointer-events:none;\n}\n.toast.show{transform:translateX(-50%) translateY(0)}<\/p>\n<p>footer{border-top:1px solid var(--border);text-align:center;padding:1.25rem;font-size:11.5px;color:var(--muted2)}\nfooter a{color:var(--accent);text-decoration:none}<\/p>\n<p>@media(max-width:700px){\n  .ch-header{padding:1rem 1rem 0;flex-wrap:wrap}\n  .tabs-bar{padding:0 1rem}\n  .status-bar{padding:.45rem 1rem}\n  .main{padding:1.25rem 1rem}\n}\n<\/style>\n<p><!-- BANNER ART --><\/p>\n<div class=\"banner-art\" id=\"banner-art\"><\/div>\n<p><!-- CHANNEL HEADER --><\/p>\n<div class=\"ch-header\">\n<div class=\"ch-avatar-wrap\">\n<div class=\"ch-avatar\" id=\"ch-avatar\">\n      <img id=\"ch-avatar-img\" alt=\"MaddPropz\"><br \/>\n      <span id=\"ch-avatar-init\">MP<\/span>\n    <\/div>\n<\/p><\/div>\n<div style=\"flex:1\">\n<div class=\"ch-info\">\n<div class=\"ch-name\">Madd<em>Propz<\/em><\/div>\n<div class=\"ch-meta\">\n        <span>@maddpropz<\/span><br \/>\n        <span class=\"sep\">\u00b7<\/span><br \/>\n        <span id=\"ch-subs\">loading&#8230;<\/span><br \/>\n        <span class=\"sep\">\u00b7<\/span><br \/>\n        <span id=\"ch-vids\">\u2013<\/span><br \/>\n        <span class=\"sep\">\u00b7<\/span><br \/>\n        <span id=\"ch-views\">\u2013<\/span>\n      <\/div>\n<div class=\"ch-desc-short\" id=\"ch-desc-short\">Producer \u00b7 Composer \u00b7 Record Label Owner<\/div>\n<\/p><\/div>\n<div class=\"ch-actions\" style=\"margin-top:.65rem\">\n      <a class=\"btn-sub\" href=\"https:\/\/www.youtube.com\/@maddpropz?sub_confirmation=1\" target=\"_blank\" rel=\"noopener\"><br \/>\n        <svg viewBox=\"0 0 24 24\"><path d=\"M23.5 6.19a3.02 3.02 0 0 0-2.12-2.14C19.5 3.67 12 3.67 12 3.67s-7.5 0-9.38.38A3.02 3.02 0 0 0 .5 6.19C.12 8.09 0 10.17 0 12s.12 3.91.5 5.81a3.02 3.02 0 0 0 2.12 2.14C4.5 20.33 12 20.33 12 20.33s7.5 0 9.38-.38a3.02 3.02 0 0 0 2.12-2.14c.38-1.9.5-3.98.5-5.81s-.12-3.91-.5-5.81zm-13.88 9.38V8.43l6.28 3.57-6.28 3.57z\"><\/path><\/svg><br \/>\n        Subscribe<br \/>\n      <\/a><br \/>\n      <a class=\"btn-ghost\" href=\"https:\/\/www.youtube.com\/@maddpropz\" target=\"_blank\" rel=\"noopener\">View on YouTube<\/a>\n    <\/div>\n<\/p><\/div>\n<\/div>\n<p><!-- TABS --><\/p>\n<div class=\"tabs-bar\" id=\"tabs-bar\">\n<div class=\"tab-btn active\" onclick=\"switchTab('home',this)\">Home<\/div>\n<div class=\"tab-btn\" onclick=\"switchTab('videos',this)\">Videos<\/div>\n<div class=\"tab-btn\" onclick=\"switchTab('shorts',this)\">Shorts<\/div>\n<div class=\"tab-btn\" onclick=\"switchTab('live',this)\">Live<\/div>\n<div class=\"tab-btn\" onclick=\"switchTab('playlists',this)\">Playlists<\/div>\n<div class=\"tab-btn\" onclick=\"switchTab('posts',this)\">Posts<\/div>\n<div class=\"tab-btn\" onclick=\"switchTab('about',this)\">About<\/div>\n<\/div>\n<p><!-- STATUS BAR --><\/p>\n<div class=\"status-bar\">\n<div class=\"status-left\">\n<div class=\"live-dot\"><\/div>\n<p>    <span>Live data \u00b7 refreshes every 10 min \u00b7 updated <strong id=\"updated\">\u2013<\/strong><\/span>\n  <\/div>\n<p>  <span id=\"status-label\" style=\"font-size:12px;color:var(--muted)\"><\/span>\n<\/div>\n<p><!-- MAIN CONTENT --><\/p>\n<div class=\"main\" id=\"main-content\">\n<div id=\"tab-home\"><\/div>\n<div id=\"tab-videos\" style=\"display:none\"><\/div>\n<div id=\"tab-shorts\" style=\"display:none\"><\/div>\n<div id=\"tab-live\" style=\"display:none\"><\/div>\n<div id=\"tab-playlists\" style=\"display:none\"><\/div>\n<div id=\"tab-posts\" style=\"display:none\"><\/div>\n<div id=\"tab-about\" style=\"display:none\"><\/div>\n<\/div>\n<footer>MaddPropz \u00a9 2025 &nbsp;\u00b7&nbsp; <a href=\"https:\/\/www.youtube.com\/@maddpropz\" target=\"_blank\">YouTube Channel<\/a> &nbsp;\u00b7&nbsp; Feed auto-refreshes every 10 minutes<\/footer>\n<div class=\"toast\" id=\"toast\"><\/div>\n<p><script>\nconst API  = 'AIzaSyBVQOUE9b-JSqsmrxS_uqAgvx27ZDWeT8o';\nconst CID  = 'UCr8RL8ec87mAn-N85PPWMyA';\nconst YT   = 'https:\/\/www.googleapis.com\/youtube\/v3';\nconst TICK = 10 * 60 * 1000;<\/p>\n<p>let DATA = { videos:[], shorts:[], live:[], playlists:[], posts:[], channel:null };\nlet latestVid = null;\nlet currentTab = 'home';<\/p>\n<p>\/\/ \u2500\u2500 utils \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nconst $ = id => document.getElementById(id);\nfunction fmtN(n){\n  n=parseInt(n)||0;\n  if(n>=1e9)return(n\/1e9).toFixed(1)+'B';\n  if(n>=1e6)return(n\/1e6).toFixed(1)+'M';\n  if(n>=1e3)return(n\/1e3).toFixed(1)+'K';\n  return n.toLocaleString();\n}\nfunction ago(iso){\n  const s=Math.floor((Date.now()-new Date(iso))\/1000);\n  if(s<60)return'just now';\n  if(s<3600)return Math.floor(s\/60)+'m ago';\n  if(s<86400)return Math.floor(s\/3600)+'h ago';\n  if(s<2592000)return Math.floor(s\/86400)+'d ago';\n  if(s<31536000)return Math.floor(s\/2592000)+'mo ago';\n  return Math.floor(s\/31536000)+'y ago';\n}\nfunction dur(iso){\n  if(!iso)return'';\n  const m=iso.match(\/PT(?:(d+)H)?(?:(d+)M)?(?:(d+)S)?\/);\n  if(!m)return'';\n  const h=+m[1]||0,mn=+m[2]||0,s=+m[3]||0;\n  return h?`${h}:${String(mn).padStart(2,'0')}:${String(s).padStart(2,'0')}`:`${mn}:${String(s).padStart(2,'0')}`;\n}\nfunction isShort(d,w,h){\n  \/\/ < 3 min and portrait OR square\n  const secs=(+d[1]||0)*3600+(+d[2]||0)*60+(+d[3]||0);\n  return secs>0&&secs<=180;\n}\nfunction toast(msg,ms=4500){\n  const el=$('toast');el.textContent=msg;el.classList.add('show');\n  setTimeout(()=>el.classList.remove('show'),ms);\n}\nfunction playSvg(){\n  return`<svg viewBox=\"0 0 68 48\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><rect width=\"68\" height=\"48\" rx=\"14\" fill=\"rgba(0,0,0,.75)\"\/><path d=\"M26 16 50 24 26 32z\" fill=\"#fff\"\/><\/svg>`;\n}\nfunction ytSvg(){\n  return`<svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M23.5 6.19a3.02 3.02 0 0 0-2.12-2.14C19.5 3.67 12 3.67 12 3.67s-7.5 0-9.38.38A3.02 3.02 0 0 0 .5 6.19C.12 8.09 0 10.17 0 12s.12 3.91.5 5.81a3.02 3.02 0 0 0 2.12 2.14C4.5 20.33 12 20.33 12 20.33s7.5 0 9.38-.38a3.02 3.02 0 0 0 2.12-2.14c.38-1.9.5-3.98.5-5.81s-.12-3.91-.5-5.81zm-13.88 9.38V8.43l6.28 3.57-6.28 3.57z\"\/><\/svg>`;\n}\nfunction skeletons(n=8,portrait=false){\n  return`<\/p>\n<div class=\"skel-grid\" style=\"${portrait?'grid-template-columns:repeat(auto-fill,minmax(150px,1fr))':''}\">\n    ${Array(n).fill(0).map(()=>`<\/p>\n<div class=\"skel\">\n<div class=\"skel-thumb\" style=\"${portrait?'aspect-ratio:9\/16':''}\"><\/div>\n<div class=\"skel-body\">\n<div class=\"skel-line\"><\/div>\n<div class=\"skel-line s\"><\/div>\n<\/div><\/div>\n<p>`).join('')}\n  <\/p><\/div>\n<p>`;\n}<\/p>\n<p>\/\/ \u2500\u2500 play in card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction playVideo(id, wrapId){\n  const wrap = document.getElementById(wrapId);\n  if(!wrap||wrap.querySelector('iframe'))return;\n  const ifr=document.createElement('iframe');\n  ifr.src=`https:\/\/www.youtube.com\/embed\/${id}?autoplay=1&rel=0&modestbranding=1`;\n  ifr.allow='accelerometer;autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture;web-share';\n  ifr.allowFullscreen=true;\n  const img=wrap.querySelector('img'); if(img)img.style.opacity='0';\n  const po=wrap.querySelector('.play-over'); if(po)po.style.display='none';\n  wrap.appendChild(ifr);\n  const card=wrap.closest('.vcard,.scard,.plcard');\n  if(card)card.classList.add('playing');\n}<\/p>\n<p>\/\/ \u2500\u2500 API fetchers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nasync function api(path){\n  const r=await fetch(`${YT}\/${path}&key=${API}`);\n  const d=await r.json();\n  if(d.error)throw new Error(d.error.message);\n  return d;\n}<\/p>\n<p>async function fetchChannel(){\n  const d=await api(`channels?part=snippet,statistics,brandingSettings&id=${CID}`);\n  if(!d.items?.length)return null;\n  return d.items[0];\n}<\/p>\n<p>async function fetchAllSearch(type,extraParams=''){\n  let items=[],token='';\n  do{\n    const d=await api(`search?part=id,snippet&channelId=${CID}&maxResults=50&order=date&type=${type}${extraParams}${token?'&pageToken='+token:''}`);\n    if(d.items)items.push(...d.items);\n    token=d.nextPageToken||'';\n  }while(token);\n  return items;\n}<\/p>\n<p>async function enrichVideos(items){\n  const ids=items.map(v=>v.id?.videoId||v.id).filter(Boolean);\n  if(!ids.length)return{};\n  const details={};\n  for(let i=0;i<ids.length;i+=50){\n    const chunk=ids.slice(i,i+50).join(',');\n    const d=await api(`videos?part=statistics,contentDetails,liveStreamingDetails&#038;id=${chunk}`);\n    if(d.items)d.items.forEach(v=>details[v.id]={\n      views:v.statistics?.viewCount||'0',\n      likes:v.statistics?.likeCount||'0',\n      durRaw:v.contentDetails?.duration||'',\n      durParsed:dur(v.contentDetails?.duration||''),\n      isLive:!!v.liveStreamingDetails,\n      durMatch:v.contentDetails?.duration?.match(\/PT(?:(d+)H)?(?:(d+)M)?(?:(d+)S)?\/)||[]\n    });\n  }\n  return details;\n}<\/p>\n<p>async function fetchPlaylists(){\n  let items=[],token='';\n  do{\n    const d=await api(`playlists?part=snippet,contentDetails&channelId=${CID}&maxResults=50${token?'&pageToken='+token:''}`);\n    if(d.items)items.push(...d.items);\n    token=d.nextPageToken||'';\n  }while(token);\n  return items;\n}<\/p>\n<p>async function fetchCommunityPosts(){\n  \/\/ community posts via activities\n  try{\n    const d=await api(`activities?part=snippet,contentDetails&channelId=${CID}&maxResults=50`);\n    return(d.items||[]).filter(a=>a.snippet?.type==='bulletin'||a.snippet?.type==='channelItem');\n  }catch(e){return[]}\n}<\/p>\n<p>\/\/ \u2500\u2500 render helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction renderVideoCard(v,detail,badge=''){\n  const id=v.id?.videoId||v.id;\n  const sn=v.snippet||v;\n  const title=sn.title||'Untitled';\n  const pub=sn.publishedAt||'';\n  const thumb=sn.thumbnails?.high?.url||sn.thumbnails?.medium?.url||`https:\/\/i.ytimg.com\/vi\/${id}\/hqdefault.jpg`;\n  const views=detail?.views||'0';\n  const d=detail?.durParsed||'';\n  const wrapId=`tw-${id}-${Math.random().toString(36).slice(2,6)}`;\n  return`<\/p>\n<div class=\"vcard\" id=\"vc-${id}\">\n<div class=\"thumb-wrap\" id=\"${wrapId}\" onclick=\"playVideo('${id}','${wrapId}')\">\n        <img decoding=\"async\" src=\"${thumb}\" alt=\"${title.replace(\/\"\/g,'')}\" loading=\"lazy\"><\/p>\n<div class=\"play-over\">${playSvg()}<\/div>\n<p>        ${badge?`<span class=\"${badge==='new'?'new-pill':'short-pill'}\">${badge==='new'?'New':'Short'}<\/span>`:''}\n        ${d?`<span class=\"dur-pill\">${d}<\/span>`:''}\n      <\/div>\n<div class=\"vinfo\">\n<div class=\"vtitle\">${title}<\/div>\n<div class=\"vmeta\">${views!=='0'?fmtN(views)+' views \u00b7 ':''}${pub?ago(pub):''}<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>`;\n}<\/p>\n<p>function renderShortCard(v,detail){\n  const id=v.id?.videoId||v.id;\n  const sn=v.snippet||v;\n  const title=sn.title||'Untitled';\n  const pub=sn.publishedAt||'';\n  const thumb=sn.thumbnails?.high?.url||sn.thumbnails?.medium?.url||`https:\/\/i.ytimg.com\/vi\/${id}\/hqdefault.jpg`;\n  const views=detail?.views||'0';\n  const wrapId=`sw-${id}-${Math.random().toString(36).slice(2,6)}`;\n  return`<\/p>\n<div class=\"scard\">\n<div class=\"sthumb\" id=\"${wrapId}\" onclick=\"playVideo('${id}','${wrapId}')\">\n        <img decoding=\"async\" src=\"${thumb}\" alt=\"${title.replace(\/\"\/g,'')}\" loading=\"lazy\" style=\"object-position:center top\"><\/p>\n<div class=\"play-over\">${playSvg()}<\/div>\n<\/p><\/div>\n<div class=\"stitle\">${title}<\/div>\n<div class=\"smeta\">${views!=='0'?fmtN(views)+' views':''}${pub?' \u00b7 '+ago(pub):''}<\/div>\n<\/p><\/div>\n<p>`;\n}<\/p>\n<p>function renderPlaylistCard(pl){\n  const id=pl.id;\n  const sn=pl.snippet;\n  const count=pl.contentDetails?.itemCount||0;\n  const thumb=sn.thumbnails?.high?.url||sn.thumbnails?.medium?.url||sn.thumbnails?.default?.url||'';\n  const title=sn.title||'Playlist';\n  return`<\/p>\n<div class=\"plcard\" onclick=\"window.open('https:\/\/www.youtube.com\/playlist?list=${id}','_blank')\">\n<div class=\"plthumb\">\n        ${thumb?`<img decoding=\"async\" src=\"${thumb}\" alt=\"${title.replace(\/\"\/g,'')}\" loading=\"lazy\">`:'<\/p>\n<div style=\"width:100%;height:100%;background:var(--surface2)\"><\/div>\n<p>'}<\/p>\n<div class=\"pl-count\"><span>${count}<\/span><small>videos<\/small><\/div>\n<\/p><\/div>\n<div class=\"plinfo\">\n<div class=\"pltitle\">${title}<\/div>\n<div class=\"plmeta\">Playlist \u00b7 ${ago(sn.publishedAt||'')}<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>`;\n}<\/p>\n<p>function renderPostCard(post,chanImg){\n  const sn=post.snippet;\n  const text=(sn?.description||sn?.title||'').slice(0,500);\n  const pub=sn?.publishedAt||'';\n  return`<\/p>\n<div class=\"post-card\">\n<div class=\"post-head\">\n        ${chanImg\n          ?`<\/p>\n<div class=\"post-avatar\"><img decoding=\"async\" src=\"${chanImg}\" alt=\"MP\"><\/div>\n<p>`\n          :`<\/p>\n<div class=\"post-avatar-fallback\">MP<\/div>\n<p>`}<\/p>\n<div>\n<div class=\"post-author\">MaddPropz<\/div>\n<div class=\"post-date\">${pub?ago(pub):''}<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>      ${text?`<\/p>\n<div class=\"post-text\">${text}<\/div>\n<p>`:''}<\/p>\n<div class=\"post-actions\">\n<div class=\"post-action\">\n          <svg viewBox=\"0 0 24 24\"><path d=\"M1 21h4V9H1v12zm22-11c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.59 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-2z\"\/><\/svg>\n          Like\n        <\/div>\n<div class=\"post-action\">\n          <svg viewBox=\"0 0 24 24\"><path d=\"M21.99 4c0-1.1-.89-2-1.99-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h14l4 4-.01-18z\"\/><\/svg>\n          Comment\n        <\/div>\n<div class=\"post-action\" onclick=\"window.open('https:\/\/www.youtube.com\/@maddpropz\/community','_blank')\">\n          <svg viewBox=\"0 0 24 24\"><path d=\"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92 1.61 0 2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z\"\/><\/svg>\n          Share\n        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>`;\n}<\/p>\n<p>\/\/ \u2500\u2500 tab renderers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nfunction renderHome(){\n  const el=$('tab-home');\n  let html='';<\/p>\n<p>  \/\/ Latest video featured\n  if(DATA.videos.length){\n    const v=DATA.videos[0];\n    const id=v.id?.videoId||v.id;\n    const det=v._det||{};\n    const sn=v.snippet||v;\n    const thumb=sn.thumbnails?.high?.url||`https:\/\/i.ytimg.com\/vi\/${id}\/hqdefault.jpg`;\n    const wrapId='feat-wrap';\n    html+=`<\/p>\n<div style=\"margin-bottom:2rem\">\n<div class=\"sec-label\">Latest Upload<\/div>\n<div style=\"display:grid;grid-template-columns:1fr 300px;gap:1.25rem;align-items:start\">\n<div class=\"thumb-wrap\" id=\"${wrapId}\" onclick=\"playVideo('${id}','${wrapId}')\" style=\"border-radius:10px\">\n            <img decoding=\"async\" src=\"${thumb}\" alt=\"${(sn.title||'').replace(\/\"\/g,'')}\"><\/p>\n<div class=\"play-over\">${playSvg()}<\/div>\n<\/p><\/div>\n<div style=\"padding-top:.2rem\">\n<div style=\"font-size:16px;font-weight:700;line-height:1.4;margin-bottom:.4rem\">${sn.title||''}<\/div>\n<div style=\"font-size:12.5px;color:var(--muted);margin-bottom:.75rem\">${det.views?fmtN(det.views)+' views \u00b7 ':''}${sn.publishedAt?ago(sn.publishedAt):''}<\/div>\n<div style=\"font-size:13px;color:#999;line-height:1.65;display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:1rem\">${(sn.description||'').slice(0,300)||'Watch the latest from MaddPropz.'}<\/div>\n<p>            <a href=\"https:\/\/www.youtube.com\/watch?v=${id}\" target=\"_blank\" rel=\"noopener\"\n              style=\"display:inline-flex;align-items:center;gap:6px;background:var(--red);color:#fff;font-size:13px;font-weight:700;padding:7px 16px;border-radius:20px;text-decoration:none\">\n              ${ytSvg()} Watch on YouTube\n            <\/a>\n          <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>`;\n    \/\/ make responsive\n    html=html.replace('grid-template-columns:1fr 300px','grid-template-columns:1fr 300px');\n  }<\/p>\n<p>  \/\/ Recent videos row\n  if(DATA.videos.length>1){\n    const det={};DATA.videos.slice(1,7).forEach(v=>{det[v.id?.videoId||v.id]=v._det});\n    html+=`<\/p>\n<div class=\"sec-label\">Recent Videos <span class=\"see-all\" onclick=\"switchTabByName('videos')\">View all \u2192<\/span><\/div>\n<p>`;\n    html+=`<\/p>\n<div class=\"vgrid\">`;\n    DATA.videos.slice(1,7).forEach((v,i)=>{ html+=renderVideoCard(v,v._det,i===0?'':''); });\n    html+=`<\/div>\n<p>`;\n  }<\/p>\n<p>  \/\/ Shorts row\n  if(DATA.shorts.length){\n    html+=`<\/p>\n<div class=\"sec-label\">Shorts <span class=\"see-all\" onclick=\"switchTabByName('shorts')\">View all \u2192<\/span><\/div>\n<p>`;\n    html+=`<\/p>\n<div class=\"sgrid\">`;\n    DATA.shorts.slice(0,6).forEach(v=>{ html+=renderShortCard(v,v._det); });\n    html+=`<\/div>\n<p>`;\n  }<\/p>\n<p>  \/\/ Playlists row\n  if(DATA.playlists.length){\n    html+=`<\/p>\n<div class=\"sec-label\">Playlists <span class=\"see-all\" onclick=\"switchTabByName('playlists')\">View all \u2192<\/span><\/div>\n<p>`;\n    html+=`<\/p>\n<div class=\"plgrid\">`;\n    DATA.playlists.slice(0,4).forEach(pl=>{ html+=renderPlaylistCard(pl); });\n    html+=`<\/div>\n<p>`;\n  }<\/p>\n<p>  el.innerHTML=html||`<\/p>\n<div class=\"empty\"><strong>No content yet<\/strong>Check back soon.<\/div>\n<p>`;\n}<\/p>\n<p>function renderVideos(){\n  const el=$('tab-videos');\n  if(!DATA.videos.length){el.innerHTML=`<\/p>\n<div class=\"empty\"><strong>No videos found<\/strong><\/div>\n<p>`;return}\n  let html=`<\/p>\n<div class=\"sec-label\">${DATA.videos.length} Videos<\/div>\n<div class=\"vgrid\">`;\n  DATA.videos.forEach((v,i)=>{ html+=renderVideoCard(v,v._det,i===0?'new':''); });\n  html+=`<\/div>\n<p>`;\n  el.innerHTML=html;\n}<\/p>\n<p>function renderShorts(){\n  const el=$('tab-shorts');\n  if(!DATA.shorts.length){el.innerHTML=`<\/p>\n<div class=\"empty\"><strong>No Shorts found<\/strong>Shorts are videos under 3 minutes.<\/div>\n<p>`;return}\n  let html=`<\/p>\n<div class=\"sec-label\">${DATA.shorts.length} Shorts<\/div>\n<div class=\"sgrid\">`;\n  DATA.shorts.forEach(v=>{ html+=renderShortCard(v,v._det); });\n  html+=`<\/div>\n<p>`;\n  el.innerHTML=html;\n}<\/p>\n<p>function renderLive(){\n  const el=$('tab-live');\n  if(!DATA.live.length){el.innerHTML=`<\/p>\n<div class=\"empty\"><strong>No live streams found<\/strong><a href=\"https:\/\/www.youtube.com\/@maddpropz\/streams\" target=\"_blank\" style=\"color:var(--accent)\">Check on YouTube \u2192<\/a><\/div>\n<p>`;return}\n  let html=`<\/p>\n<div class=\"sec-label\">${DATA.live.length} Streams<\/div>\n<div class=\"vgrid\">`;\n  DATA.live.forEach(v=>{ html+=renderVideoCard(v,v._det,''); });\n  html+=`<\/div>\n<p>`;\n  el.innerHTML=html;\n}<\/p>\n<p>function renderPlaylists(){\n  const el=$('tab-playlists');\n  if(!DATA.playlists.length){el.innerHTML=`<\/p>\n<div class=\"empty\"><strong>No playlists found<\/strong><\/div>\n<p>`;return}\n  let html=`<\/p>\n<div class=\"sec-label\">${DATA.playlists.length} Playlists<\/div>\n<div class=\"plgrid\">`;\n  DATA.playlists.forEach(pl=>{ html+=renderPlaylistCard(pl); });\n  html+=`<\/div>\n<p>`;\n  el.innerHTML=html;\n}<\/p>\n<p>function renderPosts(){\n  const el=$('tab-posts');\n  const chanImg=DATA.channel?.snippet?.thumbnails?.default?.url||'';\n  if(!DATA.posts.length){\n    el.innerHTML=`<\/p>\n<div class=\"empty\"><strong>No community posts found<\/strong><a href=\"https:\/\/www.youtube.com\/@maddpropz\/community\" target=\"_blank\" style=\"color:var(--accent)\">View on YouTube \u2192<\/a><\/div>\n<p>`;\n    return;\n  }\n  let html=`<\/p>\n<div class=\"sec-label\">Community Posts<\/div>\n<div class=\"posts-col\">`;\n  DATA.posts.forEach(p=>{ html+=renderPostCard(p,chanImg); });\n  html+=`<\/div>\n<p>`;\n  el.innerHTML=html;\n}<\/p>\n<p>function renderAbout(){\n  const el=$('tab-about');\n  const ch=DATA.channel;\n  const sn=ch?.snippet||{};\n  const st=ch?.statistics||{};\n  const desc=sn.description||'Producer \u00b7 Composer \u00b7 Record Label Owner';\n  const joined=sn.publishedAt?new Date(sn.publishedAt).toLocaleDateString('en-US',{month:'long',year:'numeric'}):'';\n  el.innerHTML=`<\/p>\n<div class=\"about-grid\">\n<div>\n<div class=\"about-block\">\n<h3>Description<\/h3>\n<p>${desc.replace(\/n\/g,'<br \/>')}<\/p>\n<\/p><\/div>\n<div class=\"about-block\">\n<h3>Links<\/h3>\n<div class=\"link-list\">\n            <a class=\"ext-link\" href=\"https:\/\/officialmaddpropz.com\" target=\"_blank\" rel=\"noopener\">\ud83c\udf10 officialmaddpropz.com<\/a>\n            <a class=\"ext-link\" href=\"https:\/\/linktr.ee\/officialmaddpropz\" target=\"_blank\" rel=\"noopener\">\ud83d\udd17 linktr.ee\/officialmaddpropz<\/a>\n            <a class=\"ext-link\" href=\"https:\/\/fanlink.to\/officialmaddpropz\" target=\"_blank\" rel=\"noopener\">\ud83c\udfb5 fanlink.to\/officialmaddpropz<\/a>\n            <a class=\"ext-link\" href=\"https:\/\/www.paypal.me\/officialmaddpropz\" target=\"_blank\" rel=\"noopener\">\ud83d\udcb3 Donate via PayPal<\/a>\n          <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div>\n<div class=\"about-block\">\n<h3>Stats<\/h3>\n<div class=\"stat-row\">\n<div class=\"stat-item\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z\"\/><\/svg>\n              ${fmtN(st.subscriberCount||0)} subscribers\n            <\/div>\n<div class=\"stat-item\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M17 12h-5v5h5v-5zM16 1v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-1V1h-2zm3 18H5V8h14v11z\"\/><\/svg>\n              Joined ${joined}\n            <\/div>\n<div class=\"stat-item\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\/><\/svg>\n              ${fmtN(st.viewCount||0)} total views\n            <\/div>\n<div class=\"stat-item\">\n              <svg viewBox=\"0 0 24 24\"><path d=\"M18 4l2 4h-3l-2-4h-2l2 4h-3l-2-4H8l2 4H7L5 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4h-4z\"\/><\/svg>\n              ${fmtN(st.videoCount||0)} videos\n            <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>`;\n}<\/p>\n<p>\/\/ \u2500\u2500 tab switching \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nconst TAB_IDS=['home','videos','shorts','live','playlists','posts','about'];\nfunction switchTab(name, el){\n  document.querySelectorAll('.tab-btn').forEach(t=>t.classList.remove('active'));\n  if(el)el.classList.add('active');\n  TAB_IDS.forEach(id=>$('tab-'+id).style.display='none');\n  $('tab-'+name).style.display='block';\n  currentTab=name;\n  \/\/ render on demand\n  const renders={home:renderHome,videos:renderVideos,shorts:renderShorts,live:renderLive,playlists:renderPlaylists,posts:renderPosts,about:renderAbout};\n  if(renders[name])renders[name]();\n}\nfunction switchTabByName(name){\n  const btns=document.querySelectorAll('.tab-btn');\n  btns.forEach(b=>{ if(b.textContent.trim().toLowerCase()===name)switchTab(name,b); });\n}<\/p>\n<p>\/\/ \u2500\u2500 main loader \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nasync function loadAll(isRefresh=false){\n  \/\/ show skeletons on first load\n  if(!isRefresh){\n    $('tab-home').innerHTML=skeletons(6);\n  }<\/p>\n<p>  try{\n    \/\/ 1. channel info\n    const ch=await fetchChannel();\n    DATA.channel=ch;\n    if(ch){\n      const sn=ch.snippet, st=ch.statistics;\n      \/\/ avatar\n      const imgUrl=sn.thumbnails?.high?.url||sn.thumbnails?.medium?.url;\n      if(imgUrl){\n        const img=$('ch-avatar-img');\n        img.src=imgUrl; img.style.display='block';\n        $('ch-avatar-init').style.display='none';\n      }\n      $('ch-subs').textContent=fmtN(st.subscriberCount)+' subscribers';\n      $('ch-vids').textContent=fmtN(st.videoCount)+' videos';\n      $('ch-views').textContent=fmtN(st.viewCount)+' total views';\n      if(sn.description) $('ch-desc-short').textContent=sn.description.split('n')[0].slice(0,120);\n    }<\/p>\n<p>    \/\/ 2. fetch all videos (search returns max 500 via pagination)\n    const rawVideos=await fetchAllSearch('video');<\/p>\n<p>    \/\/ 3. enrich with stats + duration\n    const details=await enrichVideos(rawVideos);<\/p>\n<p>    \/\/ 4. split videos vs shorts (shorts = \u2264180s)\n    const videos=[], shorts=[];\n    rawVideos.forEach(v=>{\n      const id=v.id?.videoId;\n      const det=details[id]||{};\n      v._det=det;\n      const dm=det.durMatch||[];\n      const secs=(+dm[1]||0)*3600+(+dm[2]||0)*60+(+dm[3]||0);\n      if(secs>0&&secs<=180) shorts.push(v);\n      else videos.push(v);\n    });\n\n    \/\/ 5. live streams separate search\n    const rawLive=await fetchAllSearch('video','&#038;eventType=completed');\n    rawLive.forEach(v=>{v._det=details[v.id?.videoId]||{}});<\/p>\n<p>    \/\/ 6. playlists\n    const playlists=await fetchPlaylists();<\/p>\n<p>    \/\/ 7. community posts\n    const posts=await fetchCommunityPosts();<\/p>\n<p>    \/\/ new video detection\n    const newLatest=videos[0]?.id?.videoId;\n    if(isRefresh&&latestVid&&newLatest&&newLatest!==latestVid){\n      toast(' New video uploaded \u2014 feed refreshed!');\n    }\n    latestVid=newLatest||latestVid;<\/p>\n<p>    DATA.videos=videos;\n    DATA.shorts=shorts;\n    DATA.live=rawLive;\n    DATA.playlists=playlists;\n    DATA.posts=posts;<\/p>\n<p>    \/\/ update status\n    $('updated').textContent=new Date().toLocaleTimeString([],{hour:'2-digit',minute:'2-digit'});\n    $('status-label').textContent=`${videos.length} videos \u00b7 ${shorts.length} shorts \u00b7 ${playlists.length} playlists`;<\/p>\n<p>    \/\/ re-render current tab\n    const renders={home:renderHome,videos:renderVideos,shorts:renderShorts,live:renderLive,playlists:renderPlaylists,posts:renderPosts,about:renderAbout};\n    if(renders[currentTab])renders[currentTab]();<\/p>\n<p>  }catch(e){\n    console.error(e);\n    $('tab-'+currentTab).innerHTML=`<\/p>\n<div class=\"empty\">\n        <strong>Failed to load<\/strong>\n        ${e.message} \u2014 <a href=\"https:\/\/www.youtube.com\/@maddpropz\" target=\"_blank\" style=\"color:var(--accent)\">Visit channel directly \u2192<\/a>\n      <\/div>\n<p>`;\n  }\n}<\/p>\n<p>\/\/ go\nloadAll();\nsetInterval(()=>loadAll(true),TICK);\n<\/script><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section id=\"egry_GvMMVub_egry_GvMMVub\" class=\"brz-section brz-css-d-section brz-css-v96tpv\">\n<div class=\"brz-section__content brz-section--boxed brz-css-d-sectionitem-bg brz-css-26stjl\" data-brz-custom-id=\"wqkBzGb5XRlG\">\n<div class=\"brz-container brz-css-d-sectionitem-container brz-css-1oaw4kc\"><\/div>\n<\/div>\n<\/section>\n<section id=\"tIHczrVt17K9_tIHczrVt17K9\" class=\"brz-section brz-css-d-section brz-css-1rbdhr5\">\n<div class=\"brz-section__content brz-section--boxed brz-css-d-sectionitem-bg brz-css-1cbl5yi\" data-brz-custom-id=\"d8Wtx8aoCXig\">\n<div class=\"brz-container brz-css-d-sectionitem-container brz-css-1tkde3r\"><\/div>\n<\/div>\n<\/section><\/div>\n<p><!-- version:1781081588 --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>MaddPropz \u2013 Official Channel MP MaddPropz @maddpropz \u00b7 loading&#8230; \u00b7 \u2013 \u00b7 \u2013 Producer \u00b7 Composer \u00b7 Record Label Owner Subscribe View on YouTube Home Videos Shorts Live Playlists Posts About Live data \u00b7 refreshes every 10 min \u00b7 updated \u2013 MaddPropz \u00a9 2025 &nbsp;\u00b7&nbsp; YouTube Channel &nbsp;\u00b7&nbsp; Feed auto-refreshes every 10 minutes<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"brizy-blank-template.php","meta":{"footnotes":""},"class_list":["post-227","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"brizy_media":[],"_links":{"self":[{"href":"https:\/\/officialmaddpropz.com\/wp-json\/wp\/v2\/pages\/227","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/officialmaddpropz.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/officialmaddpropz.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/officialmaddpropz.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/officialmaddpropz.com\/wp-json\/wp\/v2\/comments?post=227"}],"version-history":[{"count":5,"href":"https:\/\/officialmaddpropz.com\/wp-json\/wp\/v2\/pages\/227\/revisions"}],"predecessor-version":[{"id":1056,"href":"https:\/\/officialmaddpropz.com\/wp-json\/wp\/v2\/pages\/227\/revisions\/1056"}],"wp:attachment":[{"href":"https:\/\/officialmaddpropz.com\/wp-json\/wp\/v2\/media?parent=227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}