Home

Watch Hearts2Hearts originals, variety shows, behind-the-scenes, guest appearances, performances, and more, all in one place.

(function () { function initHeartsflix() { const app = document.getElementById("hf-app"); if (!app || app.dataset.hfInitialized === "true") return; app.dataset.hfInitialized = "true"; const mobileDock = app.querySelector(".home-mobile-dock"); const dockLinks = app.querySelectorAll(".home-dock-link"); const desktopLinks = app.querySelectorAll(".home-nav-link"); const mobileHeading = app.querySelector(".home-mobile-heading"); function setActiveNavigation(section) { dockLinks.forEach(function (link) { const active = link.dataset.section === section; link.classList.toggle("home-dock-active", active); if (active) { link.setAttribute("aria-current", "page"); } else { link.removeAttribute("aria-current"); } }); desktopLinks.forEach(function (link) { const href = link.getAttribute("href"); const active = href === "#" + section; link.classList.toggle("home-active", active); }); const activeLink = app.querySelector(".home-dock-link.home-dock-active"); const activeLabel = activeLink?.querySelector("span"); if (mobileHeading && activeLabel) { mobileHeading.textContent = activeLabel.textContent; } } dockLinks.forEach(function (link) { link.addEventListener("click", function () { setActiveNavigation(link.dataset.section); }); }); desktopLinks.forEach(function (link) { link.addEventListener("click", function () { const section = link.getAttribute("href").slice(1); setActiveNavigation(section); }); }); function updateFromHash() { const section = window.location.hash.replace("#", "") || "home"; const validSections = [ "home", "h2h", "members", "discography", "about" ]; if (validSections.includes(section)) { setActiveNavigation(section); } } window.addEventListener("hashchange", updateFromHash); updateFromHash(); function findHeartsflixFooter() { const candidates = Array.from( document.querySelectorAll( "footer, [id*='footer'], [class*='footer']" ) ); return candidates.find(function (element) { return /LAST UPDATED|HEARTSFLIX/i.test(element.innerText || ""); }) || null; } let footerObserver = null; function setupFooterObserver() { if (!mobileDock) return; if (footerObserver) { footerObserver.disconnect(); footerObserver = null; } const footer = findHeartsflixFooter(); if (!footer) { mobileDock.classList.remove("home-dock-at-footer"); return; } footerObserver = new IntersectionObserver( function (entries) { entries.forEach(function (entry) { mobileDock.classList.toggle( "home-dock-at-footer", entry.isIntersecting ); }); }, { root: null, threshold: 0.05 } ); footerObserver.observe(footer); } setupFooterObserver(); window.addEventListener("load", setupFooterObserver); window.addEventListener("resize", setupFooterObserver); } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", initHeartsflix); } else { initHeartsflix(); } window.addEventListener("load", initHeartsflix); })();

Watch by Era

(This section is still being reviewed for missing content, and additional entries may be added.)

Hearts2Hearts Originals

Hearts Chase
Dul, Set, Hatuha
Crunchy Hearts
S2cret Diary
Production BH2ND
Daily BH2ND
Vlogs
Chat Hearts2Hearts
Chat Hearts2Hearts Behind
Introducing Hearts2Hearts Plushies
The Devil Wears Hearts2Hearts
The Clean Girls' Night in LA
Gal to Gal 1
Gal to Gal 2
Random Hot Pot Challenge
GossipGirl
HeartsPod

Variety

Solo Third Party Variety Show
Guest Third Party Variety Show
Interviews and Radio
Amazing Saturday
Men On A Mission
ISAC 2025

Performances

Music Award and Festival Performances
Dance Practice
Studio Choom
M2 Productions
The First Take
On The Spot
Chase Our Hearts

Music Show

Iconic Heart (Korean Ver.)
15-Love
Lemon Tang
Rude!
Focus
Pretty Please
Style
The Chase

Miscellaneous

Music Videos
Weverse Live
Trailer and Mood Sampler
Cheering Guide
(function () { const btn = document.getElementById("scroll-to-top"); if (!btn) return; function updateScrollButton() { btn.style.display = (window.scrollY || document.documentElement.scrollTop) > 200 ? "block" : "none"; } window.addEventListener("scroll", updateScrollButton, { passive: true }); window.addEventListener("load", updateScrollButton); updateScrollButton(); })();

Iconic Heart Era

⏷ Iconic Heart Era
(function () { const root = document.getElementById("iconicheartera-container"); if (!root || root.dataset.initialized === "true") return; root.dataset.initialized = "true"; const iconichearteraVideos = [ { id: "4ThjbpbYe9c", title: "Hearts2Hearts 하츠투하츠 'ICONIC HEART'", duration: "" }, { id: "MjTUDOI8yxg", title: "Hearts2Hearts 하츠투하츠 'ICONIC HEART' Mood Sampler : What are ICONIC Girls made of?", duration: "" }, { id: "kC0SA9Vkdos", title: "Hearts2Hearts 하츠투하츠 'ICONIC HEART' MV Teaser", duration: "" }, { id: "chl0R8C4NJ8", title: "Hearts2Hearts 하츠투하츠 'ICONIC HEART' MV", duration: "" }, { id: "An0vA4ZLqkk", title: "Hearts2Hearts 하츠투하츠 'ICONIC HEART' Dance Practice", duration: "" }, { id: "_oV_9qLgmi8", title: "Hearts2Hearts 하츠투하츠 'ICONIC HEART' Dance Practice BH2ND", duration: "" }, { id: "yrKHe5t7c8Q", title: "저희는 키라키라 아이돌!⋆. 𐙚 ˚ | Hearts2Hearts 하츠투하츠 ’ICONIC HEART’ MV BH2ND #1", duration: "" }, { id: "n0rkfW0-IXQ", title: "Hearts2Hearts 하츠투하츠 ‘ICONIC HEART’ Recording BH2ND", duration: "" }, { id: "UWI9YhI1ur0", title: "제가 칠 수 있는 유일한 곡은요! ♬.。.:*☆ | Hearts2Hearts 하츠투하츠 ’ICONIC HEART’ MV BH2ND #2", duration: "" }, { id: "hSxqtG7BUfE", title: "마음이 얼어붙는 프로즌 허니를 마셔볼까? #JIWOO #지우 #Hearts2Hearts #ICONICHEART", duration: "" }, { id: "ggCdLi8EmE4", title: "한여름 맛 선셋 펀치를 마셔볼까? #CARMEN #카르멘 #Hearts2Hearts #ICONICHEART", duration: "" }, { id: "RX6Izm5kOzY", title: "영애님의 피치 시럽을 마셔볼까? #YUHA #유하 #Hearts2Hearts #ICONICHEART", duration: "" }, { id: "X6SUMKix5pM", title: "반짝반짝 민트 티를 마셔볼까? #STELLA #스텔라 #Hearts2Hearts #ICONICHEART", duration: "" }, { id: "eT8uiCVM3vQ", title: "외계 통신의 베리 소다를 마셔볼까? #JUUN #주은 #Hearts2Hearts #ICONICHEART", duration: "" }, { id: "CVHsF7nGYx0", title: "비주얼 낭비 핫소스를 마셔볼까? #A_NA #에이나 #Hearts2Hearts #ICONICHEART", duration: "" }, { id: "q_X3LvrmSQs", title: "땅콩요정 하바네로 드롭을 마셔볼까? #IAN #이안 #Hearts2Hearts #ICONICHEART", duration: "" }, { id: "8b7h2hhbwlQ", title: "뽀짝뽀짝 허브 릴렉서를 마셔볼까? #YE_ON #예온 #Hearts2Hearts #ICONICHEART", duration: "" }, { id: "e3s9Ky_w_4Y", title: "내 동생 삼고 싶은 하츠투하츠 지우&에이나🐰🐵 | 따라해볼레이 EP.95", duration: "" }, { id: "nZ0M4271nIM", title: "저희 너무 귀엽게 나오는 것 같아요♥︎ (??? : 우리잖아ㅎㅋ) | Hearts2Hearts 하츠투하츠 ’ICONIC HEART!’ Jacket BH2ND", duration: "" }, { id: "FQmWuyL3vSk", title: "이안이를 보면 약간 엄마의 마음이 생겨(ᵔ ᵕ ᵔ)𑣲 | Hearts2Hearts 하츠투하츠 ‘ICONIC HEART’ Promotion Event in Japan BH2ND #1", duration: "" }, { id: "Lh2_HZSj8vs", title: "시구식 무대를 하러 도쿄돔에 왔습니다!(ᵔᗜᵔ)✧* | Hearts2Hearts 하츠투하츠 ‘ICONIC HEART’ Promotion Event in Japan BH2ND #2", duration: "" }, { id: "h9DX5EIQS8E", title: "COMEBACK' Hearts2Hearts - ICONIC HEART (Korean Ver.) #엠카운트다운 EP.949 | Mnet 261015 방송", duration: "" }, { id: "ujYrYnTP1tg", title: "ICONIC HEART (Korean Ver.) - Hearts2Hearts [뮤직뱅크/Music Bank] | KBS 261016 방송", duration: "" }, { id: "31ECZsBSkwI", title: "Hearts2Hearts (하츠투하츠) - ICONIC HEART (Korean Ver.) | Show! MusicCore | MBC261017방송", duration: "" }, { id: "DK_dr_n2rM4", title: "Hearts2Hearts 하츠투하츠 'ICONIC HEART (Korean Ver.)' MV", duration: "" } ]; const series = { title: "Iconic Heart Era", year: "2026", rating: "13+", language: "ENG SUB", description: "", cast: "", genres: "" }; const player = root.querySelector("#iconicheartera-player"); const prevButton = root.querySelector("#iconicheartera-previous"); const nextButton = root.querySelector("#iconicheartera-next"); const meta = root.querySelector("#iconicheartera-meta"); const list = root.querySelector("#iconicheartera-list"); const playerWrap = root.querySelector(".iconicheartera-player-wrap"); const topButton = document.querySelector(".iconicheartera-top"); root.querySelector("#iconicheartera-title").textContent = series.title; const description = root.querySelector("#iconicheartera-description"); const castRow = root.querySelector("#iconicheartera-cast-row"); const genresRow = root.querySelector("#iconicheartera-genres-row"); if (series.description.trim()) { description.textContent = series.description; description.hidden = false; } if (series.cast.trim()) { root.querySelector("#iconicheartera-cast").textContent = series.cast; castRow.hidden = false; } if (series.genres.trim()) { root.querySelector("#iconicheartera-genres").textContent = series.genres; genresRow.hidden = false; } function renderMeta() { meta.replaceChildren(); const values = [ series.year, series.rating, iconichearteraVideos.length + " Episodes", series.language ]; values.forEach(function (value, index) { if (index > 0) { const separator = document.createElement("span"); separator.textContent = "•"; meta.appendChild(separator); } const item = document.createElement("span"); item.textContent = value; meta.appendChild(item); }); } let currentVideoIndex = 0; function loadVideo(video, shouldScroll) { if (!video) return; currentVideoIndex = iconichearteraVideos.findIndex(function (item) { return item.id === video.id; }); prevButton.disabled = currentVideoIndex <= 0; nextButton.disabled = currentVideoIndex >= iconichearteraVideos.length - 1; player.src = "https://www.youtube-nocookie.com/embed/" + video.id; player.title = video.title; list.querySelectorAll(".iconicheartera-card").forEach(function (card) { const active = card.dataset.videoId === video.id; card.classList.toggle("active", active); if (active) { card.setAttribute("aria-current", "true"); } else { card.removeAttribute("aria-current"); } }); if (shouldScroll) { playerWrap.scrollIntoView({ behavior: "smooth", block: "start" }); } } prevButton.addEventListener("click", function () { if (currentVideoIndex > 0) { loadVideo(iconichearteraVideos[currentVideoIndex - 1], true); } }); nextButton.addEventListener("click", function () { if (currentVideoIndex < iconichearteraVideos.length - 1) { loadVideo(iconichearteraVideos[currentVideoIndex + 1], true); } }); iconichearteraVideos.forEach(function (video, index) { const card = document.createElement("div"); card.className = "iconicheartera-card"; card.dataset.videoId = video.id; card.tabIndex = 0; card.setAttribute("role", "button"); card.setAttribute( "aria-label", "Play episode " + (index + 1) + ": " + video.title ); const number = document.createElement("div"); number.className = "iconicheartera-number"; number.textContent = index + 1; const thumb = document.createElement("img"); thumb.className = "iconicheartera-thumb"; thumb.src = "https://i.ytimg.com/vi/" + video.id + "/hqdefault.jpg"; thumb.alt = ""; thumb.loading = "lazy"; const text = document.createElement("div"); text.className = "iconicheartera-card-text"; const cardTitle = document.createElement("div"); cardTitle.className = "iconicheartera-card-title"; cardTitle.textContent = video.title; const duration = document.createElement("div"); duration.className = "iconicheartera-duration"; duration.textContent = video.duration; text.appendChild(cardTitle); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click", function () { loadVideo(video, true); }); card.addEventListener("keydown", function (event) { if (event.key === "Enter" || event.key === " ") { event.preventDefault(); loadVideo(video, true); } }); list.appendChild(card); }); renderMeta(); loadVideo(iconichearteraVideos[0], false); window.addEventListener("scroll", function () { if (window.scrollY > 300) { topButton.classList.add("show"); } else { topButton.classList.remove("show"); } }, { passive: true }); topButton.addEventListener("click", function () { window.scrollTo({ top: 0, behavior: "smooth" }); }); })();

Lemon Tang Era

⏷ Lemon Tang Era
(function () { const root = document.getElementById("lemontangera-container"); if (!root || root.dataset.initialized === "true") return; root.dataset.initialized = "true"; const lemontangeraVideos = [ { id: "WJNGmeRVtic", title: "Hearts2Hearts 하츠투하츠 'Lemon Tang'", duration: "" }, { id: "hOeJtPR_D0U", title: "Hearts2Hearts 하츠투하츠 'Lemon Tang' LEMON SOLAR SYSTEM", duration: "" }, { id: "wrdkAIreor4", title: "Hearts2Hearts 하츠투하츠 Trailer : The LemonTang Syndrome", duration: "" }, { id: "Nr4y0nE78eM", title: "Hearts2Hearts 하츠투하츠 'Lemon Tang' MV Teaser", duration: "" }, { id: "1VqxWNwgf5Q", title: "Hearts2Hearts 하츠투하츠 'Lemon Tang' MV", duration: "" }, { id: "vzJnOHBAtCo", title: "Hearts2Hearts 하츠투하츠 'Lemon Tang' Cheering Guide | S2U(하츄)와 함께라면 다 이겨, 여름 Heart 🩵", duration: "" }, { id: "Mp6phSXWv-U", title: "Hearts2Hearts 하츠투하츠 'Lemon Tang' Dance Practice", duration: "" }, { id: "39fg0f1lBj0", title: "게임 중에 절대 훈수 두면 안 돼! (with 하투하, 미미미누, 윤두준)", duration: "" }, { id: "To6mqr47pxE", title: "Hearts2Hearts(하츠투하츠) 'Lemon Tang' (4K) | MOVE TO PERFORMANCE", duration: "" }, { id: "v66pVw6TR2Q", title: "진실과 거짓의 카오스.. 넷이 모이니 자꾸 양치기 소녀가 되 I 혤's club🍸 ep77 유하 스텔라 이안", duration: "" }, { id: "Qlp1XRoDEnM", title: "Hearts2Hearts(하츠투하츠)의 짜릿한 셔플쇼 너무 좋잖아 🍋ㅣ스포티파이 K-Pop ON! RECORD", duration: "" }, { id: "X9PyU8nuosg", title: "하츠투하츠 지우&유하의 '골 때리는' FC 모바일 입문서", duration: "" }, { id: "ZBZ9_MFYg1Y", title: "【배좋좋 ep10】하투하와 지금부터 배구공 탱탱탱! 다 이겨, 하투하 (ENG SUB)", duration: "" }, { id: "a8tzYxhBjOg", title: "Hearts2Hearts (하츠투하츠) - Lemon Tang | Show! MusicCore | MBC260627방송", duration: "" }, { id: "Vg905CNBuDI", title: "[아두럽] 수상할 정도로 개그 욕심이 많은 걸그룹?🤭 하츠투하츠가 아두럽에서 제대로 무리하고 감💦 | IDOL DKDK CLUB - Hearts2Hearts (SUB)", duration: "" }, { id: "5pGqox3kRGE", title: "Hearts2Hearts 하츠투하츠 ‘Lemon Tang’ Dance Practice BH2ND", duration: "" }, { id: "ojh4JFizJYo", title: "소개합니다! 하츠투하츠의 레몬탱!", duration: "" }, { id: "1l_H3lYnzFs", title: "[릴레이댄스] 하츠투하츠(Hearts2Hearts) - Lemon Tang (4K)", duration: "" }, { id: "2mNkfGMK7AI", title: "Lemon Tang - Hearts2Hearts (하츠투하츠) | SBS 260628 방송", duration: "" }, { id: "KS2eI_U2aNY", title: "퀸은 울지 않ㅇr..☆ 하츠투하츠의 팔씨름 잔치(가 아니라 퇴근 잔치 💨)ㅣ스포티파이 아이돌잔치", duration: "" }, { id: "Idogbb3HV9k", title: "하투하는 레몬탱🍋 아맹은 제육탱🌶️[SUB]", duration: "" }, { id: "zxWwW15QLLY", title: "Hearts2Hearts(하츠투하츠) 'Lemon Tang' Shuffle Live | 스포티파이 K-Pop ON! RECORD", duration: "" }, { id: "RzcIatCkydc", title: "[ENG]DMZ와 MZ의 만남 기쁘다!🍓🌴😊| 월간 할머니집 EP.03", duration: "" }, { id: "PF_8tcdCpqo", title: "[릴레이댄스 light] Hearts2Hearts(하츠투하츠) - Lemon Tang | 릴댄 프리스타일 ver.", duration: "" }, { id: "xnvGRflUUlA", title: "[ENG/IND SUB] 어린이의 문화대통합을 위해 면접보러 온 하츠투하츠 지우, 카르멘 ㅣ 미래면접관 EP.07", duration: "" }, { id: "UKgR0y0kb8E", title: "Lemon Tang - Hearts2Hearts [뮤직뱅크/Music Bank] | KBS 260703 방송", duration: "" }, { id: "rod8lAguJ6Q", title: "[ENG] 특종⚠️ 학교에서 포착된 인간 레몬🍋 하츠투하츠 | 비밀 전학생 시즌2 Ep.06", duration: "" }, { id: "cSTQwK4rbog", title: "Hearts2Hearts (하츠투하츠) - Lemon Tang | Show! MusicCore | MBC260704방송", duration: "" }, { id: "j3a10MLj5K8", title: "Hearts2Hearts 하츠투하츠 ‘Lemon Tang’ Recording BH2ND", duration: "" }, { id: "3VV4sfS5f1w", title: "SM 2세대 vs 5세대. 하츠투하츠와 제대로 붙었습니다. (feat. 최강창민.) [SUB.]", duration: "" }, { id: "UW8uzoxOqnA", title: "[COMEBACK] Hearts2Hearts (하츠투하츠) - Lemon Tang l Show Champion l EP.602 l 260708", duration: "" }, { id: "XuF2l1-1bmQ", title: "저 원래 초미녀랑 낯가리거든요? (^᎑^๑)/♡ | Hearts2Hearts 하츠투하츠 ‘Lemon Tang’ Challenge BH2ND", duration: "" }, { id: "hKGbRz9eRWI", title: "[쇼챔직캠 4K] Hearts2Hearts(하츠투하츠) - Lemon Tang | Show Champion | EP.602 | 260708", duration: "" }, { id: "YV-7Bf7MD00", title: "Hearts2Hearts - Lemon Tang #엠카운트다운 EP.936 | Mnet 260709 방송", duration: "" }, { id: "uHWQ7VylFrk", title: "Hearts2Hearts (하츠투하츠) - Lemon Tang | Show! MusicCore | MBC260711방송", duration: "" }, { id: "ykCWQ0fP7o0", title: "Lemon Tang - Hearts2Hearts (하츠투하츠) | SBS 260712 방송", duration: "" }, { id: "HCwvO_FZQmk", title: "레몬은 어디서 자라지?𖧧 ⋆ʚ𝓣𝓪𝓷𝓰ɞ⋆ | Hearts2Hearts 하츠투하츠 ‘Lemon Tang’ Okinawa BH2ND #1", duration: "" }, { id: "uXKD34jogyU", title: "머리도 완전 웨이브 하구? 네일도 완전 𝓜𝓮𝓻𝓶𝓪𝓲𝓭 𝓝𝓪𝓲𝓵 ☀︎𓂃⛱ | Hearts2Hearts 하츠투하츠 ‘Lemon Tang’ Okinawa BH2ND #2", duration: "" }, { id: "IbFDE10n4Fg", title: "You’re my best view˖⋆.˚ε(´。•᎑•`)っ | Hearts2Hearts 하츠투하츠 ‘Lemon Tang’ Okinawa BH2ND #3", duration: "" }, { id: "K8iH7w7piag", title: "하투하, 미미미누야 연기가 하고 싶어? (Feat.존박)", duration: "" }, { id: "3Dq4de1J6MA", title: "음료 잘 사주는 예쁜 언니ㅋ✧˖°. | Hearts2Hearts 하츠투하츠 ‘Lemon Tang’ Music Show BH2ND #1", duration: "" }, { id: "mgiO2BAng-s", title: "음방에서 누가 돌아왔게~? 나야 하투하ᯓ★ | Hearts2Hearts 하츠투하츠 ‘Lemon Tang’ Music Show BH2ND #2", duration: "" }, { id: "SJFnAQf8-D4", title: "야 우리 진짜 멋있다𖤐 뭔가 신경쓰여⸝⸝⸝.ᐟ | Hearts2Hearts 하츠투하츠 ‘Lemon Tang’ Jacket & Trailer BH2ND", duration: "" }, { id: "-XDvgNjviwg", title: "Hearts2Hearts(하츠투하츠) - INTRO + Lemon Tang + 15-LOVE @SBS GayoDaejeon Summer", duration: "" }, { id: "n-QR5ishboM", title: "Hearts2Hearts 하츠투하츠 '15-LOVE'|On the Spot|온더스팟", duration: "" }, { id: "ZgobJaKHY-4", title: "Hearts2Hearts - 15-LOVE #엠카운트다운 EP.943 | Mnet 260827 방송", duration: "" }, { id: "cUCCGFP44yA", title: "15-LOVE - Hearts2Hearts [뮤직뱅크/Music Bank] | KBS 260828 방송", duration: "" }, { id: "mSpcqhztwy4", title: "Hearts2Hearts (하츠투하츠) - 15-LOVE | Show! MusicCore | MBC260829방송", duration: "" }, { id: "-qQvf7517Hw", title: "Hearts2Hearts 하츠투하츠 '15-LOVE' Dance Practice", duration: "" }, { id: "gdJWyNFe4bc", title: "15-LOVE - Hearts2Hearts (하츠투하츠) | SBS 260830 방송", duration: "" }, { id: "TqM3S42Ya-M", title: "Hearts2Hearts 하츠투하츠 '15-LOVE' Dance Practice BH2ND", duration: "" }, { id: "oVMQTIUI_2c", title: "저는 해삐 했습니다아앙 (๑´^᎑^)~♡ | Hearts2Hearts 하츠투하츠 ‘15-LOVE’ Music Show BH2ND", duration: "" }, { id: "k4h0luUcr-Q", title: "Hearts2Hearts - Lemon Tang | 2026 INKIGAYO LIVE in TOKYO", duration: "" } ]; const series = { title: "Lemon Tang Era", year: "2026", rating: "13+", language: "ENG SUB", description: "", cast: "", genres: "" }; const player = root.querySelector("#lemontangera-player"); const prevButton = root.querySelector("#lemontangera-previous"); const nextButton = root.querySelector("#lemontangera-next"); const meta = root.querySelector("#lemontangera-meta"); const list = root.querySelector("#lemontangera-list"); const playerWrap = root.querySelector(".lemontangera-player-wrap"); const topButton = document.querySelector(".lemontangera-top"); let currentVideoIndex = 0; root.querySelector("#lemontangera-title").textContent = series.title; const description = root.querySelector("#lemontangera-description"); const castRow = root.querySelector("#lemontangera-cast-row"); const genresRow = root.querySelector("#lemontangera-genres-row"); if (series.description.trim()) { description.textContent = series.description; description.hidden = false; } if (series.cast.trim()) { root.querySelector("#lemontangera-cast").textContent = series.cast; castRow.hidden = false; } if (series.genres.trim()) { root.querySelector("#lemontangera-genres").textContent = series.genres; genresRow.hidden = false; } function renderMeta() { meta.replaceChildren(); const values = [ series.year, series.rating, lemontangeraVideos.length + " Episodes", series.language ]; values.forEach(function (value, index) { if (index > 0) { const separator = document.createElement("span"); separator.textContent = "•"; meta.appendChild(separator); } const item = document.createElement("span"); item.textContent = value; meta.appendChild(item); }); } function loadVideo(video, shouldScroll) { if (!video) return; currentVideoIndex = lemontangeraVideos.findIndex(function (item) { return item.id === video.id; }); prevButton.disabled = currentVideoIndex <= 0; nextButton.disabled = currentVideoIndex >= lemontangeraVideos.length - 1; player.src = "https://www.youtube-nocookie.com/embed/" + video.id; player.title = video.title; list.querySelectorAll(".lemontangera-card").forEach(function (card) { const active = card.dataset.videoId === video.id; card.classList.toggle("active", active); if (active) { card.setAttribute("aria-current", "true"); } else { card.removeAttribute("aria-current"); } }); if (shouldScroll) { playerWrap.scrollIntoView({ behavior: "smooth", block: "start" }); } } prevButton.addEventListener("click", function () { if (currentVideoIndex > 0) { loadVideo(lemontangeraVideos[currentVideoIndex - 1], true); } }); nextButton.addEventListener("click", function () { if (currentVideoIndex < lemontangeraVideos.length - 1) { loadVideo(lemontangeraVideos[currentVideoIndex + 1], true); } }); lemontangeraVideos.forEach(function (video, index) { const card = document.createElement("div"); card.className = "lemontangera-card"; card.dataset.videoId = video.id; card.tabIndex = 0; card.setAttribute("role", "button"); card.setAttribute( "aria-label", "Play episode " + (index + 1) + ": " + video.title ); const number = document.createElement("div"); number.className = "lemontangera-number"; number.textContent = index + 1; const thumb = document.createElement("img"); thumb.className = "lemontangera-thumb"; thumb.src = "https://i.ytimg.com/vi/" + video.id + "/hqdefault.jpg"; thumb.alt = ""; thumb.loading = "lazy"; const text = document.createElement("div"); text.className = "lemontangera-card-text"; const cardTitle = document.createElement("div"); cardTitle.className = "lemontangera-card-title"; cardTitle.textContent = video.title; const duration = document.createElement("div"); duration.className = "lemontangera-duration"; duration.textContent = video.duration; text.appendChild(cardTitle); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click", function () { loadVideo(video, true); }); card.addEventListener("keydown", function (event) { if (event.key === "Enter" || event.key === " ") { event.preventDefault(); loadVideo(video, true); } }); list.appendChild(card); }); renderMeta(); loadVideo(lemontangeraVideos[0], false); window.addEventListener("scroll", function () { if (window.scrollY > 300) { topButton.classList.add("show"); } else { topButton.classList.remove("show"); } }, { passive: true }); topButton.addEventListener("click", function () { window.scrollTo({ top: 0, behavior: "smooth" }); }); })();

RUDE! Era

⏷ RUDE! Era
(function () { const root = document.getElementById("rudeera-container"); if (!root || root.dataset.initialized === "true") return; root.dataset.initialized = "true"; const rudeeraVideos = [ { id: "9V3t4N6tvMc", title: "Hearts2Hearts : 하츄컴퍼니 직원 행동 지침서 | How to Behave When the Heart is Missing", duration: "" }, { id: "YwRs3mrgUKE", title: "Hearts2Hearts 하츠투하츠 'RUDE!' MV Teaser", duration: "" }, { id: "i8c1SXtMr2k", title: "Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #CARMEN #카르멘", duration: "" }, { id: "OMyCbdH3KTY", title: "Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #JUUN #주은", duration: "" }, { id: "PArwInNjZ4A", title: "Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #A_NA #에이나", duration: "" }, { id: "Mf2MbILK200", title: "Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #IAN #이안", duration: "" }, { id: "0cy6wsUjbC0", title: "Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #YUHA #유하", duration: "" }, { id: "QCJqdtgoFEM", title: "Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #JIWOO #지우", duration: "" }, { id: "QttkpndZXoI", title: "Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #STELLA #스텔라", duration: "" }, { id: "bcDV__7_lpE", title: "Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #YE_ON #예온", duration: "" }, { id: "F7sGJVUrkjQ", title: "Hearts2Hearts 하츠투하츠 'RUDE!' MV", duration: "" }, { id: "AjK78uAd6pA", title: "Hearts2Hearts 하츠투하츠 'RUDE!' Cheering Guide | S2U(하츄) 망설임은 Never 이끌린 대로 해 🩵", duration: "" }, { id: "jfZQtuXTJ4E", title: "[SUB] EP.57-1 Hearts2Hearts | 랜플댄? 질 수 없지! 하투하배 4:4 댄스 배틀\\~(˘▾˘)\\~ | 돌박이일 하츠투하츠 겨울방학 스페셜 투어 1탄 [4K]", duration: "" }, { id: "c330ov8bsxI", title: "Hearts2Hearts(하츠투하츠) 'RUDE!' (4K) | STUDIO CHOOM ORIGINAL", duration: "" }, { id: "czcsP53TVF8", title: "\"감자와 원숭이의 만남\"ㅣEP.12 하츠투하츠(Hearts2Hearts)ㅣ미미미누의 방구석 분석", duration: "" }, { id: "RXQCY_zxz-E", title: "Hearts2Hearts 하츠투하츠 'RUDE!' Dance Practice", duration: "" }, { id: "P8FDMruoUdg", title: "[SUB] 칼군무 그룹? ‘하루’면 충분한데요 🤭 | Ep.43 Hearts2Hearts | 연습실 바다쌤", duration: "" }, { id: "NoQPDBpxfyA", title: "최초 공개' Hearts2Hearts - RUDE! #엠카운트다운 EP.917 | Mnet 260226 방송", duration: "" }, { id: "Ie8XeanwG6g", title: "(ENG) 가챠 뽑자 난 다 궁금해🩵 민서 동갑 친구 하츠투하츠(Hearts2Hearts) 에이나X이안이랑 데이트했습니다 | 할명수 ep.277", duration: "" }, { id: "JaLFIKX71gE", title: "RUDE! - Hearts2Hearts [뮤직뱅크/Music Bank] | KBS 260227 방송", duration: "" }, { id: "-SuUEoYEDVw", title: "Hearts2Hearts 하츠투하츠 ‘RUDE!’ Dance Practice BH2ND", duration: "" }, { id: "Roxd7X6z2p0", title: "[릴레이댄스] 하츠투하츠(Hearts2Hearts) - RUDE! (4K)", duration: "" }, { id: "j3gznEhDUK8", title: "Hearts2Hearts (하츠투하츠) - RUDE! | Show! MusicCore | MBC260228방송", duration: "" }, { id: "XlxzbmAVS2s", title: "[SUB] EP.57-2 Hearts2Hearts | 나 안.긁.혔.어.(🙀) 귀가 흔들리지만 제 의지가 아닙니다 | 돌박이일 하츠투하츠 겨울방학 스페셜 투어 2탄 [4K]", duration: "" }, { id: "J8t_o0ak7Vc", title: "RUDE! - Hearts2Hearts (하츠투하츠) | SBS 260301 방송", duration: "" }, { id: "0oRul0_3mdo", title: "Hearts2Hearts 하츠투하츠 ‘RUDE!’ Recording BH2ND", duration: "" }, { id: "HaOUfosT_v8", title: "[SUB] 마피아댄스하다가 공식 사과한 하츠투하츠?!🤣 | Hearts2Hearts의 마피아댄스 | MAFIA DANCEㅣ딩고뮤직ㅣdingo Music", duration: "" }, { id: "LhQSxRc8D8E", title: "미물 아니야~ 예쁜 누나쟈나~💕 | 하츠투하츠 이안&스텔라 | 콜미베이비 EP.22", duration: "" }, { id: "WHRkloN4y68", title: "RUDE! - Hearts2Hearts [뮤직뱅크/Music Bank] | KBS 260306 방송", duration: "" }, { id: "zQ-XkGm0zvI", title: "약간 무서운 인형 느낌쓰 내가 널 잡아먹었다악!!! (^❯⩊❮^)⟆.✦ ݁˖ | Hearts2Hearts 하츠투하츠 ’RUDE!’ MV BH2ND #1", duration: "" }, { id: "37VtoDg5O2o", title: "Hearts2Hearts (하츠투하츠) - RUDE! | Show! MusicCore | MBC260307방송", duration: "" }, { id: "Ai6FLQmajaI", title: "RUDE! - Hearts2Hearts (하츠투하츠) | SBS 260308 방송", duration: "" }, { id: "o_cBHoHY3mw", title: "Hearts2Hearts - RUDE! #엠카운트다운 EP.919 | Mnet 260312 방송", duration: "" }, { id: "TXxs-MldY2s", title: "RUDE! - Hearts2Hearts [뮤직뱅크/Music Bank] | KBS 260313 방송", duration: "" }, { id: "UZ2Z1w7TRds", title: "고백해! 고백해! 고백해! (。•̀ ,•̀)~✩ | Hearts2Hearts 하츠투하츠 ’RUDE!’ MV BH2ND #2", duration: "" }, { id: "_Zlp69mTBiY", title: "Hearts2Hearts (하츠투하츠) - RUDE! | Show! MusicCore | MBC260314방송", duration: "" }, { id: "I_E7r7aVdpM", title: "그만 귀엽자 하투하들아 진짜ㅋ₊˚⊹ᰔ( •̀֊•́ ) | Hearts2Hearts 하츠투하츠 ’RUDE!’ Jacket BH2ND", duration: "" }, { id: "tjSPledGrnU", title: "저는 귀여웠던 날이 많이 없어요… 그냥 이쁜거죠 ദ്ദി(•ᴗ•́) | Hearts2Hearts 하츠투하츠 'RUDE!’ Trailer BH2ND", duration: "" }, { id: "UT-x2ImpDF0", title: "루: 루드!!! 드: 드가자아아아앍!!!ᯓ★.ᐟ◟( ˃̶͈◡ ˂̶͈ )◞ | Hearts2Hearts 하츠투하츠 ‘RUDE!’ Music Show BH2ND #1", duration: "" }, { id: "Y-p6I1ZEN3M", title: "가볼까? 야생의 동물들처럼 c(。⍤⌯⤤。⃰)ͽ ₍。☌ ·̫ ☌。₎ | Hearts2Hearts 하츠투하츠 'RUDE!' Music Show BH2ND #2", duration: "" }, { id: "6ow4_WUGUpw", title: "저희는 지금 𝒯𝒾𝓂ℯ𝓈 𝒮𝓆𝓊𝒶𝓇ℯ에 와있습니다~ ٩(ˊᗜˋ*)وᰔ | Hearts2Hearts 하츠투하츠 Our Days in USA BH2ND #1 New York", duration: "" }, { id: "2H4rMbgBfAY", title: "LA 왔으면 핫걸 해야지~( -_•)✮⋆˙ | Hearts2Hearts 하츠투하츠 Our Days in USA BH2ND #2 LA ", duration: "" }, { id: "LZZ6cV8PdWg", title: "Welcome to LA~ 하늘이 완전 파란색이에요⋆☀︎.(˶ᵔ ᵕ ᵔ˶) | Hearts2Hearts 하츠투하츠 Our Days in USA BH2ND #3 LA", duration: "" }, { id: "AQMnmqiQG28", title: "이참에 엄마한테 전화를 해볼까요? ˗ˏˋ ☏ ˎˊ˗ | Hearts2Hearts 하츠투하츠 2026 WIEA BH2ND", duration: "" }, { id: "9TjRdsqm7jE", title: "Hearts2Hearts - RUDE! (Japanese Ver.) / THE FIRST TAKE", duration: "" } ]; const series = { title: "RUDE! Era", year: "2026", rating: "13+", language: "ENG SUB", description: "", cast: "", genres: "" }; const player = root.querySelector("#rudeera-player"); const prevButton = root.querySelector("#rudeera-previous"); const nextButton = root.querySelector("#rudeera-next"); let currentVideoIndex = 0; const meta = root.querySelector("#rudeera-meta"); const list = root.querySelector("#rudeera-list"); const playerWrap = root.querySelector(".rudeera-player-wrap"); const topButton = document.querySelector(".rudeera-top"); root.querySelector("#rudeera-title").textContent = series.title; const description = root.querySelector("#rudeera-description"); const castRow = root.querySelector("#rudeera-cast-row"); const genresRow = root.querySelector("#rudeera-genres-row"); if (series.description.trim()) { description.textContent = series.description; description.hidden = false; } if (series.cast.trim()) { root.querySelector("#rudeera-cast").textContent = series.cast; castRow.hidden = false; } if (series.genres.trim()) { root.querySelector("#rudeera-genres").textContent = series.genres; genresRow.hidden = false; } function renderMeta() { meta.replaceChildren(); const values = [ series.year, series.rating, rudeeraVideos.length + " Episodes", series.language ]; values.forEach(function (value, index) { if (index > 0) { const separator = document.createElement("span"); separator.textContent = "•"; meta.appendChild(separator); } const item = document.createElement("span"); item.textContent = value; meta.appendChild(item); }); } function loadVideo(video, shouldScroll) { if (!video) return; currentVideoIndex = rudeeraVideos.findIndex(function (item) { return item.id === video.id; }); prevButton.disabled = currentVideoIndex <= 0; nextButton.disabled = currentVideoIndex >= rudeeraVideos.length - 1; player.src = "https://www.youtube-nocookie.com/embed/" + video.id; player.title = video.title; list.querySelectorAll(".rudeera-card").forEach(function (card) { const active = card.dataset.videoId === video.id; card.classList.toggle("active", active); if (active) { card.setAttribute("aria-current", "true"); } else { card.removeAttribute("aria-current"); } }); if (shouldScroll) { playerWrap.scrollIntoView({ behavior: "smooth", block: "start" }); } } prevButton.addEventListener("click", function () { if (currentVideoIndex > 0) { loadVideo(rudeeraVideos[currentVideoIndex - 1], true); } }); nextButton.addEventListener("click", function () { if (currentVideoIndex < rudeeraVideos.length - 1) { loadVideo(rudeeraVideos[currentVideoIndex + 1], true); } }); rudeeraVideos.forEach(function (video, index) { const card = document.createElement("div"); card.className = "rudeera-card"; card.dataset.videoId = video.id; card.tabIndex = 0; card.setAttribute("role", "button"); card.setAttribute( "aria-label", "Play episode " + (index + 1) + ": " + video.title ); const number = document.createElement("div"); number.className = "rudeera-number"; number.textContent = index + 1; const thumb = document.createElement("img"); thumb.className = "rudeera-thumb"; thumb.src = "https://i.ytimg.com/vi/" + video.id + "/hqdefault.jpg"; thumb.alt = ""; thumb.loading = "lazy"; const text = document.createElement("div"); text.className = "rudeera-card-text"; const cardTitle = document.createElement("div"); cardTitle.className = "rudeera-card-title"; cardTitle.textContent = video.title; const duration = document.createElement("div"); duration.className = "rudeera-duration"; duration.textContent = video.duration; text.appendChild(cardTitle); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click", function () { loadVideo(video, true); }); card.addEventListener("keydown", function (event) { if (event.key === "Enter" || event.key === " ") { event.preventDefault(); loadVideo(video, true); } }); list.appendChild(card); }); renderMeta(); loadVideo(rudeeraVideos[0], false); window.addEventListener("scroll", function () { if (window.scrollY > 300) { topButton.classList.add("show"); } else { topButton.classList.remove("show"); } }, { passive: true }); topButton.addEventListener("click", function () { window.scrollTo({ top: 0, behavior: "smooth" }); }); })();

Focus Era

⏷ Focus Era
(function () { const root = document.getElementById("focusera-container"); if (!root || root.dataset.initialized === "true") return; root.dataset.initialized = "true"; const focuseraVideos = [ { id: "WiAwc6-0kbo", title: "Hearts2Hearts 하츠투하츠 'Pretty Please' MV Teaser", duration: "" }, { id: "ufwB9Uja_wM", title: "Hearts2Hearts 하츠투하츠 'Pretty Please' MV", duration: "" }, { id: "drrHKqP-g8g", title: "Pretty Please - Hearts2Hearts (하츠투하츠) [뮤직뱅크/Music Bank] | KBS 250926 방송", duration: "" }, { id: "DuaAX0i3U40", title: "This 𝓑𝓪𝓷𝓰 is 𝓜𝔂 𝓓𝓻𝓮𝓪𝓶 𝓑𝓪𝓷𝓰 ⋆。゚☁︎。⋆。 ゚☾ ゚。⋆ | Hearts2Hearts 하츠투하츠 ’Pretty Please’ MV BH2ND #1", duration: "" }, { id: "ErRXOBByYPM", title: "Hearts2Hearts (하츠투하츠) - Pretty Please | Show! MusicCore | MBC250927방송", duration: "" }, { id: "6JQx-sMDWaA", title: "[MOVE TO PERFORMANCE] Hearts2Hearts(하츠투하츠) - Pretty Please (4K)", duration: "" }, { id: "PfXpoC57crU", title: "Pretty Please - Hearts2Hearts(하츠투하츠) | SBS 250928 방송", duration: "" }, { id: "qL69VSEeL5U", title: "잠깐만 바람에 날아가는 거 아니야?! ˚₊·—̳͟͞͞♡ | Hearts2Hearts 하츠투하츠 ’Pretty Please’ MV BH2ND #2", duration: "" }, { id: "wnar5gbxnLo", title: "COMEBACK' Hearts2Hearts - Pretty Please #엠카운트다운 EP.908 | Mnet 251002 방송", duration: "" }, { id: "zbrqDulNSaA", title: "Hearts2Hearts 하츠투하츠 'Pretty Please' Dance Practice", duration: "" }, { id: "cTQKnX66hEE", title: "Hearts2Hearts (하츠투하츠) - Pretty Please | Show! MusicCore | MBC251004방송", duration: "" }, { id: "tPNGxVu5d68", title: "Hearts2Hearts 하츠투하츠 'FOCUS' Trailer", duration: "" }, { id: "fKFJMwIzZOY", title: "Hearts2Hearts 하츠투하츠 'FOCUS' Mood Sampler #1 | Chapter 1. How2getHearts", duration: "" }, { id: "SngpMKBb5Gc", title: "Hearts2Hearts 하츠투하츠 'FOCUS' Mood Sampler #2 | Chapter 2. Hard2Hide", duration: "" }, { id: "NvVBrNAjmRg", title: "둘! 셋! 하츠투하츠 난 다 궁금해 | 단순노동·하츠투하츠·엄태구·카르멘·예온", duration: "" }, { id: "kz4SUbfHc4M", title: "Hearts2Hearts 하츠투하츠 'FOCUS' MV Teaser", duration: "" }, { id: "Ur7aK4FvK-U", title: "Hearts2Hearts 하츠투하츠 'FOCUS' MV", duration: "" }, { id: "C9McWCeK6QA", title: "Hearts2Hearts 하츠투하츠 'FOCUS' Dance Practice", duration: "" }, { id: "0pmDQ1iovVo", title: "Hearts2Hearts 하츠투하츠 'FOCUS' Cheering Guide | I cannot focus on anything but S2U(하츄) 🩵", duration: "" }, { id: "5ae0vFdR4xY", title: "Hearts2Hearts(하츠투하츠) 'FOCUS' (4K) | STUDIO CHOOM ORIGINAL", duration: "" }, { id: "MLyIfhibzbQ", title: "최초 공개' Hearts2Hearts - FOCUS #엠카운트다운 EP.910 | Mnet 251023 방송", duration: "" }, { id: "4sNQ7h86FN0", title: "Hearts2Hearts 하츠투하츠 ‘FOCUS’ MV CommentaryㅣCrunchy Hearts EP.10", duration: "" }, { id: "E0CZt2d6OKE", title: "FOCUS - Hearts2Hearts (하츠투하츠) [뮤직뱅크/Music Bank] | KBS 251024 방송", duration: "" }, { id: "rfL21nFvEsc", title: "Hearts2Hearts (하츠투하츠) - FOCUS | Show! MusicCore | MBC251025방송", duration: "" }, { id: "pKJ9JacTKR0", title: "FOCUS - Hearts2Hearts(하츠투하츠) | SBS 251026 방송", duration: "" }, { id: "Rw4rLqf5boU", title: "[릴레이댄스] 하츠투하츠(Hearts2Hearts) - FOCUS (4K)", duration: "" }, { id: "WyeJAh9iIIY", title: "나도 멋있는 걸 할 수 있는 여자다 ᕦ(ò_óˇ)ᕤ | Hearts2Hearts 하츠투하츠 ’FOCUS’ MV BH2ND #1", duration: "" }, { id: "82WKTlJMJiY", title: "Hearts2Hearts, FOCUS [THE SHOW 251028]", duration: "" }, { id: "RE89HeUXOSM", title: "너무 예쁘쟈나~? 발레 CORE ໒꒱‧₊˚ | Hearts2Hearts 하츠투하츠 ’FOCUS’ MV BH2ND #2", duration: "" }, { id: "ea5OsYhdLIs", title: "[COMEBACK] Hearts2Hearts(하츠투하츠) - FOCUS l Show Champion l EP.575 l 251029", duration: "" }, { id: "14BvvGZzGsQ", title: "신인 여돌 똥군기 잡고 왔음 💩 (하투하: 꺄르르)ㅣ에버랜드 사육사ㅣ워크돌ㅣ하츠투하츠 이안, 지우, 에이나", duration: "" }, { id: "n0B5MWAz6c4", title: "FOCUS - Hearts2Hearts [뮤직뱅크/Music Bank] | KBS 251031 방송", duration: "" }, { id: "Nc6vB6u49go", title: "하츄 낯가리지 말고 Come on (⸝⸝• ᴗ •⸝⸝) | Hearts2Hearts 하츠투하츠 ‘Pretty Please’ Music Show BH2ND", duration: "" }, { id: "gaTYDsUhhrQ", title: "Hearts2Hearts (하츠투하츠) - FOCUS | Show! MusicCore | MBC251101방송", duration: "" }, { id: "mA8xrIegKNU", title: "FOCUS - Hearts2Hearts(하츠투하츠) | SBS 251102 방송", duration: "" }, { id: "XVdM_RZGnok", title: "Hearts2Hearts 하츠투하츠 ‘FOCUS’ Recording BH2ND", duration: "" }, { id: "_xqnBLjzdzQ", title: "Hearts2Hearts 하츠투하츠 ‘FOCUS’ Dance Practice BH2ND", duration: "" }, { id: "WOPs1AgBHMY", title: "FOCUS - Hearts2Hearts (하츠투하츠) [뮤직뱅크/Music Bank] | KBS 251107 방송", duration: "" }, { id: "gv4P3n7SvFk", title: "FOCUS - Hearts2Hearts(하츠투하츠) | SBS 251109 방송", duration: "" }, { id: "ITmv7JLimQI", title: "오늘은 𝓒𝓪𝓵𝓲𝓯𝓸𝓻𝓷𝓲𝓪 𝓛𝓐 𝓗𝓸𝓽 𝓰𝓲𝓻𝓵 룩을 해봤는데요?٩(^ᗜ^ )و ˎˊ˗ | Hearts2Hearts 하츠투하츠 ’FOCUS’ Jacket BH2ND", duration: "" }, { id: "larrvLIMWDk", title: "우정테스트 우정 우정 v(˶˃ ᵕ ˂˶)v | Hearts2Hearts 하츠투하츠 ’FOCUS’ Trailer BH2ND", duration: "" }, { id: "OZzeeqyf6RY", title: "FOCUS - Hearts2Hearts (하츠투하츠) [뮤직뱅크/Music Bank] | KBS 251114 방송", duration: "" }, { id: "m-UDtx2J_mw", title: "Hearts2Hearts (하츠투하츠) - FOCUS | Show! MusicCore | MBC251115방송", duration: "" }, { id: "TC7Mw9ik4yg", title: "FOCUS - Hearts2Hearts(하츠투하츠) | SBS 251116 방송", duration: "" }, { id: "u8U1OSW5acA", title: "파란색 펄도 발랐습니다~❤︎Ψ(๑˃ ⤙ ˂๑)*。⋆✧ | Hearts2Hearts 하츠투하츠 'FOCUS' Mood Sampler BH2ND", duration: "" }, { id: "JJwiWgmraoA", title: "여기 집중하세요 F.O.C.U.S (˵ - _ - ˵ )✧˖ | Hearts2Hearts 하츠투하츠 ‘FOCUS’ Music Show BH2ND #1", duration: "" }, { id: "Og_rtpHBcSw", title: "[#2025MAMA] Hearts2Hearts - FOCUS (MAMA ver.) | Mnet 251128 방송", duration: "" }, { id: "XUbdua2mS1k", title: "막방 찢어버릴 거예요! ( ◡̀_◡́) | Hearts2Hearts 하츠투하츠 ‘FOCUS’ Music Show BH2ND #2", duration: "" }, { id: "-SmKQwHGTXc", title: "자 다음은 다 같이 안아~ (つ。˃ ᵕ ˂)つ ⸝♡ | Hearts2Hearts 하츠투하츠 2025 KGMA BH2ND", duration: "" } ]; const series = { title: "Focus Era", year: "2025", rating: "13+", language: "ENG SUB", description: "", cast: "", genres: "" }; const player = root.querySelector("#focusera-player"); const meta = root.querySelector("#focusera-meta"); const list = root.querySelector("#focusera-list"); const playerWrap = root.querySelector(".focusera-player-wrap"); const previousButton = root.querySelector("#focusera-previous"); const nextButton = root.querySelector("#focusera-next"); const topButton = document.querySelector(".focusera-top"); let currentVideoIndex = 0; root.querySelector("#focusera-title").textContent = series.title; const description = root.querySelector("#focusera-description"); const castRow = root.querySelector("#focusera-cast-row"); const genresRow = root.querySelector("#focusera-genres-row"); if (series.description.trim()) { description.textContent = series.description; description.hidden = false; } if (series.cast.trim()) { root.querySelector("#focusera-cast").textContent = series.cast; castRow.hidden = false; } if (series.genres.trim()) { root.querySelector("#focusera-genres").textContent = series.genres; genresRow.hidden = false; } function renderMeta() { meta.replaceChildren(); const values = [ series.year, series.rating, focuseraVideos.length + " Episodes", series.language ]; values.forEach(function (value, index) { if (index > 0) { const separator = document.createElement("span"); separator.textContent = "•"; meta.appendChild(separator); } const item = document.createElement("span"); item.textContent = value; meta.appendChild(item); }); } function updateNavigation() { previousButton.disabled = currentVideoIndex === 0; nextButton.disabled = currentVideoIndex === focuseraVideos.length - 1; } function loadVideo(video, shouldScroll) { if (!video) return; currentVideoIndex = focuseraVideos.findIndex(function (item) { return item.id === video.id; }); if (currentVideoIndex < 0) return; player.src = "https://www.youtube-nocookie.com/embed/" + video.id; player.title = video.title; list.querySelectorAll(".focusera-card").forEach(function (card) { const active = card.dataset.videoId === video.id; card.classList.toggle("active", active); if (active) { card.setAttribute("aria-current", "true"); } else { card.removeAttribute("aria-current"); } }); updateNavigation(); if (shouldScroll) { playerWrap.scrollIntoView({ behavior: "smooth", block: "start" }); } } previousButton.addEventListener("click", function () { if (currentVideoIndex > 0) { loadVideo(focuseraVideos[currentVideoIndex - 1], true); } }); nextButton.addEventListener("click", function () { if (currentVideoIndex < focuseraVideos.length - 1) { loadVideo(focuseraVideos[currentVideoIndex + 1], true); } }); focuseraVideos.forEach(function (video, index) { const card = document.createElement("div"); card.className = "focusera-card"; card.dataset.videoId = video.id; card.tabIndex = 0; card.setAttribute("role", "button"); card.setAttribute( "aria-label", "Play episode " + (index + 1) + ": " + video.title ); const number = document.createElement("div"); number.className = "focusera-number"; number.textContent = index + 1; const thumb = document.createElement("img"); thumb.className = "focusera-thumb"; thumb.src = "https://i.ytimg.com/vi/" + video.id + "/hqdefault.jpg"; thumb.alt = ""; thumb.loading = "lazy"; const text = document.createElement("div"); text.className = "focusera-card-text"; const cardTitle = document.createElement("div"); cardTitle.className = "focusera-card-title"; cardTitle.textContent = video.title; const duration = document.createElement("div"); duration.className = "focusera-duration"; duration.textContent = video.duration; text.appendChild(cardTitle); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click", function () { loadVideo(video, true); }); card.addEventListener("keydown", function (event) { if (event.key === "Enter" || event.key === " ") { event.preventDefault(); loadVideo(video, true); } }); list.appendChild(card); }); renderMeta(); loadVideo(focuseraVideos[0], false); window.addEventListener("scroll", function () { if (window.scrollY > 300) { topButton.classList.add("show"); } else { topButton.classList.remove("show"); } }, { passive: true }); topButton.addEventListener("click", function () { window.scrollTo({ top: 0, behavior: "smooth" }); }); })();

Style Era

⏷ Style Era
(function () { const root = document.getElementById("styleera-container"); if (!root || root.dataset.initialized === "true") return; root.dataset.initialized = "true"; const styleeraVideos = [ { id: "EJSoPp61gQo", title: "Hearts2Hearts 【STYLE】 ➫ 2025.06.18 6PM (KST)", duration: "" }, { id: "GqRkcX25TPM", title: "˚₊‧꒰ა H2H STYLISH PHOTO BOOTH ໒꒱ ‧₊˚", duration: "" }, { id: "tutJS_co0QU", title: "Hearts2Hearts 하츠투하츠 'STYLE' MV Teaser", duration: "" }, { id: "n7kFRxFIPrI", title: "Hearts2Hearts 하츠투하츠 'STYLE' MV", duration: "" }, { id: "FDOec4bINIQ", title: "Hearts2Hearts 'STYLE' Cheering Guide | I like your STYLE 🍀🩵", duration: "" }, { id: "FGBwQeD2FpY", title: "최초 공개' Hearts2Hearts - STYLE #엠카운트다운 EP.893 | Mnet 250619 방송", duration: "" }, { id: "A-rHQNVrim4", title: "STYLE - Hearts2Hearts (하츠투하츠) [뮤직뱅크/Music Bank] | KBS 250620 방송", duration: "" }, { id: "vOdWFF_1U2A", title: "[MOVE TO PERFORMANCE] Hearts2Hearts(하츠투하츠) - STYLE (4K)", duration: "" }, { id: "hwQlURpblRI", title: "Hearts2Hearts (하츠투하츠) - STYLE | Show! MusicCore | MBC250621방송", duration: "" }, { id: "5aZ4ich_zbA", title: "[릴레이댄스] 하츠투하츠(Hearts2Hearts) - STYLE (4K)", duration: "" }, { id: "qYoa9m8iL-Y", title: "Hearts2Hearts 하츠투하츠 ‘STYLE’ MV CommentaryㅣCrunchy Hearts EP.4", duration: "" }, { id: "UgZ8m52rWwg", title: "Hearts2Hearts (하츠투하츠) - STYLE | SBS 250622 방송", duration: "" }, { id: "NLjMZJKMOIc", title: "Hearts2Hearts 하츠투하츠 'STYLE' Dance Practice", duration: "" }, { id: "l2wgYbbCV9I", title: "[Sub] 가방에서 이게 왜 나와...?🤔 하츠투하츠의 LIFE 'STYLE' 탐구👀 | 슬기로운 학급회의 | Hearts2Hearts", duration: "" }, { id: "cO79GxP8v2I", title: "강당에서 노래 듣는데 하츠투하츠가 깜짝 등장한다면?! l [딩고 어택] 학교편 with 하츠투하츠 (Hearts2Hearts)", duration: "" }, { id: "_jQo1JKg5gk", title: "하츄들 기대해~ 우리 예쁘다아 (∩˃o˂∩)♡ | Hearts2Hearts 하츠투하츠 ‘STYLE’ Jacket BH2ND", duration: "" }, { id: "jieRcHtQPLo", title: "[Replay] Hearts2Hearts 'STYLE' Countdown Live", duration: "" }, { id: "mNmmTABwtOI", title: "[Teenieping X Hearts2Hearts] 'STYLE' MV teaser @hearts2hearts.official", duration: "" }, { id: "1whqfdY5NI8", title: "Hearts2Hearts - STYLE #엠카운트다운 EP.894 | Mnet 250626 방송", duration: "" }, { id: "X4EMROC9IDo", title: "Hearts2Hearts (하츠투하츠) - STYLE | Show! MusicCore | MBC250628방송", duration: "" }, { id: "PnvEADA-wuQ", title: "[SUB] 소녀들 수련회 방해하면 교관님 저숭라라 가죠 | 돌들의침묵 | Hearts2Hearts(하츠투하츠) 'STYLE'", duration: "" }, { id: "5qk-HYkV3HA", title: "Hearts2Hearts (하츠투하츠) - STYLE | SBS 250629 방송", duration: "" }, { id: "L_9yCj0__aI", title: "잠옷 STYLE이라서 더🍀좋🩷아🍀 | 돌들의침묵 | Hearts2Hearts(하츠투하츠) 'STYLE'", duration: "" }, { id: "qrXX2eS3IBE", title: "[Teenieping X Hearts2Hearts] 'STYLE’ MV @hearts2hearts.official", duration: "" }, { id: "IZFtAPpEk9I", title: "약간 첫사랑 재질~ ♡✧˚ ༘ | Hearts2Hearts 하츠투하츠 ’STYLE’ MV BH2ND #2", duration: "" }, { id: "-_Kol2fWCpQ", title: "[#직캠보고서🔍] #하츠투하츠 #Hearts2Hearts 같이 걷자! 하츄는 하투하가 다 궁금해₊˚⊹♡ 음중 사전녹화 비하인드⏯️(ENG/IDN SUB)", duration: "" }, { id: "Fk54DzRap88", title: "여기 하츄의 사랑 하나 오더요 ˚₊‧ ʚ꒰^. .^꒱⟆ɞ ‧₊˚ | Hearts2Hearts 하츠투하츠 ’STYLE’ MV BH2ND #3", duration: "" }, { id: "rIdaOPJbdQ8", title: "Hearts2Hearts 하츠투하츠 ‘STYLE’ Recording BH2ND", duration: "" }, { id: "VDNP_yS_Yr4", title: "Hearts2Hearts 하츠투하츠 ‘STYLE’ Dance Practice BH2ND", duration: "" }, { id: "XGUkgN_4VCo", title: "너를 가슴 뛰게 하는 건 뭔데𓂃⭒˚.⋆⭑♫ 뭔데엑↗ | Hearts2Hearts 하츠투하츠 ‘STYLE’ Music Show BH2ND", duration: "" } ]; const series = { title: "Style Era", year: "2025", rating: "13+", language: "ENG SUB", description: "", cast: "", genres: "" }; const player = root.querySelector("#styleera-player"); const meta = root.querySelector("#styleera-meta"); const list = root.querySelector("#styleera-list"); const playerWrap = root.querySelector(".styleera-player-wrap"); const prevButton = root.querySelector("#styleera-previous"); const nextButton = root.querySelector("#styleera-next"); const topButton = document.querySelector(".styleera-top"); let currentVideoIndex = 0; root.querySelector("#styleera-title").textContent = series.title; const description = root.querySelector("#styleera-description"); const castRow = root.querySelector("#styleera-cast-row"); const genresRow = root.querySelector("#styleera-genres-row"); if (series.description.trim()) { description.textContent = series.description; description.hidden = false; } if (series.cast.trim()) { root.querySelector("#styleera-cast").textContent = series.cast; castRow.hidden = false; } if (series.genres.trim()) { root.querySelector("#styleera-genres").textContent = series.genres; genresRow.hidden = false; } function renderMeta() { meta.replaceChildren(); const values = [ series.year, series.rating, styleeraVideos.length + " Episodes", series.language ]; values.forEach(function (value, index) { if (index > 0) { const separator = document.createElement("span"); separator.textContent = "•"; meta.appendChild(separator); } const item = document.createElement("span"); item.textContent = value; meta.appendChild(item); }); } function loadVideo(video, shouldScroll) { if (!video) return; currentVideoIndex = styleeraVideos.findIndex(function (item) { return item.id === video.id; }); prevButton.disabled = currentVideoIndex <= 0; nextButton.disabled = currentVideoIndex >= styleeraVideos.length - 1; player.src = "https://www.youtube-nocookie.com/embed/" + video.id; player.title = video.title; list.querySelectorAll(".styleera-card").forEach(function (card) { const active = card.dataset.videoId === video.id; card.classList.toggle("active", active); if (active) { card.setAttribute("aria-current", "true"); } else { card.removeAttribute("aria-current"); } }); if (shouldScroll) { playerWrap.scrollIntoView({ behavior: "smooth", block: "start" }); } } prevButton.addEventListener("click", function () { if (currentVideoIndex > 0) { loadVideo(styleeraVideos[currentVideoIndex - 1], true); } }); nextButton.addEventListener("click", function () { if (currentVideoIndex < styleeraVideos.length - 1) { loadVideo(styleeraVideos[currentVideoIndex + 1], true); } }); styleeraVideos.forEach(function (video, index) { const card = document.createElement("div"); card.className = "styleera-card"; card.dataset.videoId = video.id; card.tabIndex = 0; card.setAttribute("role", "button"); card.setAttribute( "aria-label", "Play episode " + (index + 1) + ": " + video.title ); const number = document.createElement("div"); number.className = "styleera-number"; number.textContent = index + 1; const thumb = document.createElement("img"); thumb.className = "styleera-thumb"; thumb.src = "https://i.ytimg.com/vi/" + video.id + "/hqdefault.jpg"; thumb.alt = ""; thumb.loading = "lazy"; const text = document.createElement("div"); text.className = "styleera-card-text"; const cardTitle = document.createElement("div"); cardTitle.className = "styleera-card-title"; cardTitle.textContent = video.title; const duration = document.createElement("div"); duration.className = "styleera-duration"; duration.textContent = video.duration; text.appendChild(cardTitle); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click", function () { loadVideo(video, true); }); card.addEventListener("keydown", function (event) { if (event.key === "Enter" || event.key === " ") { event.preventDefault(); loadVideo(video, true); } }); list.appendChild(card); }); renderMeta(); loadVideo(styleeraVideos[0], false); window.addEventListener("scroll", function () { if (window.scrollY > 300) { topButton.classList.add("show"); } else { topButton.classList.remove("show"); } }, { passive: true }); topButton.addEventListener("click", function () { window.scrollTo({ top: 0, behavior: "smooth" }); }); })();

The Chase Era

⏷ The Chase Era
(function () { const root = document.getElementById("thechaseera-container"); if (!root || root.dataset.initialized === "true") return; root.dataset.initialized = "true"; const thechaseeraVideos = [ { id: "srEUps3-5mo", title: "Hearts2Hearts 하츠투하츠 'Chase Your Choice' Debut Trailer", duration: "" }, { id: "zqTZfaAu1Ro", title: "Hearts2Hearts 'The Chase' Character Clip #Hearts2Hearts #하츠투하츠 #TheChase #Hearts2Hearts_TheChase", duration: "" }, { id: "clVrZJeuqqk", title: "˗ˋˏϟˎˊ˗ ☎ 𖡬 𖤐 | Hearts2Hearts", duration: "" }, { id: "ZLR_6wlL2PM", title: "Hearts2Hearts 하츠투하츠 'The Chase' Moving Clip #JUUN #주은", duration: "" }, { id: "sd5YFvdnXyw", title: "Hearts2Hearts 하츠투하츠 'The Chase' Moving Clip #YE_ON #예온", duration: "" }, { id: "ui1CgeP-R2s", title: "Hearts2Hearts 하츠투하츠 'The Chase' Moving Clip #A_NA #에이나", duration: "" }, { id: "Shqzmk1HWmY", title: "Hearts2Hearts 하츠투하츠 'The Chase' Moving Clip #YUHA #유하", duration: "" }, { id: "PZBWofANk8M", title: "Hearts2Hearts 하츠투하츠 'The Chase' Moving Clip #CARMEN #카르멘", duration: "" }, { id: "uM7Z_gX2yrc", title: "Hearts2Hearts 하츠투하츠 'The Chase' Moving Clip #JIWOO #지우", duration: "" }, { id: "uQ0qLOnnr18", title: "Hearts2Hearts 하츠투하츠 'The Chase' Moving Clip #STELLA #스텔라", duration: "" }, { id: "bhPH2XWrBAs", title: "Hearts2Hearts 하츠투하츠 'The Chase' Moving Clip #IAN #이안", duration: "" }, { id: "blSCP-wFWUI", title: "Hearts2Hearts 하츠투하츠 'The Chase' Mood Sampler", duration: "" }, { id: "nF2gPfU6Kqg", title: "Hearts2Hearts 하츠투하츠 'The Chase' MV Teaser", duration: "" }, { id: "kxUA2wwYiME", title: "Hearts2Hearts 하츠투하츠 'The Chase' MV", duration: "" }, { id: "3ycS2cJvAN4", title: "Hearts2Hearts 'The Chase' Cheering Guide | You love The Chase 🍀🩵", duration: "" }, { id: "l20tTH8XirU", title: "Hearts2Hearts(하츠투하츠) 'The Chase' (4K) | STUDIO CHOOM ORIGINAL", duration: "" }, { id: "WK8c3dC1x78", title: "최초 공개' Hearts2Hearts - The Chase #엠카운트다운 EP.877 | Mnet 250227 방송", duration: "" }, { id: "iHNHdNlSWxA", title: "Hearts2Hearts 하츠투하츠 ’The Chase’ MV CommentaryㅣCrunchy Hearts EP.1", duration: "" }, { id: "VRFX3zpauzA", title: "The Chase - Hearts2Hearts (하츠투하츠) [뮤직뱅크/Music Bank] | KBS 250228 방송", duration: "" }, { id: "Emrj9p8Ovig", title: "Hearts2Hearts Debut Fan Showcase 〈Chase Our Hearts〉 (Full Ver.)", duration: "" }, { id: "HyvJ9Pfl7_o", title: "Hearts2Hearts (하츠투하츠) - The Chase | Show! MusicCore | MBC250301방송", duration: "" }, { id: "HqiaTnoApwk", title: "Hearts2Hearts (하츠투하츠) – The Chase @인기가요 inkigayo 20250302", duration: "" }, { id: "0mFn-oQhBZQ", title: "[릴레이댄스] 하츠투하츠(Hearts2Hearts) - The Chase (4K)", duration: "" }, { id: "GtPPT-qSXj8", title: "Hearts2Hearts 하츠투하츠 'The Chase' Performance Video", duration: "" }, { id: "0TowNuWl3Ck", title: "웃음만 잘 참았으면 좋겠습니다 ٩(^ᗜ^ )و⋆˙⟡ | Hearts2Hearts 하츠투하츠 Debut Trailer BH2ND", duration: "" }, { id: "hsn0T-SesuA", title: "Hearts2Hearts, The Chase (하츠투하츠, The Chase) [THE SHOW 250304]", duration: "" }, { id: "qB4MYtaL4Gs", title: "[HOT DEBUT] 하츠투하츠(Hearts2Hearts) - The Chase l Show Champion l EP.545 l 250305", duration: "" }, { id: "38bNr6gy4CE", title: "Hearts2Hearts 하츠투하츠 'The Chase' Dance Practice", duration: "" }, { id: "fHIwsnMV_dU", title: "(Full Focused) Hearts2Hearts(하츠투하츠) 'The Chase' (4K) | STUDIO CHOOM ORIGINAL", duration: "" }, { id: "AL_L7oXHfLI", title: "Hearts2Hearts - The Chase #엠카운트다운 EP.878 | Mnet 250306 방송", duration: "" }, { id: "IaI-JYrYrwI", title: "The Chase - Hearts2Hearts (하츠투하츠) [뮤직뱅크/Music Bank] | KBS 250307 방송", duration: "" }, { id: "hJ9Wp3PO3c8", title: "Hearts2Hearts 하츠투하츠 'Butterflies' MV", duration: "" }, { id: "00-Te7xhsok", title: "Hearts2Hearts (하츠투하츠) - The Chase | Show! MusicCore | MBC250308방송", duration: "" }, { id: "d-dt9ouxT38", title: "Hearts2Hearts (하츠투하츠) – The Chase @인기가요 inkigayo 20250309", duration: "" }, { id: "7-gVWmzjNDI", title: "Hearts2Hearts, The Chase (하츠투하츠, The Chase) [THE SHOW 250311]", duration: "" }, { id: "80-Q7b1qaFg", title: "Hearts2Hearts 하츠투하츠 'The Chase' Lyric Video", duration: "" }, { id: "baEB2UduZ_M", title: "Hearts2Hearts 하츠투하츠 'Butterflies' Karaoke Video", duration: "" }, { id: "3fWBeaeNvN0", title: "하츠투하츠(Hearts2Hearts) - The Chase l Show Champion l EP.546 l 250312", duration: "" }, { id: "oA4M2cF_vfY", title: "Hearts2Hearts - The Chase #엠카운트다운 EP.879 | Mnet 250313 방송", duration: "" }, { id: "YyyS81p3-2U", title: "[MPD직캠] 하츠투하츠 지우 직캠 4K 'The Chase' (Hearts2Hearts JIWOO FanCam) | @MCOUNTDOWN_2025.3.13", duration: "" }, { id: "sUVJ24RRQbk", title: "The Chase - Hearts2Hearts (하츠투하츠) [뮤직뱅크/Music Bank] | KBS 250314 방송", duration: "" }, { id: "ncWhY2tmi40", title: "Hearts2Hearts (하츠투하츠) - The Chase | Show! MusicCore | MBC250315방송", duration: "" }, { id: "X7a7XbHzIrk", title: "바람이 귀엽게 부는 곳은? ᯓᡣ𐭩 | Hearts2Hearts 하츠투하츠 ‘The Chase’ MV BH2ND #1", duration: "" }, { id: "ao3-xlU1H3g", title: "오늘 콘셉트는 AI 콘셉트입니다 𖠌𖥔‧₊˚ | Hearts2Hearts 하츠투하츠 ‘The Chase’ MV BH2ND #2", duration: "" }, { id: "3VxvujFYxek", title: "프로답게 해! 나는 해냈잖아(⸝⸝╸-╺⸝⸝) | Hearts2Hearts 하츠투하츠 ‘The Chase’ Jacket BH2ND", duration: "" }, { id: "pFsf73HNL6Q", title: "Hearts2Hearts 하츠투하츠 ‘The Chase’ Dance Practice BH2ND", duration: "" }, { id: "1QBBD4zEMbA", title: "Hearts2Hearts 하츠투하츠 ‘The Chase’ Recording BH2ND", duration: "" }, { id: "dFKIabiefsY", title: "다들 조심하세요 제 날개𓂃 ࣪˖ ʚїɞ♡ | Hearts2Hearts 하츠투하츠 ‘Butterflies’ MV BH2ND", duration: "" }, { id: "C-AEpv4hw20", title: "🌴: 너는 지금 고양이같아… 😊 : 고라니 같다고요…? | Hearts2Hearts 하츠투하츠 ‘The Chase’ Music Show BH2ND #1", duration: "" }, { id: "UzotXp59tbY", title: "오늘 먹방을 진행하겠습니다! (๑ᵔ⤙ᵔ๑) ⋆✴︎˚。⋆ | Hearts2Hearts 하츠투하츠 ‘The Chase’ Music Show BH2ND #2", duration: "" } ]; const series = { title: "The Chase Era", year: "2025", rating: "13+", language: "ENG SUB", description: "", cast: "", genres: "" }; const player = root.querySelector("#thechaseera-player"); const meta = root.querySelector("#thechaseera-meta"); const list = root.querySelector("#thechaseera-list"); const playerWrap = root.querySelector(".thechaseera-player-wrap"); const prevButton = root.querySelector("#thechaseera-previous"); const nextButton = root.querySelector("#thechaseera-next"); let currentVideoIndex = 0; const topButton = document.querySelector(".thechaseera-top"); root.querySelector("#thechaseera-title").textContent = series.title; const description = root.querySelector("#thechaseera-description"); const castRow = root.querySelector("#thechaseera-cast-row"); const genresRow = root.querySelector("#thechaseera-genres-row"); if (series.description.trim()) { description.textContent = series.description; description.hidden = false; } if (series.cast.trim()) { root.querySelector("#thechaseera-cast").textContent = series.cast; castRow.hidden = false; } if (series.genres.trim()) { root.querySelector("#thechaseera-genres").textContent = series.genres; genresRow.hidden = false; } function renderMeta() { meta.replaceChildren(); const values = [ series.year, series.rating, thechaseeraVideos.length + " Episodes", series.language ]; values.forEach(function (value, index) { if (index > 0) { const separator = document.createElement("span"); separator.textContent = "•"; meta.appendChild(separator); } const item = document.createElement("span"); item.textContent = value; meta.appendChild(item); }); } function loadVideo(video, shouldScroll) { if (!video) return; currentVideoIndex = thechaseeraVideos.findIndex(function (item) { return item.id === video.id; }); prevButton.disabled = currentVideoIndex <= 0; nextButton.disabled = currentVideoIndex >= thechaseeraVideos.length - 1; player.src = "https://www.youtube-nocookie.com/embed/" + video.id; player.title = video.title; list.querySelectorAll(".thechaseera-card").forEach(function (card) { const active = card.dataset.videoId === video.id; card.classList.toggle("active", active); if (active) { card.setAttribute("aria-current", "true"); } else { card.removeAttribute("aria-current"); } }); if (shouldScroll) { playerWrap.scrollIntoView({ behavior: "smooth", block: "start" }); } } prevButton.addEventListener("click", function () { if (currentVideoIndex > 0) { loadVideo(thechaseeraVideos[currentVideoIndex - 1], true); } }); nextButton.addEventListener("click", function () { if (currentVideoIndex < thechaseeraVideos.length - 1) { loadVideo(thechaseeraVideos[currentVideoIndex + 1], true); } }); thechaseeraVideos.forEach(function (video, index) { const card = document.createElement("div"); card.className = "thechaseera-card"; card.dataset.videoId = video.id; card.tabIndex = 0; card.setAttribute("role", "button"); card.setAttribute( "aria-label", "Play episode " + (index + 1) + ": " + video.title ); const number = document.createElement("div"); number.className = "thechaseera-number"; number.textContent = index + 1; const thumb = document.createElement("img"); thumb.className = "thechaseera-thumb"; thumb.src = "https://i.ytimg.com/vi/" + video.id + "/hqdefault.jpg"; thumb.alt = ""; thumb.loading = "lazy"; const text = document.createElement("div"); text.className = "thechaseera-card-text"; const cardTitle = document.createElement("div"); cardTitle.className = "thechaseera-card-title"; cardTitle.textContent = video.title; const duration = document.createElement("div"); duration.className = "thechaseera-duration"; duration.textContent = video.duration; text.appendChild(cardTitle); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click", function () { loadVideo(video, true); }); card.addEventListener("keydown", function (event) { if (event.key === "Enter" || event.key === " ") { event.preventDefault(); loadVideo(video, true); } }); list.appendChild(card); }); renderMeta(); loadVideo(thechaseeraVideos[0], false); window.addEventListener("scroll", function () { if (window.scrollY > 300) { topButton.classList.add("show"); } else { topButton.classList.remove("show"); } }, { passive: true }); topButton.addEventListener("click", function () { window.scrollTo({ top: 0, behavior: "smooth" }); }); })();

•••

Cast:

Genres:

⏷ Episode List
const interviewsnradioSeries={ title:"Interviews & Radio", year:"2025", rating:"13+", language:"ENG SUB", description:"A collection of interviews, radio broadcasts, and promotional appearances featuring Hearts2Hearts across various Korean and international media.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Interview • Radio" }; const interviewsnradioEpisodes=[ { title:"[FULL/SUB+] EP#237 집중💛 아돌라에 하투하 나옵니탱🍋|아이돌 라디오(IDOL RADIO) 시즌4|MBC 260708 방송", duration:"1h 56m", id:"Ta0Rem7MXoo" }, { title:"[FULL] 하츠투하츠의 새콤달콤한 매력에 빠질 준비 되셨나요?🍋 청량하고 상큼한 Hearts2Hearts(하츠투하츠) 보는 라디오 | 12시엔 주현영 | 260624", duration:"36m", id:"uYK1zsKiR8c" }, { title:"볼륨 초대석 : 최효정의 비밀정원 with 하츠투하츠(Hearts2Hearts) full ver. / [오마이걸 효정의 볼륨을 높여요] | KBS 260623 방송", duration:"39m", id:"cnSlVfZHsbo" }, { title:"Global Spin Live: Hearts2Hearts", duration:"48m", id:"ub_9CPk5aEI" }, { title:"(ENG) 퇴근을 건 밸런스게임 시작합니다 💨 하츠투하츠 지우&주은 탈출 가능? | Hearts2Hearts 지우&주은 | 퇴근파서블 | IDOL RADIO UNIVERSE", duration:"3m", id:"n1D7uVdh_HE" }, { title:"Hearts2Hearts 하츠투하츠 メンバーが日本語で自己紹介&特技を披露!話題曲 'RUDE!' の“ナレーションチャレンジ”生パフォーマンスも【めざましテレビ未公開インタビュー】", duration:"10m", id:"lnBKV0_wiZs" }, { title:"Hearts2Hearts ke Jakarta, Seru Jadi Reporter hingga Main Angklung", duration:"39m", id:"2Y3ECktDlyk" }, { title:"Hearts2Hearts Talk North America Tour, Debut Life, 'RUDE!', and What's Next in 2026", duration:"14m", id:"eZkr63kyqfc" }, { title:"라이징 고수 with 하츠투하츠 / [박명수의 라디오쇼] | KBS 260306 방송", duration:"34m", id:"mUuAqnZoTqk" }, { title:"[FULL] 하츄들 모여라~🙌🏻 스포왕에 💗우주즈💗 등장! | 스포왕 고영배 | MBC 260301 방송", duration:"1h 3m", id:"ErsxVS1MqUQ" }, { title:"💗 스텔라 & 유하 💕 | 하츠투하츠(Hearts2Hearts) | 프로듀스1077 | 배성재의 텐 | 20260226", duration:"1h 13m", id:"FmTfEffk_qs" }, { title:"(ENG) 소녀들의 웃음에 FOCUS할 시간🩵 오늘 아침에 등장한 ✨하츠투하츠✨ 비하인드 | Hearts2Hearts | 오늘 아침 윤상입니다 | BEHIND Mhz", duration:"7m", id:"COBb2_LZ7JM" }, { title:"[FULL] ✨하츠투하츠✨ FOCUS 할 수 밖에 없는 소녀들의 오늘 아침 첫 등장🎶🩷 | 오늘 아침 윤상입니다 | MBC 251023 방송", duration:"1h 3m", id:"aJDmODZxVm0" }, { title:"[FULL] 온 세상을 ✨집중✨시킬 8명의 소녀들 💕하츠투하츠(Hearts2Hearts)보는 라디오 | 웬디의 영스트리트 | 251021", duration:"41m", id:"RQXx-kN7ZMs" }, { title:"Hearts2Hearts Talks Performing At Wango Tango, Debut Track 'The Chase' & More!", duration:"5m", id:"yIIV-Wkoodw" }, { title:"[INTERVIEW] Hearts2Hearts Interview with #ChannelK #KRazeeTalks", duration:"6m", id:"_KWaatRaGDM" }, { title:"가광 초대석, 누구세요? with Hearts2Hearts(하츠투하츠) full ver. / [이은지의 가요광장] | KBS 250307 방송", duration:"37m", id:"E42V6pSPWBw" }, { title:"[FULL][SUB] 💘Hearts2Hearts(하츠투하츠) 첫 라디오 출연! 데뷔 비하인드부터 첫 음방 소감까지🎤 보는 라디오 | 박소현의 러브게임 | 250305", duration:"39m", id:"kiaWQdn1ssM" }, { title:"[FULL] 정희에 갓기 요정들 강림‼️ ✨하츠투하츠✨를 더 알고 싶어💖 | 정오의 희망곡 김신영입니다 | MBC 250304 방송", duration:"57m", id:"8oDlOCB5s6A" } ]; const interviewsnradioPlayer=document.querySelector(".interviewsnradio-player"); const interviewsnradioList=document.querySelector(".interviewsnradio-list"); document.querySelector(".interviewsnradio-title").textContent=interviewsnradioSeries.title; document.querySelector(".interviewsnradio-year").textContent=interviewsnradioSeries.year; document.querySelector(".interviewsnradio-rating").textContent=interviewsnradioSeries.rating; document.querySelector(".interviewsnradio-count").textContent=interviewsnradioEpisodes.length+" Episodes"; document.querySelector(".interviewsnradio-language").textContent=interviewsnradioSeries.language; document.querySelector(".interviewsnradio-description").textContent=interviewsnradioSeries.description; document.querySelector(".interviewsnradio-cast").textContent=interviewsnradioSeries.cast; document.querySelector(".interviewsnradio-genres").textContent=interviewsnradioSeries.genres; function interviewsnradioLoadEpisode(index){ const episode=interviewsnradioEpisodes[index]; interviewsnradioPlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".interviewsnradio-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } interviewsnradioEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="interviewsnradio-card"; const number=document.createElement("div"); number.className="interviewsnradio-number"; number.textContent=interviewsnradioEpisodes.length-index; const thumb=document.createElement("img"); thumb.className="interviewsnradio-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="interviewsnradio-card-text"; const title=document.createElement("div"); title.className="interviewsnradio-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="interviewsnradio-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ interviewsnradioLoadEpisode(index); document.querySelector(".interviewsnradio-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); interviewsnradioList.appendChild(card); }); interviewsnradioLoadEpisode(0); const interviewsnradioTop=document.querySelector(".interviewsnradio-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ interviewsnradioTop.classList.add("show"); }else{ interviewsnradioTop.classList.remove("show"); } }); interviewsnradioTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });
text

•••

Cast:

Genres:

⏷ Episode List
const guestSeries = { title: "Guest Variety Shows", year: "2025", rating: "13+", language: "ENG SUB", description: "A collection of Hearts2Hearts' guest appearances across various YouTube channels, featuring collaborations, interviews, games, talk shows, and special content with other artists and creators.", cast: "Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres: "Variety • Talk Show" }; const guestEpisodes = [ { title: "Hearts2Hearts (하츠투하츠) Eat the Spiciest Meal of Their Lives | Heat Eaters", duration: "15m", id: "DJBkvbuNwNY" }, { title: "What if Jiwoo and Yuha were given advice while playing baseball? | Quiet Game Club EP05", duration: "31m", id: "E6AY3G6VIBw" }, { title:"하츠투하츠 지우, 유하에게 요리할 때 훈수를 둔다면? | 조용한 게임부 EP04", duration:"32m", id:"i10k0lbYxic" }, { title:"Play this while you sleep (Hearts2Hearts Carmen, Stella, Jueun, Ye-on)", duration:"1h 32m", id:"dZG2TbJz6uM" }, { id:"e3s9Ky_w_4Y", title:"I hope it’s my younger sibling Hearts2Hearts JIWOO&A-NA 🐰🐵 | FollowREI EP.95", duration:"21m" }, { id:"_90GndCySTw", title:"[SUB] Poppin’ poppin’ Drop your worries~!💘 H2H to the rescue! | JOHNNY CARMEN STELLA (Hearts2Hearts)", duration:"26m" }, { id:"tSsUOafI5sE", title:"[ENG] Hearts to Hearts 100% Juice Squeezed | Hearts to Hearts | Yoo In Radio S3 EP.19", duration:"48m" }, { id:"Ot1GZclqSXg", title:"What If You Backseat Drive Hearts2Hearts’ JIWOO & YUHA? | Quiet Game Club EP03", duration:"33m" }, { title:"[Sana's Fridge Interview] You made the first move, okay?💘l EP.20 Hearts2Hearts (H2H) Jiwoo's Episode", duration:"44m", id:"s0mYJkEBlqo" }, { title:"[ENG] 언니보고 2세대라고 하지 말랬지. 여기 2세대가 어딨어. 효리수가 2세대야? / 가짜 김효연 | 효리수 데뷔 프로젝트 5화 (소녀시대 효연, 유리, 수영, 하츠투하츠)", duration:"36m", id:"jOO5xRziJ7E" }, { title:"What Acting Advice Would You Give Hearts2Hearts’ JIWOO and YUHA? | Quiet Game Club EP.02", duration:"29m", id:"K8iH7w7piag" }, { id:"nVV2WjTThjE", title:"Heart-to-Heart: Who Will Be the Futsal King? Minho Team vs. Changmin Team Futsal Match", duration:"18m" }, { id:"3VV4sfS5f1w", title:"SM 2nd Gen vs 5th Gen | Choi Minho Takes on Hearts2Hearts (feat. MAX Changmin.)", duration:"20m" }, { id:"RzcIatCkydc", title:"DMZ와 MZ의 만남 기쁘다!🍓🌴😊| 월간 할머니집 EP.03", duration:"25m" }, { id:"Idogbb3HV9k", title:"하투하는 레몬탱🍋 아맹은 제육탱🌶️[SUB]", duration:"25m" }, { id:"X9PyU8nuosg", title:"하츠투하츠 지우, 유하에게 축구 게임을 할 때 훈수를 둔다면? | 조용한 게임부 EP01", duration:"27m" }, { id:"ZBZ9_MFYg1Y", title:"【배좋좋 ep10】하투하와 지금부터 배구공 탱탱탱! 다 이겨, 하투하 (ENG SUB)", duration:"43m" }, { id:"v66pVw6TR2Q", title:"진실과 거짓의 카오스.. 넷이 모이니 자꾸 양치기 소녀가 되 I 혤's club🍸 ep77 유하 스텔라 이안", duration:"33m" }, { id:"FOyk1d86IAU", title:"I Paid Hearts2Hearts $20 to do E-Trike Karaoke", duration:"2m" }, { id:"R63QAO0YeLY", title:"[SUB] 하투하 부모님도 아닌데 카네이션 단 기분이 되 ✿ㅣ추카추카추 EP.23 하츠투하츠 편 #김희철 #하츠투하츠 #Hearts2Hearts", duration:"34m" }, { id:"oJyfRAGj89c", title:"DIY MIRROR CLAY with Hearts2Hearts 🩵 | Bikin Cermin Aesthetic", duration:"20m" }, { id:"1kEeCX1MLWc", title:"HEARTS2HEARTS JADI ANAK MAGANG DI MANTAPPU CORP!? BELAJAR BAHASA GAUL😂", duration:"27m" }, { id:"LhQSxRc8D8E", title:"미물 아니야~ 예쁜 누나쟈나~💕 | 하츠투하츠 이안&스텔라 | 콜미베이비 EP.22", duration:"22m" }, { id:"Ie8XeanwG6g", title:"(ENG) 가챠 뽑자 난 다 궁금해🩵 민서 동갑 친구 하츠투하츠(Hearts2Hearts) 에이나X이안이랑 데이트했습니다 | 할명수 ep.277", duration:"17m" }, { id:"P8FDMruoUdg", title:"[SUB] 칼군무 그룹? ‘하루’면 충분한데요 🤭 | Ep.43 Hearts2Hearts | 연습실 바다쌤", duration:"19m" }, { id:"czcsP53TVF8", title:"\"감자와 원숭이의 만남\"ㅣEP.12 하츠투하츠(Hearts2Hearts)ㅣ미미미누의 방구석 분석", duration:"35m" }, { title:"[SUB] Duckbaphouse Unreleased ② [fromis_9, P1Harmony, MONSTA X, ALPHA DRIVE ONE, Hearts2Hearts]", duration:"13m", id:"Up7D8GiDM1c" }, { title:"HEARTS2HEARTS MAIN KERUMAH !", duration:"39m", id:"sddu7aPxv6k" }, { id:"LMvtEyKTLEA", title:"[SUB] 장기자랑으로 승부보는 신개념 요리 대결 [덕밥집 EP.10 Hearts2Hearts]", duration:"28m" }, { id:"tcSf_AgA2gg", title:"Main Ular Tangga Raksasa Bareng Hearts2Hearts", duration:"23m" }, { id:"JyLrSZaReKs", title:"애교 가득 SM 막내들 등장✨모두 다 하츠투하츠에게 집중₊·—♥지우&유하&스텔라&주은ㅣ슬기네 사진관", duration:"22m" }, { id:"JeIx_j4UI6M", title:"[sub] 'SPAGHETTI'🍝로 돌아온 은채💕와 햇살캐🌻🌴빅핸즈의 케미 모두 집.중 FOCUS🔍 | 은채의 스타일기💫 외전 : 은채의 스파게티 | Hearts2Hearts", duration:"35m" }, { id:"BTECqsnp3IU", title:"[출장 문쌤] 신인 아이돌 기강 잡으러 갔습니다 (EP.1 Hearts2Hearts)", duration:"17m" }, { id:"NvVBrNAjmRg", title:"둘! 셋! 하츠투하츠 난 다 궁금해 | 단순노동·하츠투하츠·엄태구·카르멘·예온", duration:"26m" }, { id:"JXo1HGntdjA", title:"대기업 신인 예쁘긴 예쁘네 💖ㅣ에스엠 알바ㅣ워크돌ㅣWayV, 하츠투하츠, 빌리 츠키", duration:"18m" }, { id:"pf9j1V9zf_w", title:"[ENG] 잘 봐, 이게 SM 데뷔 100일 차의 예능 STYLE이야 / 밥사효2 EP.03 하츠투하츠(Hearts2Hearts) 편", duration:"26m" } ]; const guestPlayer = document.querySelector(".guest-player"); const guestList = document.querySelector(".guest-list"); document.querySelector(".guest-title").textContent = guestSeries.title; document.querySelector(".guest-year").textContent = guestSeries.year; document.querySelector(".guest-rating").textContent = guestSeries.rating; document.querySelector(".guest-count").textContent = guestEpisodes.length + " Episodes"; document.querySelector(".guest-language").textContent = guestSeries.language; document.querySelector(".guest-description").textContent = guestSeries.description; document.querySelector(".guest-cast").textContent = guestSeries.cast; document.querySelector(".guest-genres").textContent = guestSeries.genres; function guestLoadEpisode(index){ const episode = guestEpisodes[index]; guestPlayer.src = "https://www.youtube-nocookie.com/embed/" + episode.id; document.querySelectorAll(".guest-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } guestEpisodes.forEach(function(episode,index){ const card = document.createElement("div"); card.className = "guest-card"; const number = document.createElement("div"); number.className = "guest-number"; number.textContent = guestEpisodes.length - index; const thumb = document.createElement("img"); thumb.className = "guest-thumb"; thumb.src = "https://i.ytimg.com/vi/" + episode.id + "/hqdefault.jpg"; const text = document.createElement("div"); text.className = "guest-card-text"; const title = document.createElement("div"); title.className = "guest-card-title"; title.textContent = episode.title; const duration = document.createElement("div"); duration.className = "guest-duration"; duration.textContent = episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click", function(){ guestLoadEpisode(index); document.querySelector(".guest-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); guestList.appendChild(card); }); guestLoadEpisode(0); const guestTop = document.querySelector(".guest-top"); window.addEventListener("scroll", function(){ if(window.scrollY > 300){ guestTop.classList.add("show"); }else{ guestTop.classList.remove("show"); } }); guestTop.addEventListener("click", function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

•••

Cast:

Genres:

⏷ Episode List
const soloVarietySeries = { title: "Solo Variety Shows", year: "2025", rating: "13+", language: "ENG SUB", description: "A collection of third-party variety shows centered exclusively on Hearts2Hearts, released across various YouTube channels outside their official account.", cast: "Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres: "Variety • Comedy" }; const soloVarietyEpisodes = [ { title:"[SUB] 하투하한테 고민상담 맡겼더니...🍋 \"이겨내\" VS \"살려줘\" 😱|EP.3 Hearts2Hearts (하츠투하츠)|아이돌 상담소 | IDOL RADIO UNIVERSE", duration:"15m", id:"ihB2Fdv9mcI" }, { id:"9Sux2icnFhY", title:"(Behind) Hearts2Hearts(하츠투하츠) 'Lemon Tang' | MOVE TO PERFORMANCE (SUB)", duration:"10m" }, { id:"rod8lAguJ6Q", title:"특종⚠️ 학교에서 포착된 인간 레몬🍋 하츠투하츠 | 비밀 전학생 시즌2 Ep.06", duration:"32m" }, { id:"xnvGRflUUlA", title:"[ENG/IND] Hearts2Hearts JIWOO & CARMEN | Interviewed to Bring Cultures Together | Future Interviewer 07", duration:"15m" }, { id:"c7syefpbfiY", title:"Hearts2Hearts Plays Who's Who", duration:"13m" }, { id:"KS2eI_U2aNY", title:"퀸은 울지 않ㅇr..☆ 하츠투하츠의 팔씨름 잔치(가 아니라 퇴근 잔치 💨)ㅣ스포티파이 아이돌잔치", duration:"16m" }, { id:"Vg905CNBuDI", title:"[아두럽] 수상할 정도로 개그 욕심이 많은 걸그룹?🤭 하츠투하츠가 아두럽에서 제대로 무리하고 감💦 | IDOL DKDK CLUB - Hearts2Hearts (SUB)", duration:"34m" }, { id:"Qlp1XRoDEnM", title:"Hearts2Hearts(하츠투하츠)의 짜릿한 셔플쇼 너무 좋잖아 🍋ㅣ스포티파이 K-Pop ON! RECORD", duration:"26m" }, { id:"iuSOehwZKMA", title:"[SUB] 케이팝 씹어 먹을 하츠투하츠 후배 그룹(?)의 등장이라… (feat. 하이나믹듀오, 워터에잇) | 아이돌 인간극장", duration:"46m" }, { id:"foXDiu_wDRE", title:"Hearts2Hearts Tries & Rates Viral Foods!", duration:"27m" }, { id:"1YM5OlDFHno", title:"How Well Does Hearts2Hearts Know K-Pop?", duration:"20m" }, { id:"9o-MKtl4k80", title:"Hearts2Hearts Tries American Foods For The First Time | Buzz Bites", duration:"12m" }, { title:"(Behind) Hearts2Hearts(하츠투하츠) 'RUDE!' | STUDIO CHOOM ORIGINAL (SUB)", duration:"15m", id:"xUGpD3zFkSE" }, { id:"HaOUfosT_v8", title:"[SUB] 마피아댄스하다가 공식 사과한 하츠투하츠?!🤣 | Hearts2Hearts의 마피아댄스 | MAFIA DANCEㅣ딩고뮤직ㅣdingo Music", duration:"19m" }, { id:"XlxzbmAVS2s", title:"[SUB] EP.57-2 Hearts2Hearts | 나 안.긁.혔.어.(🙀) 귀가 흔들리지만 제 의지가 아닙니다 | 돌박이일 하츠투하츠 겨울방학 스페셜 투어 2탄 [4K]", duration:"60m" }, { id:"jfZQtuXTJ4E", title:"[SUB] EP.57-1 Hearts2Hearts | 랜플댄? 질 수 없지! 하투하배 4:4 댄스 배틀~(˘▾˘)~ | 돌박이일 하츠투하츠 겨울방학 스페셜 투어 1탄 [4K]", duration:"45m" }, { id:"pSf4I7qNcWU", title:"[#2025MAMA] 같이 올리브영 가자 네 PACK이 참 궁금해✧˖:🎀: ✧˖° | Hearts2Hearts (하츠투하츠)", duration:"16m" }, { id:"14BvvGZzGsQ", title:"신인 여돌 똥군기 잡고 왔음 💩 (하투하: 꺄르르)ㅣ에버랜드 사육사ㅣ워크돌ㅣ하츠투하츠 이안, 지우, 에이나", duration:"16m" }, { id:"VOcXrGqE1do", title:"[SUB] 프로 아이돌 하츠투하츠가 머리카락 컨트롤하는법 알려드림🤣 | 아이돌 인간극장", duration:"31m" }, { id:"G-lM1kFWj5s", title:"[CC] 보는 순간 FOCUS될 Hearts2Hearts(하츠투하츠)의 프로필 💖ㅣSpotify Super Rookie", duration:"14m" }, { id:"s885zN6Jq3E", title:"(CC) Hearts2Hearts + 1 K-pop quiz = 0 FOCUS 😂 | This or That I Hearts2Hearts", duration:"14m" }, { id:"r8wSsCMpnZ8", title:"[ENG] ???: 착하게 살아서 좋은 말만 가득할 것 같아요😆 웃음 가득한 Hearts2Hearts의 익명 채팅방 | SECRET CHATㅣ딩고뮤직ㅣdingo Music", duration:"19m" }, { id:"PnvEADA-wuQ", title:"[SUB] 소녀들 수련회 방해하면 교관님 저숭라라 가죠 | 돌들의침묵 | Hearts2Hearts(하츠투하츠) 'STYLE'", duration:"19m" }, { id:"gfboEqd70B8", title:"(CC) Which Hogwarts house fits each H2H member?🪄 🧙‍♂️ | Question Parade | Hearts2Hearts", duration:"13m" }, { id:"cO79GxP8v2I", title:"강당에서 노래 듣는데 하츠투하츠가 깜짝 등장한다면?! l [딩고 어택] 학교편 with 하츠투하츠 (Hearts2Hearts)", duration:"16m" }, { id:"Sb0HlJQGdc0", title:"Hearts2Hearts Play Know or No!", duration:"14m" }, { id:"l2wgYbbCV9I", title:"[Sub] 가방에서 이게 왜 나와...?🤔 하츠투하츠의 LIFE 'STYLE' 탐구👀 | 슬기로운 학급회의 | Hearts2Hearts", duration:"21m" }, { id:"C0XPAg1wPAk", title:"K-pop idols caught lying... on purpose? 🚨 | Jinjja Forreal | Hearts2Hearts", duration:"9m" }, { id:"I0Yh_mcmNn8", title:"[ENG/ID] 하츠투하츠 대체 이걸 왜 가져오셨어요?💦 카르멘의 멤버 공유(?)템 공개! 브레이크 없는 이안의 텐션으로 최애템 모두 털고 컴백하실게요~ by W Korea", duration:"10m" }, { id:"bFkGRnYVqpM", title:"MBTI ‘T’ 다량 보유 그룹, 하츠투하츠의 프로필 최.초.공.개.", duration:"11m" }, { id:"pX9T3fBfAlE", title:"(Behind) Hearts2Hearts(하츠투하츠) 'The Chase' | STUDIO CHOOM ORIGINAL (ENG SUB)", duration:"16m" }, { id:"008r2I5duAg", title:"[SUB] 우리 벌써 1주년이야...🥺 하츠투하츠 컴백 기념 비하인드 대방출✨ | 아이돌 인간극장", duration:"27m" }, { id:"tUOESvUHIuA", title:"[SUB] 🌳위키에 ‘하츠투하츠’ 검색하고 깜짝 놀란 귀염뽀짝 갓기들 | 아이돌 인간극장", duration:"34m" } ]; const soloVarietyPlayer = document.querySelector(".soloVariety-player"); const soloVarietyList = document.querySelector(".soloVariety-list"); document.querySelector(".soloVariety-title").textContent = soloVarietySeries.title; document.querySelector(".soloVariety-year").textContent = soloVarietySeries.year; document.querySelector(".soloVariety-rating").textContent = soloVarietySeries.rating; document.querySelector(".soloVariety-count").textContent = soloVarietyEpisodes.length + " Episodes"; document.querySelector(".soloVariety-language").textContent = soloVarietySeries.language; document.querySelector(".soloVariety-description").textContent = soloVarietySeries.description; document.querySelector(".soloVariety-cast").textContent = soloVarietySeries.cast; document.querySelector(".soloVariety-genres").textContent = soloVarietySeries.genres; function soloVarietyLoadEpisode(index){ const episode = soloVarietyEpisodes[index]; soloVarietyPlayer.src = "https://www.youtube-nocookie.com/embed/" + episode.id; document.querySelectorAll(".soloVariety-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } soloVarietyEpisodes.forEach(function(episode,index){ const card = document.createElement("div"); card.className = "soloVariety-card"; const number = document.createElement("div"); number.className = "soloVariety-number"; number.textContent = soloVarietyEpisodes.length - index; const thumb = document.createElement("img"); thumb.className = "soloVariety-thumb"; thumb.src = "https://i.ytimg.com/vi/" + episode.id + "/hqdefault.jpg"; const text = document.createElement("div"); text.className = "soloVariety-card-text"; const title = document.createElement("div"); title.className = "soloVariety-card-title"; title.textContent = episode.title; const duration = document.createElement("div"); duration.className = "soloVariety-duration"; duration.textContent = episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click", function(){ soloVarietyLoadEpisode(index); document.querySelector(".soloVariety-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); soloVarietyList.appendChild(card); }); soloVarietyLoadEpisode(0); const soloVarietyTop = document.querySelector(".soloVariety-top"); window.addEventListener("scroll", function(){ if(window.scrollY > 300){ soloVarietyTop.classList.add("show"); }else{ soloVarietyTop.classList.remove("show"); } }); soloVarietyTop.addEventListener("click", function(){ window.scrollTo({ top:0, behavior:"smooth" }); });
Note: Video is available for this episode! Click it to open it on Spotify, as Spotify doesn't support video embeds.

••

⏷ Episodes
const heartspodEpisodes=[ { title:"CARMEN & STELLA Talk About Life in Korea 💭 Korea Tips Every Foreigner Should Know! | HeartsPod Ep.3", duration:"30m", id:"7Lq7cF5oXwbqpcx04zACcj", thumbnail:"https://i.imgur.com/HyqqU5b.jpeg", active:true }, { title:"Let Me Sing a Verse for You🎙️ STELLA’s Favorite Playlist! | HeartsPod Ep.2", duration:"19m", id:"7bhCi0X4nD6yacbSSjRsCA", thumbnail:"https://i.imgur.com/f24cyPm.jpeg", active:false }, { title:"Any Teen Worries? Easy Peasy Lemon Squeezy Advice Booth with STELLA | HeartsPod Ep.1", duration:"23m", id:"7priyccXMgsK0YAUSrT15G", thumbnail:"https://i.imgur.com/83UhvQq.jpeg", active:false } ]; const heartspodPlayer=document.querySelector(".heartspod-player"); const heartspodList=document.querySelector(".heartspod-list"); document.querySelector(".heartspod-title").textContent="HeartsPod"; document.querySelector(".heartspod-year").textContent="2026"; document.querySelector(".heartspod-rating").textContent="13+"; document.querySelector(".heartspod-genre").textContent="Podcast"; document.querySelector(".heartspod-description").textContent="A collection of Hearts2Hearts' HeartsPod episodes."; function heartspodLoadEpisode(index){ const episode=heartspodEpisodes[index]; heartspodPlayer.src= "https://open.spotify.com/embed/episode/"+episode.id+"?utm_source=generator"; document.querySelectorAll(".heartspod-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } heartspodEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="heartspod-card"; if(episode.active){ card.classList.add("active"); } const number=document.createElement("div"); number.className="heartspod-number"; number.textContent=heartspodEpisodes.length-index; const thumb=document.createElement("img"); thumb.className="heartspod-thumb"; thumb.src=episode.thumbnail; const text=document.createElement("div"); text.className="heartspod-card-text"; const title=document.createElement("div"); title.className="heartspod-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="heartspod-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ heartspodLoadEpisode(index); document.querySelector(".heartspod-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); heartspodList.appendChild(card); }); heartspodLoadEpisode(0); const heartspodTop=document.querySelector(".heartspod-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ heartspodTop.classList.add("show"); }else{ heartspodTop.classList.remove("show"); } }); heartspodTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

XOXO, GOS2IP GIRL

2026•13+•38m

Cast: Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on

Genres: Comedy

const gossipgirlTop=document.querySelector(".gossipgirl-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ gossipgirlTop.classList.add("show"); }else{ gossipgirlTop.classList.remove("show"); } }); gossipgirlTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

Random Hot Pot Challenge

2026•13+•22m

Hearts2Hearts eat hotpot and have to choose ingredients from 10 different categories but there's a twist: the entire menu is written in Chinese characters (Hanja). Since the members can't read the characters, what could possibly go wrong?

Cast: Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on

Genres: Mukbang

const hotpotTop=document.querySelector(".hotpot-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ hotpotTop.classList.add("show"); }else{ hotpotTop.classList.remove("show"); } }); hotpotTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

•••

Cast:

Genres:

const gtg2Series = { title: "Gal to Gal #2", year: "2026", rating: "13+", language: "ENG SUB", description: "Hearts2Hearts try on gyaru makeup and venture around Tokyo Tower!", cast: "Carmen, A-na, Ian, Ye-on", genres: "Variety" }; const gtg2Episode = { id:"bzzPb1RJQDk" }; const gtg2Player = document.querySelector(".gtg2-player"); document.querySelector(".gtg2-title").textContent = gtg2Series.title; document.querySelector(".gtg2-year").textContent = gtg2Series.year; document.querySelector(".gtg2-rating").textContent = gtg2Series.rating; document.querySelector(".gtg2-count").textContent = "1 Episode"; document.querySelector(".gtg2-language").textContent = gtg2Series.language; document.querySelector(".gtg2-description").textContent = gtg2Series.description; document.querySelector(".gtg2-cast").textContent = gtg2Series.cast; document.querySelector(".gtg2-genres").textContent = gtg2Series.genres; gtg2Player.src = "https://www.youtube-nocookie.com/embed/" + gtg2Episode.id; const gtg2Top = document.querySelector(".gtg2-top"); window.addEventListener("scroll", function(){ if(window.scrollY > 300){ gtg2Top.classList.add("show"); }else{ gtg2Top.classList.remove("show"); } }); gtg2Top.addEventListener("click", function(){ window.scrollTo({ top: 0, behavior: "smooth" }); });

•••

Cast:

Genres:

const gtg1Series = { title: "Gal to Gal #1", year: "2026", rating: "13+", language: "ENG SUB", description: "Hearts2Hearts try on gyaru makeup and venture along the streets of Harajuku, Japan!", cast: "Jiwoo, Yuha, Stella, Juun", genres: "Variety" }; const gtg1Episode = { id:"SPx1a4JSqZ8" }; const gtg1Player = document.querySelector(".gtg1-player"); document.querySelector(".gtg1-title").textContent = gtg1Series.title; document.querySelector(".gtg1-year").textContent = gtg1Series.year; document.querySelector(".gtg1-rating").textContent = gtg1Series.rating; document.querySelector(".gtg1-count").textContent = "1 Episode"; document.querySelector(".gtg1-language").textContent = gtg1Series.language; document.querySelector(".gtg1-description").textContent = gtg1Series.description; document.querySelector(".gtg1-cast").textContent = gtg1Series.cast; document.querySelector(".gtg1-genres").textContent = gtg1Series.genres; gtg1Player.src = "https://www.youtube-nocookie.com/embed/" + gtg1Episode.id; const gtg1Top = document.querySelector(".gtg1-top"); window.addEventListener("scroll", function(){ if(window.scrollY > 300){ gtg1Top.classList.add("show"); }else{ gtg1Top.classList.remove("show"); } }); gtg1Top.addEventListener("click", function(){ window.scrollTo({ top: 0, behavior: "smooth" }); });

The Clean Girls' Night in LA

2026•13+•1 Episode•ENG SUB

Hearts2Hearts adventures in Los Angeles!

Cast: Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on

Genres: Variety

const tcgnTop=document.querySelector(".tcgn-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ tcgnTop.classList.add("show"); }else{ tcgnTop.classList.remove("show"); } }); tcgnTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

The Devil Wears Hearts2Hearts

2026•13+•1 Episode•ENG SUB

Hearts2Hearts adventures in New York!

Cast: Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on

Genres: Comedy

const tdwhTop=document.querySelector(".tdwh-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ tdwhTop.classList.add("show"); }else{ tdwhTop.classList.remove("show"); } }); tdwhTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

Introducing Hearts2Hearts Plushies

2026•13+•1 Episode•ENG SUB

Hearts2Hearts introduces their cute mini-mes HeartskkyuHearts!

Cast: Bing Ping, Jjoojebi, Toramui, Stellnyang, Jjuuilien, No Song Ee, Jeong Ddang Kong, Alssong Hamssong

Genres: Comedy

const hkhTop=document.querySelector(".hkh-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ hkhTop.classList.add("show"); }else{ hkhTop.classList.remove("show"); } }); hkhTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

•••

Cast:

Genres:

⏷ Episode List
const chbSeries = { title: "Chat Hearts2Hearts Behind", year: "2025", rating: "13+", language: "NO SUB", description: "Behind the scenes of Chat Hearts2Hearts!", cast: "Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres: "Comedy• Variety" }; const chbEpisodes = [ { id:"tYXmPAJTIQk", title:"공기 놀이+야자타임+명장면 퀴즈까지 알차게 즐긴 하투하 스쿨❣️ | 비하인드 | 웨이브", duration:"10m" }, { id:"V1QvW_2evGk", title:"평화로운 제주도🍊에서 펼쳐진 불꽃 튀는 아이 엠 그라운드 대결?!💥 | 비하인드 | 웨이브", duration:"9m" }, { id:"y-RgzVKSfd4", title:"폐교 체험?! 별점 2.5점 ★ ★ ☆ 드립니다! 쫄보들의 허세 작렬 미션 후기 | 비하인드 | 웨이브", duration:"5m" }, { id:"dzDZaUPJ7Ns", title:"혹시,,, 제일 무서웠던 언니는? 😲 버스 안에서는 진실게임이 국룰 | 비하인드 | 웨이브", duration:"7m" }, { id:"X9Yayx6JxJA", title:"지우X이안 크로스!🙌 이대로 미션 실패...?! 쉽지 않은 예능의 길💦 | 비하인드 | 웨이브", duration:"10m" }, { id:"qXK8oLhpLGg", title:"최초 공개! SM에서는 OO OO 수업을 듣는다?! H2H에게 듣는 연습생 썰! | 비하인드 | 웨이브", duration:"6m" }, { id:"23FLkcpu4s8", title:"하츠투하츠는 이동 시간에 뭘 하냐면요,,, ※짝꿍 언니 칭찬하기 바쁨 주의※ 🚗 | 비하인드 | 웨이브", duration:"10m" } ]; const chbPlayer = document.querySelector(".chb-player"); const chbList = document.querySelector(".chb-list"); document.querySelector(".chb-title").textContent = chbSeries.title; document.querySelector(".chb-year").textContent = chbSeries.year; document.querySelector(".chb-rating").textContent = chbSeries.rating; document.querySelector(".chb-count").textContent = chbEpisodes.length + " Episodes"; document.querySelector(".chb-language").textContent = chbSeries.language; document.querySelector(".chb-description").textContent = chbSeries.description; document.querySelector(".chb-cast").textContent = chbSeries.cast; document.querySelector(".chb-genres").textContent = chbSeries.genres; function chbLoadEpisode(index){ const episode = chbEpisodes[index]; chbPlayer.src = "https://www.youtube-nocookie.com/embed/" + episode.id; document.querySelectorAll(".chb-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } chbEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="chb-card"; const number=document.createElement("div"); number.className="chb-number"; number.textContent = chbEpisodes.length - index; const thumb=document.createElement("img"); thumb.className="chb-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="chb-card-text"; const title=document.createElement("div"); title.className="chb-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="chb-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ chbLoadEpisode(index); document.querySelector(".chb-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); chbList.appendChild(card); }); chbLoadEpisode(0); const chbTop = document.querySelector(".chb-top"); window.addEventListener("scroll", function(){ if(window.scrollY > 300){ chbTop.classList.add("show"); }else{ chbTop.classList.remove("show"); } }); chbTop.addEventListener("click", function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

Chat Hearts2Hearts

2025•12+•12 Episodes•ENG/INDO SUB

So, is this the taste of a real variety show? Hearts2Hearts is already nailing it with top-notch entertainment skills! From their debut to their first variety show challenge, we're diving deep into everything Hearts2Hearts! The fan-oriented AI, "Chat Hearts2Hearts," captures every precious moment. Discover casting secrets, the tears and sweat of their trainee days, and the genuine camaraderie of the members behind the scenes! The raw and delightful real stories of these eight members, never before seen, unfold now! Curious about Hearts2Hearts' unique charm? Check it out now on Chat Hearts2Hearts!

Cast:Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on

Genres:Variety • Reality • Comedy

⏷ Episode List
const chath2hEpisodes = [ { episode:1, title:"Everything You Want to Know About Hearts2Hearts!", duration:"27m", thumbnail:"https://i.imgur.com/5TJbHGZ.png" }, { episode:2, title:"It's Partner's Day! Who's Your Perfect Match?", duration:"29m", thumbnail:"https://i.imgur.com/4CKRPCD.png" }, { episode:3, title:"\"You Are My Destiny.\" CARMEN & JUUN's Fateful Walk", duration:"22m", thumbnail:"https://i.imgur.com/AhnI3Rq.png" }, { episode:4, title:"JIWOO & IAN's Trampoline Fun + Cookie-Baking Showdown!", duration:"24m", thumbnail:"https://i.imgur.com/WLOfzmw.png" }, { episode:5, title:"Liar Game & Chaotic Grocery Shopping!", duration:"23m", thumbnail:"https://i.imgur.com/wEYrFWF.png" }, { episode:6, title:"Welcome to the Hearts2Hearts Campsite!", duration:"25m", thumbnail:"https://i.imgur.com/LPDhWBe.png" }, { episode:7, title:"The Silent Challenge: Korean Beef Is at Stake!", duration:"28m", thumbnail:"https://i.imgur.com/G7wQSz6.png" }, { episode:8, title:"H2H School: The Haunted School!", duration:"30m", thumbnail:"https://i.imgur.com/lMg0Y2M.png" }, { episode:9, title:"H2H's Self-Promotion Pop-Up at a Jeju Tangerine Farm!", duration:"24m", thumbnail:"https://i.imgur.com/1UuucX0.png" }, { episode:10, title:"The First Chat Hearts2Hearts MV Awards!", duration:"36m", thumbnail:"https://i.imgur.com/V6UKWqN.png" }, { episode:11, title:"Hearts2Hearts School Begins!", duration:"31m", thumbnail:"https://i.imgur.com/aOc9mMY.png" }, { episode:12, title:"The Final Mission: Find the Hidden Passwords!", duration:"36m", thumbnail:"https://i.imgur.com/1o6Na9M.png" } ]; const chath2hPlayer = document.querySelector(".chath2h-player"); const chath2hList = document.querySelector(".chath2h-list"); function chath2hLoadEpisode(index){ const episode = chath2hEpisodes[index]; /* Change Archive.org player */ chath2hPlayer.src = "https://archive.org/embed/chat-hearts-2-hearts-episode-" + episode.episode; /* Highlight active episode */ document .querySelectorAll(".chath2h-card") .forEach(function(card,i){ if(i === index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } /* Create episode cards */ chath2hEpisodes.forEach( function(episode,index){ const card = document.createElement("div"); card.className = "chath2h-card"; /* Episode number */ const number = document.createElement("div"); number.className = "chath2h-number"; number.textContent = episode.episode; /* Thumbnail */ const thumb = document.createElement("img"); thumb.className = "chath2h-thumb"; thumb.src = episode.thumbnail; thumb.alt = "Chat Hearts2Hearts Episode " + episode.episode; /* Episode text */ const text = document.createElement("div"); text.className = "chath2h-card-text"; const title = document.createElement("div"); title.className = "chath2h-card-title"; title.textContent = episode.title; const duration = document.createElement("div"); duration.className = "chath2h-duration"; duration.textContent = episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); /* Episode click */ card.addEventListener( "click", function(){ chath2hLoadEpisode(index); document .querySelector(".chath2h-player-wrap") .scrollIntoView({ behavior:"smooth", block:"start" }); }); chath2hList.appendChild(card); }); /* Episode 1 active */ chath2hLoadEpisode(0); /* Back to top */ const chath2hTop = document.querySelector(".chath2h-top"); window.addEventListener( "scroll", function(){ if(window.scrollY > 300){ chath2hTop.classList.add("show"); }else{ chath2hTop.classList.remove("show"); } }); chath2hTop.addEventListener( "click", function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

•••

Cast:

Genres:

⏷ Episode List
const vlogSeries = { title: "Vlogs", year: "2025", rating: "13+", language: "ENG SUB", description: "VLOGS is a personal vlog-style content series from Hearts2Hearts that follows the members through vacations, trips, daily outings, and casual moments in their everyday lives.", cast: "Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres: "Vlog • Reality" }; const vlogEpisodes = [ { title:"H2H's Holiday SETLOG🎥 | Family Call ・ What’s in My Suitcase ・ Squishy ASMR ・ Late Night Chatting", duration:"29m", id:"r8dz803XitI" }, { id:"sw9LHzw8WRM", title:"주은이 가족 여행 브이로그 (With.르멘카)ㅣ춘천 닭갈비 먹방・하늘이 재롱잔치・응원봉 언박싱・엄마랑 쇼핑데이・강릉 동해 바다・실내 스파ㅣ어느 주은 날", duration:"17m" }, { id:"x7aqs0kFNpM", title:"이안네 본가 & 펜션 가족 여행🚘🏠 | 셀프 메이크업 ・ 본가 룸투어 ・ 연습생 시절 추억 공개 ・ 부모님과 드라이브 ・ 수영 다이빙 ・ 불멍 | 이안에 너 있다", duration:"18m" }, { id:"fDwdwt3vC2k", title:"숙소 & 본가 브이로그🏠 | 송정 해수욕장 구경 ・ 밀면 한 그릇 ・ 울산역 방문 ・ 아버지와 볼링 데이트 ・ 어머니와 추억의 세차장 | 방가방가예온이", duration:"20m" }, { id:"RE0k_4Ip_ns", title:"🎢오사카 휴가 브이로그🎡 | Get Ready With Me・게 샤브샤브 먹방・유니버설 스튜디오・선물 Unboxing | Twinkle Little STELLA", duration:"18m" }, { id:"CL4UlVw4kGE", title:"집에서 보낸 연휴 브이로그🏠ㅣ쌍둥이랑 칸쵸깡 ・ 고양이랑 놀기 ・ 가족들과 호캉스 ・ 사랑 가득 집밥ㅣHSH (HOME SWEET HOME)", duration:"26m" }, { id:"E4eggaqtjr8", title:"NUNGGUIN YAAA!! ٩(ˊᗜˋ*)و 발리 연휴 브이로그🌴 | 인도네시아 음식 먹방 ・ 발리 해변 ・ 팔라벨라 첫 만남(?) | I'M A BALI GIRL𓂃𓇼", duration:"16m" }, { id:"O130JxSAJcE", title:"🌊괌 가족여행 다녀왔지우🌊 | 스노클링 ・ 호텔 수영 ・ KMART 쇼핑 ・ 기념품 쇼핑 ・ 슈림프 먹방 | Berry Very Me🍓 in GUAM", duration:"24m" }, { id:"cyBc72zeT2A", title:"친구들이랑 즉석 떡볶이 먹고 𓐐𓎩 코인 노래방 가는 ✩♬ ₊˚. 일상 브이로그", duration:"17m" }, { id:"45wZKw60NSY", title:"친구들이랑 VR 게임하고 ⋆˚꩜。 훠궈 먹는 ⟡𓌉𓇋₊˚⊹♡ 일상 브이로그", duration:"20m" } ]; const vlogPlayer = document.querySelector(".vlog-player"); const vlogList = document.querySelector(".vlog-list"); document.querySelector(".vlog-title").textContent = vlogSeries.title; document.querySelector(".vlog-year").textContent = vlogSeries.year; document.querySelector(".vlog-rating").textContent = vlogSeries.rating; document.querySelector(".vlog-count").textContent = vlogEpisodes.length + " Episodes"; document.querySelector(".vlog-language").textContent = vlogSeries.language; document.querySelector(".vlog-description").textContent = vlogSeries.description; document.querySelector(".vlog-cast").textContent = vlogSeries.cast; document.querySelector(".vlog-genres").textContent = vlogSeries.genres; function vlogLoadEpisode(index){ const episode = vlogEpisodes[index]; vlogPlayer.src = "https://www.youtube-nocookie.com/embed/" + episode.id; document.querySelectorAll(".vlog-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } vlogEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="vlog-card"; const number=document.createElement("div"); number.className="vlog-number"; number.textContent = vlogEpisodes.length - index; const thumb=document.createElement("img"); thumb.className="vlog-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="vlog-card-text"; const title=document.createElement("div"); title.className="vlog-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="vlog-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ vlogLoadEpisode(index); document.querySelector(".vlog-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); vlogList.appendChild(card); }); vlogLoadEpisode(0); const vlogTop = document.querySelector(".vlog-top"); window.addEventListener("scroll", function(){ if(window.scrollY > 300){ vlogTop.classList.add("show"); }else{ vlogTop.classList.remove("show"); } }); vlogTop.addEventListener("click", function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

•••

Cast:

Genres:

⏷ Episode List
window.dbEpisodes = window.dbEpisodes || []; window.dbSeries = { title:"Daily BH2ND", year:"2025", rating:"13+", language:"ENG SUB", description:"Daily BH2ND is a casual behind-the-scenes content series from Hearts2Hearts that follows the members through their daily schedules, fan events, music show promotions, and other activities behind official appearances.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Behind the Scenes • Variety" }; window.dbInit = function(){ const dbPlayer = document.querySelector(".db-player"); const dbList = document.querySelector(".db-list"); const dbTabs = document.querySelectorAll(".db-tab"); const dbTop = document.querySelector(".db-top"); const dbSeries = window.dbSeries; const dbEpisodes = window.dbEpisodes; let dbCurrentEpisodes = [...dbEpisodes]; document.querySelector(".db-title").textContent = dbSeries.title; document.querySelector(".db-year").textContent = dbSeries.year; document.querySelector(".db-rating").textContent = dbSeries.rating; document.querySelector(".db-count").textContent = dbEpisodes.length+" Episodes"; document.querySelector(".db-language").textContent = dbSeries.language; document.querySelector(".db-description").textContent = dbSeries.description; document.querySelector(".db-cast").textContent = dbSeries.cast; document.querySelector(".db-genres").textContent = dbSeries.genres; const dbCategories = { iconic:[60,61,62,63,64,65], lemon:[53,54,55,56,57,58,59], rude:[41,42,43,44,45,46,47,48,49,50,51,52], focus:[28,29,30,31,32,33,34,35,36,37,38,39,40], pretty:[24,25,26,27], style:[13,14,15,16,17,18,19,20,21,22,23], chase:[1,2,3,4,5,6,7,8,9,10,11,12] }; function dbFilterEpisodes(numbers){ return dbEpisodes.filter(function(episode,index){ const episodeNumber = dbEpisodes.length-index; return numbers.includes(episodeNumber); }); } function dbLoadEpisode(index){ const episode = dbCurrentEpisodes[index]; if(!episode){ return; } dbPlayer.src = "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".db-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } function dbShowEpisodes(episodes){ dbCurrentEpisodes = episodes; dbList.innerHTML = ""; document.querySelector(".db-count").textContent = episodes.length+" Episodes"; episodes.forEach(function(episode,index){ const card = document.createElement("div"); card.className = "db-card"; const number = document.createElement("div"); number.className = "db-number"; number.textContent = episodes.length-index; const thumb = document.createElement("img"); thumb.className = "db-thumb"; thumb.src = "https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text = document.createElement("div"); text.className = "db-card-text"; const title = document.createElement("div"); title.className = "db-card-title"; title.textContent = episode.title; const duration = document.createElement("div"); duration.className = "db-duration"; duration.textContent = episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ dbLoadEpisode(index); document.querySelector(".db-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); dbList.appendChild(card); }); if(episodes.length){ dbLoadEpisode(0); } } function dbSelectCategory(category){ if(category==="all"){ dbShowEpisodes([...dbEpisodes]); return; } dbShowEpisodes(dbFilterEpisodes(dbCategories[category])); } dbTabs.forEach(function(tab){ tab.addEventListener("click",function(){ dbTabs.forEach(function(item){ item.classList.remove("active"); }); tab.classList.add("active"); dbSelectCategory(tab.dataset.category); }); }); dbSelectCategory("all"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ dbTop.classList.add("show"); }else{ dbTop.classList.remove("show"); } }); dbTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); }); }; window.addEventListener("dbEpisodesReady",function(){ window.dbInit(); });
window.dbEpisodes.push( { id:"YkSmzyw2V7w", title:"안녕하세요 2학년 3반 김다현이라고 합니다아~ l 2026 KM Chart Awards & K-WORLD DREAM AWARDS BH2ND", duration:"19m" }, { id:"oHo5QbqTEgI", title:"이안의 챗GPT와 통화를 시켜드리도록 하겠습니다ᯓ★ | Hearts2Hearts 하츠투하츠 2026 TMElive International Music Awards BH2ND", duration:"20m" }, { id:"Lh2_HZSj8vs", title:"시구식 무대를 하러 도쿄돔에 왔습니다!(ᵔᗜᵔ)✧* | Hearts2Hearts 하츠투하츠 ‘ICONIC HEART’ Promotion Event in Japan BH2ND #2", duration:"33m" }, { id:"FQmWuyL3vSk", title:"이안이를 보면 약간 엄마의 마음이 생겨(˶ᵔ ᵕ ᵔ˶)𑣲⋆ | Hearts2Hearts 하츠투하츠 ‘ICONIC HEART’ Promotion Event in Japan BH2ND", duration:"25m" }, { id:"oVMQTIUI_2c", title:"저는 해삐 했습니다아앙 (๑´^᎑^)~♡ | Hearts2Hearts 하츠투하츠 ‘15-LOVE’ Music Show BH2ND", duration:"27m" }, { id:"XdiMWTyev0k", title:"앞으로 더 무럭무럭 자라고 싶습니다! ꒰ ˶• ༝ •˶꒱੭⁾⁾ | Hearts2Hearts 하츠투하츠 2026 SBS 가요대전 Summer BH2ND", duration:"26m" }, { id:"zJxPNNxnI6I", title:"이러면 저 화가 나가지고 으른미 할 거예요!(•̀⤙•́) | Hearts2Hearts 하츠투하츠 2026 Seoul Music Awards BH2ND", duration:"19m" }, { id:"mgiO2BAng-s", title:"음방에서 누가 돌아왔게~? 나야 하투하ᯓ★ | Hearts2Hearts 하츠투하츠 'Lemon Tang' Music Show BH2ND #2", duration:"32m" }, { id:"TnromeW-yBw", title:"너무 행복합니다! 제 위에 에펠탑이 있어요˚☽˚.⋆ | Hearts2Hearts 하츠투하츠 K-EXPO INKIGAYO in Paris BH2ND", duration:"26m" }, { id:"3Dq4de1J6MA", title:"음료 잘 사주는 예쁜 언니ㅋ✧˖°. | Hearts2Hearts 하츠투하츠 'Lemon Tang' Music Show BH2ND #1", duration:"32m" }, { id:"9ZAdhZosHEo", title:"품절대란이 나겠어요~✦ | Hearts2Hearts 하츠투하츠 'Lemon Tang' OFFICIAL Pop-up & MUSINSA Collaboration Pop-up BH2ND", duration:"19m" }, { id:"XuF2l1-1bmQ", title:"저 원래 초미녀랑 낯가리거든요? (^᎑^๑)/♡ | Hearts2Hearts 하츠투하츠 ‘Lemon Tang’ Challenge BH2ND", duration:"16m" }, { id:"bOYjVrHpTN4", title:"멤버들이 있어서 너무너무 든든했구 𐔌՞ ܸ.ˬ.ܸ՞𐦯♥ | Hearts2Hearts 하츠투하츠 2026 ASEA BH2ND", duration:"26m" }, { id:"AQMnmqiQG28", title:"이참에 엄마한테 전화를 해볼까요? ˗ˏˋ ☏ ˎˊ˗ | Hearts2Hearts 하츠투하츠 2026 WIEA BH2ND", duration:"27m" }, { id:"8kjGctEsPLw", title:"예쁘겠지… 언니 오늘 생일이니까 ٩(ˊᗜˋ*)و♡ | Hearts2Hearts 하츠투하츠 Our Days in TOKYO BH2ND #1", duration:"30m" } );
window.dbEpisodes.push( { id:"LZZ6cV8PdWg", title:"Welcome to LA~ 하늘이 완전 파란색이에요⋆☀︎.(˶ᵔ ᵕ ᵔ˶) | Hearts2Hearts 하츠투하츠 Our Days in USA BH2ND #3 LA", duration:"25m" }, { id:"FixMQXZWzuw", title:"사~랑하는 르멘핑 생일 축하합니다!♡✧˖° | Hearts2Hearts 하츠투하츠 2026 FANMEETING 'HEARTS 2 HOUSE' in JAKARTA BH2ND", duration:"18m" }, { id:"2H4rMbgBfAY", title:"LA 왔으면 핫걸 해야지~( -_•)✮⋆˙ | Hearts2Hearts 하츠투하츠 Our Days in USA BH2ND #2 LA", duration:"33m" }, { id:"6ow4_WUGUpw", title:"We’re at Times Square right now~ ٩(ˊᗜˋ*)وᰔ | Hearts2Hearts 하츠투하츠 Our Days in USA BH2ND #1 New York", duration:"27m" }, { id:"Q2_3r4HseN0", title:"상하이 디저트 먹방을 해보겠습니다(ˊᵒ̴̶̷̤ ꇴ ᵒ̴̶̷̤ˋ)♡ | Hearts2Hearts 하츠투하츠 Fan Sign Event in Shanghai BH2ND", duration:"20m" }, { id:"fyNZx1g0cnI", title:"진짜 안 울 겁니다!!!…뿌앵 。°(° ꒦ິᯅ꒦ິ°)°。| Hearts2Hearts 하츠투하츠 2026 FANMEETING 'HEARTS 2 HOUSE' in SEOUL BH2ND", duration:"28m" }, { id:"-wPMTvc1o10", title:"우리는 짝꿍~ 짝짝짝~짝꿍 (ง˙˘˙)ว | Hearts2Hearts 하츠투하츠 FANMEETING VCR & ‘Electric Shock’ Dance Practice BH2ND", duration:"31m" }, { id:"Y-p6I1ZEN3M", title:"가볼까? 야생의 동물들처럼 c(。⍤⌯⍤。⃰)ͽ ₍。☌ ·̫ ☌。₎ | Hearts2Hearts 하츠투하츠 'RUDE!' Music Show BH2ND #2", duration:"29m" }, { id:"UT-x2ImpDF0", title:"루: 루드!!! 드: 드가자아아아앍!!!ᯓ★.ᐟ◟( ˃̶͈◡ ˂̶͈ )◞ | Hearts2Hearts 하츠투하츠 ‘RUDE!’ Music Show BH2ND #1", duration:"32m" }, { id:"ajX2KXe4uIY", title:"진짜 감.동. 받았습니다(ˊᵒ̴̶̷̤ ꇴ ᵒ̴̶̷̤ˋ) | Hearts2Hearts 하츠투하츠 SMTOWN LIVE 2025-26 in FUKUOKA BH2ND", duration:"26m" }, { id:"TVJ474K1Wpk", title:"2026년도 열심히 찢어보겠습니아옹〜ᰔ⊹ ࣪ ˖ | Hearts2Hearts 하츠투하츠 2025 MBC 가요대제전 BH2ND #2", duration:"20m" }, { id:"_Lx7isLHT5g", title:"저희는 미녀모션이에요! 𓂃ෆ˚ | Hearts2Hearts 하츠투하츠 2025 MBC 가요대제전 BH2ND #1", duration:"19m" }, { id:"d5rwUz_SOM8", title:"꼬맹이~ 늦게 자지 마? 키 안 크니까ㅋ | Hearts2Hearts 하츠투하츠 2025 SBS 가요대전 BH2ND", duration:"20m" }, { id:"KSARBfbflV4", title:"오늘은! MMA-NA 생일 ⋆✴︎˚。⋆🎂 ༘⋆ | Hearts2Hearts 하츠투하츠 2025 MMA BH2ND", duration:"25m" }, { id:"uxkJL3ZWjlw", title:"저희 숭숭이들이! 원숭이들에게 영상 편지 남겨보겠습니다 ⸜(。˃ ᵕ ˂ )⸝♡ | Hearts2Hearts 하츠투하츠 Fan Sign Event in Japan BH2ND", duration:"21m" }, { id:"Wvd4GTugNtE", title:"나도 저런 양 갈래 해보고 싶다 (• ᴖ •。 ) | 2025 MUSIC BANK GLOBAL FESTIVAL IN JAPAN BH2ND", duration:"20m" }, { id:"kKVrzt2ELPs", title:"3관왕.ᐟ.ᐟ.ᐟ 하나 둘 셋 감사합니다.ᐟ.ᐟ.ᐟ | Hearts2Hearts 하츠투하츠 2025 MAMA AWARDS BH2ND", duration:"35m" }, { id:"soTavjj85Iw", title:"다~이루어질지니! ଘ( ˊᵕˋ )ଓ | Hearts2Hearts 하츠투하츠 ‘FOCUS’ Showcase BH2ND", duration:"15m" }, { id:"33CNBk7ZOs4", title:"하츄와의 비밀 약속은요✮꙳ 𓂃 𓂂𓏸 | Hearts2Hearts 하츠투하츠 2026 FANMEETING 'HEARTS 2 HOUSE' Poster BH2ND", duration:"16m" }, { id:"-SmKQwHGTXc", title:"자 다음은 다 같이 안아~ (つ。˃ ᵕ ˂)つ ⸝♡ | Hearts2Hearts 하츠투하츠 2025 KGMA BH2ND", duration:"16m" }, { id:"XUbdua2mS1k", title:"막방 찢어버릴 거예요! ( ◡̀_◡́) | Hearts2Hearts 하츠투하츠 ‘FOCUS’ Music Show BH2ND #2", duration:"30m" }, { id:"JJwiWgmraoA", title:"여기 집중하세요 F.O.C.U.S (˵ - _ - ˵ )✧˖ | Hearts2Hearts 하츠투하츠 ‘FOCUS’ Music Show BH2ND #1", duration:"32m" }, { id:"agnZiB74OYc", title:"대학 축제 우리 조금 통하는듯~ ദ്ദി ˃ ᴗ ˂ ෆෆ | Hearts2Hearts 하츠투하츠 University Festival 2025 BH2ND", duration:"26m" }, { id:"Nc6vB6u49go", title:"하츄 낯가리지 말고 Come on (⸝⸝• ᴗ •⸝⸝) | Hearts2Hearts 하츠투하츠 ‘Pretty Please’ Music Show BH2ND", duration:"25m" }, { id:"FVFDNBtwOsE", title:"2026 Hearts2Hearts SEASON’S GREETINGS BEHIND", duration:"25m" }, { id:"41tLl4MNnhk", title:"오늘 양갈래도 완전 귀엽게 했어요⋆౨ৎ˚⟡˖ ࣪ | Hearts2Hearts 하츠투하츠 2025 THE FACT MUSIC AWARDS in MACAO BH2ND", duration:"14m" }, { id:"QAeJNsSUfpY", title:"It's Our First Time At ISAC! | Hearts2Hearts 하츠투하츠 2025 Idol Star Athletics Championship BH2ND", duration:"23m" }, { id:"ey7ZzAmPbGw", title:"아니 그렇게 하면 더 울어! (˚˃̣̣̥⌓˂̣̣̥ )づ♡ | Hearts2Hearts 하츠투하츠 LaLaLa Festival in Jakarta BH2ND", duration:"15m" }, { id:"ZwK1OufACPQ", title:"밋앤그릿 찢고↗ 무대도 찢고↗ 우리 얼굴로 찢고ദ്ദി | Hearts2Hearts 하츠투하츠 2025 TMElive International Music Awards BH2ND", duration:"15m" }, { id:"OHmGph3m0Tg", title:"꾸준히 성장하는 하츠투하츠🏆✧˚ ༘ ⋆。 ˚ | Hearts2Hearts 하츠투하츠 2025 K-WORLD DREAM AWARDS BH2ND", duration:"18m" }, { id:"ipZOodMIJhY", title:"우와아아.ᐟ 도쿄돔에서의 첫 무대 ꗯ ⋆˳ ˚ ⋆ | Hearts2Hearts 하츠투하츠 SMTOWN LIVE 2025 in TOKYO BH2ND", duration:"22m" }, { id:"GiZWzTW5U4c", title:"야키니쿠도 먹고𓌉◯𓇋 쇼! 음악중심 인 재팬도 하고★༉‧₊˚ | Hearts2Hearts 하츠투하츠 Show! Musiccore in Japan BH2ND", duration:"13m" }, { id:"CHDGyxjPWrQ", title:"하츠투하츠의 큰 목표! 신인상 수상했어요₊˚⊹🏆⊹˚₊ | Hearts2Hearts 하츠투하츠 2025 ASEA & Seoul Music Awards BH2ND", duration:"21m" }, { id:"6eRH6GVFR9s", title:"배가 안 찼으면? 어떡해 우뜨카라고 어떡하라고 엉뚱하라고 ( •з• )🍚🍚 | Hearts2Hearts 하츠투하츠 SMTOWN LIVE 2025 in LONDON BH2ND", duration:"19m" }, { id:"5OPWRrd44L8", title:"저희 요맘때 ✮Rap✮ 만들었스니다! | Hearts2Hearts 하츠투하츠 요맘때 yomamte Ad BH2ND", duration:"19m" }, { id:"4Q3_SBFUlWM", title:"역전 역전!!! 우리 승리 요정 하겠는데~? ᕙ( •̀ ᗜ •́ )ᕗ🏆 | Hearts2Hearts 하츠투하츠 지우&이안 LG 트윈스 시구 BH2ND", duration:"12m" }, { id:"XGUkgN_4VCo", title:"너를 가슴 뛰게 하는 건 뭔데𓂃⭒˚.⋆⭑♫ 뭔데엑↗ | Hearts2Hearts 하츠투하츠 'STYLE' Music Show BH2ND", duration:"18m" }, { id:"0o3keLdw-lY", title:"메간 트레이너 선배님과 만나 뵙게 될 줄은⋆。°✩ | Hearts2Hearts 하츠투하츠 WANGO TANGO & SMTOWN LIVE 2025 in LA BH2ND", duration:"18m" }, { id:"rpNi6lQeWNs", title:"오마이갓! 첫 SMTOWN!!! | Hearts2Hearts 하츠투하츠 Day Off & SMTOWN LIVE 2025 in Mexico BH2ND", duration:"18m" }, { id:"snpkSKVNdeM", title:"오늘 약간 우리 쌍둥이 같다! | Hearts2Hearts 하츠투하츠 Rakuten GirlsAward 2025 SPRING/SUMMER BH2ND", duration:"26m" }, { id:"wXXk4dACCrw", title:"지우야 너만 잘하면 돼 (ง •̀_•́)ง✧ | Hearts2Hearts 하츠투하츠 SEOUL SPRING FESTA BH2ND", duration:"15m" }, { id:"v_StHwY2E_M", title:"기쁨이 가득한 인도네시아 첫 방문。𖦹°‧⭑.ᐟ | Hearts2Hearts 하츠투하츠 in JAKARTA BH2ND", duration:"16m" }, { id:"73xF273Ew1c", title:"여러분 같이 먹자 Who made this!!!!(๑ᵔ⤙ᵔ๑)♡ | Hearts2Hearts 하츠투하츠 Visiting Shanghai BH2ND", duration:"22m" }, { id:"zVIrnx9Jy-k", title:"하츄가 보고싶으면 직접 가야지ᯓ★.ᐟ | Hearts2Hearts 하츠투하츠 Fan Sign Event in Busan, Daegu, Gwangju, Daejeon BH2ND", duration:"18m" }, { id:"F-qx8VX25Wk", title:"오늘 데뷔했다! 드디어 데뷔했다⭑𓂃.ᐟ.ᐟ | Hearts2Hearts 하츠투하츠 Debut Showcase BH2ND", duration:"15m" }, { id:"UzotXp59tbY", title:"오늘 먹방을 진행하겠습니다! (๑ᵔ⤙ᵔ๑) ⋆✴︎˚。⋆ | Hearts2Hearts 하츠투하츠 'The Chase' Music Show BH2ND #2", duration:"19m" }, { id:"C-AEpv4hw20", title:"🌴: 너는 지금 고양이같아… 😊 : 고라니 같다고요…? | Hearts2Hearts 하츠투하츠 'The Chase' Music Show BH2ND #1", duration:"27m" }, { id:"fSC4oEjOFn4", title:"메가MGC커피 가실 때마다 하투하 생각하시구…♡(˃͈ ˂͈ ) | Hearts2Hearts 하츠투하츠 메가MGC커피 Photoshoot BH2ND", duration:"14m" }, { id:"X8MNYapJmro", title:"내 얼굴이 뜨는 무신사라니! ٩( ˃▿˂ )۶⟡ | Hearts2Hearts 하츠투하츠 MUSINSA Photoshoot BH2ND", duration:"12m" }, { id:"iPK-Oaqmd8E", title:"장신 그룹 하투하! 굿~( ദ്ദി ˙ᗜ˙ ) | Hearts2Hearts 하츠투하츠 DAZED Photoshoot BH2ND", duration:"14m" } ); window.dispatchEvent(new Event("dbEpisodesReady"));

•••

Cast:

Genres:

⏷ Episode List
const prodSeries={ title:"Production BH2ND", year:"2025", rating:"13+", language:"ENG SUB", description:"Production BH2ND is a behind-the-scenes content series from Hearts2Hearts that offers a closer look at the group's creative and production process through recording sessions, practice clips, filming moments, and studio content.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Behind the Scenes • Variety" }; const prodEpisodes=[ { title: "우리가 제일 사랑하는 차는? Kia…✮ | Hearts2Hearts 하츠투하츠 'Moonride' MV BH2ND", duration: "19m", id: "vSjsCvEAb0M" }, { id:"TqM3S42Ya-M", title:"Hearts2Hearts 하츠투하츠 '15-LOVE' Dance Practice BH2ND", duration:"21m" }, { id:"nZ0M4271nIM", title:"저희 너무 귀엽게 나오는 것 같아요♥︎ (??? : 우리잖아ㅎㅋ) | Hearts2Hearts 하츠투하츠 ’ICONIC HEART!’ Jacket BH2ND", duration:"30m" }, { id:"UWI9YhI1ur0", title:"제가 칠 수 있는 유일한 곡은요! ♬.。.:*☆ | Hearts2Hearts 하츠투하츠 ’ICONIC HEART’ MV BH2ND #2", duration:"24m" }, { id:"n0rkfW0-IXQ", title:"Hearts2Hearts 하츠투하츠 ‘ICONIC HEART’ Recording BH2ND", duration:"29m" }, { id:"yrKHe5t7c8Q", title:"저희는 키라키라 아이돌!⋆. 𐙚 ˚ | Hearts2Hearts 하츠투하츠 ’ICONIC HEART’ MV BH2ND #1", duration:"31m" }, { id:"_oV_9qLgmi8", title:"Hearts2Hearts 하츠투하츠 'ICONIC HEART' Dance Practice BH2ND", duration:"19m" }, { id:"tjSPledGrnU", title:"저는 귀여웠던 날이 많이 없어요… 그냥 이쁜거죠 ദ്ദി(•ᴗ•́) | Hearts2Hearts 하츠투하츠 'RUDE!’ Trailer BH2ND", duration:"22m" }, { id:"I_E7r7aVdpM", title:"그만 귀엽자 하투하들아 진짜ㅋ₊˚⊹ᰔ( •̀֊•́ ) | Hearts2Hearts 하츠투하츠 ’RUDE!’ Jacket BH2ND", duration:"21m" }, { id:"UZ2Z1w7TRds", title:"고백해! 고백해! 고백해! (。•̀ ,•̀)~✩ | Hearts2Hearts 하츠투하츠 ’RUDE!’ MV BH2ND #2", duration:"29m" }, { id:"zQ-XkGm0zvI", title:"약간 무서운 인형 느낌쓰 내가 널 잡아먹었다악!!! (^❯⩊❮^)⟆.✦ ݁˖ | Hearts2Hearts 하츠투하츠 ’RUDE!’ MV BH2ND #1", duration:"23m" }, { id:"0oRul0_3mdo", title:"Hearts2Hearts 하츠투하츠 ‘RUDE!’ Recording BH2ND", duration:"27m" }, { id:"-SuUEoYEDVw", title:"Hearts2Hearts 하츠투하츠 ‘RUDE!’ Dance Practice BH2ND", duration:"29m" }, { id:"u8U1OSW5acA", title:"파란색 펄도 발랐습니다~❤︎Ψ(๑˃ ⤙ ˂๑)*。⋆✧ | Hearts2Hearts 하츠투하츠 'FOCUS' Mood Sampler BH2ND", duration:"24m" }, { id:"larrvLIMWDk", title:"우정테스트 우정 우정 v(˶˃ ᵕ ˂˶)v | Hearts2Hearts 하츠투하츠 ’FOCUS’ Trailer BH2ND", duration:"21m" }, { id:"ITmv7JLimQI", title:"오늘은 𝓒𝓪𝓵𝓲𝓯𝓸𝓻𝓷𝓲𝓪 𝓛𝓐 𝓗𝓸𝓽 𝓰𝓲𝓻𝓵 룩을 해봤는데요?٩(^ᗜ^ )و ˎˊ˗ | Hearts2Hearts 하츠투하츠 ’FOCUS’ Jacket BH2ND", duration:"28m" }, { id:"_xqnBLjzdzQ", title:"Hearts2Hearts 하츠투하츠 ‘FOCUS’ Dance Practice BH2ND", duration:"34m" }, { id:"XVdM_RZGnok", title:"Hearts2Hearts 하츠투하츠 ‘FOCUS’ Recording BH2ND", duration:"33m" }, { id:"RE89HeUXOSM", title:"너무 예쁘쟈나~? 발레 CORE ໒꒱‧₊˚ | Hearts2Hearts 하츠투하츠 ’FOCUS’ MV BH2ND #2", duration:"28m" }, { id:"WyeJAh9iIIY", title:"나도 멋있는 걸 할 수 있는 여자다 ᕦ(ò_óˇ)ᕤ | Hearts2Hearts 하츠투하츠 ’FOCUS’ MV BH2ND #1", duration:"27m" }, { id:"qL69VSEeL5U", title:"잠깐만 바람에 날아가는 거 아니야?! ˚₊·—̳͟͞͞♡ | Hearts2Hearts 하츠투하츠 ’Pretty Please’ MV BH2ND #2", duration:"27m" }, { id:"DuaAX0i3U40", title:"This 𝓑𝓪𝓷𝓰 is 𝓜𝔂 𝓓𝓻𝓮𝓪𝓶 𝓑𝓪𝓷𝓰 ⋆。゚☁︎。⋆。 ゚☾ ゚。⋆ | Hearts2Hearts 하츠투하츠 ’Pretty Please’ MV BH2ND #1", duration:"22m" }, { id:"VDNP_yS_Yr4", title:"Hearts2Hearts 하츠투하츠 ‘STYLE’ Dance Practice BH2ND", duration:"31m" }, { id:"rIdaOPJbdQ8", title:"Hearts2Hearts 하츠투하츠 ‘STYLE’ Recording BH2ND", duration:"22m" }, { id:"Fk54DzRap88", title:"여기 하츄의 사랑 하나 오더요 ˚₊‧ ʚ꒰^. .^꒱⟆ɞ ‧₊˚ | Hearts2Hearts 하츠투하츠 'STYLE' MV BH2ND #3", duration:"19m" }, { id:"IZFtAPpEk9I", title:"약간 첫사랑 재질~ ♡✧˚ ༘ | Hearts2Hearts 하츠투하츠 'STYLE' MV BH2ND #2", duration:"21m" }, { id:"DL7UNtK-Kok", title:"뀨요미 대회 참가합니다!₊하나 둘 셋 뀨우𓂃 𓈒𓏸˖*° | Hearts2Hearts 하츠투하츠 'STYLE' MV BH2ND #1", duration:"17m" }, { id:"_jQo1JKg5gk", title:"하츄들 기대해~ 우리 예쁘다아 (∩˃o˂∩)♡ | Hearts2Hearts 하츠투하츠 ‘STYLE’ Jacket BH2ND", duration:"20m" }, { id:"dFKIabiefsY", title:"다들 조심하세요 제 날개𓂃 ࣪˖ ʚїɞ♡ | Hearts2Hearts 하츠투하츠 ‘Butterflies’ MV BH2ND", duration:"21m" }, { id:"1QBBD4zEMbA", title:"Hearts2Hearts 하츠투하츠 'The Chase' Recording BH2ND", duration:"15m" }, { id:"pFsf73HNL6Q", title:"Hearts2Hearts 하츠투하츠 'The Chase' Dance Practice BH2ND", duration:"20m" }, { id:"3VxvujFYxek", title:"프로답게 해! 나는 해냈잖아(⸝⸝╸-╺⸝⸝) | Hearts2Hearts 하츠투하츠 'The Chase' Jacket BH2ND", duration:"32m" }, { id:"ao3-xlU1H3g", title:"오늘 콘셉트는 AI 콘셉트입니다 𖠌𖥔‧₊˚ | Hearts2Hearts 하츠투하츠 'The Chase' MV BH2ND #2", duration:"23m" }, { id:"X7a7XbHzIrk", title:"바람이 귀엽게 부는 곳은? ᯓᡣ𐭩 | Hearts2Hearts 하츠투하츠 'The Chase' MV BH2ND #1", duration:"29m" }, { id:"0TowNuWl3Ck", title:"웃음만 잘 참았으면 좋겠습니다 ٩(^ᗜ^ )و⋆˙⟡ | Hearts2Hearts 하츠투하츠 Debut Trailer BH2ND", duration:"19m" } ]; const prodCategories={ "15love":[ 34 ], iconic:[ 29,30,31,32,33 ], rude:[ 23,24,25,26,27,28 ], focus:[ 16,17,18,19,20,21,22 ], pretty:[ 14,15 ], style:[ 8,9,10,11,12,13 ], butterflies:[ 7 ], chase:[ 1,2,3,4,5,6 ] }; const prodPlayer=document.querySelector(".prod-player"); const prodList=document.querySelector(".prod-list"); const prodTabs=document.querySelectorAll(".prod-tab"); let prodCurrentEpisodes=[...prodEpisodes]; document.querySelector(".prod-title").textContent= prodSeries.title; document.querySelector(".prod-year").textContent= prodSeries.year; document.querySelector(".prod-rating").textContent= prodSeries.rating; document.querySelector(".prod-count").textContent= prodEpisodes.length+" Episodes"; document.querySelector(".prod-language").textContent= prodSeries.language; document.querySelector(".prod-description").textContent= prodSeries.description; document.querySelector(".prod-cast").textContent= prodSeries.cast; document.querySelector(".prod-genres").textContent= prodSeries.genres; function prodFilterEpisodes(numbers){ return prodEpisodes.filter(function(episode,index){ const episodeNumber=prodEpisodes.length-index; return numbers.includes(episodeNumber); }); } function prodShowEpisodes(episodes){ prodCurrentEpisodes=episodes; prodList.innerHTML=""; document.querySelector(".prod-count").textContent= episodes.length+" Episodes"; episodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="prod-card"; const number=document.createElement("div"); number.className="prod-number"; number.textContent= episodes.length-index; const thumb=document.createElement("img"); thumb.className="prod-thumb"; thumb.src= "https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="prod-card-text"; const title=document.createElement("div"); title.className="prod-card-title"; title.textContent= episode.title; const duration=document.createElement("div"); duration.className="prod-duration"; duration.textContent= episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ prodLoadEpisode(index); document.querySelector(".prod-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); prodList.appendChild(card); }); if(episodes.length){ prodLoadEpisode(0); } } function prodLoadEpisode(index){ const episode= prodCurrentEpisodes[index]; prodPlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".prod-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } function prodSelectCategory(category){ if(category==="all"){ prodShowEpisodes( [...prodEpisodes] ); return; } if(category==="15love"){ prodShowEpisodes( prodFilterEpisodes(prodCategories["15love"]) ); return; } if(category==="iconic"){ prodShowEpisodes( prodFilterEpisodes(prodCategories.iconic) ); return; } if(category==="rude"){ prodShowEpisodes( prodFilterEpisodes(prodCategories.rude) ); return; } if(category==="focus"){ prodShowEpisodes( prodFilterEpisodes(prodCategories.focus) ); return; } if(category==="pretty"){ prodShowEpisodes( prodFilterEpisodes(prodCategories.pretty) ); return; } if(category==="style"){ prodShowEpisodes( prodFilterEpisodes(prodCategories.style) ); return; } if(category==="butterflies"){ prodShowEpisodes( prodFilterEpisodes(prodCategories.butterflies) ); return; } if(category==="chase"){ prodShowEpisodes( prodFilterEpisodes(prodCategories.chase) ); return; } } prodTabs.forEach(function(tab){ tab.addEventListener("click",function(){ prodTabs.forEach(function(item){ item.classList.remove("active"); }); tab.classList.add("active"); prodSelectCategory( tab.dataset.category ); }); }); prodSelectCategory("all"); const prodTop=document.querySelector(".prod-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ prodTop.classList.add("show"); }else{ prodTop.classList.remove("show"); } }); prodTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

•••

Cast:

Genres:

⏷ Episode List
const sdSeries = { title: "S2cret Diary", year: "2025", rating: "13+", language: "ENG SUB", description: "S2cret Diary is a vlog-style content series from Hearts2Hearts that offers a more personal and relaxed look into the members' everyday moments through self-filmed videos, behind-the-scenes clips, and casual activities.", cast: "Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres: "Variety • Slice of Life" }; const sdEpisodes = [ { title: "Our Little Night Out in Hong Kong౨ৎ⋆。˚Dinner with a View&A Ferris Wheel Ride🎡 S2cret Diary ꒰ EP.11 ꒱", duration: "40m", id: "kmg3SEosPAs" }, { title: "Hotel Room Tour in Hong Kong ⌂*:・ & Our First-Ever Afternoon Tea!🫖 S2cret Diary ꒰ EP.10 ꒱", duration: "40m", id: "JMp29HQI-rM" }, { id:"mkDdVFm7iI4", title:"Who's My Secret Santa? ⋆.𐙚🫧❀ Christmas Market & Our First Christmas Memories 🎄", duration:"32m" }, { id:"hgbFhkIUTWU", title:"A Day in Coloane Village, Macau✧₊˚ Egg Tarts, Bubble Tea & Dinner! (๑˃̵ᴗ˂̵)", duration:"30m" }, { id:"Xr1rwMKLe7A", title:"Our First Monjayaki & Pokémon Center in Tokyo ✧.⋆(˶˃ ⤙ ˂˶)。₊✦", duration:"27m" }, { id:"5QCROPtkBOI", title:"Our comic book cafe day! Mukbang & Board Games ₊˚(˶˃ ᵕ ˂˶) ࣪𐙚ა ✧", duration:"33m" }, { id:"35F3BiQCutU", title:"Our first overseas trip to Japan ✈︎→✈︎⋆☁️", duration:"31m" }, { id:"eirKgqco2ig", title:"Capturing memories with my BFF ˚⋆♡📷🧸˚₊✧", duration:"18m" }, { id:"fSL6odGvdcE", title:"Making our own BFF rings ✧˖°⋆", duration:"22m" }, { id:"DKV6oCq0aac", title:"Walking along the Jeju night sea & Picking our hotel roommates ✩⋆˚。⋆", duration:"23m" }, { id:"R6Wz7CSLxTc", title:"Getting ready for our first trip to Jeju ᯓ ✈︎", duration:"32m" }, { episode:"0", id:"DuhqlOQjTAI", title:"Our Secret Video Diary [◉¯] *.˚ ༘", duration:"1m" } ]; const sdPlayer = document.querySelector(".sd-player"); const sdList = document.querySelector(".sd-list"); document.querySelector(".sd-title").textContent = sdSeries.title; document.querySelector(".sd-year").textContent = sdSeries.year; document.querySelector(".sd-rating").textContent = sdSeries.rating; document.querySelector(".sd-count").textContent = sdEpisodes.length + " Episodes"; document.querySelector(".sd-language").textContent = sdSeries.language; document.querySelector(".sd-description").textContent = sdSeries.description; document.querySelector(".sd-cast").textContent = sdSeries.cast; document.querySelector(".sd-genres").textContent = sdSeries.genres; function sdLoadEpisode(index){ const episode = sdEpisodes[index]; sdPlayer.src = "https://www.youtube-nocookie.com/embed/" + episode.id; document.querySelectorAll(".sd-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } sdEpisodes.forEach(function(episode,index){ const card = document.createElement("div"); card.className = "sd-card"; const number = document.createElement("div"); number.className = "sd-number"; number.textContent = episode.episode !== undefined ? episode.episode : sdEpisodes.length - index - 1; const thumb = document.createElement("img"); thumb.className = "sd-thumb"; thumb.src = "https://i.ytimg.com/vi/" + episode.id + "/hqdefault.jpg"; const text = document.createElement("div"); text.className = "sd-card-text"; const title = document.createElement("div"); title.className = "sd-card-title"; title.textContent = episode.title; const duration = document.createElement("div"); duration.className = "sd-duration"; duration.textContent = episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click", function(){ sdLoadEpisode(index); document.querySelector(".sd-player-wrap").scrollIntoView({ behavior: "smooth", block: "start" }); }); sdList.appendChild(card); }); sdLoadEpisode(0); const sdTop = document.querySelector(".sd-top"); window.addEventListener("scroll", function(){ if(window.scrollY > 300){ sdTop.classList.add("show"); }else{ sdTop.classList.remove("show"); } }); sdTop.addEventListener("click", function(){ window.scrollTo({ top: 0, behavior: "smooth" }); });

•••

Cast:

Genres:

⏷ Episode List
const crhSeries = { title: "Crunchy Hearts", year: "2025", rating: "13+", language: "ENG SUB", description: "Crunchy Hearts is a short-form content series from Hearts2Hearts that highlights the members' playful and spontaneous chemistry through unit-based episodes featuring various activities. The series also includes full-group content such as music video commentaries.", cast: "Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres: "Variety • Comedy" }; const crhEpisodes = [ { id:"-Dpgd6qQgi0", title:"숭큼 다가온 MC 에이나의 음악숭심 숭별회ᯓ★", duration:"27m" }, { id:"wuKGMvim5JQ", title:"한강에서 자전거도 타고~ 한강 라면도 먹고₊˚⊹♡", duration:"17m" }, { id:"ch7R_yRmvrA", title:"뚱냥이ฅ부터 아이돌냥ฅ까지 고양이들 만나고 왔어요 °ʚ₍^. .^₎⟆ɞ°", duration:"18m" }, { id:"guYf1xXl-4I", title:"5년이… 일주일이랑 같아?", duration:"19m" }, { id:"QhickM0cQes", title:"✶⋆.˚뉴텔라의 스무살 기념 심야 PC방♪⋆.✮", duration:"24m" }, { id:"4sNQ7h86FN0", title:"Hearts2Hearts 하츠투하츠 'FOCUS' MV Commentary", duration:"12m" }, { id:"9FrXleUWoSY", title:"하투하는 호텔에서 뭘 하면서 놀까? ♡.°⑅", duration:"21m" }, { id:"EnO-Tmu43TI", title:"𖧧 최애즈의 말차 카페에 오신 것을 환영합니다! 𖧧 Matcha Dessert Review🍃", duration:"18m" }, { id:"WzQhCPyi-Kc", title:"✴︎ 칼국쭈 키링샵에 오신 것을 환영합니다! ✴︎ Making & Unboxing Keychains 🍎🔑", duration:"19m" }, { id:"6tuqbGsyswI", title:"✮ 스타즈 베이커리에 오신 것을 환영합니다! ✮ Strawberry Cream Cake Review🍰", duration:"18m" }, { id:"chGbnVaOtU4", title:"ʚ 여러분의 숙면을 책임질 꿈의 요정 유하&이안입니다! ɞ ASMR with Slime and Squishies🎙️", duration:"21m" }, { id:"qYoa9m8iL-Y", title:"Hearts2Hearts 하츠투하츠 'STYLE' MV Commentary", duration:"12m" }, { id:"p6usOMIf8zg", title:"Enak banget!!! ♡⟡𓌉◯𓇋₊˚⊹ 카르멘의 햇살투어🌴☀️", duration:"21m" }, { id:"gP1M5Rekf-8", title:"내가 바라던 꿈을 이룬 것 같아! ⋆。‧˚ʚ🍓ɞ˚‧。⋆", duration:"15m" }, { id:"iHNHdNlSWxA", title:"Hearts2Hearts 하츠투하츠 'The Chase' MV Commentary", duration:"11m" } ]; const crhPlayer = document.querySelector(".crh-player"); const crhList = document.querySelector(".crh-list"); document.querySelector(".crh-title").textContent = crhSeries.title; document.querySelector(".crh-year").textContent = crhSeries.year; document.querySelector(".crh-rating").textContent = crhSeries.rating; document.querySelector(".crh-count").textContent = crhEpisodes.length + " Episodes"; document.querySelector(".crh-language").textContent = crhSeries.language; document.querySelector(".crh-description").textContent = crhSeries.description; document.querySelector(".crh-cast").textContent = crhSeries.cast; document.querySelector(".crh-genres").textContent = crhSeries.genres; function crhLoadEpisode(index){ const episode = crhEpisodes[index]; crhPlayer.src = "https://www.youtube-nocookie.com/embed/" + episode.id; document.querySelectorAll(".crh-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } crhEpisodes.forEach(function(episode,index){ const card = document.createElement("div"); card.className = "crh-card"; const number = document.createElement("div"); number.className = "crh-number"; number.textContent = crhEpisodes.length - index; const thumb = document.createElement("img"); thumb.className = "crh-thumb"; thumb.src = "https://i.ytimg.com/vi/" + episode.id + "/hqdefault.jpg"; const text = document.createElement("div"); text.className = "crh-card-text"; const title = document.createElement("div"); title.className = "crh-card-title"; title.textContent = episode.title; const duration = document.createElement("div"); duration.className = "crh-duration"; duration.textContent = episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click", function(){ crhLoadEpisode(index); document.querySelector(".crh-player-wrap").scrollIntoView({ behavior: "smooth", block: "start" }); }); crhList.appendChild(card); }); crhLoadEpisode(0); const crhTop = document.querySelector(".crh-top"); window.addEventListener("scroll", function(){ if(window.scrollY > 300){ crhTop.classList.add("show"); }else{ crhTop.classList.remove("show"); } }); crhTop.addEventListener("click", function(){ window.scrollTo({ top: 0, behavior: "smooth" }); });

•••

Cast:

Genres:

⏷ Episode List
const dshSeries = { title: "Two Three H2H", year: "2026", rating: "13+", language: "ENG SUB", description: "Following the conclusion of Hearts Chase, the series follows the members as they take on new adventures, missions, and challenges together.", cast: "Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres: "Variety • Comedy" }; const dshEpisodes = [ { id:"CjQkg-CQGKY", title:"I’m Eating It ALL!!! 0% Self-Control, 100% Betrayal🤣 Hearts2Hearts Mythology🏹 | Two Three H2H EP.7", duration:"25m" }, { id:"s6V262NBfhg", title:"A New Myth After the Odyssey🏛️ ˗ˏˋSoongphrodite Is Hereˎˊ˗ H2H Mythology🏹 | Two Three H2H EP.6", duration:"35m" }, { id:"n2dxWmAuhbM", title:"I’M NEVER GETTING RIPPED OFF↗!!! Betrayals & Chaos😱 ICONIC POWER RACE🔮 | Two Three H2H EP.5", duration:"45m" }, { id:"J3jGBOMU7oU", title:"The Time Controller!!! Tear It All Apart Like Kim Jong Kook😏 ICONIC POWER RACE🔮 | Two Three H2H EP.4", duration:"54m" }, { id:"9iz0o7qiRX4", title:"You Might Be Shocked by My Food Baby😱 Outdoor Fun & Mukbang 🍽️", duration:"42m" }, { id:"M3bXQeTZOmI", title:"Is This the Miracle Morning?☀️ Dawn Karaoke & Girls Talk💬 Staying Up All Night🍋", duration:"37m" }, { id:"E9aYK1-8m04", title:"Wait, Where Are We Going?!😱 Surprise Overnight Trip! Staying Up All Night🍋", duration:"37m" }, { episode:"0", id:"VWUfiEFptYY", title:"걸그룹 맞을까요? 아닐까요? 맞혀 봐~🎶 새 단장 기념! 얼렁뚱땅 개편 회의", duration:"17m" } ]; const dshPlayer = document.querySelector(".dsh-player"); const dshList = document.querySelector(".dsh-list"); document.querySelector(".dsh-title").textContent = dshSeries.title; document.querySelector(".dsh-year").textContent = dshSeries.year; document.querySelector(".dsh-rating").textContent = dshSeries.rating; document.querySelector(".dsh-count").textContent = dshEpisodes.length + " Episodes"; document.querySelector(".dsh-language").textContent = dshSeries.language; document.querySelector(".dsh-description").textContent = dshSeries.description; document.querySelector(".dsh-cast").textContent = dshSeries.cast; document.querySelector(".dsh-genres").textContent = dshSeries.genres; function dshLoadEpisode(index){ const episode = dshEpisodes[index]; dshPlayer.src = "https://www.youtube-nocookie.com/embed/" + episode.id + "?enablejsapi=1&rel=0"; document.querySelectorAll(".dsh-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } dshEpisodes.forEach(function(episode,index){ const card = document.createElement("div"); card.className = "dsh-card"; const number = document.createElement("div"); number.className = "dsh-number"; number.textContent = episode.episode !== undefined ? episode.episode : dshEpisodes.length - index - 1; const thumb = document.createElement("img"); thumb.className = "dsh-thumb"; thumb.src = "https://i.ytimg.com/vi/" + episode.id + "/hqdefault.jpg"; const text = document.createElement("div"); text.className = "dsh-card-text"; const title = document.createElement("div"); title.className = "dsh-card-title"; title.textContent = episode.title; const duration = document.createElement("div"); duration.className = "dsh-duration"; duration.textContent = episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click", function(){ dshLoadEpisode(index); document.querySelector(".dsh-player-wrap").scrollIntoView({ behavior: "smooth", block: "start" }); }); dshList.appendChild(card); }); dshLoadEpisode(0); const dshTop = document.querySelector(".dsh-top"); window.addEventListener("scroll", function(){ if(window.scrollY > 300){ dshTop.classList.add("show"); }else{ dshTop.classList.remove("show"); } }); dshTop.addEventListener("click", function(){ window.scrollTo({ top: 0, behavior: "smooth" }); });

•••

Cast:

Genres:

⏷ Episode List
const hcSeries = { title: "Hearts Chase", year: "2025", rating: "13+", language: "ENG SUB", description: "Hearts Chase is a variety-style series from Hearts2Hearts that brings all members together in themed, game-driven episodes where they take on missions, challenges, and concept-based activities. Each episode places the group in a new setting or scenario as they work together or against each other to complete objectives.", cast: "Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres: "Reality • Variety" }; const hcEpisodes = [ { id:"Kj89aHCOcCg", title:"This Is So Messy!!!🤦‍♀️ Cheating & Chaos in a Cash Prize Game🥕🪵 벚꽃나무 하투하걸렸네", duration:"34m" }, { id:"j5hBm_UqBj8", title:"I'm Not Gonna End Up Like My Uncle👶 Chaotic Big Rural Family🥬 벚꽃나무 하투하걸렸네", duration:"39m" }, { id:"w4XGopRkWvw", title:"Release the Super Antibody!💉 Surviving the Zombie Apocalypse🏕️", duration:"26m" }, { id:"sPlnx4uPHus", title:"We Came for Cops & Robbers... But WHY Are There ZOMBIES?!😱 RUNNING DEAD", duration:"31m" }, { id:"rQjzc2FMov4", title:"Why Are We So Desperate to Be Funny?! No Mercy Comedy Battle🔫 Hearts Sauna♨️", duration:"36m" }, { id:"DWOu-xB7L9E", title:"Mystery Judges🎭 You Might Have a Low Level of Taste👎 Who Will Take the Prize?", duration:"37m" }, { id:"bXSTgYC5dUY", title:"Why Cupcake Monster? Cuz I Rip It Up With The Taste👩‍🍳🔥 Patisserie Class Wars", duration:"34m" }, { id:"qhnA7u2ezFs", title:"절대로 뒤를 돌아봐서는 안 됩니다🩸비명과 비겁이 난무하는 공포 체험😱", duration:"37m" }, { id:"5eOPxCQyQs8", title:"네가 놀래 내가 놀래 애매하긴 해 🤷‍♀️ 휴일의 운명이 달린 하츠 마블 게임♟️", duration:"39m" }, { id:"JWfsMjcu8tY", title:"눈물: 흐를게💧 눈물 없이 볼 수 없는 진대 타임", duration:"29m" }, { id:"rEDEHZptdss", title:"뭉치면 살고!🩵 흩어지면 물수제비!🪨", duration:"23m" }, { id:"Nj3fIE_omak", title:"Hearts Night🌙 Unnecessary Gifts & Mafia Game!🔫", duration:"29m" }, { id:"HbtWL92U6Sk", title:"서당에서 E로 살아남기🤫 vs 키즈카페에서 I로 살아남기👧", duration:"25m" }, { id:"C3IR6P79ARQ", title:"MBTI SWITCH! What If We Exchange E ↔️ I For A Day?", duration:"29m" }, { id:"xoNtDcDCnjI", title:"콜럼버스 대탐험부터 T 익스프레스까지🎢 하투하의 어트랙션 도장깨기🔥", duration:"33m" }, { id:"cUf-j5Nv_IM", title:"환상의 나라 에버랜드로~🎡 봄맞이 피크닉!🌷", duration:"31m" }, { id:"IwFb9c9h3S0", title:"What a chaotic triathlon(?) 💪🏅", duration:"23m" }, { id:"61AiPWA50aM", title:"Hearts Arcade OPEN🕹️ Playing various games!", duration:"25m" }, { id:"40gbowq0sD4", title:"From SNSD to aespa💃 Music Quiz🎵 Funny Filter Game🖼️ Relay Drawing🎨 Let's Go!", duration:"22m" }, { id:"Ay7nG31ayEM", title:"Hearts Museum OPEN! 작품 설명 및 평론회", duration:"37m" } ]; const hcPlayer = document.querySelector(".hc-player"); const hcList = document.querySelector(".hc-list"); document.querySelector(".hc-title").textContent = hcSeries.title; document.querySelector(".hc-year").textContent = hcSeries.year; document.querySelector(".hc-rating").textContent = hcSeries.rating; document.querySelector(".hc-count").textContent = hcEpisodes.length + " Episodes"; document.querySelector(".hc-language").textContent = hcSeries.language; document.querySelector(".hc-description").textContent = hcSeries.description; document.querySelector(".hc-cast").textContent = hcSeries.cast; document.querySelector(".hc-genres").textContent = hcSeries.genres; function hcLoadEpisode(index){ const episode = hcEpisodes[index]; hcPlayer.src = "https://www.youtube-nocookie.com/embed/" + episode.id; document.querySelectorAll(".hc-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } hcEpisodes.forEach(function(episode,index){ const card = document.createElement("div"); card.className = "hc-card"; const number = document.createElement("div"); number.className = "hc-number"; number.textContent = hcEpisodes.length - index; const thumb = document.createElement("img"); thumb.className = "hc-thumb"; thumb.src = "https://i.ytimg.com/vi/" + episode.id + "/hqdefault.jpg"; const text = document.createElement("div"); text.className = "hc-card-text"; const title = document.createElement("div"); title.className = "hc-card-title"; title.textContent = episode.title; const duration = document.createElement("div"); duration.className = "hc-duration"; duration.textContent = episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click", function(){ hcLoadEpisode(index); document.querySelector(".hc-player-wrap").scrollIntoView({ behavior: "smooth", block: "start" }); }); hcList.appendChild(card); }); hcLoadEpisode(0); const hcTop = document.querySelector(".hc-top"); window.addEventListener("scroll", function(){ if(window.scrollY > 300){ hcTop.classList.add("show"); }else{ hcTop.classList.remove("show"); } }); hcTop.addEventListener("click", function(){ window.scrollTo({ top: 0, behavior: "smooth" }); });

••

Members:

Genres:

⏷ Episode List
const firsttakeihSeries={ title:"The First Take", year:"2026", rating:"13+", description:"Hearts2Hearts perform in The First Take.", members:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Live • Vocal" }; const firsttakeihEpisodes=[ { title:"Hearts2Hearts - ICONIC HEART / THE FIRST TAKE", duration:"4m", id:"0-cBNnPZw-8" }, { title:"Hearts2Hearts - RUDE! (Japanese Ver.) / THE FIRST TAKE", duration:"4m", id:"9TjRdsqm7jE" } ]; const firsttakeihPlayer=document.querySelector(".firsttakeih-player"); const firsttakeihList=document.querySelector(".firsttakeih-list"); document.querySelector(".firsttakeih-title").textContent=firsttakeihSeries.title; document.querySelector(".firsttakeih-year").textContent=firsttakeihSeries.year; document.querySelector(".firsttakeih-rating").textContent=firsttakeihSeries.rating; document.querySelector(".firsttakeih-count").textContent=firsttakeihEpisodes.length+" Episodes"; document.querySelector(".firsttakeih-description").textContent=firsttakeihSeries.description; document.querySelector(".firsttakeih-members").textContent=firsttakeihSeries.members; document.querySelector(".firsttakeih-genres").textContent=firsttakeihSeries.genres; function firsttakeihLoadEpisode(index){ const episode=firsttakeihEpisodes[index]; firsttakeihPlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".firsttakeih-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } firsttakeihEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="firsttakeih-card"; const number=document.createElement("div"); number.className="firsttakeih-number"; number.textContent=firsttakeihEpisodes.length-index; const thumb=document.createElement("img"); thumb.className="firsttakeih-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="firsttakeih-card-text"; const title=document.createElement("div"); title.className="firsttakeih-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="firsttakeih-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ firsttakeihLoadEpisode(index); document.querySelector(".firsttakeih-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); firsttakeihList.appendChild(card); }); firsttakeihLoadEpisode(0); const firsttakeihTop=document.querySelector(".firsttakeih-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ firsttakeihTop.classList.add("show"); }else{ firsttakeihTop.classList.remove("show"); } }); firsttakeihTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

Hearts2Hearts '15-LOVE'|On the Spot

2026•13+•3m

Hearts2Hearts perform '15-LOVE' on the spot.

Members: Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on

Genres: Performance

const onthespotTop=document.querySelector(".onthespot-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ onthespotTop.classList.add("show"); }else{ onthespotTop.classList.remove("show"); } }); onthespotTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

Hearts2Hearts Debut Fan Showcase 〈Chase Our Hearts〉 (Full Ver.)

2025•ENG SUB
const cohTop=document.querySelector(".coh-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ cohTop.classList.add("show"); }else{ cohTop.classList.remove("show"); } }); cohTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

••

Cast:

Genres:

⏷ Episode List
const awardfestivalSeries={ title:"Music Awards & Festival Performances", year:"2025", rating:"13+", description:"A collection of Hearts2Hearts performances at music awards, festivals, KCON, and other special stages.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Performance • Live Stage" }; const awardfestivalEpisodes=[ { title:"SUMMER ANJELS(썸머 엔젤스) - 마지막처럼 (원곡: BLACKPINK) @SBS GayoDaejeon Summer", duration:"4m", id:"hqckzLy5G0s" }, { title:"Hearts2Hearts(하츠투하츠) - INTRO + Lemon Tang + 15-LOVE @SBS GayoDaejeon Summer", duration:"4m", id:"-XDvgNjviwg" }, { title:"Hearts2Hearts (하츠투하츠) - STYLE + RUDE! [더 시즌즈-성시경의 고막남친] | KBS 260612 방송", duration:"6m", id:"t53QMjxJ-JM" }, { title:"STYLE - Hearts2Hearts", duration:"3m", id:"-uiIkw6k_Ug" }, { title:"[미방분/4K] Hearts2Hearts - FOCUS | 엠카운트다운 X 메가콘서트 | #엠카운트다운 EP.931 | Mnet 260604 방송", duration:"2m", id:"o9X8MS-Wj8E" }, { title:"[4K] Hearts2Hearts - RUDE! | 엠카운트다운 X 메가콘서트 | #엠카운트다운 EP.931 | Mnet 260604 방송", duration:"3m", id:"o19eGtyaYAY" }, { title:"'OPENING PERFORMANCE/4K' Hearts2Hearts - STYLE | 엠카운트다운 X 메가콘서트 | #엠카운트다운 EP.931 | Mnet 260604 방송", duration:"4m", id:"VtHBuYF5jI8" }, { title:"[KCON JAPAN 2026] Hearts2Hearts - RUDE! | Mnet 260529 방송", duration:"3m", id:"0KuzJDGOJWM" }, { title:"[KCON JAPAN 2026] Hearts2Hearts - Electric Shock (원곡: f(x)) | Mnet 260529 방송", duration:"2m", id:"90BTvpF7Adk" }, { title:"Hearts2Hearts - STYLE | ARTIST STAGE | KCON JAPAN 2026", duration:"3m", id:"hqqhfKAQ1uU" }, { title:"Hearts2Hearts - STYLE | 2025 MBC Music Festival | #Hearts2Hearts", duration:"3m", id:"RXJqAdZ_KcQ" }, { title:"IAN & BANG JEEMIN & WONHEE - UP & 첫 사랑니 & 좋은 날 | 2025 MBC Music Festival | #Kpop", duration:"4m", id:"LSb3pZ24VX4" }, { title:"HEARTS2HEARTS - Intro + Style | 2025 MBC Music Festival | KOCOWA+", duration:"4m", id:"7DBdfxXx8Pk" }, { title:"[2025 MBC 가요대제전] IAN & BANG JEEMIN & WONHEE (이.방.원) - UP & 첫 사랑니 & 좋은 날, MBC 251231 방송", duration:"4m", id:"yiVnKyvhNwk" }, { title:"[2025 MBC 가요대제전] 05 Medley (Hearts2Hearts&ALLDAY PROJECT&KickFlip&KiiiKiii&CORTIS&IDID), MBC 251231", duration:"9m", id:"kjvqqxypkps" }, { title:"INTRO + FOCUS - Hearts2Hearts [2025 뮤직뱅크 글로벌페스티벌 IN JAPAN] | KBS 251230 방송", duration:"3m", id:"BFk0_-0ThEQ" }, { title:"소원을 말해봐 (Genie) (원곡: 소녀시대) - Hearts2Hearts [2025 뮤직뱅크 글로벌페스티벌 IN JAPAN] | KBS 251230 방송", duration:"2m", id:"uBVjEk5HKC4" }, { title:"[#MMA2025] Hearts2Hearts - The Chase + Focus (4K) | #Hearts2Hearts #하츠투하츠 #20251220", duration:"6m", id:"EOJWPwdFGoc" }, { title:"Hearts2Hearts - Pretty Please [Open Concert : EP.1551] | KBS KOREA 251130", duration:"3m", id:"_TQvTXTBoQ4" }, { title:"[#2025MAMA] Hearts2Hearts - FOCUS (MAMA ver.) | Mnet 251128 방송", duration:"3m", id:"Og_rtpHBcSw" }, { title:"Hearts2Hearts(하츠투하츠) - FOCUS X Dirty Work (Mash Up Ver.) @SBS GayoDaejeon", duration:"3m", id:"wg-ZD4IdOzc" }, { title:"[#KGMA2025] 하츠투하츠 - FOCUS|#Hearts2Hearts #하츠투하츠|2025 KGMA 무대영상", duration:"3m", id:"7VSHTKprWEU" }, { title:"Hearts2Hearts ハーツトゥハーツ 하츠투하츠 - Pretty Please [2025 APEC Music Festa] | KBS WORLD TV 251026", duration:"3m", id:"LTAUW7xU3yY" }, { title:"Hearts2Hearts ハーツトゥハーツ 하츠투하츠 - STYLE [2025 APEC Music Festa] | KBS WORLD TV 251026", duration:"3m", id:"BOoE7XiNyMk" }, { title:"[2025 더팩트 뮤직 어워즈] Hearts2Hearts (하츠투하츠) 'INTRO Performance' + 'STYLE' @TmarTn2", duration:"5m", id:"JCLxXvFGRaU" }, { title:"KiiiKiii X Hearts2Hearts - 별의 탄생 : Twinkle Twins [INTRO PERFORMANCE] #2025SBS가요대전Summer", duration:"1m", id:"vOyVcvy6T4Q" }, { title:"Hearts2Hearts - STYLE (Summer Ver.)♬", duration:"3m", id:"PtEVmaWn4to" }, { title:"Hearts2Hearts - The Chase [서울 스프링 페스타 2025 - 서울원더쇼] | KBS 250504 방송", duration:"3m", id:"tdcImAl63Gg" }, { title:"Hearts2Hearts - Butterflies [서울 스프링 페스타 2025 - 서울원더쇼] | KBS 250504 방송", duration:"3m", id:"SBe-lTqkfmw" } ]; const awardfestivalPlayer=document.querySelector(".awardfestival-player"); const awardfestivalList=document.querySelector(".awardfestival-list"); document.querySelector(".awardfestival-title").textContent=awardfestivalSeries.title; document.querySelector(".awardfestival-year").textContent=awardfestivalSeries.year; document.querySelector(".awardfestival-rating").textContent=awardfestivalSeries.rating; document.querySelector(".awardfestival-count").textContent=awardfestivalEpisodes.length+" Episodes"; document.querySelector(".awardfestival-description").textContent=awardfestivalSeries.description; document.querySelector(".awardfestival-cast").textContent=awardfestivalSeries.cast; document.querySelector(".awardfestival-genres").textContent=awardfestivalSeries.genres; function awardfestivalLoadEpisode(index){ const episode=awardfestivalEpisodes[index]; awardfestivalPlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".awardfestival-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } awardfestivalEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="awardfestival-card"; const number=document.createElement("div"); number.className="awardfestival-number"; number.textContent=awardfestivalEpisodes.length-index; const thumb=document.createElement("img"); thumb.className="awardfestival-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="awardfestival-card-text"; const title=document.createElement("div"); title.className="awardfestival-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="awardfestival-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ awardfestivalLoadEpisode(index); document.querySelector(".awardfestival-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); awardfestivalList.appendChild(card); }); awardfestivalLoadEpisode(0); const awardfestivalTop=document.querySelector(".awardfestival-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ awardfestivalTop.classList.add("show"); }else{ awardfestivalTop.classList.remove("show"); } }); awardfestivalTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

••

Cast:

Genres:

⏷ Episode List
const m2Series={ title:"M2 Productions", year:"2025", rating:"13+", description:"A collection of Hearts2Hearts' performances from M2 Productions.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Performance • Dance" }; const m2Episodes=[ { title:"[릴레이댄스] 하츠투하츠(Hearts2Hearts) - Lemon Tang (4K)", duration:"3m", id:"1l_H3lYnzFs" }, { title:"[릴레이댄스] 하츠투하츠(Hearts2Hearts) - RUDE! (4K)", duration:"3m", id:"Roxd7X6z2p0" }, { title:"[릴레이댄스 light] 하츠투하츠(Hearts2Hearts) - FOCUS | 릴댄 프리스타일 ver.", duration:"1m", id:"hbFCg83pl2w" }, { title:"[릴레이댄스] 하츠투하츠(Hearts2Hearts) - FOCUS (4K)", duration:"3m", id:"Rw4rLqf5boU" }, { title:"[MOVE TO PERFORMANCE] Hearts2Hearts(하츠투하츠) - Pretty Please (4K)", duration:"3m", id:"6JQx-sMDWaA" }, { title:"[릴레이댄스 light] 하츠투하츠(Hearts2Hearts) - STYLE | 릴댄 프리스타일 ver.", duration:"1m", id:"nTzQxa1zcWg" }, { title:"[릴레이댄스] 하츠투하츠(Hearts2Hearts) - STYLE (4K)", duration:"3m", id:"5aZ4ich_zbA" }, { title:"[MOVE TO PERFORMANCE] Hearts2Hearts(하츠투하츠) - STYLE (4K)", duration:"3m", id:"vOdWFF_1U2A" }, { title:"[릴레이댄스] 하츠투하츠(Hearts2Hearts) - The Chase (4K)", duration:"3m", id:"0mFn-oQhBZQ" } ]; const m2Player=document.querySelector(".m2-player"); const m2List=document.querySelector(".m2-list"); document.querySelector(".m2-title").textContent=m2Series.title; document.querySelector(".m2-year").textContent=m2Series.year; document.querySelector(".m2-rating").textContent=m2Series.rating; document.querySelector(".m2-count").textContent=m2Episodes.length+" Episodes"; document.querySelector(".m2-description").textContent=m2Series.description; document.querySelector(".m2-cast").textContent=m2Series.cast; document.querySelector(".m2-genres").textContent=m2Series.genres; function m2LoadEpisode(index){ const episode=m2Episodes[index]; m2Player.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".m2-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } m2Episodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="m2-card"; const number=document.createElement("div"); number.className="m2-number"; number.textContent=m2Episodes.length-index; const thumb=document.createElement("img"); thumb.className="m2-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="m2-card-text"; const title=document.createElement("div"); title.className="m2-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="m2-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ m2LoadEpisode(index); document.querySelector(".m2-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); m2List.appendChild(card); }); m2LoadEpisode(0); const m2Top=document.querySelector(".m2-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ m2Top.classList.add("show"); }else{ m2Top.classList.remove("show"); } }); m2Top.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

••

Cast:

Genres:

⏷ Episode List
const choomSeries={ title:"STUDIO CHOOM", year:"2025", rating:"13+", description:"A collection of Hearts2Hearts' performances from STUDIO CHOOM.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Performance • Dance" }; const choomEpisodes=[ { title:"Hearts2Hearts(하츠투하츠) 'Lemon Tang' (4K) | MOVE TO PERFORMANCE", duration:"3m", id:"To6mqr47pxE" }, { title:"(Full Focused) Hearts2Hearts(하츠투하츠) 'RUDE!' (4K) | STUDIO CHOOM ORIGINAL", duration:"3m", id:"gQrM7MiidfU" }, { title:"Hearts2Hearts(하츠투하츠) 'RUDE!' (4K) | STUDIO CHOOM ORIGINAL", duration:"3m", id:"c330ov8bsxI" }, { title:"[MOVE TO PERFORMANCE] Hearts2Hearts(하츠투하츠) - Pretty Please (4K)", duration:"3m", id:"6JQx-sMDWaA" }, { title:"[MOVE TO PERFORMANCE] Hearts2Hearts(하츠투하츠) - STYLE (4K)", duration:"3m", id:"vOdWFF_1U2A" }, { title:"(Full Focused) Hearts2Hearts(하츠투하츠) 'FOCUS' (4K) | STUDIO CHOOM ORIGINAL", duration:"3m", id:"-QIVArbnexY" }, { title:"Hearts2Hearts(하츠투하츠) 'FOCUS' (4K) | STUDIO CHOOM ORIGINAL", duration:"3m", id:"5ae0vFdR4xY" }, { title:"(Full Focused) Hearts2Hearts(하츠투하츠) 'The Chase' (4K) | STUDIO CHOOM ORIGINAL", duration:"3m", id:"fHIwsnMV_dU" }, { title:"Hearts2Hearts(하츠투하츠) 'The Chase' (4K) | STUDIO CHOOM ORIGINAL", duration:"3m", id:"l20tTH8XirU" } ]; const choomCategories={ originals:[ 1,2,3,4,7,8 ], move:[ 5,6,9 ] }; const choomPlayer=document.querySelector(".choom-player"); const choomList=document.querySelector(".choom-list"); const choomTabs=document.querySelectorAll(".choom-tab"); let choomCurrentEpisodes=[...choomEpisodes]; document.querySelector(".choom-title").textContent= choomSeries.title; document.querySelector(".choom-year").textContent= choomSeries.year; document.querySelector(".choom-rating").textContent= choomSeries.rating; document.querySelector(".choom-count").textContent= choomEpisodes.length+" Episodes"; document.querySelector(".choom-description").textContent= choomSeries.description; document.querySelector(".choom-cast").textContent= choomSeries.cast; document.querySelector(".choom-genres").textContent= choomSeries.genres; function choomFilterEpisodes(numbers){ return choomEpisodes.filter(function(episode,index){ const episodeNumber=choomEpisodes.length-index; return numbers.includes(episodeNumber); }); } function choomShowEpisodes(episodes){ choomCurrentEpisodes=episodes; choomList.innerHTML=""; document.querySelector(".choom-count").textContent= episodes.length+" Episodes"; episodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="choom-card"; const number=document.createElement("div"); number.className="choom-number"; number.textContent=episodes.length-index; const thumb=document.createElement("img"); thumb.className="choom-thumb"; thumb.src= "https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="choom-card-text"; const title=document.createElement("div"); title.className="choom-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="choom-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ choomLoadEpisode(index); document.querySelector(".choom-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); choomList.appendChild(card); }); if(episodes.length){ choomLoadEpisode(0); } } function choomLoadEpisode(index){ const episode=choomCurrentEpisodes[index]; choomPlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".choom-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } function choomSelectCategory(category){ if(category==="all"){ choomShowEpisodes( [...choomEpisodes] ); return; } if(category==="originals"){ choomShowEpisodes( choomFilterEpisodes(choomCategories.originals) ); return; } if(category==="move"){ choomShowEpisodes( choomFilterEpisodes(choomCategories.move) ); return; } } choomTabs.forEach(function(tab){ tab.addEventListener("click",function(){ choomTabs.forEach(function(item){ item.classList.remove("active"); }); tab.classList.add("active"); choomSelectCategory(tab.dataset.category); }); }); choomSelectCategory("all"); const choomTop=document.querySelector(".choom-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ choomTop.classList.add("show"); }else{ choomTop.classList.remove("show"); } }); choomTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

••

Cast:

Genres:

⏷ Episode List
const performancesSeries={ title:"Dance Practice & Choreography", year:"2025", rating:"13+", description:"A collection of Hearts2Hearts' performance videos, dance practices, choreography showcases, and special performance content released across different promotions.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Performance • Dance" }; const performancesEpisodes=[ { id:"An0vA4ZLqkk", title:"Hearts2Hearts 하츠투하츠 'ICONIC HEART' Dance Practice", duration:"3m" }, { title:"Now introducing, Lemon Tang by Hearts2Hearts!", duration:"3m", id:"ojh4JFizJYo" }, { title:"Hearts2Hearts 하츠투하츠 'Lemon Tang' Dance Practice", duration:"2m", id:"Mp6phSXWv-U" }, { title:"Hearts2Hearts 하츠투하츠 'RUDE!' Dance Practice", duration:"3m", id:"RXQCY_zxz-E" }, { title:"Hearts2Hearts 하츠투하츠 'Electric Shock' Stage Rehearsal (Original Song by f(x))", duration:"2m", id:"SX2tlyF3rRQ" }, { title:"Hearts2Hearts IAN 'UP (KARINA Solo)' (Original Song by aespa)", duration:"1m", id:"dYY2JBp_xlQ" }, { title:"Hearts2Hearts JIWOO&JUUN&A-NA 'Anymotion' (Original Song by Lee Hyo Ri)", duration:"1m", id:"JzrdmC7E1q8" }, { title:"Hearts2Hearts 하츠투하츠 'FOCUS' Dance Practice", duration:"3m", id:"C9McWCeK6QA" }, { title:"Hearts2Hearts 하츠투하츠 'Pretty Please' Dance Practice", duration:"3m", id:"zbrqDulNSaA" }, { title:"Hearts2Hearts 하츠투하츠 'Gee' Dance Practice (Original Song by Girls' Generation)", duration:"3m", id:"1aRAmKQULmQ" }, { title:"Hearts2Hearts 하츠투하츠 'STYLE' Dance Practice", duration:"3m", id:"NLjMZJKMOIc" }, { title:"Hearts2Hearts 하츠투하츠 'The Chase' Dance Practice", duration:"3m", id:"38bNr6gy4CE" }, { title:"Hearts2Hearts 하츠투하츠 'The Chase' Performance Video", duration:"3m", id:"GtPPT-qSXj8" } ]; const performancesPlayer=document.querySelector(".performances-player"); const performancesList=document.querySelector(".performances-list"); document.querySelector(".performances-title").textContent=performancesSeries.title; document.querySelector(".performances-year").textContent=performancesSeries.year; document.querySelector(".performances-rating").textContent=performancesSeries.rating; document.querySelector(".performances-count").textContent=performancesEpisodes.length+" Episodes"; document.querySelector(".performances-description").textContent=performancesSeries.description; document.querySelector(".performances-cast").textContent=performancesSeries.cast; document.querySelector(".performances-genres").textContent=performancesSeries.genres; function performancesLoadEpisode(index){ const episode=performancesEpisodes[index]; performancesPlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".performances-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } performancesEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="performances-card"; const number=document.createElement("div"); number.className="performances-number"; number.textContent=performancesEpisodes.length-index; const thumb=document.createElement("img"); thumb.className="performances-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="performances-card-text"; const title=document.createElement("div"); title.className="performances-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="performances-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ performancesLoadEpisode(index); document.querySelector(".performances-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); performancesList.appendChild(card); }); performancesLoadEpisode(0); const performancesTop=document.querySelector(".performances-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ performancesTop.classList.add("show"); }else{ performancesTop.classList.remove("show"); } }); performancesTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

••

Cast:

Genres:

⏷ Episode List
const cheeringguideSeries={ title:"Cheering Guide", year:"2025", rating:"13+", description:"A collection of Hearts2Hearts' official cheering guides.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Cheering Guide" }; const cheeringguideEpisodes=[ { title:"Hearts2Hearts 하츠투하츠 'Lemon Tang' Cheering Guide | S2U(하츄)와 함께라면 다 이겨, 여름 Heart 🩵", duration:"3m", id:"vzJnOHBAtCo" }, { title:"Hearts2Hearts 하츠투하츠 'RUDE!' Cheering Guide | S2U(하츄) 망설임은 Never 이끌린 대로 해 🩵", duration:"4m", id:"AjK78uAd6pA" }, { title:"Hearts2Hearts 하츠투하츠 'FOCUS' Cheering Guide | I cannot focus on anything but S2U(하츄) 🩵", duration:"3m", id:"0pmDQ1iovVo" }, { title:"Hearts2Hearts 'STYLE' Cheering Guide | I like your STYLE 🍀🩵", duration:"4m", id:"FDOec4bINIQ" }, { title:"Hearts2Hearts 'The Chase' Cheering Guide | You love The Chase 🍀🩵", duration:"4m", id:"3ycS2cJvAN4" } ]; const cheeringguidePlayer=document.querySelector(".cheeringguide-player"); const cheeringguideList=document.querySelector(".cheeringguide-list"); document.querySelector(".cheeringguide-title").textContent=cheeringguideSeries.title; document.querySelector(".cheeringguide-year").textContent=cheeringguideSeries.year; document.querySelector(".cheeringguide-rating").textContent=cheeringguideSeries.rating; document.querySelector(".cheeringguide-count").textContent=cheeringguideEpisodes.length+" Episodes"; document.querySelector(".cheeringguide-description").textContent=cheeringguideSeries.description; document.querySelector(".cheeringguide-cast").textContent=cheeringguideSeries.cast; document.querySelector(".cheeringguide-genres").textContent=cheeringguideSeries.genres; function cheeringguideLoadEpisode(index){ const episode=cheeringguideEpisodes[index]; cheeringguidePlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".cheeringguide-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } cheeringguideEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="cheeringguide-card"; const number=document.createElement("div"); number.className="cheeringguide-number"; number.textContent=cheeringguideEpisodes.length-index; const thumb=document.createElement("img"); thumb.className="cheeringguide-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="cheeringguide-card-text"; const title=document.createElement("div"); title.className="cheeringguide-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="cheeringguide-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ cheeringguideLoadEpisode(index); document.querySelector(".cheeringguide-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); cheeringguideList.appendChild(card); }); cheeringguideLoadEpisode(0); const cheeringguideTop=document.querySelector(".cheeringguide-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ cheeringguideTop.classList.add("show"); }else{ cheeringguideTop.classList.remove("show"); } }); cheeringguideTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

••

Cast:

Genres:

⏷ Episode List
const trailersamplerSeries={ title:"Trailer & Mood Sampler", year:"2025", rating:"13+", description:"A collection of Hearts2Hearts' official trailers and mood samplers.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Trailer • Sampler" }; const trailersamplerEpisodes=[ { title:"Hearts2Hearts 하츠투하츠 'ICONIC HEART' Mood Sampler : What are ICONIC Girls made of?", duration:"1m", id:"MjTUDOI8yxg" }, { title:"Hearts2Hearts 하츠투하츠 Trailer : The LemonTang Syndrome", duration:"3m", id:"wrdkAIreor4" }, { title:"2026 Hearts2Hearts ❮HEARTS 2 HOUSE❯ Official Trailer", duration:"34s", id:"K70zrYppVas" }, { title:"Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #YE_ON #예온", duration:"27s", id:"bcDV__7_lpE" }, { title:"Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #STELLA #스텔라", duration:"25s", id:"QttkpndZXoI" }, { title:"Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #JIWOO #지우", duration:"25s", id:"QCJqdtgoFEM" }, { title:"Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #YUHA #유하", duration:"23s", id:"0cy6wsUjbC0" }, { title:"Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #IAN #이안", duration:"34s", id:"Mf2MbILK200" }, { title:"Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #A_NA #에이나", duration:"21s", id:"PArwInNjZ4A" }, { title:"Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #JUUN #주은", duration:"25s", id:"OMyCbdH3KTY" }, { title:"Hearts2Hearts 하츠투하츠 'RUDE!' Mood Sampler #CARMEN #카르멘", duration:"21s", id:"i8c1SXtMr2k" }, { title:"Hearts2Hearts : 하츄컴퍼니 직원 행동 지침서 | How to Behave When the Heart is Missing", duration:"1m", id:"9V3t4N6tvMc" }, { title:"2026 Hearts2Hearts SEASON’S GREETINGS VIDEO TEASER", duration:"1m", id:"ff6se09_pVw" }, { title:"Hearts2Hearts 하츠투하츠 'FOCUS' Mood Sampler #2 | Chapter 2. Hard2Hide", duration:"45s", id:"SngpMKBb5Gc" }, { title:"Hearts2Hearts 하츠투하츠 'FOCUS' Mood Sampler #1 | Chapter 1. How2getHearts", duration:"1m", id:"fKFJMwIzZOY" }, { title:"Hearts2Hearts 하츠투하츠 'FOCUS' Trailer", duration:"1m", id:"tPNGxVu5d68" }, { title:"˚₊‧꒰ა H2H STYLISH PHOTO BOOTH ໒꒱ ‧₊˚", duration:"20s", id:"GqRkcX25TPM" }, { title:"Hearts2Hearts 하츠투하츠 'The Chase' Mood Sampler", duration:"38s", id:"blSCP-wFWUI" }, { title:"Hearts2Hearts 하츠투하츠 'Chase Your Choice' Debut Trailer", duration:"2m", id:"srEUps3-5mo" }, { title:"˗ˋˏϟˎˊ˗ ☎ 𖡬 𖤐 | Hearts2Hearts", duration:"2m", id:"clVrZJeuqqk" } ]; const trailersamplerPlayer=document.querySelector(".trailersampler-player"); const trailersamplerList=document.querySelector(".trailersampler-list"); document.querySelector(".trailersampler-title").textContent=trailersamplerSeries.title; document.querySelector(".trailersampler-year").textContent=trailersamplerSeries.year; document.querySelector(".trailersampler-rating").textContent=trailersamplerSeries.rating; document.querySelector(".trailersampler-count").textContent=trailersamplerEpisodes.length+" Episodes"; document.querySelector(".trailersampler-description").textContent=trailersamplerSeries.description; document.querySelector(".trailersampler-cast").textContent=trailersamplerSeries.cast; document.querySelector(".trailersampler-genres").textContent=trailersamplerSeries.genres; function trailersamplerLoadEpisode(index){ const episode=trailersamplerEpisodes[index]; trailersamplerPlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".trailersampler-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } trailersamplerEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="trailersampler-card"; const number=document.createElement("div"); number.className="trailersampler-number"; number.textContent=trailersamplerEpisodes.length-index; const thumb=document.createElement("img"); thumb.className="trailersampler-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="trailersampler-card-text"; const title=document.createElement("div"); title.className="trailersampler-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="trailersampler-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ trailersamplerLoadEpisode(index); document.querySelector(".trailersampler-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); trailersamplerList.appendChild(card); }); trailersamplerLoadEpisode(0); const trailersamplerTop=document.querySelector(".trailersampler-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ trailersamplerTop.classList.add("show"); }else{ trailersamplerTop.classList.remove("show"); } }); trailersamplerTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

••

Cast:

Genres:

⏷ Episode List
const weverseSeries={ title:"Weverse Live", year:"2025", rating:"13+", description:"A collection of Hearts2Hearts' Weverse (and Tiktok) LIVE broadcasts, including group, unit, and solo livestreams.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Live • Talk" }; const weverseEpisodes=[ { title: "26.10.31 하츠투하츠 주은 위버스 라이브 | Hearts2Hearts Juun Weverse Live", duration: "2h 43m", id: "x0r2s5FTYhE" }, { title: "26.10.24 하츠투하츠 지우 위버스 보이스 라이브 | Hearts2Hearts Jiwoo Weverse Voice Live", duration: "32m", id: "VHe76MtHfyg" }, { title: "26.10.20 하츠투하츠 스텔라 위버스 라이브 | Hearts2Hearts Stella Weverse Live", duration: "1h 39m", id: "pq8xOTf36O8" }, { title: "26.10.18 하츠투하츠 유하 위버스 라이브 | Hearts2Hearts Yuha Weverse Live", duration: "46m", id: "3GuaojqCD5k" }, { title: "26.10.09 하츠투하츠 이안 위버스 라이브 | Hearts2Hearts Ian Weverse Live", duration: "1h 24m", id: "P1DQQNQtuxU" }, { title: "26.10.03 하츠투하츠 카르멘 위버스 라이브 | Hearts2Hearts Carmen Weverse Live", duration: "53m", id: "nWLQYDOymgQ" }, { title: "26.09.30 하츠투하츠 이안 위버스 라이브 | Hearts2Hearts Ian Weverse Live", duration: "1h 27m", id: "sWLbH7HIEHw" }, { title: "26.09.29 하츠투하츠 주은 위버스 라이브 | Hearts2Hearts Juun Weverse Live", duration: "1h 33m", id: "_nkc1YQniJ0" }, { title:"26.09.24 하츠투하츠 예온 위버스 라이브 | Hearts2Hearts Ye-on Weverse Live", duration:"58m", id:"L2MR4PEry7g" }, { title:"26.09.22 하츠투하츠 스텔라 & 이안 위버스 라이브 | Hearts2Hearts Stella & Ian Weverse Live", duration:"1h 17m", id:"8Yn2gPGzro0" }, { title:"26.09.20 하츠투하츠 주은 & 에이나 위버스 라이브 | Hearts2Hearts Juun & A-na Weverse Live", duration:"1h 13m", id:"Zh21Q_J-J-8" }, { title:"26.09.18 하츠투하츠 지우 & 유하 위버스 라이브 | Hearts2Hearts Jiwoo & Yuha Weverse Live", duration:"54m", id:"C6xeN5jyoR4" }, { title:"26.09.14 하츠투하츠 주은 위버스 라이브 | Hearts2Hearts Juun Weverse Live", duration:"19m", id:"6CJ0-ykQk5w" }, { title:"26.09.10 하츠투하츠 지우 위버스 라이브 | Hearts2Hearts Jiwoo Weverse Live", duration:"45m", id:"TXm7kHJisuM" }, { title:"26.09.09 하츠투하츠 유하 & 스텔라 위버스 라이브 | Hearts2Hearts Yuha & Stella Weverse Live", duration:"1h", id:"hkDJEEPPPss" }, { title:"26.09.07 하츠투하츠 카르멘 위버스 보이스 라이브 | Hearts2Hearts Carmen Weverse Voice Live", duration:"31m", id:"_-Hx068G28g" }, { title:"26.08.30 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"18m", id:"rJmiYjQ7w_c" }, { title:"26.08.29 하츠투하츠 에이나 위버스 라이브 | Hearts2Hearts A-NA Weverse Live", duration:"1h 09m", id:"Z1xbsyJsQWk" }, { title:"26.08.21 하츠투하츠 스텔라 위버스 라이브 | Hearts2Hearts Stella Weverse Live", duration:"26m", id:"Lyt4vFbm7O0" }, { title:"26.08.18 하츠투하츠 유하 위버스 라이브 | Hearts2Hearts Yuha Weverse Live", duration:"1h 18m", id:"B2idwHH8Zt0" }, { title:"26.08.17 하츠투하츠 지우 위버스 라이브 | Hearts2Hearts Jiwoo Weverse Live", duration:"1h 34m", id:"6AXcMBVVfac" }, { title:"26.08.16 하츠투하츠 틱톡 라이브 | Hearts2Hearts Tiktok Live", duration:"37m", id:"VXYpJrcqNMU" }, { title:"26.08.16 하츠투하츠 이안 위버스 라이브 | Hearts2Hearts Ian Weverse Live", duration:"1h 04m", id:"w9tfur_UySw" }, { title:"26.08.09 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"15m", id:"1GIMScSm5MI" }, { title:"26.08.07 하츠투하츠 주은 위버스 라이브 | Hearts2Hearts Juun Weverse Live", duration:"2h 59m", id:"Jw2_vHsiIhc" }, { title:"26.08.04 하츠투하츠 카르멘 위버스 라이브 | Hearts2Hearts Carmen Weverse Live", duration:"1h 10m", id:"JIc2AtVWXGc" }, { title:"07/31/26 Hearts2Hearts Ye-on Weverse Live", duration:"51m", id:"IUsYmqVoxYg" }, { title:"07/24/26 Hearts2Hearts Juun Weverse Live", duration:"45m", id:"-UbGqgfdWv4" }, { title:"26.07.16 하츠투하츠 지우 & 이안 위버스 라이브 | Hearts2Hearts Jiwoo & Ian Weverse Live", duration:"1h 27m", id:"egSmjoQ953I" }, { title:"26.07.15 하츠투하츠 카르멘 & 스텔라 위버스 라이브 | Hearts2Hearts Carmen & Stella Weverse Live", duration:"58m", id:"OPzsi8D_seg" }, { title:"26.07.14 하츠투하츠 이안 위버스 라이브 | Hearts2Hearts Ian Weverse Live", duration:"1h 40m", id:"FVJ6b8EA8Dk" }, { title:"26.07.13 하츠투하츠 유하 & 에이나 위버스 라이브 | Hearts2Hearts Yuha & A-NA Weverse Live", duration:"1h 13m", id:"v6m_N_En_6o" }, { title:"26.07.05 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"15m", id:"PUamxboQ9s8" }, { title:"26.07.04 하츠투하츠 카르멘 위버스 라이브 | Hearts2Hearts Carmen Weverse Live", duration:"1h 3m", id:"WTxcn4pKpq4" }, { title:"26.07.03 하츠투하츠 주은 위버스 라이브 | Hearts2Hearts Juun Weverse Live", duration:"59m", id:"IJ2G1pD2P3M" }, { title:"26.07.01 하츠투하츠 지우 위버스 라이브 | Hearts2Hearts Jiwoo Weverse Live", duration:"1h", id:"ncn5MDH6lKk" }, { title:"26.06.25 하츠투하츠 카르멘 위버스 라이브 | Hearts2Hearts Carmen Weverse Live", duration:"38m", id:"yGoXINFhPYI" }, { title:"26.06.24 하츠투하츠 주은 & 유하 위버스 라이브 | Hearts2Hearts Yuha & Juun Weverse Live", duration:"1h 17m", id:"0jIcFMXYaKY" }, { title:"26.06.15 하츠투하츠 유하 & 주은 위버스 라이브 | Hearts2Hearts Yuha & Juun Weverse Live", duration:"1h 15m", id:"8-89vZPpyRI" }, { title:"26.06.09 하츠투하츠 카르멘 & 예온 위버스 라이브 | Hearts2Hearts Carmen & Ye-on Weverse Live", duration:"1h 11m", id:"P3dElG67B4c" }, { title:"26.06.07 하츠투하츠 스텔라 & 이안 위버스 라이브 | Hearts2Hearts Stella & Ian Weverse Live", duration:"1h 4m", id:"4Lal1039_1s" }, { title:"26.06.05 하츠투하츠 지우 & 에이나 위버스 라이브 | Hearts2Hearts Jiwoo & A-NA Weverse Live", duration:"1h 6m", id:"uGmNMWBFR1U" }, { title:"26.04.01 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"21m", id:"Bkv8pMDAAt0" }, { title:"26.03.15 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"29m", id:"K-yxi4D1t28" }, { title:"26.03.01 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"31m", id:"y7YePo5YX1w" }, { title:"26.02.24 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"9m", id:"nCa7cBsFKok" }, { title:"26.02.22 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"34m", id:"vtFK5p9RVrE" }, { title:"25.12.25 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"27m", id:"alw3gjiUNI8" }, { title:"25.10.16 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"1h 1m", id:"FJe-lI25_rA" }, { title:"25.09.30 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"38m", id:"gSyr1h4x16M" }, { title:"25.09.25 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"40m", id:"DYD1p6wfFcw" }, { title:"25.09.06 하츠투하츠 위버스 보이스 라이브 | Hearts2Hearts Weverse Live", duration:"9m", id:"xBE5fWIiLsE" }, { title:"25.08.10 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"27m", id:"MVVWdJRNwJM" }, { title:"25.06.02 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"33m", id:"aRdy2939qx4" }, { title:"25.05.28 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"11m", id:"7mat1sswWKI" }, { title:"25.05.06 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"27m", id:"SzrMB55re8Q" }, { title:"25.02.27 하츠투하츠 위버스 라이브 | Hearts2Hearts Weverse Live", duration:"22m", id:"YPZqt4biaQo" } ]; const weverseCategories={ group:[ 1,2,3,4,5,6,9,10,11,12,13,14,15,25,34,36,41 ], unit:[ 7,8,16,17,18,19,26,28,29,43,46,47,48 ], members:{ Jiwoo:[ 8,16,22,29,37,44,46,56 ], Carmen:[ 7,18,21,24,28,32,42,52 ], Yuha:[ 8,19,26,38,43,46,54 ], Stella:[ 7,17,28,39,43,48,55 ], Juun:[ 8,19,20,23,30,33,45,47,50,57 ], "A-na":[ 7,16,26,40,47 ], Ian:[ 7,17,27,29,35,48,51,53 ], "Ye-on":[ 8,18,31,49 ] } }; const weversePlayer=document.querySelector(".weverse-player"); const weverseList=document.querySelector(".weverse-list"); const weverseMembers=document.querySelector(".weverse-members"); const weverseTabs=document.querySelectorAll(".weverse-tab"); const weverseMemberButtons=document.querySelectorAll(".weverse-member"); let weverseCurrentEpisodes=[...weverseEpisodes]; document.querySelector(".weverse-title").textContent= weverseSeries.title; document.querySelector(".weverse-year").textContent= weverseSeries.year; document.querySelector(".weverse-rating").textContent= weverseSeries.rating; document.querySelector(".weverse-count").textContent= weverseEpisodes.length+" Episodes"; document.querySelector(".weverse-description").textContent= weverseSeries.description; document.querySelector(".weverse-cast").textContent= weverseSeries.cast; document.querySelector(".weverse-genres").textContent= weverseSeries.genres; function weverseFilterEpisodes(numbers){ return weverseEpisodes.filter(function(episode,index){ const episodeNumber=weverseEpisodes.length-index; return numbers.includes(episodeNumber); }); } function weverseShowEpisodes(episodes){ weverseCurrentEpisodes=episodes; weverseList.innerHTML=""; document.querySelector(".weverse-count").textContent= episodes.length+" Episodes"; episodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="weverse-card"; const number=document.createElement("div"); number.className="weverse-number"; number.textContent=episodes.length-index; const thumb=document.createElement("img"); thumb.className="weverse-thumb"; thumb.src= "https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="weverse-card-text"; const title=document.createElement("div"); title.className="weverse-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="weverse-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ weverseLoadEpisode(index); document.querySelector(".weverse-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); weverseList.appendChild(card); }); if(episodes.length){ weverseLoadEpisode(0); } } function weverseLoadEpisode(index){ const episode=weverseCurrentEpisodes[index]; weversePlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".weverse-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } function weverseSelectCategory(category){ weverseMemberButtons.forEach(function(button){ button.classList.remove("active"); }); if(category==="all"){ weverseMembers.classList.remove("show"); weverseShowEpisodes( [...weverseEpisodes] ); return; } if(category==="group"){ weverseMembers.classList.remove("show"); weverseShowEpisodes( weverseFilterEpisodes(weverseCategories.group) ); return; } if(category==="unit"){ weverseMembers.classList.remove("show"); weverseShowEpisodes( weverseFilterEpisodes(weverseCategories.unit) ); return; } if(category==="members"){ weverseMembers.classList.add("show"); return; } } weverseTabs.forEach(function(tab){ tab.addEventListener("click",function(){ weverseTabs.forEach(function(item){ item.classList.remove("active"); }); tab.classList.add("active"); weverseSelectCategory(tab.dataset.category); }); }); weverseMemberButtons.forEach(function(button){ button.addEventListener("click",function(){ weverseMemberButtons.forEach(function(item){ item.classList.remove("active"); }); button.classList.add("active"); const member=button.dataset.member; weverseShowEpisodes( weverseFilterEpisodes( weverseCategories.members[member] ) ); }); }); weverseSelectCategory("all"); const weverseTop=document.querySelector(".weverse-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ weverseTop.classList.add("show"); }else{ weverseTop.classList.remove("show"); } }); weverseTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

••

Cast:

Genres:

⏷ Episode List
const ihkrSeries={ title:"Iconic Heart Music Shows", year:"2026", rating:"13+", description:"A collection of Hearts2Hearts' music show performances for ICONIC HEART.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Music Show" }; const ihkrEpisodes=[ { title:"Hearts2Hearts (하츠투하츠) - ICONIC HEART (Korean Ver.) | Show! MusicCore | MBC261017방송", duration:"3m", id:"31ECZsBSkwI" }, { title:"ICONIC HEART (Korean Ver.) - Hearts2Hearts [뮤직뱅크/Music Bank] | KBS 261016 방송", duration:"3m", id:"ujYrYnTP1tg" }, { title:"'COMEBACK' Hearts2Hearts - ICONIC HEART (Korean Ver.) [#엠카운트다운] EP.949 | Mnet 261015 방송", duration:"3m", id:"h9DX5EIQS8E" } ]; const ihkrPlayer=document.querySelector(".ihkr-player"); const ihkrList=document.querySelector(".ihkr-list"); document.querySelector(".ihkr-title").textContent=ihkrSeries.title; document.querySelector(".ihkr-year").textContent=ihkrSeries.year; document.querySelector(".ihkr-rating").textContent=ihkrSeries.rating; document.querySelector(".ihkr-count").textContent=ihkrEpisodes.length+" Episodes"; document.querySelector(".ihkr-description").textContent=ihkrSeries.description; document.querySelector(".ihkr-cast").textContent=ihkrSeries.cast; document.querySelector(".ihkr-genres").textContent=ihkrSeries.genres; function ihkrLoadEpisode(index){ const episode=ihkrEpisodes[index]; ihkrPlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".ihkr-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } ihkrEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="ihkr-card"; const number=document.createElement("div"); number.className="ihkr-number"; number.textContent=ihkrEpisodes.length-index; const thumb=document.createElement("img"); thumb.className="ihkr-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="ihkr-card-text"; const title=document.createElement("div"); title.className="ihkr-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="ihkr-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ ihkrLoadEpisode(index); document.querySelector(".ihkr-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); ihkrList.appendChild(card); }); ihkrLoadEpisode(0); const ihkrTop=document.querySelector(".ihkr-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ ihkrTop.classList.add("show"); }else{ ihkrTop.classList.remove("show"); } }); ihkrTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

••

Cast:

Genres:

⏷ Episode List
const fifteenlovemsSeries={ title:"15-LOVE Music Shows", year:"2026", rating:"13+", description:"A collection of Hearts2Hearts' music show performances for 15-LOVE.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Music Show" }; const fifteenlovemsEpisodes=[ { title:"[단독샷캠4K] 하츠투하츠 '15-LOVE' 단독샷 별도녹화│Hearts2Hearts ONE TAKE STAGE│@SBS Inkigayo 260830", duration:"2m", id:"unWxdN6Mc-0" }, { title:"15-LOVE - Hearts2Hearts (하츠투하츠) | SBS 260830 방송", duration:"3m", id:"gdJWyNFe4bc" }, { title:"Hearts2Hearts (하츠투하츠) - 15-LOVE | Show! MusicCore | MBC260829방송", duration:"2m", id:"mSpcqhztwy4" }, { title:"Hearts2Hearts - 15-LOVE #엠카운트다운 EP.943 | Mnet 260827 방송", duration:"2m", id:"ZgobJaKHY-4" } ]; const fifteenlovemsPlayer=document.querySelector(".fifteenlovems-player"); const fifteenlovemsList=document.querySelector(".fifteenlovems-list"); document.querySelector(".fifteenlovems-title").textContent=fifteenlovemsSeries.title; document.querySelector(".fifteenlovems-year").textContent=fifteenlovemsSeries.year; document.querySelector(".fifteenlovems-rating").textContent=fifteenlovemsSeries.rating; document.querySelector(".fifteenlovems-count").textContent=fifteenlovemsEpisodes.length+" Episodes"; document.querySelector(".fifteenlovems-description").textContent=fifteenlovemsSeries.description; document.querySelector(".fifteenlovems-cast").textContent=fifteenlovemsSeries.cast; document.querySelector(".fifteenlovems-genres").textContent=fifteenlovemsSeries.genres; function fifteenlovemsLoadEpisode(index){ const episode=fifteenlovemsEpisodes[index]; fifteenlovemsPlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".fifteenlovems-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } fifteenlovemsEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="fifteenlovems-card"; const number=document.createElement("div"); number.className="fifteenlovems-number"; number.textContent=fifteenlovemsEpisodes.length-index; const thumb=document.createElement("img"); thumb.className="fifteenlovems-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="fifteenlovems-card-text"; const title=document.createElement("div"); title.className="fifteenlovems-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="fifteenlovems-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ fifteenlovemsLoadEpisode(index); document.querySelector(".fifteenlovems-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); fifteenlovemsList.appendChild(card); }); fifteenlovemsLoadEpisode(0); const fifteenlovemsTop=document.querySelector(".fifteenlovems-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ fifteenlovemsTop.classList.add("show"); }else{ fifteenlovemsTop.classList.remove("show"); } }); fifteenlovemsTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

••

Cast:

Genres:

⏷ Episode List
const lemontangmsSeries={ title:"Lemon Tang Music Shows", year:"2026", rating:"13+", description:"A collection of Hearts2Hearts' music show performances for Lemon Tang.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Music Show" }; const lemontangmsEpisodes=[ { title:"Lemon Tang - Hearts2Hearts (하츠투하츠) | SBS 260712 방송", duration:"3m", id:"ykCWQ0fP7o0" }, { title:"Hearts2Hearts (하츠투하츠) - Lemon Tang | Show! MusicCore | MBC260711방송", duration:"2m", id:"uHWQ7VylFrk" }, { title:"Hearts2Hearts - Lemon Tang #엠카운트다운 EP.936 | Mnet 260709 방송", duration:"2m", id:"YV-7Bf7MD00" }, { id:"UW8uzoxOqnA", title:"[COMEBACK] Hearts2Hearts - Lemon Tang | Show Champion | EP.602 | 260708", duration:"3m" }, { id:"cSTQwK4rbog", title:"Hearts2Hearts (하츠투하츠) - Lemon Tang | Show! Music Core | MBC 260704", duration:"2m" }, { id:"4s-muK5olTw", title:"Hearts2Hearts ハーツトゥハーツ - Lemon Tang [Music Bank] | KBS WORLD TV 260703", duration:"3m" }, { id:"WW_cCmhqNI8", title:"Hearts2Hearts - Lemon Tang #엠カ운트다운 EP.935 | Mnet 260702 방송", duration:"3m" }, { title:"Lemon Tang - Hearts2Hearts (하츠투하츠) | SBS 260628 방송", duration:"3m", id:"2mNkfGMK7AI" }, { title:"Hearts2Hearts (하츠투하츠) - Lemon Tang | Show! MusicCore | MBC260627방송", duration:"3m", id:"a8tzYxhBjOg" }, { title:"'최초 공개' Hearts2Hearts - Lemon Tang #엠カ운트다운 EP.934 | Mnet 260625 방송", duration:"4m", id:"R1zwtZV-N6o" } ]; const lemontangmsPlayer=document.querySelector(".lemontangms-player"); const lemontangmsList=document.querySelector(".lemontangms-list"); document.querySelector(".lemontangms-title").textContent=lemontangmsSeries.title; document.querySelector(".lemontangms-year").textContent=lemontangmsSeries.year; document.querySelector(".lemontangms-rating").textContent=lemontangmsSeries.rating; document.querySelector(".lemontangms-count").textContent=lemontangmsEpisodes.length+" Episodes"; document.querySelector(".lemontangms-description").textContent=lemontangmsSeries.description; document.querySelector(".lemontangms-cast").textContent=lemontangmsSeries.cast; document.querySelector(".lemontangms-genres").textContent=lemontangmsSeries.genres; function lemontangmsLoadEpisode(index){ const episode=lemontangmsEpisodes[index]; lemontangmsPlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".lemontangms-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } lemontangmsEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="lemontangms-card"; const number=document.createElement("div"); number.className="lemontangms-number"; number.textContent=lemontangmsEpisodes.length-index; const thumb=document.createElement("img"); thumb.className="lemontangms-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="lemontangms-card-text"; const title=document.createElement("div"); title.className="lemontangms-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="lemontangms-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ lemontangmsLoadEpisode(index); document.querySelector(".lemontangms-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); lemontangmsList.appendChild(card); }); lemontangmsLoadEpisode(0); const lemontangmsTop=document.querySelector(".lemontangms-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ lemontangmsTop.classList.add("show"); }else{ lemontangmsTop.classList.remove("show"); } }); lemontangmsTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

••

Cast:

Genres:

⏷ Episode List
const rudemsSeries={ title:"RUDE! Music Shows", year:"2026", rating:"13+", description:"A collection of Hearts2Hearts' music show performances for RUDE!.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Music Show" }; const rudemsEpisodes=[ { title:"Hearts2Hearts (하츠투하츠) - RUDE! | Show! MusicCore | MBC260314방송", duration:"3m", id:"_Zlp69mTBiY" }, { title:"RUDE! - Hearts2Hearts [뮤직뱅크/Music Bank] | KBS 260313 방송", duration:"3m", id:"TXxs-MldY2s" }, { title:"Hearts2Hearts - RUDE! #엠카운트다운 EP.919 | Mnet 260312 방송", duration:"3m", id:"o_cBHoHY3mw" }, { title:"RUDE! - Hearts2Hearts (하츠투하츠) | SBS 260308 방송", duration:"3m", id:"Ai6FLQmajaI" }, { title:"Hearts2Hearts (하츠투하츠) - RUDE! | Show! MusicCore | MBC260307방송", duration:"3m", id:"37VtoDg5O2o" }, { title:"Hearts2Hearts ハーツトゥハーツ 하츠투하츠 - RUDE! [Music Bank] | KBS WORLD TV 260306", duration:"3m", id:"AcvO1zQ1bJk" }, { title:"RUDE! - Hearts2Hearts (하츠투하츠) | SBS 260301 방송", duration:"3m", id:"J8t_o0ak7Vc" }, { title:"Hearts2Hearts (하츠투하츠) - RUDE! | Show! MusicCore | MBC260228방송", duration:"3m", id:"j3gznEhDUK8" }, { title:"RUDE! - Hearts2Hearts [뮤직뱅크/Music Bank] | KBS 260227 방송", duration:"3m", id:"JaLFIKX71gE" }, { title:"'최초 공개' Hearts2Hearts - RUDE! #엠카운트다운 EP.917 | Mnet 260226 방송", duration:"4m", id:"NoQPDBpxfyA" } ]; const rudemsPlayer=document.querySelector(".rudems-player"); const rudemsList=document.querySelector(".rudems-list"); document.querySelector(".rudems-title").textContent=rudemsSeries.title; document.querySelector(".rudems-year").textContent=rudemsSeries.year; document.querySelector(".rudems-rating").textContent=rudemsSeries.rating; document.querySelector(".rudems-count").textContent=rudemsEpisodes.length+" Episodes"; document.querySelector(".rudems-description").textContent=rudemsSeries.description; document.querySelector(".rudems-cast").textContent=rudemsSeries.cast; document.querySelector(".rudems-genres").textContent=rudemsSeries.genres; function rudemsLoadEpisode(index){ const episode=rudemsEpisodes[index]; rudemsPlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".rudems-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } rudemsEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="rudems-card"; const number=document.createElement("div"); number.className="rudems-number"; number.textContent=rudemsEpisodes.length-index; const thumb=document.createElement("img"); thumb.className="rudems-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="rudems-card-text"; const title=document.createElement("div"); title.className="rudems-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="rudems-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ rudemsLoadEpisode(index); document.querySelector(".rudems-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); rudemsList.appendChild(card); }); rudemsLoadEpisode(0); const rudemsTop=document.querySelector(".rudems-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ rudemsTop.classList.add("show"); }else{ rudemsTop.classList.remove("show"); } }); rudemsTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

••

Cast:

Genres:

⏷ Episode List
const focusmsSeries={ title:"FOCUS Music Shows", year:"2025", rating:"13+", description:"A collection of Hearts2Hearts' music show performances for FOCUS.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Music Show" }; const focusmsEpisodes=[ { title:"Hearts2Hearts - FOCUS [Open Concert : EP.1551] | KBS KOREA 251130", duration:"3m", id:"vMOVWO71SKU" }, { title:"FOCUS - Hearts2Hearts(하츠투하츠) | SBS 251116 방송", duration:"3m", id:"TC7Mw9ik4yg" }, { title:"Hearts2Hearts - FOCUS | Show! MusicCore | aired on MBC251115 #hearts2hearts", duration:"3m", id:"fPK2iplg7bs" }, { title:"Hearts2Hearts ハーツトゥハーツ 하츠투하츠 - FOCUS [Music Bank] | KBS WORLD TV 251114", duration:"3m", id:"p95GTNSkiOk" }, { title:"FOCUS - Hearts2Hearts(하츠투하츠) | SBS 251109 방송", duration:"3m", id:"gv4P3n7SvFk" }, { title:"Hearts2Hearts ハーツトゥハーツ 하츠투하츠 - FOCUS [Music Bank] | KBS WORLD TV 251107", duration:"3m", id:"EmhG9sSzXQQ" }, { title:"FOCUS - Hearts2Hearts(하츠투하츠) | SBS 251102 방송", duration:"3m", id:"mA8xrIegKNU" }, { title:"Hearts2Hearts (하츠투하츠) - FOCUS | Show! MusicCore | MBC251101방송", duration:"3m", id:"gaTYDsUhhrQ" }, { title:"Hearts2Hearts ハーツトゥハーツ 하츠투하츠 - FOCUS [Music Bank] | KBS WORLD TV 251031", duration:"3m", id:"BfcBaFPonHs" }, { title:"[COMEBACK] Hearts2Hearts(하츠투하츠) - FOCUS l Show Champion l EP.575 l 251029", duration:"3m", id:"ea5OsYhdLIs" }, { title:"Hearts2Hearts, FOCUS [THE SHOW 251028]", duration:"3m", id:"82WKTlJMJiY" }, { title:"FOCUS - Hearts2Hearts(하츠투하츠) | SBS 251026 방송", duration:"3m", id:"pKJ9JacTKR0" }, { title:"Hearts2Hearts (하츠투하츠) - FOCUS | Show! MusicCore | MBC251025방송", duration:"3m", id:"rfL21nFvEsc" }, { title:"FOCUS - Hearts2Hearts (하츠투하츠) [뮤직뱅크/Music Bank] | KBS 251024 방송", duration:"3m", id:"E0CZt2d6OKE" }, { title:"'최초 공개' Hearts2Hearts - FOCUS #엠카운트다운 EP.910 | Mnet 251023 방송", duration:"3m", id:"MLyIfhibzbQ" } ]; const focusmsPlayer=document.querySelector(".focusms-player"); const focusmsList=document.querySelector(".focusms-list"); document.querySelector(".focusms-title").textContent=focusmsSeries.title; document.querySelector(".focusms-year").textContent=focusmsSeries.year; document.querySelector(".focusms-rating").textContent=focusmsSeries.rating; document.querySelector(".focusms-count").textContent=focusmsEpisodes.length+" Episodes"; document.querySelector(".focusms-description").textContent=focusmsSeries.description; document.querySelector(".focusms-cast").textContent=focusmsSeries.cast; document.querySelector(".focusms-genres").textContent=focusmsSeries.genres; function focusmsLoadEpisode(index){ const episode=focusmsEpisodes[index]; focusmsPlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".focusms-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } focusmsEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="focusms-card"; const number=document.createElement("div"); number.className="focusms-number"; number.textContent=focusmsEpisodes.length-index; const thumb=document.createElement("img"); thumb.className="focusms-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="focusms-card-text"; const title=document.createElement("div"); title.className="focusms-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="focusms-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ focusmsLoadEpisode(index); document.querySelector(".focusms-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); focusmsList.appendChild(card); }); focusmsLoadEpisode(0); const focusmsTop=document.querySelector(".focusms-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ focusmsTop.classList.add("show"); }else{ focusmsTop.classList.remove("show"); } }); focusmsTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

••

Cast:

Genres:

⏷ Episode List
const prettypleasemsSeries={ title:"Pretty Please Music Shows", year:"2025", rating:"13+", description:"A collection of Hearts2Hearts' music show performances for Pretty Please.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Music Show" }; const prettypleasemsEpisodes=[ { title:"Hearts2Hearts (하츠투하츠) - Pretty Please | Show! MusicCore | MBC251004방송", duration:"3m", id:"cTQKnX66hEE" }, { title:"'COMEBACK' Hearts2Hearts - Pretty Please #엠카운트다운 EP.908 | Mnet 251002 방송", duration:"4m", id:"wnar5gbxnLo" }, { title:"Pretty Please - Hearts2Hearts(하츠투하츠) | SBS 250928 방송", duration:"3m", id:"PfXpoC57crU" }, { title:"Hearts2Hearts - Pretty Please | Show! MusicCore | aired on MBC250927 #Heart2Hearts", duration:"4m", id:"p7aXjWDOUGU" }, { title:"[PREMIERE🚨] Hearts2Hearts ハーツトゥハーツ 하츠투하츠 - Pretty Please [Music Bank] | KBS WORLD TV 250926", duration:"3m", id:"4ebTO5xXz2E" } ]; const prettypleasemsPlayer=document.querySelector(".prettypleasems-player"); const prettypleasemsList=document.querySelector(".prettypleasems-list"); document.querySelector(".prettypleasems-title").textContent=prettypleasemsSeries.title; document.querySelector(".prettypleasems-year").textContent=prettypleasemsSeries.year; document.querySelector(".prettypleasems-rating").textContent=prettypleasemsSeries.rating; document.querySelector(".prettypleasems-count").textContent=prettypleasemsEpisodes.length+" Episodes"; document.querySelector(".prettypleasems-description").textContent=prettypleasemsSeries.description; document.querySelector(".prettypleasems-cast").textContent=prettypleasemsSeries.cast; document.querySelector(".prettypleasems-genres").textContent=prettypleasemsSeries.genres; function prettypleasemsLoadEpisode(index){ const episode=prettypleasemsEpisodes[index]; prettypleasemsPlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".prettypleasems-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } prettypleasemsEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="prettypleasems-card"; const number=document.createElement("div"); number.className="prettypleasems-number"; number.textContent=prettypleasemsEpisodes.length-index; const thumb=document.createElement("img"); thumb.className="prettypleasems-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="prettypleasems-card-text"; const title=document.createElement("div"); title.className="prettypleasems-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="prettypleasems-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ prettypleasemsLoadEpisode(index); document.querySelector(".prettypleasems-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); prettypleasemsList.appendChild(card); }); prettypleasemsLoadEpisode(0); const prettypleasemsTop=document.querySelector(".prettypleasems-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ prettypleasemsTop.classList.add("show"); }else{ prettypleasemsTop.classList.remove("show"); } }); prettypleasemsTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

••

Cast:

Genres:

⏷ Episode List
const stylemsSeries={ title:"STYLE Music Shows", year:"2025", rating:"13+", description:"A collection of Hearts2Hearts' music show performances for STYLE.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Music Show" }; const stylemsEpisodes=[ { title:"Hearts2Hearts (하츠투하츠) - STYLE | SBS 250629 방송", duration:"3m", id:"5qk-HYkV3HA" }, { title:"Hearts2Hearts (하츠투하츠) - STYLE | Show! MusicCore | MBC250628방송", duration:"3m", id:"X4EMROC9IDo" }, { title:"Hearts2Hearts - STYLE #엠카운트다운 EP.894 | Mnet 250626 방송", duration:"3m", id:"1whqfdY5NI8" }, { title:"Hearts2Hearts (하츠투하츠) - STYLE | SBS 250622 방송", duration:"3m", id:"UgZ8m52rWwg" }, { title:"Hearts2Hearts (하츠투하츠) - STYLE | Show! MusicCore | MBC250621방송", duration:"4m", id:"hwQlURpblRI" }, { title:"STYLE - Hearts2Hearts (하츠투하츠) [뮤직뱅크/Music Bank] | KBS 250620 방송", duration:"3m", id:"A-rHQNVrim4" }, { title:"'최초 공개' Hearts2Hearts - STYLE #엠카운트다운 EP.893 | Mnet 250619 방송", duration:"4m", id:"FGBwQeD2FpY" } ]; const stylemsPlayer=document.querySelector(".stylems-player"); const stylemsList=document.querySelector(".stylems-list"); document.querySelector(".stylems-title").textContent=stylemsSeries.title; document.querySelector(".stylems-year").textContent=stylemsSeries.year; document.querySelector(".stylems-rating").textContent=stylemsSeries.rating; document.querySelector(".stylems-count").textContent=stylemsEpisodes.length+" Episodes"; document.querySelector(".stylems-description").textContent=stylemsSeries.description; document.querySelector(".stylems-cast").textContent=stylemsSeries.cast; document.querySelector(".stylems-genres").textContent=stylemsSeries.genres; function stylemsLoadEpisode(index){ const episode=stylemsEpisodes[index]; stylemsPlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".stylems-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } stylemsEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="stylems-card"; const number=document.createElement("div"); number.className="stylems-number"; number.textContent=stylemsEpisodes.length-index; const thumb=document.createElement("img"); thumb.className="stylems-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="stylems-card-text"; const title=document.createElement("div"); title.className="stylems-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="stylems-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ stylemsLoadEpisode(index); document.querySelector(".stylems-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); stylemsList.appendChild(card); }); stylemsLoadEpisode(0); const stylemsTop=document.querySelector(".stylems-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ stylemsTop.classList.add("show"); }else{ stylemsTop.classList.remove("show"); } }); stylemsTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

••

Cast:

Genres:

⏷ Episode List
const thechasemsSeries={ title:"The Chase Music Shows", year:"2025", rating:"13+", description:"A collection of Hearts2Hearts' music show performances for The Chase.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Music Show" }; const thechasemsEpisodes=[ { title:"Hearts2Hearts (하츠투하츠) – The Chase @인기가요 inkigayo 20250316", duration:"3m", id:"60NJwDqFN1k" }, { title:"Hearts2Hearts - The Chase | Show! MusicCore | aired on MBC 250315 #Hearts2Hearts #ShowMusicCore", duration:"3m", id:"CR9jAGWkmZQ" }, { title:"The Chase - Hearts2Hearts ハーツトゥーハーツ 하츠투하츠 [Music Bank] | KBS WORLD TV 250314", duration:"3m", id:"Ug3o60pdlq0" }, { title:"Hearts2Hearts - The Chase #엠카운트다운 EP.879 | Mnet 250313 방송", duration:"3m", id:"oA4M2cF_vfY" }, { title:"하츠투하츠(Hearts2Hearts) - The Chase l Show Champion l EP.546 l 250312", duration:"3m", id:"3fWBeaeNvN0" }, { title:"Hearts2Hearts, The Chase (하츠투하츠, The Chase) [THE SHOW 250311]", duration:"3m", id:"7-gVWmzjNDI" }, { title:"Hearts2Hearts (하츠투하츠) – The Chase @인기가요 inkigayo 20250309", duration:"3m", id:"d-dt9ouxT38" }, { title:"Hearts2Hearts (하츠투하츠) - The Chase | Show! MusicCore | MBC250308방송", duration:"3m", id:"00-Te7xhsok" }, { title:"The Chase - Hearts2Hearts ハーツトゥーハーツ 하츠투하츠 [Music Bank] | KBS WORLD TV 250307", duration:"3m", id:"kzCtw4OD97g" }, { title:"Hearts2Hearts - The Chase #엠카운트다운 EP.878 | Mnet 250306 방송", duration:"3m", id:"AL_L7oXHfLI" }, { title:"[HOT DEBUT] 하츠투하츠(Hearts2Hearts) - The Chase l Show Champion l EP.545 l 250305", duration:"3m", id:"qB4MYtaL4Gs" }, { title:"Hearts2Hearts, The Chase (하츠투하츠, The Chase) [THE SHOW 250304]", duration:"4m", id:"hsn0T-SesuA" }, { title:"Hearts2Hearts (하츠투하츠) – The Chase @인기가요 inkigayo 20250302", duration:"4m", id:"HqiaTnoApwk" }, { title:"Hearts2Hearts (하츠투하츠) - The Chase | Show! MusicCore | MBC250301방송", duration:"4m", id:"HyvJ9Pfl7_o" }, { title:"[HOT DEBUT] The Chase - Hearts2Hearts ハーツトゥーハーツ 하츠투하츠 [Music Bank] | KBS WORLD TV 250228", duration:"3m", id:"-NYn3BkplZc" }, { title:"'최초 공개' Hearts2Hearts - The Chase #엠카운트다운 EP.877 | Mnet 250227 방송", duration:"4m", id:"WK8c3dC1x78" } ]; const thechasemsPlayer=document.querySelector(".thechasems-player"); const thechasemsList=document.querySelector(".thechasems-list"); document.querySelector(".thechasems-title").textContent=thechasemsSeries.title; document.querySelector(".thechasems-year").textContent=thechasemsSeries.year; document.querySelector(".thechasems-rating").textContent=thechasemsSeries.rating; document.querySelector(".thechasems-count").textContent=thechasemsEpisodes.length+" Episodes"; document.querySelector(".thechasems-description").textContent=thechasemsSeries.description; document.querySelector(".thechasems-cast").textContent=thechasemsSeries.cast; document.querySelector(".thechasems-genres").textContent=thechasemsSeries.genres; function thechasemsLoadEpisode(index){ const episode=thechasemsEpisodes[index]; thechasemsPlayer.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".thechasems-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } thechasemsEpisodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="thechasems-card"; const number=document.createElement("div"); number.className="thechasems-number"; number.textContent=thechasemsEpisodes.length-index; const thumb=document.createElement("img"); thumb.className="thechasems-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="thechasems-card-text"; const title=document.createElement("div"); title.className="thechasems-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="thechasems-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ thechasemsLoadEpisode(index); document.querySelector(".thechasems-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); thechasemsList.appendChild(card); }); thechasemsLoadEpisode(0); const thechasemsTop=document.querySelector(".thechasems-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ thechasemsTop.classList.add("show"); }else{ thechasemsTop.classList.remove("show"); } }); thechasemsTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

•••

Cast:

Genres:

⏷ Episode List
const isac2025Series={ title:"Idol Star Athletics Championship", year:"2025", rating:"13+", language:"ENG SUB", description:"A collection of Hearts2Hearts' appearances at the 2025 Idol Star Athletics Championship, featuring relay races, shooting competitions, ssireum matches, and event highlights.", cast:"Carmen, Jiwoo, Yuha, Stella, Juun, A-na, Ian, Ye-on", genres:"Sports • Variety" }; const isac2025Episodes=[ { title:"[K-POP] Hearts2Hearts at ISAC! ✨1 Hour✨ Idol Sports Highlights🏃 #Hearts2Hearts #KpopIdol", duration:"48m", id:"3adsWMJx54M" }, { title:"ISAC 2025🏃‍♀️ SAY MY NAME VS Hearts2Hearts | Women's Ssireum Heats", duration:"13m", id:"J45Lk0Ndf3M" }, { title:"ISAC 2025🏃‍♀️ Hearts2Hearts VS MEOVV | Women's Shooting Final #Hearts2Hearts", duration:"11m", id:"3GWNIOCYBfI" }, { title:"ISAC 2025🏃‍♀️ Hearts2Hearts VS ILLIT | Women's Shooting Semifinals #Hearts2Hearts", duration:"19m", id:"s3obH8EePGQ" }, { title:"ISAC 2025🏃‍♀️ A Last Chance to Reach the Final | Mixed Team Shooting Semifinal", duration:"25m", id:"ZIgAvsdz3S4" }, { title:"ISAC 2025🏃‍♀️ Who is the CHAMPION? | Women's 400m Relay Final", duration:"4m", id:"9JofSqsefGw" }, { title:"ISAC 2025🏃‍♀️ Hearts2Hearts VS Kep1er | Women's 400m Relay Heats", duration:"8m", id:"VIggkwck9vY" } ]; const isac2025Player=document.querySelector(".isac2025-player"); const isac2025List=document.querySelector(".isac2025-list"); document.querySelector(".isac2025-title").textContent=isac2025Series.title; document.querySelector(".isac2025-year").textContent=isac2025Series.year; document.querySelector(".isac2025-rating").textContent=isac2025Series.rating; document.querySelector(".isac2025-count").textContent=isac2025Episodes.length+" Episodes"; document.querySelector(".isac2025-language").textContent=isac2025Series.language; document.querySelector(".isac2025-description").textContent=isac2025Series.description; document.querySelector(".isac2025-cast").textContent=isac2025Series.cast; document.querySelector(".isac2025-genres").textContent=isac2025Series.genres; function isac2025LoadEpisode(index){ const episode=isac2025Episodes[index]; isac2025Player.src= "https://www.youtube-nocookie.com/embed/"+episode.id; document.querySelectorAll(".isac2025-card").forEach(function(card,i){ if(i===index){ card.classList.add("active"); }else{ card.classList.remove("active"); } }); } isac2025Episodes.forEach(function(episode,index){ const card=document.createElement("div"); card.className="isac2025-card"; const number=document.createElement("div"); number.className="isac2025-number"; number.textContent=isac2025Episodes.length-index; const thumb=document.createElement("img"); thumb.className="isac2025-thumb"; thumb.src="https://i.ytimg.com/vi/"+episode.id+"/hqdefault.jpg"; const text=document.createElement("div"); text.className="isac2025-card-text"; const title=document.createElement("div"); title.className="isac2025-card-title"; title.textContent=episode.title; const duration=document.createElement("div"); duration.className="isac2025-duration"; duration.textContent=episode.duration; text.appendChild(title); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click",function(){ isac2025LoadEpisode(index); document.querySelector(".isac2025-player-wrap").scrollIntoView({ behavior:"smooth", block:"start" }); }); isac2025List.appendChild(card); }); isac2025LoadEpisode(0); const isac2025Top=document.querySelector(".isac2025-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ isac2025Top.classList.add("show"); }else{ isac2025Top.classList.remove("show"); } }); isac2025Top.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); });

Men on a Mission EP. 520

2026•ENG SUB
(function(){ const knowingbrosTop=document.querySelector(".knowingbros-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ knowingbrosTop.classList.add("show"); }else{ knowingbrosTop.classList.remove("show"); } }); knowingbrosTop.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); }); })();

Amazing Saturday EP. 388

2025•ENG SUB
(function(){ const noltoep388Top=document.querySelector(".noltoep388-top"); window.addEventListener("scroll",function(){ if(window.scrollY>300){ noltoep388Top.classList.add("show"); }else{ noltoep388Top.classList.remove("show"); } }); noltoep388Top.addEventListener("click",function(){ window.scrollTo({ top:0, behavior:"smooth" }); }); })();

⏷ Music Videos
(function () { /* The array stays OLDEST to NEWEST. The playlist displays it in reverse order. Each MV keeps its original number. */ const musicVideos = [ { id: "thechase", title: "Hearts2Hearts 하츠투하츠 'The Chase' MV", youtube: "kxUA2wwYiME", year: "2025", rating: "13+", subtitles: "ENG SUB", duration: "2m" }, { id: "butterflies", title: "Hearts2Hearts 하츠투하츠 'Butterflies' MV", youtube: "hJ9Wp3PO3c8", year: "2026", rating: "13+", subtitles: "ENG SUB", duration: "3m" }, { id: "style", title: "Hearts2Hearts 하츠투하츠 'STYLE' MV", youtube: "n7kFRxFIPrI", year: "2026", rating: "13+", subtitles: "ENG SUB", duration: "3m" }, { id: "prettyplease", title: "Hearts2Hearts 하츠투하츠 'Pretty Please' MV", youtube: "ufwB9Uja_wM", year: "2026", rating: "13+", subtitles: "ENG SUB", duration: "3m" }, { id: "focus", title: "Hearts2Hearts 하츠투하츠 'FOCUS' MV", youtube: "Ur7aK4FvK-U", year: "2026", rating: "13+", subtitles: "ENG SUB", duration: "3m" }, { id: "rude", title: "Hearts2Hearts 하츠투하츠 'RUDE!' MV", youtube: "F7sGJVUrkjQ", year: "2026", rating: "13+", subtitles: "ENG SUB", duration: "3m" }, { id: "lemontang", title: "Hearts2Hearts 하츠투하츠 'Lemon Tang' MV", youtube: "1VqxWNwgf5Q", year: "2026", rating: "13+", subtitles: "ENG SUB", duration: "3m" }, { id: "iconicheart", title: "Hearts2Hearts 하츠투하츠 'ICONIC HEART' MV", youtube: "chl0R8C4NJ8", year: "2026", rating: "13+", subtitles: "ENG SUB", duration: "3m" }, { id: "moonride", title: "Hearts2Hearts 하츠투하츠 'Moonride' MV", youtube: "gNUMxMuxH20", year: "2026", rating: "13+", subtitles: "ENG SUB", duration: "3m" }, { id: "nextchapter", title: "Hearts2Hearts 하츠투하츠 'Next Chapter' MV", youtube: "lu9GinsuyUQ", year: "2026", rating: "13+", subtitles: "ENG SUB", duration: "2m" }, { id: "iconicheartkr", title: "Hearts2Hearts 하츠투하츠 'ICONIC HEART (Korean Ver.)' MV", youtube: "DK_dr_n2rM4", year: "2026", rating: "13+", subtitles: "ENG SUB", duration: "3m" } ]; const root = document.getElementById("music-videos-player"); if (!root || root.dataset.initialized === "true") return; root.dataset.initialized = "true"; const player = root.querySelector("#music-videos-video"); const title = root.querySelector("#music-videos-title"); const meta = root.querySelector("#music-videos-meta"); const list = root.querySelector("#music-videos-list"); const playerWrap = root.querySelector(".music-videos-player-wrap"); const musicVideosTop = document.querySelector(".music-videos-top"); function renderMeta(video) { meta.replaceChildren(); [ video.year, video.rating, video.subtitles, video.duration ].forEach(function (value, index) { if (index > 0) { const separator = document.createElement("span"); separator.textContent = "•"; meta.appendChild(separator); } const item = document.createElement("span"); item.textContent = value; meta.appendChild(item); }); } function loadVideo(video, shouldScroll) { if (!video) return; player.src = "https://www.youtube-nocookie.com/embed/" + video.youtube; player.title = video.title; title.textContent = video.title; renderMeta(video); list.querySelectorAll(".music-videos-card").forEach( function (card) { const active = card.dataset.videoId === video.id; card.classList.toggle("active", active); if (active) { card.setAttribute("aria-current", "true"); } else { card.removeAttribute("aria-current"); } } ); if (shouldScroll) { playerWrap.scrollIntoView({ behavior: "smooth", block: "start" }); } } /* Reverse only the DISPLAY order. Original numbering remains unchanged: The Chase = 1, ICONIC HEART Korean Ver. = 11. */ musicVideos.slice().reverse().forEach(function (video) { const originalNumber = musicVideos.findIndex( function (item) { return item.id === video.id; } ) + 1; const card = document.createElement("div"); card.className = "music-videos-card"; card.dataset.videoId = video.id; card.tabIndex = 0; card.setAttribute("role", "button"); card.setAttribute( "aria-label", "Play " + video.title ); const number = document.createElement("div"); number.className = "music-videos-number"; number.textContent = originalNumber; const thumb = document.createElement("img"); thumb.className = "music-videos-thumb"; thumb.src = "https://i.ytimg.com/vi/" + video.youtube + "/hqdefault.jpg"; thumb.alt = ""; thumb.loading = "lazy"; const text = document.createElement("div"); text.className = "music-videos-card-text"; const cardTitle = document.createElement("div"); cardTitle.className = "music-videos-card-title"; cardTitle.textContent = video.title; const duration = document.createElement("div"); duration.className = "music-videos-duration"; duration.textContent = video.duration; text.appendChild(cardTitle); text.appendChild(duration); card.appendChild(number); card.appendChild(thumb); card.appendChild(text); card.addEventListener("click", function () { loadVideo(video, true); }); card.addEventListener("keydown", function (event) { if (event.key === "Enter" || event.key === " ") { event.preventDefault(); loadVideo(video, true); } }); list.appendChild(card); }); /* Start with the newest MV. Its original number remains 11. */ loadVideo(musicVideos[musicVideos.length - 1], false); /* Show the floating Back to Top button after the page is scrolled down 300px. */ window.addEventListener("scroll", function () { if (window.scrollY > 300) { musicVideosTop.classList.add("show"); } else { musicVideosTop.classList.remove("show"); } }); musicVideosTop.addEventListener("click", function () { window.scrollTo({ top: 0, behavior: "smooth" }); }); })();

Hearts2Hearts

INFORMATION

Debut24 February 2025
CompanySM Entertainment
Members Jiwoo, Carmen, Yuha, Stella,
Juun, A-na, Ian, Ye-on
FandomS2U
Official ColorSky Blue
Official MascotFalabella
Years Active2025–present

ABOUT

Hearts2Hearts (하츠투하츠), also shortened as H2H, is an eight-member South Korean girl group under SM Entertainment. The group consists of Jiwoo, Carmen, Yuha, Stella, Juun, A-na, Ian, and Ye-on. They debuted on February 24, 2025 with their first single album The Chase.

GROUP NAME

The name Hearts2Hearts signifies their mission to connect with global fans through a mysterious and beautiful musical world, filled with heartfelt emotions and messages. Their aim is to move forward together as a greater "us."

FANDOM

Hearts2Hearts' official fandom name is S2U (하츄, pronounced "Ha-Chu"). The name combines "S2," which resembles a heart symbol appearing in the group's name, with "U" meaning "you." It symbolizes that fans will always be at the center of Hearts2Hearts and that they will always stay by each other's side.


OFFICIAL SNS

YouTubeInstagramX KoreaX JapanTikTokWeverseFacebookPinterestWeiboBilibili

Jiwoo Profile
const profiles = { jiwoo: "https://i.imgur.com/gKuLBvF.png", carmen: "https://i.imgur.com/5EwUx9P.png", yuha: "https://i.imgur.com/yhxS5DO.png", stella: "https://i.imgur.com/lHJe8CV.png", juun: "https://i.imgur.com/cLtrK42.png", ana: "https://i.imgur.com/DF8jP73.png", ian: "https://i.imgur.com/kPz4BPl.png", yeon: "https://i.imgur.com/OBnQfvz.png" }; /* ========================== PRELOAD IMAGES ========================== */ Object.values(profiles).forEach(src=>{ const img = new Image(); img.src = src; }); /* ========================== ELEMENTS ========================== */ const profile = document.getElementById("member-profile"); const members = document.querySelectorAll(".member"); /* ========================== SWITCH PROFILE ========================== */ members.forEach(member=>{ member.addEventListener("click",()=>{ members.forEach(item=>{ item.classList.remove("active"); }); member.classList.add("active"); const id = member.dataset.member; if(!profiles[id]) return; profile.classList.add("fade"); setTimeout(()=>{ profile.src = profiles[id]; },180); }); }); /* ========================== REMOVE FADE ========================== */ profile.onload = ()=>{ profile.classList.remove("fade"); };


Mini Albums

Lemon Tang
Tracklist
1  Lemon Tang2:43
2  15-LOVE2:35
3  Baby Steps2:51
4  heart emoji (♡)2:59
5  Secret Recipe2:51
6  RUDE!3:20
Listen
Lemon Tang
2nd Mini Album
FOCUS
Tracklist
1  FOCUS2:58
2  Apple Pie3:07
3  Pretty Please3:25
4  Flutter3:06
5  Blue Moon2:58
Listen
FOCUS
1st Mini Album

Singles

Next Chapter
Tracklist
1  Next Chapter2:49
2  Next Chapter - Instrumental2:49
Listen
Next Chapter
Single
Candy Box Lover
Tracklist
1  Candy Box Lover2:58
Listen
Candy Box Lover
Single
Iconic Heart Korean Version
Tracklist
1  ICONIC HEART - Korean Version3:09
Listen
Iconic Heart (Korean Ver.)
Single
Moonride
Tracklist
1  Moonride2:56
Listen
Moonride
Single
Iconic Heart
Tracklist
1  Iconic Heart3:09
2  Lemon Tang - Japanese Ver.2:43
3  RUDE! - Japanese Ver.3:20
Listen
Iconic Heart
Single
STYLE
Tracklist
1  STYLE3:30
Listen
STYLE
Single
The Chase
Tracklist
1  The Chase2:59
2  Butterflies2:58
Listen
The Chase
Single


About Heartsflix

1What is Heartsflix?

Heartsflix was created to provide S2Us, especially newer fans, with a place to easily browse Hearts2Hearts media content all in one place. The site is designed to help people discover and keep up with videos, appearances, performances, and other content without having to search through multiple platforms. Getting into a new group can sometimes feel overwhelming, so the goal is to provide an organized and easy-to-navigate space for everyone.

2Does Heartsflix include everything?

While every effort is made to include as much content as possible, Heartsflix is not intended to be a complete archive of every Hearts2Hearts media appearance. Some content may be unavailable, inaccessible, or simply not added yet. The site will continue to be updated over time to make it as comprehensive as possible.

3Where does the content come from?

Videos featured on the site are primarily sourced from Hearts2Hearts' official accounts or authorized official channels, including the companies and platforms responsible for the original content uploads. Fan-uploaded videos are generally not included. However, if certain content is not uploaded through an official channel or is otherwise unavailable, it may be added in the future when appropriate. English-subtitled Weverse reuploads and certain unavailable content, such as Chat Hearts2Hearts and variety guest appearances, may also be included. All views are directed to their respective original sources whenever available.

Most of the content presented here was compiled with the help and guidance of the Hearts2Hearts video masterlist, created by the subreddit r/hearts2hearts.

4Who runs Heartsflix?

Heartsflix was created by @zuunfilm with the help of @bluuism. The site is currently maintained and updated by @zuunfilm, so occasional mistakes, missing content, or delays in updates may occur.

5Have questions or suggestions?

For comments, corrections, or content recommendations, feel free to send a message through Revospring and X.

6Want more Hearts2Hearts resources and sites?

Heartquarters was created to give S2Us a simple place to find everything related to Hearts2Hearts without needing to jump between apps. The site was made by @milkzun.

Want to access previous Hearts2Hearts interactive comeback sites? Check out this site, archived by a user on Reddit.