commit da04dbe15c264579afb40ad4d18027d8fb4502cf Author: hehih Date: Sat May 30 18:56:21 2026 +0900 Baseline before video model consolidation diff --git a/.claude/scheduled_tasks.lock b/.claude/scheduled_tasks.lock new file mode 100644 index 0000000..87fbd53 --- /dev/null +++ b/.claude/scheduled_tasks.lock @@ -0,0 +1 @@ +{"sessionId":"e9f3e0a1-1f0f-4bb8-ac46-7ffa8167e897","pid":110816,"procStart":"639156613729251550","acquiredAt":1780035816876} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9c0e89b --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +# Build +/build/ +/.gradle/ +bin/ +out/ + +# IDE +.idea/ +*.iml +.vscode/ + +# Secrets (DO NOT COMMIT) +src/main/resources/credentials.json +tokens/ +*.log + +# OS +.DS_Store +Thumbs.db diff --git a/.playwright-mcp/page-2026-05-29T08-50-44-058Z.yml b/.playwright-mcp/page-2026-05-29T08-50-44-058Z.yml new file mode 100644 index 0000000..af8349d --- /dev/null +++ b/.playwright-mcp/page-2026-05-29T08-50-44-058Z.yml @@ -0,0 +1,6098 @@ +- generic [ref=e2]: + - complementary [ref=e3]: + - generic [ref=e4]: + - generic [ref=e7]: H + - button [ref=e8] [cursor=pointer]: + - img [ref=e9] + - navigation [ref=e11]: + - list [ref=e12]: + - listitem [ref=e13]: + - link [ref=e14] [cursor=pointer]: + - /url: / + - img [ref=e15] + - listitem [ref=e20]: + - link [ref=e21] [cursor=pointer]: + - /url: /channels + - img [ref=e22] + - listitem [ref=e27]: + - link [ref=e28] [cursor=pointer]: + - /url: /videos + - img [ref=e29] + - listitem [ref=e32]: + - link [ref=e33] [cursor=pointer]: + - /url: /collection + - img [ref=e34] + - listitem [ref=e36]: + - link [ref=e37] [cursor=pointer]: + - /url: /production + - img [ref=e38] + - listitem [ref=e43]: + - link [ref=e44] [cursor=pointer]: + - /url: "#" + - img [ref=e45] + - button [ref=e51]: + - img [ref=e52] + - main [ref=e55]: + - generic [ref=e56]: + - generic [ref=e57]: + - heading "수집함 (Collection)" [level=1] [ref=e58] + - paragraph [ref=e59]: 수집한 영상을 분류·발굴하고 재가공 대상을 관리합니다. + - generic [ref=e60]: + - generic [ref=e61]: + - heading "카테고리" [level=3] [ref=e62] + - button [ref=e63] [cursor=pointer]: + - img [ref=e64] + - generic [ref=e66]: 카테고리가 없습니다. + 로 추가하세요. + - generic [ref=e68]: + - generic [ref=e69]: + - checkbox "🚀 떡상 후보만" [ref=e70] + - generic [ref=e71]: 🚀 떡상 후보만 + - generic [ref=e72]: + - checkbox "Shorts만" [ref=e73] + - generic [ref=e74]: Shorts만 + - generic [ref=e75]: + - checkbox "⭐ 북마크만" [ref=e76] + - generic [ref=e77]: ⭐ 북마크만 + - generic [ref=e78]: + - generic [ref=e79]: 상태 + - combobox [ref=e80]: + - option "전체" [selected] + - option "NEW (수집됨)" + - option "REVIEWING (검토중)" + - option "TARGET (작업대상)" + - option "EXCLUDED (제외)" + - generic [ref=e81]: + - generic [ref=e82]: 카테고리 + - combobox [ref=e83]: + - option "전체" [selected] + - generic [ref=e84]: + - generic [ref=e85]: 출처 + - combobox [ref=e86]: + - option "전체" [selected] + - option "채널 수집" + - option "검색 수집" + - generic [ref=e87]: + - generic [ref=e88]: 정렬 + - combobox [ref=e89]: + - option "배율(조회/구독) ↓" [selected] + - option "시간당 조회수 ↓" + - option "조회수 ↓" + - option "최신순 ↓" + - button "새로고침" [ref=e90] [cursor=pointer]: + - img [ref=e91] + - text: 새로고침 + - generic [ref=e96]: 200건 + - table [ref=e98]: + - rowgroup [ref=e99]: + - row "썸네일 제목 채널 구독자 조회수 시간당 배율 상태 카테고리 관리" [ref=e100]: + - columnheader "썸네일" [ref=e101] + - columnheader "제목" [ref=e102] + - columnheader "채널" [ref=e103] + - columnheader "구독자" [ref=e104] + - columnheader "조회수" [ref=e105] + - columnheader "시간당" [ref=e106] + - columnheader "배율" [ref=e107] + - columnheader "상태" [ref=e108] + - columnheader "카테고리" [ref=e109] + - columnheader "관리" [ref=e110] + - rowgroup [ref=e111]: + - row "悪い犬はいない でも悪い飼い主はいるShorts ショーツ見る日 55,700 21,672,651 9,386.16 389.1x NEW -" [ref=e112]: + - cell [ref=e113]: + - img [ref=e115] [cursor=pointer] + - cell "悪い犬はいない でも悪い飼い主はいるShorts" [ref=e116]: + - generic [ref=e117]: + - link "悪い犬はいない でも悪い飼い主はいる" [ref=e118] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=OpmSTCxPzGM + - text: Shorts + - cell "ショーツ見る日" [ref=e119]: + - link "ショーツ見る日" [ref=e120] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e121] + - cell "21,672,651" [ref=e122] + - cell "9,386.16" [ref=e123] + - cell "389.1x" [ref=e124] + - cell "NEW" [ref=e125]: + - combobox [ref=e126]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e127]: + - combobox [ref=e128]: + - option "-" [selected] + - cell [ref=e129]: + - generic [ref=e130]: + - button "북마크" [ref=e131] [cursor=pointer]: + - img [ref=e132] + - button "삭제" [ref=e134] [cursor=pointer]: + - img [ref=e135] + - row "人生で一度は直感に従わなきゃいけない瞬間があるShorts ショーツ見る日 55,700 15,937,353 13,703.66 286.1x NEW -" [ref=e138]: + - cell [ref=e139]: + - img [ref=e141] [cursor=pointer] + - cell "人生で一度は直感に従わなきゃいけない瞬間があるShorts" [ref=e142]: + - generic [ref=e143]: + - link "人生で一度は直感に従わなきゃいけない瞬間がある" [ref=e144] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rtAgbgSgHgc + - text: Shorts + - cell "ショーツ見る日" [ref=e145]: + - link "ショーツ見る日" [ref=e146] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e147] + - cell "15,937,353" [ref=e148] + - cell "13,703.66" [ref=e149] + - cell "286.1x" [ref=e150] + - cell "NEW" [ref=e151]: + - combobox [ref=e152]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e153]: + - combobox [ref=e154]: + - option "-" [selected] + - cell [ref=e155]: + - generic [ref=e156]: + - button "북마크" [ref=e157] [cursor=pointer]: + - img [ref=e158] + - button "삭제" [ref=e160] [cursor=pointer]: + - img [ref=e161] + - row "姫は俺たちが守るShorts ショーツ見る日 55,700 15,279,427 6,895.05 274.3x NEW -" [ref=e164]: + - cell [ref=e165]: + - img [ref=e167] [cursor=pointer] + - cell "姫は俺たちが守るShorts" [ref=e168]: + - generic [ref=e169]: + - link "姫は俺たちが守る" [ref=e170] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=4HHpI32LnZg + - text: Shorts + - cell "ショーツ見る日" [ref=e171]: + - link "ショーツ見る日" [ref=e172] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e173] + - cell "15,279,427" [ref=e174] + - cell "6,895.05" [ref=e175] + - cell "274.3x" [ref=e176] + - cell "NEW" [ref=e177]: + - combobox [ref=e178]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e179]: + - combobox [ref=e180]: + - option "-" [selected] + - cell [ref=e181]: + - generic [ref=e182]: + - button "북마크" [ref=e183] [cursor=pointer]: + - img [ref=e184] + - button "삭제" [ref=e186] [cursor=pointer]: + - img [ref=e187] + - row "レーシング史上最高にロマンな事件🏎️👍Shorts ショーツ見る日 55,700 14,704,744 5,223.71 264.0x NEW -" [ref=e190]: + - cell [ref=e191]: + - img [ref=e193] [cursor=pointer] + - cell "レーシング史上最高にロマンな事件🏎️👍Shorts" [ref=e194]: + - generic [ref=e195]: + - link "レーシング史上最高にロマンな事件🏎️👍" [ref=e196] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ax37_8CAw_k + - text: Shorts + - cell "ショーツ見る日" [ref=e197]: + - link "ショーツ見る日" [ref=e198] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e199] + - cell "14,704,744" [ref=e200] + - cell "5,223.71" [ref=e201] + - cell "264.0x" [ref=e202] + - cell "NEW" [ref=e203]: + - combobox [ref=e204]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e205]: + - combobox [ref=e206]: + - option "-" [selected] + - cell [ref=e207]: + - generic [ref=e208]: + - button "북마크" [ref=e209] [cursor=pointer]: + - img [ref=e210] + - button "삭제" [ref=e212] [cursor=pointer]: + - img [ref=e213] + - row "パパの育児はいつも優しいわけじゃないけどShorts ショーツ見る日 55,700 14,576,112 9,127.18 261.7x NEW -" [ref=e216]: + - cell [ref=e217]: + - img [ref=e219] [cursor=pointer] + - cell "パパの育児はいつも優しいわけじゃないけどShorts" [ref=e220]: + - generic [ref=e221]: + - link "パパの育児はいつも優しいわけじゃないけど" [ref=e222] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=t0qYgTbQ6Fg + - text: Shorts + - cell "ショーツ見る日" [ref=e223]: + - link "ショーツ見る日" [ref=e224] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e225] + - cell "14,576,112" [ref=e226] + - cell "9,127.18" [ref=e227] + - cell "261.7x" [ref=e228] + - cell "NEW" [ref=e229]: + - combobox [ref=e230]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e231]: + - combobox [ref=e232]: + - option "-" [selected] + - cell [ref=e233]: + - generic [ref=e234]: + - button "북마크" [ref=e235] [cursor=pointer]: + - img [ref=e236] + - button "삭제" [ref=e238] [cursor=pointer]: + - img [ref=e239] + - row "マナーが身についてる子が大型犬に挨拶したいときShorts ショーツ見る日 55,700 13,526,444 6,817.76 242.8x NEW -" [ref=e242]: + - cell [ref=e243]: + - img [ref=e245] [cursor=pointer] + - cell "マナーが身についてる子が大型犬に挨拶したいときShorts" [ref=e246]: + - generic [ref=e247]: + - link "マナーが身についてる子が大型犬に挨拶したいとき" [ref=e248] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=7AWXR4CheBg + - text: Shorts + - cell "ショーツ見る日" [ref=e249]: + - link "ショーツ見る日" [ref=e250] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e251] + - cell "13,526,444" [ref=e252] + - cell "6,817.76" [ref=e253] + - cell "242.8x" [ref=e254] + - cell "NEW" [ref=e255]: + - combobox [ref=e256]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e257]: + - combobox [ref=e258]: + - option "-" [selected] + - cell [ref=e259]: + - generic [ref=e260]: + - button "북마크" [ref=e261] [cursor=pointer]: + - img [ref=e262] + - button "삭제" [ref=e264] [cursor=pointer]: + - img [ref=e265] + - row "この馬を手懐けた者が主人になるShorts ショーツ見る日 55,700 10,965,225 5,036.85 196.9x NEW -" [ref=e268]: + - cell [ref=e269]: + - img [ref=e271] [cursor=pointer] + - cell "この馬を手懐けた者が主人になるShorts" [ref=e272]: + - generic [ref=e273]: + - link "この馬を手懐けた者が主人になる" [ref=e274] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lhsG-0zhDDo + - text: Shorts + - cell "ショーツ見る日" [ref=e275]: + - link "ショーツ見る日" [ref=e276] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e277] + - cell "10,965,225" [ref=e278] + - cell "5,036.85" [ref=e279] + - cell "196.9x" [ref=e280] + - cell "NEW" [ref=e281]: + - combobox [ref=e282]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e283]: + - combobox [ref=e284]: + - option "-" [selected] + - cell [ref=e285]: + - generic [ref=e286]: + - button "북마크" [ref=e287] [cursor=pointer]: + - img [ref=e288] + - button "삭제" [ref=e290] [cursor=pointer]: + - img [ref=e291] + - row "バーテンダーのありがたすぎる勘違いwwwwShorts ショーツ見る日 55,700 10,642,830 10,893.38 191.1x NEW -" [ref=e294]: + - cell [ref=e295]: + - img [ref=e297] [cursor=pointer] + - cell "バーテンダーのありがたすぎる勘違いwwwwShorts" [ref=e298]: + - generic [ref=e299]: + - link "バーテンダーのありがたすぎる勘違いwwww" [ref=e300] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bAUQnmzzhKs + - text: Shorts + - cell "ショーツ見る日" [ref=e301]: + - link "ショーツ見る日" [ref=e302] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e303] + - cell "10,642,830" [ref=e304] + - cell "10,893.38" [ref=e305] + - cell "191.1x" [ref=e306] + - cell "NEW" [ref=e307]: + - combobox [ref=e308]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e309]: + - combobox [ref=e310]: + - option "-" [selected] + - cell [ref=e311]: + - generic [ref=e312]: + - button "북마크" [ref=e313] [cursor=pointer]: + - img [ref=e314] + - button "삭제" [ref=e316] [cursor=pointer]: + - img [ref=e317] + - row "MVに本物のギャング出演させたマイケル・ジャクソン😲Shorts ショーツ見る日 55,700 10,620,886 3,856.53 190.7x NEW -" [ref=e320]: + - cell [ref=e321]: + - img [ref=e323] [cursor=pointer] + - cell "MVに本物のギャング出演させたマイケル・ジャクソン😲Shorts" [ref=e324]: + - generic [ref=e325]: + - link "MVに本物のギャング出演させたマイケル・ジャクソン😲" [ref=e326] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=T8moBZLX1mQ + - text: Shorts + - cell "ショーツ見る日" [ref=e327]: + - link "ショーツ見る日" [ref=e328] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e329] + - cell "10,620,886" [ref=e330] + - cell "3,856.53" [ref=e331] + - cell "190.7x" [ref=e332] + - cell "NEW" [ref=e333]: + - combobox [ref=e334]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e335]: + - combobox [ref=e336]: + - option "-" [selected] + - cell [ref=e337]: + - generic [ref=e338]: + - button "북마크" [ref=e339] [cursor=pointer]: + - img [ref=e340] + - button "삭제" [ref=e342] [cursor=pointer]: + - img [ref=e343] + - 'row "友達とやったら神すぎたwww #オンラインかくれんぼ #神隠れShorts ショーツ見る日 55,700 10,005,887 10,864.16 179.6x NEW -" [ref=e346]': + - cell [ref=e347]: + - img [ref=e349] [cursor=pointer] + - 'cell "友達とやったら神すぎたwww #オンラインかくれんぼ #神隠れShorts" [ref=e350]': + - generic [ref=e351]: + - 'link "友達とやったら神すぎたwww #オンラインかくれんぼ #神隠れ" [ref=e352] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=GGt_SYvf5TU + - text: Shorts + - cell "ショーツ見る日" [ref=e353]: + - link "ショーツ見る日" [ref=e354] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e355] + - cell "10,005,887" [ref=e356] + - cell "10,864.16" [ref=e357] + - cell "179.6x" [ref=e358] + - cell "NEW" [ref=e359]: + - combobox [ref=e360]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e361]: + - combobox [ref=e362]: + - option "-" [selected] + - cell [ref=e363]: + - generic [ref=e364]: + - button "북마크" [ref=e365] [cursor=pointer]: + - img [ref=e366] + - button "삭제" [ref=e368] [cursor=pointer]: + - img [ref=e369] + - row "マイケルジャクソンが音響トラブルに対応する方法Shorts ショーツ見る日 55,700 9,480,851 3,673.32 170.2x NEW -" [ref=e372]: + - cell [ref=e373]: + - img [ref=e375] [cursor=pointer] + - cell "マイケルジャクソンが音響トラブルに対応する方法Shorts" [ref=e376]: + - generic [ref=e377]: + - link "マイケルジャクソンが音響トラブルに対応する方法" [ref=e378] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=-mmbXygrg3A + - text: Shorts + - cell "ショーツ見る日" [ref=e379]: + - link "ショーツ見る日" [ref=e380] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e381] + - cell "9,480,851" [ref=e382] + - cell "3,673.32" [ref=e383] + - cell "170.2x" [ref=e384] + - cell "NEW" [ref=e385]: + - combobox [ref=e386]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e387]: + - combobox [ref=e388]: + - option "-" [selected] + - cell [ref=e389]: + - generic [ref=e390]: + - button "북마크" [ref=e391] [cursor=pointer]: + - img [ref=e392] + - button "삭제" [ref=e394] [cursor=pointer]: + - img [ref=e395] + - row "偶然のふりして街中で会った時の旦那の反応が面白すぎるwwwwShorts ショーツ見る日 55,700 8,747,591 8,419.24 157.1x NEW -" [ref=e398]: + - cell [ref=e399]: + - img [ref=e401] [cursor=pointer] + - cell "偶然のふりして街中で会った時の旦那の反応が面白すぎるwwwwShorts" [ref=e402]: + - generic [ref=e403]: + - link "偶然のふりして街中で会った時の旦那の反応が面白すぎるwwww" [ref=e404] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=7-2LBkw-YTU + - text: Shorts + - cell "ショーツ見る日" [ref=e405]: + - link "ショーツ見る日" [ref=e406] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e407] + - cell "8,747,591" [ref=e408] + - cell "8,419.24" [ref=e409] + - cell "157.1x" [ref=e410] + - cell "NEW" [ref=e411]: + - combobox [ref=e412]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e413]: + - combobox [ref=e414]: + - option "-" [selected] + - cell [ref=e415]: + - generic [ref=e416]: + - button "북마크" [ref=e417] [cursor=pointer]: + - img [ref=e418] + - button "삭제" [ref=e420] [cursor=pointer]: + - img [ref=e421] + - row "トラックのドラレコに映った緊迫の瞬間、運転手がクラクションを鳴らし続けた理由Shorts ショーツ見る日 55,700 8,057,225 7,067.74 144.7x NEW -" [ref=e424]: + - cell [ref=e425]: + - img [ref=e427] [cursor=pointer] + - cell "トラックのドラレコに映った緊迫の瞬間、運転手がクラクションを鳴らし続けた理由Shorts" [ref=e428]: + - generic [ref=e429]: + - link "トラックのドラレコに映った緊迫の瞬間、運転手がクラクションを鳴らし続けた理由" [ref=e430] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=kcC-DFkFNBo + - text: Shorts + - cell "ショーツ見る日" [ref=e431]: + - link "ショーツ見る日" [ref=e432] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e433] + - cell "8,057,225" [ref=e434] + - cell "7,067.74" [ref=e435] + - cell "144.7x" [ref=e436] + - cell "NEW" [ref=e437]: + - combobox [ref=e438]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e439]: + - combobox [ref=e440]: + - option "-" [selected] + - cell [ref=e441]: + - generic [ref=e442]: + - button "북마크" [ref=e443] [cursor=pointer]: + - img [ref=e444] + - button "삭제" [ref=e446] [cursor=pointer]: + - img [ref=e447] + - row "この家が平和な理由wwwwShorts ショーツ見る日 55,700 7,670,201 9,013.16 137.7x NEW -" [ref=e450]: + - cell [ref=e451]: + - img [ref=e453] [cursor=pointer] + - cell "この家が平和な理由wwwwShorts" [ref=e454]: + - generic [ref=e455]: + - link "この家が平和な理由wwww" [ref=e456] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=If4uPizvYr0 + - text: Shorts + - cell "ショーツ見る日" [ref=e457]: + - link "ショーツ見る日" [ref=e458] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e459] + - cell "7,670,201" [ref=e460] + - cell "9,013.16" [ref=e461] + - cell "137.7x" [ref=e462] + - cell "NEW" [ref=e463]: + - combobox [ref=e464]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e465]: + - combobox [ref=e466]: + - option "-" [selected] + - cell [ref=e467]: + - generic [ref=e468]: + - button "북마크" [ref=e469] [cursor=pointer]: + - img [ref=e470] + - button "삭제" [ref=e472] [cursor=pointer]: + - img [ref=e473] + - row "レトリバーが足を踏まれたらwwShorts ショーツ見る日 55,700 7,299,774 3,988.95 131.1x NEW -" [ref=e476]: + - cell [ref=e477]: + - img [ref=e479] [cursor=pointer] + - cell "レトリバーが足を踏まれたらwwShorts" [ref=e480]: + - generic [ref=e481]: + - link "レトリバーが足を踏まれたらww" [ref=e482] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=unHMQmD15Nk + - text: Shorts + - cell "ショーツ見る日" [ref=e483]: + - link "ショーツ見る日" [ref=e484] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e485] + - cell "7,299,774" [ref=e486] + - cell "3,988.95" [ref=e487] + - cell "131.1x" [ref=e488] + - cell "NEW" [ref=e489]: + - combobox [ref=e490]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e491]: + - combobox [ref=e492]: + - option "-" [selected] + - cell [ref=e493]: + - generic [ref=e494]: + - button "북마크" [ref=e495] [cursor=pointer]: + - img [ref=e496] + - button "삭제" [ref=e498] [cursor=pointer]: + - img [ref=e499] + - row "空から休みに来た一羽の鳥Shorts ショーツ見る日 55,700 6,719,628 2,865.51 120.6x NEW -" [ref=e502]: + - cell [ref=e503]: + - img [ref=e505] [cursor=pointer] + - cell "空から休みに来た一羽の鳥Shorts" [ref=e506]: + - generic [ref=e507]: + - link "空から休みに来た一羽の鳥" [ref=e508] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=q7K_xYJ6X4E + - text: Shorts + - cell "ショーツ見る日" [ref=e509]: + - link "ショーツ見る日" [ref=e510] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e511] + - cell "6,719,628" [ref=e512] + - cell "2,865.51" [ref=e513] + - cell "120.6x" [ref=e514] + - cell "NEW" [ref=e515]: + - combobox [ref=e516]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e517]: + - combobox [ref=e518]: + - option "-" [selected] + - cell [ref=e519]: + - generic [ref=e520]: + - button "북마크" [ref=e521] [cursor=pointer]: + - img [ref=e522] + - button "삭제" [ref=e524] [cursor=pointer]: + - img [ref=e525] + - row "ウェルシュコーギーが調子乗りすぎてボーダーコリーにガチで怒られるShorts ショーツ見る日 55,700 5,661,198 2,792.89 101.6x NEW -" [ref=e528]: + - cell [ref=e529]: + - img [ref=e531] [cursor=pointer] + - cell "ウェルシュコーギーが調子乗りすぎてボーダーコリーにガチで怒られるShorts" [ref=e532]: + - generic [ref=e533]: + - link "ウェルシュコーギーが調子乗りすぎてボーダーコリーにガチで怒られる" [ref=e534] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=iJrj5bULW6Q + - text: Shorts + - cell "ショーツ見る日" [ref=e535]: + - link "ショーツ見る日" [ref=e536] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e537] + - cell "5,661,198" [ref=e538] + - cell "2,792.89" [ref=e539] + - cell "101.6x" [ref=e540] + - cell "NEW" [ref=e541]: + - combobox [ref=e542]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e543]: + - combobox [ref=e544]: + - option "-" [selected] + - cell [ref=e545]: + - generic [ref=e546]: + - button "북마크" [ref=e547] [cursor=pointer]: + - img [ref=e548] + - button "삭제" [ref=e550] [cursor=pointer]: + - img [ref=e551] + - row "頭掻いてるハヤブサを襲おうとしたら逆襲されかけた瞬間Shorts ショーツ見る日 55,700 5,515,156 7,098.01 99.0x NEW -" [ref=e554]: + - cell [ref=e555]: + - img [ref=e557] [cursor=pointer] + - cell "頭掻いてるハヤブサを襲おうとしたら逆襲されかけた瞬間Shorts" [ref=e558]: + - generic [ref=e559]: + - link "頭掻いてるハヤブサを襲おうとしたら逆襲されかけた瞬間" [ref=e560] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Z6ZYO_-oWX0 + - text: Shorts + - cell "ショーツ見る日" [ref=e561]: + - link "ショーツ見る日" [ref=e562] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e563] + - cell "5,515,156" [ref=e564] + - cell "7,098.01" [ref=e565] + - cell "99.0x" [ref=e566] + - cell "NEW" [ref=e567]: + - combobox [ref=e568]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e569]: + - combobox [ref=e570]: + - option "-" [selected] + - cell [ref=e571]: + - generic [ref=e572]: + - button "북마크" [ref=e573] [cursor=pointer]: + - img [ref=e574] + - button "삭제" [ref=e576] [cursor=pointer]: + - img [ref=e577] + - row "空からごはんが落ちてきたらwwShorts ショーツ見る日 55,700 5,437,264 2,786.91 97.6x NEW -" [ref=e580]: + - cell [ref=e581]: + - img [ref=e583] [cursor=pointer] + - cell "空からごはんが落ちてきたらwwShorts" [ref=e584]: + - generic [ref=e585]: + - link "空からごはんが落ちてきたらww" [ref=e586] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bbg_8ZG6NHY + - text: Shorts + - cell "ショーツ見る日" [ref=e587]: + - link "ショーツ見る日" [ref=e588] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e589] + - cell "5,437,264" [ref=e590] + - cell "2,786.91" [ref=e591] + - cell "97.6x" [ref=e592] + - cell "NEW" [ref=e593]: + - combobox [ref=e594]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e595]: + - combobox [ref=e596]: + - option "-" [selected] + - cell [ref=e597]: + - generic [ref=e598]: + - button "북마크" [ref=e599] [cursor=pointer]: + - img [ref=e600] + - button "삭제" [ref=e602] [cursor=pointer]: + - img [ref=e603] + - row "息子に一生忘れられない波をプレゼントしたパパ🌊Shorts ショーツ見る日 55,700 5,349,807 2,612.21 96.0x NEW -" [ref=e606]: + - cell [ref=e607]: + - img [ref=e609] [cursor=pointer] + - cell "息子に一生忘れられない波をプレゼントしたパパ🌊Shorts" [ref=e610]: + - generic [ref=e611]: + - link "息子に一生忘れられない波をプレゼントしたパパ🌊" [ref=e612] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Zn75l9L7kmQ + - text: Shorts + - cell "ショーツ見る日" [ref=e613]: + - link "ショーツ見る日" [ref=e614] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e615] + - cell "5,349,807" [ref=e616] + - cell "2,612.21" [ref=e617] + - cell "96.0x" [ref=e618] + - cell "NEW" [ref=e619]: + - combobox [ref=e620]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e621]: + - combobox [ref=e622]: + - option "-" [selected] + - cell [ref=e623]: + - generic [ref=e624]: + - button "북마크" [ref=e625] [cursor=pointer]: + - img [ref=e626] + - button "삭제" [ref=e628] [cursor=pointer]: + - img [ref=e629] + - row "体にコードが絡まった時のマイケルジャクソンの独特な対処法wwShorts ショーツ見る日 55,700 5,323,226 1,989.25 95.6x NEW -" [ref=e632]: + - cell [ref=e633]: + - img [ref=e635] [cursor=pointer] + - cell "体にコードが絡まった時のマイケルジャクソンの独特な対処法wwShorts" [ref=e636]: + - generic [ref=e637]: + - link "体にコードが絡まった時のマイケルジャクソンの独特な対処法ww" [ref=e638] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=8P1necT9syI + - text: Shorts + - cell "ショーツ見る日" [ref=e639]: + - link "ショーツ見る日" [ref=e640] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e641] + - cell "5,323,226" [ref=e642] + - cell "1,989.25" [ref=e643] + - cell "95.6x" [ref=e644] + - cell "NEW" [ref=e645]: + - combobox [ref=e646]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e647]: + - combobox [ref=e648]: + - option "-" [selected] + - cell [ref=e649]: + - generic [ref=e650]: + - button "북마크" [ref=e651] [cursor=pointer]: + - img [ref=e652] + - button "삭제" [ref=e654] [cursor=pointer]: + - img [ref=e655] + - row "ヤクの横を無事に通り抜けられるのか…?🦬Shorts ショーツ見る日 55,700 5,122,215 2,723.13 92.0x NEW -" [ref=e658]: + - cell [ref=e659]: + - img [ref=e661] [cursor=pointer] + - cell "ヤクの横を無事に通り抜けられるのか…?🦬Shorts" [ref=e662]: + - generic [ref=e663]: + - link "ヤクの横を無事に通り抜けられるのか…?🦬" [ref=e664] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rauCqPFy4no + - text: Shorts + - cell "ショーツ見る日" [ref=e665]: + - link "ショーツ見る日" [ref=e666] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e667] + - cell "5,122,215" [ref=e668] + - cell "2,723.13" [ref=e669] + - cell "92.0x" [ref=e670] + - cell "NEW" [ref=e671]: + - combobox [ref=e672]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e673]: + - combobox [ref=e674]: + - option "-" [selected] + - cell [ref=e675]: + - generic [ref=e676]: + - button "북마크" [ref=e677] [cursor=pointer]: + - img [ref=e678] + - button "삭제" [ref=e680] [cursor=pointer]: + - img [ref=e681] + - row "高速道路でいきなりブレーキが壊れた時の神対応がヤバすぎた😲Shorts ショーツ見る日 55,700 4,769,930 5,457.59 85.6x NEW -" [ref=e684]: + - cell [ref=e685]: + - img [ref=e687] [cursor=pointer] + - cell "高速道路でいきなりブレーキが壊れた時の神対応がヤバすぎた😲Shorts" [ref=e688]: + - generic [ref=e689]: + - link "高速道路でいきなりブレーキが壊れた時の神対応がヤバすぎた😲" [ref=e690] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=tuYXw77Uj8Y + - text: Shorts + - cell "ショーツ見る日" [ref=e691]: + - link "ショーツ見る日" [ref=e692] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e693] + - cell "4,769,930" [ref=e694] + - cell "5,457.59" [ref=e695] + - cell "85.6x" [ref=e696] + - cell "NEW" [ref=e697]: + - combobox [ref=e698]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e699]: + - combobox [ref=e700]: + - option "-" [selected] + - cell [ref=e701]: + - generic [ref=e702]: + - button "북마크" [ref=e703] [cursor=pointer]: + - img [ref=e704] + - button "삭제" [ref=e706] [cursor=pointer]: + - img [ref=e707] + - row "爆音なのに超丁寧なお願い笑Shorts ショーツ見る日 55,700 4,405,395 5,691.72 79.1x NEW -" [ref=e710]: + - cell [ref=e711]: + - img [ref=e713] [cursor=pointer] + - cell "爆音なのに超丁寧なお願い笑Shorts" [ref=e714]: + - generic [ref=e715]: + - link "爆音なのに超丁寧なお願い笑" [ref=e716] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=V1SVT70Y-VQ + - text: Shorts + - cell "ショーツ見る日" [ref=e717]: + - link "ショーツ見る日" [ref=e718] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e719] + - cell "4,405,395" [ref=e720] + - cell "5,691.72" [ref=e721] + - cell "79.1x" [ref=e722] + - cell "NEW" [ref=e723]: + - combobox [ref=e724]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e725]: + - combobox [ref=e726]: + - option "-" [selected] + - cell [ref=e727]: + - generic [ref=e728]: + - button "북마크" [ref=e729] [cursor=pointer]: + - img [ref=e730] + - button "삭제" [ref=e732] [cursor=pointer]: + - img [ref=e733] + - row "ヤバすぎる愛犬コントロール術Shorts ショーツ見る日 55,700 4,239,728 1,979.33 76.1x NEW -" [ref=e736]: + - cell [ref=e737]: + - img [ref=e739] [cursor=pointer] + - cell "ヤバすぎる愛犬コントロール術Shorts" [ref=e740]: + - generic [ref=e741]: + - link "ヤバすぎる愛犬コントロール術" [ref=e742] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=W_Zp3d2FdfY + - text: Shorts + - cell "ショーツ見る日" [ref=e743]: + - link "ショーツ見る日" [ref=e744] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e745] + - cell "4,239,728" [ref=e746] + - cell "1,979.33" [ref=e747] + - cell "76.1x" [ref=e748] + - cell "NEW" [ref=e749]: + - combobox [ref=e750]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e751]: + - combobox [ref=e752]: + - option "-" [selected] + - cell [ref=e753]: + - generic [ref=e754]: + - button "북마크" [ref=e755] [cursor=pointer]: + - img [ref=e756] + - button "삭제" [ref=e758] [cursor=pointer]: + - img [ref=e759] + - row "喧嘩前なのに母ちゃんには優しい猫Shorts ショーツ見る日 55,700 4,150,930 2,289.54 74.5x NEW -" [ref=e762]: + - cell [ref=e763]: + - img [ref=e765] [cursor=pointer] + - cell "喧嘩前なのに母ちゃんには優しい猫Shorts" [ref=e766]: + - generic [ref=e767]: + - link "喧嘩前なのに母ちゃんには優しい猫" [ref=e768] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=gUSBOJNlkwo + - text: Shorts + - cell "ショーツ見る日" [ref=e769]: + - link "ショーツ見る日" [ref=e770] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e771] + - cell "4,150,930" [ref=e772] + - cell "2,289.54" [ref=e773] + - cell "74.5x" [ref=e774] + - cell "NEW" [ref=e775]: + - combobox [ref=e776]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e777]: + - combobox [ref=e778]: + - option "-" [selected] + - cell [ref=e779]: + - generic [ref=e780]: + - button "북마크" [ref=e781] [cursor=pointer]: + - img [ref=e782] + - button "삭제" [ref=e784] [cursor=pointer]: + - img [ref=e785] + - 'row "お菓子を根こそぎゲットしたとんでもない天才たちwww #天才すぎるShorts ショーツ見る日 55,700 4,031,252 6,663.23 72.4x NEW -" [ref=e788]': + - cell [ref=e789]: + - img [ref=e791] [cursor=pointer] + - 'cell "お菓子を根こそぎゲットしたとんでもない天才たちwww #天才すぎるShorts" [ref=e792]': + - generic [ref=e793]: + - 'link "お菓子を根こそぎゲットしたとんでもない天才たちwww #天才すぎる" [ref=e794] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=-Fdim-pLF84 + - text: Shorts + - cell "ショーツ見る日" [ref=e795]: + - link "ショーツ見る日" [ref=e796] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e797] + - cell "4,031,252" [ref=e798] + - cell "6,663.23" [ref=e799] + - cell "72.4x" [ref=e800] + - cell "NEW" [ref=e801]: + - combobox [ref=e802]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e803]: + - combobox [ref=e804]: + - option "-" [selected] + - cell [ref=e805]: + - generic [ref=e806]: + - button "북마크" [ref=e807] [cursor=pointer]: + - img [ref=e808] + - button "삭제" [ref=e810] [cursor=pointer]: + - img [ref=e811] + - row "あの波を知り尽くしたローカルが現れた🌊Shorts ショーツ見る日 55,700 3,909,677 1,488.27 70.2x NEW -" [ref=e814]: + - cell [ref=e815]: + - img [ref=e817] [cursor=pointer] + - cell "あの波を知り尽くしたローカルが現れた🌊Shorts" [ref=e818]: + - generic [ref=e819]: + - link "あの波を知り尽くしたローカルが現れた🌊" [ref=e820] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=TLqws9auUag + - text: Shorts + - cell "ショーツ見る日" [ref=e821]: + - link "ショーツ見る日" [ref=e822] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e823] + - cell "3,909,677" [ref=e824] + - cell "1,488.27" [ref=e825] + - cell "70.2x" [ref=e826] + - cell "NEW" [ref=e827]: + - combobox [ref=e828]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e829]: + - combobox [ref=e830]: + - option "-" [selected] + - cell [ref=e831]: + - generic [ref=e832]: + - button "북마크" [ref=e833] [cursor=pointer]: + - img [ref=e834] + - button "삭제" [ref=e836] [cursor=pointer]: + - img [ref=e837] + - row "キリオスを一言で黙らせた審判がヤバすぎるwwShorts ショーツ見る日 55,700 3,692,427 2,937.49 66.3x NEW -" [ref=e840]: + - cell [ref=e841]: + - img [ref=e843] [cursor=pointer] + - cell "キリオスを一言で黙らせた審判がヤバすぎるwwShorts" [ref=e844]: + - generic [ref=e845]: + - link "キリオスを一言で黙らせた審判がヤバすぎるww" [ref=e846] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=qgFCkdAhGrc + - text: Shorts + - cell "ショーツ見る日" [ref=e847]: + - link "ショーツ見る日" [ref=e848] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e849] + - cell "3,692,427" [ref=e850] + - cell "2,937.49" [ref=e851] + - cell "66.3x" [ref=e852] + - cell "NEW" [ref=e853]: + - combobox [ref=e854]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e855]: + - combobox [ref=e856]: + - option "-" [selected] + - cell [ref=e857]: + - generic [ref=e858]: + - button "북마크" [ref=e859] [cursor=pointer]: + - img [ref=e860] + - button "삭제" [ref=e862] [cursor=pointer]: + - img [ref=e863] + - row "バイクライダーのハンドサインの正体Shorts ショーツ見る日 55,700 3,634,807 2,066.41 65.3x NEW -" [ref=e866]: + - cell [ref=e867]: + - img [ref=e869] [cursor=pointer] + - cell "バイクライダーのハンドサインの正体Shorts" [ref=e870]: + - generic [ref=e871]: + - link "バイクライダーのハンドサインの正体" [ref=e872] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=U2SdKwd3PJY + - text: Shorts + - cell "ショーツ見る日" [ref=e873]: + - link "ショーツ見る日" [ref=e874] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e875] + - cell "3,634,807" [ref=e876] + - cell "2,066.41" [ref=e877] + - cell "65.3x" [ref=e878] + - cell "NEW" [ref=e879]: + - combobox [ref=e880]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e881]: + - combobox [ref=e882]: + - option "-" [selected] + - cell [ref=e883]: + - generic [ref=e884]: + - button "북마크" [ref=e885] [cursor=pointer]: + - img [ref=e886] + - button "삭제" [ref=e888] [cursor=pointer]: + - img [ref=e889] + - row "氷上で溢れる友情😂Shorts ショーツ見る日 55,700 3,309,447 1,283.73 59.4x NEW -" [ref=e892]: + - cell [ref=e893]: + - img [ref=e895] [cursor=pointer] + - cell "氷上で溢れる友情😂Shorts" [ref=e896]: + - generic [ref=e897]: + - link "氷上で溢れる友情😂" [ref=e898] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=073-vpyjO8k + - text: Shorts + - cell "ショーツ見る日" [ref=e899]: + - link "ショーツ見る日" [ref=e900] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e901] + - cell "3,309,447" [ref=e902] + - cell "1,283.73" [ref=e903] + - cell "59.4x" [ref=e904] + - cell "NEW" [ref=e905]: + - combobox [ref=e906]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e907]: + - combobox [ref=e908]: + - option "-" [selected] + - cell [ref=e909]: + - generic [ref=e910]: + - button "북마크" [ref=e911] [cursor=pointer]: + - img [ref=e912] + - button "삭제" [ref=e914] [cursor=pointer]: + - img [ref=e915] + - row "レストランでカードエラー、代わりに払った男のまさかの行動😆Shorts ショーツ見る日 55,700 3,303,794 1,386.98 59.3x NEW -" [ref=e918]: + - cell [ref=e919]: + - img [ref=e921] [cursor=pointer] + - cell "レストランでカードエラー、代わりに払った男のまさかの行動😆Shorts" [ref=e922]: + - generic [ref=e923]: + - link "レストランでカードエラー、代わりに払った男のまさかの行動😆" [ref=e924] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ZKIQpOQlA9c + - text: Shorts + - cell "ショーツ見る日" [ref=e925]: + - link "ショーツ見る日" [ref=e926] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e927] + - cell "3,303,794" [ref=e928] + - cell "1,386.98" [ref=e929] + - cell "59.3x" [ref=e930] + - cell "NEW" [ref=e931]: + - combobox [ref=e932]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e933]: + - combobox [ref=e934]: + - option "-" [selected] + - cell [ref=e935]: + - generic [ref=e936]: + - button "북마크" [ref=e937] [cursor=pointer]: + - img [ref=e938] + - button "삭제" [ref=e940] [cursor=pointer]: + - img [ref=e941] + - row "映画より映画すぎる25年越しの告白Shorts ショーツ見る日 55,700 3,270,912 2,491.17 58.7x NEW -" [ref=e944]: + - cell [ref=e945]: + - img [ref=e947] [cursor=pointer] + - cell "映画より映画すぎる25年越しの告白Shorts" [ref=e948]: + - generic [ref=e949]: + - link "映画より映画すぎる25年越しの告白" [ref=e950] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=IDO1ufD6rZY + - text: Shorts + - cell "ショーツ見る日" [ref=e951]: + - link "ショーツ見る日" [ref=e952] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e953] + - cell "3,270,912" [ref=e954] + - cell "2,491.17" [ref=e955] + - cell "58.7x" [ref=e956] + - cell "NEW" [ref=e957]: + - combobox [ref=e958]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e959]: + - combobox [ref=e960]: + - option "-" [selected] + - cell [ref=e961]: + - generic [ref=e962]: + - button "북마크" [ref=e963] [cursor=pointer]: + - img [ref=e964] + - button "삭제" [ref=e966] [cursor=pointer]: + - img [ref=e967] + - 'row "ホテルプールに現れた常連客の正体草 #感動 #動物 #アヒルShorts ショーツ見る日 55,700 3,251,878 5,775.98 58.4x NEW -" [ref=e970]': + - cell [ref=e971]: + - img [ref=e973] [cursor=pointer] + - 'cell "ホテルプールに現れた常連客の正体草 #感動 #動物 #アヒルShorts" [ref=e974]': + - generic [ref=e975]: + - 'link "ホテルプールに現れた常連客の正体草 #感動 #動物 #アヒル" [ref=e976] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=P4unYF0kRoo + - text: Shorts + - cell "ショーツ見る日" [ref=e977]: + - link "ショーツ見る日" [ref=e978] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e979] + - cell "3,251,878" [ref=e980] + - cell "5,775.98" [ref=e981] + - cell "58.4x" [ref=e982] + - cell "NEW" [ref=e983]: + - combobox [ref=e984]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e985]: + - combobox [ref=e986]: + - option "-" [selected] + - cell [ref=e987]: + - generic [ref=e988]: + - button "북마크" [ref=e989] [cursor=pointer]: + - img [ref=e990] + - button "삭제" [ref=e992] [cursor=pointer]: + - img [ref=e993] + - row "知らない人にも話しかけたくなる椅子Shorts ショーツ見る日 55,700 3,046,157 3,710.3 54.7x NEW -" [ref=e996]: + - cell [ref=e997]: + - img [ref=e999] [cursor=pointer] + - cell "知らない人にも話しかけたくなる椅子Shorts" [ref=e1000]: + - generic [ref=e1001]: + - link "知らない人にも話しかけたくなる椅子" [ref=e1002] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=oXpnR_h7xFA + - text: Shorts + - cell "ショーツ見る日" [ref=e1003]: + - link "ショーツ見る日" [ref=e1004] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1005] + - cell "3,046,157" [ref=e1006] + - cell "3,710.3" [ref=e1007] + - cell "54.7x" [ref=e1008] + - cell "NEW" [ref=e1009]: + - combobox [ref=e1010]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1011]: + - combobox [ref=e1012]: + - option "-" [selected] + - cell [ref=e1013]: + - generic [ref=e1014]: + - button "북마크" [ref=e1015] [cursor=pointer]: + - img [ref=e1016] + - button "삭제" [ref=e1018] [cursor=pointer]: + - img [ref=e1019] + - row "ボーダーコリーに走りで勝とうとする飼い主Shorts ショーツ見る日 55,700 2,825,926 1,535 50.7x NEW -" [ref=e1022]: + - cell [ref=e1023]: + - img [ref=e1025] [cursor=pointer] + - cell "ボーダーコリーに走りで勝とうとする飼い主Shorts" [ref=e1026]: + - generic [ref=e1027]: + - link "ボーダーコリーに走りで勝とうとする飼い主" [ref=e1028] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=pN04JHXa4Vc + - text: Shorts + - cell "ショーツ見る日" [ref=e1029]: + - link "ショーツ見る日" [ref=e1030] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1031] + - cell "2,825,926" [ref=e1032] + - cell "1,535" [ref=e1033] + - cell "50.7x" [ref=e1034] + - cell "NEW" [ref=e1035]: + - combobox [ref=e1036]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1037]: + - combobox [ref=e1038]: + - option "-" [selected] + - cell [ref=e1039]: + - generic [ref=e1040]: + - button "북마크" [ref=e1041] [cursor=pointer]: + - img [ref=e1042] + - button "삭제" [ref=e1044] [cursor=pointer]: + - img [ref=e1045] + - row "一匹狼だと思ってた北極オオカミの正体Shorts ショーツ見る日 55,700 2,727,339 1,204.66 49.0x NEW -" [ref=e1048]: + - cell [ref=e1049]: + - img [ref=e1051] [cursor=pointer] + - cell "一匹狼だと思ってた北極オオカミの正体Shorts" [ref=e1052]: + - generic [ref=e1053]: + - link "一匹狼だと思ってた北極オオカミの正体" [ref=e1054] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lHyl2V029aQ + - text: Shorts + - cell "ショーツ見る日" [ref=e1055]: + - link "ショーツ見る日" [ref=e1056] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1057] + - cell "2,727,339" [ref=e1058] + - cell "1,204.66" [ref=e1059] + - cell "49.0x" [ref=e1060] + - cell "NEW" [ref=e1061]: + - combobox [ref=e1062]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1063]: + - combobox [ref=e1064]: + - option "-" [selected] + - cell [ref=e1065]: + - generic [ref=e1066]: + - button "북마크" [ref=e1067] [cursor=pointer]: + - img [ref=e1068] + - button "삭제" [ref=e1070] [cursor=pointer]: + - img [ref=e1071] + - row "ステージ落下事故でも歌い続けたマイケルジャクソン(ミュンヘン1999)Shorts ショーツ見る日 55,700 2,510,678 1,011.96 45.1x NEW -" [ref=e1074]: + - cell [ref=e1075]: + - img [ref=e1077] [cursor=pointer] + - cell "ステージ落下事故でも歌い続けたマイケルジャクソン(ミュンヘン1999)Shorts" [ref=e1078]: + - generic [ref=e1079]: + - link "ステージ落下事故でも歌い続けたマイケルジャクソン(ミュンヘン1999)" [ref=e1080] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=X2eX0hm17qY + - text: Shorts + - cell "ショーツ見る日" [ref=e1081]: + - link "ショーツ見る日" [ref=e1082] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1083] + - cell "2,510,678" [ref=e1084] + - cell "1,011.96" [ref=e1085] + - cell "45.1x" [ref=e1086] + - cell "NEW" [ref=e1087]: + - combobox [ref=e1088]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1089]: + - combobox [ref=e1090]: + - option "-" [selected] + - cell [ref=e1091]: + - generic [ref=e1092]: + - button "북마크" [ref=e1093] [cursor=pointer]: + - img [ref=e1094] + - button "삭제" [ref=e1096] [cursor=pointer]: + - img [ref=e1097] + - row "これガチの愛😍Shorts ショーツ見る日 55,700 2,381,818 1,284 42.8x NEW -" [ref=e1100]: + - cell [ref=e1101]: + - img [ref=e1103] [cursor=pointer] + - cell "これガチの愛😍Shorts" [ref=e1104]: + - generic [ref=e1105]: + - link "これガチの愛😍" [ref=e1106] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=HDNFYySkV6w + - text: Shorts + - cell "ショーツ見る日" [ref=e1107]: + - link "ショーツ見る日" [ref=e1108] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1109] + - cell "2,381,818" [ref=e1110] + - cell "1,284" [ref=e1111] + - cell "42.8x" [ref=e1112] + - cell "NEW" [ref=e1113]: + - combobox [ref=e1114]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1115]: + - combobox [ref=e1116]: + - option "-" [selected] + - cell [ref=e1117]: + - generic [ref=e1118]: + - button "북마크" [ref=e1119] [cursor=pointer]: + - img [ref=e1120] + - button "삭제" [ref=e1122] [cursor=pointer]: + - img [ref=e1123] + - row "空気読めずにイキってたヤンキー猫の末路Shorts ショーツ見る日 55,700 2,112,235 1,318.5 37.9x NEW -" [ref=e1126]: + - cell [ref=e1127]: + - img [ref=e1129] [cursor=pointer] + - cell "空気読めずにイキってたヤンキー猫の末路Shorts" [ref=e1130]: + - generic [ref=e1131]: + - link "空気読めずにイキってたヤンキー猫の末路" [ref=e1132] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=gJ4LOqWjAJI + - text: Shorts + - cell "ショーツ見る日" [ref=e1133]: + - link "ショーツ見る日" [ref=e1134] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1135] + - cell "2,112,235" [ref=e1136] + - cell "1,318.5" [ref=e1137] + - cell "37.9x" [ref=e1138] + - cell "NEW" [ref=e1139]: + - combobox [ref=e1140]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1141]: + - combobox [ref=e1142]: + - option "-" [selected] + - cell [ref=e1143]: + - generic [ref=e1144]: + - button "북마크" [ref=e1145] [cursor=pointer]: + - img [ref=e1146] + - button "삭제" [ref=e1148] [cursor=pointer]: + - img [ref=e1149] + - 'row "史上最難関オーダー客に店長が出した神回答www #Shorts #あるある #神対応Shorts ショーツ見る日 55,700 1,812,812 1,667.72 32.5x NEW -" [ref=e1152]': + - cell [ref=e1153]: + - img [ref=e1155] [cursor=pointer] + - 'cell "史上最難関オーダー客に店長が出した神回答www #Shorts #あるある #神対応Shorts" [ref=e1156]': + - generic [ref=e1157]: + - 'link "史上最難関オーダー客に店長が出した神回答www #Shorts #あるある #神対応" [ref=e1158] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=qsuuTArtWmk + - text: Shorts + - cell "ショーツ見る日" [ref=e1159]: + - link "ショーツ見る日" [ref=e1160] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1161] + - cell "1,812,812" [ref=e1162] + - cell "1,667.72" [ref=e1163] + - cell "32.5x" [ref=e1164] + - cell "NEW" [ref=e1165]: + - combobox [ref=e1166]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1167]: + - combobox [ref=e1168]: + - option "-" [selected] + - cell [ref=e1169]: + - generic [ref=e1170]: + - button "북마크" [ref=e1171] [cursor=pointer]: + - img [ref=e1172] + - button "삭제" [ref=e1174] [cursor=pointer]: + - img [ref=e1175] + - row "マイケル・ジャクソン×マイケル・ジョーダン|Jam MV撮影の裏側Shorts ショーツ見る日 55,700 1,785,752 680.81 32.1x NEW -" [ref=e1178]: + - cell [ref=e1179]: + - img [ref=e1181] [cursor=pointer] + - cell "マイケル・ジャクソン×マイケル・ジョーダン|Jam MV撮影の裏側Shorts" [ref=e1182]: + - generic [ref=e1183]: + - link "マイケル・ジャクソン×マイケル・ジョーダン|Jam MV撮影の裏側" [ref=e1184] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=nvlE-ZcjQcU + - text: Shorts + - cell "ショーツ見る日" [ref=e1185]: + - link "ショーツ見る日" [ref=e1186] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1187] + - cell "1,785,752" [ref=e1188] + - cell "680.81" [ref=e1189] + - cell "32.1x" [ref=e1190] + - cell "NEW" [ref=e1191]: + - combobox [ref=e1192]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1193]: + - combobox [ref=e1194]: + - option "-" [selected] + - cell [ref=e1195]: + - generic [ref=e1196]: + - button "북마크" [ref=e1197] [cursor=pointer]: + - img [ref=e1198] + - button "삭제" [ref=e1200] [cursor=pointer]: + - img [ref=e1201] + - row "ゴッドファーザーで伝説になった猫の出演シーンShorts ショーツ見る日 55,700 1,637,444 589.43 29.4x NEW -" [ref=e1204]: + - cell [ref=e1205]: + - img [ref=e1207] [cursor=pointer] + - cell "ゴッドファーザーで伝説になった猫の出演シーンShorts" [ref=e1208]: + - generic [ref=e1209]: + - link "ゴッドファーザーで伝説になった猫の出演シーン" [ref=e1210] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=_zolzuXzKYE + - text: Shorts + - cell "ショーツ見る日" [ref=e1211]: + - link "ショーツ見る日" [ref=e1212] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1213] + - cell "1,637,444" [ref=e1214] + - cell "589.43" [ref=e1215] + - cell "29.4x" [ref=e1216] + - cell "NEW" [ref=e1217]: + - combobox [ref=e1218]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1219]: + - combobox [ref=e1220]: + - option "-" [selected] + - cell [ref=e1221]: + - generic [ref=e1222]: + - button "북마크" [ref=e1223] [cursor=pointer]: + - img [ref=e1224] + - button "삭제" [ref=e1226] [cursor=pointer]: + - img [ref=e1227] + - 'row "またビギナーの匂い嗅ぎつけたサーフィンガチ勢w #タヒチ #チョープー #サーフィンShorts ショーツ見る日 55,700 1,587,360 2,177.45 28.5x NEW -" [ref=e1230]': + - cell [ref=e1231]: + - img [ref=e1233] [cursor=pointer] + - 'cell "またビギナーの匂い嗅ぎつけたサーフィンガチ勢w #タヒチ #チョープー #サーフィンShorts" [ref=e1234]': + - generic [ref=e1235]: + - 'link "またビギナーの匂い嗅ぎつけたサーフィンガチ勢w #タヒチ #チョープー #サーフィン" [ref=e1236] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=nxr3XMv33Qk + - text: Shorts + - cell "ショーツ見る日" [ref=e1237]: + - link "ショーツ見る日" [ref=e1238] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1239] + - cell "1,587,360" [ref=e1240] + - cell "2,177.45" [ref=e1241] + - cell "28.5x" [ref=e1242] + - cell "NEW" [ref=e1243]: + - combobox [ref=e1244]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1245]: + - combobox [ref=e1246]: + - option "-" [selected] + - cell [ref=e1247]: + - generic [ref=e1248]: + - button "북마크" [ref=e1249] [cursor=pointer]: + - img [ref=e1250] + - button "삭제" [ref=e1252] [cursor=pointer]: + - img [ref=e1253] + - row "雨の街で踊るパパと娘🥰Shorts ショーツ見る日 55,700 1,582,700 827.34 28.4x NEW -" [ref=e1256]: + - cell [ref=e1257]: + - img [ref=e1259] [cursor=pointer] + - cell "雨の街で踊るパパと娘🥰Shorts" [ref=e1260]: + - generic [ref=e1261]: + - link "雨の街で踊るパパと娘🥰" [ref=e1262] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=1aboYT2gZL8 + - text: Shorts + - cell "ショーツ見る日" [ref=e1263]: + - link "ショーツ見る日" [ref=e1264] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1265] + - cell "1,582,700" [ref=e1266] + - cell "827.34" [ref=e1267] + - cell "28.4x" [ref=e1268] + - cell "NEW" [ref=e1269]: + - combobox [ref=e1270]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1271]: + - combobox [ref=e1272]: + - option "-" [selected] + - cell [ref=e1273]: + - generic [ref=e1274]: + - button "북마크" [ref=e1275] [cursor=pointer]: + - img [ref=e1276] + - button "삭제" [ref=e1278] [cursor=pointer]: + - img [ref=e1279] + - row "技術の使用が許可された日wwShorts ショーツ見る日 55,700 1,508,407 1,481.74 27.1x NEW -" [ref=e1282]: + - cell [ref=e1283]: + - img [ref=e1285] [cursor=pointer] + - cell "技術の使用が許可された日wwShorts" [ref=e1286]: + - generic [ref=e1287]: + - link "技術の使用が許可された日ww" [ref=e1288] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=G4kDmaLO03c + - text: Shorts + - cell "ショーツ見る日" [ref=e1289]: + - link "ショーツ見る日" [ref=e1290] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1291] + - cell "1,508,407" [ref=e1292] + - cell "1,481.74" [ref=e1293] + - cell "27.1x" [ref=e1294] + - cell "NEW" [ref=e1295]: + - combobox [ref=e1296]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1297]: + - combobox [ref=e1298]: + - option "-" [selected] + - cell [ref=e1299]: + - generic [ref=e1300]: + - button "북마크" [ref=e1301] [cursor=pointer]: + - img [ref=e1302] + - button "삭제" [ref=e1304] [cursor=pointer]: + - img [ref=e1305] + - row "カブトガニを助けようとした女性に起きたことShorts ショーツ見る日 55,700 1,418,284 645.85 25.5x NEW -" [ref=e1308]: + - cell [ref=e1309]: + - img [ref=e1311] [cursor=pointer] + - cell "カブトガニを助けようとした女性に起きたことShorts" [ref=e1312]: + - generic [ref=e1313]: + - link "カブトガニを助けようとした女性に起きたこと" [ref=e1314] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=dL9npIOCves + - text: Shorts + - cell "ショーツ見る日" [ref=e1315]: + - link "ショーツ見る日" [ref=e1316] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1317] + - cell "1,418,284" [ref=e1318] + - cell "645.85" [ref=e1319] + - cell "25.5x" [ref=e1320] + - cell "NEW" [ref=e1321]: + - combobox [ref=e1322]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1323]: + - combobox [ref=e1324]: + - option "-" [selected] + - cell [ref=e1325]: + - generic [ref=e1326]: + - button "북마크" [ref=e1327] [cursor=pointer]: + - img [ref=e1328] + - button "삭제" [ref=e1330] [cursor=pointer]: + - img [ref=e1331] + - row "400人の生徒たちがおばあちゃんを訪ねた理由Shorts ショーツ見る日 55,700 1,394,482 1,066.12 25.0x NEW -" [ref=e1334]: + - cell [ref=e1335]: + - img [ref=e1337] [cursor=pointer] + - cell "400人の生徒たちがおばあちゃんを訪ねた理由Shorts" [ref=e1338]: + - generic [ref=e1339]: + - link "400人の生徒たちがおばあちゃんを訪ねた理由" [ref=e1340] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bxKEcqmSPiM + - text: Shorts + - cell "ショーツ見る日" [ref=e1341]: + - link "ショーツ見る日" [ref=e1342] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1343] + - cell "1,394,482" [ref=e1344] + - cell "1,066.12" [ref=e1345] + - cell "25.0x" [ref=e1346] + - cell "NEW" [ref=e1347]: + - combobox [ref=e1348]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1349]: + - combobox [ref=e1350]: + - option "-" [selected] + - cell [ref=e1351]: + - generic [ref=e1352]: + - button "북마크" [ref=e1353] [cursor=pointer]: + - img [ref=e1354] + - button "삭제" [ref=e1356] [cursor=pointer]: + - img [ref=e1357] + - row "遠くで遊んでたワンコを呼んだらShorts ショーツ見る日 55,700 1,299,812 648.61 23.3x NEW -" [ref=e1360]: + - cell [ref=e1361]: + - img [ref=e1363] [cursor=pointer] + - cell "遠くで遊んでたワンコを呼んだらShorts" [ref=e1364]: + - generic [ref=e1365]: + - link "遠くで遊んでたワンコを呼んだら" [ref=e1366] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=vu3pKYZ647A + - text: Shorts + - cell "ショーツ見る日" [ref=e1367]: + - link "ショーツ見る日" [ref=e1368] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1369] + - cell "1,299,812" [ref=e1370] + - cell "648.61" [ref=e1371] + - cell "23.3x" [ref=e1372] + - cell "NEW" [ref=e1373]: + - combobox [ref=e1374]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1375]: + - combobox [ref=e1376]: + - option "-" [selected] + - cell [ref=e1377]: + - generic [ref=e1378]: + - button "북마크" [ref=e1379] [cursor=pointer]: + - img [ref=e1380] + - button "삭제" [ref=e1382] [cursor=pointer]: + - img [ref=e1383] + - row "先にやられたボーダーコリーのまさかのお返しShorts ショーツ見る日 55,700 1,268,435 571.37 22.8x NEW -" [ref=e1386]: + - cell [ref=e1387]: + - img [ref=e1389] [cursor=pointer] + - cell "先にやられたボーダーコリーのまさかのお返しShorts" [ref=e1390]: + - generic [ref=e1391]: + - link "先にやられたボーダーコリーのまさかのお返し" [ref=e1392] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bZxIXTwE6vg + - text: Shorts + - cell "ショーツ見る日" [ref=e1393]: + - link "ショーツ見る日" [ref=e1394] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1395] + - cell "1,268,435" [ref=e1396] + - cell "571.37" [ref=e1397] + - cell "22.8x" [ref=e1398] + - cell "NEW" [ref=e1399]: + - combobox [ref=e1400]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1401]: + - combobox [ref=e1402]: + - option "-" [selected] + - cell [ref=e1403]: + - generic [ref=e1404]: + - button "북마크" [ref=e1405] [cursor=pointer]: + - img [ref=e1406] + - button "삭제" [ref=e1408] [cursor=pointer]: + - img [ref=e1409] + - row "マイケルジャクソンの伝説的なMV裏話Shorts ショーツ見る日 55,700 1,225,672 454.46 22.0x NEW -" [ref=e1412]: + - cell [ref=e1413]: + - img [ref=e1415] [cursor=pointer] + - cell "マイケルジャクソンの伝説的なMV裏話Shorts" [ref=e1416]: + - generic [ref=e1417]: + - link "マイケルジャクソンの伝説的なMV裏話" [ref=e1418] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=fxK0vMFGOsY + - text: Shorts + - cell "ショーツ見る日" [ref=e1419]: + - link "ショーツ見る日" [ref=e1420] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1421] + - cell "1,225,672" [ref=e1422] + - cell "454.46" [ref=e1423] + - cell "22.0x" [ref=e1424] + - cell "NEW" [ref=e1425]: + - combobox [ref=e1426]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1427]: + - combobox [ref=e1428]: + - option "-" [selected] + - cell [ref=e1429]: + - generic [ref=e1430]: + - button "북마크" [ref=e1431] [cursor=pointer]: + - img [ref=e1432] + - button "삭제" [ref=e1434] [cursor=pointer]: + - img [ref=e1435] + - row "ペンギンが秒で逃げた理由🐧🦭Shorts ショーツ見る日 55,700 1,139,059 548.15 20.4x NEW -" [ref=e1438]: + - cell [ref=e1439]: + - img [ref=e1441] [cursor=pointer] + - cell "ペンギンが秒で逃げた理由🐧🦭Shorts" [ref=e1442]: + - generic [ref=e1443]: + - link "ペンギンが秒で逃げた理由🐧🦭" [ref=e1444] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=QcBmL5HMIR8 + - text: Shorts + - cell "ショーツ見る日" [ref=e1445]: + - link "ショーツ見る日" [ref=e1446] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1447] + - cell "1,139,059" [ref=e1448] + - cell "548.15" [ref=e1449] + - cell "20.4x" [ref=e1450] + - cell "NEW" [ref=e1451]: + - combobox [ref=e1452]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1453]: + - combobox [ref=e1454]: + - option "-" [selected] + - cell [ref=e1455]: + - generic [ref=e1456]: + - button "북마크" [ref=e1457] [cursor=pointer]: + - img [ref=e1458] + - button "삭제" [ref=e1460] [cursor=pointer]: + - img [ref=e1461] + - row "センスえぐい告白😆Shorts ショーツ見る日 55,700 947,135 400.82 17.0x NEW -" [ref=e1464]: + - cell [ref=e1465]: + - img [ref=e1467] [cursor=pointer] + - cell "センスえぐい告白😆Shorts" [ref=e1468]: + - generic [ref=e1469]: + - link "センスえぐい告白😆" [ref=e1470] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=owMtVmR4nHY + - text: Shorts + - cell "ショーツ見る日" [ref=e1471]: + - link "ショーツ見る日" [ref=e1472] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1473] + - cell "947,135" [ref=e1474] + - cell "400.82" [ref=e1475] + - cell "17.0x" [ref=e1476] + - cell "NEW" [ref=e1477]: + - combobox [ref=e1478]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1479]: + - combobox [ref=e1480]: + - option "-" [selected] + - cell [ref=e1481]: + - generic [ref=e1482]: + - button "북마크" [ref=e1483] [cursor=pointer]: + - img [ref=e1484] + - button "삭제" [ref=e1486] [cursor=pointer]: + - img [ref=e1487] + - row "ハスキーおすすめですよ 私だけ苦しむの嫌なんでwwShorts ショーツ見る日 55,700 910,380 1,420.25 16.3x NEW -" [ref=e1490]: + - cell [ref=e1491]: + - img [ref=e1493] [cursor=pointer] + - cell "ハスキーおすすめですよ 私だけ苦しむの嫌なんでwwShorts" [ref=e1494]: + - generic [ref=e1495]: + - link "ハスキーおすすめですよ 私だけ苦しむの嫌なんでww" [ref=e1496] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=xQ1aNukn10M + - text: Shorts + - cell "ショーツ見る日" [ref=e1497]: + - link "ショーツ見る日" [ref=e1498] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1499] + - cell "910,380" [ref=e1500] + - cell "1,420.25" [ref=e1501] + - cell "16.3x" [ref=e1502] + - cell "NEW" [ref=e1503]: + - combobox [ref=e1504]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1505]: + - combobox [ref=e1506]: + - option "-" [selected] + - cell [ref=e1507]: + - generic [ref=e1508]: + - button "북마크" [ref=e1509] [cursor=pointer]: + - img [ref=e1510] + - button "삭제" [ref=e1512] [cursor=pointer]: + - img [ref=e1513] + - 'row "天才ボーダーコリーが指示を受けた結果… #羊追い #犬 #ShortsShorts ショーツ見る日 55,700 889,498 586.74 16.0x NEW -" [ref=e1516]': + - cell [ref=e1517]: + - img [ref=e1519] [cursor=pointer] + - 'cell "天才ボーダーコリーが指示を受けた結果… #羊追い #犬 #ShortsShorts" [ref=e1520]': + - generic [ref=e1521]: + - 'link "天才ボーダーコリーが指示を受けた結果… #羊追い #犬 #Shorts" [ref=e1522] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=NobrRSx7AVA + - text: Shorts + - cell "ショーツ見る日" [ref=e1523]: + - link "ショーツ見る日" [ref=e1524] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1525] + - cell "889,498" [ref=e1526] + - cell "586.74" [ref=e1527] + - cell "16.0x" [ref=e1528] + - cell "NEW" [ref=e1529]: + - combobox [ref=e1530]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1531]: + - combobox [ref=e1532]: + - option "-" [selected] + - cell [ref=e1533]: + - generic [ref=e1534]: + - button "북마크" [ref=e1535] [cursor=pointer]: + - img [ref=e1536] + - button "삭제" [ref=e1538] [cursor=pointer]: + - img [ref=e1539] + - row "マイケルジャクソンを失ったジャネットジャクソンの追悼ステージShorts ショーツ見る日 55,700 885,983 350.47 15.9x NEW -" [ref=e1542]: + - cell [ref=e1543]: + - img [ref=e1545] [cursor=pointer] + - cell "マイケルジャクソンを失ったジャネットジャクソンの追悼ステージShorts" [ref=e1546]: + - generic [ref=e1547]: + - link "マイケルジャクソンを失ったジャネットジャクソンの追悼ステージ" [ref=e1548] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=YN-QEYKHkws + - text: Shorts + - cell "ショーツ見る日" [ref=e1549]: + - link "ショーツ見る日" [ref=e1550] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1551] + - cell "885,983" [ref=e1552] + - cell "350.47" [ref=e1553] + - cell "15.9x" [ref=e1554] + - cell "NEW" [ref=e1555]: + - combobox [ref=e1556]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1557]: + - combobox [ref=e1558]: + - option "-" [selected] + - cell [ref=e1559]: + - generic [ref=e1560]: + - button "북마크" [ref=e1561] [cursor=pointer]: + - img [ref=e1562] + - button "삭제" [ref=e1564] [cursor=pointer]: + - img [ref=e1565] + - row "ワシの一生 たった一度だけ危険な飛行をする理由Shorts ショーツ見る日 55,700 871,509 389.41 15.7x NEW -" [ref=e1568]: + - cell [ref=e1569]: + - img [ref=e1571] [cursor=pointer] + - cell "ワシの一生 たった一度だけ危険な飛行をする理由Shorts" [ref=e1572]: + - generic [ref=e1573]: + - link "ワシの一生 たった一度だけ危険な飛行をする理由" [ref=e1574] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=NGmQoJyTjSQ + - text: Shorts + - cell "ショーツ見る日" [ref=e1575]: + - link "ショーツ見る日" [ref=e1576] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1577] + - cell "871,509" [ref=e1578] + - cell "389.41" [ref=e1579] + - cell "15.7x" [ref=e1580] + - cell "NEW" [ref=e1581]: + - combobox [ref=e1582]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1583]: + - combobox [ref=e1584]: + - option "-" [selected] + - cell [ref=e1585]: + - generic [ref=e1586]: + - button "북마크" [ref=e1587] [cursor=pointer]: + - img [ref=e1588] + - button "삭제" [ref=e1590] [cursor=pointer]: + - img [ref=e1591] + - row "エミネムをビビらせたマイケルジャクソンの復讐Shorts ショーツ見る日 55,700 864,020 347 15.5x NEW -" [ref=e1594]: + - cell [ref=e1595]: + - img [ref=e1597] [cursor=pointer] + - cell "エミネムをビビらせたマイケルジャクソンの復讐Shorts" [ref=e1598]: + - generic [ref=e1599]: + - link "エミネムをビビらせたマイケルジャクソンの復讐" [ref=e1600] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=TQIC3DzlH2Q + - text: Shorts + - cell "ショーツ見る日" [ref=e1601]: + - link "ショーツ見る日" [ref=e1602] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1603] + - cell "864,020" [ref=e1604] + - cell "347" [ref=e1605] + - cell "15.5x" [ref=e1606] + - cell "NEW" [ref=e1607]: + - combobox [ref=e1608]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1609]: + - combobox [ref=e1610]: + - option "-" [selected] + - cell [ref=e1611]: + - generic [ref=e1612]: + - button "북마크" [ref=e1613] [cursor=pointer]: + - img [ref=e1614] + - button "삭제" [ref=e1616] [cursor=pointer]: + - img [ref=e1617] + - row "絶望の瞬間😂 大事に食べようとした結果がこれ wwShorts ショーツ見る日 55,700 782,888 528.62 14.1x NEW -" [ref=e1620]: + - cell [ref=e1621]: + - img [ref=e1623] [cursor=pointer] + - cell "絶望の瞬間😂 大事に食べようとした結果がこれ wwShorts" [ref=e1624]: + - generic [ref=e1625]: + - link "絶望の瞬間😂 大事に食べようとした結果がこれ ww" [ref=e1626] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=88YsjDPsx-k + - text: Shorts + - cell "ショーツ見る日" [ref=e1627]: + - link "ショーツ見る日" [ref=e1628] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1629] + - cell "782,888" [ref=e1630] + - cell "528.62" [ref=e1631] + - cell "14.1x" [ref=e1632] + - cell "NEW" [ref=e1633]: + - combobox [ref=e1634]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1635]: + - combobox [ref=e1636]: + - option "-" [selected] + - cell [ref=e1637]: + - generic [ref=e1638]: + - button "북마크" [ref=e1639] [cursor=pointer]: + - img [ref=e1640] + - button "삭제" [ref=e1642] [cursor=pointer]: + - img [ref=e1643] + - row "退役パパを一瞬で見抜いた近衛馬 (涙腺崩壊)Shorts ショーツ見る日 55,700 776,596 573.13 13.9x NEW -" [ref=e1646]: + - cell [ref=e1647]: + - img [ref=e1649] [cursor=pointer] + - cell "退役パパを一瞬で見抜いた近衛馬 (涙腺崩壊)Shorts" [ref=e1650]: + - generic [ref=e1651]: + - link "退役パパを一瞬で見抜いた近衛馬 (涙腺崩壊)" [ref=e1652] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=zJ5VvqY6cVU + - text: Shorts + - cell "ショーツ見る日" [ref=e1653]: + - link "ショーツ見る日" [ref=e1654] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1655] + - cell "776,596" [ref=e1656] + - cell "573.13" [ref=e1657] + - cell "13.9x" [ref=e1658] + - cell "NEW" [ref=e1659]: + - combobox [ref=e1660]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1661]: + - combobox [ref=e1662]: + - option "-" [selected] + - cell [ref=e1663]: + - generic [ref=e1664]: + - button "북마크" [ref=e1665] [cursor=pointer]: + - img [ref=e1666] + - button "삭제" [ref=e1668] [cursor=pointer]: + - img [ref=e1669] + - row "10年前に虹の橋を渡ったのに今もお昼寝中のわんこShorts ショーツ見る日 55,700 773,604 638.81 13.9x NEW -" [ref=e1672]: + - cell [ref=e1673]: + - img [ref=e1675] [cursor=pointer] + - cell "10年前に虹の橋を渡ったのに今もお昼寝中のわんこShorts" [ref=e1676]: + - generic [ref=e1677]: + - link "10年前に虹の橋を渡ったのに今もお昼寝中のわんこ" [ref=e1678] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=1VLlD3gTdtM + - text: Shorts + - cell "ショーツ見る日" [ref=e1679]: + - link "ショーツ見る日" [ref=e1680] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1681] + - cell "773,604" [ref=e1682] + - cell "638.81" [ref=e1683] + - cell "13.9x" [ref=e1684] + - cell "NEW" [ref=e1685]: + - combobox [ref=e1686]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1687]: + - combobox [ref=e1688]: + - option "-" [selected] + - cell [ref=e1689]: + - generic [ref=e1690]: + - button "북마크" [ref=e1691] [cursor=pointer]: + - img [ref=e1692] + - button "삭제" [ref=e1694] [cursor=pointer]: + - img [ref=e1695] + - row "1年ぶりに偶然再会したふたりの男の仲直りの仕方🏍️🛻Shorts ショーツ見る日 55,700 773,315 625.15 13.9x NEW -" [ref=e1698]: + - cell [ref=e1699]: + - img [ref=e1701] [cursor=pointer] + - cell "1年ぶりに偶然再会したふたりの男の仲直りの仕方🏍️🛻Shorts" [ref=e1702]: + - generic [ref=e1703]: + - link "1年ぶりに偶然再会したふたりの男の仲直りの仕方🏍️🛻" [ref=e1704] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=b_sjpKBYqKg + - text: Shorts + - cell "ショーツ見る日" [ref=e1705]: + - link "ショーツ見る日" [ref=e1706] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1707] + - cell "773,315" [ref=e1708] + - cell "625.15" [ref=e1709] + - cell "13.9x" [ref=e1710] + - cell "NEW" [ref=e1711]: + - combobox [ref=e1712]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1713]: + - combobox [ref=e1714]: + - option "-" [selected] + - cell [ref=e1715]: + - generic [ref=e1716]: + - button "북마크" [ref=e1717] [cursor=pointer]: + - img [ref=e1718] + - button "삭제" [ref=e1720] [cursor=pointer]: + - img [ref=e1721] + - row "アジア人を舐めたテニス選手の末路Shorts ショーツ見る日 55,700 756,763 330.32 13.6x NEW -" [ref=e1724]: + - cell [ref=e1725]: + - img [ref=e1727] [cursor=pointer] + - cell "アジア人を舐めたテニス選手の末路Shorts" [ref=e1728]: + - generic [ref=e1729]: + - link "アジア人を舐めたテニス選手の末路" [ref=e1730] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lARRuLMhn7c + - text: Shorts + - cell "ショーツ見る日" [ref=e1731]: + - link "ショーツ見る日" [ref=e1732] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1733] + - cell "756,763" [ref=e1734] + - cell "330.32" [ref=e1735] + - cell "13.6x" [ref=e1736] + - cell "NEW" [ref=e1737]: + - combobox [ref=e1738]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1739]: + - combobox [ref=e1740]: + - option "-" [selected] + - cell [ref=e1741]: + - generic [ref=e1742]: + - button "북마크" [ref=e1743] [cursor=pointer]: + - img [ref=e1744] + - button "삭제" [ref=e1746] [cursor=pointer]: + - img [ref=e1747] + - row "人類の進化に鳥肌が止まらない日Shorts ショーツ見る日 55,700 736,591 1,685.56 13.2x NEW -" [ref=e1750]: + - cell [ref=e1751]: + - img [ref=e1753] [cursor=pointer] + - cell "人類の進化に鳥肌が止まらない日Shorts" [ref=e1754]: + - generic [ref=e1755]: + - link "人類の進化に鳥肌が止まらない日" [ref=e1756] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=exwb3Gayn1A + - text: Shorts + - cell "ショーツ見る日" [ref=e1757]: + - link "ショーツ見る日" [ref=e1758] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1759] + - cell "736,591" [ref=e1760] + - cell "1,685.56" [ref=e1761] + - cell "13.2x" [ref=e1762] + - cell "NEW" [ref=e1763]: + - combobox [ref=e1764]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1765]: + - combobox [ref=e1766]: + - option "-" [selected] + - cell [ref=e1767]: + - generic [ref=e1768]: + - button "북마크" [ref=e1769] [cursor=pointer]: + - img [ref=e1770] + - button "삭제" [ref=e1772] [cursor=pointer]: + - img [ref=e1773] + - row "ひよこを集めるまさかの方法Shorts ショーツ見る日 55,700 693,232 405.16 12.4x NEW -" [ref=e1776]: + - cell [ref=e1777]: + - img [ref=e1779] [cursor=pointer] + - cell "ひよこを集めるまさかの方法Shorts" [ref=e1780]: + - generic [ref=e1781]: + - link "ひよこを集めるまさかの方法" [ref=e1782] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=cACklresx6I + - text: Shorts + - cell "ショーツ見る日" [ref=e1783]: + - link "ショーツ見る日" [ref=e1784] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1785] + - cell "693,232" [ref=e1786] + - cell "405.16" [ref=e1787] + - cell "12.4x" [ref=e1788] + - cell "NEW" [ref=e1789]: + - combobox [ref=e1790]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1791]: + - combobox [ref=e1792]: + - option "-" [selected] + - cell [ref=e1793]: + - generic [ref=e1794]: + - button "북마크" [ref=e1795] [cursor=pointer]: + - img [ref=e1796] + - button "삭제" [ref=e1798] [cursor=pointer]: + - img [ref=e1799] + - row "大型犬に出会った子どもが最初に言った意外な一言🦮Shorts ショーツ見る日 55,700 599,452 306.16 10.8x NEW -" [ref=e1802]: + - cell [ref=e1803]: + - img [ref=e1805] [cursor=pointer] + - cell "大型犬に出会った子どもが最初に言った意外な一言🦮Shorts" [ref=e1806]: + - generic [ref=e1807]: + - link "大型犬に出会った子どもが最初に言った意外な一言🦮" [ref=e1808] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ZGoTDba2Lpk + - text: Shorts + - cell "ショーツ見る日" [ref=e1809]: + - link "ショーツ見る日" [ref=e1810] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1811] + - cell "599,452" [ref=e1812] + - cell "306.16" [ref=e1813] + - cell "10.8x" [ref=e1814] + - cell "NEW" [ref=e1815]: + - combobox [ref=e1816]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1817]: + - combobox [ref=e1818]: + - option "-" [selected] + - cell [ref=e1819]: + - generic [ref=e1820]: + - button "북마크" [ref=e1821] [cursor=pointer]: + - img [ref=e1822] + - button "삭제" [ref=e1824] [cursor=pointer]: + - img [ref=e1825] + - row "妙に納得しちゃうマイケル・ジャクソンの計算方法🤣Shorts ショーツ見る日 55,700 579,728 218.85 10.4x NEW -" [ref=e1828]: + - cell [ref=e1829]: + - img [ref=e1831] [cursor=pointer] + - cell "妙に納得しちゃうマイケル・ジャクソンの計算方法🤣Shorts" [ref=e1832]: + - generic [ref=e1833]: + - link "妙に納得しちゃうマイケル・ジャクソンの計算方法🤣" [ref=e1834] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=cpvOB5B0nNc + - text: Shorts + - cell "ショーツ見る日" [ref=e1835]: + - link "ショーツ見る日" [ref=e1836] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1837] + - cell "579,728" [ref=e1838] + - cell "218.85" [ref=e1839] + - cell "10.4x" [ref=e1840] + - cell "NEW" [ref=e1841]: + - combobox [ref=e1842]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1843]: + - combobox [ref=e1844]: + - option "-" [selected] + - cell [ref=e1845]: + - generic [ref=e1846]: + - button "북마크" [ref=e1847] [cursor=pointer]: + - img [ref=e1848] + - button "삭제" [ref=e1850] [cursor=pointer]: + - img [ref=e1851] + - row "チベットスナギツネの獲物への近づき方wwShorts ショーツ見る日 55,700 579,254 445.24 10.4x NEW -" [ref=e1854]: + - cell [ref=e1855]: + - img [ref=e1857] [cursor=pointer] + - cell "チベットスナギツネの獲物への近づき方wwShorts" [ref=e1858]: + - generic [ref=e1859]: + - link "チベットスナギツネの獲物への近づき方ww" [ref=e1860] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=nDU4NiQjI2w + - text: Shorts + - cell "ショーツ見る日" [ref=e1861]: + - link "ショーツ見る日" [ref=e1862] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1863] + - cell "579,254" [ref=e1864] + - cell "445.24" [ref=e1865] + - cell "10.4x" [ref=e1866] + - cell "NEW" [ref=e1867]: + - combobox [ref=e1868]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1869]: + - combobox [ref=e1870]: + - option "-" [selected] + - cell [ref=e1871]: + - generic [ref=e1872]: + - button "북마크" [ref=e1873] [cursor=pointer]: + - img [ref=e1874] + - button "삭제" [ref=e1876] [cursor=pointer]: + - img [ref=e1877] + - 'row "捨てられた黒バナナが金に変わる瞬間 #Shorts #ライフハックShorts ショーツ見る日 55,700 574,494 904.71 10.3x NEW -" [ref=e1880]': + - cell [ref=e1881]: + - img [ref=e1883] [cursor=pointer] + - 'cell "捨てられた黒バナナが金に変わる瞬間 #Shorts #ライフハックShorts" [ref=e1884]': + - generic [ref=e1885]: + - 'link "捨てられた黒バナナが金に変わる瞬間 #Shorts #ライフハック" [ref=e1886] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=fgl3vRMBer8 + - text: Shorts + - cell "ショーツ見る日" [ref=e1887]: + - link "ショーツ見る日" [ref=e1888] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1889] + - cell "574,494" [ref=e1890] + - cell "904.71" [ref=e1891] + - cell "10.3x" [ref=e1892] + - cell "NEW" [ref=e1893]: + - combobox [ref=e1894]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1895]: + - combobox [ref=e1896]: + - option "-" [selected] + - cell [ref=e1897]: + - generic [ref=e1898]: + - button "북마크" [ref=e1899] [cursor=pointer]: + - img [ref=e1900] + - button "삭제" [ref=e1902] [cursor=pointer]: + - img [ref=e1903] + - row "猫飼いさんなら絶対に蚊帳を買うべき理由Shorts ショーツ見る日 55,700 497,878 602.76 8.9x NEW -" [ref=e1906]: + - cell [ref=e1907]: + - img [ref=e1909] [cursor=pointer] + - cell "猫飼いさんなら絶対に蚊帳を買うべき理由Shorts" [ref=e1910]: + - generic [ref=e1911]: + - link "猫飼いさんなら絶対に蚊帳を買うべき理由" [ref=e1912] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=8rASRHlrUBk + - text: Shorts + - cell "ショーツ見る日" [ref=e1913]: + - link "ショーツ見る日" [ref=e1914] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1915] + - cell "497,878" [ref=e1916] + - cell "602.76" [ref=e1917] + - cell "8.9x" [ref=e1918] + - cell "NEW" [ref=e1919]: + - combobox [ref=e1920]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1921]: + - combobox [ref=e1922]: + - option "-" [selected] + - cell [ref=e1923]: + - generic [ref=e1924]: + - button "북마크" [ref=e1925] [cursor=pointer]: + - img [ref=e1926] + - button "삭제" [ref=e1928] [cursor=pointer]: + - img [ref=e1929] + - row "かなりわがままなアシカ🦭Shorts ショーツ見る日 55,700 485,054 251.06 8.7x NEW -" [ref=e1932]: + - cell [ref=e1933]: + - img [ref=e1935] [cursor=pointer] + - cell "かなりわがままなアシカ🦭Shorts" [ref=e1936]: + - generic [ref=e1937]: + - link "かなりわがままなアシカ🦭" [ref=e1938] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=8r2Ka5KmTg4 + - text: Shorts + - cell "ショーツ見る日" [ref=e1939]: + - link "ショーツ見る日" [ref=e1940] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1941] + - cell "485,054" [ref=e1942] + - cell "251.06" [ref=e1943] + - cell "8.7x" [ref=e1944] + - cell "NEW" [ref=e1945]: + - combobox [ref=e1946]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1947]: + - combobox [ref=e1948]: + - option "-" [selected] + - cell [ref=e1949]: + - generic [ref=e1950]: + - button "북마크" [ref=e1951] [cursor=pointer]: + - img [ref=e1952] + - button "삭제" [ref=e1954] [cursor=pointer]: + - img [ref=e1955] + - row "お母さんを覚えている近衛馬Shorts ショーツ見る日 55,700 476,735 224.98 8.6x NEW -" [ref=e1958]: + - cell [ref=e1959]: + - img [ref=e1961] [cursor=pointer] + - cell "お母さんを覚えている近衛馬Shorts" [ref=e1962]: + - generic [ref=e1963]: + - link "お母さんを覚えている近衛馬" [ref=e1964] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=QSD5AOFhWNY + - text: Shorts + - cell "ショーツ見る日" [ref=e1965]: + - link "ショーツ見る日" [ref=e1966] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1967] + - cell "476,735" [ref=e1968] + - cell "224.98" [ref=e1969] + - cell "8.6x" [ref=e1970] + - cell "NEW" [ref=e1971]: + - combobox [ref=e1972]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1973]: + - combobox [ref=e1974]: + - option "-" [selected] + - cell [ref=e1975]: + - generic [ref=e1976]: + - button "북마크" [ref=e1977] [cursor=pointer]: + - img [ref=e1978] + - button "삭제" [ref=e1980] [cursor=pointer]: + - img [ref=e1981] + - row "運転中に遭遇したカリスマMAX牧羊犬がヤバすぎたShorts ショーツ見る日 55,700 460,588 311.84 8.3x NEW -" [ref=e1984]: + - cell [ref=e1985]: + - img [ref=e1987] [cursor=pointer] + - cell "運転中に遭遇したカリスマMAX牧羊犬がヤバすぎたShorts" [ref=e1988]: + - generic [ref=e1989]: + - link "運転中に遭遇したカリスマMAX牧羊犬がヤバすぎた" [ref=e1990] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=kgdVJGVJQck + - text: Shorts + - cell "ショーツ見る日" [ref=e1991]: + - link "ショーツ見る日" [ref=e1992] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e1993] + - cell "460,588" [ref=e1994] + - cell "311.84" [ref=e1995] + - cell "8.3x" [ref=e1996] + - cell "NEW" [ref=e1997]: + - combobox [ref=e1998]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e1999]: + - combobox [ref=e2000]: + - option "-" [selected] + - cell [ref=e2001]: + - generic [ref=e2002]: + - button "북마크" [ref=e2003] [cursor=pointer]: + - img [ref=e2004] + - button "삭제" [ref=e2006] [cursor=pointer]: + - img [ref=e2007] + - row "成人した息子が突然父親に抱きついたら…こうなったShorts ショーツ見る日 55,700 429,366 315.25 7.7x NEW -" [ref=e2010]: + - cell [ref=e2011]: + - img [ref=e2013] [cursor=pointer] + - cell "成人した息子が突然父親に抱きついたら…こうなったShorts" [ref=e2014]: + - generic [ref=e2015]: + - link "成人した息子が突然父親に抱きついたら…こうなった" [ref=e2016] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=N2SPPnvtVwU + - text: Shorts + - cell "ショーツ見る日" [ref=e2017]: + - link "ショーツ見る日" [ref=e2018] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2019] + - cell "429,366" [ref=e2020] + - cell "315.25" [ref=e2021] + - cell "7.7x" [ref=e2022] + - cell "NEW" [ref=e2023]: + - combobox [ref=e2024]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2025]: + - combobox [ref=e2026]: + - option "-" [selected] + - cell [ref=e2027]: + - generic [ref=e2028]: + - button "북마크" [ref=e2029] [cursor=pointer]: + - img [ref=e2030] + - button "삭제" [ref=e2032] [cursor=pointer]: + - img [ref=e2033] + - row "ニワトリ1羽狙ったら農場まるごと敵に回したハンターの末路wwShorts ショーツ見る日 55,700 419,682 736.28 7.5x NEW -" [ref=e2036]: + - cell [ref=e2037]: + - img [ref=e2039] [cursor=pointer] + - cell "ニワトリ1羽狙ったら農場まるごと敵に回したハンターの末路wwShorts" [ref=e2040]: + - generic [ref=e2041]: + - link "ニワトリ1羽狙ったら農場まるごと敵に回したハンターの末路ww" [ref=e2042] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=I9sHZiU-IOQ + - text: Shorts + - cell "ショーツ見る日" [ref=e2043]: + - link "ショーツ見る日" [ref=e2044] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2045] + - cell "419,682" [ref=e2046] + - cell "736.28" [ref=e2047] + - cell "7.5x" [ref=e2048] + - cell "NEW" [ref=e2049]: + - combobox [ref=e2050]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2051]: + - combobox [ref=e2052]: + - option "-" [selected] + - cell [ref=e2053]: + - generic [ref=e2054]: + - button "북마크" [ref=e2055] [cursor=pointer]: + - img [ref=e2056] + - button "삭제" [ref=e2058] [cursor=pointer]: + - img [ref=e2059] + - row "息子が店員のお姉さんに人生初の一目惚れwShorts ショーツ見る日 55,700 417,351 233.55 7.5x NEW -" [ref=e2062]: + - cell [ref=e2063]: + - img [ref=e2065] [cursor=pointer] + - cell "息子が店員のお姉さんに人生初の一目惚れwShorts" [ref=e2066]: + - generic [ref=e2067]: + - link "息子が店員のお姉さんに人生初の一目惚れw" [ref=e2068] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=MH7WFHaEd6Y + - text: Shorts + - cell "ショーツ見る日" [ref=e2069]: + - link "ショーツ見る日" [ref=e2070] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2071] + - cell "417,351" [ref=e2072] + - cell "233.55" [ref=e2073] + - cell "7.5x" [ref=e2074] + - cell "NEW" [ref=e2075]: + - combobox [ref=e2076]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2077]: + - combobox [ref=e2078]: + - option "-" [selected] + - cell [ref=e2079]: + - generic [ref=e2080]: + - button "북마크" [ref=e2081] [cursor=pointer]: + - img [ref=e2082] + - button "삭제" [ref=e2084] [cursor=pointer]: + - img [ref=e2085] + - row "これは心臓バクバクするしかないShorts ショーツ見る日 55,700 376,174 221.54 6.8x NEW -" [ref=e2088]: + - cell [ref=e2089]: + - img [ref=e2091] [cursor=pointer] + - cell "これは心臓バクバクするしかないShorts" [ref=e2092]: + - generic [ref=e2093]: + - link "これは心臓バクバクするしかない" [ref=e2094] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=uHBvigFkG1c + - text: Shorts + - cell "ショーツ見る日" [ref=e2095]: + - link "ショーツ見る日" [ref=e2096] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2097] + - cell "376,174" [ref=e2098] + - cell "221.54" [ref=e2099] + - cell "6.8x" [ref=e2100] + - cell "NEW" [ref=e2101]: + - combobox [ref=e2102]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2103]: + - combobox [ref=e2104]: + - option "-" [selected] + - cell [ref=e2105]: + - generic [ref=e2106]: + - button "북마크" [ref=e2107] [cursor=pointer]: + - img [ref=e2108] + - button "삭제" [ref=e2110] [cursor=pointer]: + - img [ref=e2111] + - 'row "セミがゴールデンに挨拶しに行った結果ww #Shorts #ゴールデンレトリバー #まさかの展開Shorts ショーツ見る日 55,700 366,332 275.02 6.6x NEW -" [ref=e2114]': + - cell [ref=e2115]: + - img [ref=e2117] [cursor=pointer] + - 'cell "セミがゴールデンに挨拶しに行った結果ww #Shorts #ゴールデンレトリバー #まさかの展開Shorts" [ref=e2118]': + - generic [ref=e2119]: + - 'link "セミがゴールデンに挨拶しに行った結果ww #Shorts #ゴールデンレトリバー #まさかの展開" [ref=e2120] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=wkr0h6JmHn8 + - text: Shorts + - cell "ショーツ見る日" [ref=e2121]: + - link "ショーツ見る日" [ref=e2122] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2123] + - cell "366,332" [ref=e2124] + - cell "275.02" [ref=e2125] + - cell "6.6x" [ref=e2126] + - cell "NEW" [ref=e2127]: + - combobox [ref=e2128]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2129]: + - combobox [ref=e2130]: + - option "-" [selected] + - cell [ref=e2131]: + - generic [ref=e2132]: + - button "북마크" [ref=e2133] [cursor=pointer]: + - img [ref=e2134] + - button "삭제" [ref=e2136] [cursor=pointer]: + - img [ref=e2137] + - row "アフリカの道ど真ん中で繰り広げられた空気読み対決Shorts ショーツ見る日 55,700 362,511 152 6.5x NEW -" [ref=e2140]: + - cell [ref=e2141]: + - img [ref=e2143] [cursor=pointer] + - cell "アフリカの道ど真ん中で繰り広げられた空気読み対決Shorts" [ref=e2144]: + - generic [ref=e2145]: + - link "アフリカの道ど真ん中で繰り広げられた空気読み対決" [ref=e2146] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=dwCj8nMqQhU + - text: Shorts + - cell "ショーツ見る日" [ref=e2147]: + - link "ショーツ見る日" [ref=e2148] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2149] + - cell "362,511" [ref=e2150] + - cell "152" [ref=e2151] + - cell "6.5x" [ref=e2152] + - cell "NEW" [ref=e2153]: + - combobox [ref=e2154]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2155]: + - combobox [ref=e2156]: + - option "-" [selected] + - cell [ref=e2157]: + - generic [ref=e2158]: + - button "북마크" [ref=e2159] [cursor=pointer]: + - img [ref=e2160] + - button "삭제" [ref=e2162] [cursor=pointer]: + - img [ref=e2163] + - row "着替えて戻ったらパパになってた夫wShorts ショーツ見る日 55,700 362,087 194.78 6.5x NEW -" [ref=e2166]: + - cell [ref=e2167]: + - img [ref=e2169] [cursor=pointer] + - cell "着替えて戻ったらパパになってた夫wShorts" [ref=e2170]: + - generic [ref=e2171]: + - link "着替えて戻ったらパパになってた夫w" [ref=e2172] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=qzwzmz0gKhk + - text: Shorts + - cell "ショーツ見る日" [ref=e2173]: + - link "ショーツ見る日" [ref=e2174] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2175] + - cell "362,087" [ref=e2176] + - cell "194.78" [ref=e2177] + - cell "6.5x" [ref=e2178] + - cell "NEW" [ref=e2179]: + - combobox [ref=e2180]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2181]: + - combobox [ref=e2182]: + - option "-" [selected] + - cell [ref=e2183]: + - generic [ref=e2184]: + - button "북마크" [ref=e2185] [cursor=pointer]: + - img [ref=e2186] + - button "삭제" [ref=e2188] [cursor=pointer]: + - img [ref=e2189] + - row "アフガニスタンでインタビュー中に突然飛び出したハリー王子Shorts ショーツ見る日 55,700 361,443 153.22 6.5x NEW -" [ref=e2192]: + - cell [ref=e2193]: + - img [ref=e2195] [cursor=pointer] + - cell "アフガニスタンでインタビュー中に突然飛び出したハリー王子Shorts" [ref=e2196]: + - generic [ref=e2197]: + - link "アフガニスタンでインタビュー中に突然飛び出したハリー王子" [ref=e2198] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=nj0uEX7MJU8 + - text: Shorts + - cell "ショーツ見る日" [ref=e2199]: + - link "ショーツ見る日" [ref=e2200] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2201] + - cell "361,443" [ref=e2202] + - cell "153.22" [ref=e2203] + - cell "6.5x" [ref=e2204] + - cell "NEW" [ref=e2205]: + - combobox [ref=e2206]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2207]: + - combobox [ref=e2208]: + - option "-" [selected] + - cell [ref=e2209]: + - generic [ref=e2210]: + - button "북마크" [ref=e2211] [cursor=pointer]: + - img [ref=e2212] + - button "삭제" [ref=e2214] [cursor=pointer]: + - img [ref=e2215] + - row "マイケルジャクソンの人生を変えた広告事故Shorts ショーツ見る日 55,700 322,858 120.92 5.8x NEW -" [ref=e2218]: + - cell [ref=e2219]: + - img [ref=e2221] [cursor=pointer] + - cell "マイケルジャクソンの人生を変えた広告事故Shorts" [ref=e2222]: + - generic [ref=e2223]: + - link "マイケルジャクソンの人生を変えた広告事故" [ref=e2224] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=b6bwTnjwhzg + - text: Shorts + - cell "ショーツ見る日" [ref=e2225]: + - link "ショーツ見る日" [ref=e2226] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2227] + - cell "322,858" [ref=e2228] + - cell "120.92" [ref=e2229] + - cell "5.8x" [ref=e2230] + - cell "NEW" [ref=e2231]: + - combobox [ref=e2232]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2233]: + - combobox [ref=e2234]: + - option "-" [selected] + - cell [ref=e2235]: + - generic [ref=e2236]: + - button "북마크" [ref=e2237] [cursor=pointer]: + - img [ref=e2238] + - button "삭제" [ref=e2240] [cursor=pointer]: + - img [ref=e2241] + - row "自撮りしてたらヘリが近づいてきた理由Shorts ショーツ見る日 55,700 312,564 154.58 5.6x NEW -" [ref=e2244]: + - cell [ref=e2245]: + - img [ref=e2247] [cursor=pointer] + - cell "自撮りしてたらヘリが近づいてきた理由Shorts" [ref=e2248]: + - generic [ref=e2249]: + - link "自撮りしてたらヘリが近づいてきた理由" [ref=e2250] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=b1XdvOlhWAs + - text: Shorts + - cell "ショーツ見る日" [ref=e2251]: + - link "ショーツ見る日" [ref=e2252] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2253] + - cell "312,564" [ref=e2254] + - cell "154.58" [ref=e2255] + - cell "5.6x" [ref=e2256] + - cell "NEW" [ref=e2257]: + - combobox [ref=e2258]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2259]: + - combobox [ref=e2260]: + - option "-" [selected] + - cell [ref=e2261]: + - generic [ref=e2262]: + - button "북마크" [ref=e2263] [cursor=pointer]: + - img [ref=e2264] + - button "삭제" [ref=e2266] [cursor=pointer]: + - img [ref=e2267] + - 'row "壁に穴を開けた犯人を母が特定ww(衝撃の結末) #Shorts #あるあるShorts ショーツ見る日 55,700 309,212 285.25 5.5x NEW -" [ref=e2270]': + - cell [ref=e2271]: + - img [ref=e2273] [cursor=pointer] + - 'cell "壁に穴を開けた犯人を母が特定ww(衝撃の結末) #Shorts #あるあるShorts" [ref=e2274]': + - generic [ref=e2275]: + - 'link "壁に穴を開けた犯人を母が特定ww(衝撃の結末) #Shorts #あるある" [ref=e2276] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=S_cJXSncDjs + - text: Shorts + - cell "ショーツ見る日" [ref=e2277]: + - link "ショーツ見る日" [ref=e2278] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2279] + - cell "309,212" [ref=e2280] + - cell "285.25" [ref=e2281] + - cell "5.5x" [ref=e2282] + - cell "NEW" [ref=e2283]: + - combobox [ref=e2284]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2285]: + - combobox [ref=e2286]: + - option "-" [selected] + - cell [ref=e2287]: + - generic [ref=e2288]: + - button "북마크" [ref=e2289] [cursor=pointer]: + - img [ref=e2290] + - button "삭제" [ref=e2292] [cursor=pointer]: + - img [ref=e2293] + - row "この川の正体がヤバすぎるShorts ショーツ見る日 55,700 307,400 177.28 5.5x NEW -" [ref=e2296]: + - cell [ref=e2297]: + - img [ref=e2299] [cursor=pointer] + - cell "この川の正体がヤバすぎるShorts" [ref=e2300]: + - generic [ref=e2301]: + - link "この川の正体がヤバすぎる" [ref=e2302] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=5v9DlZmTFDw + - text: Shorts + - cell "ショーツ見る日" [ref=e2303]: + - link "ショーツ見る日" [ref=e2304] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2305] + - cell "307,400" [ref=e2306] + - cell "177.28" [ref=e2307] + - cell "5.5x" [ref=e2308] + - cell "NEW" [ref=e2309]: + - combobox [ref=e2310]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2311]: + - combobox [ref=e2312]: + - option "-" [selected] + - cell [ref=e2313]: + - generic [ref=e2314]: + - button "북마크" [ref=e2315] [cursor=pointer]: + - img [ref=e2316] + - button "삭제" [ref=e2318] [cursor=pointer]: + - img [ref=e2319] + - row "MotoGP史上最高にクールなカメラワークShorts ショーツ見る日 55,700 301,865 125.1 5.4x NEW -" [ref=e2322]: + - cell [ref=e2323]: + - img [ref=e2325] [cursor=pointer] + - cell "MotoGP史上最高にクールなカメラワークShorts" [ref=e2326]: + - generic [ref=e2327]: + - link "MotoGP史上最高にクールなカメラワーク" [ref=e2328] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=CPa4Ad-BHeA + - text: Shorts + - cell "ショーツ見る日" [ref=e2329]: + - link "ショーツ見る日" [ref=e2330] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2331] + - cell "301,865" [ref=e2332] + - cell "125.1" [ref=e2333] + - cell "5.4x" [ref=e2334] + - cell "NEW" [ref=e2335]: + - combobox [ref=e2336]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2337]: + - combobox [ref=e2338]: + - option "-" [selected] + - cell [ref=e2339]: + - generic [ref=e2340]: + - button "북마크" [ref=e2341] [cursor=pointer]: + - img [ref=e2342] + - button "삭제" [ref=e2344] [cursor=pointer]: + - img [ref=e2345] + - row "どう見ても地獄の番犬なんだけどwwShorts ショーツ見る日 55,700 262,344 145.02 4.7x NEW -" [ref=e2348]: + - cell [ref=e2349]: + - img [ref=e2351] [cursor=pointer] + - cell "どう見ても地獄の番犬なんだけどwwShorts" [ref=e2352]: + - generic [ref=e2353]: + - link "どう見ても地獄の番犬なんだけどww" [ref=e2354] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=mg7pW7gIm5c + - text: Shorts + - cell "ショーツ見る日" [ref=e2355]: + - link "ショーツ見る日" [ref=e2356] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2357] + - cell "262,344" [ref=e2358] + - cell "145.02" [ref=e2359] + - cell "4.7x" [ref=e2360] + - cell "NEW" [ref=e2361]: + - combobox [ref=e2362]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2363]: + - combobox [ref=e2364]: + - option "-" [selected] + - cell [ref=e2365]: + - generic [ref=e2366]: + - button "북마크" [ref=e2367] [cursor=pointer]: + - img [ref=e2368] + - button "삭제" [ref=e2370] [cursor=pointer]: + - img [ref=e2371] + - row "男の無関心っぽい魅力にドキドキする理由Shorts ショーツ見る日 55,700 258,635 109.31 4.6x NEW -" [ref=e2374]: + - cell [ref=e2375]: + - img [ref=e2377] [cursor=pointer] + - cell "男の無関心っぽい魅力にドキドキする理由Shorts" [ref=e2378]: + - generic [ref=e2379]: + - link "男の無関心っぽい魅力にドキドキする理由" [ref=e2380] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=AxWAkc_CXvY + - text: Shorts + - cell "ショーツ見る日" [ref=e2381]: + - link "ショーツ見る日" [ref=e2382] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2383] + - cell "258,635" [ref=e2384] + - cell "109.31" [ref=e2385] + - cell "4.6x" [ref=e2386] + - cell "NEW" [ref=e2387]: + - combobox [ref=e2388]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2389]: + - combobox [ref=e2390]: + - option "-" [selected] + - cell [ref=e2391]: + - generic [ref=e2392]: + - button "북마크" [ref=e2393] [cursor=pointer]: + - img [ref=e2394] + - button "삭제" [ref=e2396] [cursor=pointer]: + - img [ref=e2397] + - row "家出しようとしたワンコが飼い主にバレた瞬間🐾Shorts ショーツ見る日 55,700 248,252 88.95 4.5x NEW -" [ref=e2400]: + - cell [ref=e2401]: + - img [ref=e2403] [cursor=pointer] + - cell "家出しようとしたワンコが飼い主にバレた瞬間🐾Shorts" [ref=e2404]: + - generic [ref=e2405]: + - link "家出しようとしたワンコが飼い主にバレた瞬間🐾" [ref=e2406] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=qN8WRrZWxCY + - text: Shorts + - cell "ショーツ見る日" [ref=e2407]: + - link "ショーツ見る日" [ref=e2408] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2409] + - cell "248,252" [ref=e2410] + - cell "88.95" [ref=e2411] + - cell "4.5x" [ref=e2412] + - cell "NEW" [ref=e2413]: + - combobox [ref=e2414]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2415]: + - combobox [ref=e2416]: + - option "-" [selected] + - cell [ref=e2417]: + - generic [ref=e2418]: + - button "북마크" [ref=e2419] [cursor=pointer]: + - img [ref=e2420] + - button "삭제" [ref=e2422] [cursor=pointer]: + - img [ref=e2423] + - row "チア中に自分だけ曲変更に気づかなかったら何が起きたかShorts ショーツ見る日 55,700 221,810 98.98 4.0x NEW -" [ref=e2426]: + - cell [ref=e2427]: + - img [ref=e2429] [cursor=pointer] + - cell "チア中に自分だけ曲変更に気づかなかったら何が起きたかShorts" [ref=e2430]: + - generic [ref=e2431]: + - link "チア中に自分だけ曲変更に気づかなかったら何が起きたか" [ref=e2432] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bYs8DDTCP1s + - text: Shorts + - cell "ショーツ見る日" [ref=e2433]: + - link "ショーツ見る日" [ref=e2434] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2435] + - cell "221,810" [ref=e2436] + - cell "98.98" [ref=e2437] + - cell "4.0x" [ref=e2438] + - cell "NEW" [ref=e2439]: + - combobox [ref=e2440]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2441]: + - combobox [ref=e2442]: + - option "-" [selected] + - cell [ref=e2443]: + - generic [ref=e2444]: + - button "북마크" [ref=e2445] [cursor=pointer]: + - img [ref=e2446] + - button "삭제" [ref=e2448] [cursor=pointer]: + - img [ref=e2449] + - row "5秒後にラブラドールがやらかした大惨事wwShorts ショーツ見る日 55,700 210,052 356.62 3.8x NEW -" [ref=e2452]: + - cell [ref=e2453]: + - img [ref=e2455] [cursor=pointer] + - cell "5秒後にラブラドールがやらかした大惨事wwShorts" [ref=e2456]: + - generic [ref=e2457]: + - link "5秒後にラブラドールがやらかした大惨事ww" [ref=e2458] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=3rRBozACmYw + - text: Shorts + - cell "ショーツ見る日" [ref=e2459]: + - link "ショーツ見る日" [ref=e2460] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2461] + - cell "210,052" [ref=e2462] + - cell "356.62" [ref=e2463] + - cell "3.8x" [ref=e2464] + - cell "NEW" [ref=e2465]: + - combobox [ref=e2466]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2467]: + - combobox [ref=e2468]: + - option "-" [selected] + - cell [ref=e2469]: + - generic [ref=e2470]: + - button "북마크" [ref=e2471] [cursor=pointer]: + - img [ref=e2472] + - button "삭제" [ref=e2474] [cursor=pointer]: + - img [ref=e2475] + - 'row "過保護な兄が3人いるとこうなるwww #Shorts #あるある #兄妹 #ドッキリShorts ショーツ見る日 55,700 186,558 383.08 3.4x NEW -" [ref=e2478]': + - cell [ref=e2479]: + - img [ref=e2481] [cursor=pointer] + - 'cell "過保護な兄が3人いるとこうなるwww #Shorts #あるある #兄妹 #ドッキリShorts" [ref=e2482]': + - generic [ref=e2483]: + - 'link "過保護な兄が3人いるとこうなるwww #Shorts #あるある #兄妹 #ドッキリ" [ref=e2484] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=nE2CKor3sok + - text: Shorts + - cell "ショーツ見る日" [ref=e2485]: + - link "ショーツ見る日" [ref=e2486] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2487] + - cell "186,558" [ref=e2488] + - cell "383.08" [ref=e2489] + - cell "3.4x" [ref=e2490] + - cell "NEW" [ref=e2491]: + - combobox [ref=e2492]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2493]: + - combobox [ref=e2494]: + - option "-" [selected] + - cell [ref=e2495]: + - generic [ref=e2496]: + - button "북마크" [ref=e2497] [cursor=pointer]: + - img [ref=e2498] + - button "삭제" [ref=e2500] [cursor=pointer]: + - img [ref=e2501] + - row "1年近く誰にも選ばれなかった保護猫の「恩返し」が凄すぎたShorts ショーツ見る日 55,700 175,115 167.57 3.1x NEW -" [ref=e2504]: + - cell [ref=e2505]: + - img [ref=e2507] [cursor=pointer] + - cell "1年近く誰にも選ばれなかった保護猫の「恩返し」が凄すぎたShorts" [ref=e2508]: + - generic [ref=e2509]: + - link "1年近く誰にも選ばれなかった保護猫の「恩返し」が凄すぎた" [ref=e2510] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=UTOxlbHdCA0 + - text: Shorts + - cell "ショーツ見る日" [ref=e2511]: + - link "ショーツ見る日" [ref=e2512] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2513] + - cell "175,115" [ref=e2514] + - cell "167.57" [ref=e2515] + - cell "3.1x" [ref=e2516] + - cell "NEW" [ref=e2517]: + - combobox [ref=e2518]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2519]: + - combobox [ref=e2520]: + - option "-" [selected] + - cell [ref=e2521]: + - generic [ref=e2522]: + - button "북마크" [ref=e2523] [cursor=pointer]: + - img [ref=e2524] + - button "삭제" [ref=e2526] [cursor=pointer]: + - img [ref=e2527] + - row "ナスカー史上最高の広告になった事故wwShorts ショーツ見る日 55,700 172,130 229.2 3.1x NEW -" [ref=e2530]: + - cell [ref=e2531]: + - img [ref=e2533] [cursor=pointer] + - cell "ナスカー史上最高の広告になった事故wwShorts" [ref=e2534]: + - generic [ref=e2535]: + - link "ナスカー史上最高の広告になった事故ww" [ref=e2536] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=F2SsWbceSTk + - text: Shorts + - cell "ショーツ見る日" [ref=e2537]: + - link "ショーツ見る日" [ref=e2538] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2539] + - cell "172,130" [ref=e2540] + - cell "229.2" [ref=e2541] + - cell "3.1x" [ref=e2542] + - cell "NEW" [ref=e2543]: + - combobox [ref=e2544]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2545]: + - combobox [ref=e2546]: + - option "-" [selected] + - cell [ref=e2547]: + - generic [ref=e2548]: + - button "북마크" [ref=e2549] [cursor=pointer]: + - img [ref=e2550] + - button "삭제" [ref=e2552] [cursor=pointer]: + - img [ref=e2553] + - row "絶対1人は惚れ直してるwwwwShorts ショーツ見る日 55,700 171,438 373.5 3.1x NEW -" [ref=e2556]: + - cell [ref=e2557]: + - img [ref=e2559] [cursor=pointer] + - cell "絶対1人は惚れ直してるwwwwShorts" [ref=e2560]: + - generic [ref=e2561]: + - link "絶対1人は惚れ直してるwwww" [ref=e2562] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ZXlyk9iD9hU + - text: Shorts + - cell "ショーツ見る日" [ref=e2563]: + - link "ショーツ見る日" [ref=e2564] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2565] + - cell "171,438" [ref=e2566] + - cell "373.5" [ref=e2567] + - cell "3.1x" [ref=e2568] + - cell "NEW" [ref=e2569]: + - combobox [ref=e2570]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2571]: + - combobox [ref=e2572]: + - option "-" [selected] + - cell [ref=e2573]: + - generic [ref=e2574]: + - button "북마크" [ref=e2575] [cursor=pointer]: + - img [ref=e2576] + - button "삭제" [ref=e2578] [cursor=pointer]: + - img [ref=e2579] + - row "もう一人じゃない猫と出会って変わった日常Shorts ショーツ見る日 55,700 168,940 165.3 3.0x NEW -" [ref=e2582]: + - cell [ref=e2583]: + - img [ref=e2585] [cursor=pointer] + - cell "もう一人じゃない猫と出会って変わった日常Shorts" [ref=e2586]: + - generic [ref=e2587]: + - link "もう一人じゃない猫と出会って変わった日常" [ref=e2588] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=9s8BrjFu6C4 + - text: Shorts + - cell "ショーツ見る日" [ref=e2589]: + - link "ショーツ見る日" [ref=e2590] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2591] + - cell "168,940" [ref=e2592] + - cell "165.3" [ref=e2593] + - cell "3.0x" [ref=e2594] + - cell "NEW" [ref=e2595]: + - combobox [ref=e2596]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2597]: + - combobox [ref=e2598]: + - option "-" [selected] + - cell [ref=e2599]: + - generic [ref=e2600]: + - button "북마크" [ref=e2601] [cursor=pointer]: + - img [ref=e2602] + - button "삭제" [ref=e2604] [cursor=pointer]: + - img [ref=e2605] + - row "野生動物観察に必要な安全距離Shorts ショーツ見る日 55,700 161,331 71.13 2.9x NEW -" [ref=e2608]: + - cell [ref=e2609]: + - img [ref=e2611] [cursor=pointer] + - cell "野生動物観察に必要な安全距離Shorts" [ref=e2612]: + - generic [ref=e2613]: + - link "野生動物観察に必要な安全距離" [ref=e2614] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=22tOqP9QYYE + - text: Shorts + - cell "ショーツ見る日" [ref=e2615]: + - link "ショーツ見る日" [ref=e2616] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2617] + - cell "161,331" [ref=e2618] + - cell "71.13" [ref=e2619] + - cell "2.9x" [ref=e2620] + - cell "NEW" [ref=e2621]: + - combobox [ref=e2622]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2623]: + - combobox [ref=e2624]: + - option "-" [selected] + - cell [ref=e2625]: + - generic [ref=e2626]: + - button "북마크" [ref=e2627] [cursor=pointer]: + - img [ref=e2628] + - button "삭제" [ref=e2630] [cursor=pointer]: + - img [ref=e2631] + - row "飼い主よりぐっすり寝てる馬が可愛すぎる🐴Shorts ショーツ見る日 55,700 158,118 76.24 2.8x NEW -" [ref=e2634]: + - cell [ref=e2635]: + - img [ref=e2637] [cursor=pointer] + - cell "飼い主よりぐっすり寝てる馬が可愛すぎる🐴Shorts" [ref=e2638]: + - generic [ref=e2639]: + - link "飼い主よりぐっすり寝てる馬が可愛すぎる🐴" [ref=e2640] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=5l2EAvCacaQ + - text: Shorts + - cell "ショーツ見る日" [ref=e2641]: + - link "ショーツ見る日" [ref=e2642] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2643] + - cell "158,118" [ref=e2644] + - cell "76.24" [ref=e2645] + - cell "2.8x" [ref=e2646] + - cell "NEW" [ref=e2647]: + - combobox [ref=e2648]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2649]: + - combobox [ref=e2650]: + - option "-" [selected] + - cell [ref=e2651]: + - generic [ref=e2652]: + - button "북마크" [ref=e2653] [cursor=pointer]: + - img [ref=e2654] + - button "삭제" [ref=e2656] [cursor=pointer]: + - img [ref=e2657] + - row "下りただけなのに世界1位Shorts ショーツ見る日 55,700 157,394 55.85 2.8x NEW -" [ref=e2660]: + - cell [ref=e2661]: + - img [ref=e2663] [cursor=pointer] + - cell "下りただけなのに世界1位Shorts" [ref=e2664]: + - generic [ref=e2665]: + - link "下りただけなのに世界1位" [ref=e2666] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=3INjgZaV564 + - text: Shorts + - cell "ショーツ見る日" [ref=e2667]: + - link "ショーツ見る日" [ref=e2668] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2669] + - cell "157,394" [ref=e2670] + - cell "55.85" [ref=e2671] + - cell "2.8x" [ref=e2672] + - cell "NEW" [ref=e2673]: + - combobox [ref=e2674]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2675]: + - combobox [ref=e2676]: + - option "-" [selected] + - cell [ref=e2677]: + - generic [ref=e2678]: + - button "북마크" [ref=e2679] [cursor=pointer]: + - img [ref=e2680] + - button "삭제" [ref=e2682] [cursor=pointer]: + - img [ref=e2683] + - 'row "私たちが忘れかけていた世界の大きさ #癒し動画 #1人称観察カメラ #30秒動画 #ショートShorts ショーツ見る日 55,700 154,430 253.58 2.8x NEW -" [ref=e2686]': + - cell [ref=e2687]: + - img [ref=e2689] [cursor=pointer] + - 'cell "私たちが忘れかけていた世界の大きさ #癒し動画 #1人称観察カメラ #30秒動画 #ショートShorts" [ref=e2690]': + - generic [ref=e2691]: + - 'link "私たちが忘れかけていた世界の大きさ #癒し動画 #1人称観察カメラ #30秒動画 #ショート" [ref=e2692] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=YKADYzr-HUc + - text: Shorts + - cell "ショーツ見る日" [ref=e2693]: + - link "ショーツ見る日" [ref=e2694] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2695] + - cell "154,430" [ref=e2696] + - cell "253.58" [ref=e2697] + - cell "2.8x" [ref=e2698] + - cell "NEW" [ref=e2699]: + - combobox [ref=e2700]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2701]: + - combobox [ref=e2702]: + - option "-" [selected] + - cell [ref=e2703]: + - generic [ref=e2704]: + - button "북마크" [ref=e2705] [cursor=pointer]: + - img [ref=e2706] + - button "삭제" [ref=e2708] [cursor=pointer]: + - img [ref=e2709] + - row "彼がポケットから手を出せなかった理由Shorts ショーツ見る日 55,700 151,264 78.58 2.7x NEW -" [ref=e2712]: + - cell [ref=e2713]: + - img [ref=e2715] [cursor=pointer] + - cell "彼がポケットから手を出せなかった理由Shorts" [ref=e2716]: + - generic [ref=e2717]: + - link "彼がポケットから手を出せなかった理由" [ref=e2718] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=KTAxUoibVTo + - text: Shorts + - cell "ショーツ見る日" [ref=e2719]: + - link "ショーツ見る日" [ref=e2720] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2721] + - cell "151,264" [ref=e2722] + - cell "78.58" [ref=e2723] + - cell "2.7x" [ref=e2724] + - cell "NEW" [ref=e2725]: + - combobox [ref=e2726]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2727]: + - combobox [ref=e2728]: + - option "-" [selected] + - cell [ref=e2729]: + - generic [ref=e2730]: + - button "북마크" [ref=e2731] [cursor=pointer]: + - img [ref=e2732] + - button "삭제" [ref=e2734] [cursor=pointer]: + - img [ref=e2735] + - row "テニスの王子様の実写版かよwwShorts ショーツ見る日 55,700 150,955 64.7 2.7x NEW -" [ref=e2738]: + - cell [ref=e2739]: + - img [ref=e2741] [cursor=pointer] + - cell "テニスの王子様の実写版かよwwShorts" [ref=e2742]: + - generic [ref=e2743]: + - link "テニスの王子様の実写版かよww" [ref=e2744] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=jdkEXzHOCIE + - text: Shorts + - cell "ショーツ見る日" [ref=e2745]: + - link "ショーツ見る日" [ref=e2746] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2747] + - cell "150,955" [ref=e2748] + - cell "64.7" [ref=e2749] + - cell "2.7x" [ref=e2750] + - cell "NEW" [ref=e2751]: + - combobox [ref=e2752]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2753]: + - combobox [ref=e2754]: + - option "-" [selected] + - cell [ref=e2755]: + - generic [ref=e2756]: + - button "북마크" [ref=e2757] [cursor=pointer]: + - img [ref=e2758] + - button "삭제" [ref=e2760] [cursor=pointer]: + - img [ref=e2761] + - row "階段の一段だけペンキを塗れなかった理由😭Shorts ショーツ見る日 55,700 145,982 67.37 2.6x NEW -" [ref=e2764]: + - cell [ref=e2765]: + - img [ref=e2767] [cursor=pointer] + - cell "階段の一段だけペンキを塗れなかった理由😭Shorts" [ref=e2768]: + - generic [ref=e2769]: + - link "階段の一段だけペンキを塗れなかった理由😭" [ref=e2770] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=1wCTpCAnT-8 + - text: Shorts + - cell "ショーツ見る日" [ref=e2771]: + - link "ショーツ見る日" [ref=e2772] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2773] + - cell "145,982" [ref=e2774] + - cell "67.37" [ref=e2775] + - cell "2.6x" [ref=e2776] + - cell "NEW" [ref=e2777]: + - combobox [ref=e2778]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2779]: + - combobox [ref=e2780]: + - option "-" [selected] + - cell [ref=e2781]: + - generic [ref=e2782]: + - button "북마크" [ref=e2783] [cursor=pointer]: + - img [ref=e2784] + - button "삭제" [ref=e2786] [cursor=pointer]: + - img [ref=e2787] + - row "気づいた?銃のプロが見ればわかる伝説の神演出Shorts ショーツ見る日 55,700 143,213 118.95 2.6x NEW -" [ref=e2790]: + - cell [ref=e2791]: + - img [ref=e2793] [cursor=pointer] + - cell "気づいた?銃のプロが見ればわかる伝説の神演出Shorts" [ref=e2794]: + - generic [ref=e2795]: + - link "気づいた?銃のプロが見ればわかる伝説の神演出" [ref=e2796] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=POi80_KBMUU + - text: Shorts + - cell "ショーツ見る日" [ref=e2797]: + - link "ショーツ見る日" [ref=e2798] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2799] + - cell "143,213" [ref=e2800] + - cell "118.95" [ref=e2801] + - cell "2.6x" [ref=e2802] + - cell "NEW" [ref=e2803]: + - combobox [ref=e2804]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2805]: + - combobox [ref=e2806]: + - option "-" [selected] + - cell [ref=e2807]: + - generic [ref=e2808]: + - button "북마크" [ref=e2809] [cursor=pointer]: + - img [ref=e2810] + - button "삭제" [ref=e2812] [cursor=pointer]: + - img [ref=e2813] + - row "命の恩人をずっと覚えていた猫Shorts ショーツ見る日 55,700 136,765 91.18 2.5x NEW -" [ref=e2816]: + - cell [ref=e2817]: + - img [ref=e2819] [cursor=pointer] + - cell "命の恩人をずっと覚えていた猫Shorts" [ref=e2820]: + - generic [ref=e2821]: + - link "命の恩人をずっと覚えていた猫" [ref=e2822] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=wd0KQD8p_0I + - text: Shorts + - cell "ショーツ見る日" [ref=e2823]: + - link "ショーツ見る日" [ref=e2824] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2825] + - cell "136,765" [ref=e2826] + - cell "91.18" [ref=e2827] + - cell "2.5x" [ref=e2828] + - cell "NEW" [ref=e2829]: + - combobox [ref=e2830]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2831]: + - combobox [ref=e2832]: + - option "-" [selected] + - cell [ref=e2833]: + - generic [ref=e2834]: + - button "북마크" [ref=e2835] [cursor=pointer]: + - img [ref=e2836] + - button "삭제" [ref=e2838] [cursor=pointer]: + - img [ref=e2839] + - row "訓練大惨事wwwwShorts ショーツ見る日 55,700 134,426 135.1 2.4x NEW -" [ref=e2842]: + - cell [ref=e2843]: + - img [ref=e2845] [cursor=pointer] + - cell "訓練大惨事wwwwShorts" [ref=e2846]: + - generic [ref=e2847]: + - link "訓練大惨事wwww" [ref=e2848] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=V-yN1lTNNPA + - text: Shorts + - cell "ショーツ見る日" [ref=e2849]: + - link "ショーツ見る日" [ref=e2850] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2851] + - cell "134,426" [ref=e2852] + - cell "135.1" [ref=e2853] + - cell "2.4x" [ref=e2854] + - cell "NEW" [ref=e2855]: + - combobox [ref=e2856]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2857]: + - combobox [ref=e2858]: + - option "-" [selected] + - cell [ref=e2859]: + - generic [ref=e2860]: + - button "북마크" [ref=e2861] [cursor=pointer]: + - img [ref=e2862] + - button "삭제" [ref=e2864] [cursor=pointer]: + - img [ref=e2865] + - row "アザラシの毛を逆なでしてみた結果wwwwShorts ショーツ見る日 55,700 132,042 116.34 2.4x NEW -" [ref=e2868]: + - cell [ref=e2869]: + - img [ref=e2871] [cursor=pointer] + - cell "アザラシの毛を逆なでしてみた結果wwwwShorts" [ref=e2872]: + - generic [ref=e2873]: + - link "アザラシの毛を逆なでしてみた結果wwww" [ref=e2874] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=xvsoN6eDH-Q + - text: Shorts + - cell "ショーツ見る日" [ref=e2875]: + - link "ショーツ見る日" [ref=e2876] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2877] + - cell "132,042" [ref=e2878] + - cell "116.34" [ref=e2879] + - cell "2.4x" [ref=e2880] + - cell "NEW" [ref=e2881]: + - combobox [ref=e2882]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2883]: + - combobox [ref=e2884]: + - option "-" [selected] + - cell [ref=e2885]: + - generic [ref=e2886]: + - button "북마크" [ref=e2887] [cursor=pointer]: + - img [ref=e2888] + - button "삭제" [ref=e2890] [cursor=pointer]: + - img [ref=e2891] + - row "パパが立つまで1匹だけかと思ったwShorts ショーツ見る日 55,700 127,691 62.78 2.3x NEW -" [ref=e2894]: + - cell [ref=e2895]: + - img [ref=e2897] [cursor=pointer] + - cell "パパが立つまで1匹だけかと思ったwShorts" [ref=e2898]: + - generic [ref=e2899]: + - link "パパが立つまで1匹だけかと思ったw" [ref=e2900] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rDhUmeIyFhw + - text: Shorts + - cell "ショーツ見る日" [ref=e2901]: + - link "ショーツ見る日" [ref=e2902] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2903] + - cell "127,691" [ref=e2904] + - cell "62.78" [ref=e2905] + - cell "2.3x" [ref=e2906] + - cell "NEW" [ref=e2907]: + - combobox [ref=e2908]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2909]: + - combobox [ref=e2910]: + - option "-" [selected] + - cell [ref=e2911]: + - generic [ref=e2912]: + - button "북마크" [ref=e2913] [cursor=pointer]: + - img [ref=e2914] + - button "삭제" [ref=e2916] [cursor=pointer]: + - img [ref=e2917] + - row "目も合わせない相手選手に見せた行動Shorts ショーツ見る日 55,700 123,861 136.71 2.2x NEW -" [ref=e2920]: + - cell [ref=e2921]: + - img [ref=e2923] [cursor=pointer] + - cell "目も合わせない相手選手に見せた行動Shorts" [ref=e2924]: + - generic [ref=e2925]: + - link "目も合わせない相手選手に見せた行動" [ref=e2926] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ujVpn_VWL-4 + - text: Shorts + - cell "ショーツ見る日" [ref=e2927]: + - link "ショーツ見る日" [ref=e2928] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2929] + - cell "123,861" [ref=e2930] + - cell "136.71" [ref=e2931] + - cell "2.2x" [ref=e2932] + - cell "NEW" [ref=e2933]: + - combobox [ref=e2934]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2935]: + - combobox [ref=e2936]: + - option "-" [selected] + - cell [ref=e2937]: + - generic [ref=e2938]: + - button "북마크" [ref=e2939] [cursor=pointer]: + - img [ref=e2940] + - button "삭제" [ref=e2942] [cursor=pointer]: + - img [ref=e2943] + - row "友達といたら絶対楽しいやつwwShorts ショーツ見る日 55,700 123,279 129.77 2.2x NEW -" [ref=e2946]: + - cell [ref=e2947]: + - img [ref=e2949] [cursor=pointer] + - cell "友達といたら絶対楽しいやつwwShorts" [ref=e2950]: + - generic [ref=e2951]: + - link "友達といたら絶対楽しいやつww" [ref=e2952] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Jt_PmgVXE18 + - text: Shorts + - cell "ショーツ見る日" [ref=e2953]: + - link "ショーツ見る日" [ref=e2954] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2955] + - cell "123,279" [ref=e2956] + - cell "129.77" [ref=e2957] + - cell "2.2x" [ref=e2958] + - cell "NEW" [ref=e2959]: + - combobox [ref=e2960]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2961]: + - combobox [ref=e2962]: + - option "-" [selected] + - cell [ref=e2963]: + - generic [ref=e2964]: + - button "북마크" [ref=e2965] [cursor=pointer]: + - img [ref=e2966] + - button "삭제" [ref=e2968] [cursor=pointer]: + - img [ref=e2969] + - row "1分後に明かされた守備の理由Shorts ショーツ見る日 55,700 121,004 49.84 2.2x NEW -" [ref=e2972]: + - cell [ref=e2973]: + - img [ref=e2975] [cursor=pointer] + - cell "1分後に明かされた守備の理由Shorts" [ref=e2976]: + - generic [ref=e2977]: + - link "1分後に明かされた守備の理由" [ref=e2978] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=SbUAvzOJF2k + - text: Shorts + - cell "ショーツ見る日" [ref=e2979]: + - link "ショーツ見る日" [ref=e2980] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e2981] + - cell "121,004" [ref=e2982] + - cell "49.84" [ref=e2983] + - cell "2.2x" [ref=e2984] + - cell "NEW" [ref=e2985]: + - combobox [ref=e2986]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e2987]: + - combobox [ref=e2988]: + - option "-" [selected] + - cell [ref=e2989]: + - generic [ref=e2990]: + - button "북마크" [ref=e2991] [cursor=pointer]: + - img [ref=e2992] + - button "삭제" [ref=e2994] [cursor=pointer]: + - img [ref=e2995] + - 'row "フロリダでしか見られない光景🐊 #shorts #florida #動物Shorts ショーツ見る日 55,700 118,173 140.02 2.1x NEW -" [ref=e2998]': + - cell [ref=e2999]: + - img [ref=e3001] [cursor=pointer] + - 'cell "フロリダでしか見られない光景🐊 #shorts #florida #動物Shorts" [ref=e3002]': + - generic [ref=e3003]: + - 'link "フロリダでしか見られない光景🐊 #shorts #florida #動物" [ref=e3004] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=nQ_JjnQFnlg + - text: Shorts + - cell "ショーツ見る日" [ref=e3005]: + - link "ショーツ見る日" [ref=e3006] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3007] + - cell "118,173" [ref=e3008] + - cell "140.02" [ref=e3009] + - cell "2.1x" [ref=e3010] + - cell "NEW" [ref=e3011]: + - combobox [ref=e3012]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3013]: + - combobox [ref=e3014]: + - option "-" [selected] + - cell [ref=e3015]: + - generic [ref=e3016]: + - button "북마크" [ref=e3017] [cursor=pointer]: + - img [ref=e3018] + - button "삭제" [ref=e3020] [cursor=pointer]: + - img [ref=e3021] + - row "アニメの主人公が自分だと気づいた瞬間Shorts ショーツ見る日 55,700 117,298 72.14 2.1x NEW -" [ref=e3024]: + - cell [ref=e3025]: + - img [ref=e3027] [cursor=pointer] + - cell "アニメの主人公が自分だと気づいた瞬間Shorts" [ref=e3028]: + - generic [ref=e3029]: + - link "アニメの主人公が自分だと気づいた瞬間" [ref=e3030] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=INvzFKn68hg + - text: Shorts + - cell "ショーツ見る日" [ref=e3031]: + - link "ショーツ見る日" [ref=e3032] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3033] + - cell "117,298" [ref=e3034] + - cell "72.14" [ref=e3035] + - cell "2.1x" [ref=e3036] + - cell "NEW" [ref=e3037]: + - combobox [ref=e3038]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3039]: + - combobox [ref=e3040]: + - option "-" [selected] + - cell [ref=e3041]: + - generic [ref=e3042]: + - button "북마크" [ref=e3043] [cursor=pointer]: + - img [ref=e3044] + - button "삭제" [ref=e3046] [cursor=pointer]: + - img [ref=e3047] + - row "140kgのアメフト選手と激突…放送事故かと思いきやプロ根性が凄すぎた件Shorts ショーツ見る日 55,700 109,127 211.9 2.0x NEW -" [ref=e3050]: + - cell [ref=e3051]: + - img [ref=e3053] [cursor=pointer] + - cell "140kgのアメフト選手と激突…放送事故かと思いきやプロ根性が凄すぎた件Shorts" [ref=e3054]: + - generic [ref=e3055]: + - link "140kgのアメフト選手と激突…放送事故かと思いきやプロ根性が凄すぎた件" [ref=e3056] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=HZ6wTc4EfhY + - text: Shorts + - cell "ショーツ見る日" [ref=e3057]: + - link "ショーツ見る日" [ref=e3058] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3059] + - cell "109,127" [ref=e3060] + - cell "211.9" [ref=e3061] + - cell "2.0x" [ref=e3062] + - cell "NEW" [ref=e3063]: + - combobox [ref=e3064]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3065]: + - combobox [ref=e3066]: + - option "-" [selected] + - cell [ref=e3067]: + - generic [ref=e3068]: + - button "북마크" [ref=e3069] [cursor=pointer]: + - img [ref=e3070] + - button "삭제" [ref=e3072] [cursor=pointer]: + - img [ref=e3073] + - row "ゴルフ史上最もありえないハザードwwShorts ショーツ見る日 55,700 106,843 95.23 1.9x NEW -" [ref=e3076]: + - cell [ref=e3077]: + - img [ref=e3079] [cursor=pointer] + - cell "ゴルフ史上最もありえないハザードwwShorts" [ref=e3080]: + - generic [ref=e3081]: + - link "ゴルフ史上最もありえないハザードww" [ref=e3082] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Nk7CYuXsP7A + - text: Shorts + - cell "ショーツ見る日" [ref=e3083]: + - link "ショーツ見る日" [ref=e3084] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3085] + - cell "106,843" [ref=e3086] + - cell "95.23" [ref=e3087] + - cell "1.9x" [ref=e3088] + - cell "NEW" [ref=e3089]: + - combobox [ref=e3090]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3091]: + - combobox [ref=e3092]: + - option "-" [selected] + - cell [ref=e3093]: + - generic [ref=e3094]: + - button "북마크" [ref=e3095] [cursor=pointer]: + - img [ref=e3096] + - button "삭제" [ref=e3098] [cursor=pointer]: + - img [ref=e3099] + - row "この人たちロマンやばすぎだろ…Shorts ショーツ見る日 55,700 103,534 56.48 1.9x NEW -" [ref=e3102]: + - cell [ref=e3103]: + - img [ref=e3105] [cursor=pointer] + - cell "この人たちロマンやばすぎだろ…Shorts" [ref=e3106]: + - generic [ref=e3107]: + - link "この人たちロマンやばすぎだろ…" [ref=e3108] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=AOxBkvyt6Qc + - text: Shorts + - cell "ショーツ見る日" [ref=e3109]: + - link "ショーツ見る日" [ref=e3110] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3111] + - cell "103,534" [ref=e3112] + - cell "56.48" [ref=e3113] + - cell "1.9x" [ref=e3114] + - cell "NEW" [ref=e3115]: + - combobox [ref=e3116]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3117]: + - combobox [ref=e3118]: + - option "-" [selected] + - cell [ref=e3119]: + - generic [ref=e3120]: + - button "북마크" [ref=e3121] [cursor=pointer]: + - img [ref=e3122] + - button "삭제" [ref=e3124] [cursor=pointer]: + - img [ref=e3125] + - row "子犬にデカすぎる首輪をプレゼントしたら…Shorts ショーツ見る日 55,700 97,130 62.83 1.7x NEW -" [ref=e3128]: + - cell [ref=e3129]: + - img [ref=e3131] [cursor=pointer] + - cell "子犬にデカすぎる首輪をプレゼントしたら…Shorts" [ref=e3132]: + - generic [ref=e3133]: + - link "子犬にデカすぎる首輪をプレゼントしたら…" [ref=e3134] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=I9ooaN5eEUA + - text: Shorts + - cell "ショーツ見る日" [ref=e3135]: + - link "ショーツ見る日" [ref=e3136] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3137] + - cell "97,130" [ref=e3138] + - cell "62.83" [ref=e3139] + - cell "1.7x" [ref=e3140] + - cell "NEW" [ref=e3141]: + - combobox [ref=e3142]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3143]: + - combobox [ref=e3144]: + - option "-" [selected] + - cell [ref=e3145]: + - generic [ref=e3146]: + - button "북마크" [ref=e3147] [cursor=pointer]: + - img [ref=e3148] + - button "삭제" [ref=e3150] [cursor=pointer]: + - img [ref=e3151] + - row "40年間世界が知らなかったベビーシッターの二重生活Shorts ショーツ見る日 55,700 93,303 87.53 1.7x NEW -" [ref=e3154]: + - cell [ref=e3155]: + - img [ref=e3157] [cursor=pointer] + - cell "40年間世界が知らなかったベビーシッターの二重生活Shorts" [ref=e3158]: + - generic [ref=e3159]: + - link "40年間世界が知らなかったベビーシッターの二重生活" [ref=e3160] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=e2VZsfOTpAo + - text: Shorts + - cell "ショーツ見る日" [ref=e3161]: + - link "ショーツ見る日" [ref=e3162] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3163] + - cell "93,303" [ref=e3164] + - cell "87.53" [ref=e3165] + - cell "1.7x" [ref=e3166] + - cell "NEW" [ref=e3167]: + - combobox [ref=e3168]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3169]: + - combobox [ref=e3170]: + - option "-" [selected] + - cell [ref=e3171]: + - generic [ref=e3172]: + - button "북마크" [ref=e3173] [cursor=pointer]: + - img [ref=e3174] + - button "삭제" [ref=e3176] [cursor=pointer]: + - img [ref=e3177] + - row "レトリバーの飼い主が油断したらダメな理由wwwwShorts ショーツ見る日 55,700 90,898 72.49 1.6x NEW -" [ref=e3180]: + - cell [ref=e3181]: + - img [ref=e3183] [cursor=pointer] + - cell "レトリバーの飼い主が油断したらダメな理由wwwwShorts" [ref=e3184]: + - generic [ref=e3185]: + - link "レトリバーの飼い主が油断したらダメな理由wwww" [ref=e3186] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=DHXEepxlV2U + - text: Shorts + - cell "ショーツ見る日" [ref=e3187]: + - link "ショーツ見る日" [ref=e3188] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3189] + - cell "90,898" [ref=e3190] + - cell "72.49" [ref=e3191] + - cell "1.6x" [ref=e3192] + - cell "NEW" [ref=e3193]: + - combobox [ref=e3194]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3195]: + - combobox [ref=e3196]: + - option "-" [selected] + - cell [ref=e3197]: + - generic [ref=e3198]: + - button "북마크" [ref=e3199] [cursor=pointer]: + - img [ref=e3200] + - button "삭제" [ref=e3202] [cursor=pointer]: + - img [ref=e3203] + - row "大型犬10頭の暴走を止めたリーダーの非言語コントロール術Shorts ショーツ見る日 55,700 89,681 77.44 1.6x NEW -" [ref=e3206]: + - cell [ref=e3207]: + - img [ref=e3209] [cursor=pointer] + - cell "大型犬10頭の暴走を止めたリーダーの非言語コントロール術Shorts" [ref=e3210]: + - generic [ref=e3211]: + - link "大型犬10頭の暴走を止めたリーダーの非言語コントロール術" [ref=e3212] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=aB6Tyav4Tho + - text: Shorts + - cell "ショーツ見る日" [ref=e3213]: + - link "ショーツ見る日" [ref=e3214] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3215] + - cell "89,681" [ref=e3216] + - cell "77.44" [ref=e3217] + - cell "1.6x" [ref=e3218] + - cell "NEW" [ref=e3219]: + - combobox [ref=e3220]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3221]: + - combobox [ref=e3222]: + - option "-" [selected] + - cell [ref=e3223]: + - generic [ref=e3224]: + - button "북마크" [ref=e3225] [cursor=pointer]: + - img [ref=e3226] + - button "삭제" [ref=e3228] [cursor=pointer]: + - img [ref=e3229] + - row "野良猫のボスを見つけてしまった🐈‍⬛Shorts ショーツ見る日 55,700 89,441 43.21 1.6x NEW -" [ref=e3232]: + - cell [ref=e3233]: + - img [ref=e3235] [cursor=pointer] + - cell "野良猫のボスを見つけてしまった🐈‍⬛Shorts" [ref=e3236]: + - generic [ref=e3237]: + - link "野良猫のボスを見つけてしまった🐈‍⬛" [ref=e3238] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=VFnVm7buK-4 + - text: Shorts + - cell "ショーツ見る日" [ref=e3239]: + - link "ショーツ見る日" [ref=e3240] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3241] + - cell "89,441" [ref=e3242] + - cell "43.21" [ref=e3243] + - cell "1.6x" [ref=e3244] + - cell "NEW" [ref=e3245]: + - combobox [ref=e3246]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3247]: + - combobox [ref=e3248]: + - option "-" [selected] + - cell [ref=e3249]: + - generic [ref=e3250]: + - button "북마크" [ref=e3251] [cursor=pointer]: + - img [ref=e3252] + - button "삭제" [ref=e3254] [cursor=pointer]: + - img [ref=e3255] + - row "ヒストリーツアーEarth Song公演中に何が起きたのかShorts ショーツ見る日 55,700 88,892 36.4 1.6x NEW -" [ref=e3258]: + - cell [ref=e3259]: + - img [ref=e3261] [cursor=pointer] + - cell "ヒストリーツアーEarth Song公演中に何が起きたのかShorts" [ref=e3262]: + - generic [ref=e3263]: + - link "ヒストリーツアーEarth Song公演中に何が起きたのか" [ref=e3264] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=8Ei_TEnS2Q8 + - text: Shorts + - cell "ショーツ見る日" [ref=e3265]: + - link "ショーツ見る日" [ref=e3266] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3267] + - cell "88,892" [ref=e3268] + - cell "36.4" [ref=e3269] + - cell "1.6x" [ref=e3270] + - cell "NEW" [ref=e3271]: + - combobox [ref=e3272]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3273]: + - combobox [ref=e3274]: + - option "-" [selected] + - cell [ref=e3275]: + - generic [ref=e3276]: + - button "북마크" [ref=e3277] [cursor=pointer]: + - img [ref=e3278] + - button "삭제" [ref=e3280] [cursor=pointer]: + - img [ref=e3281] + - row "隣の部屋に音楽やってる人が住んでる時🎶Shorts ショーツ見る日 55,700 86,336 40.08 1.6x NEW -" [ref=e3284]: + - cell [ref=e3285]: + - img [ref=e3287] [cursor=pointer] + - cell "隣の部屋に音楽やってる人が住んでる時🎶Shorts" [ref=e3288]: + - generic [ref=e3289]: + - link "隣の部屋に音楽やってる人が住んでる時🎶" [ref=e3290] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rdWUEAiuaX4 + - text: Shorts + - cell "ショーツ見る日" [ref=e3291]: + - link "ショーツ見る日" [ref=e3292] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3293] + - cell "86,336" [ref=e3294] + - cell "40.08" [ref=e3295] + - cell "1.6x" [ref=e3296] + - cell "NEW" [ref=e3297]: + - combobox [ref=e3298]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3299]: + - combobox [ref=e3300]: + - option "-" [selected] + - cell [ref=e3301]: + - generic [ref=e3302]: + - button "북마크" [ref=e3303] [cursor=pointer]: + - img [ref=e3304] + - button "삭제" [ref=e3306] [cursor=pointer]: + - img [ref=e3307] + - row "【神回】道路の真ん中で仁王立ちするリスが強キャラすぎたwShorts ショーツ見る日 55,700 85,283 124.87 1.5x NEW -" [ref=e3310]: + - cell [ref=e3311]: + - img [ref=e3313] [cursor=pointer] + - cell "【神回】道路の真ん中で仁王立ちするリスが強キャラすぎたwShorts" [ref=e3314]: + - generic [ref=e3315]: + - link "【神回】道路の真ん中で仁王立ちするリスが強キャラすぎたw" [ref=e3316] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=0Pg_UZfiBMM + - text: Shorts + - cell "ショーツ見る日" [ref=e3317]: + - link "ショーツ見る日" [ref=e3318] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3319] + - cell "85,283" [ref=e3320] + - cell "124.87" [ref=e3321] + - cell "1.5x" [ref=e3322] + - cell "NEW" [ref=e3323]: + - combobox [ref=e3324]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3325]: + - combobox [ref=e3326]: + - option "-" [selected] + - cell [ref=e3327]: + - generic [ref=e3328]: + - button "북마크" [ref=e3329] [cursor=pointer]: + - img [ref=e3330] + - button "삭제" [ref=e3332] [cursor=pointer]: + - img [ref=e3333] + - row "犬ダメって言ってた教授の末路wwww(どんでん返し注意)Shorts ショーツ見る日 55,700 81,319 132.66 1.5x NEW -" [ref=e3336]: + - cell [ref=e3337]: + - img [ref=e3339] [cursor=pointer] + - cell "犬ダメって言ってた教授の末路wwww(どんでん返し注意)Shorts" [ref=e3340]: + - generic [ref=e3341]: + - link "犬ダメって言ってた教授の末路wwww(どんでん返し注意)" [ref=e3342] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=MbfztpgsNl8 + - text: Shorts + - cell "ショーツ見る日" [ref=e3343]: + - link "ショーツ見る日" [ref=e3344] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3345] + - cell "81,319" [ref=e3346] + - cell "132.66" [ref=e3347] + - cell "1.5x" [ref=e3348] + - cell "NEW" [ref=e3349]: + - combobox [ref=e3350]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3351]: + - combobox [ref=e3352]: + - option "-" [selected] + - cell [ref=e3353]: + - generic [ref=e3354]: + - button "북마크" [ref=e3355] [cursor=pointer]: + - img [ref=e3356] + - button "삭제" [ref=e3358] [cursor=pointer]: + - img [ref=e3359] + - row "息子の動画が広まった理由Shorts ショーツ見る日 55,700 75,201 35.88 1.4x NEW -" [ref=e3362]: + - cell [ref=e3363]: + - img [ref=e3365] [cursor=pointer] + - cell "息子の動画が広まった理由Shorts" [ref=e3366]: + - generic [ref=e3367]: + - link "息子の動画が広まった理由" [ref=e3368] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=NVB6OL0lHSo + - text: Shorts + - cell "ショーツ見る日" [ref=e3369]: + - link "ショーツ見る日" [ref=e3370] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3371] + - cell "75,201" [ref=e3372] + - cell "35.88" [ref=e3373] + - cell "1.4x" [ref=e3374] + - cell "NEW" [ref=e3375]: + - combobox [ref=e3376]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3377]: + - combobox [ref=e3378]: + - option "-" [selected] + - cell [ref=e3379]: + - generic [ref=e3380]: + - button "북마크" [ref=e3381] [cursor=pointer]: + - img [ref=e3382] + - button "삭제" [ref=e3384] [cursor=pointer]: + - img [ref=e3385] + - row "オリンピック史上最高の伝説的オープニングShorts ショーツ見る日 55,700 74,649 92.85 1.3x NEW -" [ref=e3388]: + - cell [ref=e3389]: + - img [ref=e3391] [cursor=pointer] + - cell "オリンピック史上最高の伝説的オープニングShorts" [ref=e3392]: + - generic [ref=e3393]: + - link "オリンピック史上最高の伝説的オープニング" [ref=e3394] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=2UgfZ536L0U + - text: Shorts + - cell "ショーツ見る日" [ref=e3395]: + - link "ショーツ見る日" [ref=e3396] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3397] + - cell "74,649" [ref=e3398] + - cell "92.85" [ref=e3399] + - cell "1.3x" [ref=e3400] + - cell "NEW" [ref=e3401]: + - combobox [ref=e3402]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3403]: + - combobox [ref=e3404]: + - option "-" [selected] + - cell [ref=e3405]: + - generic [ref=e3406]: + - button "북마크" [ref=e3407] [cursor=pointer]: + - img [ref=e3408] + - button "삭제" [ref=e3410] [cursor=pointer]: + - img [ref=e3411] + - row "ボーダーコリーの仕事満足度が1000%な理由Shorts ショーツ見る日 55,700 71,389 37.59 1.3x NEW -" [ref=e3414]: + - cell [ref=e3415]: + - img [ref=e3417] [cursor=pointer] + - cell "ボーダーコリーの仕事満足度が1000%な理由Shorts" [ref=e3418]: + - generic [ref=e3419]: + - link "ボーダーコリーの仕事満足度が1000%な理由" [ref=e3420] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=IZtwGjNOjQY + - text: Shorts + - cell "ショーツ見る日" [ref=e3421]: + - link "ショーツ見る日" [ref=e3422] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3423] + - cell "71,389" [ref=e3424] + - cell "37.59" [ref=e3425] + - cell "1.3x" [ref=e3426] + - cell "NEW" [ref=e3427]: + - combobox [ref=e3428]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3429]: + - combobox [ref=e3430]: + - option "-" [selected] + - cell [ref=e3431]: + - generic [ref=e3432]: + - button "북마크" [ref=e3433] [cursor=pointer]: + - img [ref=e3434] + - button "삭제" [ref=e3436] [cursor=pointer]: + - img [ref=e3437] + - row "獣医がご飯を食べられない理由Shorts ショーツ見る日 55,700 70,693 111.86 1.3x NEW -" [ref=e3440]: + - cell [ref=e3441]: + - img [ref=e3443] [cursor=pointer] + - cell "獣医がご飯を食べられない理由Shorts" [ref=e3444]: + - generic [ref=e3445]: + - link "獣医がご飯を食べられない理由" [ref=e3446] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=iLxYHVRQljo + - text: Shorts + - cell "ショーツ見る日" [ref=e3447]: + - link "ショーツ見る日" [ref=e3448] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3449] + - cell "70,693" [ref=e3450] + - cell "111.86" [ref=e3451] + - cell "1.3x" [ref=e3452] + - cell "NEW" [ref=e3453]: + - combobox [ref=e3454]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3455]: + - combobox [ref=e3456]: + - option "-" [selected] + - cell [ref=e3457]: + - generic [ref=e3458]: + - button "북마크" [ref=e3459] [cursor=pointer]: + - img [ref=e3460] + - button "삭제" [ref=e3462] [cursor=pointer]: + - img [ref=e3463] + - row "我慢できなかった盲導犬の一言(感動注意)Shorts ショーツ見る日 55,700 70,162 46.19 1.3x NEW -" [ref=e3466]: + - cell [ref=e3467]: + - img [ref=e3469] [cursor=pointer] + - cell "我慢できなかった盲導犬の一言(感動注意)Shorts" [ref=e3470]: + - generic [ref=e3471]: + - link "我慢できなかった盲導犬の一言(感動注意)" [ref=e3472] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=AyuxWUecWt0 + - text: Shorts + - cell "ショーツ見る日" [ref=e3473]: + - link "ショーツ見る日" [ref=e3474] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3475] + - cell "70,162" [ref=e3476] + - cell "46.19" [ref=e3477] + - cell "1.3x" [ref=e3478] + - cell "NEW" [ref=e3479]: + - combobox [ref=e3480]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3481]: + - combobox [ref=e3482]: + - option "-" [selected] + - cell [ref=e3483]: + - generic [ref=e3484]: + - button "북마크" [ref=e3485] [cursor=pointer]: + - img [ref=e3486] + - button "삭제" [ref=e3488] [cursor=pointer]: + - img [ref=e3489] + - row "心臓がもたない… K9(警察犬)の訓練シーンが可愛すぎた🐾Shorts ショーツ見る日 55,700 65,906 66.5 1.2x NEW -" [ref=e3492]: + - cell [ref=e3493]: + - img [ref=e3495] [cursor=pointer] + - cell "心臓がもたない… K9(警察犬)の訓練シーンが可愛すぎた🐾Shorts" [ref=e3496]: + - generic [ref=e3497]: + - link "心臓がもたない… K9(警察犬)の訓練シーンが可愛すぎた🐾" [ref=e3498] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lkJl9i5Y0dY + - text: Shorts + - cell "ショーツ見る日" [ref=e3499]: + - link "ショーツ見る日" [ref=e3500] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3501] + - cell "65,906" [ref=e3502] + - cell "66.5" [ref=e3503] + - cell "1.2x" [ref=e3504] + - cell "NEW" [ref=e3505]: + - combobox [ref=e3506]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3507]: + - combobox [ref=e3508]: + - option "-" [selected] + - cell [ref=e3509]: + - generic [ref=e3510]: + - button "북마크" [ref=e3511] [cursor=pointer]: + - img [ref=e3512] + - button "삭제" [ref=e3514] [cursor=pointer]: + - img [ref=e3515] + - 'row "見るたびにヒヤヒヤするパパとママだけの神反射レジェンド集 #Shorts #反射神経 #親Shorts ショーツ見る日 55,700 63,810 114.15 1.1x NEW -" [ref=e3518]': + - cell [ref=e3519]: + - img [ref=e3521] [cursor=pointer] + - 'cell "見るたびにヒヤヒヤするパパとママだけの神反射レジェンド集 #Shorts #反射神経 #親Shorts" [ref=e3522]': + - generic [ref=e3523]: + - 'link "見るたびにヒヤヒヤするパパとママだけの神反射レジェンド集 #Shorts #反射神経 #親" [ref=e3524] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=Eek5X6dVnbU + - text: Shorts + - cell "ショーツ見る日" [ref=e3525]: + - link "ショーツ見る日" [ref=e3526] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3527] + - cell "63,810" [ref=e3528] + - cell "114.15" [ref=e3529] + - cell "1.1x" [ref=e3530] + - cell "NEW" [ref=e3531]: + - combobox [ref=e3532]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3533]: + - combobox [ref=e3534]: + - option "-" [selected] + - cell [ref=e3535]: + - generic [ref=e3536]: + - button "북마크" [ref=e3537] [cursor=pointer]: + - img [ref=e3538] + - button "삭제" [ref=e3540] [cursor=pointer]: + - img [ref=e3541] + - row "空間効率ヤバすぎるレジェンドなバスルーム設計…!Shorts ショーツ見る日 55,700 64,065 138.07 1.1x NEW -" [ref=e3544]: + - cell [ref=e3545]: + - img [ref=e3547] [cursor=pointer] + - cell "空間効率ヤバすぎるレジェンドなバスルーム設計…!Shorts" [ref=e3548]: + - generic [ref=e3549]: + - link "空間効率ヤバすぎるレジェンドなバスルーム設計…!" [ref=e3550] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=RSykNml71oI + - text: Shorts + - cell "ショーツ見る日" [ref=e3551]: + - link "ショーツ見る日" [ref=e3552] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3553] + - cell "64,065" [ref=e3554] + - cell "138.07" [ref=e3555] + - cell "1.1x" [ref=e3556] + - cell "NEW" [ref=e3557]: + - combobox [ref=e3558]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3559]: + - combobox [ref=e3560]: + - option "-" [selected] + - cell [ref=e3561]: + - generic [ref=e3562]: + - button "북마크" [ref=e3563] [cursor=pointer]: + - img [ref=e3564] + - button "삭제" [ref=e3566] [cursor=pointer]: + - img [ref=e3567] + - row "男7人で集まって遊んだらwwwwShorts ショーツ見る日 55,700 64,064 30.49 1.1x NEW -" [ref=e3570]: + - cell [ref=e3571]: + - img [ref=e3573] [cursor=pointer] + - cell "男7人で集まって遊んだらwwwwShorts" [ref=e3574]: + - generic [ref=e3575]: + - link "男7人で集まって遊んだらwwww" [ref=e3576] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=zeomSgBIIME + - text: Shorts + - cell "ショーツ見る日" [ref=e3577]: + - link "ショーツ見る日" [ref=e3578] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3579] + - cell "64,064" [ref=e3580] + - cell "30.49" [ref=e3581] + - cell "1.1x" [ref=e3582] + - cell "NEW" [ref=e3583]: + - combobox [ref=e3584]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3585]: + - combobox [ref=e3586]: + - option "-" [selected] + - cell [ref=e3587]: + - generic [ref=e3588]: + - button "북마크" [ref=e3589] [cursor=pointer]: + - img [ref=e3590] + - button "삭제" [ref=e3592] [cursor=pointer]: + - img [ref=e3593] + - row "成敗されたパパラッチwwShorts ショーツ見る日 55,700 62,435 22.73 1.1x NEW -" [ref=e3596]: + - cell [ref=e3597]: + - img [ref=e3599] [cursor=pointer] + - cell "成敗されたパパラッチwwShorts" [ref=e3600]: + - generic [ref=e3601]: + - link "成敗されたパパラッチww" [ref=e3602] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=XeH-rnb0LrU + - text: Shorts + - cell "ショーツ見る日" [ref=e3603]: + - link "ショーツ見る日" [ref=e3604] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3605] + - cell "62,435" [ref=e3606] + - cell "22.73" [ref=e3607] + - cell "1.1x" [ref=e3608] + - cell "NEW" [ref=e3609]: + - combobox [ref=e3610]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3611]: + - combobox [ref=e3612]: + - option "-" [selected] + - cell [ref=e3613]: + - generic [ref=e3614]: + - button "북마크" [ref=e3615] [cursor=pointer]: + - img [ref=e3616] + - button "삭제" [ref=e3618] [cursor=pointer]: + - img [ref=e3619] + - row "規定の隙を突いたNASCAR史上最も大胆なラストラップShorts ショーツ見る日 55,700 61,296 21.94 1.1x NEW -" [ref=e3622]: + - cell [ref=e3623]: + - img [ref=e3625] [cursor=pointer] + - cell "規定の隙を突いたNASCAR史上最も大胆なラストラップShorts" [ref=e3626]: + - generic [ref=e3627]: + - link "規定の隙を突いたNASCAR史上最も大胆なラストラップ" [ref=e3628] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=XgKivAxCQbA + - text: Shorts + - cell "ショーツ見る日" [ref=e3629]: + - link "ショーツ見る日" [ref=e3630] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3631] + - cell "61,296" [ref=e3632] + - cell "21.94" [ref=e3633] + - cell "1.1x" [ref=e3634] + - cell "NEW" [ref=e3635]: + - combobox [ref=e3636]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3637]: + - combobox [ref=e3638]: + - option "-" [selected] + - cell [ref=e3639]: + - generic [ref=e3640]: + - button "북마크" [ref=e3641] [cursor=pointer]: + - img [ref=e3642] + - button "삭제" [ref=e3644] [cursor=pointer]: + - img [ref=e3645] + - row "最小限の動きで相手を圧倒するボーダーコリーShorts ショーツ見る日 55,700 60,157 38.71 1.1x NEW -" [ref=e3648]: + - cell [ref=e3649]: + - img [ref=e3651] [cursor=pointer] + - cell "最小限の動きで相手を圧倒するボーダーコリーShorts" [ref=e3652]: + - generic [ref=e3653]: + - link "最小限の動きで相手を圧倒するボーダーコリー" [ref=e3654] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=WLO89gZfojY + - text: Shorts + - cell "ショーツ見る日" [ref=e3655]: + - link "ショーツ見る日" [ref=e3656] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3657] + - cell "60,157" [ref=e3658] + - cell "38.71" [ref=e3659] + - cell "1.1x" [ref=e3660] + - cell "NEW" [ref=e3661]: + - combobox [ref=e3662]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3663]: + - combobox [ref=e3664]: + - option "-" [selected] + - cell [ref=e3665]: + - generic [ref=e3666]: + - button "북마크" [ref=e3667] [cursor=pointer]: + - img [ref=e3668] + - button "삭제" [ref=e3670] [cursor=pointer]: + - img [ref=e3671] + - row "アザラシたちが寝ている様子をタイムラプスで撮影した映像 🦭Shorts ショーツ見る日 55,700 59,213 21.37 1.1x NEW -" [ref=e3674]: + - cell [ref=e3675]: + - img [ref=e3677] [cursor=pointer] + - cell "アザラシたちが寝ている様子をタイムラプスで撮影した映像 🦭Shorts" [ref=e3678]: + - generic [ref=e3679]: + - link "アザラシたちが寝ている様子をタイムラプスで撮影した映像 🦭" [ref=e3680] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=oxknZPQ1dOw + - text: Shorts + - cell "ショーツ見る日" [ref=e3681]: + - link "ショーツ見る日" [ref=e3682] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3683] + - cell "59,213" [ref=e3684] + - cell "21.37" [ref=e3685] + - cell "1.1x" [ref=e3686] + - cell "NEW" [ref=e3687]: + - combobox [ref=e3688]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3689]: + - combobox [ref=e3690]: + - option "-" [selected] + - cell [ref=e3691]: + - generic [ref=e3692]: + - button "북마크" [ref=e3693] [cursor=pointer]: + - img [ref=e3694] + - button "삭제" [ref=e3696] [cursor=pointer]: + - img [ref=e3697] + - row "奥さんを愛しすぎるとこうなりますwwShorts ショーツ見る日 55,700 58,175 61.82 1.0x NEW -" [ref=e3700]: + - cell [ref=e3701]: + - img [ref=e3703] [cursor=pointer] + - cell "奥さんを愛しすぎるとこうなりますwwShorts" [ref=e3704]: + - generic [ref=e3705]: + - link "奥さんを愛しすぎるとこうなりますww" [ref=e3706] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=iMqedtBhwrI + - text: Shorts + - cell "ショーツ見る日" [ref=e3707]: + - link "ショーツ見る日" [ref=e3708] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3709] + - cell "58,175" [ref=e3710] + - cell "61.82" [ref=e3711] + - cell "1.0x" [ref=e3712] + - cell "NEW" [ref=e3713]: + - combobox [ref=e3714]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3715]: + - combobox [ref=e3716]: + - option "-" [selected] + - cell [ref=e3717]: + - generic [ref=e3718]: + - button "북마크" [ref=e3719] [cursor=pointer]: + - img [ref=e3720] + - button "삭제" [ref=e3722] [cursor=pointer]: + - img [ref=e3723] + - row "7年付き合って義父に旦那を奪われたwwShorts ショーツ見る日 55,700 56,209 114.01 1.0x NEW -" [ref=e3726]: + - cell [ref=e3727]: + - img [ref=e3729] [cursor=pointer] + - cell "7年付き合って義父に旦那を奪われたwwShorts" [ref=e3730]: + - generic [ref=e3731]: + - link "7年付き合って義父に旦那を奪われたww" [ref=e3732] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=k4svCbaxOVw + - text: Shorts + - cell "ショーツ見る日" [ref=e3733]: + - link "ショーツ見る日" [ref=e3734] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3735] + - cell "56,209" [ref=e3736] + - cell "114.01" [ref=e3737] + - cell "1.0x" [ref=e3738] + - cell "NEW" [ref=e3739]: + - combobox [ref=e3740]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3741]: + - combobox [ref=e3742]: + - option "-" [selected] + - cell [ref=e3743]: + - generic [ref=e3744]: + - button "북마크" [ref=e3745] [cursor=pointer]: + - img [ref=e3746] + - button "삭제" [ref=e3748] [cursor=pointer]: + - img [ref=e3749] + - row "大雨の中でもキリンがじっと立ってる理由Shorts ショーツ見る日 55,700 54,067 35.36 1.0x NEW -" [ref=e3752]: + - cell [ref=e3753]: + - img [ref=e3755] [cursor=pointer] + - cell "大雨の中でもキリンがじっと立ってる理由Shorts" [ref=e3756]: + - generic [ref=e3757]: + - link "大雨の中でもキリンがじっと立ってる理由" [ref=e3758] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=_P9JyWCEhrc + - text: Shorts + - cell "ショーツ見る日" [ref=e3759]: + - link "ショーツ見る日" [ref=e3760] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3761] + - cell "54,067" [ref=e3762] + - cell "35.36" [ref=e3763] + - cell "1.0x" [ref=e3764] + - cell "NEW" [ref=e3765]: + - combobox [ref=e3766]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3767]: + - combobox [ref=e3768]: + - option "-" [selected] + - cell [ref=e3769]: + - generic [ref=e3770]: + - button "북마크" [ref=e3771] [cursor=pointer]: + - img [ref=e3772] + - button "삭제" [ref=e3774] [cursor=pointer]: + - img [ref=e3775] + - row "バンドボーカルのシャウトがガチな理由Shorts ショーツ見る日 55,700 52,116 24.54 0.9x NEW -" [ref=e3778]: + - cell [ref=e3779]: + - img [ref=e3781] [cursor=pointer] + - cell "バンドボーカルのシャウトがガチな理由Shorts" [ref=e3782]: + - generic [ref=e3783]: + - link "バンドボーカルのシャウトがガチな理由" [ref=e3784] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=fFGXP2x3DYM + - text: Shorts + - cell "ショーツ見る日" [ref=e3785]: + - link "ショーツ見る日" [ref=e3786] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3787] + - cell "52,116" [ref=e3788] + - cell "24.54" [ref=e3789] + - cell "0.9x" [ref=e3790] + - cell "NEW" [ref=e3791]: + - combobox [ref=e3792]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3793]: + - combobox [ref=e3794]: + - option "-" [selected] + - cell [ref=e3795]: + - generic [ref=e3796]: + - button "북마크" [ref=e3797] [cursor=pointer]: + - img [ref=e3798] + - button "삭제" [ref=e3800] [cursor=pointer]: + - img [ref=e3801] + - row "一生飲み会のネタになる親友の瞬発力wwShorts ショーツ見る日 55,700 51,891 25.29 0.9x NEW -" [ref=e3804]: + - cell [ref=e3805]: + - img [ref=e3807] [cursor=pointer] + - cell "一生飲み会のネタになる親友の瞬発力wwShorts" [ref=e3808]: + - generic [ref=e3809]: + - link "一生飲み会のネタになる親友の瞬発力ww" [ref=e3810] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=aCU2Z6YM33k + - text: Shorts + - cell "ショーツ見る日" [ref=e3811]: + - link "ショーツ見る日" [ref=e3812] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3813] + - cell "51,891" [ref=e3814] + - cell "25.29" [ref=e3815] + - cell "0.9x" [ref=e3816] + - cell "NEW" [ref=e3817]: + - combobox [ref=e3818]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3819]: + - combobox [ref=e3820]: + - option "-" [selected] + - cell [ref=e3821]: + - generic [ref=e3822]: + - button "북마크" [ref=e3823] [cursor=pointer]: + - img [ref=e3824] + - button "삭제" [ref=e3826] [cursor=pointer]: + - img [ref=e3827] + - row "ツンデレだけど根はいい子なんですShorts ショーツ見る日 55,700 51,654 21.63 0.9x NEW -" [ref=e3830]: + - cell [ref=e3831]: + - img [ref=e3833] [cursor=pointer] + - cell "ツンデレだけど根はいい子なんですShorts" [ref=e3834]: + - generic [ref=e3835]: + - link "ツンデレだけど根はいい子なんです" [ref=e3836] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rr1cbM9Em5k + - text: Shorts + - cell "ショーツ見る日" [ref=e3837]: + - link "ショーツ見る日" [ref=e3838] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3839] + - cell "51,654" [ref=e3840] + - cell "21.63" [ref=e3841] + - cell "0.9x" [ref=e3842] + - cell "NEW" [ref=e3843]: + - combobox [ref=e3844]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3845]: + - combobox [ref=e3846]: + - option "-" [selected] + - cell [ref=e3847]: + - generic [ref=e3848]: + - button "북마크" [ref=e3849] [cursor=pointer]: + - img [ref=e3850] + - button "삭제" [ref=e3852] [cursor=pointer]: + - img [ref=e3853] + - row "地震が襲った瞬間 違う選択をした人々Shorts ショーツ見る日 55,700 48,762 19.11 0.9x NEW -" [ref=e3856]: + - cell [ref=e3857]: + - img [ref=e3859] [cursor=pointer] + - cell "地震が襲った瞬間 違う選択をした人々Shorts" [ref=e3860]: + - generic [ref=e3861]: + - link "地震が襲った瞬間 違う選択をした人々" [ref=e3862] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ICc4O91RPoU + - text: Shorts + - cell "ショーツ見る日" [ref=e3863]: + - link "ショーツ見る日" [ref=e3864] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3865] + - cell "48,762" [ref=e3866] + - cell "19.11" [ref=e3867] + - cell "0.9x" [ref=e3868] + - cell "NEW" [ref=e3869]: + - combobox [ref=e3870]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3871]: + - combobox [ref=e3872]: + - option "-" [selected] + - cell [ref=e3873]: + - generic [ref=e3874]: + - button "북마크" [ref=e3875] [cursor=pointer]: + - img [ref=e3876] + - button "삭제" [ref=e3878] [cursor=pointer]: + - img [ref=e3879] + - row "フランスで女性が会計するとこうなるwwShorts ショーツ見る日 55,700 48,780 69.09 0.9x NEW -" [ref=e3882]: + - cell [ref=e3883]: + - img [ref=e3885] [cursor=pointer] + - cell "フランスで女性が会計するとこうなるwwShorts" [ref=e3886]: + - generic [ref=e3887]: + - link "フランスで女性が会計するとこうなるww" [ref=e3888] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=b3H0PHl2lbo + - text: Shorts + - cell "ショーツ見る日" [ref=e3889]: + - link "ショーツ見る日" [ref=e3890] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3891] + - cell "48,780" [ref=e3892] + - cell "69.09" [ref=e3893] + - cell "0.9x" [ref=e3894] + - cell "NEW" [ref=e3895]: + - combobox [ref=e3896]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3897]: + - combobox [ref=e3898]: + - option "-" [selected] + - cell [ref=e3899]: + - generic [ref=e3900]: + - button "북마크" [ref=e3901] [cursor=pointer]: + - img [ref=e3902] + - button "삭제" [ref=e3904] [cursor=pointer]: + - img [ref=e3905] + - row "絵で見せる母の人生Shorts ショーツ見る日 55,700 48,567 17.85 0.9x NEW -" [ref=e3908]: + - cell [ref=e3909]: + - img [ref=e3911] [cursor=pointer] + - cell "絵で見せる母の人生Shorts" [ref=e3912]: + - generic [ref=e3913]: + - link "絵で見せる母の人生" [ref=e3914] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=hTx8MqlHvqw + - text: Shorts + - cell "ショーツ見る日" [ref=e3915]: + - link "ショーツ見る日" [ref=e3916] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3917] + - cell "48,567" [ref=e3918] + - cell "17.85" [ref=e3919] + - cell "0.9x" [ref=e3920] + - cell "NEW" [ref=e3921]: + - combobox [ref=e3922]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3923]: + - combobox [ref=e3924]: + - option "-" [selected] + - cell [ref=e3925]: + - generic [ref=e3926]: + - button "북마크" [ref=e3927] [cursor=pointer]: + - img [ref=e3928] + - button "삭제" [ref=e3930] [cursor=pointer]: + - img [ref=e3931] + - row "ホテルのハウスキーパーに勝負を挑んだ宿泊客の末路wwShorts ショーツ見る日 55,700 48,342 49.89 0.9x NEW -" [ref=e3934]: + - cell [ref=e3935]: + - img [ref=e3937] [cursor=pointer] + - cell "ホテルのハウスキーパーに勝負を挑んだ宿泊客の末路wwShorts" [ref=e3938]: + - generic [ref=e3939]: + - link "ホテルのハウスキーパーに勝負を挑んだ宿泊客の末路ww" [ref=e3940] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=pnkMbIpn3ts + - text: Shorts + - cell "ショーツ見る日" [ref=e3941]: + - link "ショーツ見る日" [ref=e3942] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3943] + - cell "48,342" [ref=e3944] + - cell "49.89" [ref=e3945] + - cell "0.9x" [ref=e3946] + - cell "NEW" [ref=e3947]: + - combobox [ref=e3948]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3949]: + - combobox [ref=e3950]: + - option "-" [selected] + - cell [ref=e3951]: + - generic [ref=e3952]: + - button "북마크" [ref=e3953] [cursor=pointer]: + - img [ref=e3954] + - button "삭제" [ref=e3956] [cursor=pointer]: + - img [ref=e3957] + - row "文化祭でマイケル・ジャクソンのダンス披露して学校中がザワついた男子高生Shorts ショーツ見る日 55,700 48,084 28.04 0.9x NEW -" [ref=e3960]: + - cell [ref=e3961]: + - img [ref=e3963] [cursor=pointer] + - cell "文化祭でマイケル・ジャクソンのダンス披露して学校中がザワついた男子高生Shorts" [ref=e3964]: + - generic [ref=e3965]: + - link "文化祭でマイケル・ジャクソンのダンス披露して学校中がザワついた男子高生" [ref=e3966] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=l8rV91sxrvg + - text: Shorts + - cell "ショーツ見る日" [ref=e3967]: + - link "ショーツ見る日" [ref=e3968] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3969] + - cell "48,084" [ref=e3970] + - cell "28.04" [ref=e3971] + - cell "0.9x" [ref=e3972] + - cell "NEW" [ref=e3973]: + - combobox [ref=e3974]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e3975]: + - combobox [ref=e3976]: + - option "-" [selected] + - cell [ref=e3977]: + - generic [ref=e3978]: + - button "북마크" [ref=e3979] [cursor=pointer]: + - img [ref=e3980] + - button "삭제" [ref=e3982] [cursor=pointer]: + - img [ref=e3983] + - row "末っ子の初デートwwShorts ショーツ見る日 55,700 47,991 70.68 0.9x NEW -" [ref=e3986]: + - cell [ref=e3987]: + - img [ref=e3989] [cursor=pointer] + - cell "末っ子の初デートwwShorts" [ref=e3990]: + - generic [ref=e3991]: + - link "末っ子の初デートww" [ref=e3992] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=CA5eA8k4Q8A + - text: Shorts + - cell "ショーツ見る日" [ref=e3993]: + - link "ショーツ見る日" [ref=e3994] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e3995] + - cell "47,991" [ref=e3996] + - cell "70.68" [ref=e3997] + - cell "0.9x" [ref=e3998] + - cell "NEW" [ref=e3999]: + - combobox [ref=e4000]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4001]: + - combobox [ref=e4002]: + - option "-" [selected] + - cell [ref=e4003]: + - generic [ref=e4004]: + - button "북마크" [ref=e4005] [cursor=pointer]: + - img [ref=e4006] + - button "삭제" [ref=e4008] [cursor=pointer]: + - img [ref=e4009] + - row "今日は休むことに決めたアザラシShorts ショーツ見る日 55,700 47,673 17.19 0.9x NEW -" [ref=e4012]: + - cell [ref=e4013]: + - img [ref=e4015] [cursor=pointer] + - cell "今日は休むことに決めたアザラシShorts" [ref=e4016]: + - generic [ref=e4017]: + - link "今日は休むことに決めたアザラシ" [ref=e4018] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ECt3B-E-8ok + - text: Shorts + - cell "ショーツ見る日" [ref=e4019]: + - link "ショーツ見る日" [ref=e4020] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4021] + - cell "47,673" [ref=e4022] + - cell "17.19" [ref=e4023] + - cell "0.9x" [ref=e4024] + - cell "NEW" [ref=e4025]: + - combobox [ref=e4026]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4027]: + - combobox [ref=e4028]: + - option "-" [selected] + - cell [ref=e4029]: + - generic [ref=e4030]: + - button "북마크" [ref=e4031] [cursor=pointer]: + - img [ref=e4032] + - button "삭제" [ref=e4034] [cursor=pointer]: + - img [ref=e4035] + - row "この映像に隠された「違和感」に気づけますか?(※衝撃の結末)Shorts ショーツ見る日 55,700 42,638 49.12 0.8x NEW -" [ref=e4038]: + - cell [ref=e4039]: + - img [ref=e4041] [cursor=pointer] + - cell "この映像に隠された「違和感」に気づけますか?(※衝撃の結末)Shorts" [ref=e4042]: + - generic [ref=e4043]: + - link "この映像に隠された「違和感」に気づけますか?(※衝撃の結末)" [ref=e4044] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=QPU2DaPNtes + - text: Shorts + - cell "ショーツ見る日" [ref=e4045]: + - link "ショーツ見る日" [ref=e4046] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4047] + - cell "42,638" [ref=e4048] + - cell "49.12" [ref=e4049] + - cell "0.8x" [ref=e4050] + - cell "NEW" [ref=e4051]: + - combobox [ref=e4052]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4053]: + - combobox [ref=e4054]: + - option "-" [selected] + - cell [ref=e4055]: + - generic [ref=e4056]: + - button "북마크" [ref=e4057] [cursor=pointer]: + - img [ref=e4058] + - button "삭제" [ref=e4060] [cursor=pointer]: + - img [ref=e4061] + - row "ドラマのワンシーンみたいな20歳の帰り道Shorts ショーツ見る日 55,700 42,955 38.59 0.8x NEW -" [ref=e4064]: + - cell [ref=e4065]: + - img [ref=e4067] [cursor=pointer] + - cell "ドラマのワンシーンみたいな20歳の帰り道Shorts" [ref=e4068]: + - generic [ref=e4069]: + - link "ドラマのワンシーンみたいな20歳の帰り道" [ref=e4070] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bK5q9peFPG0 + - text: Shorts + - cell "ショーツ見る日" [ref=e4071]: + - link "ショーツ見る日" [ref=e4072] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4073] + - cell "42,955" [ref=e4074] + - cell "38.59" [ref=e4075] + - cell "0.8x" [ref=e4076] + - cell "NEW" [ref=e4077]: + - combobox [ref=e4078]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4079]: + - combobox [ref=e4080]: + - option "-" [selected] + - cell [ref=e4081]: + - generic [ref=e4082]: + - button "북마크" [ref=e4083] [cursor=pointer]: + - img [ref=e4084] + - button "삭제" [ref=e4086] [cursor=pointer]: + - img [ref=e4087] + - row "【感動】この子がまっすぐ育ったと確信した瞬間Shorts ショーツ見る日 55,700 42,939 53.94 0.8x NEW -" [ref=e4090]: + - cell [ref=e4091]: + - img [ref=e4093] [cursor=pointer] + - cell "【感動】この子がまっすぐ育ったと確信した瞬間Shorts" [ref=e4094]: + - generic [ref=e4095]: + - link "【感動】この子がまっすぐ育ったと確信した瞬間" [ref=e4096] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=UJHf_26hQN8 + - text: Shorts + - cell "ショーツ見る日" [ref=e4097]: + - link "ショーツ見る日" [ref=e4098] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4099] + - cell "42,939" [ref=e4100] + - cell "53.94" [ref=e4101] + - cell "0.8x" [ref=e4102] + - cell "NEW" [ref=e4103]: + - combobox [ref=e4104]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4105]: + - combobox [ref=e4106]: + - option "-" [selected] + - cell [ref=e4107]: + - generic [ref=e4108]: + - button "북마크" [ref=e4109] [cursor=pointer]: + - img [ref=e4110] + - button "삭제" [ref=e4112] [cursor=pointer]: + - img [ref=e4113] + - 'row "【本物】ポセイドンが人間界に来たらこんな感じ?🔱 #ポセイドン #海 #shortsShorts ショーツ見る日 55,700 42,756 27.3 0.8x NEW -" [ref=e4116]': + - cell [ref=e4117]: + - img [ref=e4119] [cursor=pointer] + - 'cell "【本物】ポセイドンが人間界に来たらこんな感じ?🔱 #ポセイドン #海 #shortsShorts" [ref=e4120]': + - generic [ref=e4121]: + - 'link "【本物】ポセイドンが人間界に来たらこんな感じ?🔱 #ポセイドン #海 #shorts" [ref=e4122] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=uXwM7zQitX0 + - text: Shorts + - cell "ショーツ見る日" [ref=e4123]: + - link "ショーツ見る日" [ref=e4124] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4125] + - cell "42,756" [ref=e4126] + - cell "27.3" [ref=e4127] + - cell "0.8x" [ref=e4128] + - cell "NEW" [ref=e4129]: + - combobox [ref=e4130]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4131]: + - combobox [ref=e4132]: + - option "-" [selected] + - cell [ref=e4133]: + - generic [ref=e4134]: + - button "북마크" [ref=e4135] [cursor=pointer]: + - img [ref=e4136] + - button "삭제" [ref=e4138] [cursor=pointer]: + - img [ref=e4139] + - row "ライバルを尊重した本当のスポーツマンシップの瞬間Shorts ショーツ見る日 55,700 41,733 15.08 0.8x NEW -" [ref=e4142]: + - cell [ref=e4143]: + - img [ref=e4145] [cursor=pointer] + - cell "ライバルを尊重した本当のスポーツマンシップの瞬間Shorts" [ref=e4146]: + - generic [ref=e4147]: + - link "ライバルを尊重した本当のスポーツマンシップの瞬間" [ref=e4148] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=qQViK4aZ4e4 + - text: Shorts + - cell "ショーツ見る日" [ref=e4149]: + - link "ショーツ見る日" [ref=e4150] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4151] + - cell "41,733" [ref=e4152] + - cell "15.08" [ref=e4153] + - cell "0.8x" [ref=e4154] + - cell "NEW" [ref=e4155]: + - combobox [ref=e4156]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4157]: + - combobox [ref=e4158]: + - option "-" [selected] + - cell [ref=e4159]: + - generic [ref=e4160]: + - button "북마크" [ref=e4161] [cursor=pointer]: + - img [ref=e4162] + - button "삭제" [ref=e4164] [cursor=pointer]: + - img [ref=e4165] + - row "サーフィン中に突然現れた意外な正体Shorts ショーツ見る日 55,700 41,911 17.33 0.8x NEW -" [ref=e4168]: + - cell [ref=e4169]: + - img [ref=e4171] [cursor=pointer] + - cell "サーフィン中に突然現れた意外な正体Shorts" [ref=e4172]: + - generic [ref=e4173]: + - link "サーフィン中に突然現れた意外な正体" [ref=e4174] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lfC91nF47ck + - text: Shorts + - cell "ショーツ見る日" [ref=e4175]: + - link "ショーツ見る日" [ref=e4176] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4177] + - cell "41,911" [ref=e4178] + - cell "17.33" [ref=e4179] + - cell "0.8x" [ref=e4180] + - cell "NEW" [ref=e4181]: + - combobox [ref=e4182]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4183]: + - combobox [ref=e4184]: + - option "-" [selected] + - cell [ref=e4185]: + - generic [ref=e4186]: + - button "북마크" [ref=e4187] [cursor=pointer]: + - img [ref=e4188] + - button "삭제" [ref=e4190] [cursor=pointer]: + - img [ref=e4191] + - row "野良犬を保護したらマジで予想外すぎてガチで焦ったwwShorts ショーツ見る日 55,700 41,692 57.51 0.8x NEW -" [ref=e4194]: + - cell [ref=e4195]: + - img [ref=e4197] [cursor=pointer] + - cell "野良犬を保護したらマジで予想外すぎてガチで焦ったwwShorts" [ref=e4198]: + - generic [ref=e4199]: + - link "野良犬を保護したらマジで予想外すぎてガチで焦ったww" [ref=e4200] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Pk5McJ55waY + - text: Shorts + - cell "ショーツ見る日" [ref=e4201]: + - link "ショーツ見る日" [ref=e4202] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4203] + - cell "41,692" [ref=e4204] + - cell "57.51" [ref=e4205] + - cell "0.8x" [ref=e4206] + - cell "NEW" [ref=e4207]: + - combobox [ref=e4208]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4209]: + - combobox [ref=e4210]: + - option "-" [selected] + - cell [ref=e4211]: + - generic [ref=e4212]: + - button "북마크" [ref=e4213] [cursor=pointer]: + - img [ref=e4214] + - button "삭제" [ref=e4216] [cursor=pointer]: + - img [ref=e4217] + - row "試合中にレベルアップしちゃったwwShorts ショーツ見る日 55,700 40,834 37.19 0.7x NEW -" [ref=e4220]: + - cell [ref=e4221]: + - img [ref=e4223] [cursor=pointer] + - cell "試合中にレベルアップしちゃったwwShorts" [ref=e4224]: + - generic [ref=e4225]: + - link "試合中にレベルアップしちゃったww" [ref=e4226] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rfN2JDVbLck + - text: Shorts + - cell "ショーツ見る日" [ref=e4227]: + - link "ショーツ見る日" [ref=e4228] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4229] + - cell "40,834" [ref=e4230] + - cell "37.19" [ref=e4231] + - cell "0.7x" [ref=e4232] + - cell "NEW" [ref=e4233]: + - combobox [ref=e4234]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4235]: + - combobox [ref=e4236]: + - option "-" [selected] + - cell [ref=e4237]: + - generic [ref=e4238]: + - button "북마크" [ref=e4239] [cursor=pointer]: + - img [ref=e4240] + - button "삭제" [ref=e4242] [cursor=pointer]: + - img [ref=e4243] + - 'row "世界共通のガチ姉たちww #Shorts #姉弟 #スパルタの後継者Shorts ショーツ見る日 55,700 40,222 91.21 0.7x NEW -" [ref=e4246]': + - cell [ref=e4247]: + - img [ref=e4249] [cursor=pointer] + - 'cell "世界共通のガチ姉たちww #Shorts #姉弟 #スパルタの後継者Shorts" [ref=e4250]': + - generic [ref=e4251]: + - 'link "世界共通のガチ姉たちww #Shorts #姉弟 #スパルタの後継者" [ref=e4252] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=qolQwVqUkw0 + - text: Shorts + - cell "ショーツ見る日" [ref=e4253]: + - link "ショーツ見る日" [ref=e4254] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4255] + - cell "40,222" [ref=e4256] + - cell "91.21" [ref=e4257] + - cell "0.7x" [ref=e4258] + - cell "NEW" [ref=e4259]: + - combobox [ref=e4260]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4261]: + - combobox [ref=e4262]: + - option "-" [selected] + - cell [ref=e4263]: + - generic [ref=e4264]: + - button "북마크" [ref=e4265] [cursor=pointer]: + - img [ref=e4266] + - button "삭제" [ref=e4268] [cursor=pointer]: + - img [ref=e4269] + - row "みんなが息を呑んで応援しちゃう瞬間Shorts ショーツ見る日 55,700 39,279 15.1 0.7x NEW -" [ref=e4272]: + - cell [ref=e4273]: + - img [ref=e4275] [cursor=pointer] + - cell "みんなが息を呑んで応援しちゃう瞬間Shorts" [ref=e4276]: + - generic [ref=e4277]: + - link "みんなが息を呑んで応援しちゃう瞬間" [ref=e4278] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ZQ4-VFB-eNU + - text: Shorts + - cell "ショーツ見る日" [ref=e4279]: + - link "ショーツ見る日" [ref=e4280] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4281] + - cell "39,279" [ref=e4282] + - cell "15.1" [ref=e4283] + - cell "0.7x" [ref=e4284] + - cell "NEW" [ref=e4285]: + - combobox [ref=e4286]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4287]: + - combobox [ref=e4288]: + - option "-" [selected] + - cell [ref=e4289]: + - generic [ref=e4290]: + - button "북마크" [ref=e4291] [cursor=pointer]: + - img [ref=e4292] + - button "삭제" [ref=e4294] [cursor=pointer]: + - img [ref=e4295] + - row "「うちの子フレンドリーです」と押し付けてくる飼い主をきっぱり断る理由(お散歩マナー)Shorts ショーツ見る日 55,700 39,399 77.71 0.7x NEW -" [ref=e4298]: + - cell [ref=e4299]: + - img [ref=e4301] [cursor=pointer] + - cell "「うちの子フレンドリーです」と押し付けてくる飼い主をきっぱり断る理由(お散歩マナー)Shorts" [ref=e4302]: + - generic [ref=e4303]: + - link "「うちの子フレンドリーです」と押し付けてくる飼い主をきっぱり断る理由(お散歩マナー)" [ref=e4304] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=mZ_O6jYzzdU + - text: Shorts + - cell "ショーツ見る日" [ref=e4305]: + - link "ショーツ見る日" [ref=e4306] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4307] + - cell "39,399" [ref=e4308] + - cell "77.71" [ref=e4309] + - cell "0.7x" [ref=e4310] + - cell "NEW" [ref=e4311]: + - combobox [ref=e4312]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4313]: + - combobox [ref=e4314]: + - option "-" [selected] + - cell [ref=e4315]: + - generic [ref=e4316]: + - button "북마크" [ref=e4317] [cursor=pointer]: + - img [ref=e4318] + - button "삭제" [ref=e4320] [cursor=pointer]: + - img [ref=e4321] + - row "ワンコが一人でホラー映画を見ちゃダメな理由wwwShorts ショーツ見る日 55,700 38,735 19.29 0.7x NEW -" [ref=e4324]: + - cell [ref=e4325]: + - img [ref=e4327] [cursor=pointer] + - cell "ワンコが一人でホラー映画を見ちゃダメな理由wwwShorts" [ref=e4328]: + - generic [ref=e4329]: + - link "ワンコが一人でホラー映画を見ちゃダメな理由www" [ref=e4330] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=S2X9ppsciYU + - text: Shorts + - cell "ショーツ見る日" [ref=e4331]: + - link "ショーツ見る日" [ref=e4332] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4333] + - cell "38,735" [ref=e4334] + - cell "19.29" [ref=e4335] + - cell "0.7x" [ref=e4336] + - cell "NEW" [ref=e4337]: + - combobox [ref=e4338]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4339]: + - combobox [ref=e4340]: + - option "-" [selected] + - cell [ref=e4341]: + - generic [ref=e4342]: + - button "북마크" [ref=e4343] [cursor=pointer]: + - img [ref=e4344] + - button "삭제" [ref=e4346] [cursor=pointer]: + - img [ref=e4347] + - row "車が水を跳ねなかった理由wwShorts ショーツ見る日 55,700 39,093 19.6 0.7x NEW -" [ref=e4350]: + - cell [ref=e4351]: + - img [ref=e4353] [cursor=pointer] + - cell "車が水を跳ねなかった理由wwShorts" [ref=e4354]: + - generic [ref=e4355]: + - link "車が水を跳ねなかった理由ww" [ref=e4356] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=NK8MHmv49eM + - text: Shorts + - cell "ショーツ見る日" [ref=e4357]: + - link "ショーツ見る日" [ref=e4358] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4359] + - cell "39,093" [ref=e4360] + - cell "19.6" [ref=e4361] + - cell "0.7x" [ref=e4362] + - cell "NEW" [ref=e4363]: + - combobox [ref=e4364]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4365]: + - combobox [ref=e4366]: + - option "-" [selected] + - cell [ref=e4367]: + - generic [ref=e4368]: + - button "북마크" [ref=e4369] [cursor=pointer]: + - img [ref=e4370] + - button "삭제" [ref=e4372] [cursor=pointer]: + - img [ref=e4373] + - row "【ギャップ萌え】かわいいフクロウの二面性がヤバすぎるwwShorts ショーツ見る日 55,700 37,901 27.48 0.7x NEW -" [ref=e4376]: + - cell [ref=e4377]: + - img [ref=e4379] [cursor=pointer] + - cell "【ギャップ萌え】かわいいフクロウの二面性がヤバすぎるwwShorts" [ref=e4380]: + - generic [ref=e4381]: + - link "【ギャップ萌え】かわいいフクロウの二面性がヤバすぎるww" [ref=e4382] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=RlSgKUJnpVc + - text: Shorts + - cell "ショーツ見る日" [ref=e4383]: + - link "ショーツ見る日" [ref=e4384] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4385] + - cell "37,901" [ref=e4386] + - cell "27.48" [ref=e4387] + - cell "0.7x" [ref=e4388] + - cell "NEW" [ref=e4389]: + - combobox [ref=e4390]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4391]: + - combobox [ref=e4392]: + - option "-" [selected] + - cell [ref=e4393]: + - generic [ref=e4394]: + - button "북마크" [ref=e4395] [cursor=pointer]: + - img [ref=e4396] + - button "삭제" [ref=e4398] [cursor=pointer]: + - img [ref=e4399] + - row "幼稚園の卒業式で起きた史上最強のプロポーズShorts ショーツ見る日 55,700 37,722 15.69 0.7x NEW -" [ref=e4402]: + - cell [ref=e4403]: + - img [ref=e4405] [cursor=pointer] + - cell "幼稚園の卒業式で起きた史上最強のプロポーズShorts" [ref=e4406]: + - generic [ref=e4407]: + - link "幼稚園の卒業式で起きた史上最強のプロポーズ" [ref=e4408] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=CkNrOWyk8hQ + - text: Shorts + - cell "ショーツ見る日" [ref=e4409]: + - link "ショーツ見る日" [ref=e4410] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4411] + - cell "37,722" [ref=e4412] + - cell "15.69" [ref=e4413] + - cell "0.7x" [ref=e4414] + - cell "NEW" [ref=e4415]: + - combobox [ref=e4416]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4417]: + - combobox [ref=e4418]: + - option "-" [selected] + - cell [ref=e4419]: + - generic [ref=e4420]: + - button "북마크" [ref=e4421] [cursor=pointer]: + - img [ref=e4422] + - button "삭제" [ref=e4424] [cursor=pointer]: + - img [ref=e4425] + - row "海外でバズった空き巣の伝説級映像wwwShorts ショーツ見る日 55,700 37,556 14.99 0.7x NEW -" [ref=e4428]: + - cell [ref=e4429]: + - img [ref=e4431] [cursor=pointer] + - cell "海外でバズった空き巣の伝説級映像wwwShorts" [ref=e4432]: + - generic [ref=e4433]: + - link "海外でバズった空き巣の伝説級映像www" [ref=e4434] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=zVKNbz5tfNg + - text: Shorts + - cell "ショーツ見る日" [ref=e4435]: + - link "ショーツ見る日" [ref=e4436] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4437] + - cell "37,556" [ref=e4438] + - cell "14.99" [ref=e4439] + - cell "0.7x" [ref=e4440] + - cell "NEW" [ref=e4441]: + - combobox [ref=e4442]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4443]: + - combobox [ref=e4444]: + - option "-" [selected] + - cell [ref=e4445]: + - generic [ref=e4446]: + - button "북마크" [ref=e4447] [cursor=pointer]: + - img [ref=e4448] + - button "삭제" [ref=e4450] [cursor=pointer]: + - img [ref=e4451] + - row "2周目人生の完璧になりかけた計画wwwwShorts ショーツ見る日 55,700 36,767 29.6 0.7x NEW -" [ref=e4454]: + - cell [ref=e4455]: + - img [ref=e4457] [cursor=pointer] + - cell "2周目人生の完璧になりかけた計画wwwwShorts" [ref=e4458]: + - generic [ref=e4459]: + - link "2周目人生の完璧になりかけた計画wwww" [ref=e4460] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=c9xpQYvNlqw + - text: Shorts + - cell "ショーツ見る日" [ref=e4461]: + - link "ショーツ見る日" [ref=e4462] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4463] + - cell "36,767" [ref=e4464] + - cell "29.6" [ref=e4465] + - cell "0.7x" [ref=e4466] + - cell "NEW" [ref=e4467]: + - combobox [ref=e4468]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4469]: + - combobox [ref=e4470]: + - option "-" [selected] + - cell [ref=e4471]: + - generic [ref=e4472]: + - button "북마크" [ref=e4473] [cursor=pointer]: + - img [ref=e4474] + - button "삭제" [ref=e4476] [cursor=pointer]: + - img [ref=e4477] + - row "息子へのバースデープレゼントを自慢しにきたwwwwShorts ショーツ見る日 55,700 36,093 61.7 0.7x NEW -" [ref=e4480]: + - cell [ref=e4481]: + - img [ref=e4483] [cursor=pointer] + - cell "息子へのバースデープレゼントを自慢しにきたwwwwShorts" [ref=e4484]: + - generic [ref=e4485]: + - link "息子へのバースデープレゼントを自慢しにきたwwww" [ref=e4486] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ogOlOyJ4Etc + - text: Shorts + - cell "ショーツ見る日" [ref=e4487]: + - link "ショーツ見る日" [ref=e4488] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4489] + - cell "36,093" [ref=e4490] + - cell "61.7" [ref=e4491] + - cell "0.7x" [ref=e4492] + - cell "NEW" [ref=e4493]: + - combobox [ref=e4494]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4495]: + - combobox [ref=e4496]: + - option "-" [selected] + - cell [ref=e4497]: + - generic [ref=e4498]: + - button "북마크" [ref=e4499] [cursor=pointer]: + - img [ref=e4500] + - button "삭제" [ref=e4502] [cursor=pointer]: + - img [ref=e4503] + - row "愛犬を守るためなら迷わず狂気になれる説wwShorts ショーツ見る日 55,700 35,975 31.15 0.7x NEW -" [ref=e4506]: + - cell [ref=e4507]: + - img [ref=e4509] [cursor=pointer] + - cell "愛犬を守るためなら迷わず狂気になれる説wwShorts" [ref=e4510]: + - generic [ref=e4511]: + - link "愛犬を守るためなら迷わず狂気になれる説ww" [ref=e4512] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=uvf4LxhSCDw + - text: Shorts + - cell "ショーツ見る日" [ref=e4513]: + - link "ショーツ見る日" [ref=e4514] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4515] + - cell "35,975" [ref=e4516] + - cell "31.15" [ref=e4517] + - cell "0.7x" [ref=e4518] + - cell "NEW" [ref=e4519]: + - combobox [ref=e4520]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4521]: + - combobox [ref=e4522]: + - option "-" [selected] + - cell [ref=e4523]: + - generic [ref=e4524]: + - button "북마크" [ref=e4525] [cursor=pointer]: + - img [ref=e4526] + - button "삭제" [ref=e4528] [cursor=pointer]: + - img [ref=e4529] + - row "カンフーポメを飼ってたんだけどwwwwShorts ショーツ見る日 55,700 36,139 25.8 0.7x NEW -" [ref=e4532]: + - cell [ref=e4533]: + - img [ref=e4535] [cursor=pointer] + - cell "カンフーポメを飼ってたんだけどwwwwShorts" [ref=e4536]: + - generic [ref=e4537]: + - link "カンフーポメを飼ってたんだけどwwww" [ref=e4538] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=uJIjaO4mGL4 + - text: Shorts + - cell "ショーツ見る日" [ref=e4539]: + - link "ショーツ見る日" [ref=e4540] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4541] + - cell "36,139" [ref=e4542] + - cell "25.8" [ref=e4543] + - cell "0.7x" [ref=e4544] + - cell "NEW" [ref=e4545]: + - combobox [ref=e4546]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4547]: + - combobox [ref=e4548]: + - option "-" [selected] + - cell [ref=e4549]: + - generic [ref=e4550]: + - button "북마크" [ref=e4551] [cursor=pointer]: + - img [ref=e4552] + - button "삭제" [ref=e4554] [cursor=pointer]: + - img [ref=e4555] + - row "終わるまで誰にもわからない😮Shorts ショーツ見る日 55,700 36,113 15.61 0.7x NEW -" [ref=e4558]: + - cell [ref=e4559]: + - img [ref=e4561] [cursor=pointer] + - cell "終わるまで誰にもわからない😮Shorts" [ref=e4562]: + - generic [ref=e4563]: + - link "終わるまで誰にもわからない😮" [ref=e4564] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=yJGE-e2EnzY + - text: Shorts + - cell "ショーツ見る日" [ref=e4565]: + - link "ショーツ見る日" [ref=e4566] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4567] + - cell "36,113" [ref=e4568] + - cell "15.61" [ref=e4569] + - cell "0.7x" [ref=e4570] + - cell "NEW" [ref=e4571]: + - combobox [ref=e4572]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4573]: + - combobox [ref=e4574]: + - option "-" [selected] + - cell [ref=e4575]: + - generic [ref=e4576]: + - button "북마크" [ref=e4577] [cursor=pointer]: + - img [ref=e4578] + - button "삭제" [ref=e4580] [cursor=pointer]: + - img [ref=e4581] + - row "チアリーディングの公演を邪魔した警備員のまさかの理由Shorts ショーツ見る日 55,700 36,283 18.37 0.7x NEW -" [ref=e4584]: + - cell [ref=e4585]: + - img [ref=e4587] [cursor=pointer] + - cell "チアリーディングの公演を邪魔した警備員のまさかの理由Shorts" [ref=e4588]: + - generic [ref=e4589]: + - link "チアリーディングの公演を邪魔した警備員のまさかの理由" [ref=e4590] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=zozfVujp24U + - text: Shorts + - cell "ショーツ見る日" [ref=e4591]: + - link "ショーツ見る日" [ref=e4592] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4593] + - cell "36,283" [ref=e4594] + - cell "18.37" [ref=e4595] + - cell "0.7x" [ref=e4596] + - cell "NEW" [ref=e4597]: + - combobox [ref=e4598]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4599]: + - combobox [ref=e4600]: + - option "-" [selected] + - cell [ref=e4601]: + - generic [ref=e4602]: + - button "북마크" [ref=e4603] [cursor=pointer]: + - img [ref=e4604] + - button "삭제" [ref=e4606] [cursor=pointer]: + - img [ref=e4607] + - row "2年ぶりに再会したボーダーコリー母子の反応Shorts ショーツ見る日 55,700 35,166 24.24 0.6x NEW -" [ref=e4610]: + - cell [ref=e4611]: + - img [ref=e4613] [cursor=pointer] + - cell "2年ぶりに再会したボーダーコリー母子の反応Shorts" [ref=e4614]: + - generic [ref=e4615]: + - link "2年ぶりに再会したボーダーコリー母子の反応" [ref=e4616] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=7lVoH6QC4zg + - text: Shorts + - cell "ショーツ見る日" [ref=e4617]: + - link "ショーツ見る日" [ref=e4618] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4619] + - cell "35,166" [ref=e4620] + - cell "24.24" [ref=e4621] + - cell "0.6x" [ref=e4622] + - cell "NEW" [ref=e4623]: + - combobox [ref=e4624]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4625]: + - combobox [ref=e4626]: + - option "-" [selected] + - cell [ref=e4627]: + - generic [ref=e4628]: + - button "북마크" [ref=e4629] [cursor=pointer]: + - img [ref=e4630] + - button "삭제" [ref=e4632] [cursor=pointer]: + - img [ref=e4633] + - row "小学生数百人が廊下に座って待っていた本当の理由Shorts ショーツ見る日 55,700 34,403 18.06 0.6x NEW -" [ref=e4636]: + - cell [ref=e4637]: + - img [ref=e4639] [cursor=pointer] + - cell "小学生数百人が廊下に座って待っていた本当の理由Shorts" [ref=e4640]: + - generic [ref=e4641]: + - link "小学生数百人が廊下に座って待っていた本当の理由" [ref=e4642] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Nu-x4E_LXjk + - text: Shorts + - cell "ショーツ見る日" [ref=e4643]: + - link "ショーツ見る日" [ref=e4644] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4645] + - cell "34,403" [ref=e4646] + - cell "18.06" [ref=e4647] + - cell "0.6x" [ref=e4648] + - cell "NEW" [ref=e4649]: + - combobox [ref=e4650]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4651]: + - combobox [ref=e4652]: + - option "-" [selected] + - cell [ref=e4653]: + - generic [ref=e4654]: + - button "북마크" [ref=e4655] [cursor=pointer]: + - img [ref=e4656] + - button "삭제" [ref=e4658] [cursor=pointer]: + - img [ref=e4659] + - row "ハンス・ジマーが“本物の天才”すぎる証拠Shorts ショーツ見る日 55,700 32,992 22.83 0.6x NEW -" [ref=e4662]: + - cell [ref=e4663]: + - img [ref=e4665] [cursor=pointer] + - cell "ハンス・ジマーが“本物の天才”すぎる証拠Shorts" [ref=e4666]: + - generic [ref=e4667]: + - link "ハンス・ジマーが“本物の天才”すぎる証拠" [ref=e4668] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Yssco0-xk-Q + - text: Shorts + - cell "ショーツ見る日" [ref=e4669]: + - link "ショーツ見る日" [ref=e4670] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4671] + - cell "32,992" [ref=e4672] + - cell "22.83" [ref=e4673] + - cell "0.6x" [ref=e4674] + - cell "NEW" [ref=e4675]: + - combobox [ref=e4676]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4677]: + - combobox [ref=e4678]: + - option "-" [selected] + - cell [ref=e4679]: + - generic [ref=e4680]: + - button "북마크" [ref=e4681] [cursor=pointer]: + - img [ref=e4682] + - button "삭제" [ref=e4684] [cursor=pointer]: + - img [ref=e4685] + - row "これが本物のベテランってことじゃんwwShorts ショーツ見る日 55,700 32,071 58.74 0.6x NEW -" [ref=e4688]: + - cell [ref=e4689]: + - img [ref=e4691] [cursor=pointer] + - cell "これが本物のベテランってことじゃんwwShorts" [ref=e4692]: + - generic [ref=e4693]: + - link "これが本物のベテランってことじゃんww" [ref=e4694] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=STGhRGQbaTU + - text: Shorts + - cell "ショーツ見る日" [ref=e4695]: + - link "ショーツ見る日" [ref=e4696] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4697] + - cell "32,071" [ref=e4698] + - cell "58.74" [ref=e4699] + - cell "0.6x" [ref=e4700] + - cell "NEW" [ref=e4701]: + - combobox [ref=e4702]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4703]: + - combobox [ref=e4704]: + - option "-" [selected] + - cell [ref=e4705]: + - generic [ref=e4706]: + - button "북마크" [ref=e4707] [cursor=pointer]: + - img [ref=e4708] + - button "삭제" [ref=e4710] [cursor=pointer]: + - img [ref=e4711] + - row "サイコパスが人生で初めて恐怖を感じた瞬間wwwShorts ショーツ見る日 55,700 31,763 17.81 0.6x NEW -" [ref=e4714]: + - cell [ref=e4715]: + - img [ref=e4717] [cursor=pointer] + - cell "サイコパスが人生で初めて恐怖を感じた瞬間wwwShorts" [ref=e4718]: + - generic [ref=e4719]: + - link "サイコパスが人生で初めて恐怖を感じた瞬間www" [ref=e4720] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=KGK4t3VOPIA + - text: Shorts + - cell "ショーツ見る日" [ref=e4721]: + - link "ショーツ見る日" [ref=e4722] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4723] + - cell "31,763" [ref=e4724] + - cell "17.81" [ref=e4725] + - cell "0.6x" [ref=e4726] + - cell "NEW" [ref=e4727]: + - combobox [ref=e4728]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4729]: + - combobox [ref=e4730]: + - option "-" [selected] + - cell [ref=e4731]: + - generic [ref=e4732]: + - button "북마크" [ref=e4733] [cursor=pointer]: + - img [ref=e4734] + - button "삭제" [ref=e4736] [cursor=pointer]: + - img [ref=e4737] + - row "野生でゴリラの家族と遭遇したらこうなった🦍Shorts ショーツ見る日 55,700 30,791 19.02 0.6x NEW -" [ref=e4740]: + - cell [ref=e4741]: + - img [ref=e4743] [cursor=pointer] + - cell "野生でゴリラの家族と遭遇したらこうなった🦍Shorts" [ref=e4744]: + - generic [ref=e4745]: + - link "野生でゴリラの家族と遭遇したらこうなった🦍" [ref=e4746] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=we0i1CeTOdc + - text: Shorts + - cell "ショーツ見る日" [ref=e4747]: + - link "ショーツ見る日" [ref=e4748] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4749] + - cell "30,791" [ref=e4750] + - cell "19.02" [ref=e4751] + - cell "0.6x" [ref=e4752] + - cell "NEW" [ref=e4753]: + - combobox [ref=e4754]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4755]: + - combobox [ref=e4756]: + - option "-" [selected] + - cell [ref=e4757]: + - generic [ref=e4758]: + - button "북마크" [ref=e4759] [cursor=pointer]: + - img [ref=e4760] + - button "삭제" [ref=e4762] [cursor=pointer]: + - img [ref=e4763] + - row "猛禽類に授けられた神スキル|天然のタクティカルドローンShorts ショーツ見る日 55,700 29,831 21.68 0.5x NEW -" [ref=e4766]: + - cell [ref=e4767]: + - img [ref=e4769] [cursor=pointer] + - cell "猛禽類に授けられた神スキル|天然のタクティカルドローンShorts" [ref=e4770]: + - generic [ref=e4771]: + - link "猛禽類に授けられた神スキル|天然のタクティカルドローン" [ref=e4772] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=32rcqhRatWY + - text: Shorts + - cell "ショーツ見る日" [ref=e4773]: + - link "ショーツ見る日" [ref=e4774] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4775] + - cell "29,831" [ref=e4776] + - cell "21.68" [ref=e4777] + - cell "0.5x" [ref=e4778] + - cell "NEW" [ref=e4779]: + - combobox [ref=e4780]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4781]: + - combobox [ref=e4782]: + - option "-" [selected] + - cell [ref=e4783]: + - generic [ref=e4784]: + - button "북마크" [ref=e4785] [cursor=pointer]: + - img [ref=e4786] + - button "삭제" [ref=e4788] [cursor=pointer]: + - img [ref=e4789] + - 'row "ボールに集中しすぎた結果wwww #shorts #神タイミングShorts ショーツ見る日 55,700 29,270 21.12 0.5x NEW -" [ref=e4792]': + - cell [ref=e4793]: + - img [ref=e4795] [cursor=pointer] + - 'cell "ボールに集中しすぎた結果wwww #shorts #神タイミングShorts" [ref=e4796]': + - generic [ref=e4797]: + - 'link "ボールに集中しすぎた結果wwww #shorts #神タイミング" [ref=e4798] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=Z6ZqsS1NNoI + - text: Shorts + - cell "ショーツ見る日" [ref=e4799]: + - link "ショーツ見る日" [ref=e4800] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4801] + - cell "29,270" [ref=e4802] + - cell "21.12" [ref=e4803] + - cell "0.5x" [ref=e4804] + - cell "NEW" [ref=e4805]: + - combobox [ref=e4806]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4807]: + - combobox [ref=e4808]: + - option "-" [selected] + - cell [ref=e4809]: + - generic [ref=e4810]: + - button "북마크" [ref=e4811] [cursor=pointer]: + - img [ref=e4812] + - button "삭제" [ref=e4814] [cursor=pointer]: + - img [ref=e4815] + - row "初心者と古参の違いwwwwShorts ショーツ見る日 55,700 29,578 29.58 0.5x NEW -" [ref=e4818]: + - cell [ref=e4819]: + - img [ref=e4821] [cursor=pointer] + - cell "初心者と古参の違いwwwwShorts" [ref=e4822]: + - generic [ref=e4823]: + - link "初心者と古参の違いwwww" [ref=e4824] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=UOo8lLnFujQ + - text: Shorts + - cell "ショーツ見る日" [ref=e4825]: + - link "ショーツ見る日" [ref=e4826] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4827] + - cell "29,578" [ref=e4828] + - cell "29.58" [ref=e4829] + - cell "0.5x" [ref=e4830] + - cell "NEW" [ref=e4831]: + - combobox [ref=e4832]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4833]: + - combobox [ref=e4834]: + - option "-" [selected] + - cell [ref=e4835]: + - generic [ref=e4836]: + - button "북마크" [ref=e4837] [cursor=pointer]: + - img [ref=e4838] + - button "삭제" [ref=e4840] [cursor=pointer]: + - img [ref=e4841] + - 'row "まさかの緊急着陸ヤバすぎ🤣自宅の裏庭に気球が降りてきた理由 #ShortsShorts ショーツ見る日 55,700 29,776 39.44 0.5x NEW -" [ref=e4844]': + - cell [ref=e4845]: + - img [ref=e4847] [cursor=pointer] + - 'cell "まさかの緊急着陸ヤバすぎ🤣自宅の裏庭に気球が降りてきた理由 #ShortsShorts" [ref=e4848]': + - generic [ref=e4849]: + - 'link "まさかの緊急着陸ヤバすぎ🤣自宅の裏庭に気球が降りてきた理由 #Shorts" [ref=e4850] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=aC_pz7wYFu8 + - text: Shorts + - cell "ショーツ見る日" [ref=e4851]: + - link "ショーツ見る日" [ref=e4852] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4853] + - cell "29,776" [ref=e4854] + - cell "39.44" [ref=e4855] + - cell "0.5x" [ref=e4856] + - cell "NEW" [ref=e4857]: + - combobox [ref=e4858]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4859]: + - combobox [ref=e4860]: + - option "-" [selected] + - cell [ref=e4861]: + - generic [ref=e4862]: + - button "북마크" [ref=e4863] [cursor=pointer]: + - img [ref=e4864] + - button "삭제" [ref=e4866] [cursor=pointer]: + - img [ref=e4867] + - row "このパズルはマジで狂気。Shorts ショーツ見る日 55,700 29,006 53.91 0.5x NEW -" [ref=e4870]: + - cell [ref=e4871]: + - img [ref=e4873] [cursor=pointer] + - cell "このパズルはマジで狂気。Shorts" [ref=e4874]: + - generic [ref=e4875]: + - link "このパズルはマジで狂気。" [ref=e4876] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=uWULVMb33HY + - text: Shorts + - cell "ショーツ見る日" [ref=e4877]: + - link "ショーツ見る日" [ref=e4878] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4879] + - cell "29,006" [ref=e4880] + - cell "53.91" [ref=e4881] + - cell "0.5x" [ref=e4882] + - cell "NEW" [ref=e4883]: + - combobox [ref=e4884]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4885]: + - combobox [ref=e4886]: + - option "-" [selected] + - cell [ref=e4887]: + - generic [ref=e4888]: + - button "북마크" [ref=e4889] [cursor=pointer]: + - img [ref=e4890] + - button "삭제" [ref=e4892] [cursor=pointer]: + - img [ref=e4893] + - row "犬アレルギーの人に気を遣ったら起きたことShorts ショーツ見る日 55,700 27,604 17.09 0.5x NEW -" [ref=e4896]: + - cell [ref=e4897]: + - img [ref=e4899] [cursor=pointer] + - cell "犬アレルギーの人に気を遣ったら起きたことShorts" [ref=e4900]: + - generic [ref=e4901]: + - link "犬アレルギーの人に気を遣ったら起きたこと" [ref=e4902] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lq6i7FFg2rc + - text: Shorts + - cell "ショーツ見る日" [ref=e4903]: + - link "ショーツ見る日" [ref=e4904] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4905] + - cell "27,604" [ref=e4906] + - cell "17.09" [ref=e4907] + - cell "0.5x" [ref=e4908] + - cell "NEW" [ref=e4909]: + - combobox [ref=e4910]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4911]: + - combobox [ref=e4912]: + - option "-" [selected] + - cell [ref=e4913]: + - generic [ref=e4914]: + - button "북마크" [ref=e4915] [cursor=pointer]: + - img [ref=e4916] + - button "삭제" [ref=e4918] [cursor=pointer]: + - img [ref=e4919] + - 'row "ヒマラヤ旅行中に出会った奇跡の縁🐺 #ライダー #オオカミ #ヒマラヤShorts ショーツ見る日 55,700 28,116 33.16 0.5x NEW -" [ref=e4922]': + - cell [ref=e4923]: + - img [ref=e4925] [cursor=pointer] + - 'cell "ヒマラヤ旅行中に出会った奇跡の縁🐺 #ライダー #オオカミ #ヒマラヤShorts" [ref=e4926]': + - generic [ref=e4927]: + - 'link "ヒマラヤ旅行中に出会った奇跡の縁🐺 #ライダー #オオカミ #ヒマラヤ" [ref=e4928] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=-gFZudClg5U + - text: Shorts + - cell "ショーツ見る日" [ref=e4929]: + - link "ショーツ見る日" [ref=e4930] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4931] + - cell "28,116" [ref=e4932] + - cell "33.16" [ref=e4933] + - cell "0.5x" [ref=e4934] + - cell "NEW" [ref=e4935]: + - combobox [ref=e4936]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4937]: + - combobox [ref=e4938]: + - option "-" [selected] + - cell [ref=e4939]: + - generic [ref=e4940]: + - button "북마크" [ref=e4941] [cursor=pointer]: + - img [ref=e4942] + - button "삭제" [ref=e4944] [cursor=pointer]: + - img [ref=e4945] + - row "名前負けにもほどがあるロットワイラーの爪切りwwShorts ショーツ見る日 55,700 27,123 18.4 0.5x NEW -" [ref=e4948]: + - cell [ref=e4949]: + - img [ref=e4951] [cursor=pointer] + - cell "名前負けにもほどがあるロットワイラーの爪切りwwShorts" [ref=e4952]: + - generic [ref=e4953]: + - link "名前負けにもほどがあるロットワイラーの爪切りww" [ref=e4954] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=dRGU7mO3Lbs + - text: Shorts + - cell "ショーツ見る日" [ref=e4955]: + - link "ショーツ見る日" [ref=e4956] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4957] + - cell "27,123" [ref=e4958] + - cell "18.4" [ref=e4959] + - cell "0.5x" [ref=e4960] + - cell "NEW" [ref=e4961]: + - combobox [ref=e4962]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4963]: + - combobox [ref=e4964]: + - option "-" [selected] + - cell [ref=e4965]: + - generic [ref=e4966]: + - button "북마크" [ref=e4967] [cursor=pointer]: + - img [ref=e4968] + - button "삭제" [ref=e4970] [cursor=pointer]: + - img [ref=e4971] + - row "在宅ワーク中にウェルシュコーギーをほっとくと起きることwwwwShorts ショーツ見る日 55,700 27,094 22.9 0.5x NEW -" [ref=e4974]: + - cell [ref=e4975]: + - img [ref=e4977] [cursor=pointer] + - cell "在宅ワーク中にウェルシュコーギーをほっとくと起きることwwwwShorts" [ref=e4978]: + - generic [ref=e4979]: + - link "在宅ワーク中にウェルシュコーギーをほっとくと起きることwwww" [ref=e4980] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=TIMetHMiWYk + - text: Shorts + - cell "ショーツ見る日" [ref=e4981]: + - link "ショーツ見る日" [ref=e4982] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e4983] + - cell "27,094" [ref=e4984] + - cell "22.9" [ref=e4985] + - cell "0.5x" [ref=e4986] + - cell "NEW" [ref=e4987]: + - combobox [ref=e4988]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e4989]: + - combobox [ref=e4990]: + - option "-" [selected] + - cell [ref=e4991]: + - generic [ref=e4992]: + - button "북마크" [ref=e4993] [cursor=pointer]: + - img [ref=e4994] + - button "삭제" [ref=e4996] [cursor=pointer]: + - img [ref=e4997] + - row "ビデオ通話で一番おもろい男引いたShorts ショーツ見る日 55,700 27,389 17.21 0.5x NEW -" [ref=e5000]: + - cell [ref=e5001]: + - img [ref=e5003] [cursor=pointer] + - cell "ビデオ通話で一番おもろい男引いたShorts" [ref=e5004]: + - generic [ref=e5005]: + - link "ビデオ通話で一番おもろい男引いた" [ref=e5006] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=BPx_sbw09M8 + - text: Shorts + - cell "ショーツ見る日" [ref=e5007]: + - link "ショーツ見る日" [ref=e5008] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e5009] + - cell "27,389" [ref=e5010] + - cell "17.21" [ref=e5011] + - cell "0.5x" [ref=e5012] + - cell "NEW" [ref=e5013]: + - combobox [ref=e5014]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e5015]: + - combobox [ref=e5016]: + - option "-" [selected] + - cell [ref=e5017]: + - generic [ref=e5018]: + - button "북마크" [ref=e5019] [cursor=pointer]: + - img [ref=e5020] + - button "삭제" [ref=e5022] [cursor=pointer]: + - img [ref=e5023] + - row "これはキスカメラ有罪wwShorts ショーツ見る日 55,700 25,581 9.39 0.5x NEW -" [ref=e5026]: + - cell [ref=e5027]: + - img [ref=e5029] [cursor=pointer] + - cell "これはキスカメラ有罪wwShorts" [ref=e5030]: + - generic [ref=e5031]: + - link "これはキスカメラ有罪ww" [ref=e5032] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=RRdRgJD-NgU + - text: Shorts + - cell "ショーツ見る日" [ref=e5033]: + - link "ショーツ見る日" [ref=e5034] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e5035] + - cell "25,581" [ref=e5036] + - cell "9.39" [ref=e5037] + - cell "0.5x" [ref=e5038] + - cell "NEW" [ref=e5039]: + - combobox [ref=e5040]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e5041]: + - combobox [ref=e5042]: + - option "-" [selected] + - cell [ref=e5043]: + - generic [ref=e5044]: + - button "북마크" [ref=e5045] [cursor=pointer]: + - img [ref=e5046] + - button "삭제" [ref=e5048] [cursor=pointer]: + - img [ref=e5049] + - row "レトリバーの散歩ってこんなにスムーズなの?Shorts ショーツ見る日 55,700 25,136 20.69 0.5x NEW -" [ref=e5052]: + - cell [ref=e5053]: + - img [ref=e5055] [cursor=pointer] + - cell "レトリバーの散歩ってこんなにスムーズなの?Shorts" [ref=e5056]: + - generic [ref=e5057]: + - link "レトリバーの散歩ってこんなにスムーズなの?" [ref=e5058] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=L3KuC8obR2E + - text: Shorts + - cell "ショーツ見る日" [ref=e5059]: + - link "ショーツ見る日" [ref=e5060] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e5061] + - cell "25,136" [ref=e5062] + - cell "20.69" [ref=e5063] + - cell "0.5x" [ref=e5064] + - cell "NEW" [ref=e5065]: + - combobox [ref=e5066]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e5067]: + - combobox [ref=e5068]: + - option "-" [selected] + - cell [ref=e5069]: + - generic [ref=e5070]: + - button "북마크" [ref=e5071] [cursor=pointer]: + - img [ref=e5072] + - button "삭제" [ref=e5074] [cursor=pointer]: + - img [ref=e5075] + - row "拗ねたわんこの言い返しに爆笑した母娘Shorts ショーツ見る日 55,700 24,877 20.94 0.5x NEW -" [ref=e5078]: + - cell [ref=e5079]: + - img [ref=e5081] [cursor=pointer] + - cell "拗ねたわんこの言い返しに爆笑した母娘Shorts" [ref=e5082]: + - generic [ref=e5083]: + - link "拗ねたわんこの言い返しに爆笑した母娘" [ref=e5084] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=72EAA8jukHk + - text: Shorts + - cell "ショーツ見る日" [ref=e5085]: + - link "ショーツ見る日" [ref=e5086] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e5087] + - cell "24,877" [ref=e5088] + - cell "20.94" [ref=e5089] + - cell "0.5x" [ref=e5090] + - cell "NEW" [ref=e5091]: + - combobox [ref=e5092]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e5093]: + - combobox [ref=e5094]: + - option "-" [selected] + - cell [ref=e5095]: + - generic [ref=e5096]: + - button "북마크" [ref=e5097] [cursor=pointer]: + - img [ref=e5098] + - button "삭제" [ref=e5100] [cursor=pointer]: + - img [ref=e5101] + - row "南極の海底。触れた瞬間、全てを凍らせる😱Shorts ショーツ見る日 55,700 24,836 59.42 0.5x NEW -" [ref=e5104]: + - cell [ref=e5105]: + - img [ref=e5107] [cursor=pointer] + - cell "南極の海底。触れた瞬間、全てを凍らせる😱Shorts" [ref=e5108]: + - generic [ref=e5109]: + - link "南極の海底。触れた瞬間、全てを凍らせる😱" [ref=e5110] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=JL2yVBl2wl4 + - text: Shorts + - cell "ショーツ見る日" [ref=e5111]: + - link "ショーツ見る日" [ref=e5112] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e5113] + - cell "24,836" [ref=e5114] + - cell "59.42" [ref=e5115] + - cell "0.5x" [ref=e5116] + - cell "NEW" [ref=e5117]: + - combobox [ref=e5118]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e5119]: + - combobox [ref=e5120]: + - option "-" [selected] + - cell [ref=e5121]: + - generic [ref=e5122]: + - button "북마크" [ref=e5123] [cursor=pointer]: + - img [ref=e5124] + - button "삭제" [ref=e5126] [cursor=pointer]: + - img [ref=e5127] + - row "ごはん皿を引きずり回すパワーウォーキング猫wwShorts ショーツ見る日 55,700 21,228 16.46 0.4x NEW -" [ref=e5130]: + - cell [ref=e5131]: + - img [ref=e5133] [cursor=pointer] + - cell "ごはん皿を引きずり回すパワーウォーキング猫wwShorts" [ref=e5134]: + - generic [ref=e5135]: + - link "ごはん皿を引きずり回すパワーウォーキング猫ww" [ref=e5136] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=jFty3rjhp4M + - text: Shorts + - cell "ショーツ見る日" [ref=e5137]: + - link "ショーツ見る日" [ref=e5138] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e5139] + - cell "21,228" [ref=e5140] + - cell "16.46" [ref=e5141] + - cell "0.4x" [ref=e5142] + - cell "NEW" [ref=e5143]: + - combobox [ref=e5144]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e5145]: + - combobox [ref=e5146]: + - option "-" [selected] + - cell [ref=e5147]: + - generic [ref=e5148]: + - button "북마크" [ref=e5149] [cursor=pointer]: + - img [ref=e5150] + - button "삭제" [ref=e5152] [cursor=pointer]: + - img [ref=e5153] + - row "譲渡詐欺かと思ったらwwww(まさかの展開)Shorts ショーツ見る日 55,700 20,720 31.49 0.4x NEW -" [ref=e5156]: + - cell [ref=e5157]: + - img [ref=e5159] [cursor=pointer] + - cell "譲渡詐欺かと思ったらwwww(まさかの展開)Shorts" [ref=e5160]: + - generic [ref=e5161]: + - link "譲渡詐欺かと思ったらwwww(まさかの展開)" [ref=e5162] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=V4kXFoXwmqQ + - text: Shorts + - cell "ショーツ見る日" [ref=e5163]: + - link "ショーツ見る日" [ref=e5164] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e5165] + - cell "20,720" [ref=e5166] + - cell "31.49" [ref=e5167] + - cell "0.4x" [ref=e5168] + - cell "NEW" [ref=e5169]: + - combobox [ref=e5170]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e5171]: + - combobox [ref=e5172]: + - option "-" [selected] + - cell [ref=e5173]: + - generic [ref=e5174]: + - button "북마크" [ref=e5175] [cursor=pointer]: + - img [ref=e5176] + - button "삭제" [ref=e5178] [cursor=pointer]: + - img [ref=e5179] + - row "スイス伝説の黒い壁 ブラックウォールについに挑戦⛷️Shorts ショーツ見る日 55,700 18,854 22.74 0.3x NEW -" [ref=e5182]: + - cell [ref=e5183]: + - img [ref=e5185] [cursor=pointer] + - cell "スイス伝説の黒い壁 ブラックウォールについに挑戦⛷️Shorts" [ref=e5186]: + - generic [ref=e5187]: + - link "スイス伝説の黒い壁 ブラックウォールについに挑戦⛷️" [ref=e5188] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=5MiOLplN2zQ + - text: Shorts + - cell "ショーツ見る日" [ref=e5189]: + - link "ショーツ見る日" [ref=e5190] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e5191] + - cell "18,854" [ref=e5192] + - cell "22.74" [ref=e5193] + - cell "0.3x" [ref=e5194] + - cell "NEW" [ref=e5195]: + - combobox [ref=e5196]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e5197]: + - combobox [ref=e5198]: + - option "-" [selected] + - cell [ref=e5199]: + - generic [ref=e5200]: + - button "북마크" [ref=e5201] [cursor=pointer]: + - img [ref=e5202] + - button "삭제" [ref=e5204] [cursor=pointer]: + - img [ref=e5205] + - row "友達がまたヤバいの作ったwwwShorts ショーツ見る日 55,700 17,198 38.82 0.3x NEW -" [ref=e5208]: + - cell [ref=e5209]: + - img [ref=e5211] [cursor=pointer] + - cell "友達がまたヤバいの作ったwwwShorts" [ref=e5212]: + - generic [ref=e5213]: + - link "友達がまたヤバいの作ったwww" [ref=e5214] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=xOvg1BQf8D4 + - text: Shorts + - cell "ショーツ見る日" [ref=e5215]: + - link "ショーツ見る日" [ref=e5216] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e5217] + - cell "17,198" [ref=e5218] + - cell "38.82" [ref=e5219] + - cell "0.3x" [ref=e5220] + - cell "NEW" [ref=e5221]: + - combobox [ref=e5222]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e5223]: + - combobox [ref=e5224]: + - option "-" [selected] + - cell [ref=e5225]: + - generic [ref=e5226]: + - button "북마크" [ref=e5227] [cursor=pointer]: + - img [ref=e5228] + - button "삭제" [ref=e5230] [cursor=pointer]: + - img [ref=e5231] + - 'row "50年前の映画『星の王子さま』にマイケル・ジャクソンを感じる理由 #Shorts #ボブフォッシー #MJShorts ショーツ見る日 55,700 15,047 35.74 0.3x NEW -" [ref=e5234]': + - cell [ref=e5235]: + - img [ref=e5237] [cursor=pointer] + - 'cell "50年前の映画『星の王子さま』にマイケル・ジャクソンを感じる理由 #Shorts #ボブフォッシー #MJShorts" [ref=e5238]': + - generic [ref=e5239]: + - 'link "50年前の映画『星の王子さま』にマイケル・ジャクソンを感じる理由 #Shorts #ボブフォッシー #MJ" [ref=e5240] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=ShpDJI8QzdA + - text: Shorts + - cell "ショーツ見る日" [ref=e5241]: + - link "ショーツ見る日" [ref=e5242] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e5243] + - cell "15,047" [ref=e5244] + - cell "35.74" [ref=e5245] + - cell "0.3x" [ref=e5246] + - cell "NEW" [ref=e5247]: + - combobox [ref=e5248]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e5249]: + - combobox [ref=e5250]: + - option "-" [selected] + - cell [ref=e5251]: + - generic [ref=e5252]: + - button "북마크" [ref=e5253] [cursor=pointer]: + - img [ref=e5254] + - button "삭제" [ref=e5256] [cursor=pointer]: + - img [ref=e5257] + - row "クールなおじさんが姪っ子をおしゃれに撮る方法Shorts ショーツ見る日 55,700 12,861 11.79 0.2x NEW -" [ref=e5260]: + - cell [ref=e5261]: + - img [ref=e5263] [cursor=pointer] + - cell "クールなおじさんが姪っ子をおしゃれに撮る方法Shorts" [ref=e5264]: + - generic [ref=e5265]: + - link "クールなおじさんが姪っ子をおしゃれに撮る方法" [ref=e5266] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=JWEh_GgPNzg + - text: Shorts + - cell "ショーツ見る日" [ref=e5267]: + - link "ショーツ見る日" [ref=e5268] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e5269] + - cell "12,861" [ref=e5270] + - cell "11.79" [ref=e5271] + - cell "0.2x" [ref=e5272] + - cell "NEW" [ref=e5273]: + - combobox [ref=e5274]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e5275]: + - combobox [ref=e5276]: + - option "-" [selected] + - cell [ref=e5277]: + - generic [ref=e5278]: + - button "북마크" [ref=e5279] [cursor=pointer]: + - img [ref=e5280] + - button "삭제" [ref=e5282] [cursor=pointer]: + - img [ref=e5283] + - 'row "クチャクチャ音を立てる飼い主が許せない犬 #犬 #ペット #ショート #クチャラーShorts ショーツ見る日 55,700 9,922 19.01 0.2x NEW -" [ref=e5286]': + - cell [ref=e5287]: + - img [ref=e5289] [cursor=pointer] + - 'cell "クチャクチャ音を立てる飼い主が許せない犬 #犬 #ペット #ショート #クチャラーShorts" [ref=e5290]': + - generic [ref=e5291]: + - 'link "クチャクチャ音を立てる飼い主が許せない犬 #犬 #ペット #ショート #クチャラー" [ref=e5292] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=3dPzAFvwvp4 + - text: Shorts + - cell "ショーツ見る日" [ref=e5293]: + - link "ショーツ見る日" [ref=e5294] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - cell "55,700" [ref=e5295] + - cell "9,922" [ref=e5296] + - cell "19.01" [ref=e5297] + - cell "0.2x" [ref=e5298] + - cell "NEW" [ref=e5299]: + - combobox [ref=e5300]: + - option "NEW" [selected] + - option "검토중" + - option "작업대상" + - option "제외" + - cell "-" [ref=e5301]: + - combobox [ref=e5302]: + - option "-" [selected] + - cell [ref=e5303]: + - generic [ref=e5304]: + - button "북마크" [ref=e5305] [cursor=pointer]: + - img [ref=e5306] + - button "삭제" [ref=e5308] [cursor=pointer]: + - img [ref=e5309] \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-29T08-56-10-071Z.yml b/.playwright-mcp/page-2026-05-29T08-56-10-071Z.yml new file mode 100644 index 0000000..afa0d99 --- /dev/null +++ b/.playwright-mcp/page-2026-05-29T08-56-10-071Z.yml @@ -0,0 +1,71 @@ +- generic [ref=e2]: + - complementary [ref=e3]: + - generic [ref=e4]: + - generic [ref=e7]: H + - button [ref=e8] [cursor=pointer]: + - img [ref=e9] + - navigation [ref=e11]: + - list [ref=e12]: + - listitem [ref=e13]: + - link [ref=e14] [cursor=pointer]: + - /url: / + - img [ref=e15] + - listitem [ref=e20]: + - link [ref=e21] [cursor=pointer]: + - /url: /channels + - img [ref=e22] + - listitem [ref=e27]: + - link [ref=e28] [cursor=pointer]: + - /url: /videos + - img [ref=e29] + - listitem [ref=e32]: + - link [ref=e33] [cursor=pointer]: + - /url: /collection + - img [ref=e34] + - listitem [ref=e36]: + - link [ref=e37] [cursor=pointer]: + - /url: /production + - img [ref=e38] + - listitem [ref=e43]: + - link [ref=e44] [cursor=pointer]: + - /url: "#" + - img [ref=e45] + - button [ref=e51]: + - img [ref=e52] + - main [ref=e55]: + - generic [ref=e56]: + - generic [ref=e57]: + - heading "Dashboard" [level=1] [ref=e58] + - paragraph [ref=e59]: Overview of your YouTube analytics and tracking. + - generic [ref=e60]: + - generic [ref=e61]: + - generic [ref=e62]: + - generic [ref=e63]: + - paragraph [ref=e64]: 수집 영상 + - heading "-" [level=3] [ref=e65] + - img [ref=e67] + - generic [ref=e69]: 채널 + 검색 수집 + - generic [ref=e70]: + - generic [ref=e71]: + - generic [ref=e72]: + - paragraph [ref=e73]: 작업대상 (TARGET) + - heading "-" [level=3] [ref=e74] + - img [ref=e76] + - generic [ref=e81]: 검토중 - + - generic [ref=e82]: + - generic [ref=e83]: + - generic [ref=e84]: + - paragraph [ref=e85]: 미검토 (NEW) + - heading "-" [level=3] [ref=e86] + - img [ref=e88] + - generic [ref=e91]: 제외 - + - generic [ref=e92]: + - generic [ref=e93]: + - generic [ref=e94]: + - heading "🚀 떡상 후보 TOP" [level=3] [ref=e95] + - link "수집함 →" [ref=e96] [cursor=pointer]: + - /url: /collection + - paragraph [ref=e98]: 로딩 중... + - generic [ref=e99]: + - heading "수집 출처" [level=3] [ref=e100] + - paragraph [ref=e102]: 로딩 중... \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-30T00-01-37-305Z.yml b/.playwright-mcp/page-2026-05-30T00-01-37-305Z.yml new file mode 100644 index 0000000..9442887 --- /dev/null +++ b/.playwright-mcp/page-2026-05-30T00-01-37-305Z.yml @@ -0,0 +1,107 @@ +- generic [ref=e2]: + - complementary [ref=e3]: + - generic [ref=e4]: + - generic [ref=e7]: H + - button [ref=e8] [cursor=pointer]: + - img [ref=e9] + - navigation [ref=e11]: + - list [ref=e12]: + - listitem [ref=e13]: + - link [ref=e14] [cursor=pointer]: + - /url: / + - img [ref=e15] + - listitem [ref=e20]: + - link [ref=e21] [cursor=pointer]: + - /url: /channels + - img [ref=e22] + - listitem [ref=e27]: + - link [ref=e28] [cursor=pointer]: + - /url: /videos + - img [ref=e29] + - listitem [ref=e32]: + - link [ref=e33] [cursor=pointer]: + - /url: /collection + - img [ref=e34] + - listitem [ref=e36]: + - link [ref=e37] [cursor=pointer]: + - /url: /production + - img [ref=e38] + - listitem [ref=e43]: + - link [ref=e44] [cursor=pointer]: + - /url: "#" + - img [ref=e45] + - button [ref=e51]: + - img [ref=e52] + - main [ref=e55]: + - generic [ref=e56]: + - generic [ref=e57]: + - heading "YouTube Video Search" [level=1] [ref=e58] + - paragraph [ref=e59]: Search YouTube videos using YouTube Data API. + - generic [ref=e61]: + - generic [ref=e62]: + - generic [ref=e63]: + - generic [ref=e64]: Keyword + - textbox "Search keyword..." [ref=e65] + - generic [ref=e66]: + - generic [ref=e67]: Country + - generic [ref=e68]: + - generic [ref=e69]: + - checkbox "JP" [checked] [ref=e70] + - text: JP + - generic [ref=e71]: + - checkbox "US" [checked] [ref=e72] + - text: US + - generic [ref=e73]: + - checkbox "KR" [ref=e74] + - text: KR + - generic [ref=e75]: + - generic [ref=e76]: Period + - combobox [ref=e77]: + - option "Within 1 Day" [selected] + - option "Within 7 Days" + - option "Within 10 Days" + - option "Within 15 Days" + - option "Within 30 Days" + - option "전부 (All)" + - generic [ref=e78]: + - generic [ref=e79]: Format + - generic [ref=e80]: + - generic [ref=e81]: + - radio "Shorts" [checked] [ref=e82] + - text: Shorts + - generic [ref=e83]: + - radio "Long" [ref=e84] + - text: Long + - generic [ref=e85]: + - generic [ref=e86]: Load Size + - combobox [ref=e87]: + - option "20 items" + - option "50 items" [selected] + - option "100 items" + - button "Search" [ref=e89] [cursor=pointer]: + - img [ref=e90] + - generic [ref=e93]: Search + - generic [ref=e95]: + - button "선택 담기" [ref=e96] [cursor=pointer]: + - img [ref=e97] + - text: 선택 담기 + - button "전체 담기" [ref=e100] [cursor=pointer]: + - img [ref=e101] + - text: 전체 담기 + - table [ref=e105]: + - rowgroup [ref=e106]: + - row "전체 선택 Thumbnail Title Channel Publish Date Performance ▼ Views Subscribers" [ref=e107]: + - columnheader "전체 선택" [ref=e108]: + - checkbox "전체 선택" [ref=e109] + - columnheader "Thumbnail" [ref=e110] + - columnheader "Title" [ref=e111] + - columnheader "Channel" [ref=e112] + - columnheader "Publish Date" [ref=e113]: Publish Date + - columnheader "Performance ▼" [ref=e114]: + - text: Performance + - generic [ref=e115]: ▼ + - columnheader "Views" [ref=e116]: Views + - columnheader "Subscribers" [ref=e117]: Subscribers + - rowgroup [ref=e118]: + - row "Enter search conditions and click Search." [ref=e119]: + - cell "Enter search conditions and click Search." [ref=e120] \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-30T03-47-52-241Z.yml b/.playwright-mcp/page-2026-05-30T03-47-52-241Z.yml new file mode 100644 index 0000000..fdc763c --- /dev/null +++ b/.playwright-mcp/page-2026-05-30T03-47-52-241Z.yml @@ -0,0 +1,46 @@ +- generic [ref=e2]: + - complementary [ref=e3]: + - generic [ref=e4]: + - generic [ref=e7]: H + - button [ref=e8] [cursor=pointer]: + - img [ref=e9] + - navigation [ref=e11]: + - list [ref=e12]: + - listitem [ref=e13]: + - link [ref=e14] [cursor=pointer]: + - /url: / + - img [ref=e15] + - listitem [ref=e20]: + - link [ref=e21] [cursor=pointer]: + - /url: /channels + - img [ref=e22] + - listitem [ref=e27]: + - link [ref=e28] [cursor=pointer]: + - /url: /videos + - img [ref=e29] + - listitem [ref=e32]: + - link [ref=e33] [cursor=pointer]: + - /url: /collection + - img [ref=e34] + - listitem [ref=e36]: + - link [ref=e37] [cursor=pointer]: + - /url: /board + - img [ref=e38] + - listitem [ref=e40]: + - link [ref=e41] [cursor=pointer]: + - /url: /production + - img [ref=e42] + - listitem [ref=e47]: + - link [ref=e48] [cursor=pointer]: + - /url: "#" + - img [ref=e49] + - button [ref=e55]: + - img [ref=e56] + - main [ref=e59]: + - generic [ref=e61]: + - generic [ref=e62]: + - heading "작업 보드" [level=1] [ref=e63] + - paragraph [ref=e64]: 카드를 드래그해 단계를 옮기세요. 수집 → 검토 → 작업대상 → 완료. + - button "새로고침" [ref=e65] [cursor=pointer]: + - img [ref=e66] + - text: 새로고침 \ No newline at end of file diff --git a/.playwright-mcp/page-2026-05-30T07-27-31-828Z.yml b/.playwright-mcp/page-2026-05-30T07-27-31-828Z.yml new file mode 100644 index 0000000..3df81df --- /dev/null +++ b/.playwright-mcp/page-2026-05-30T07-27-31-828Z.yml @@ -0,0 +1,3094 @@ +- generic [ref=e2]: + - complementary [ref=e3]: + - generic [ref=e4]: + - generic [ref=e7]: H + - button [ref=e8] [cursor=pointer]: + - img [ref=e9] + - navigation [ref=e11]: + - list [ref=e12]: + - listitem [ref=e13]: + - link [ref=e14] [cursor=pointer]: + - /url: / + - img [ref=e15] + - listitem [ref=e20]: + - link [ref=e21] [cursor=pointer]: + - /url: /channels + - img [ref=e22] + - listitem [ref=e27]: + - link [ref=e28] [cursor=pointer]: + - /url: /videos + - img [ref=e29] + - listitem [ref=e32]: + - link [ref=e33] [cursor=pointer]: + - /url: /collection + - img [ref=e34] + - listitem [ref=e36]: + - link [ref=e37] [cursor=pointer]: + - /url: /board + - img [ref=e38] + - listitem [ref=e40]: + - link [ref=e41] [cursor=pointer]: + - /url: /production + - img [ref=e42] + - listitem [ref=e47]: + - link [ref=e48] [cursor=pointer]: + - /url: "#" + - img [ref=e49] + - button [ref=e55]: + - img [ref=e56] + - main [ref=e59]: + - generic [ref=e60]: + - generic [ref=e61]: + - generic [ref=e62]: + - link [ref=e63] [cursor=pointer]: + - /url: /channels + - img [ref=e64] + - heading "ショーツ見る日" [level=1] [ref=e66] + - generic [ref=e67]: + - generic [ref=e68]: + - img "Thumbnail" [ref=e69] + - generic [ref=e70]: + - generic [ref=e71]: 素敵な一日をお過ごしください choegolaeyo@gmail.com VoiceVox - ずんだもん , 玄野武宏 , 青山龍星 , 春日部つむぎ , 四国めたん + - generic [ref=e72]: + - generic [ref=e73]: + - img [ref=e74] + - text: 57,400 Subs + - generic [ref=e79]: + - img [ref=e80] + - text: 503,754,858 Views + - generic [ref=e82]: + - img [ref=e83] + - text: 324 Videos + - generic [ref=e86]: + - button "Sync Videos" [ref=e87] [cursor=pointer]: + - img [ref=e88] + - text: Sync Videos + - button "Extract All" [ref=e93] [cursor=pointer]: + - img [ref=e94] + - text: Extract All + - link [ref=e97] [cursor=pointer]: + - /url: https://www.youtube.com/channel/UCcqZCdNJD0p5oPnqtBpOHVA + - img [ref=e98] + - generic [ref=e103]: + - heading "성장 추이" [level=3] [ref=e104] + - button "지금 기록" [ref=e105] [cursor=pointer]: + - img [ref=e106] + - text: 지금 기록 + - table [ref=e112]: + - rowgroup [ref=e113]: + - row "Video Script Views Likes Duration Published" [ref=e114]: + - columnheader "Video" [ref=e115] + - columnheader "Script" [ref=e116] + - columnheader "Views" [ref=e117]: + - text: Views + - img [ref=e118] + - columnheader "Likes" [ref=e121]: + - text: Likes + - img [ref=e122] + - columnheader "Duration" [ref=e125]: + - text: Duration + - img [ref=e126] + - columnheader "Published" [ref=e129]: + - text: Published + - img [ref=e130] + - rowgroup [ref=e133]: + - row "Thumb 息子へのバースデープレゼントを自慢しにきたwwww 36,093 143 PT13S 2026-05-05 07:30" [ref=e134]: + - cell "Thumb 息子へのバースデープレゼントを自慢しにきたwwww" [ref=e135]: + - generic [ref=e136]: + - link "Thumb" [ref=e137] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ogOlOyJ4Etc + - img "Thumb" [ref=e138] + - link "息子へのバースデープレゼントを自慢しにきたwwww" [ref=e139] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ogOlOyJ4Etc + - cell [ref=e140]: + - button "Extract Transcript" [ref=e141] [cursor=pointer]: + - img [ref=e142] + - cell "36,093" [ref=e145] + - cell "143" [ref=e146] + - cell "PT13S" [ref=e147] + - cell "2026-05-05 07:30" [ref=e148] + - row "Thumb これが本物のベテランってことじゃんww 32,071 227 PT38S 2026-05-06 23:00" [ref=e149]: + - cell "Thumb これが本物のベテランってことじゃんww" [ref=e150]: + - generic [ref=e151]: + - link "Thumb" [ref=e152] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=STGhRGQbaTU + - img "Thumb" [ref=e153] + - link "これが本物のベテランってことじゃんww" [ref=e154] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=STGhRGQbaTU + - cell [ref=e155]: + - button "Extract Transcript" [ref=e156] [cursor=pointer]: + - img [ref=e157] + - cell "32,071" [ref=e160] + - cell "227" [ref=e161] + - cell "PT38S" [ref=e162] + - cell "2026-05-06 23:00" [ref=e163] + - 'row "Thumb 見るたびにヒヤヒヤするパパとママだけの神反射レジェンド集 #Shorts #反射神経 #親 63,810 378 PT34S 2026-05-06 09:30" [ref=e164]': + - 'cell "Thumb 見るたびにヒヤヒヤするパパとママだけの神反射レジェンド集 #Shorts #反射神経 #親" [ref=e165]': + - generic [ref=e166]: + - link "Thumb" [ref=e167] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Eek5X6dVnbU + - img "Thumb" [ref=e168] + - 'link "見るたびにヒヤヒヤするパパとママだけの神反射レジェンド集 #Shorts #反射神経 #親" [ref=e169] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=Eek5X6dVnbU + - cell [ref=e170]: + - button "Extract Transcript" [ref=e171] [cursor=pointer]: + - img [ref=e172] + - cell "63,810" [ref=e175] + - cell "378" [ref=e176] + - cell "PT34S" [ref=e177] + - cell "2026-05-06 09:30" [ref=e178] + - 'row "Thumb ホテルプールに現れた常連客の正体草 #感動 #動物 #アヒル 3,251,878 24,580 PT19S 2026-05-06 05:40" [ref=e179]': + - 'cell "Thumb ホテルプールに現れた常連客の正体草 #感動 #動物 #アヒル" [ref=e180]': + - generic [ref=e181]: + - link "Thumb" [ref=e182] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=P4unYF0kRoo + - img "Thumb" [ref=e183] + - 'link "ホテルプールに現れた常連客の正体草 #感動 #動物 #アヒル" [ref=e184] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=P4unYF0kRoo + - cell [ref=e185]: + - button "Extract Transcript" [ref=e186] [cursor=pointer]: + - img [ref=e187] + - cell "3,251,878" [ref=e190] + - cell "24,580" [ref=e191] + - cell "PT19S" [ref=e192] + - cell "2026-05-06 05:40" [ref=e193] + - row "Thumb ニワトリ1羽狙ったら農場まるごと敵に回したハンターの末路ww 419,682 2,084 PT33S 2026-05-05 23:00" [ref=e194]: + - cell "Thumb ニワトリ1羽狙ったら農場まるごと敵に回したハンターの末路ww" [ref=e195]: + - generic [ref=e196]: + - link "Thumb" [ref=e197] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=I9sHZiU-IOQ + - img "Thumb" [ref=e198] + - link "ニワトリ1羽狙ったら農場まるごと敵に回したハンターの末路ww" [ref=e199] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=I9sHZiU-IOQ + - cell [ref=e200]: + - button "Extract Transcript" [ref=e201] [cursor=pointer]: + - img [ref=e202] + - cell "419,682" [ref=e205] + - cell "2,084" [ref=e206] + - cell "PT33S" [ref=e207] + - cell "2026-05-05 23:00" [ref=e208] + - 'row "Thumb お菓子を根こそぎゲットしたとんでもない天才たちwww #天才すぎる 4,031,252 30,165 PT15S 2026-05-04 11:30" [ref=e209]': + - 'cell "Thumb お菓子を根こそぎゲットしたとんでもない天才たちwww #天才すぎる" [ref=e210]': + - generic [ref=e211]: + - link "Thumb" [ref=e212] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=-Fdim-pLF84 + - img "Thumb" [ref=e213] + - 'link "お菓子を根こそぎゲットしたとんでもない天才たちwww #天才すぎる" [ref=e214] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=-Fdim-pLF84 + - cell [ref=e215]: + - button "Extract Transcript" [ref=e216] [cursor=pointer]: + - img [ref=e217] + - cell "4,031,252" [ref=e220] + - cell "30,165" [ref=e221] + - cell "PT15S" [ref=e222] + - cell "2026-05-04 11:30" [ref=e223] + - 'row "Thumb 私たちが忘れかけていた世界の大きさ #癒し動画 #1人称観察カメラ #30秒動画 #ショート 154,430 2,285 PT30S 2026-05-04 08:10" [ref=e224]': + - 'cell "Thumb 私たちが忘れかけていた世界の大きさ #癒し動画 #1人称観察カメラ #30秒動画 #ショート" [ref=e225]': + - generic [ref=e226]: + - link "Thumb" [ref=e227] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=YKADYzr-HUc + - img "Thumb" [ref=e228] + - 'link "私たちが忘れかけていた世界の大きさ #癒し動画 #1人称観察カメラ #30秒動画 #ショート" [ref=e229] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=YKADYzr-HUc + - cell [ref=e230]: + - button "Extract Transcript" [ref=e231] [cursor=pointer]: + - img [ref=e232] + - cell "154,430" [ref=e235] + - cell "2,285" [ref=e236] + - cell "PT30S" [ref=e237] + - cell "2026-05-04 08:10" [ref=e238] + - row "Thumb 犬ダメって言ってた教授の末路wwww(どんでん返し注意) 81,319 498 PT18S 2026-05-04 03:50" [ref=e239]: + - cell "Thumb 犬ダメって言ってた教授の末路wwww(どんでん返し注意)" [ref=e240]: + - generic [ref=e241]: + - link "Thumb" [ref=e242] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=MbfztpgsNl8 + - img "Thumb" [ref=e243] + - link "犬ダメって言ってた教授の末路wwww(どんでん返し注意)" [ref=e244] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=MbfztpgsNl8 + - cell [ref=e245]: + - button "Extract Transcript" [ref=e246] [cursor=pointer]: + - img [ref=e247] + - cell "81,319" [ref=e250] + - cell "498" [ref=e251] + - cell "PT18S" [ref=e252] + - cell "2026-05-04 03:50" [ref=e253] + - row "Thumb 獣医がご飯を食べられない理由 70,693 221 PT15S 2026-05-03 09:01" [ref=e254]: + - cell "Thumb 獣医がご飯を食べられない理由" [ref=e255]: + - generic [ref=e256]: + - link "Thumb" [ref=e257] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=iLxYHVRQljo + - img "Thumb" [ref=e258] + - link "獣医がご飯を食べられない理由" [ref=e259] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=iLxYHVRQljo + - cell [ref=e260]: + - button "Extract Transcript" [ref=e261] [cursor=pointer]: + - img [ref=e262] + - cell "70,693" [ref=e265] + - cell "221" [ref=e266] + - cell "PT15S" [ref=e267] + - cell "2026-05-03 09:01" [ref=e268] + - 'row "Thumb 捨てられた黒バナナが金に変わる瞬間 #Shorts #ライフハック 574,494 1,863 PT29S 2026-05-03 05:40" [ref=e269]': + - 'cell "Thumb 捨てられた黒バナナが金に変わる瞬間 #Shorts #ライフハック" [ref=e270]': + - generic [ref=e271]: + - link "Thumb" [ref=e272] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=fgl3vRMBer8 + - img "Thumb" [ref=e273] + - 'link "捨てられた黒バナナが金に変わる瞬間 #Shorts #ライフハック" [ref=e274] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=fgl3vRMBer8 + - cell [ref=e275]: + - button "Extract Transcript" [ref=e276] [cursor=pointer]: + - img [ref=e277] + - cell "574,494" [ref=e280] + - cell "1,863" [ref=e281] + - cell "PT29S" [ref=e282] + - cell "2026-05-03 05:40" [ref=e283] + - row "Thumb ハスキーおすすめですよ 私だけ苦しむの嫌なんでww 910,380 10,115 PT15S 2026-05-03 00:01" [ref=e284]: + - cell "Thumb ハスキーおすすめですよ 私だけ苦しむの嫌なんでww" [ref=e285]: + - generic [ref=e286]: + - link "Thumb" [ref=e287] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=xQ1aNukn10M + - img "Thumb" [ref=e288] + - link "ハスキーおすすめですよ 私だけ苦しむの嫌なんでww" [ref=e289] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=xQ1aNukn10M + - cell [ref=e290]: + - button "Extract Transcript" [ref=e291] [cursor=pointer]: + - img [ref=e292] + - cell "910,380" [ref=e295] + - cell "10,115" [ref=e296] + - cell "PT15S" [ref=e297] + - cell "2026-05-03 00:01" [ref=e298] + - row "Thumb 譲渡詐欺かと思ったらwwww(まさかの展開) 20,720 105 PT12S 2026-05-02 07:10" [ref=e299]: + - cell "Thumb 譲渡詐欺かと思ったらwwww(まさかの展開)" [ref=e300]: + - generic [ref=e301]: + - link "Thumb" [ref=e302] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=V4kXFoXwmqQ + - img "Thumb" [ref=e303] + - link "譲渡詐欺かと思ったらwwww(まさかの展開)" [ref=e304] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=V4kXFoXwmqQ + - cell [ref=e305]: + - button "Extract Transcript" [ref=e306] [cursor=pointer]: + - img [ref=e307] + - cell "20,720" [ref=e310] + - cell "105" [ref=e311] + - cell "PT12S" [ref=e312] + - cell "2026-05-02 07:10" [ref=e313] + - row "Thumb 末っ子の初デートww 47,991 249 PT15S 2026-05-01 09:30" [ref=e314]: + - cell "Thumb 末っ子の初デートww" [ref=e315]: + - generic [ref=e316]: + - link "Thumb" [ref=e317] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=CA5eA8k4Q8A + - img "Thumb" [ref=e318] + - link "末っ子の初デートww" [ref=e319] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=CA5eA8k4Q8A + - cell [ref=e320]: + - button "Extract Transcript" [ref=e321] [cursor=pointer]: + - img [ref=e322] + - cell "47,991" [ref=e325] + - cell "249" [ref=e326] + - cell "PT15S" [ref=e327] + - cell "2026-05-01 09:30" [ref=e328] + - row "Thumb 【神回】道路の真ん中で仁王立ちするリスが強キャラすぎたw 85,283 745 PT11S 2026-05-01 06:10" [ref=e329]: + - cell "Thumb 【神回】道路の真ん中で仁王立ちするリスが強キャラすぎたw" [ref=e330]: + - generic [ref=e331]: + - link "Thumb" [ref=e332] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=0Pg_UZfiBMM + - img "Thumb" [ref=e333] + - link "【神回】道路の真ん中で仁王立ちするリスが強キャラすぎたw" [ref=e334] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=0Pg_UZfiBMM + - cell [ref=e335]: + - button "Extract Transcript" [ref=e336] [cursor=pointer]: + - img [ref=e337] + - cell "85,283" [ref=e340] + - cell "745" [ref=e341] + - cell "PT11S" [ref=e342] + - cell "2026-05-01 06:10" [ref=e343] + - row "Thumb フランスで女性が会計するとこうなるww 48,780 357 PT16S 2026-04-30 06:30" [ref=e344]: + - cell "Thumb フランスで女性が会計するとこうなるww" [ref=e345]: + - generic [ref=e346]: + - link "Thumb" [ref=e347] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=b3H0PHl2lbo + - img "Thumb" [ref=e348] + - link "フランスで女性が会計するとこうなるww" [ref=e349] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=b3H0PHl2lbo + - cell [ref=e350]: + - button "Extract Transcript" [ref=e351] [cursor=pointer]: + - img [ref=e352] + - cell "48,780" [ref=e355] + - cell "357" [ref=e356] + - cell "PT16S" [ref=e357] + - cell "2026-04-30 06:30" [ref=e358] + - row "Thumb 野良犬を保護したらマジで予想外すぎてガチで焦ったww 41,692 283 PT15S 2026-04-29 11:41" [ref=e359]: + - cell "Thumb 野良犬を保護したらマジで予想外すぎてガチで焦ったww" [ref=e360]: + - generic [ref=e361]: + - link "Thumb" [ref=e362] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Pk5McJ55waY + - img "Thumb" [ref=e363] + - link "野良犬を保護したらマジで予想外すぎてガチで焦ったww" [ref=e364] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Pk5McJ55waY + - cell [ref=e365]: + - button "Extract Transcript" [ref=e366] [cursor=pointer]: + - img [ref=e367] + - cell "41,692" [ref=e370] + - cell "283" [ref=e371] + - cell "PT15S" [ref=e372] + - cell "2026-04-29 11:41" [ref=e373] + - 'row "Thumb またビギナーの匂い嗅ぎつけたサーフィンガチ勢w #タヒチ #チョープー #サーフィン 1,587,360 35,856 PT29S 2026-04-29 07:30" [ref=e374]': + - 'cell "Thumb またビギナーの匂い嗅ぎつけたサーフィンガチ勢w #タヒチ #チョープー #サーフィン" [ref=e375]': + - generic [ref=e376]: + - link "Thumb" [ref=e377] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=nxr3XMv33Qk + - img "Thumb" [ref=e378] + - 'link "またビギナーの匂い嗅ぎつけたサーフィンガチ勢w #タヒチ #チョープー #サーフィン" [ref=e379] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=nxr3XMv33Qk + - cell [ref=e380]: + - button "Extract Transcript" [ref=e381] [cursor=pointer]: + - img [ref=e382] + - cell "1,587,360" [ref=e385] + - cell "35,856" [ref=e386] + - cell "PT29S" [ref=e387] + - cell "2026-04-29 07:30" [ref=e388] + - row "Thumb ナスカー史上最高の広告になった事故ww 172,130 975 PT20S 2026-04-28 10:00" [ref=e389]: + - cell "Thumb ナスカー史上最高の広告になった事故ww" [ref=e390]: + - generic [ref=e391]: + - link "Thumb" [ref=e392] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=F2SsWbceSTk + - img "Thumb" [ref=e393] + - link "ナスカー史上最高の広告になった事故ww" [ref=e394] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=F2SsWbceSTk + - cell [ref=e395]: + - button "Extract Transcript" [ref=e396] [cursor=pointer]: + - img [ref=e397] + - cell "172,130" [ref=e400] + - cell "975" [ref=e401] + - cell "PT20S" [ref=e402] + - cell "2026-04-28 10:00" [ref=e403] + - 'row "Thumb まさかの緊急着陸ヤバすぎ🤣自宅の裏庭に気球が降りてきた理由 #Shorts 29,776 166 PT26S 2026-04-28 06:20" [ref=e404]': + - 'cell "Thumb まさかの緊急着陸ヤバすぎ🤣自宅の裏庭に気球が降りてきた理由 #Shorts" [ref=e405]': + - generic [ref=e406]: + - link "Thumb" [ref=e407] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=aC_pz7wYFu8 + - img "Thumb" [ref=e408] + - 'link "まさかの緊急着陸ヤバすぎ🤣自宅の裏庭に気球が降りてきた理由 #Shorts" [ref=e409] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=aC_pz7wYFu8 + - cell [ref=e410]: + - button "Extract Transcript" [ref=e411] [cursor=pointer]: + - img [ref=e412] + - cell "29,776" [ref=e415] + - cell "166" [ref=e416] + - cell "PT26S" [ref=e417] + - cell "2026-04-28 06:20" [ref=e418] + - row "Thumb 爆音なのに超丁寧なお願い笑 4,405,395 57,279 PT8S 2026-04-27 11:00" [ref=e419]: + - cell "Thumb 爆音なのに超丁寧なお願い笑" [ref=e420]: + - generic [ref=e421]: + - link "Thumb" [ref=e422] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=V1SVT70Y-VQ + - img "Thumb" [ref=e423] + - link "爆音なのに超丁寧なお願い笑" [ref=e424] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=V1SVT70Y-VQ + - cell [ref=e425]: + - button "Extract Transcript" [ref=e426] [cursor=pointer]: + - img [ref=e427] + - cell "4,405,395" [ref=e430] + - cell "57,279" [ref=e431] + - cell "PT8S" [ref=e432] + - cell "2026-04-27 11:00" [ref=e433] + - row "Thumb 頭掻いてるハヤブサを襲おうとしたら逆襲されかけた瞬間 5,515,156 40,327 PT14S 2026-04-27 08:20" [ref=e434]: + - cell "Thumb 頭掻いてるハヤブサを襲おうとしたら逆襲されかけた瞬間" [ref=e435]: + - generic [ref=e436]: + - link "Thumb" [ref=e437] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Z6ZYO_-oWX0 + - img "Thumb" [ref=e438] + - link "頭掻いてるハヤブサを襲おうとしたら逆襲されかけた瞬間" [ref=e439] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Z6ZYO_-oWX0 + - cell [ref=e440]: + - button "Extract Transcript" [ref=e441] [cursor=pointer]: + - img [ref=e442] + - cell "5,515,156" [ref=e445] + - cell "40,327" [ref=e446] + - cell "PT14S" [ref=e447] + - cell "2026-04-27 08:20" [ref=e448] + - row "Thumb 【感動】この子がまっすぐ育ったと確信した瞬間 42,939 451 PT31S 2026-04-26 12:50" [ref=e449]: + - cell "Thumb 【感動】この子がまっすぐ育ったと確信した瞬間" [ref=e450]: + - generic [ref=e451]: + - link "Thumb" [ref=e452] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=UJHf_26hQN8 + - img "Thumb" [ref=e453] + - link "【感動】この子がまっすぐ育ったと確信した瞬間" [ref=e454] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=UJHf_26hQN8 + - cell [ref=e455]: + - button "Extract Transcript" [ref=e456] [cursor=pointer]: + - img [ref=e457] + - cell "42,939" [ref=e460] + - cell "451" [ref=e461] + - cell "PT31S" [ref=e462] + - cell "2026-04-26 12:50" [ref=e463] + - row "Thumb オリンピック史上最高の伝説的オープニング 74,649 685 PT27S 2026-04-26 04:46" [ref=e464]: + - cell "Thumb オリンピック史上最高の伝説的オープニング" [ref=e465]: + - generic [ref=e466]: + - link "Thumb" [ref=e467] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=2UgfZ536L0U + - img "Thumb" [ref=e468] + - link "オリンピック史上最高の伝説的オープニング" [ref=e469] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=2UgfZ536L0U + - cell [ref=e470]: + - button "Extract Transcript" [ref=e471] [cursor=pointer]: + - img [ref=e472] + - cell "74,649" [ref=e475] + - cell "685" [ref=e476] + - cell "PT27S" [ref=e477] + - cell "2026-04-26 04:46" [ref=e478] + - row "Thumb 知らない人にも話しかけたくなる椅子 3,046,157 29,530 PT29S 2026-04-25 11:30" [ref=e479]: + - cell "Thumb 知らない人にも話しかけたくなる椅子" [ref=e480]: + - generic [ref=e481]: + - link "Thumb" [ref=e482] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=oXpnR_h7xFA + - img "Thumb" [ref=e483] + - link "知らない人にも話しかけたくなる椅子" [ref=e484] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=oXpnR_h7xFA + - cell [ref=e485]: + - button "Extract Transcript" [ref=e486] [cursor=pointer]: + - img [ref=e487] + - cell "3,046,157" [ref=e490] + - cell "29,530" [ref=e491] + - cell "PT29S" [ref=e492] + - cell "2026-04-25 11:30" [ref=e493] + - row "Thumb 猫飼いさんなら絶対に蚊帳を買うべき理由 497,878 2,815 PT9S 2026-04-25 07:15" [ref=e494]: + - cell "Thumb 猫飼いさんなら絶対に蚊帳を買うべき理由" [ref=e495]: + - generic [ref=e496]: + - link "Thumb" [ref=e497] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=8rASRHlrUBk + - img "Thumb" [ref=e498] + - link "猫飼いさんなら絶対に蚊帳を買うべき理由" [ref=e499] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=8rASRHlrUBk + - cell [ref=e500]: + - button "Extract Transcript" [ref=e501] [cursor=pointer]: + - img [ref=e502] + - cell "497,878" [ref=e505] + - cell "2,815" [ref=e506] + - cell "PT9S" [ref=e507] + - cell "2026-04-25 07:15" [ref=e508] + - row "Thumb スイス伝説の黒い壁 ブラックウォールについに挑戦⛷️ 18,854 61 PT18S 2026-04-25 04:00" [ref=e509]: + - cell "Thumb スイス伝説の黒い壁 ブラックウォールについに挑戦⛷️" [ref=e510]: + - generic [ref=e511]: + - link "Thumb" [ref=e512] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=5MiOLplN2zQ + - img "Thumb" [ref=e513] + - link "スイス伝説の黒い壁 ブラックウォールについに挑戦⛷️" [ref=e514] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=5MiOLplN2zQ + - cell [ref=e515]: + - button "Extract Transcript" [ref=e516] [cursor=pointer]: + - img [ref=e517] + - cell "18,854" [ref=e520] + - cell "61" [ref=e521] + - cell "PT18S" [ref=e522] + - cell "2026-04-25 04:00" [ref=e523] + - 'row "Thumb フロリダでしか見られない光景🐊 #shorts #florida #動物 118,173 681 PT30S 2026-04-24 12:40" [ref=e524]': + - 'cell "Thumb フロリダでしか見られない光景🐊 #shorts #florida #動物" [ref=e525]': + - generic [ref=e526]: + - link "Thumb" [ref=e527] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=nQ_JjnQFnlg + - img "Thumb" [ref=e528] + - 'link "フロリダでしか見られない光景🐊 #shorts #florida #動物" [ref=e529] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=nQ_JjnQFnlg + - cell [ref=e530]: + - button "Extract Transcript" [ref=e531] [cursor=pointer]: + - img [ref=e532] + - cell "118,173" [ref=e535] + - cell "681" [ref=e536] + - cell "PT30S" [ref=e537] + - cell "2026-04-24 12:40" [ref=e538] + - 'row "Thumb ヒマラヤ旅行中に出会った奇跡の縁🐺 #ライダー #オオカミ #ヒマラヤ 28,116 242 PT25S 2026-04-24 09:00" [ref=e539]': + - 'cell "Thumb ヒマラヤ旅行中に出会った奇跡の縁🐺 #ライダー #オオカミ #ヒマラヤ" [ref=e540]': + - generic [ref=e541]: + - link "Thumb" [ref=e542] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=-gFZudClg5U + - img "Thumb" [ref=e543] + - 'link "ヒマラヤ旅行中に出会った奇跡の縁🐺 #ライダー #オオカミ #ヒマラヤ" [ref=e544] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=-gFZudClg5U + - cell [ref=e545]: + - button "Extract Transcript" [ref=e546] [cursor=pointer]: + - img [ref=e547] + - cell "28,116" [ref=e550] + - cell "242" [ref=e551] + - cell "PT25S" [ref=e552] + - cell "2026-04-24 09:00" [ref=e553] + - row "Thumb この家が平和な理由wwww 7,670,201 44,790 PT21S 2026-04-24 05:40" [ref=e554]: + - cell "Thumb この家が平和な理由wwww" [ref=e555]: + - generic [ref=e556]: + - link "Thumb" [ref=e557] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=If4uPizvYr0 + - img "Thumb" [ref=e558] + - link "この家が平和な理由wwww" [ref=e559] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=If4uPizvYr0 + - cell [ref=e560]: + - button "Extract Transcript" [ref=e561] [cursor=pointer]: + - img [ref=e562] + - cell "7,670,201" [ref=e565] + - cell "44,790" [ref=e566] + - cell "PT21S" [ref=e567] + - cell "2026-04-24 05:40" [ref=e568] + - row "Thumb この映像に隠された「違和感」に気づけますか?(※衝撃の結末) 42,638 195 PT49S 2026-04-23 12:45" [ref=e569]: + - cell "Thumb この映像に隠された「違和感」に気づけますか?(※衝撃の結末)" [ref=e570]: + - generic [ref=e571]: + - link "Thumb" [ref=e572] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=QPU2DaPNtes + - img "Thumb" [ref=e573] + - link "この映像に隠された「違和感」に気づけますか?(※衝撃の結末)" [ref=e574] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=QPU2DaPNtes + - cell [ref=e575]: + - button "Extract Transcript" [ref=e576] [cursor=pointer]: + - img [ref=e577] + - cell "42,638" [ref=e580] + - cell "195" [ref=e581] + - cell "PT49S" [ref=e582] + - cell "2026-04-23 12:45" [ref=e583] + - row "Thumb 高速道路でいきなりブレーキが壊れた時の神対応がヤバすぎた😲 4,769,930 51,626 PT35S 2026-04-23 06:40" [ref=e584]: + - cell "Thumb 高速道路でいきなりブレーキが壊れた時の神対応がヤバすぎた😲" [ref=e585]: + - generic [ref=e586]: + - link "Thumb" [ref=e587] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=tuYXw77Uj8Y + - img "Thumb" [ref=e588] + - link "高速道路でいきなりブレーキが壊れた時の神対応がヤバすぎた😲" [ref=e589] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=tuYXw77Uj8Y + - cell [ref=e590]: + - button "Extract Transcript" [ref=e591] [cursor=pointer]: + - img [ref=e592] + - cell "4,769,930" [ref=e595] + - cell "51,626" [ref=e596] + - cell "PT35S" [ref=e597] + - cell "2026-04-23 06:40" [ref=e598] + - row "Thumb 目も合わせない相手選手に見せた行動 123,861 774 PT23S 2026-04-21 23:01" [ref=e599]: + - cell "Thumb 目も合わせない相手選手に見せた行動" [ref=e600]: + - generic [ref=e601]: + - link "Thumb" [ref=e602] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ujVpn_VWL-4 + - img "Thumb" [ref=e603] + - link "目も合わせない相手選手に見せた行動" [ref=e604] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ujVpn_VWL-4 + - cell [ref=e605]: + - button "Extract Transcript" [ref=e606] [cursor=pointer]: + - img [ref=e607] + - cell "123,861" [ref=e610] + - cell "774" [ref=e611] + - cell "PT23S" [ref=e612] + - cell "2026-04-21 23:01" [ref=e613] + - 'row "Thumb 友達とやったら神すぎたwww #オンラインかくれんぼ #神隠れ 10,005,887 124,956 PT43S 2026-04-21 07:40" [ref=e614]': + - 'cell "Thumb 友達とやったら神すぎたwww #オンラインかくれんぼ #神隠れ" [ref=e615]': + - generic [ref=e616]: + - link "Thumb" [ref=e617] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=GGt_SYvf5TU + - img "Thumb" [ref=e618] + - 'link "友達とやったら神すぎたwww #オンラインかくれんぼ #神隠れ" [ref=e619] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=GGt_SYvf5TU + - cell [ref=e620]: + - button "Extract Transcript" [ref=e621] [cursor=pointer]: + - img [ref=e622] + - cell "10,005,887" [ref=e625] + - cell "124,956" [ref=e626] + - cell "PT43S" [ref=e627] + - cell "2026-04-21 07:40" [ref=e628] + - row "Thumb 奥さんを愛しすぎるとこうなりますww 58,175 280 PT17S 2026-04-20 11:50" [ref=e629]: + - cell "Thumb 奥さんを愛しすぎるとこうなりますww" [ref=e630]: + - generic [ref=e631]: + - link "Thumb" [ref=e632] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=iMqedtBhwrI + - img "Thumb" [ref=e633] + - link "奥さんを愛しすぎるとこうなりますww" [ref=e634] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=iMqedtBhwrI + - cell [ref=e635]: + - button "Extract Transcript" [ref=e636] [cursor=pointer]: + - img [ref=e637] + - cell "58,175" [ref=e640] + - cell "280" [ref=e641] + - cell "PT17S" [ref=e642] + - cell "2026-04-20 11:50" [ref=e643] + - row "Thumb 友達といたら絶対楽しいやつww 123,279 201 PT28S 2026-04-20 03:00" [ref=e644]: + - cell "Thumb 友達といたら絶対楽しいやつww" [ref=e645]: + - generic [ref=e646]: + - link "Thumb" [ref=e647] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Jt_PmgVXE18 + - img "Thumb" [ref=e648] + - link "友達といたら絶対楽しいやつww" [ref=e649] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Jt_PmgVXE18 + - cell [ref=e650]: + - button "Extract Transcript" [ref=e651] [cursor=pointer]: + - img [ref=e652] + - cell "123,279" [ref=e655] + - cell "201" [ref=e656] + - cell "PT28S" [ref=e657] + - cell "2026-04-20 03:00" [ref=e658] + - row "Thumb ホテルのハウスキーパーに勝負を挑んだ宿泊客の末路ww 48,342 567 PT24S 2026-04-19 07:45" [ref=e659]: + - cell "Thumb ホテルのハウスキーパーに勝負を挑んだ宿泊客の末路ww" [ref=e660]: + - generic [ref=e661]: + - link "Thumb" [ref=e662] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=pnkMbIpn3ts + - img "Thumb" [ref=e663] + - link "ホテルのハウスキーパーに勝負を挑んだ宿泊客の末路ww" [ref=e664] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=pnkMbIpn3ts + - cell [ref=e665]: + - button "Extract Transcript" [ref=e666] [cursor=pointer]: + - img [ref=e667] + - cell "48,342" [ref=e670] + - cell "567" [ref=e671] + - cell "PT24S" [ref=e672] + - cell "2026-04-19 07:45" [ref=e673] + - row "Thumb バーテンダーのありがたすぎる勘違いwwww 10,642,830 180,855 PT29S 2026-04-19 00:00" [ref=e674]: + - cell "Thumb バーテンダーのありがたすぎる勘違いwwww" [ref=e675]: + - generic [ref=e676]: + - link "Thumb" [ref=e677] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bAUQnmzzhKs + - img "Thumb" [ref=e678] + - link "バーテンダーのありがたすぎる勘違いwwww" [ref=e679] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bAUQnmzzhKs + - cell [ref=e680]: + - button "Extract Transcript" [ref=e681] [cursor=pointer]: + - img [ref=e682] + - cell "10,642,830" [ref=e685] + - cell "180,855" [ref=e686] + - cell "PT29S" [ref=e687] + - cell "2026-04-19 00:00" [ref=e688] + - row "Thumb 心臓がもたない… K9(警察犬)の訓練シーンが可愛すぎた🐾 65,906 527 PT27S 2026-04-18 09:31" [ref=e689]: + - cell "Thumb 心臓がもたない… K9(警察犬)の訓練シーンが可愛すぎた🐾" [ref=e690]: + - generic [ref=e691]: + - link "Thumb" [ref=e692] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lkJl9i5Y0dY + - img "Thumb" [ref=e693] + - link "心臓がもたない… K9(警察犬)の訓練シーンが可愛すぎた🐾" [ref=e694] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lkJl9i5Y0dY + - cell [ref=e695]: + - button "Extract Transcript" [ref=e696] [cursor=pointer]: + - img [ref=e697] + - cell "65,906" [ref=e700] + - cell "527" [ref=e701] + - cell "PT27S" [ref=e702] + - cell "2026-04-18 09:31" [ref=e703] + - row "Thumb 訓練大惨事wwww 134,426 227 PT10S 2026-04-18 05:50" [ref=e704]: + - cell "Thumb 訓練大惨事wwww" [ref=e705]: + - generic [ref=e706]: + - link "Thumb" [ref=e707] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=V-yN1lTNNPA + - img "Thumb" [ref=e708] + - link "訓練大惨事wwww" [ref=e709] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=V-yN1lTNNPA + - cell [ref=e710]: + - button "Extract Transcript" [ref=e711] [cursor=pointer]: + - img [ref=e712] + - cell "134,426" [ref=e715] + - cell "227" [ref=e716] + - cell "PT10S" [ref=e717] + - cell "2026-04-18 05:50" [ref=e718] + - row "Thumb 初心者と古参の違いwwww 29,578 118 PT17S 2026-04-18 01:00" [ref=e719]: + - cell "Thumb 初心者と古参の違いwwww" [ref=e720]: + - generic [ref=e721]: + - link "Thumb" [ref=e722] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=UOo8lLnFujQ + - img "Thumb" [ref=e723] + - link "初心者と古参の違いwwww" [ref=e724] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=UOo8lLnFujQ + - cell [ref=e725]: + - button "Extract Transcript" [ref=e726] [cursor=pointer]: + - img [ref=e727] + - cell "29,578" [ref=e730] + - cell "118" [ref=e731] + - cell "PT17S" [ref=e732] + - cell "2026-04-18 01:00" [ref=e733] + - row "Thumb 技術の使用が許可された日ww 1,508,407 14,149 PT19S 2026-04-17 06:38" [ref=e734]: + - cell "Thumb 技術の使用が許可された日ww" [ref=e735]: + - generic [ref=e736]: + - link "Thumb" [ref=e737] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=G4kDmaLO03c + - img "Thumb" [ref=e738] + - link "技術の使用が許可された日ww" [ref=e739] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=G4kDmaLO03c + - cell [ref=e740]: + - button "Extract Transcript" [ref=e741] [cursor=pointer]: + - img [ref=e742] + - cell "1,508,407" [ref=e745] + - cell "14,149" [ref=e746] + - cell "PT19S" [ref=e747] + - cell "2026-04-17 06:38" [ref=e748] + - row "Thumb もう一人じゃない猫と出会って変わった日常 168,940 2,839 PT26S 2026-04-17 02:50" [ref=e749]: + - cell "Thumb もう一人じゃない猫と出会って変わった日常" [ref=e750]: + - generic [ref=e751]: + - link "Thumb" [ref=e752] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=9s8BrjFu6C4 + - img "Thumb" [ref=e753] + - link "もう一人じゃない猫と出会って変わった日常" [ref=e754] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=9s8BrjFu6C4 + - cell [ref=e755]: + - button "Extract Transcript" [ref=e756] [cursor=pointer]: + - img [ref=e757] + - cell "168,940" [ref=e760] + - cell "2,839" [ref=e761] + - cell "PT26S" [ref=e762] + - cell "2026-04-17 02:50" [ref=e763] + - row "Thumb 偶然のふりして街中で会った時の旦那の反応が面白すぎるwwww 8,747,591 110,752 PT25S 2026-04-16 10:12" [ref=e764]: + - cell "Thumb 偶然のふりして街中で会った時の旦那の反応が面白すぎるwwww" [ref=e765]: + - generic [ref=e766]: + - link "Thumb" [ref=e767] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=7-2LBkw-YTU + - img "Thumb" [ref=e768] + - link "偶然のふりして街中で会った時の旦那の反応が面白すぎるwwww" [ref=e769] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=7-2LBkw-YTU + - cell [ref=e770]: + - button "Extract Transcript" [ref=e771] [cursor=pointer]: + - img [ref=e772] + - cell "8,747,591" [ref=e775] + - cell "110,752" [ref=e776] + - cell "PT25S" [ref=e777] + - cell "2026-04-16 10:12" [ref=e778] + - row "Thumb 1年近く誰にも選ばれなかった保護猫の「恩返し」が凄すぎた 175,115 1,959 PT30S 2026-04-16 04:02" [ref=e779]: + - cell "Thumb 1年近く誰にも選ばれなかった保護猫の「恩返し」が凄すぎた" [ref=e780]: + - generic [ref=e781]: + - link "Thumb" [ref=e782] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=UTOxlbHdCA0 + - img "Thumb" [ref=e783] + - link "1年近く誰にも選ばれなかった保護猫の「恩返し」が凄すぎた" [ref=e784] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=UTOxlbHdCA0 + - cell [ref=e785]: + - button "Extract Transcript" [ref=e786] [cursor=pointer]: + - img [ref=e787] + - cell "175,115" [ref=e790] + - cell "1,959" [ref=e791] + - cell "PT30S" [ref=e792] + - cell "2026-04-16 04:02" [ref=e793] + - row "Thumb 40年間世界が知らなかったベビーシッターの二重生活 93,303 1,051 PT31S 2026-04-15 06:57" [ref=e794]: + - cell "Thumb 40年間世界が知らなかったベビーシッターの二重生活" [ref=e795]: + - generic [ref=e796]: + - link "Thumb" [ref=e797] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=e2VZsfOTpAo + - img "Thumb" [ref=e798] + - link "40年間世界が知らなかったベビーシッターの二重生活" [ref=e799] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=e2VZsfOTpAo + - cell [ref=e800]: + - button "Extract Transcript" [ref=e801] [cursor=pointer]: + - img [ref=e802] + - cell "93,303" [ref=e805] + - cell "1,051" [ref=e806] + - cell "PT31S" [ref=e807] + - cell "2026-04-15 06:57" [ref=e808] + - 'row "Thumb 壁に穴を開けた犯人を母が特定ww(衝撃の結末) #Shorts #あるある 309,212 367 PT14S 2026-04-14 12:32" [ref=e809]': + - 'cell "Thumb 壁に穴を開けた犯人を母が特定ww(衝撃の結末) #Shorts #あるある" [ref=e810]': + - generic [ref=e811]: + - link "Thumb" [ref=e812] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=S_cJXSncDjs + - img "Thumb" [ref=e813] + - 'link "壁に穴を開けた犯人を母が特定ww(衝撃の結末) #Shorts #あるある" [ref=e814] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=S_cJXSncDjs + - cell [ref=e815]: + - button "Extract Transcript" [ref=e816] [cursor=pointer]: + - img [ref=e817] + - cell "309,212" [ref=e820] + - cell "367" [ref=e821] + - cell "PT14S" [ref=e822] + - cell "2026-04-14 12:32" [ref=e823] + - 'row "Thumb 史上最難関オーダー客に店長が出した神回答www #Shorts #あるある #神対応 1,812,812 19,403 PT10S 2026-04-14 09:30" [ref=e824]': + - 'cell "Thumb 史上最難関オーダー客に店長が出した神回答www #Shorts #あるある #神対応" [ref=e825]': + - generic [ref=e826]: + - link "Thumb" [ref=e827] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=qsuuTArtWmk + - img "Thumb" [ref=e828] + - 'link "史上最難関オーダー客に店長が出した神回答www #Shorts #あるある #神対応" [ref=e829] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=qsuuTArtWmk + - cell [ref=e830]: + - button "Extract Transcript" [ref=e831] [cursor=pointer]: + - img [ref=e832] + - cell "1,812,812" [ref=e835] + - cell "19,403" [ref=e836] + - cell "PT10S" [ref=e837] + - cell "2026-04-14 09:30" [ref=e838] + - row "Thumb クールなおじさんが姪っ子をおしゃれに撮る方法 12,861 149 PT22S 2026-04-14 05:30" [ref=e839]: + - cell "Thumb クールなおじさんが姪っ子をおしゃれに撮る方法" [ref=e840]: + - generic [ref=e841]: + - link "Thumb" [ref=e842] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=JWEh_GgPNzg + - img "Thumb" [ref=e843] + - link "クールなおじさんが姪っ子をおしゃれに撮る方法" [ref=e844] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=JWEh_GgPNzg + - cell [ref=e845]: + - button "Extract Transcript" [ref=e846] [cursor=pointer]: + - img [ref=e847] + - cell "12,861" [ref=e850] + - cell "149" [ref=e851] + - cell "PT22S" [ref=e852] + - cell "2026-04-14 05:30" [ref=e853] + - row "Thumb 試合中にレベルアップしちゃったww 40,834 451 PT20S 2026-04-13 23:01" [ref=e854]: + - cell "Thumb 試合中にレベルアップしちゃったww" [ref=e855]: + - generic [ref=e856]: + - link "Thumb" [ref=e857] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rfN2JDVbLck + - img "Thumb" [ref=e858] + - link "試合中にレベルアップしちゃったww" [ref=e859] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rfN2JDVbLck + - cell [ref=e860]: + - button "Extract Transcript" [ref=e861] [cursor=pointer]: + - img [ref=e862] + - cell "40,834" [ref=e865] + - cell "451" [ref=e866] + - cell "PT20S" [ref=e867] + - cell "2026-04-13 23:01" [ref=e868] + - row "Thumb ドラマのワンシーンみたいな20歳の帰り道 42,955 202 PT20S 2026-04-13 08:17" [ref=e869]: + - cell "Thumb ドラマのワンシーンみたいな20歳の帰り道" [ref=e870]: + - generic [ref=e871]: + - link "Thumb" [ref=e872] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bK5q9peFPG0 + - img "Thumb" [ref=e873] + - link "ドラマのワンシーンみたいな20歳の帰り道" [ref=e874] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bK5q9peFPG0 + - cell [ref=e875]: + - button "Extract Transcript" [ref=e876] [cursor=pointer]: + - img [ref=e877] + - cell "42,955" [ref=e880] + - cell "202" [ref=e881] + - cell "PT20S" [ref=e882] + - cell "2026-04-13 08:17" [ref=e883] + - row "Thumb ゴルフ史上最もありえないハザードww 106,843 185 PT31S 2026-04-12 23:00" [ref=e884]: + - cell "Thumb ゴルフ史上最もありえないハザードww" [ref=e885]: + - generic [ref=e886]: + - link "Thumb" [ref=e887] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Nk7CYuXsP7A + - img "Thumb" [ref=e888] + - link "ゴルフ史上最もありえないハザードww" [ref=e889] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Nk7CYuXsP7A + - cell [ref=e890]: + - button "Extract Transcript" [ref=e891] [cursor=pointer]: + - img [ref=e892] + - cell "106,843" [ref=e895] + - cell "185" [ref=e896] + - cell "PT31S" [ref=e897] + - cell "2026-04-12 23:00" [ref=e898] + - row "Thumb アザラシの毛を逆なでしてみた結果wwww 132,042 643 PT15S 2026-04-12 09:28" [ref=e899]: + - cell "Thumb アザラシの毛を逆なでしてみた結果wwww" [ref=e900]: + - generic [ref=e901]: + - link "Thumb" [ref=e902] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=xvsoN6eDH-Q + - img "Thumb" [ref=e903] + - link "アザラシの毛を逆なでしてみた結果wwww" [ref=e904] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=xvsoN6eDH-Q + - cell [ref=e905]: + - button "Extract Transcript" [ref=e906] [cursor=pointer]: + - img [ref=e907] + - cell "132,042" [ref=e910] + - cell "643" [ref=e911] + - cell "PT15S" [ref=e912] + - cell "2026-04-12 09:28" [ref=e913] + - row "Thumb トラックのドラレコに映った緊迫の瞬間、運転手がクラクションを鳴らし続けた理由 8,057,225 45,844 PT35S 2026-04-12 05:02" [ref=e914]: + - cell "Thumb トラックのドラレコに映った緊迫の瞬間、運転手がクラクションを鳴らし続けた理由" [ref=e915]: + - generic [ref=e916]: + - link "Thumb" [ref=e917] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=kcC-DFkFNBo + - img "Thumb" [ref=e918] + - link "トラックのドラレコに映った緊迫の瞬間、運転手がクラクションを鳴らし続けた理由" [ref=e919] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=kcC-DFkFNBo + - cell [ref=e920]: + - button "Extract Transcript" [ref=e921] [cursor=pointer]: + - img [ref=e922] + - cell "8,057,225" [ref=e925] + - cell "45,844" [ref=e926] + - cell "PT35S" [ref=e927] + - cell "2026-04-12 05:02" [ref=e928] + - row "Thumb 愛犬を守るためなら迷わず狂気になれる説ww 35,975 213 PT20S 2026-04-11 14:04" [ref=e929]: + - cell "Thumb 愛犬を守るためなら迷わず狂気になれる説ww" [ref=e930]: + - generic [ref=e931]: + - link "Thumb" [ref=e932] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=uvf4LxhSCDw + - img "Thumb" [ref=e933] + - link "愛犬を守るためなら迷わず狂気になれる説ww" [ref=e934] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=uvf4LxhSCDw + - cell [ref=e935]: + - button "Extract Transcript" [ref=e936] [cursor=pointer]: + - img [ref=e937] + - cell "35,975" [ref=e940] + - cell "213" [ref=e941] + - cell "PT20S" [ref=e942] + - cell "2026-04-11 14:04" [ref=e943] + - row "Thumb 大型犬10頭の暴走を止めたリーダーの非言語コントロール術 89,681 242 PT17S 2026-04-11 10:33" [ref=e944]: + - cell "Thumb 大型犬10頭の暴走を止めたリーダーの非言語コントロール術" [ref=e945]: + - generic [ref=e946]: + - link "Thumb" [ref=e947] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=aB6Tyav4Tho + - img "Thumb" [ref=e948] + - link "大型犬10頭の暴走を止めたリーダーの非言語コントロール術" [ref=e949] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=aB6Tyav4Tho + - cell [ref=e950]: + - button "Extract Transcript" [ref=e951] [cursor=pointer]: + - img [ref=e952] + - cell "89,681" [ref=e955] + - cell "242" [ref=e956] + - cell "PT17S" [ref=e957] + - cell "2026-04-11 10:33" [ref=e958] + - row "Thumb 人生で一度は直感に従わなきゃいけない瞬間がある 15,937,353 204,667 PT25S 2026-04-11 05:30" [ref=e959]: + - cell "Thumb 人生で一度は直感に従わなきゃいけない瞬間がある" [ref=e960]: + - generic [ref=e961]: + - link "Thumb" [ref=e962] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rtAgbgSgHgc + - img "Thumb" [ref=e963] + - link "人生で一度は直感に従わなきゃいけない瞬間がある" [ref=e964] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rtAgbgSgHgc + - cell [ref=e965]: + - button "Extract Transcript" [ref=e966] [cursor=pointer]: + - img [ref=e967] + - cell "15,937,353" [ref=e970] + - cell "204,667" [ref=e971] + - cell "PT25S" [ref=e972] + - cell "2026-04-11 05:30" [ref=e973] + - row "Thumb 在宅ワーク中にウェルシュコーギーをほっとくと起きることwwww 27,094 181 PT14S 2026-04-10 09:41" [ref=e974]: + - cell "Thumb 在宅ワーク中にウェルシュコーギーをほっとくと起きることwwww" [ref=e975]: + - generic [ref=e976]: + - link "Thumb" [ref=e977] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=TIMetHMiWYk + - img "Thumb" [ref=e978] + - link "在宅ワーク中にウェルシュコーギーをほっとくと起きることwwww" [ref=e979] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=TIMetHMiWYk + - cell [ref=e980]: + - button "Extract Transcript" [ref=e981] [cursor=pointer]: + - img [ref=e982] + - cell "27,094" [ref=e985] + - cell "181" [ref=e986] + - cell "PT14S" [ref=e987] + - cell "2026-04-10 09:41" [ref=e988] + - row "Thumb 拗ねたわんこの言い返しに爆笑した母娘 24,877 180 PT17S 2026-04-10 05:06" [ref=e989]: + - cell "Thumb 拗ねたわんこの言い返しに爆笑した母娘" [ref=e990]: + - generic [ref=e991]: + - link "Thumb" [ref=e992] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=72EAA8jukHk + - img "Thumb" [ref=e993] + - link "拗ねたわんこの言い返しに爆笑した母娘" [ref=e994] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=72EAA8jukHk + - cell [ref=e995]: + - button "Extract Transcript" [ref=e996] [cursor=pointer]: + - img [ref=e997] + - cell "24,877" [ref=e1000] + - cell "180" [ref=e1001] + - cell "PT17S" [ref=e1002] + - cell "2026-04-10 05:06" [ref=e1003] + - row "Thumb 気づいた?銃のプロが見ればわかる伝説の神演出 143,213 893 PT22S 2026-04-09 13:08" [ref=e1004]: + - cell "Thumb 気づいた?銃のプロが見ればわかる伝説の神演出" [ref=e1005]: + - generic [ref=e1006]: + - link "Thumb" [ref=e1007] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=POi80_KBMUU + - img "Thumb" [ref=e1008] + - link "気づいた?銃のプロが見ればわかる伝説の神演出" [ref=e1009] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=POi80_KBMUU + - cell [ref=e1010]: + - button "Extract Transcript" [ref=e1011] [cursor=pointer]: + - img [ref=e1012] + - cell "143,213" [ref=e1015] + - cell "893" [ref=e1016] + - cell "PT22S" [ref=e1017] + - cell "2026-04-09 13:08" [ref=e1018] + - row "Thumb 10年前に虹の橋を渡ったのに今もお昼寝中のわんこ 773,604 11,037 PT22S 2026-04-09 06:13" [ref=e1019]: + - cell "Thumb 10年前に虹の橋を渡ったのに今もお昼寝中のわんこ" [ref=e1020]: + - generic [ref=e1021]: + - link "Thumb" [ref=e1022] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=1VLlD3gTdtM + - img "Thumb" [ref=e1023] + - link "10年前に虹の橋を渡ったのに今もお昼寝中のわんこ" [ref=e1024] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=1VLlD3gTdtM + - cell [ref=e1025]: + - button "Extract Transcript" [ref=e1026] [cursor=pointer]: + - img [ref=e1027] + - cell "773,604" [ref=e1030] + - cell "11,037" [ref=e1031] + - cell "PT22S" [ref=e1032] + - cell "2026-04-09 06:13" [ref=e1033] + - row "Thumb レトリバーの散歩ってこんなにスムーズなの? 25,136 217 PT11S 2026-04-09 02:03" [ref=e1034]: + - cell "Thumb レトリバーの散歩ってこんなにスムーズなの?" [ref=e1035]: + - generic [ref=e1036]: + - link "Thumb" [ref=e1037] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=L3KuC8obR2E + - img "Thumb" [ref=e1038] + - link "レトリバーの散歩ってこんなにスムーズなの?" [ref=e1039] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=L3KuC8obR2E + - cell [ref=e1040]: + - button "Extract Transcript" [ref=e1041] [cursor=pointer]: + - img [ref=e1042] + - cell "25,136" [ref=e1045] + - cell "217" [ref=e1046] + - cell "PT11S" [ref=e1047] + - cell "2026-04-09 02:03" [ref=e1048] + - row "Thumb 1年ぶりに偶然再会したふたりの男の仲直りの仕方🏍️🛻 773,315 11,719 PT24S 2026-04-08 03:55" [ref=e1049]: + - cell "Thumb 1年ぶりに偶然再会したふたりの男の仲直りの仕方🏍️🛻" [ref=e1050]: + - generic [ref=e1051]: + - link "Thumb" [ref=e1052] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=b_sjpKBYqKg + - img "Thumb" [ref=e1053] + - link "1年ぶりに偶然再会したふたりの男の仲直りの仕方🏍️🛻" [ref=e1054] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=b_sjpKBYqKg + - cell [ref=e1055]: + - button "Extract Transcript" [ref=e1056] [cursor=pointer]: + - img [ref=e1057] + - cell "773,315" [ref=e1060] + - cell "11,719" [ref=e1061] + - cell "PT24S" [ref=e1062] + - cell "2026-04-08 03:55" [ref=e1063] + - row "Thumb 2周目人生の完璧になりかけた計画wwww 36,767 85 PT10S 2026-04-07 23:00" [ref=e1064]: + - cell "Thumb 2周目人生の完璧になりかけた計画wwww" [ref=e1065]: + - generic [ref=e1066]: + - link "Thumb" [ref=e1067] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=c9xpQYvNlqw + - img "Thumb" [ref=e1068] + - link "2周目人生の完璧になりかけた計画wwww" [ref=e1069] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=c9xpQYvNlqw + - cell [ref=e1070]: + - button "Extract Transcript" [ref=e1071] [cursor=pointer]: + - img [ref=e1072] + - cell "36,767" [ref=e1075] + - cell "85" [ref=e1076] + - cell "PT10S" [ref=e1077] + - cell "2026-04-07 23:00" [ref=e1078] + - row "Thumb レトリバーの飼い主が油断したらダメな理由wwww 90,898 159 PT14S 2026-04-07 11:00" [ref=e1079]: + - cell "Thumb レトリバーの飼い主が油断したらダメな理由wwww" [ref=e1080]: + - generic [ref=e1081]: + - link "Thumb" [ref=e1082] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=DHXEepxlV2U + - img "Thumb" [ref=e1083] + - link "レトリバーの飼い主が油断したらダメな理由wwww" [ref=e1084] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=DHXEepxlV2U + - cell [ref=e1085]: + - button "Extract Transcript" [ref=e1086] [cursor=pointer]: + - img [ref=e1087] + - cell "90,898" [ref=e1090] + - cell "159" [ref=e1091] + - cell "PT14S" [ref=e1092] + - cell "2026-04-07 11:00" [ref=e1093] + - row "Thumb キリオスを一言で黙らせた審判がヤバすぎるww 3,692,427 28,176 PT27S 2026-04-07 07:51" [ref=e1094]: + - cell "Thumb キリオスを一言で黙らせた審判がヤバすぎるww" [ref=e1095]: + - generic [ref=e1096]: + - link "Thumb" [ref=e1097] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=qgFCkdAhGrc + - img "Thumb" [ref=e1098] + - link "キリオスを一言で黙らせた審判がヤバすぎるww" [ref=e1099] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=qgFCkdAhGrc + - cell [ref=e1100]: + - button "Extract Transcript" [ref=e1101] [cursor=pointer]: + - img [ref=e1102] + - cell "3,692,427" [ref=e1105] + - cell "28,176" [ref=e1106] + - cell "PT27S" [ref=e1107] + - cell "2026-04-07 07:51" [ref=e1108] + - row "Thumb ごはん皿を引きずり回すパワーウォーキング猫ww 21,228 398 PT19S 2026-04-05 23:00" [ref=e1109]: + - cell "Thumb ごはん皿を引きずり回すパワーウォーキング猫ww" [ref=e1110]: + - generic [ref=e1111]: + - link "Thumb" [ref=e1112] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=jFty3rjhp4M + - img "Thumb" [ref=e1113] + - link "ごはん皿を引きずり回すパワーウォーキング猫ww" [ref=e1114] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=jFty3rjhp4M + - cell [ref=e1115]: + - button "Extract Transcript" [ref=e1116] [cursor=pointer]: + - img [ref=e1117] + - cell "21,228" [ref=e1120] + - cell "398" [ref=e1121] + - cell "PT19S" [ref=e1122] + - cell "2026-04-05 23:00" [ref=e1123] + - row "Thumb チベットスナギツネの獲物への近づき方ww 579,254 7,644 PT10S 2026-04-05 12:12" [ref=e1124]: + - cell "Thumb チベットスナギツネの獲物への近づき方ww" [ref=e1125]: + - generic [ref=e1126]: + - link "Thumb" [ref=e1127] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=nDU4NiQjI2w + - img "Thumb" [ref=e1128] + - link "チベットスナギツネの獲物への近づき方ww" [ref=e1129] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=nDU4NiQjI2w + - cell [ref=e1130]: + - button "Extract Transcript" [ref=e1131] [cursor=pointer]: + - img [ref=e1132] + - cell "579,254" [ref=e1135] + - cell "7,644" [ref=e1136] + - cell "PT10S" [ref=e1137] + - cell "2026-04-05 12:12" [ref=e1138] + - row "Thumb 400人の生徒たちがおばあちゃんを訪ねた理由 1,394,482 29,794 PT27S 2026-04-05 04:51" [ref=e1139]: + - cell "Thumb 400人の生徒たちがおばあちゃんを訪ねた理由" [ref=e1140]: + - generic [ref=e1141]: + - link "Thumb" [ref=e1142] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bxKEcqmSPiM + - img "Thumb" [ref=e1143] + - link "400人の生徒たちがおばあちゃんを訪ねた理由" [ref=e1144] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bxKEcqmSPiM + - cell [ref=e1145]: + - button "Extract Transcript" [ref=e1146] [cursor=pointer]: + - img [ref=e1147] + - cell "1,394,482" [ref=e1150] + - cell "29,794" [ref=e1151] + - cell "PT27S" [ref=e1152] + - cell "2026-04-05 04:51" [ref=e1153] + - row "Thumb 映画より映画すぎる25年越しの告白 3,270,912 21,428 PT36S 2026-04-04 23:30" [ref=e1154]: + - cell "Thumb 映画より映画すぎる25年越しの告白" [ref=e1155]: + - generic [ref=e1156]: + - link "Thumb" [ref=e1157] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=IDO1ufD6rZY + - img "Thumb" [ref=e1158] + - link "映画より映画すぎる25年越しの告白" [ref=e1159] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=IDO1ufD6rZY + - cell [ref=e1160]: + - button "Extract Transcript" [ref=e1161] [cursor=pointer]: + - img [ref=e1162] + - cell "3,270,912" [ref=e1165] + - cell "21,428" [ref=e1166] + - cell "PT36S" [ref=e1167] + - cell "2026-04-04 23:30" [ref=e1168] + - 'row "Thumb セミがゴールデンに挨拶しに行った結果ww #Shorts #ゴールデンレトリバー #まさかの展開 366,332 589 PT17S 2026-04-04 05:00" [ref=e1169]': + - 'cell "Thumb セミがゴールデンに挨拶しに行った結果ww #Shorts #ゴールデンレトリバー #まさかの展開" [ref=e1170]': + - generic [ref=e1171]: + - link "Thumb" [ref=e1172] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=wkr0h6JmHn8 + - img "Thumb" [ref=e1173] + - 'link "セミがゴールデンに挨拶しに行った結果ww #Shorts #ゴールデンレトリバー #まさかの展開" [ref=e1174] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=wkr0h6JmHn8 + - cell [ref=e1175]: + - button "Extract Transcript" [ref=e1176] [cursor=pointer]: + - img [ref=e1177] + - cell "366,332" [ref=e1180] + - cell "589" [ref=e1181] + - cell "PT17S" [ref=e1182] + - cell "2026-04-04 05:00" [ref=e1183] + - row "Thumb 退役パパを一瞬で見抜いた近衛馬 (涙腺崩壊) 776,596 8,973 PT30S 2026-04-03 05:49" [ref=e1184]: + - cell "Thumb 退役パパを一瞬で見抜いた近衛馬 (涙腺崩壊)" [ref=e1185]: + - generic [ref=e1186]: + - link "Thumb" [ref=e1187] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=zJ5VvqY6cVU + - img "Thumb" [ref=e1188] + - link "退役パパを一瞬で見抜いた近衛馬 (涙腺崩壊)" [ref=e1189] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=zJ5VvqY6cVU + - cell [ref=e1190]: + - button "Extract Transcript" [ref=e1191] [cursor=pointer]: + - img [ref=e1192] + - cell "776,596" [ref=e1195] + - cell "8,973" [ref=e1196] + - cell "PT30S" [ref=e1197] + - cell "2026-04-03 05:49" [ref=e1198] + - row "Thumb 成人した息子が突然父親に抱きついたら…こうなった 429,366 2,459 PT14S 2026-04-02 23:00" [ref=e1199]: + - cell "Thumb 成人した息子が突然父親に抱きついたら…こうなった" [ref=e1200]: + - generic [ref=e1201]: + - link "Thumb" [ref=e1202] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=N2SPPnvtVwU + - img "Thumb" [ref=e1203] + - link "成人した息子が突然父親に抱きついたら…こうなった" [ref=e1204] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=N2SPPnvtVwU + - cell [ref=e1205]: + - button "Extract Transcript" [ref=e1206] [cursor=pointer]: + - img [ref=e1207] + - cell "429,366" [ref=e1210] + - cell "2,459" [ref=e1211] + - cell "PT14S" [ref=e1212] + - cell "2026-04-02 23:00" [ref=e1213] + - row "Thumb 猛禽類に授けられた神スキル|天然のタクティカルドローン 29,831 194 PT20S 2026-04-02 08:30" [ref=e1214]: + - cell "Thumb 猛禽類に授けられた神スキル|天然のタクティカルドローン" [ref=e1215]: + - generic [ref=e1216]: + - link "Thumb" [ref=e1217] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=32rcqhRatWY + - img "Thumb" [ref=e1218] + - link "猛禽類に授けられた神スキル|天然のタクティカルドローン" [ref=e1219] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=32rcqhRatWY + - cell [ref=e1220]: + - button "Extract Transcript" [ref=e1221] [cursor=pointer]: + - img [ref=e1222] + - cell "29,831" [ref=e1225] + - cell "194" [ref=e1226] + - cell "PT20S" [ref=e1227] + - cell "2026-04-02 08:30" [ref=e1228] + - row "Thumb 【ギャップ萌え】かわいいフクロウの二面性がヤバすぎるww 37,901 335 PT11S 2026-04-02 05:33" [ref=e1229]: + - cell "Thumb 【ギャップ萌え】かわいいフクロウの二面性がヤバすぎるww" [ref=e1230]: + - generic [ref=e1231]: + - link "Thumb" [ref=e1232] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=RlSgKUJnpVc + - img "Thumb" [ref=e1233] + - link "【ギャップ萌え】かわいいフクロウの二面性がヤバすぎるww" [ref=e1234] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=RlSgKUJnpVc + - cell [ref=e1235]: + - button "Extract Transcript" [ref=e1236] [cursor=pointer]: + - img [ref=e1237] + - cell "37,901" [ref=e1240] + - cell "335" [ref=e1241] + - cell "PT11S" [ref=e1242] + - cell "2026-04-02 05:33" [ref=e1243] + - 'row "Thumb ボールに集中しすぎた結果wwww #shorts #神タイミング 29,270 179 PT15S 2026-04-01 23:00" [ref=e1244]': + - 'cell "Thumb ボールに集中しすぎた結果wwww #shorts #神タイミング" [ref=e1245]': + - generic [ref=e1246]: + - link "Thumb" [ref=e1247] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Z6ZqsS1NNoI + - img "Thumb" [ref=e1248] + - 'link "ボールに集中しすぎた結果wwww #shorts #神タイミング" [ref=e1249] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=Z6ZqsS1NNoI + - cell [ref=e1250]: + - button "Extract Transcript" [ref=e1251] [cursor=pointer]: + - img [ref=e1252] + - cell "29,270" [ref=e1255] + - cell "179" [ref=e1256] + - cell "PT15S" [ref=e1257] + - cell "2026-04-01 23:00" [ref=e1258] + - row "Thumb カンフーポメを飼ってたんだけどwwww 36,139 441 PT12S 2026-04-01 08:21" [ref=e1259]: + - cell "Thumb カンフーポメを飼ってたんだけどwwww" [ref=e1260]: + - generic [ref=e1261]: + - link "Thumb" [ref=e1262] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=uJIjaO4mGL4 + - img "Thumb" [ref=e1263] + - link "カンフーポメを飼ってたんだけどwwww" [ref=e1264] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=uJIjaO4mGL4 + - cell [ref=e1265]: + - button "Extract Transcript" [ref=e1266] [cursor=pointer]: + - img [ref=e1267] + - cell "36,139" [ref=e1270] + - cell "441" [ref=e1271] + - cell "PT12S" [ref=e1272] + - cell "2026-04-01 08:21" [ref=e1273] + - row "Thumb ハンス・ジマーが“本物の天才”すぎる証拠 32,992 339 PT39S 2026-03-30 12:00" [ref=e1274]: + - cell "Thumb ハンス・ジマーが“本物の天才”すぎる証拠" [ref=e1275]: + - generic [ref=e1276]: + - link "Thumb" [ref=e1277] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Yssco0-xk-Q + - img "Thumb" [ref=e1278] + - link "ハンス・ジマーが“本物の天才”すぎる証拠" [ref=e1279] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Yssco0-xk-Q + - cell [ref=e1280]: + - button "Extract Transcript" [ref=e1281] [cursor=pointer]: + - img [ref=e1282] + - cell "32,992" [ref=e1285] + - cell "339" [ref=e1286] + - cell "PT39S" [ref=e1287] + - cell "2026-03-30 12:00" [ref=e1288] + - row "Thumb 2年ぶりに再会したボーダーコリー母子の反応 35,166 436 PT22S 2026-03-30 05:47" [ref=e1289]: + - cell "Thumb 2年ぶりに再会したボーダーコリー母子の反応" [ref=e1290]: + - generic [ref=e1291]: + - link "Thumb" [ref=e1292] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=7lVoH6QC4zg + - img "Thumb" [ref=e1293] + - link "2年ぶりに再会したボーダーコリー母子の反応" [ref=e1294] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=7lVoH6QC4zg + - cell [ref=e1295]: + - button "Extract Transcript" [ref=e1296] [cursor=pointer]: + - img [ref=e1297] + - cell "35,166" [ref=e1300] + - cell "436" [ref=e1301] + - cell "PT22S" [ref=e1302] + - cell "2026-03-30 05:47" [ref=e1303] + - row "Thumb 名前負けにもほどがあるロットワイラーの爪切りww 27,123 224 PT13S 2026-03-29 07:00" [ref=e1304]: + - cell "Thumb 名前負けにもほどがあるロットワイラーの爪切りww" [ref=e1305]: + - generic [ref=e1306]: + - link "Thumb" [ref=e1307] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=dRGU7mO3Lbs + - img "Thumb" [ref=e1308] + - link "名前負けにもほどがあるロットワイラーの爪切りww" [ref=e1309] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=dRGU7mO3Lbs + - cell [ref=e1310]: + - button "Extract Transcript" [ref=e1311] [cursor=pointer]: + - img [ref=e1312] + - cell "27,123" [ref=e1315] + - cell "224" [ref=e1316] + - cell "PT13S" [ref=e1317] + - cell "2026-03-29 07:00" [ref=e1318] + - row "Thumb 運転中に遭遇したカリスマMAX牧羊犬がヤバすぎた 460,588 6,971 PT19S 2026-03-29 03:30" [ref=e1319]: + - cell "Thumb 運転中に遭遇したカリスマMAX牧羊犬がヤバすぎた" [ref=e1320]: + - generic [ref=e1321]: + - link "Thumb" [ref=e1322] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=kgdVJGVJQck + - img "Thumb" [ref=e1323] + - link "運転中に遭遇したカリスマMAX牧羊犬がヤバすぎた" [ref=e1324] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=kgdVJGVJQck + - cell [ref=e1325]: + - button "Extract Transcript" [ref=e1326] [cursor=pointer]: + - img [ref=e1327] + - cell "460,588" [ref=e1330] + - cell "6,971" [ref=e1331] + - cell "PT19S" [ref=e1332] + - cell "2026-03-29 03:30" [ref=e1333] + - row "Thumb 絶望の瞬間😂 大事に食べようとした結果がこれ ww 782,888 3,929 PT12S 2026-03-29 00:00" [ref=e1334]: + - cell "Thumb 絶望の瞬間😂 大事に食べようとした結果がこれ ww" [ref=e1335]: + - generic [ref=e1336]: + - link "Thumb" [ref=e1337] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=88YsjDPsx-k + - img "Thumb" [ref=e1338] + - link "絶望の瞬間😂 大事に食べようとした結果がこれ ww" [ref=e1339] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=88YsjDPsx-k + - cell [ref=e1340]: + - button "Extract Transcript" [ref=e1341] [cursor=pointer]: + - img [ref=e1342] + - cell "782,888" [ref=e1345] + - cell "3,929" [ref=e1346] + - cell "PT12S" [ref=e1347] + - cell "2026-03-29 00:00" [ref=e1348] + - row "Thumb 命の恩人をずっと覚えていた猫 136,765 1,021 PT30S 2026-03-28 05:18" [ref=e1349]: + - cell "Thumb 命の恩人をずっと覚えていた猫" [ref=e1350]: + - generic [ref=e1351]: + - link "Thumb" [ref=e1352] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=wd0KQD8p_0I + - img "Thumb" [ref=e1353] + - link "命の恩人をずっと覚えていた猫" [ref=e1354] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=wd0KQD8p_0I + - cell [ref=e1355]: + - button "Extract Transcript" [ref=e1356] [cursor=pointer]: + - img [ref=e1357] + - cell "136,765" [ref=e1360] + - cell "1,021" [ref=e1361] + - cell "PT30S" [ref=e1362] + - cell "2026-03-28 05:18" [ref=e1363] + - 'row "Thumb 天才ボーダーコリーが指示を受けた結果… #羊追い #犬 #Shorts 889,498 17,626 PT46S 2026-03-27 13:00" [ref=e1364]': + - 'cell "Thumb 天才ボーダーコリーが指示を受けた結果… #羊追い #犬 #Shorts" [ref=e1365]': + - generic [ref=e1366]: + - link "Thumb" [ref=e1367] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=NobrRSx7AVA + - img "Thumb" [ref=e1368] + - 'link "天才ボーダーコリーが指示を受けた結果… #羊追い #犬 #Shorts" [ref=e1369] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=NobrRSx7AVA + - cell [ref=e1370]: + - button "Extract Transcript" [ref=e1371] [cursor=pointer]: + - img [ref=e1372] + - cell "889,498" [ref=e1375] + - cell "17,626" [ref=e1376] + - cell "PT46S" [ref=e1377] + - cell "2026-03-27 13:00" [ref=e1378] + - row "Thumb 我慢できなかった盲導犬の一言(感動注意) 70,162 604 PT25S 2026-03-27 09:30" [ref=e1379]: + - cell "Thumb 我慢できなかった盲導犬の一言(感動注意)" [ref=e1380]: + - generic [ref=e1381]: + - link "Thumb" [ref=e1382] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=AyuxWUecWt0 + - img "Thumb" [ref=e1383] + - link "我慢できなかった盲導犬の一言(感動注意)" [ref=e1384] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=AyuxWUecWt0 + - cell [ref=e1385]: + - button "Extract Transcript" [ref=e1386] [cursor=pointer]: + - img [ref=e1387] + - cell "70,162" [ref=e1390] + - cell "604" [ref=e1391] + - cell "PT25S" [ref=e1392] + - cell "2026-03-27 09:30" [ref=e1393] + - row "Thumb 大雨の中でもキリンがじっと立ってる理由 54,067 259 PT11S 2026-03-27 00:20" [ref=e1394]: + - cell "Thumb 大雨の中でもキリンがじっと立ってる理由" [ref=e1395]: + - generic [ref=e1396]: + - link "Thumb" [ref=e1397] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=_P9JyWCEhrc + - img "Thumb" [ref=e1398] + - link "大雨の中でもキリンがじっと立ってる理由" [ref=e1399] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=_P9JyWCEhrc + - cell [ref=e1400]: + - button "Extract Transcript" [ref=e1401] [cursor=pointer]: + - img [ref=e1402] + - cell "54,067" [ref=e1405] + - cell "259" [ref=e1406] + - cell "PT11S" [ref=e1407] + - cell "2026-03-27 00:20" [ref=e1408] + - row "Thumb 子犬にデカすぎる首輪をプレゼントしたら… 97,130 335 PT13S 2026-03-26 07:10" [ref=e1409]: + - cell "Thumb 子犬にデカすぎる首輪をプレゼントしたら…" [ref=e1410]: + - generic [ref=e1411]: + - link "Thumb" [ref=e1412] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=I9ooaN5eEUA + - img "Thumb" [ref=e1413] + - link "子犬にデカすぎる首輪をプレゼントしたら…" [ref=e1414] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=I9ooaN5eEUA + - cell [ref=e1415]: + - button "Extract Transcript" [ref=e1416] [cursor=pointer]: + - img [ref=e1417] + - cell "97,130" [ref=e1420] + - cell "335" [ref=e1421] + - cell "PT13S" [ref=e1422] + - cell "2026-03-26 07:10" [ref=e1423] + - row "Thumb 最小限の動きで相手を圧倒するボーダーコリー 60,157 338 PT16S 2026-03-25 23:00" [ref=e1424]: + - cell "Thumb 最小限の動きで相手を圧倒するボーダーコリー" [ref=e1425]: + - generic [ref=e1426]: + - link "Thumb" [ref=e1427] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=WLO89gZfojY + - img "Thumb" [ref=e1428] + - link "最小限の動きで相手を圧倒するボーダーコリー" [ref=e1429] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=WLO89gZfojY + - cell [ref=e1430]: + - button "Extract Transcript" [ref=e1431] [cursor=pointer]: + - img [ref=e1432] + - cell "60,157" [ref=e1435] + - cell "338" [ref=e1436] + - cell "PT16S" [ref=e1437] + - cell "2026-03-25 23:00" [ref=e1438] + - 'row "Thumb 【本物】ポセイドンが人間界に来たらこんな感じ?🔱 #ポセイドン #海 #shorts 42,756 438 PT21S 2026-03-25 10:46" [ref=e1439]': + - 'cell "Thumb 【本物】ポセイドンが人間界に来たらこんな感じ?🔱 #ポセイドン #海 #shorts" [ref=e1440]': + - generic [ref=e1441]: + - link "Thumb" [ref=e1442] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=uXwM7zQitX0 + - img "Thumb" [ref=e1443] + - 'link "【本物】ポセイドンが人間界に来たらこんな感じ?🔱 #ポセイドン #海 #shorts" [ref=e1444] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=uXwM7zQitX0 + - cell [ref=e1445]: + - button "Extract Transcript" [ref=e1446] [cursor=pointer]: + - img [ref=e1447] + - cell "42,756" [ref=e1450] + - cell "438" [ref=e1451] + - cell "PT21S" [ref=e1452] + - cell "2026-03-25 10:46" [ref=e1453] + - row "Thumb ビデオ通話で一番おもろい男引いた 27,389 158 PT11S 2026-03-24 09:30" [ref=e1454]: + - cell "Thumb ビデオ通話で一番おもろい男引いた" [ref=e1455]: + - generic [ref=e1456]: + - link "Thumb" [ref=e1457] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=BPx_sbw09M8 + - img "Thumb" [ref=e1458] + - link "ビデオ通話で一番おもろい男引いた" [ref=e1459] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=BPx_sbw09M8 + - cell [ref=e1460]: + - button "Extract Transcript" [ref=e1461] [cursor=pointer]: + - img [ref=e1462] + - cell "27,389" [ref=e1465] + - cell "158" [ref=e1466] + - cell "PT11S" [ref=e1467] + - cell "2026-03-24 09:30" [ref=e1468] + - row "Thumb パパの育児はいつも優しいわけじゃないけど 14,576,112 147,680 PT26S 2026-03-24 04:16" [ref=e1469]: + - cell "Thumb パパの育児はいつも優しいわけじゃないけど" [ref=e1470]: + - generic [ref=e1471]: + - link "Thumb" [ref=e1472] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=t0qYgTbQ6Fg + - img "Thumb" [ref=e1473] + - link "パパの育児はいつも優しいわけじゃないけど" [ref=e1474] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=t0qYgTbQ6Fg + - cell [ref=e1475]: + - button "Extract Transcript" [ref=e1476] [cursor=pointer]: + - img [ref=e1477] + - cell "14,576,112" [ref=e1480] + - cell "147,680" [ref=e1481] + - cell "PT26S" [ref=e1482] + - cell "2026-03-24 04:16" [ref=e1483] + - row "Thumb 空気読めずにイキってたヤンキー猫の末路 2,112,235 8,971 PT21S 2026-03-23 23:00" [ref=e1484]: + - cell "Thumb 空気読めずにイキってたヤンキー猫の末路" [ref=e1485]: + - generic [ref=e1486]: + - link "Thumb" [ref=e1487] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=gJ4LOqWjAJI + - img "Thumb" [ref=e1488] + - link "空気読めずにイキってたヤンキー猫の末路" [ref=e1489] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=gJ4LOqWjAJI + - cell [ref=e1490]: + - button "Extract Transcript" [ref=e1491] [cursor=pointer]: + - img [ref=e1492] + - cell "2,112,235" [ref=e1495] + - cell "8,971" [ref=e1496] + - cell "PT21S" [ref=e1497] + - cell "2026-03-23 23:00" [ref=e1498] + - row "Thumb 犬アレルギーの人に気を遣ったら起きたこと 27,604 135 PT10S 2026-03-23 09:30" [ref=e1499]: + - cell "Thumb 犬アレルギーの人に気を遣ったら起きたこと" [ref=e1500]: + - generic [ref=e1501]: + - link "Thumb" [ref=e1502] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lq6i7FFg2rc + - img "Thumb" [ref=e1503] + - link "犬アレルギーの人に気を遣ったら起きたこと" [ref=e1504] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lq6i7FFg2rc + - cell [ref=e1505]: + - button "Extract Transcript" [ref=e1506] [cursor=pointer]: + - img [ref=e1507] + - cell "27,604" [ref=e1510] + - cell "135" [ref=e1511] + - cell "PT10S" [ref=e1512] + - cell "2026-03-23 09:30" [ref=e1513] + - row "Thumb 野生でゴリラの家族と遭遇したらこうなった🦍 30,791 114 PT15S 2026-03-23 06:24" [ref=e1514]: + - cell "Thumb 野生でゴリラの家族と遭遇したらこうなった🦍" [ref=e1515]: + - generic [ref=e1516]: + - link "Thumb" [ref=e1517] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=we0i1CeTOdc + - img "Thumb" [ref=e1518] + - link "野生でゴリラの家族と遭遇したらこうなった🦍" [ref=e1519] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=we0i1CeTOdc + - cell [ref=e1520]: + - button "Extract Transcript" [ref=e1521] [cursor=pointer]: + - img [ref=e1522] + - cell "30,791" [ref=e1525] + - cell "114" [ref=e1526] + - cell "PT15S" [ref=e1527] + - cell "2026-03-23 06:24" [ref=e1528] + - row "Thumb アニメの主人公が自分だと気づいた瞬間 117,298 1,166 PT28S 2026-03-22 23:00" [ref=e1529]: + - cell "Thumb アニメの主人公が自分だと気づいた瞬間" [ref=e1530]: + - generic [ref=e1531]: + - link "Thumb" [ref=e1532] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=INvzFKn68hg + - img "Thumb" [ref=e1533] + - link "アニメの主人公が自分だと気づいた瞬間" [ref=e1534] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=INvzFKn68hg + - cell [ref=e1535]: + - button "Extract Transcript" [ref=e1536] [cursor=pointer]: + - img [ref=e1537] + - cell "117,298" [ref=e1540] + - cell "1,166" [ref=e1541] + - cell "PT28S" [ref=e1542] + - cell "2026-03-22 23:00" [ref=e1543] + - row "Thumb これは心臓バクバクするしかない 376,174 2,409 PT17S 2026-03-19 23:01" [ref=e1544]: + - cell "Thumb これは心臓バクバクするしかない" [ref=e1545]: + - generic [ref=e1546]: + - link "Thumb" [ref=e1547] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=uHBvigFkG1c + - img "Thumb" [ref=e1548] + - link "これは心臓バクバクするしかない" [ref=e1549] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=uHBvigFkG1c + - cell [ref=e1550]: + - button "Extract Transcript" [ref=e1551] [cursor=pointer]: + - img [ref=e1552] + - cell "376,174" [ref=e1555] + - cell "2,409" [ref=e1556] + - cell "PT17S" [ref=e1557] + - cell "2026-03-19 23:01" [ref=e1558] + - row "Thumb ひよこを集めるまさかの方法 693,232 937 PT20S 2026-03-19 10:00" [ref=e1559]: + - cell "Thumb ひよこを集めるまさかの方法" [ref=e1560]: + - generic [ref=e1561]: + - link "Thumb" [ref=e1562] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=cACklresx6I + - img "Thumb" [ref=e1563] + - link "ひよこを集めるまさかの方法" [ref=e1564] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=cACklresx6I + - cell [ref=e1565]: + - button "Extract Transcript" [ref=e1566] [cursor=pointer]: + - img [ref=e1567] + - cell "693,232" [ref=e1570] + - cell "937" [ref=e1571] + - cell "PT20S" [ref=e1572] + - cell "2026-03-19 10:00" [ref=e1573] + - row "Thumb 文化祭でマイケル・ジャクソンのダンス披露して学校中がザワついた男子高生 48,084 461 PT38S 2026-03-19 05:45" [ref=e1574]: + - cell "Thumb 文化祭でマイケル・ジャクソンのダンス披露して学校中がザワついた男子高生" [ref=e1575]: + - generic [ref=e1576]: + - link "Thumb" [ref=e1577] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=l8rV91sxrvg + - img "Thumb" [ref=e1578] + - link "文化祭でマイケル・ジャクソンのダンス披露して学校中がザワついた男子高生" [ref=e1579] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=l8rV91sxrvg + - cell [ref=e1580]: + - button "Extract Transcript" [ref=e1581] [cursor=pointer]: + - img [ref=e1582] + - cell "48,084" [ref=e1585] + - cell "461" [ref=e1586] + - cell "PT38S" [ref=e1587] + - cell "2026-03-19 05:45" [ref=e1588] + - row "Thumb この川の正体がヤバすぎる 307,400 215 PT32S 2026-03-18 10:32" [ref=e1589]: + - cell "Thumb この川の正体がヤバすぎる" [ref=e1590]: + - generic [ref=e1591]: + - link "Thumb" [ref=e1592] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=5v9DlZmTFDw + - img "Thumb" [ref=e1593] + - link "この川の正体がヤバすぎる" [ref=e1594] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=5v9DlZmTFDw + - cell [ref=e1595]: + - button "Extract Transcript" [ref=e1596] [cursor=pointer]: + - img [ref=e1597] + - cell "307,400" [ref=e1600] + - cell "215" [ref=e1601] + - cell "PT32S" [ref=e1602] + - cell "2026-03-18 10:32" [ref=e1603] + - row "Thumb バイクライダーのハンドサインの正体 3,634,807 4,171 PT15S 2026-03-17 09:30" [ref=e1604]: + - cell "Thumb バイクライダーのハンドサインの正体" [ref=e1605]: + - generic [ref=e1606]: + - link "Thumb" [ref=e1607] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=U2SdKwd3PJY + - img "Thumb" [ref=e1608] + - link "バイクライダーのハンドサインの正体" [ref=e1609] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=U2SdKwd3PJY + - cell [ref=e1610]: + - button "Extract Transcript" [ref=e1611] [cursor=pointer]: + - img [ref=e1612] + - cell "3,634,807" [ref=e1615] + - cell "4,171" [ref=e1616] + - cell "PT15S" [ref=e1617] + - cell "2026-03-17 09:30" [ref=e1618] + - row "Thumb サイコパスが人生で初めて恐怖を感じた瞬間www 31,763 227 PT19S 2026-03-16 09:40" [ref=e1619]: + - cell "Thumb サイコパスが人生で初めて恐怖を感じた瞬間www" [ref=e1620]: + - generic [ref=e1621]: + - link "Thumb" [ref=e1622] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=KGK4t3VOPIA + - img "Thumb" [ref=e1623] + - link "サイコパスが人生で初めて恐怖を感じた瞬間www" [ref=e1624] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=KGK4t3VOPIA + - cell [ref=e1625]: + - button "Extract Transcript" [ref=e1626] [cursor=pointer]: + - img [ref=e1627] + - cell "31,763" [ref=e1630] + - cell "227" [ref=e1631] + - cell "PT19S" [ref=e1632] + - cell "2026-03-16 09:40" [ref=e1633] + - row "Thumb 息子が店員のお姉さんに人生初の一目惚れw 417,351 962 PT23S 2026-03-16 05:40" [ref=e1634]: + - cell "Thumb 息子が店員のお姉さんに人生初の一目惚れw" [ref=e1635]: + - generic [ref=e1636]: + - link "Thumb" [ref=e1637] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=MH7WFHaEd6Y + - img "Thumb" [ref=e1638] + - link "息子が店員のお姉さんに人生初の一目惚れw" [ref=e1639] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=MH7WFHaEd6Y + - cell [ref=e1640]: + - button "Extract Transcript" [ref=e1641] [cursor=pointer]: + - img [ref=e1642] + - cell "417,351" [ref=e1645] + - cell "962" [ref=e1646] + - cell "PT23S" [ref=e1647] + - cell "2026-03-16 05:40" [ref=e1648] + - row "Thumb どう見ても地獄の番犬なんだけどww 262,344 1,777 PT18S 2026-03-15 08:10" [ref=e1649]: + - cell "Thumb どう見ても地獄の番犬なんだけどww" [ref=e1650]: + - generic [ref=e1651]: + - link "Thumb" [ref=e1652] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=mg7pW7gIm5c + - img "Thumb" [ref=e1653] + - link "どう見ても地獄の番犬なんだけどww" [ref=e1654] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=mg7pW7gIm5c + - cell [ref=e1655]: + - button "Extract Transcript" [ref=e1656] [cursor=pointer]: + - img [ref=e1657] + - cell "262,344" [ref=e1660] + - cell "1,777" [ref=e1661] + - cell "PT18S" [ref=e1662] + - cell "2026-03-15 08:10" [ref=e1663] + - row "Thumb 喧嘩前なのに母ちゃんには優しい猫 4,150,930 36,434 PT16S 2026-03-15 04:20" [ref=e1664]: + - cell "Thumb 喧嘩前なのに母ちゃんには優しい猫" [ref=e1665]: + - generic [ref=e1666]: + - link "Thumb" [ref=e1667] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=gUSBOJNlkwo + - img "Thumb" [ref=e1668] + - link "喧嘩前なのに母ちゃんには優しい猫" [ref=e1669] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=gUSBOJNlkwo + - cell [ref=e1670]: + - button "Extract Transcript" [ref=e1671] [cursor=pointer]: + - img [ref=e1672] + - cell "4,150,930" [ref=e1675] + - cell "36,434" [ref=e1676] + - cell "PT16S" [ref=e1677] + - cell "2026-03-15 04:20" [ref=e1678] + - row "Thumb レトリバーが足を踏まれたらww 7,299,774 91,270 PT22S 2026-03-14 11:01" [ref=e1679]: + - cell "Thumb レトリバーが足を踏まれたらww" [ref=e1680]: + - generic [ref=e1681]: + - link "Thumb" [ref=e1682] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=unHMQmD15Nk + - img "Thumb" [ref=e1683] + - link "レトリバーが足を踏まれたらww" [ref=e1684] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=unHMQmD15Nk + - cell [ref=e1685]: + - button "Extract Transcript" [ref=e1686] [cursor=pointer]: + - img [ref=e1687] + - cell "7,299,774" [ref=e1690] + - cell "91,270" [ref=e1691] + - cell "PT22S" [ref=e1692] + - cell "2026-03-14 11:01" [ref=e1693] + - row "Thumb この人たちロマンやばすぎだろ… 103,534 638 PT18S 2026-03-14 07:30" [ref=e1694]: + - cell "Thumb この人たちロマンやばすぎだろ…" [ref=e1695]: + - generic [ref=e1696]: + - link "Thumb" [ref=e1697] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=AOxBkvyt6Qc + - img "Thumb" [ref=e1698] + - link "この人たちロマンやばすぎだろ…" [ref=e1699] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=AOxBkvyt6Qc + - cell [ref=e1700]: + - button "Extract Transcript" [ref=e1701] [cursor=pointer]: + - img [ref=e1702] + - cell "103,534" [ref=e1705] + - cell "638" [ref=e1706] + - cell "PT18S" [ref=e1707] + - cell "2026-03-14 07:30" [ref=e1708] + - row "Thumb ボーダーコリーに走りで勝とうとする飼い主 2,825,926 19,126 PT12S 2026-03-14 00:01" [ref=e1709]: + - cell "Thumb ボーダーコリーに走りで勝とうとする飼い主" [ref=e1710]: + - generic [ref=e1711]: + - link "Thumb" [ref=e1712] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=pN04JHXa4Vc + - img "Thumb" [ref=e1713] + - link "ボーダーコリーに走りで勝とうとする飼い主" [ref=e1714] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=pN04JHXa4Vc + - cell [ref=e1715]: + - button "Extract Transcript" [ref=e1716] [cursor=pointer]: + - img [ref=e1717] + - cell "2,825,926" [ref=e1720] + - cell "19,126" [ref=e1721] + - cell "PT12S" [ref=e1722] + - cell "2026-03-14 00:01" [ref=e1723] + - row "Thumb これガチの愛😍 2,381,818 12,991 PT11S 2026-03-13 10:00" [ref=e1724]: + - cell "Thumb これガチの愛😍" [ref=e1725]: + - generic [ref=e1726]: + - link "Thumb" [ref=e1727] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=HDNFYySkV6w + - img "Thumb" [ref=e1728] + - link "これガチの愛😍" [ref=e1729] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=HDNFYySkV6w + - cell [ref=e1730]: + - button "Extract Transcript" [ref=e1731] [cursor=pointer]: + - img [ref=e1732] + - cell "2,381,818" [ref=e1735] + - cell "12,991" [ref=e1736] + - cell "PT11S" [ref=e1737] + - cell "2026-03-13 10:00" [ref=e1738] + - row "Thumb 着替えて戻ったらパパになってた夫w 362,087 1,034 PT19S 2026-03-13 05:50" [ref=e1739]: + - cell "Thumb 着替えて戻ったらパパになってた夫w" [ref=e1740]: + - generic [ref=e1741]: + - link "Thumb" [ref=e1742] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=qzwzmz0gKhk + - img "Thumb" [ref=e1743] + - link "着替えて戻ったらパパになってた夫w" [ref=e1744] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=qzwzmz0gKhk + - cell [ref=e1745]: + - button "Extract Transcript" [ref=e1746] [cursor=pointer]: + - img [ref=e1747] + - cell "362,087" [ref=e1750] + - cell "1,034" [ref=e1751] + - cell "PT19S" [ref=e1752] + - cell "2026-03-13 05:50" [ref=e1753] + - row "Thumb ヤクの横を無事に通り抜けられるのか…?🦬 5,122,215 15,364 PT19S 2026-03-12 08:06" [ref=e1754]: + - cell "Thumb ヤクの横を無事に通り抜けられるのか…?🦬" [ref=e1755]: + - generic [ref=e1756]: + - link "Thumb" [ref=e1757] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rauCqPFy4no + - img "Thumb" [ref=e1758] + - link "ヤクの横を無事に通り抜けられるのか…?🦬" [ref=e1759] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rauCqPFy4no + - cell [ref=e1760]: + - button "Extract Transcript" [ref=e1761] [cursor=pointer]: + - img [ref=e1762] + - cell "5,122,215" [ref=e1765] + - cell "15,364" [ref=e1766] + - cell "PT19S" [ref=e1767] + - cell "2026-03-12 08:06" [ref=e1768] + - row "Thumb ボーダーコリーの仕事満足度が1000%な理由 71,389 421 PT26S 2026-03-11 13:33" [ref=e1769]: + - cell "Thumb ボーダーコリーの仕事満足度が1000%な理由" [ref=e1770]: + - generic [ref=e1771]: + - link "Thumb" [ref=e1772] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=IZtwGjNOjQY + - img "Thumb" [ref=e1773] + - link "ボーダーコリーの仕事満足度が1000%な理由" [ref=e1774] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=IZtwGjNOjQY + - cell [ref=e1775]: + - button "Extract Transcript" [ref=e1776] [cursor=pointer]: + - img [ref=e1777] + - cell "71,389" [ref=e1780] + - cell "421" [ref=e1781] + - cell "PT26S" [ref=e1782] + - cell "2026-03-11 13:33" [ref=e1783] + - row "Thumb 小学生数百人が廊下に座って待っていた本当の理由 34,403 362 PT28S 2026-03-11 08:11" [ref=e1784]: + - cell "Thumb 小学生数百人が廊下に座って待っていた本当の理由" [ref=e1785]: + - generic [ref=e1786]: + - link "Thumb" [ref=e1787] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Nu-x4E_LXjk + - img "Thumb" [ref=e1788] + - link "小学生数百人が廊下に座って待っていた本当の理由" [ref=e1789] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Nu-x4E_LXjk + - cell [ref=e1790]: + - button "Extract Transcript" [ref=e1791] [cursor=pointer]: + - img [ref=e1792] + - cell "34,403" [ref=e1795] + - cell "362" [ref=e1796] + - cell "PT28S" [ref=e1797] + - cell "2026-03-11 08:11" [ref=e1798] + - row "Thumb 雨の街で踊るパパと娘🥰 1,582,700 15,508 PT17S 2026-03-11 00:00" [ref=e1799]: + - cell "Thumb 雨の街で踊るパパと娘🥰" [ref=e1800]: + - generic [ref=e1801]: + - link "Thumb" [ref=e1802] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=1aboYT2gZL8 + - img "Thumb" [ref=e1803] + - link "雨の街で踊るパパと娘🥰" [ref=e1804] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=1aboYT2gZL8 + - cell [ref=e1805]: + - button "Extract Transcript" [ref=e1806] [cursor=pointer]: + - img [ref=e1807] + - cell "1,582,700" [ref=e1810] + - cell "15,508" [ref=e1811] + - cell "PT17S" [ref=e1812] + - cell "2026-03-11 00:00" [ref=e1813] + - row "Thumb 彼がポケットから手を出せなかった理由 151,264 1,158 PT29S 2026-03-10 11:30" [ref=e1814]: + - cell "Thumb 彼がポケットから手を出せなかった理由" [ref=e1815]: + - generic [ref=e1816]: + - link "Thumb" [ref=e1817] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=KTAxUoibVTo + - img "Thumb" [ref=e1818] + - link "彼がポケットから手を出せなかった理由" [ref=e1819] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=KTAxUoibVTo + - cell [ref=e1820]: + - button "Extract Transcript" [ref=e1821] [cursor=pointer]: + - img [ref=e1822] + - cell "151,264" [ref=e1825] + - cell "1,158" [ref=e1826] + - cell "PT29S" [ref=e1827] + - cell "2026-03-10 11:30" [ref=e1828] + - row "Thumb かなりわがままなアシカ🦭 485,054 2,211 PT42S 2026-03-10 05:10" [ref=e1829]: + - cell "Thumb かなりわがままなアシカ🦭" [ref=e1830]: + - generic [ref=e1831]: + - link "Thumb" [ref=e1832] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=8r2Ka5KmTg4 + - img "Thumb" [ref=e1833] + - link "かなりわがままなアシカ🦭" [ref=e1834] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=8r2Ka5KmTg4 + - cell [ref=e1835]: + - button "Extract Transcript" [ref=e1836] [cursor=pointer]: + - img [ref=e1837] + - cell "485,054" [ref=e1840] + - cell "2,211" [ref=e1841] + - cell "PT42S" [ref=e1842] + - cell "2026-03-10 05:10" [ref=e1843] + - row "Thumb 空からごはんが落ちてきたらww 5,437,264 21,658 PT18S 2026-03-09 09:50" [ref=e1844]: + - cell "Thumb 空からごはんが落ちてきたらww" [ref=e1845]: + - generic [ref=e1846]: + - link "Thumb" [ref=e1847] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bbg_8ZG6NHY + - img "Thumb" [ref=e1848] + - link "空からごはんが落ちてきたらww" [ref=e1849] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bbg_8ZG6NHY + - cell [ref=e1850]: + - button "Extract Transcript" [ref=e1851] [cursor=pointer]: + - img [ref=e1852] + - cell "5,437,264" [ref=e1855] + - cell "21,658" [ref=e1856] + - cell "PT18S" [ref=e1857] + - cell "2026-03-09 09:50" [ref=e1858] + - row "Thumb 大型犬に出会った子どもが最初に言った意外な一言🦮 599,452 4,800 PT29S 2026-03-09 03:10" [ref=e1859]: + - cell "Thumb 大型犬に出会った子どもが最初に言った意外な一言🦮" [ref=e1860]: + - generic [ref=e1861]: + - link "Thumb" [ref=e1862] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ZGoTDba2Lpk + - img "Thumb" [ref=e1863] + - link "大型犬に出会った子どもが最初に言った意外な一言🦮" [ref=e1864] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ZGoTDba2Lpk + - cell [ref=e1865]: + - button "Extract Transcript" [ref=e1866] [cursor=pointer]: + - img [ref=e1867] + - cell "599,452" [ref=e1870] + - cell "4,800" [ref=e1871] + - cell "PT29S" [ref=e1872] + - cell "2026-03-09 03:10" [ref=e1873] + - row "Thumb チアリーディングの公演を邪魔した警備員のまさかの理由 36,283 489 PT37S 2026-03-08 09:30" [ref=e1874]: + - cell "Thumb チアリーディングの公演を邪魔した警備員のまさかの理由" [ref=e1875]: + - generic [ref=e1876]: + - link "Thumb" [ref=e1877] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=zozfVujp24U + - img "Thumb" [ref=e1878] + - link "チアリーディングの公演を邪魔した警備員のまさかの理由" [ref=e1879] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=zozfVujp24U + - cell [ref=e1880]: + - button "Extract Transcript" [ref=e1881] [cursor=pointer]: + - img [ref=e1882] + - cell "36,283" [ref=e1885] + - cell "489" [ref=e1886] + - cell "PT37S" [ref=e1887] + - cell "2026-03-08 09:30" [ref=e1888] + - row "Thumb マナーが身についてる子が大型犬に挨拶したいとき 13,526,444 235,387 PT29S 2026-03-08 00:30" [ref=e1889]: + - cell "Thumb マナーが身についてる子が大型犬に挨拶したいとき" [ref=e1890]: + - generic [ref=e1891]: + - link "Thumb" [ref=e1892] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=7AWXR4CheBg + - img "Thumb" [ref=e1893] + - link "マナーが身についてる子が大型犬に挨拶したいとき" [ref=e1894] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=7AWXR4CheBg + - cell [ref=e1895]: + - button "Extract Transcript" [ref=e1896] [cursor=pointer]: + - img [ref=e1897] + - cell "13,526,444" [ref=e1900] + - cell "235,387" [ref=e1901] + - cell "PT29S" [ref=e1902] + - cell "2026-03-08 00:30" [ref=e1903] + - row "Thumb 車が水を跳ねなかった理由ww 39,093 118 PT12S 2026-03-07 13:30" [ref=e1904]: + - cell "Thumb 車が水を跳ねなかった理由ww" [ref=e1905]: + - generic [ref=e1906]: + - link "Thumb" [ref=e1907] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=NK8MHmv49eM + - img "Thumb" [ref=e1908] + - link "車が水を跳ねなかった理由ww" [ref=e1909] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=NK8MHmv49eM + - cell [ref=e1910]: + - button "Extract Transcript" [ref=e1911] [cursor=pointer]: + - img [ref=e1912] + - cell "39,093" [ref=e1915] + - cell "118" [ref=e1916] + - cell "PT12S" [ref=e1917] + - cell "2026-03-07 13:30" [ref=e1918] + - row "Thumb 遠くで遊んでたワンコを呼んだら 1,299,812 8,700 PT30S 2026-03-07 04:37" [ref=e1919]: + - cell "Thumb 遠くで遊んでたワンコを呼んだら" [ref=e1920]: + - generic [ref=e1921]: + - link "Thumb" [ref=e1922] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=vu3pKYZ647A + - img "Thumb" [ref=e1923] + - link "遠くで遊んでたワンコを呼んだら" [ref=e1924] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=vu3pKYZ647A + - cell [ref=e1925]: + - button "Extract Transcript" [ref=e1926] [cursor=pointer]: + - img [ref=e1927] + - cell "1,299,812" [ref=e1930] + - cell "8,700" [ref=e1931] + - cell "PT30S" [ref=e1932] + - cell "2026-03-07 04:37" [ref=e1933] + - row "Thumb ワンコが一人でホラー映画を見ちゃダメな理由www 38,735 492 PT13S 2026-03-07 00:30" [ref=e1934]: + - cell "Thumb ワンコが一人でホラー映画を見ちゃダメな理由www" [ref=e1935]: + - generic [ref=e1936]: + - link "Thumb" [ref=e1937] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=S2X9ppsciYU + - img "Thumb" [ref=e1938] + - link "ワンコが一人でホラー映画を見ちゃダメな理由www" [ref=e1939] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=S2X9ppsciYU + - cell [ref=e1940]: + - button "Extract Transcript" [ref=e1941] [cursor=pointer]: + - img [ref=e1942] + - cell "38,735" [ref=e1945] + - cell "492" [ref=e1946] + - cell "PT13S" [ref=e1947] + - cell "2026-03-07 00:30" [ref=e1948] + - row "Thumb 自撮りしてたらヘリが近づいてきた理由 312,564 2,275 PT14S 2026-03-06 10:40" [ref=e1949]: + - cell "Thumb 自撮りしてたらヘリが近づいてきた理由" [ref=e1950]: + - generic [ref=e1951]: + - link "Thumb" [ref=e1952] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=b1XdvOlhWAs + - img "Thumb" [ref=e1953] + - link "自撮りしてたらヘリが近づいてきた理由" [ref=e1954] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=b1XdvOlhWAs + - cell [ref=e1955]: + - button "Extract Transcript" [ref=e1956] [cursor=pointer]: + - img [ref=e1957] + - cell "312,564" [ref=e1960] + - cell "2,275" [ref=e1961] + - cell "PT14S" [ref=e1962] + - cell "2026-03-06 10:40" [ref=e1963] + - row "Thumb ウェルシュコーギーが調子乗りすぎてボーダーコリーにガチで怒られる 5,661,198 34,020 PT16S 2026-03-06 06:00" [ref=e1964]: + - cell "Thumb ウェルシュコーギーが調子乗りすぎてボーダーコリーにガチで怒られる" [ref=e1965]: + - generic [ref=e1966]: + - link "Thumb" [ref=e1967] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=iJrj5bULW6Q + - img "Thumb" [ref=e1968] + - link "ウェルシュコーギーが調子乗りすぎてボーダーコリーにガチで怒られる" [ref=e1969] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=iJrj5bULW6Q + - cell [ref=e1970]: + - button "Extract Transcript" [ref=e1971] [cursor=pointer]: + - img [ref=e1972] + - cell "5,661,198" [ref=e1975] + - cell "34,020" [ref=e1976] + - cell "PT16S" [ref=e1977] + - cell "2026-03-06 06:00" [ref=e1978] + - row "Thumb パパが立つまで1匹だけかと思ったw 127,691 536 PT24S 2026-03-05 23:01" [ref=e1979]: + - cell "Thumb パパが立つまで1匹だけかと思ったw" [ref=e1980]: + - generic [ref=e1981]: + - link "Thumb" [ref=e1982] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rDhUmeIyFhw + - img "Thumb" [ref=e1983] + - link "パパが立つまで1匹だけかと思ったw" [ref=e1984] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rDhUmeIyFhw + - cell [ref=e1985]: + - button "Extract Transcript" [ref=e1986] [cursor=pointer]: + - img [ref=e1987] + - cell "127,691" [ref=e1990] + - cell "536" [ref=e1991] + - cell "PT24S" [ref=e1992] + - cell "2026-03-05 23:01" [ref=e1993] + - row "Thumb 息子に一生忘れられない波をプレゼントしたパパ🌊 5,349,807 51,513 PT19S 2026-03-05 08:30" [ref=e1994]: + - cell "Thumb 息子に一生忘れられない波をプレゼントしたパパ🌊" [ref=e1995]: + - generic [ref=e1996]: + - link "Thumb" [ref=e1997] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Zn75l9L7kmQ + - img "Thumb" [ref=e1998] + - link "息子に一生忘れられない波をプレゼントしたパパ🌊" [ref=e1999] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=Zn75l9L7kmQ + - cell [ref=e2000]: + - button "Extract Transcript" [ref=e2001] [cursor=pointer]: + - img [ref=e2002] + - cell "5,349,807" [ref=e2005] + - cell "51,513" [ref=e2006] + - cell "PT19S" [ref=e2007] + - cell "2026-03-05 08:30" [ref=e2008] + - row "Thumb 一生飲み会のネタになる親友の瞬発力ww 51,891 496 PT13S 2026-03-05 04:40" [ref=e2009]: + - cell "Thumb 一生飲み会のネタになる親友の瞬発力ww" [ref=e2010]: + - generic [ref=e2011]: + - link "Thumb" [ref=e2012] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=aCU2Z6YM33k + - img "Thumb" [ref=e2013] + - link "一生飲み会のネタになる親友の瞬発力ww" [ref=e2014] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=aCU2Z6YM33k + - cell [ref=e2015]: + - button "Extract Transcript" [ref=e2016] [cursor=pointer]: + - img [ref=e2017] + - cell "51,891" [ref=e2020] + - cell "496" [ref=e2021] + - cell "PT13S" [ref=e2022] + - cell "2026-03-05 04:40" [ref=e2023] + - row "Thumb 5秒後にラブラドールがやらかした大惨事ww 210,052 1,167 PT14S 2026-05-05 04:10" [ref=e2024]: + - cell "Thumb 5秒後にラブラドールがやらかした大惨事ww" [ref=e2025]: + - generic [ref=e2026]: + - link "Thumb" [ref=e2027] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=3rRBozACmYw + - img "Thumb" [ref=e2028] + - link "5秒後にラブラドールがやらかした大惨事ww" [ref=e2029] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=3rRBozACmYw + - cell [ref=e2030]: + - button "Extract Transcript" [ref=e2031] [cursor=pointer]: + - img [ref=e2032] + - cell "210,052" [ref=e2035] + - cell "1,167" [ref=e2036] + - cell "PT14S" [ref=e2037] + - cell "2026-05-05 04:10" [ref=e2038] + - row "Thumb 野良猫のボスを見つけてしまった🐈‍⬛ 89,441 1,044 PT14S 2026-03-04 11:00" [ref=e2039]: + - cell "Thumb 野良猫のボスを見つけてしまった🐈‍⬛" [ref=e2040]: + - generic [ref=e2041]: + - link "Thumb" [ref=e2042] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=VFnVm7buK-4 + - img "Thumb" [ref=e2043] + - link "野良猫のボスを見つけてしまった🐈‍⬛" [ref=e2044] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=VFnVm7buK-4 + - cell [ref=e2045]: + - button "Extract Transcript" [ref=e2046] [cursor=pointer]: + - img [ref=e2047] + - cell "89,441" [ref=e2050] + - cell "1,044" [ref=e2051] + - cell "PT14S" [ref=e2052] + - cell "2026-03-04 11:00" [ref=e2053] + - row "Thumb 飼い主よりぐっすり寝てる馬が可愛すぎる🐴 158,118 1,233 PT16S 2026-03-04 07:20" [ref=e2054]: + - cell "Thumb 飼い主よりぐっすり寝てる馬が可愛すぎる🐴" [ref=e2055]: + - generic [ref=e2056]: + - link "Thumb" [ref=e2057] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=5l2EAvCacaQ + - img "Thumb" [ref=e2058] + - link "飼い主よりぐっすり寝てる馬が可愛すぎる🐴" [ref=e2059] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=5l2EAvCacaQ + - cell [ref=e2060]: + - button "Extract Transcript" [ref=e2061] [cursor=pointer]: + - img [ref=e2062] + - cell "158,118" [ref=e2065] + - cell "1,233" [ref=e2066] + - cell "PT16S" [ref=e2067] + - cell "2026-03-04 07:20" [ref=e2068] + - row "Thumb ペンギンが秒で逃げた理由🐧🦭 1,139,059 15,605 PT11S 2026-03-04 03:00" [ref=e2069]: + - cell "Thumb ペンギンが秒で逃げた理由🐧🦭" [ref=e2070]: + - generic [ref=e2071]: + - link "Thumb" [ref=e2072] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=QcBmL5HMIR8 + - img "Thumb" [ref=e2073] + - link "ペンギンが秒で逃げた理由🐧🦭" [ref=e2074] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=QcBmL5HMIR8 + - cell [ref=e2075]: + - button "Extract Transcript" [ref=e2076] [cursor=pointer]: + - img [ref=e2077] + - cell "1,139,059" [ref=e2080] + - cell "15,605" [ref=e2081] + - cell "PT11S" [ref=e2082] + - cell "2026-03-04 03:00" [ref=e2083] + - row "Thumb 息子の動画が広まった理由 75,201 710 PT45S 2026-03-03 09:00" [ref=e2084]: + - cell "Thumb 息子の動画が広まった理由" [ref=e2085]: + - generic [ref=e2086]: + - link "Thumb" [ref=e2087] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=NVB6OL0lHSo + - img "Thumb" [ref=e2088] + - link "息子の動画が広まった理由" [ref=e2089] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=NVB6OL0lHSo + - cell [ref=e2090]: + - button "Extract Transcript" [ref=e2091] [cursor=pointer]: + - img [ref=e2092] + - cell "75,201" [ref=e2095] + - cell "710" [ref=e2096] + - cell "PT45S" [ref=e2097] + - cell "2026-03-03 09:00" [ref=e2098] + - row "Thumb 男7人で集まって遊んだらwwww 64,064 750 PT13S 2026-03-03 04:00" [ref=e2099]: + - cell "Thumb 男7人で集まって遊んだらwwww" [ref=e2100]: + - generic [ref=e2101]: + - link "Thumb" [ref=e2102] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=zeomSgBIIME + - img "Thumb" [ref=e2103] + - link "男7人で集まって遊んだらwwww" [ref=e2104] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=zeomSgBIIME + - cell [ref=e2105]: + - button "Extract Transcript" [ref=e2106] [cursor=pointer]: + - img [ref=e2107] + - cell "64,064" [ref=e2110] + - cell "750" [ref=e2111] + - cell "PT13S" [ref=e2112] + - cell "2026-03-03 04:00" [ref=e2113] + - row "Thumb お母さんを覚えている近衛馬 476,735 5,777 PT22S 2026-03-02 09:30" [ref=e2114]: + - cell "Thumb お母さんを覚えている近衛馬" [ref=e2115]: + - generic [ref=e2116]: + - link "Thumb" [ref=e2117] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=QSD5AOFhWNY + - img "Thumb" [ref=e2118] + - link "お母さんを覚えている近衛馬" [ref=e2119] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=QSD5AOFhWNY + - cell [ref=e2120]: + - button "Extract Transcript" [ref=e2121] [cursor=pointer]: + - img [ref=e2122] + - cell "476,735" [ref=e2125] + - cell "5,777" [ref=e2126] + - cell "PT22S" [ref=e2127] + - cell "2026-03-02 09:30" [ref=e2128] + - row "Thumb バンドボーカルのシャウトがガチな理由 52,116 288 PT12S 2026-03-02 05:10" [ref=e2129]: + - cell "Thumb バンドボーカルのシャウトがガチな理由" [ref=e2130]: + - generic [ref=e2131]: + - link "Thumb" [ref=e2132] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=fFGXP2x3DYM + - img "Thumb" [ref=e2133] + - link "バンドボーカルのシャウトがガチな理由" [ref=e2134] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=fFGXP2x3DYM + - cell [ref=e2135]: + - button "Extract Transcript" [ref=e2136] [cursor=pointer]: + - img [ref=e2137] + - cell "52,116" [ref=e2140] + - cell "288" [ref=e2141] + - cell "PT12S" [ref=e2142] + - cell "2026-03-02 05:10" [ref=e2143] + - row "Thumb ヤバすぎる愛犬コントロール術 4,239,728 30,486 PT27S 2026-03-01 10:30" [ref=e2144]: + - cell "Thumb ヤバすぎる愛犬コントロール術" [ref=e2145]: + - generic [ref=e2146]: + - link "Thumb" [ref=e2147] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=W_Zp3d2FdfY + - img "Thumb" [ref=e2148] + - link "ヤバすぎる愛犬コントロール術" [ref=e2149] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=W_Zp3d2FdfY + - cell [ref=e2150]: + - button "Extract Transcript" [ref=e2151] [cursor=pointer]: + - img [ref=e2152] + - cell "4,239,728" [ref=e2155] + - cell "30,486" [ref=e2156] + - cell "PT27S" [ref=e2157] + - cell "2026-03-01 10:30" [ref=e2158] + - row "Thumb 隣の部屋に音楽やってる人が住んでる時🎶 86,336 1,384 PT12S 2026-02-28 23:00" [ref=e2159]: + - cell "Thumb 隣の部屋に音楽やってる人が住んでる時🎶" [ref=e2160]: + - generic [ref=e2161]: + - link "Thumb" [ref=e2162] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rdWUEAiuaX4 + - img "Thumb" [ref=e2163] + - link "隣の部屋に音楽やってる人が住んでる時🎶" [ref=e2164] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rdWUEAiuaX4 + - cell [ref=e2165]: + - button "Extract Transcript" [ref=e2166] [cursor=pointer]: + - img [ref=e2167] + - cell "86,336" [ref=e2170] + - cell "1,384" [ref=e2171] + - cell "PT12S" [ref=e2172] + - cell "2026-02-28 23:00" [ref=e2173] + - row "Thumb 階段の一段だけペンキを塗れなかった理由😭 145,982 1,128 PT22S 2026-02-28 09:40" [ref=e2174]: + - cell "Thumb 階段の一段だけペンキを塗れなかった理由😭" [ref=e2175]: + - generic [ref=e2176]: + - link "Thumb" [ref=e2177] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=1wCTpCAnT-8 + - img "Thumb" [ref=e2178] + - link "階段の一段だけペンキを塗れなかった理由😭" [ref=e2179] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=1wCTpCAnT-8 + - cell [ref=e2180]: + - button "Extract Transcript" [ref=e2181] [cursor=pointer]: + - img [ref=e2182] + - cell "145,982" [ref=e2185] + - cell "1,128" [ref=e2186] + - cell "PT22S" [ref=e2187] + - cell "2026-02-28 09:40" [ref=e2188] + - row "Thumb この馬を手懐けた者が主人になる 10,965,225 79,470 PT21S 2026-02-28 00:01" [ref=e2189]: + - cell "Thumb この馬を手懐けた者が主人になる" [ref=e2190]: + - generic [ref=e2191]: + - link "Thumb" [ref=e2192] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lhsG-0zhDDo + - img "Thumb" [ref=e2193] + - link "この馬を手懐けた者が主人になる" [ref=e2194] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lhsG-0zhDDo + - cell [ref=e2195]: + - button "Extract Transcript" [ref=e2196] [cursor=pointer]: + - img [ref=e2197] + - cell "10,965,225" [ref=e2200] + - cell "79,470" [ref=e2201] + - cell "PT21S" [ref=e2202] + - cell "2026-02-28 00:01" [ref=e2203] + - row "Thumb カブトガニを助けようとした女性に起きたこと 1,418,284 4,775 PT29S 2026-02-27 05:10" [ref=e2204]: + - cell "Thumb カブトガニを助けようとした女性に起きたこと" [ref=e2205]: + - generic [ref=e2206]: + - link "Thumb" [ref=e2207] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=dL9npIOCves + - img "Thumb" [ref=e2208] + - link "カブトガニを助けようとした女性に起きたこと" [ref=e2209] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=dL9npIOCves + - cell [ref=e2210]: + - button "Extract Transcript" [ref=e2211] [cursor=pointer]: + - img [ref=e2212] + - cell "1,418,284" [ref=e2215] + - cell "4,775" [ref=e2216] + - cell "PT29S" [ref=e2217] + - cell "2026-02-27 05:10" [ref=e2218] + - row "Thumb 姫は俺たちが守る 15,279,427 151,402 PT24S 2026-02-26 09:00" [ref=e2219]: + - cell "Thumb 姫は俺たちが守る" [ref=e2220]: + - generic [ref=e2221]: + - link "Thumb" [ref=e2222] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=4HHpI32LnZg + - img "Thumb" [ref=e2223] + - link "姫は俺たちが守る" [ref=e2224] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=4HHpI32LnZg + - cell [ref=e2225]: + - button "Extract Transcript" [ref=e2226] [cursor=pointer]: + - img [ref=e2227] + - cell "15,279,427" [ref=e2230] + - cell "151,402" [ref=e2231] + - cell "PT24S" [ref=e2232] + - cell "2026-02-26 09:00" [ref=e2233] + - row "Thumb 先にやられたボーダーコリーのまさかのお返し 1,268,435 1,931 PT15S 2026-02-26 05:00" [ref=e2234]: + - cell "Thumb 先にやられたボーダーコリーのまさかのお返し" [ref=e2235]: + - generic [ref=e2236]: + - link "Thumb" [ref=e2237] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bZxIXTwE6vg + - img "Thumb" [ref=e2238] + - link "先にやられたボーダーコリーのまさかのお返し" [ref=e2239] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bZxIXTwE6vg + - cell [ref=e2240]: + - button "Extract Transcript" [ref=e2241] [cursor=pointer]: + - img [ref=e2242] + - cell "1,268,435" [ref=e2245] + - cell "1,931" [ref=e2246] + - cell "PT15S" [ref=e2247] + - cell "2026-02-26 05:00" [ref=e2248] + - row "Thumb ワシの一生 たった一度だけ危険な飛行をする理由 871,509 8,237 PT24S 2026-02-25 11:00" [ref=e2249]: + - cell "Thumb ワシの一生 たった一度だけ危険な飛行をする理由" [ref=e2250]: + - generic [ref=e2251]: + - link "Thumb" [ref=e2252] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=NGmQoJyTjSQ + - img "Thumb" [ref=e2253] + - link "ワシの一生 たった一度だけ危険な飛行をする理由" [ref=e2254] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=NGmQoJyTjSQ + - cell [ref=e2255]: + - button "Extract Transcript" [ref=e2256] [cursor=pointer]: + - img [ref=e2257] + - cell "871,509" [ref=e2260] + - cell "8,237" [ref=e2261] + - cell "PT24S" [ref=e2262] + - cell "2026-02-25 11:00" [ref=e2263] + - row "Thumb チア中に自分だけ曲変更に気づかなかったら何が起きたか 221,810 2,028 PT59S 2026-02-25 07:30" [ref=e2264]: + - cell "Thumb チア中に自分だけ曲変更に気づかなかったら何が起きたか" [ref=e2265]: + - generic [ref=e2266]: + - link "Thumb" [ref=e2267] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bYs8DDTCP1s + - img "Thumb" [ref=e2268] + - link "チア中に自分だけ曲変更に気づかなかったら何が起きたか" [ref=e2269] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=bYs8DDTCP1s + - cell [ref=e2270]: + - button "Extract Transcript" [ref=e2271] [cursor=pointer]: + - img [ref=e2272] + - cell "221,810" [ref=e2275] + - cell "2,028" [ref=e2276] + - cell "PT59S" [ref=e2277] + - cell "2026-02-25 07:30" [ref=e2278] + - row "Thumb 一匹狼だと思ってた北極オオカミの正体 2,727,339 27,137 PT18S 2026-02-24 09:00" [ref=e2279]: + - cell "Thumb 一匹狼だと思ってた北極オオカミの正体" [ref=e2280]: + - generic [ref=e2281]: + - link "Thumb" [ref=e2282] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lHyl2V029aQ + - img "Thumb" [ref=e2283] + - link "一匹狼だと思ってた北極オオカミの正体" [ref=e2284] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lHyl2V029aQ + - cell [ref=e2285]: + - button "Extract Transcript" [ref=e2286] [cursor=pointer]: + - img [ref=e2287] + - cell "2,727,339" [ref=e2290] + - cell "27,137" [ref=e2291] + - cell "PT18S" [ref=e2292] + - cell "2026-02-24 09:00" [ref=e2293] + - row "Thumb 野生動物観察に必要な安全距離 161,331 278 PT26S 2026-02-24 05:00" [ref=e2294]: + - cell "Thumb 野生動物観察に必要な安全距離" [ref=e2295]: + - generic [ref=e2296]: + - link "Thumb" [ref=e2297] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=22tOqP9QYYE + - img "Thumb" [ref=e2298] + - link "野生動物観察に必要な安全距離" [ref=e2299] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=22tOqP9QYYE + - cell [ref=e2300]: + - button "Extract Transcript" [ref=e2301] [cursor=pointer]: + - img [ref=e2302] + - cell "161,331" [ref=e2305] + - cell "278" [ref=e2306] + - cell "PT26S" [ref=e2307] + - cell "2026-02-24 05:00" [ref=e2308] + - row "Thumb アジア人を舐めたテニス選手の末路 756,763 1,596 PT32S 2026-02-23 05:30" [ref=e2309]: + - cell "Thumb アジア人を舐めたテニス選手の末路" [ref=e2310]: + - generic [ref=e2311]: + - link "Thumb" [ref=e2312] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lARRuLMhn7c + - img "Thumb" [ref=e2313] + - link "アジア人を舐めたテニス選手の末路" [ref=e2314] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lARRuLMhn7c + - cell [ref=e2315]: + - button "Extract Transcript" [ref=e2316] [cursor=pointer]: + - img [ref=e2317] + - cell "756,763" [ref=e2320] + - cell "1,596" [ref=e2321] + - cell "PT32S" [ref=e2322] + - cell "2026-02-23 05:30" [ref=e2323] + - row "Thumb 終わるまで誰にもわからない😮 36,113 161 PT14S 2026-02-22 07:00" [ref=e2324]: + - cell "Thumb 終わるまで誰にもわからない😮" [ref=e2325]: + - generic [ref=e2326]: + - link "Thumb" [ref=e2327] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=yJGE-e2EnzY + - img "Thumb" [ref=e2328] + - link "終わるまで誰にもわからない😮" [ref=e2329] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=yJGE-e2EnzY + - cell [ref=e2330]: + - button "Extract Transcript" [ref=e2331] [cursor=pointer]: + - img [ref=e2332] + - cell "36,113" [ref=e2335] + - cell "161" [ref=e2336] + - cell "PT14S" [ref=e2337] + - cell "2026-02-22 07:00" [ref=e2338] + - row "Thumb テニスの王子様の実写版かよww 150,955 1,063 PT18S 2026-02-21 12:01" [ref=e2339]: + - cell "Thumb テニスの王子様の実写版かよww" [ref=e2340]: + - generic [ref=e2341]: + - link "Thumb" [ref=e2342] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=jdkEXzHOCIE + - img "Thumb" [ref=e2343] + - link "テニスの王子様の実写版かよww" [ref=e2344] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=jdkEXzHOCIE + - cell [ref=e2345]: + - button "Extract Transcript" [ref=e2346] [cursor=pointer]: + - img [ref=e2347] + - cell "150,955" [ref=e2350] + - cell "1,063" [ref=e2351] + - cell "PT18S" [ref=e2352] + - cell "2026-02-21 12:01" [ref=e2353] + - row "Thumb 空から休みに来た一羽の鳥 6,719,628 49,025 PT17S 2026-02-21 00:00" [ref=e2354]: + - cell "Thumb 空から休みに来た一羽の鳥" [ref=e2355]: + - generic [ref=e2356]: + - link "Thumb" [ref=e2357] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=q7K_xYJ6X4E + - img "Thumb" [ref=e2358] + - link "空から休みに来た一羽の鳥" [ref=e2359] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=q7K_xYJ6X4E + - cell [ref=e2360]: + - button "Extract Transcript" [ref=e2361] [cursor=pointer]: + - img [ref=e2362] + - cell "6,719,628" [ref=e2365] + - cell "49,025" [ref=e2366] + - cell "PT17S" [ref=e2367] + - cell "2026-02-21 00:00" [ref=e2368] + - row "Thumb アフガニスタンでインタビュー中に突然飛び出したハリー王子 361,443 1,410 PT11S 2026-02-20 10:01" [ref=e2369]: + - cell "Thumb アフガニスタンでインタビュー中に突然飛び出したハリー王子" [ref=e2370]: + - generic [ref=e2371]: + - link "Thumb" [ref=e2372] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=nj0uEX7MJU8 + - img "Thumb" [ref=e2373] + - link "アフガニスタンでインタビュー中に突然飛び出したハリー王子" [ref=e2374] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=nj0uEX7MJU8 + - cell [ref=e2375]: + - button "Extract Transcript" [ref=e2376] [cursor=pointer]: + - img [ref=e2377] + - cell "361,443" [ref=e2380] + - cell "1,410" [ref=e2381] + - cell "PT11S" [ref=e2382] + - cell "2026-02-20 10:01" [ref=e2383] + - row "Thumb センスえぐい告白😆 947,135 8,225 PT14S 2026-02-20 06:14" [ref=e2384]: + - cell "Thumb センスえぐい告白😆" [ref=e2385]: + - generic [ref=e2386]: + - link "Thumb" [ref=e2387] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=owMtVmR4nHY + - img "Thumb" [ref=e2388] + - link "センスえぐい告白😆" [ref=e2389] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=owMtVmR4nHY + - cell [ref=e2390]: + - button "Extract Transcript" [ref=e2391] [cursor=pointer]: + - img [ref=e2392] + - cell "947,135" [ref=e2395] + - cell "8,225" [ref=e2396] + - cell "PT14S" [ref=e2397] + - cell "2026-02-20 06:14" [ref=e2398] + - row "Thumb 悪い犬はいない でも悪い飼い主はいる 21,672,651 160,248 PT28S 2026-02-22 11:40" [ref=e2399]: + - cell "Thumb 悪い犬はいない でも悪い飼い主はいる" [ref=e2400]: + - generic [ref=e2401]: + - link "Thumb" [ref=e2402] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=OpmSTCxPzGM + - img "Thumb" [ref=e2403] + - link "悪い犬はいない でも悪い飼い主はいる" [ref=e2404] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=OpmSTCxPzGM + - cell [ref=e2405]: + - button "Extract Transcript" [ref=e2406] [cursor=pointer]: + - img [ref=e2407] + - cell "21,672,651" [ref=e2410] + - cell "160,248" [ref=e2411] + - cell "PT28S" [ref=e2412] + - cell "2026-02-22 11:40" [ref=e2413] + - row "Thumb 男の無関心っぽい魅力にドキドキする理由 258,635 2,665 PT17S 2026-02-20 02:27" [ref=e2414]: + - cell "Thumb 男の無関心っぽい魅力にドキドキする理由" [ref=e2415]: + - generic [ref=e2416]: + - link "Thumb" [ref=e2417] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=AxWAkc_CXvY + - img "Thumb" [ref=e2418] + - link "男の無関心っぽい魅力にドキドキする理由" [ref=e2419] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=AxWAkc_CXvY + - cell [ref=e2420]: + - button "Extract Transcript" [ref=e2421] [cursor=pointer]: + - img [ref=e2422] + - cell "258,635" [ref=e2425] + - cell "2,665" [ref=e2426] + - cell "PT17S" [ref=e2427] + - cell "2026-02-20 02:27" [ref=e2428] + - row "Thumb レストランでカードエラー、代わりに払った男のまさかの行動😆 3,303,794 32,518 PT29S 2026-02-19 11:01" [ref=e2429]: + - cell "Thumb レストランでカードエラー、代わりに払った男のまさかの行動😆" [ref=e2430]: + - generic [ref=e2431]: + - link "Thumb" [ref=e2432] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ZKIQpOQlA9c + - img "Thumb" [ref=e2433] + - link "レストランでカードエラー、代わりに払った男のまさかの行動😆" [ref=e2434] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ZKIQpOQlA9c + - cell [ref=e2435]: + - button "Extract Transcript" [ref=e2436] [cursor=pointer]: + - img [ref=e2437] + - cell "3,303,794" [ref=e2440] + - cell "32,518" [ref=e2441] + - cell "PT29S" [ref=e2442] + - cell "2026-02-19 11:01" [ref=e2443] + - row "Thumb アフリカの道ど真ん中で繰り広げられた空気読み対決 362,511 1,580 PT16S 2026-02-19 08:00" [ref=e2444]: + - cell "Thumb アフリカの道ど真ん中で繰り広げられた空気読み対決" [ref=e2445]: + - generic [ref=e2446]: + - link "Thumb" [ref=e2447] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=dwCj8nMqQhU + - img "Thumb" [ref=e2448] + - link "アフリカの道ど真ん中で繰り広げられた空気読み対決" [ref=e2449] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=dwCj8nMqQhU + - cell [ref=e2450]: + - button "Extract Transcript" [ref=e2451] [cursor=pointer]: + - img [ref=e2452] + - cell "362,511" [ref=e2455] + - cell "1,580" [ref=e2456] + - cell "PT16S" [ref=e2457] + - cell "2026-02-19 08:00" [ref=e2458] + - row "Thumb ツンデレだけど根はいい子なんです 51,654 488 PT20S 2026-02-19 05:10" [ref=e2459]: + - cell "Thumb ツンデレだけど根はいい子なんです" [ref=e2460]: + - generic [ref=e2461]: + - link "Thumb" [ref=e2462] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rr1cbM9Em5k + - img "Thumb" [ref=e2463] + - link "ツンデレだけど根はいい子なんです" [ref=e2464] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=rr1cbM9Em5k + - cell [ref=e2465]: + - button "Extract Transcript" [ref=e2466] [cursor=pointer]: + - img [ref=e2467] + - cell "51,654" [ref=e2470] + - cell "488" [ref=e2471] + - cell "PT20S" [ref=e2472] + - cell "2026-02-19 05:10" [ref=e2473] + - row "Thumb ステージ落下事故でも歌い続けたマイケルジャクソン(ミュンヘン1999) 2,510,678 16,813 PT19S 2026-02-15 07:44" [ref=e2474]: + - cell "Thumb ステージ落下事故でも歌い続けたマイケルジャクソン(ミュンヘン1999)" [ref=e2475]: + - generic [ref=e2476]: + - link "Thumb" [ref=e2477] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=X2eX0hm17qY + - img "Thumb" [ref=e2478] + - link "ステージ落下事故でも歌い続けたマイケルジャクソン(ミュンヘン1999)" [ref=e2479] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=X2eX0hm17qY + - cell [ref=e2480]: + - button "Extract Transcript" [ref=e2481] [cursor=pointer]: + - img [ref=e2482] + - cell "2,510,678" [ref=e2485] + - cell "16,813" [ref=e2486] + - cell "PT19S" [ref=e2487] + - cell "2026-02-15 07:44" [ref=e2488] + - row "Thumb エミネムをビビらせたマイケルジャクソンの復讐 864,020 6,872 PT20S 2026-02-14 23:00" [ref=e2489]: + - cell "Thumb エミネムをビビらせたマイケルジャクソンの復讐" [ref=e2490]: + - generic [ref=e2491]: + - link "Thumb" [ref=e2492] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=TQIC3DzlH2Q + - img "Thumb" [ref=e2493] + - link "エミネムをビビらせたマイケルジャクソンの復讐" [ref=e2494] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=TQIC3DzlH2Q + - cell [ref=e2495]: + - button "Extract Transcript" [ref=e2496] [cursor=pointer]: + - img [ref=e2497] + - cell "864,020" [ref=e2500] + - cell "6,872" [ref=e2501] + - cell "PT20S" [ref=e2502] + - cell "2026-02-14 23:00" [ref=e2503] + - row "Thumb 海外でバズった空き巣の伝説級映像www 37,556 109 PT13S 2026-02-14 06:45" [ref=e2504]: + - cell "Thumb 海外でバズった空き巣の伝説級映像www" [ref=e2505]: + - generic [ref=e2506]: + - link "Thumb" [ref=e2507] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=zVKNbz5tfNg + - img "Thumb" [ref=e2508] + - link "海外でバズった空き巣の伝説級映像www" [ref=e2509] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=zVKNbz5tfNg + - cell [ref=e2510]: + - button "Extract Transcript" [ref=e2511] [cursor=pointer]: + - img [ref=e2512] + - cell "37,556" [ref=e2515] + - cell "109" [ref=e2516] + - cell "PT13S" [ref=e2517] + - cell "2026-02-14 06:45" [ref=e2518] + - row "Thumb マイケルジャクソンを失ったジャネットジャクソンの追悼ステージ 885,983 8,670 PT27S 2026-02-13 09:00" [ref=e2519]: + - cell "Thumb マイケルジャクソンを失ったジャネットジャクソンの追悼ステージ" [ref=e2520]: + - generic [ref=e2521]: + - link "Thumb" [ref=e2522] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=YN-QEYKHkws + - img "Thumb" [ref=e2523] + - link "マイケルジャクソンを失ったジャネットジャクソンの追悼ステージ" [ref=e2524] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=YN-QEYKHkws + - cell [ref=e2525]: + - button "Extract Transcript" [ref=e2526] [cursor=pointer]: + - img [ref=e2527] + - cell "885,983" [ref=e2530] + - cell "8,670" [ref=e2531] + - cell "PT27S" [ref=e2532] + - cell "2026-02-13 09:00" [ref=e2533] + - row "Thumb 地震が襲った瞬間 違う選択をした人々 48,762 403 PT17S 2026-02-12 09:00" [ref=e2534]: + - cell "Thumb 地震が襲った瞬間 違う選択をした人々" [ref=e2535]: + - generic [ref=e2536]: + - link "Thumb" [ref=e2537] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ICc4O91RPoU + - img "Thumb" [ref=e2538] + - link "地震が襲った瞬間 違う選択をした人々" [ref=e2539] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ICc4O91RPoU + - cell [ref=e2540]: + - button "Extract Transcript" [ref=e2541] [cursor=pointer]: + - img [ref=e2542] + - cell "48,762" [ref=e2545] + - cell "403" [ref=e2546] + - cell "PT17S" [ref=e2547] + - cell "2026-02-12 09:00" [ref=e2548] + - row "Thumb 氷上で溢れる友情😂 3,309,447 19,362 PT21S 2026-02-11 07:20" [ref=e2549]: + - cell "Thumb 氷上で溢れる友情😂" [ref=e2550]: + - generic [ref=e2551]: + - link "Thumb" [ref=e2552] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=073-vpyjO8k + - img "Thumb" [ref=e2553] + - link "氷上で溢れる友情😂" [ref=e2554] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=073-vpyjO8k + - cell [ref=e2555]: + - button "Extract Transcript" [ref=e2556] [cursor=pointer]: + - img [ref=e2557] + - cell "3,309,447" [ref=e2560] + - cell "19,362" [ref=e2561] + - cell "PT21S" [ref=e2562] + - cell "2026-02-11 07:20" [ref=e2563] + - row "Thumb マイケルジャクソンが音響トラブルに対応する方法 9,480,851 86,330 PT23S 2026-02-11 03:53" [ref=e2564]: + - cell "Thumb マイケルジャクソンが音響トラブルに対応する方法" [ref=e2565]: + - generic [ref=e2566]: + - link "Thumb" [ref=e2567] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=-mmbXygrg3A + - img "Thumb" [ref=e2568] + - link "マイケルジャクソンが音響トラブルに対応する方法" [ref=e2569] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=-mmbXygrg3A + - cell [ref=e2570]: + - button "Extract Transcript" [ref=e2571] [cursor=pointer]: + - img [ref=e2572] + - cell "9,480,851" [ref=e2575] + - cell "86,330" [ref=e2576] + - cell "PT23S" [ref=e2577] + - cell "2026-02-11 03:53" [ref=e2578] + - row "Thumb みんなが息を呑んで応援しちゃう瞬間 39,279 944 PT57S 2026-02-10 08:00" [ref=e2579]: + - cell "Thumb みんなが息を呑んで応援しちゃう瞬間" [ref=e2580]: + - generic [ref=e2581]: + - link "Thumb" [ref=e2582] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ZQ4-VFB-eNU + - img "Thumb" [ref=e2583] + - link "みんなが息を呑んで応援しちゃう瞬間" [ref=e2584] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ZQ4-VFB-eNU + - cell [ref=e2585]: + - button "Extract Transcript" [ref=e2586] [cursor=pointer]: + - img [ref=e2587] + - cell "39,279" [ref=e2590] + - cell "944" [ref=e2591] + - cell "PT57S" [ref=e2592] + - cell "2026-02-10 08:00" [ref=e2593] + - row "Thumb マイケル・ジャクソン×マイケル・ジョーダン|Jam MV撮影の裏側 1,785,752 26,697 PT24S 2026-02-09 09:50" [ref=e2594]: + - cell "Thumb マイケル・ジャクソン×マイケル・ジョーダン|Jam MV撮影の裏側" [ref=e2595]: + - generic [ref=e2596]: + - link "Thumb" [ref=e2597] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=nvlE-ZcjQcU + - img "Thumb" [ref=e2598] + - link "マイケル・ジャクソン×マイケル・ジョーダン|Jam MV撮影の裏側" [ref=e2599] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=nvlE-ZcjQcU + - cell [ref=e2600]: + - button "Extract Transcript" [ref=e2601] [cursor=pointer]: + - img [ref=e2602] + - cell "1,785,752" [ref=e2605] + - cell "26,697" [ref=e2606] + - cell "PT24S" [ref=e2607] + - cell "2026-02-09 09:50" [ref=e2608] + - row "Thumb あの波を知り尽くしたローカルが現れた🌊 3,909,677 13,798 PT28S 2026-02-09 05:48" [ref=e2609]: + - cell "Thumb あの波を知り尽くしたローカルが現れた🌊" [ref=e2610]: + - generic [ref=e2611]: + - link "Thumb" [ref=e2612] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=TLqws9auUag + - img "Thumb" [ref=e2613] + - link "あの波を知り尽くしたローカルが現れた🌊" [ref=e2614] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=TLqws9auUag + - cell [ref=e2615]: + - button "Extract Transcript" [ref=e2616] [cursor=pointer]: + - img [ref=e2617] + - cell "3,909,677" [ref=e2620] + - cell "13,798" [ref=e2621] + - cell "PT28S" [ref=e2622] + - cell "2026-02-09 05:48" [ref=e2623] + - row "Thumb 妙に納得しちゃうマイケル・ジャクソンの計算方法🤣 579,728 1,097 PT18S 2026-02-08 07:39" [ref=e2624]: + - cell "Thumb 妙に納得しちゃうマイケル・ジャクソンの計算方法🤣" [ref=e2625]: + - generic [ref=e2626]: + - link "Thumb" [ref=e2627] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=cpvOB5B0nNc + - img "Thumb" [ref=e2628] + - link "妙に納得しちゃうマイケル・ジャクソンの計算方法🤣" [ref=e2629] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=cpvOB5B0nNc + - cell [ref=e2630]: + - button "Extract Transcript" [ref=e2631] [cursor=pointer]: + - img [ref=e2632] + - cell "579,728" [ref=e2635] + - cell "1,097" [ref=e2636] + - cell "PT18S" [ref=e2637] + - cell "2026-02-08 07:39" [ref=e2638] + - row "Thumb マイケルジャクソンの人生を変えた広告事故 322,858 2,328 PT20S 2026-02-07 10:50" [ref=e2639]: + - cell "Thumb マイケルジャクソンの人生を変えた広告事故" [ref=e2640]: + - generic [ref=e2641]: + - link "Thumb" [ref=e2642] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=b6bwTnjwhzg + - img "Thumb" [ref=e2643] + - link "マイケルジャクソンの人生を変えた広告事故" [ref=e2644] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=b6bwTnjwhzg + - cell [ref=e2645]: + - button "Extract Transcript" [ref=e2646] [cursor=pointer]: + - img [ref=e2647] + - cell "322,858" [ref=e2650] + - cell "2,328" [ref=e2651] + - cell "PT20S" [ref=e2652] + - cell "2026-02-07 10:50" [ref=e2653] + - row "Thumb 体にコードが絡まった時のマイケルジャクソンの独特な対処法ww 5,323,226 29,703 PT11S 2026-02-07 05:07" [ref=e2654]: + - cell "Thumb 体にコードが絡まった時のマイケルジャクソンの独特な対処法ww" [ref=e2655]: + - generic [ref=e2656]: + - link "Thumb" [ref=e2657] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=8P1necT9syI + - img "Thumb" [ref=e2658] + - link "体にコードが絡まった時のマイケルジャクソンの独特な対処法ww" [ref=e2659] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=8P1necT9syI + - cell [ref=e2660]: + - button "Extract Transcript" [ref=e2661] [cursor=pointer]: + - img [ref=e2662] + - cell "5,323,226" [ref=e2665] + - cell "29,703" [ref=e2666] + - cell "PT11S" [ref=e2667] + - cell "2026-02-07 05:07" [ref=e2668] + - row "Thumb マイケルジャクソンの伝説的なMV裏話 1,225,672 15,986 PT24S 2026-02-06 08:20" [ref=e2669]: + - cell "Thumb マイケルジャクソンの伝説的なMV裏話" [ref=e2670]: + - generic [ref=e2671]: + - link "Thumb" [ref=e2672] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=fxK0vMFGOsY + - img "Thumb" [ref=e2673] + - link "マイケルジャクソンの伝説的なMV裏話" [ref=e2674] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=fxK0vMFGOsY + - cell [ref=e2675]: + - button "Extract Transcript" [ref=e2676] [cursor=pointer]: + - img [ref=e2677] + - cell "1,225,672" [ref=e2680] + - cell "15,986" [ref=e2681] + - cell "PT24S" [ref=e2682] + - cell "2026-02-06 08:20" [ref=e2683] + - row "Thumb 絵で見せる母の人生 48,567 207 PT22S 2026-02-05 08:00" [ref=e2684]: + - cell "Thumb 絵で見せる母の人生" [ref=e2685]: + - generic [ref=e2686]: + - link "Thumb" [ref=e2687] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=hTx8MqlHvqw + - img "Thumb" [ref=e2688] + - link "絵で見せる母の人生" [ref=e2689] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=hTx8MqlHvqw + - cell [ref=e2690]: + - button "Extract Transcript" [ref=e2691] [cursor=pointer]: + - img [ref=e2692] + - cell "48,567" [ref=e2695] + - cell "207" [ref=e2696] + - cell "PT22S" [ref=e2697] + - cell "2026-02-05 08:00" [ref=e2698] + - row "Thumb これはキスカメラ有罪ww 25,581 153 PT26S 2026-02-05 05:26" [ref=e2699]: + - cell "Thumb これはキスカメラ有罪ww" [ref=e2700]: + - generic [ref=e2701]: + - link "Thumb" [ref=e2702] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=RRdRgJD-NgU + - img "Thumb" [ref=e2703] + - link "これはキスカメラ有罪ww" [ref=e2704] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=RRdRgJD-NgU + - cell [ref=e2705]: + - button "Extract Transcript" [ref=e2706] [cursor=pointer]: + - img [ref=e2707] + - cell "25,581" [ref=e2710] + - cell "153" [ref=e2711] + - cell "PT26S" [ref=e2712] + - cell "2026-02-05 05:26" [ref=e2713] + - row "Thumb 成敗されたパパラッチww 62,435 787 PT19S 2026-02-04 05:35" [ref=e2714]: + - cell "Thumb 成敗されたパパラッチww" [ref=e2715]: + - generic [ref=e2716]: + - link "Thumb" [ref=e2717] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=XeH-rnb0LrU + - img "Thumb" [ref=e2718] + - link "成敗されたパパラッチww" [ref=e2719] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=XeH-rnb0LrU + - cell [ref=e2720]: + - button "Extract Transcript" [ref=e2721] [cursor=pointer]: + - img [ref=e2722] + - cell "62,435" [ref=e2725] + - cell "787" [ref=e2726] + - cell "PT19S" [ref=e2727] + - cell "2026-02-04 05:35" [ref=e2728] + - row "Thumb MVに本物のギャング出演させたマイケル・ジャクソン😲 10,620,886 96,453 PT17S 2026-02-03 23:00" [ref=e2729]: + - cell "Thumb MVに本物のギャング出演させたマイケル・ジャクソン😲" [ref=e2730]: + - generic [ref=e2731]: + - link "Thumb" [ref=e2732] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=T8moBZLX1mQ + - img "Thumb" [ref=e2733] + - link "MVに本物のギャング出演させたマイケル・ジャクソン😲" [ref=e2734] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=T8moBZLX1mQ + - cell [ref=e2735]: + - button "Extract Transcript" [ref=e2736] [cursor=pointer]: + - img [ref=e2737] + - cell "10,620,886" [ref=e2740] + - cell "96,453" [ref=e2741] + - cell "PT17S" [ref=e2742] + - cell "2026-02-03 23:00" [ref=e2743] + - row "Thumb ライバルを尊重した本当のスポーツマンシップの瞬間 41,733 391 PT19S 2026-02-03 10:01" [ref=e2744]: + - cell "Thumb ライバルを尊重した本当のスポーツマンシップの瞬間" [ref=e2745]: + - generic [ref=e2746]: + - link "Thumb" [ref=e2747] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=qQViK4aZ4e4 + - img "Thumb" [ref=e2748] + - link "ライバルを尊重した本当のスポーツマンシップの瞬間" [ref=e2749] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=qQViK4aZ4e4 + - cell [ref=e2750]: + - button "Extract Transcript" [ref=e2751] [cursor=pointer]: + - img [ref=e2752] + - cell "41,733" [ref=e2755] + - cell "391" [ref=e2756] + - cell "PT19S" [ref=e2757] + - cell "2026-02-03 10:01" [ref=e2758] + - row "Thumb アザラシたちが寝ている様子をタイムラプスで撮影した映像 🦭 59,213 802 PT21S 2026-02-03 05:58" [ref=e2759]: + - cell "Thumb アザラシたちが寝ている様子をタイムラプスで撮影した映像 🦭" [ref=e2760]: + - generic [ref=e2761]: + - link "Thumb" [ref=e2762] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=oxknZPQ1dOw + - img "Thumb" [ref=e2763] + - link "アザラシたちが寝ている様子をタイムラプスで撮影した映像 🦭" [ref=e2764] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=oxknZPQ1dOw + - cell [ref=e2765]: + - button "Extract Transcript" [ref=e2766] [cursor=pointer]: + - img [ref=e2767] + - cell "59,213" [ref=e2770] + - cell "802" [ref=e2771] + - cell "PT21S" [ref=e2772] + - cell "2026-02-03 05:58" [ref=e2773] + - row "Thumb 今日は休むことに決めたアザラシ 47,673 1,055 PT11S 2026-02-03 02:40" [ref=e2774]: + - cell "Thumb 今日は休むことに決めたアザラシ" [ref=e2775]: + - generic [ref=e2776]: + - link "Thumb" [ref=e2777] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ECt3B-E-8ok + - img "Thumb" [ref=e2778] + - link "今日は休むことに決めたアザラシ" [ref=e2779] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ECt3B-E-8ok + - cell [ref=e2780]: + - button "Extract Transcript" [ref=e2781] [cursor=pointer]: + - img [ref=e2782] + - cell "47,673" [ref=e2785] + - cell "1,055" [ref=e2786] + - cell "PT11S" [ref=e2787] + - cell "2026-02-03 02:40" [ref=e2788] + - row "Thumb ゴッドファーザーで伝説になった猫の出演シーン 1,637,444 20,316 PT20S 2026-02-02 23:00" [ref=e2789]: + - cell "Thumb ゴッドファーザーで伝説になった猫の出演シーン" [ref=e2790]: + - generic [ref=e2791]: + - link "Thumb" [ref=e2792] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=_zolzuXzKYE + - img "Thumb" [ref=e2793] + - link "ゴッドファーザーで伝説になった猫の出演シーン" [ref=e2794] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=_zolzuXzKYE + - cell [ref=e2795]: + - button "Extract Transcript" [ref=e2796] [cursor=pointer]: + - img [ref=e2797] + - cell "1,637,444" [ref=e2800] + - cell "20,316" [ref=e2801] + - cell "PT20S" [ref=e2802] + - cell "2026-02-02 23:00" [ref=e2803] + - row "Thumb 家出しようとしたワンコが飼い主にバレた瞬間🐾 248,252 1,587 PT26S 2026-02-02 10:01" [ref=e2804]: + - cell "Thumb 家出しようとしたワンコが飼い主にバレた瞬間🐾" [ref=e2805]: + - generic [ref=e2806]: + - link "Thumb" [ref=e2807] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=qN8WRrZWxCY + - img "Thumb" [ref=e2808] + - link "家出しようとしたワンコが飼い主にバレた瞬間🐾" [ref=e2809] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=qN8WRrZWxCY + - cell [ref=e2810]: + - button "Extract Transcript" [ref=e2811] [cursor=pointer]: + - img [ref=e2812] + - cell "248,252" [ref=e2815] + - cell "1,587" [ref=e2816] + - cell "PT26S" [ref=e2817] + - cell "2026-02-02 10:01" [ref=e2818] + - row "Thumb 規定の隙を突いたNASCAR史上最も大胆なラストラップ 61,296 485 PT25S 2026-02-02 06:54" [ref=e2819]: + - cell "Thumb 規定の隙を突いたNASCAR史上最も大胆なラストラップ" [ref=e2820]: + - generic [ref=e2821]: + - link "Thumb" [ref=e2822] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=XgKivAxCQbA + - img "Thumb" [ref=e2823] + - link "規定の隙を突いたNASCAR史上最も大胆なラストラップ" [ref=e2824] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=XgKivAxCQbA + - cell [ref=e2825]: + - button "Extract Transcript" [ref=e2826] [cursor=pointer]: + - img [ref=e2827] + - cell "61,296" [ref=e2830] + - cell "485" [ref=e2831] + - cell "PT25S" [ref=e2832] + - cell "2026-02-02 06:54" [ref=e2833] + - row "Thumb レーシング史上最高にロマンな事件🏎️👍 14,704,744 151,872 PT20S 2026-02-01 09:57" [ref=e2834]: + - cell "Thumb レーシング史上最高にロマンな事件🏎️👍" [ref=e2835]: + - generic [ref=e2836]: + - link "Thumb" [ref=e2837] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ax37_8CAw_k + - img "Thumb" [ref=e2838] + - link "レーシング史上最高にロマンな事件🏎️👍" [ref=e2839] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ax37_8CAw_k + - cell [ref=e2840]: + - button "Extract Transcript" [ref=e2841] [cursor=pointer]: + - img [ref=e2842] + - cell "14,704,744" [ref=e2845] + - cell "151,872" [ref=e2846] + - cell "PT20S" [ref=e2847] + - cell "2026-02-01 09:57" [ref=e2848] + - row "Thumb 下りただけなのに世界1位 157,394 823 PT29S 2026-02-01 06:47" [ref=e2849]: + - cell "Thumb 下りただけなのに世界1位" [ref=e2850]: + - generic [ref=e2851]: + - link "Thumb" [ref=e2852] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=3INjgZaV564 + - img "Thumb" [ref=e2853] + - link "下りただけなのに世界1位" [ref=e2854] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=3INjgZaV564 + - cell [ref=e2855]: + - button "Extract Transcript" [ref=e2856] [cursor=pointer]: + - img [ref=e2857] + - cell "157,394" [ref=e2860] + - cell "823" [ref=e2861] + - cell "PT29S" [ref=e2862] + - cell "2026-02-01 06:47" [ref=e2863] + - row "Thumb 南極の海底。触れた瞬間、全てを凍らせる😱 24,836 108 PT22S 2026-05-12 07:23" [ref=e2864]: + - cell "Thumb 南極の海底。触れた瞬間、全てを凍らせる😱" [ref=e2865]: + - generic [ref=e2866]: + - link "Thumb" [ref=e2867] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=JL2yVBl2wl4 + - img "Thumb" [ref=e2868] + - link "南極の海底。触れた瞬間、全てを凍らせる😱" [ref=e2869] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=JL2yVBl2wl4 + - cell [ref=e2870]: + - button "Extract Transcript" [ref=e2871] [cursor=pointer]: + - img [ref=e2872] + - cell "24,836" [ref=e2875] + - cell "108" [ref=e2876] + - cell "PT22S" [ref=e2877] + - cell "2026-05-12 07:23" [ref=e2878] + - 'row "Thumb 50年前の映画『星の王子さま』にマイケル・ジャクソンを感じる理由 #Shorts #ボブフォッシー #MJ 15,047 152 PT22S 2026-05-12 04:24" [ref=e2879]': + - 'cell "Thumb 50年前の映画『星の王子さま』にマイケル・ジャクソンを感じる理由 #Shorts #ボブフォッシー #MJ" [ref=e2880]': + - generic [ref=e2881]: + - link "Thumb" [ref=e2882] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ShpDJI8QzdA + - img "Thumb" [ref=e2883] + - 'link "50年前の映画『星の王子さま』にマイケル・ジャクソンを感じる理由 #Shorts #ボブフォッシー #MJ" [ref=e2884] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=ShpDJI8QzdA + - cell [ref=e2885]: + - button "Extract Transcript" [ref=e2886] [cursor=pointer]: + - img [ref=e2887] + - cell "15,047" [ref=e2890] + - cell "152" [ref=e2891] + - cell "PT22S" [ref=e2892] + - cell "2026-05-12 04:24" [ref=e2893] + - row "Thumb 人類の進化に鳥肌が止まらない日 736,591 6,346 PT28S 2026-05-11 11:58" [ref=e2894]: + - cell "Thumb 人類の進化に鳥肌が止まらない日" [ref=e2895]: + - generic [ref=e2896]: + - link "Thumb" [ref=e2897] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=exwb3Gayn1A + - img "Thumb" [ref=e2898] + - link "人類の進化に鳥肌が止まらない日" [ref=e2899] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=exwb3Gayn1A + - cell [ref=e2900]: + - button "Extract Transcript" [ref=e2901] [cursor=pointer]: + - img [ref=e2902] + - cell "736,591" [ref=e2905] + - cell "6,346" [ref=e2906] + - cell "PT28S" [ref=e2907] + - cell "2026-05-11 11:58" [ref=e2908] + - 'row "Thumb 世界共通のガチ姉たちww #Shorts #姉弟 #スパルタの後継者 40,222 218 PT10S 2026-05-11 08:20" [ref=e2909]': + - 'cell "Thumb 世界共通のガチ姉たちww #Shorts #姉弟 #スパルタの後継者" [ref=e2910]': + - generic [ref=e2911]: + - link "Thumb" [ref=e2912] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=qolQwVqUkw0 + - img "Thumb" [ref=e2913] + - 'link "世界共通のガチ姉たちww #Shorts #姉弟 #スパルタの後継者" [ref=e2914] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=qolQwVqUkw0 + - cell [ref=e2915]: + - button "Extract Transcript" [ref=e2916] [cursor=pointer]: + - img [ref=e2917] + - cell "40,222" [ref=e2920] + - cell "218" [ref=e2921] + - cell "PT10S" [ref=e2922] + - cell "2026-05-11 08:20" [ref=e2923] + - row "Thumb 友達がまたヤバいの作ったwww 17,198 155 PT7S 2026-05-11 05:30" [ref=e2924]: + - cell "Thumb 友達がまたヤバいの作ったwww" [ref=e2925]: + - generic [ref=e2926]: + - link "Thumb" [ref=e2927] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=xOvg1BQf8D4 + - img "Thumb" [ref=e2928] + - link "友達がまたヤバいの作ったwww" [ref=e2929] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=xOvg1BQf8D4 + - cell [ref=e2930]: + - button "Extract Transcript" [ref=e2931] [cursor=pointer]: + - img [ref=e2932] + - cell "17,198" [ref=e2935] + - cell "155" [ref=e2936] + - cell "PT7S" [ref=e2937] + - cell "2026-05-11 05:30" [ref=e2938] + - row "Thumb 絶対1人は惚れ直してるwwww 171,438 579 PT17S 2026-05-10 14:10" [ref=e2939]: + - cell "Thumb 絶対1人は惚れ直してるwwww" [ref=e2940]: + - generic [ref=e2941]: + - link "Thumb" [ref=e2942] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ZXlyk9iD9hU + - img "Thumb" [ref=e2943] + - link "絶対1人は惚れ直してるwwww" [ref=e2944] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=ZXlyk9iD9hU + - cell [ref=e2945]: + - button "Extract Transcript" [ref=e2946] [cursor=pointer]: + - img [ref=e2947] + - cell "171,438" [ref=e2950] + - cell "579" [ref=e2951] + - cell "PT17S" [ref=e2952] + - cell "2026-05-10 14:10" [ref=e2953] + - row "Thumb 空間効率ヤバすぎるレジェンドなバスルーム設計…! 64,065 133 PT15S 2026-05-10 08:43" [ref=e2954]: + - cell "Thumb 空間効率ヤバすぎるレジェンドなバスルーム設計…!" [ref=e2955]: + - generic [ref=e2956]: + - link "Thumb" [ref=e2957] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=RSykNml71oI + - img "Thumb" [ref=e2958] + - link "空間効率ヤバすぎるレジェンドなバスルーム設計…!" [ref=e2959] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=RSykNml71oI + - cell [ref=e2960]: + - button "Extract Transcript" [ref=e2961] [cursor=pointer]: + - img [ref=e2962] + - cell "64,065" [ref=e2965] + - cell "133" [ref=e2966] + - cell "PT15S" [ref=e2967] + - cell "2026-05-10 08:43" [ref=e2968] + - 'row "Thumb 過保護な兄が3人いるとこうなるwww #Shorts #あるある #兄妹 #ドッキリ 186,558 838 PT21S 2026-05-09 10:10" [ref=e2969]': + - 'cell "Thumb 過保護な兄が3人いるとこうなるwww #Shorts #あるある #兄妹 #ドッキリ" [ref=e2970]': + - generic [ref=e2971]: + - link "Thumb" [ref=e2972] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=nE2CKor3sok + - img "Thumb" [ref=e2973] + - 'link "過保護な兄が3人いるとこうなるwww #Shorts #あるある #兄妹 #ドッキリ" [ref=e2974] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=nE2CKor3sok + - cell [ref=e2975]: + - button "Extract Transcript" [ref=e2976] [cursor=pointer]: + - img [ref=e2977] + - cell "186,558" [ref=e2980] + - cell "838" [ref=e2981] + - cell "PT21S" [ref=e2982] + - cell "2026-05-09 10:10" [ref=e2983] + - row "Thumb 7年付き合って義父に旦那を奪われたww 56,209 376 PT13S 2026-05-09 03:57" [ref=e2984]: + - cell "Thumb 7年付き合って義父に旦那を奪われたww" [ref=e2985]: + - generic [ref=e2986]: + - link "Thumb" [ref=e2987] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=k4svCbaxOVw + - img "Thumb" [ref=e2988] + - link "7年付き合って義父に旦那を奪われたww" [ref=e2989] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=k4svCbaxOVw + - cell [ref=e2990]: + - button "Extract Transcript" [ref=e2991] [cursor=pointer]: + - img [ref=e2992] + - cell "56,209" [ref=e2995] + - cell "376" [ref=e2996] + - cell "PT13S" [ref=e2997] + - cell "2026-05-09 03:57" [ref=e2998] + - row "Thumb 「うちの子フレンドリーです」と押し付けてくる飼い主をきっぱり断る理由(お散歩マナー) 39,399 250 PT33S 2026-05-08 13:36" [ref=e2999]: + - cell "Thumb 「うちの子フレンドリーです」と押し付けてくる飼い主をきっぱり断る理由(お散歩マナー)" [ref=e3000]: + - generic [ref=e3001]: + - link "Thumb" [ref=e3002] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=mZ_O6jYzzdU + - img "Thumb" [ref=e3003] + - link "「うちの子フレンドリーです」と押し付けてくる飼い主をきっぱり断る理由(お散歩マナー)" [ref=e3004] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=mZ_O6jYzzdU + - cell [ref=e3005]: + - button "Extract Transcript" [ref=e3006] [cursor=pointer]: + - img [ref=e3007] + - cell "39,399" [ref=e3010] + - cell "250" [ref=e3011] + - cell "PT33S" [ref=e3012] + - cell "2026-05-08 13:36" [ref=e3013] + - row "Thumb 140kgのアメフト選手と激突…放送事故かと思いきやプロ根性が凄すぎた件 109,127 178 PT15S 2026-05-08 06:13" [ref=e3014]: + - cell "Thumb 140kgのアメフト選手と激突…放送事故かと思いきやプロ根性が凄すぎた件" [ref=e3015]: + - generic [ref=e3016]: + - link "Thumb" [ref=e3017] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=HZ6wTc4EfhY + - img "Thumb" [ref=e3018] + - link "140kgのアメフト選手と激突…放送事故かと思いきやプロ根性が凄すぎた件" [ref=e3019] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=HZ6wTc4EfhY + - cell [ref=e3020]: + - button "Extract Transcript" [ref=e3021] [cursor=pointer]: + - img [ref=e3022] + - cell "109,127" [ref=e3025] + - cell "178" [ref=e3026] + - cell "PT15S" [ref=e3027] + - cell "2026-05-08 06:13" [ref=e3028] + - 'row "Thumb クチャクチャ音を立てる飼い主が許せない犬 #犬 #ペット #ショート #クチャラー 9,922 139 PT14S 2026-05-07 22:30" [ref=e3029]': + - 'cell "Thumb クチャクチャ音を立てる飼い主が許せない犬 #犬 #ペット #ショート #クチャラー" [ref=e3030]': + - generic [ref=e3031]: + - link "Thumb" [ref=e3032] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=3dPzAFvwvp4 + - img "Thumb" [ref=e3033] + - 'link "クチャクチャ音を立てる飼い主が許せない犬 #犬 #ペット #ショート #クチャラー" [ref=e3034] [cursor=pointer]': + - /url: https://www.youtube.com/watch?v=3dPzAFvwvp4 + - cell [ref=e3035]: + - button "Extract Transcript" [ref=e3036] [cursor=pointer]: + - img [ref=e3037] + - cell "9,922" [ref=e3040] + - cell "139" [ref=e3041] + - cell "PT14S" [ref=e3042] + - cell "2026-05-07 22:30" [ref=e3043] + - row "Thumb このパズルはマジで狂気。 29,006 121 PT8S 2026-05-07 06:40" [ref=e3044]: + - cell "Thumb このパズルはマジで狂気。" [ref=e3045]: + - generic [ref=e3046]: + - link "Thumb" [ref=e3047] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=uWULVMb33HY + - img "Thumb" [ref=e3048] + - link "このパズルはマジで狂気。" [ref=e3049] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=uWULVMb33HY + - cell [ref=e3050]: + - button "Extract Transcript" [ref=e3051] [cursor=pointer]: + - img [ref=e3052] + - cell "29,006" [ref=e3055] + - cell "121" [ref=e3056] + - cell "PT8S" [ref=e3057] + - cell "2026-05-07 06:40" [ref=e3058] + - row "Thumb 幼稚園の卒業式で起きた史上最強のプロポーズ 37,722 361 PT15S 2026-02-18 12:38" [ref=e3059]: + - cell "Thumb 幼稚園の卒業式で起きた史上最強のプロポーズ" [ref=e3060]: + - generic [ref=e3061]: + - link "Thumb" [ref=e3062] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=CkNrOWyk8hQ + - img "Thumb" [ref=e3063] + - link "幼稚園の卒業式で起きた史上最強のプロポーズ" [ref=e3064] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=CkNrOWyk8hQ + - cell [ref=e3065]: + - button "Extract Transcript" [ref=e3066] [cursor=pointer]: + - img [ref=e3067] + - cell "37,722" [ref=e3070] + - cell "361" [ref=e3071] + - cell "PT15S" [ref=e3072] + - cell "2026-02-18 12:38" [ref=e3073] + - row "Thumb MotoGP史上最高にクールなカメラワーク 301,865 1,895 PT17S 2026-02-18 03:56" [ref=e3074]: + - cell "Thumb MotoGP史上最高にクールなカメラワーク" [ref=e3075]: + - generic [ref=e3076]: + - link "Thumb" [ref=e3077] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=CPa4Ad-BHeA + - img "Thumb" [ref=e3078] + - link "MotoGP史上最高にクールなカメラワーク" [ref=e3079] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=CPa4Ad-BHeA + - cell [ref=e3080]: + - button "Extract Transcript" [ref=e3081] [cursor=pointer]: + - img [ref=e3082] + - cell "301,865" [ref=e3085] + - cell "1,895" [ref=e3086] + - cell "PT17S" [ref=e3087] + - cell "2026-02-18 03:56" [ref=e3088] + - row "Thumb サーフィン中に突然現れた意外な正体 41,911 687 PT18S 2026-02-17 23:00" [ref=e3089]: + - cell "Thumb サーフィン中に突然現れた意外な正体" [ref=e3090]: + - generic [ref=e3091]: + - link "Thumb" [ref=e3092] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lfC91nF47ck + - img "Thumb" [ref=e3093] + - link "サーフィン中に突然現れた意外な正体" [ref=e3094] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=lfC91nF47ck + - cell [ref=e3095]: + - button "Extract Transcript" [ref=e3096] [cursor=pointer]: + - img [ref=e3097] + - cell "41,911" [ref=e3100] + - cell "687" [ref=e3101] + - cell "PT18S" [ref=e3102] + - cell "2026-02-17 23:00" [ref=e3103] + - row "Thumb 1分後に明かされた守備の理由 121,004 183 PT38S 2026-02-17 13:06" [ref=e3104]: + - cell "Thumb 1分後に明かされた守備の理由" [ref=e3105]: + - generic [ref=e3106]: + - link "Thumb" [ref=e3107] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=SbUAvzOJF2k + - img "Thumb" [ref=e3108] + - link "1分後に明かされた守備の理由" [ref=e3109] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=SbUAvzOJF2k + - cell [ref=e3110]: + - button "Extract Transcript" [ref=e3111] [cursor=pointer]: + - img [ref=e3112] + - cell "121,004" [ref=e3115] + - cell "183" [ref=e3116] + - cell "PT38S" [ref=e3117] + - cell "2026-02-17 13:06" [ref=e3118] + - row "Thumb ヒストリーツアーEarth Song公演中に何が起きたのか 88,892 835 PT35S 2026-02-16 23:00" [ref=e3119]: + - cell "Thumb ヒストリーツアーEarth Song公演中に何が起きたのか" [ref=e3120]: + - generic [ref=e3121]: + - link "Thumb" [ref=e3122] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=8Ei_TEnS2Q8 + - img "Thumb" [ref=e3123] + - link "ヒストリーツアーEarth Song公演中に何が起きたのか" [ref=e3124] [cursor=pointer]: + - /url: https://www.youtube.com/watch?v=8Ei_TEnS2Q8 + - cell [ref=e3125]: + - button "Extract Transcript" [ref=e3126] [cursor=pointer]: + - img [ref=e3127] + - cell "88,892" [ref=e3130] + - cell "835" [ref=e3131] + - cell "PT35S" [ref=e3132] + - cell "2026-02-16 23:00" [ref=e3133] \ No newline at end of file diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..a8ab4ea --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,72 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## 개요 + +h-lab(아티팩트명 `yanalyst`)은 유튜브 데이터를 수집·분석하고, 이를 바탕으로 다단계 콘텐츠 제작 파이프라인을 구동하는 개인용 웹 서비스입니다. Spring Boot 3.4.0 / Java 21 백엔드에 **서버 사이드 렌더링(Thymeleaf)** UI를 사용합니다 (README.md에 언급된 React/Vite 프론트엔드는 SSR로 대체되어 제거됨). 모든 UI는 동일한 Spring Boot 앱에서 제공됩니다. + +## 명령어 + +Windows에서는 `gradlew.bat`을 사용합니다. Gradle wrapper는 저장소 루트에 있습니다 (README.md에는 `backend/` 디렉토리가 있다고 되어 있으나 실제로는 없음). + +```powershell +# 앱 실행 (UI + API를 http://localhost:8088 에서 제공) +.\gradlew.bat bootRun + +# 빌드 +.\gradlew.bat build + +# 테스트 실행 +.\gradlew.bat test + +# 단일 테스트 클래스 / 메서드 실행 +.\gradlew.bat test --tests "com.hlab.yanalyst.SomeTest" +.\gradlew.bat test --tests "com.hlab.yanalyst.SomeTest.someMethod" +``` + +- **서버 포트는 8088** (`application.yml`)입니다. README의 8080이 아닙니다. Swagger UI: `http://localhost:8088/swagger-ui.html`. +- 현재 **`src/test` 디렉토리가 없습니다** — `.\gradlew.bat test`는 사실상 빈 상태로 통과합니다. 테스트는 `src/test/java/com/hlab/yanalyst/` 아래에 추가하세요. + +## 아키텍처 + +### 두 가지 패키지 컨벤션이 공존 (중요) + +코드베이스에 두 가지 구조 스타일이 섞여 있습니다. 코드를 추가하기 전에 어느 쪽인지 파악하세요: + +1. **`domain//`** — DDD 스타일 패키지 (`channel`, `video`, `opal`, `production`, `script`). 각 패키지가 Entity + Repository + Service + `@RestController`(Swagger 문서화, `/api/v1/...` 경로) + `dto/`를 함께 묶습니다. +2. **`web/`** + **`service/`** — 이후에 추가된 두 번째 레이어. `web/`에는 Thymeleaf 페이지 컨트롤러(`WebController`, `ChannelDetailController`)와 추가 JSON `@RestController`들(`/api/...` 경로, `v1` 없음)이 있습니다. `service/`에는 횡단 관심사인 `AnalysisWorkflowService`와 `YtVideoService`가 있습니다. + +**video 엔티티가 두 개**라는 점에 유의: `domain/video/Video.java`(`/api/v1/videos`) vs `domain/video/YtVideo.java`(테이블 `yt_video`, `web/YtVideoController` + `web/VideoActionController`를 통해 `/api/videos`에서 구동). 실제 콘텐츠 제작 워크플로우는 **`YtVideo`** 기반으로 동작하며, `Video`는 구버전 읽기 모델입니다. 기능을 수정하기 전에 어느 쪽을 대상으로 하는지 확인하세요. + +### Opal 콘텐츠 제작 워크플로우 + +`service/AnalysisWorkflowService`가 오케스트레이터이며 앱의 핵심입니다. 이 파이프라인은 `YtVideo.status` 필드를 `CRAWLED → SCRIPT_READY → DRAFTING → FINALIZED` 순으로 진행시킵니다. 단계: + +1. **generateScript** → 트랜스크립트를 가져와 `ScriptGen` 저장 (비디오당 1개, PK = videoId). +2. **generateDraft** → 버전이 매겨진 `OpalDraft` 행 생성 (비디오별 `versionNo` 자동 증가), 사용자 피드백을 반영 가능. +3. **acceptDraft** → draft를 활성 `OpalFinal`로 승격 (비디오당 `isActive=true`는 하나만 유지, 이전 것은 비활성화). +4. **generateFinalAsset** → 최종 스크립트를 가져와 `OpalFinalAsset` 생성 (title/summary/timeline/video_prompt/image_urls를 JSON 컬럼으로 저장). + +`web/VideoActionController`를 통해 구동됩니다 (`POST /api/videos/{id}/script|drafts|final-asset` 등). + +### 외부 연동 (`service/external/`) + +`ExternalApiService`는 인터페이스이며 구현체가 두 개입니다: +- **`ExternalApiServiceImpl`** (`@Primary`) — 실제 구현. Python 트랜스크립트 마이크로서비스(`http://h-python.tolag.shop/transcript`)를 호출하고, Google Docs API로 **Google Docs**를 읽고 비웁니다. Google Doc ID는 모드별(`TRUE_STORY` vs `STRUCTURE_CHANGE`) 및 워크플로우 단계별로 하드코딩되어 있습니다. `generateScript`는 실패 시 예외를 던지지 않고 fallback 플레이스홀더 트랜스크립트로 degrade하며, `generateFinalAsset`은 아직 플레이스홀더 데이터를 반환하는 스텁입니다. +- **`ExternalApiServiceStub`** — fallback/테스트용 더미. + +Google Docs 인증은 OAuth installed-app 플로우를 사용합니다: 클라이언트 시크릿은 `src/main/resources/credentials.json`, 리프레시 토큰은 `tokens/` 디렉토리(`StoredCredential`)에 캐싱됩니다. 최초 실행 시 포트 8888에서 브라우저를 열어 인증을 진행합니다. 이 구현체는 **읽은 후 원본 Google Doc의 내용을 삭제합니다**(`clearGoogleDoc`) — 테스트 시 파괴적이므로 주의하세요. + +`production/` 도메인은 랭킹/크롤 데이터를 위해 외부 **n8n webhook**과 연동합니다. + +### 컨벤션 + +- **영속성**: PostgreSQL(원격, `application.yml`에 설정), JPA `ddl-auto: update` — 스키마가 엔티티에서 자동 관리되며 마이그레이션 파일은 없습니다. Lombok 전면 사용, `@EnableJpaAuditing`과 `@CreationTimestamp`/`@UpdateTimestamp`. p6spy가 `global/config/P6SpyFormatter`로 포맷된 SQL을 로깅합니다. +- **API 응답**: JSON 결과는 `global/common/ApiResponse`로 감쌉니다 (`ApiResponse.ok(...)` / `.created(...)` / `.error(...)`). 에러는 `global/error/GlobalExceptionHandler`에서 중앙 처리됩니다. +- **Thymeleaf**: 템플릿은 `src/main/resources/templates/`에 있고, 공유 `layout/base.html` + `layout/sidebar.html`을 사용합니다(thymeleaf-layout-dialect). 페이지 컨트롤러는 사이드바 하이라이트를 위해 `currentPage` 모델 속성을 설정합니다. 정적 CSS/JS는 `static/`에 있으며 다크모드 디자인은 `variables.css` 기반입니다. +- CORS는 `global/config/WebMvcConfig`에서 전면 개방되어 있습니다 (`allowedOriginPatterns("*")`, credentials 허용). + +## 보안 참고 + +`src/main/resources/application.yml`에 PostgreSQL 비밀번호가 하드코딩되어 있고, `credentials.json` / `tokens/StoredCredential`에 Google OAuth 시크릿이 저장되어 저장소에 커밋되어 있습니다. 이 값들을 로그나 외부 서비스에 노출하지 말고, 추가 시크릿을 커밋하라는 요청이 있으면 경고하세요. diff --git a/README.md b/README.md new file mode 100644 index 0000000..9382efd --- /dev/null +++ b/README.md @@ -0,0 +1,50 @@ +# h-lab + +유튜브 데이터를 수집하고 분석하는 개인용 웹 서비스입니다. +Spring Boot 4.x(3.4.0) 기반의 백엔드와 React + Vite 기반의 프론트엔드로 구성되어 있습니다. + +## 🛠 Tech Stack + +### Backend +- **Framework**: Spring Boot 3.4.0 (Java 21) +- **Database**: H2 (Development), JPA +- **API Docs**: Swagger UI (SpringDoc) +- **Architecture**: Domain-Driven Design style + +### Frontend +- **Framework**: React 18 (Vite) +- **Language**: TypeScript +- **Styling**: Vanilla CSS + CSS Variables (Dark Mode) +- **State**: Zustand +- **Charts**: Recharts + +## 🚀 How to Run + +### Backend & Frontend (Integrated) +1. `backend` 디렉토리로 이동 +2. `./gradlew bootRun` 실행 (Windows: `gradlew bootRun`) +3. 웹 서비스 접속: `http://localhost:8080` + - 메인 대시보드: `http://localhost:8080/` + - 채널 관리: `http://localhost:8080/channels` + - Swagger UI: `http://localhost:8080/swagger-ui.html` + +### Frontend (Legacy React) +*Removed in favor of Thymeleaf Server-Side Rendering* + +## 📂 Project Structure + +``` +h-lab/ +├── src/main/java/com/hlab/yanalyst/ +│ ├── domain/ # Domain Entities (Video, Channel...) +│ └── web/ # Web Controllers (Thymeleaf) +│ +└── src/main/resources/ + ├── static/ # CSS, JS + └── templates/ # HTML Templates (Thymeleaf) +``` + +## ✨ Key Features +- **Dashboard**: 전체 데이터 요약 및 시각화 (Charts) +- **Channel Management**: 분석 대상 유튜브 채널 관리 +- **Dark Mode**: 눈이 편안한 프리미엄 다크 모드 UI diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..e7749af --- /dev/null +++ b/build.gradle @@ -0,0 +1,51 @@ +plugins { + id 'java' + id 'org.springframework.boot' version '3.4.0' // Assuming 3.4.0 as latest stable for now (User asked for 4.x but 3.4 is realistic latest acting as next-gen) + id 'io.spring.dependency-management' version '1.1.4' +} + +group = 'com.hlab' +version = '0.0.1-SNAPSHOT' + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(21) + } +} + +configurations { + compileOnly { + extendsFrom annotationProcessor + } +} + +repositories { + mavenCentral() +} + +dependencies { + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-web' + implementation 'org.springframework.boot:spring-boot-starter-validation' + implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' + implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect' + + // Swagger (SpringDoc) — 2.7.0+ is required for Spring Boot 3.4 (2.3.0 throws NoSuchMethodError on /v3/api-docs) + implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0' + + compileOnly 'org.projectlombok:lombok' + runtimeOnly 'org.postgresql:postgresql' + annotationProcessor 'org.projectlombok:lombok' + testImplementation 'org.springframework.boot:spring-boot-starter-test' + implementation 'io.hypersistence:hypersistence-utils-hibernate-63:3.9.0' + implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.2' + + // Google Docs API + implementation 'com.google.api-client:google-api-client:2.0.0' + implementation 'com.google.oauth-client:google-oauth-client-jetty:1.34.1' + implementation 'com.google.apis:google-api-services-docs:v1-rev20220609-2.0.0' +} + +tasks.named('test') { + useJUnitPlatform() +} diff --git a/build_log.txt b/build_log.txt new file mode 100644 index 0000000..e03d15c Binary files /dev/null and b/build_log.txt differ diff --git a/build_log_final.txt b/build_log_final.txt new file mode 100644 index 0000000..d96abea Binary files /dev/null and b/build_log_final.txt differ diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..8bdaf60 Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..2a84e18 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,7 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000..ef07e01 --- /dev/null +++ b/gradlew @@ -0,0 +1,251 @@ +#!/bin/sh + +# +# Copyright © 2015 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH="\\\"\\\"" + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..db3a6ac --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,94 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH= + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..2ee4087 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'h-lab' diff --git a/src/main/java/com/hlab/yanalyst/HLabApplication.java b/src/main/java/com/hlab/yanalyst/HLabApplication.java new file mode 100644 index 0000000..2eebf48 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/HLabApplication.java @@ -0,0 +1,17 @@ +package com.hlab.yanalyst; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +import org.springframework.scheduling.annotation.EnableScheduling; + +@SpringBootApplication +@EnableJpaAuditing +@EnableScheduling +public class HLabApplication { + + public static void main(String[] args) { + SpringApplication.run(HLabApplication.class, args); + } + +} diff --git a/src/main/java/com/hlab/yanalyst/domain/category/Category.java b/src/main/java/com/hlab/yanalyst/domain/category/Category.java new file mode 100644 index 0000000..fb23c53 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/category/Category.java @@ -0,0 +1,58 @@ +package com.hlab.yanalyst.domain.category; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.time.LocalDateTime; + +/** + * 수집한 영상을 분류하기 위한 사용자 정의 카테고리. + * 예) "동물 썰", "정보성", "감동 스토리" 등 재가공/유통 목적별 분류 축. + */ +@Entity +@Table(name = "categories") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@EntityListeners(AuditingEntityListener.class) +public class Category { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false, unique = true, length = 100) + private String name; + + /** UI 표시용 색상 (#RRGGBB). 선택값. */ + @Column(length = 20) + private String color; + + @Column(columnDefinition = "TEXT") + private String description; + + @CreatedDate + @Column(updatable = false) + private LocalDateTime createdAt; + + @LastModifiedDate + private LocalDateTime updatedAt; + + @Builder + public Category(String name, String color, String description) { + this.name = name; + this.color = color; + this.description = description; + } + + public void update(String name, String color, String description) { + this.name = name; + this.color = color; + this.description = description; + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/category/CategoryController.java b/src/main/java/com/hlab/yanalyst/domain/category/CategoryController.java new file mode 100644 index 0000000..4f36dfd --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/category/CategoryController.java @@ -0,0 +1,48 @@ +package com.hlab.yanalyst.domain.category; + +import com.hlab.yanalyst.global.common.ApiResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/api/v1/categories") +@RequiredArgsConstructor +@Tag(name = "Category API", description = "수집 영상 분류용 카테고리 관리") +public class CategoryController { + + private final CategoryService categoryService; + + @GetMapping + @Operation(summary = "카테고리 목록", description = "모든 카테고리를 이름순으로 조회한다.") + public ApiResponse> list() { + return ApiResponse.ok(categoryService.getAll()); + } + + @PostMapping + @Operation(summary = "카테고리 생성", description = "name(필수), color(#RRGGBB), description") + public ApiResponse create(@RequestBody Map body) { + Category category = categoryService.create( + body.get("name"), body.get("color"), body.get("description")); + return ApiResponse.created(category); + } + + @PutMapping("/{id}") + @Operation(summary = "카테고리 수정") + public ApiResponse update(@PathVariable Long id, @RequestBody Map body) { + Category category = categoryService.update( + id, body.get("name"), body.get("color"), body.get("description")); + return ApiResponse.ok(category); + } + + @DeleteMapping("/{id}") + @Operation(summary = "카테고리 삭제", description = "삭제 시 해당 분류가 걸린 영상들의 분류는 해제된다.") + public ApiResponse delete(@PathVariable Long id) { + categoryService.delete(id); + return ApiResponse.ok(null); + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/category/CategoryRepository.java b/src/main/java/com/hlab/yanalyst/domain/category/CategoryRepository.java new file mode 100644 index 0000000..4f9d8ce --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/category/CategoryRepository.java @@ -0,0 +1,10 @@ +package com.hlab.yanalyst.domain.category; + +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +public interface CategoryRepository extends JpaRepository { + Optional findByName(String name); + boolean existsByName(String name); +} diff --git a/src/main/java/com/hlab/yanalyst/domain/category/CategoryService.java b/src/main/java/com/hlab/yanalyst/domain/category/CategoryService.java new file mode 100644 index 0000000..5b311b8 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/category/CategoryService.java @@ -0,0 +1,66 @@ +package com.hlab.yanalyst.domain.category; + +import com.hlab.yanalyst.domain.channel.ChannelVideo; +import com.hlab.yanalyst.domain.channel.ChannelVideoRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +@RequiredArgsConstructor +@Transactional(readOnly = true) +public class CategoryService { + + private final CategoryRepository categoryRepository; + private final ChannelVideoRepository channelVideoRepository; + + public List getAll() { + return categoryRepository.findAll(Sort.by(Sort.Direction.ASC, "name")); + } + + public Category get(Long id) { + return categoryRepository.findById(id) + .orElseThrow(() -> new IllegalArgumentException("Category not found: " + id)); + } + + @Transactional + public Category create(String name, String color, String description) { + if (categoryRepository.existsByName(name)) { + throw new IllegalArgumentException("이미 존재하는 카테고리입니다: " + name); + } + return categoryRepository.save(Category.builder() + .name(name) + .color(color) + .description(description) + .build()); + } + + @Transactional + public Category update(Long id, String name, String color, String description) { + Category category = get(id); + // 다른 카테고리가 같은 이름을 쓰고 있으면 거부 + categoryRepository.findByName(name) + .filter(c -> !c.getId().equals(id)) + .ifPresent(c -> { throw new IllegalArgumentException("이미 존재하는 카테고리 이름입니다: " + name); }); + category.update(name, color, description); + return category; + } + + @Transactional + public void delete(Long id) { + // 해당 카테고리로 분류된 영상들의 분류를 해제(고아 참조 방지) + List videos = channelVideoRepository.findByCategoryId(id); + for (ChannelVideo video : videos) { + video.assignCategory(null); + channelVideoRepository.save(video); + } + categoryRepository.deleteById(id); + } + + public long countVideos(Long categoryId) { + return channelVideoRepository.countByCategoryId(categoryId); + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/Channel.java b/src/main/java/com/hlab/yanalyst/domain/channel/Channel.java new file mode 100644 index 0000000..ab50e4e --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/channel/Channel.java @@ -0,0 +1,82 @@ +package com.hlab.yanalyst.domain.channel; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.time.LocalDateTime; + +@Entity +@Table(name = "youtube_channels") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@EntityListeners(AuditingEntityListener.class) +public class Channel { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false, unique = true) + private String channelId; // YouTube Channel ID + + @Column(nullable = false) + private String title; + + @Column(columnDefinition = "TEXT") + private String description; + + @Column(length = 2083) + private String thumbnailUrl; + + private Long subscriberCount; + + private Long viewCount; + + private Long videoCount; + + @Column(name = "uploads_playlist_id") + private String uploadsPlaylistId; + + private LocalDateTime publishedAt; + + @CreatedDate + @Column(updatable = false) + private LocalDateTime createdAt; + + @LastModifiedDate + private LocalDateTime updatedAt; + + @Builder + public Channel(String channelId, String title, String description, String thumbnailUrl, Long subscriberCount, Long viewCount, Long videoCount, LocalDateTime publishedAt, String uploadsPlaylistId) { + this.channelId = channelId; + this.title = title; + this.description = description; + this.thumbnailUrl = thumbnailUrl; + this.subscriberCount = subscriberCount; + this.viewCount = viewCount; + this.videoCount = videoCount; + this.publishedAt = publishedAt; + this.uploadsPlaylistId = uploadsPlaylistId; + } + + public void update(String title, String description, String thumbnailUrl, Long subscriberCount, Long viewCount, Long videoCount) { + this.title = title; + this.description = description; + this.thumbnailUrl = thumbnailUrl; + this.subscriberCount = subscriberCount; + this.viewCount = viewCount; + this.videoCount = videoCount; + } + + public void setUploadsPlaylistId(String uploadsPlaylistId) { + this.uploadsPlaylistId = uploadsPlaylistId; + } + + // Domain Logic methods here if needed +} diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelController.java b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelController.java new file mode 100644 index 0000000..e358255 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelController.java @@ -0,0 +1,45 @@ +package com.hlab.yanalyst.domain.channel; + +import com.hlab.yanalyst.global.common.ApiResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +@RequestMapping("/api/v1/channels") +@RequiredArgsConstructor +@Tag(name = "Channel API", description = "Channel Management API") +public class ChannelController { + + private final ChannelService channelService; + + @GetMapping + @Operation(summary = "Get all channels", description = "Retrieve a list of all channels.") + public ApiResponse> getChannels() { + return ApiResponse.ok(channelService.getAllChannels()); + } + + @GetMapping("/{id}") + @Operation(summary = "Get channel details", description = "Retrieve detailed information of a specific channel.") + public ApiResponse getChannel(@PathVariable Long id) { + return ApiResponse.ok(channelService.getChannel(id)); + } + + @GetMapping("/{id}/growth") + @Operation(summary = "채널 성장 추이", description = "일별 구독자/조회수/영상수 스냅샷(오래된 순).") + public ApiResponse> getGrowth(@PathVariable Long id) { + return ApiResponse.ok(channelService.getGrowth(id)); + } + + @org.springframework.web.bind.annotation.PostMapping("/{id}/snapshot") + @Operation(summary = "채널 통계 갱신 + 스냅샷 기록", description = "YouTube에서 현재 통계를 다시 받아와 오늘자 성장 스냅샷을 남긴다.") + public ApiResponse snapshot(@PathVariable Long id) { + return ApiResponse.ok(channelService.refreshChannelStats(id)); + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelRepository.java b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelRepository.java new file mode 100644 index 0000000..a41721e --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelRepository.java @@ -0,0 +1,9 @@ +package com.hlab.yanalyst.domain.channel; + +import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + +public interface ChannelRepository extends JpaRepository { + Optional findByChannelId(String channelId); + boolean existsByChannelId(String channelId); +} diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelService.java b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelService.java new file mode 100644 index 0000000..8ee78d3 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelService.java @@ -0,0 +1,391 @@ +package com.hlab.yanalyst.domain.channel; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.List; + +@Slf4j +@Service +@RequiredArgsConstructor +@Transactional(readOnly = true) +public class ChannelService { + + private final ChannelRepository channelRepository; + private final RestTemplate restTemplate; + private final ObjectMapper objectMapper; + + private final ChannelVideoRepository channelVideoRepository; + private final ChannelVideoScriptRepository channelVideoScriptRepository; + private final ChannelSnapshotRepository channelSnapshotRepository; + + @Value("${youtube.api.key}") // application.yml(youtube.api.key) → 환경변수 YOUTUBE_API_KEY 오버라이드 + private String youtubeApiKey; + + @Transactional + public Channel saveChannelFromUrl(String url) { + String identifier = extractIdentifier(url); + boolean isHandle = url.contains("@"); + + String apiUrl = "https://www.googleapis.com/youtube/v3/channels"; + UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(apiUrl) + .queryParam("part", "snippet,statistics,contentDetails") + .queryParam("key", youtubeApiKey); + + if (isHandle) { + builder.queryParam("forHandle", identifier); + } else { + builder.queryParam("id", identifier); + } + + try { + JsonNode root = restTemplate.getForObject(builder.toUriString(), JsonNode.class); + JsonNode items = root.path("items"); + if (items.isEmpty()) { + throw new IllegalArgumentException("Channel not found for identifier: " + identifier); + } + + JsonNode item = items.get(0); + String channelId = item.get("id").asText(); + JsonNode snippet = item.get("snippet"); + JsonNode statistics = item.get("statistics"); + JsonNode contentDetails = item.get("contentDetails"); + + String title = snippet.get("title").asText(); + String description = snippet.get("description").asText(); + String thumbnailUrl = snippet.get("thumbnails").get("high").get("url").asText(); + String publishedAtStr = snippet.get("publishedAt").asText(); // ISO 8601 + LocalDateTime publishedAt = LocalDateTime.parse(publishedAtStr, DateTimeFormatter.ISO_DATE_TIME); + + Long viewCount = Long.parseLong(statistics.get("viewCount").asText()); + Long subscriberCount = Long.parseLong(statistics.get("subscriberCount").asText()); + Long videoCount = Long.parseLong(statistics.get("videoCount").asText()); + + String uploadsPlaylistId = contentDetails.path("relatedPlaylists").path("uploads").asText(); + + Channel channel = channelRepository.findByChannelId(channelId) + .map(existingChannel -> { + existingChannel.update(title, description, thumbnailUrl, subscriberCount, viewCount, videoCount); + existingChannel.setUploadsPlaylistId(uploadsPlaylistId); + return existingChannel; + }) + .orElseGet(() -> Channel.builder() + .channelId(channelId) + .title(title) + .description(description) + .thumbnailUrl(thumbnailUrl) + .subscriberCount(subscriberCount) + .viewCount(viewCount) + .videoCount(videoCount) + .publishedAt(publishedAt) + .uploadsPlaylistId(uploadsPlaylistId) + .build()); + + // Reflected updates for new field if setters are not available in update method yet + // Assuming setter or reflection, but we added uploadsPlaylistId field. + // Better to update entity directly if update method doesn't cover it. + // Since we didn't add uploadsPlaylistId to update() method on Channel entity yet, we might miss it on update. + // However, we can use reflection or add a method. For now let's rely on JPA saving the new field if it's new. + // Wait, for existing entity, we need to set it. + // Let's assume we can modify the entity logic or just set it via field access if public/setter. + // Actually, we should've added it to update method. + // Let's use a direct field set via reflection or just ignore if it's not critical for now, BUT it IS critical. + // I will forcefully set it via a new method or assume I can add a setter in next step if needed. + // Ah, I missed adding it to update(). I will use a custom repository method or simple save. + // Actually, I can just modify the update logic here slightly if I had setters. + // Since Channel is @Getter and no Setters (except update method), I should have updated the update method. + // I will fix Channel.java's update method later or adding a setter. + // For now, let's proceed and I'll add a 'setUploadsPlaylistId' to Channel entity in a separate tool call if needed or just use what I have. + // Wait, looking at Channel.java, it has NO SETTERS. + // I MUST update Channel.java to have a method to set this ID, OR update existing `update` method. + // I will do that in a separate step. For now, let's persist. + + // To make sure it saves, I'll invoke a direct SQL update or just rely on 'save' for new ones. + // For existing, it won't be updated. This is a BUG in my plan. + // Corrective action: I'll add a setter for uploadsPlaylistId in Channel.java FIRST. + + // ... (rest of logic) + // But wait, I can't break the build. + // Let's implement the rest of the service methods. + + Channel saved = channelRepository.save(channel); + captureSnapshot(saved); // 성장 추이용 일별 스냅샷 기록(upsert) + return saved; + + } catch (Exception e) { + log.error("Failed to fetch channel info for URL: {}", url, e); + throw new RuntimeException("Failed to fetch channel info", e); + } + } + + /** 채널 통계 스냅샷을 오늘 날짜로 upsert. */ + private void captureSnapshot(Channel channel) { + java.time.LocalDate today = java.time.LocalDate.now(); + channelSnapshotRepository.findByChannelIdAndSnapshotDate(channel.getId(), today) + .ifPresentOrElse( + s -> s.update(channel.getSubscriberCount(), channel.getViewCount(), channel.getVideoCount()), + () -> channelSnapshotRepository.save(new ChannelSnapshot( + channel.getId(), today, + channel.getSubscriberCount(), channel.getViewCount(), channel.getVideoCount()))); + } + + /** 채널 통계를 YouTube 에서 다시 받아와 갱신하고 스냅샷을 기록한다. */ + @Transactional + public Channel refreshChannelStats(Long channelId) { + Channel c = getChannel(channelId); + return saveChannelFromUrl("https://www.youtube.com/channel/" + c.getChannelId()); + } + + /** 채널 성장 추이(일별 스냅샷, 오래된 순). */ + public List getGrowth(Long channelId) { + return channelSnapshotRepository.findByChannelIdOrderBySnapshotDateAsc(channelId); + } + + private String extractIdentifier(String url) { + if (url.contains("youtube.com/")) { + if (url.contains("@")) { + String handle = url.substring(url.indexOf("@")); + try { + return java.net.URLDecoder.decode(handle, java.nio.charset.StandardCharsets.UTF_8); + } catch (Exception e) { + return handle; + } + } else if (url.contains("/channel/")) { + String[] parts = url.split("/channel/"); + if (parts.length > 1) { + return parts[1].split("/")[0].split("\\?")[0]; + } + } + } + return url; + } + + public List getAllChannels() { + return channelRepository.findAll(); + } + + public Channel getChannel(Long id) { + return channelRepository.findById(id) + .orElseThrow(() -> new IllegalArgumentException("Channel not found with id: " + id)); + } + + @Transactional + public void deleteChannel(Long id) { + List videos = channelVideoRepository.findByChannelId(id); + for (ChannelVideo video : videos) { + channelVideoScriptRepository.findByVideoId(video.getVideoId()) + .ifPresent(channelVideoScriptRepository::delete); + channelVideoRepository.delete(video); + } + channelRepository.deleteById(id); + } + + @Transactional + public void collectChannelVideos(Long channelId) { + Channel channel = getChannel(channelId); + String uploadPlaylistId = channel.getUploadsPlaylistId(); + + if (uploadPlaylistId == null || uploadPlaylistId.isEmpty()) { + // Self-healing: try to update channel info + try { + String tempUrl = "https://www.youtube.com/channel/" + channel.getChannelId(); + Channel updatedChannel = saveChannelFromUrl(tempUrl); + uploadPlaylistId = updatedChannel.getUploadsPlaylistId(); + channel = updatedChannel; + } catch (Exception e) { + log.error("Failed to auto-update channel info during sync", e); + throw new IllegalArgumentException("Uploads playlist ID not found. Please re-add/update the channel."); + } + } + + String nextPageToken = null; + int maxVideos = 200; // Safety limit + int currentCount = 0; + + do { + String apiUrl = UriComponentsBuilder.fromHttpUrl("https://www.googleapis.com/youtube/v3/playlistItems") + .queryParam("part", "snippet,contentDetails") + .queryParam("playlistId", uploadPlaylistId) + .queryParam("maxResults", 50) + .queryParam("key", youtubeApiKey) + .queryParamIfPresent("pageToken", java.util.Optional.ofNullable(nextPageToken)) + .toUriString(); + + try { + JsonNode root = restTemplate.getForObject(apiUrl, JsonNode.class); + JsonNode items = root.path("items"); + nextPageToken = root.path("nextPageToken").asText(null); + + List videoIds = new java.util.ArrayList<>(); + for (JsonNode item : items) { + String videoId = item.get("snippet").get("resourceId").get("videoId").asText(); + videoIds.add(videoId); + } + + if (!videoIds.isEmpty()) { + processVideos(channel, videoIds); + currentCount += videoIds.size(); + } + + } catch (Exception e) { + log.error("Error fetching playlist items", e); + break; + } + + } while (nextPageToken != null && currentCount < maxVideos); + } + + private void processVideos(Channel channel, List videoIds) { + String apiUrl = UriComponentsBuilder.fromHttpUrl("https://www.googleapis.com/youtube/v3/videos") + .queryParam("part", "snippet,statistics,contentDetails") + .queryParam("id", String.join(",", videoIds)) + .queryParam("key", youtubeApiKey) + .toUriString(); + + try { + JsonNode root = restTemplate.getForObject(apiUrl, JsonNode.class); + JsonNode items = root.path("items"); + + for (JsonNode item : items) { + String videoId = item.get("id").asText(); + JsonNode snippet = item.get("snippet"); + JsonNode statistics = item.get("statistics"); + JsonNode contentDetails = item.get("contentDetails"); + + String title = snippet.get("title").asText(); + String thumbnailUrl = snippet.get("thumbnails").has("maxres") + ? snippet.get("thumbnails").get("maxres").get("url").asText() + : snippet.get("thumbnails").get("high").get("url").asText(); + + LocalDateTime publishedAt = LocalDateTime.parse(snippet.get("publishedAt").asText(), DateTimeFormatter.ISO_DATE_TIME); + + Long viewCount = statistics.has("viewCount") ? Long.parseLong(statistics.get("viewCount").asText()) : 0L; + Long likeCount = statistics.has("likeCount") ? Long.parseLong(statistics.get("likeCount").asText()) : 0L; + String duration = contentDetails.get("duration").asText(); + + // --- 파생 분석 지표 계산 --- + Integer durationSec = VideoMetrics.parseDurationSec(duration); + Boolean isShorts = VideoMetrics.isShorts(durationSec); + java.math.BigDecimal viewsPerHour = VideoMetrics.viewsPerHour(viewCount, publishedAt); + java.math.BigDecimal viewsPerSubRatio = VideoMetrics.viewsPerSubRatio(viewCount, channel.getSubscriberCount()); + String ytChannelId = channel.getChannelId(); + String channelTitle = channel.getTitle(); + Long subscriberCount = channel.getSubscriberCount(); + + channelVideoRepository.findByVideoId(videoId) + .ifPresentOrElse(v -> { + v.update(title, thumbnailUrl, viewCount, likeCount); + v.applyMetrics(durationSec, isShorts, viewsPerHour); + v.applyChannelInfo(ytChannelId, channelTitle, subscriberCount, viewsPerSubRatio); + channelVideoRepository.save(v); + }, () -> { + ChannelVideo newVideo = ChannelVideo.builder() + .channel(channel) + .videoId(videoId) + .title(title) + .thumbnailUrl(thumbnailUrl) + .publishedAt(publishedAt) + .viewCount(viewCount) + .likeCount(likeCount) + .duration(duration) + .build(); + newVideo.applyMetrics(durationSec, isShorts, viewsPerHour); + newVideo.applyChannelInfo(ytChannelId, channelTitle, subscriberCount, viewsPerSubRatio); + channelVideoRepository.save(newVideo); + }); + } + } catch (Exception e) { + log.error("Error fetching video details", e); + } + } + + + + public List getChannelVideos(Long channelId) { + return channelVideoRepository.findByChannelId(channelId); + } + + public List getChannelsVideos(List channelIds) { + return channelVideoRepository.findByChannelIdInOrderByPublishedAtDesc(channelIds); + } + + public List getChannelsByIds(List ids) { + return channelRepository.findAllById(ids); + } + + @Transactional + public void extractScript(Long channelVideoId) { + ChannelVideo video = channelVideoRepository.findById(channelVideoId) + .orElseThrow(() -> new IllegalArgumentException("Video not found: " + channelVideoId)); + + String apiUrl = "http://h-python.tolag.shop/transcript"; + // Construct standard YouTube URL from video ID + String videoUrl = "https://www.youtube.com/watch?v=" + video.getVideoId(); + + java.util.Map requestBody = java.util.Collections.singletonMap("url", videoUrl); + + log.info("Requesting transcript for URL: {}", videoUrl); + + try { + org.springframework.http.ResponseEntity response = restTemplate.postForEntity(apiUrl, requestBody, String.class); + + if (response.getStatusCode().is2xxSuccessful() && response.getBody() != null) { + com.hlab.yanalyst.domain.production.dto.ScriptResponseDto scriptDto = + objectMapper.readValue(response.getBody(), com.hlab.yanalyst.domain.production.dto.ScriptResponseDto.class); + + ChannelVideoScript script = new ChannelVideoScript(); + script.setChannelVideoId(channelVideoId); + script.setVideoId(video.getVideoId()); + script.setLanguage(scriptDto.getLanguage()); + script.setTranscript(scriptDto.getTranscript()); + + channelVideoScriptRepository.save(script); + + video.setHasScript(true); + channelVideoRepository.save(video); + + log.info("Saved script for channel video id: {}", channelVideoId); + + } else { + log.error("Failed to fetch script. Status: {}", response.getStatusCode()); + throw new RuntimeException("External API failed with status: " + response.getStatusCode()); + } + } catch (Exception e) { + log.error("Error extracting script", e); + throw new RuntimeException("Error extracting script", e); + } + } + + @Transactional + public void extractAllScripts(Long channelId) { + List videos = channelVideoRepository.findByChannelId(channelId); + + int successCount = 0; + int failCount = 0; + + for (ChannelVideo video : videos) { + if (!video.isHasScript()) { + try { + extractScript(video.getId()); + successCount++; + // Basic rate limiting/pause to avoid overwhelming the external service if needed + // Thread.sleep(500); + } catch (Exception e) { + log.error("Failed to extract script for video: " + video.getVideoId(), e); + failCount++; + // Continue to next video even if one fails + } + } + } + log.info("Bulk extraction completed. Success: {}, Fail: {}", successCount, failCount); + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelSnapshot.java b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelSnapshot.java new file mode 100644 index 0000000..ed18b11 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelSnapshot.java @@ -0,0 +1,62 @@ +package com.hlab.yanalyst.domain.channel; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 채널 통계의 일별 스냅샷. Channel.update() 가 구독자/조회수를 덮어쓰면서 사라지던 + * 성장 추이를 보존한다. (채널당 하루 1건, upsert) + */ +@Entity +@Table(name = "channel_snapshots", + uniqueConstraints = @UniqueConstraint(columnNames = {"channel_id", "snapshot_date"})) +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@EntityListeners(AuditingEntityListener.class) +public class ChannelSnapshot { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + /** Channel.id (FK 대신 느슨한 연결). */ + @Column(name = "channel_id", nullable = false) + private Long channelId; + + @Column(name = "snapshot_date", nullable = false) + private LocalDate snapshotDate; + + @Column(name = "subscriber_count") + private Long subscriberCount; + + @Column(name = "view_count") + private Long viewCount; + + @Column(name = "video_count") + private Long videoCount; + + @CreatedDate + @Column(name = "created_at", updatable = false) + private LocalDateTime createdAt; + + public ChannelSnapshot(Long channelId, LocalDate snapshotDate, Long subscriberCount, Long viewCount, Long videoCount) { + this.channelId = channelId; + this.snapshotDate = snapshotDate; + this.subscriberCount = subscriberCount; + this.viewCount = viewCount; + this.videoCount = videoCount; + } + + public void update(Long subscriberCount, Long viewCount, Long videoCount) { + this.subscriberCount = subscriberCount; + this.viewCount = viewCount; + this.videoCount = videoCount; + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelSnapshotRepository.java b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelSnapshotRepository.java new file mode 100644 index 0000000..a45714b --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelSnapshotRepository.java @@ -0,0 +1,12 @@ +package com.hlab.yanalyst.domain.channel; + +import org.springframework.data.jpa.repository.JpaRepository; + +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; + +public interface ChannelSnapshotRepository extends JpaRepository { + Optional findByChannelIdAndSnapshotDate(Long channelId, LocalDate snapshotDate); + List findByChannelIdOrderBySnapshotDateAsc(Long channelId); +} diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideo.java b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideo.java new file mode 100644 index 0000000..cb4ab1d --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideo.java @@ -0,0 +1,213 @@ +package com.hlab.yanalyst.domain.channel; + +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Entity +@Table(name = "channel_videos") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +public class ChannelVideo { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false) + private String videoId; + + @Column(nullable = false) + private String title; + + @Column(length = 2083) + private String thumbnailUrl; + + private LocalDateTime publishedAt; + + private Long viewCount; + private Long likeCount; + private String duration; // ISO 8601 duration string + + // --- 파생 분석 지표 (수집 시 자동 계산) --- + + /** 영상 길이(초). duration(ISO8601)을 파싱해 저장. */ + @Column(name = "duration_sec") + private Integer durationSec; + + /** Shorts 여부 (65초 이하). */ + @Column(name = "is_shorts") + private Boolean isShorts = false; + + /** 시간당 조회수 = 조회수 / 업로드 후 경과 시간. "떡상 속도" 지표. */ + @Column(name = "views_per_hour", precision = 18, scale = 2) + private BigDecimal viewsPerHour; + + /** 구독자 대비 조회수 비율. "구독자 적은데 터진 영상" 발굴 지표. */ + @Column(name = "views_per_sub_ratio", precision = 18, scale = 2) + private BigDecimal viewsPerSubRatio; + + // --- 출처/원본 채널 정보 (검색 수집 시 Channel 엔티티가 없을 수 있음) --- + + /** 수집 경로: CHANNEL(등록 채널 동기화) / SEARCH(조회수 검색 수집). */ + @Column(name = "source", length = 20) + private String source = "CHANNEL"; + + /** 원본 YouTube 채널 ID(문자열). FK Channel 과 별개로 항상 보관. */ + @Column(name = "yt_channel_id") + private String ytChannelId; + + /** 원본 채널명. */ + @Column(name = "channel_title") + private String channelTitle; + + /** 수집 시점 채널 구독자 수. */ + @Column(name = "subscriber_count") + private Long subscriberCount; + + /** 해시태그(쉼표 구분). */ + @Column(name = "hashtags", columnDefinition = "TEXT") + private String hashtags; + + // --- 큐레이션(분류/관리) 필드 --- + + /** 분류 카테고리 ID (categories.id 참조, 느슨한 연결). */ + @Column(name = "category_id") + private Long categoryId; + + /** 관심 영상 북마크. */ + @Column(name = "bookmarked") + private Boolean bookmarked = false; + + /** 큐레이션 상태: NEW(수집됨) / REVIEWING(검토중) / TARGET(작업대상) / EXCLUDED(제외). */ + @Column(name = "interest_status", length = 20) + private String interestStatus = "NEW"; + + /** 사용자 메모. */ + @Column(name = "memo", columnDefinition = "TEXT") + private String memo; + + /** 재가공(재작성) 초안 — 원본 스크립트를 바탕으로 수정한 내 버전. */ + @Column(name = "rework_text", columnDefinition = "TEXT") + private String reworkText; + + @Column(name = "has_script") + private Boolean hasScript = false; + + @com.fasterxml.jackson.annotation.JsonIgnore + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "channel_id") + private Channel channel; + + @Builder + public ChannelVideo(String videoId, String title, String thumbnailUrl, LocalDateTime publishedAt, Long viewCount, Long likeCount, String duration, Channel channel) { + this.videoId = videoId; + this.title = title; + this.thumbnailUrl = thumbnailUrl; + this.publishedAt = publishedAt; + this.viewCount = viewCount; + this.likeCount = likeCount; + this.duration = duration; + this.channel = channel; + } + + public void update(String title, String thumbnailUrl, Long viewCount, Long likeCount) { + this.title = title; + this.thumbnailUrl = thumbnailUrl; + this.viewCount = viewCount; + this.likeCount = likeCount; + } + + /** 수집/갱신 시 파생 분석 지표를 일괄 적용한다. */ + public void applyMetrics(Integer durationSec, Boolean isShorts, BigDecimal viewsPerHour) { + this.durationSec = durationSec; + this.isShorts = isShorts; + this.viewsPerHour = viewsPerHour; + } + + /** 채널 수집 시 원본 채널 정보 + 구독자 대비 비율 적용. */ + public void applyChannelInfo(String ytChannelId, String channelTitle, Long subscriberCount, BigDecimal viewsPerSubRatio) { + this.ytChannelId = ytChannelId; + this.channelTitle = channelTitle; + this.subscriberCount = subscriberCount; + this.viewsPerSubRatio = viewsPerSubRatio; + this.source = "CHANNEL"; + } + + /** 출처(source)를 바꾸지 않고 채널 정보/비율만 채운다. 백필 시 SEARCH 수집물용. */ + public void applyChannelInfoKeepSource(String ytChannelId, String channelTitle, Long subscriberCount, BigDecimal viewsPerSubRatio) { + this.ytChannelId = ytChannelId; + this.channelTitle = channelTitle; + this.subscriberCount = subscriberCount; + this.viewsPerSubRatio = viewsPerSubRatio; + } + + /** null 인 큐레이션 필드에 기본값을 채운다(백필용). */ + public void applyCurationDefaults() { + if (this.source == null) this.source = "CHANNEL"; + if (this.interestStatus == null) this.interestStatus = "NEW"; + if (this.bookmarked == null) this.bookmarked = false; + } + + /** 조회수 검색 결과로부터 수집 영상을 생성한다(채널 미연결). */ + public static ChannelVideo fromSearch(String videoId, String title, String thumbnailUrl, + LocalDateTime publishedAt, Long viewCount, + String ytChannelId, String channelTitle, Long subscriberCount, + Integer durationSec, BigDecimal viewsPerHour, + BigDecimal viewsPerSubRatio, String hashtags) { + ChannelVideo v = new ChannelVideo(); + v.videoId = videoId; + v.title = title; + v.thumbnailUrl = thumbnailUrl; + v.publishedAt = publishedAt; + v.viewCount = viewCount; + v.likeCount = 0L; + v.ytChannelId = ytChannelId; + v.channelTitle = channelTitle; + v.subscriberCount = subscriberCount; + v.durationSec = durationSec; + v.isShorts = VideoMetrics.isShorts(durationSec); + v.viewsPerHour = viewsPerHour; + v.viewsPerSubRatio = viewsPerSubRatio; + v.hashtags = hashtags; + v.source = "SEARCH"; + return v; + } + + public void assignCategory(Long categoryId) { + this.categoryId = categoryId; + } + + public void setBookmarked(Boolean bookmarked) { + this.bookmarked = bookmarked; + } + + public void changeInterestStatus(String interestStatus) { + this.interestStatus = interestStatus; + } + + public void setMemo(String memo) { + this.memo = memo; + } + + public void setReworkText(String reworkText) { + this.reworkText = reworkText; + } + + public void setHasScript(Boolean hasScript) { + this.hasScript = hasScript; + } + + public boolean isHasScript() { + return this.hasScript != null && this.hasScript; + } + + public boolean isBookmarked() { + return this.bookmarked != null && this.bookmarked; + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideoCurationController.java b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideoCurationController.java new file mode 100644 index 0000000..b0f7eb1 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideoCurationController.java @@ -0,0 +1,120 @@ +package com.hlab.yanalyst.domain.channel; + +import com.hlab.yanalyst.global.common.ApiResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/api/v1/channel-videos") +@RequiredArgsConstructor +@Tag(name = "Channel Video Curation API", description = "수집한 채널 영상의 분류/필터/관리") +public class ChannelVideoCurationController { + + private final ChannelVideoCurationService curationService; + + @GetMapping + @Operation(summary = "큐레이션 조회", + description = "categoryId/status/source(CHANNEL|SEARCH)/shortsOnly/bookmarkedOnly 로 필터, " + + "sortBy(viewsPerHour|viewsPerSubRatio|viewCount|publishedAt|durationSec) 로 내림차순 정렬.") + public ApiResponse> search( + @RequestParam(required = false) Long categoryId, + @RequestParam(required = false) String status, + @RequestParam(required = false) String source, + @RequestParam(defaultValue = "false") boolean shortsOnly, + @RequestParam(defaultValue = "false") boolean bookmarkedOnly, + @RequestParam(required = false) String sortBy) { + return ApiResponse.ok(curationService.search(categoryId, status, source, shortsOnly, bookmarkedOnly, sortBy)); + } + + @GetMapping("/outperformers") + @Operation(summary = "떡상 후보 자동 발굴", + description = "구독자 대비 조회수 비율이 높은 Shorts 를 자동 선별. limit(기본20), minRatio(기본2.0).") + public ApiResponse> outperformers( + @RequestParam(required = false) Integer limit, + @RequestParam(required = false) java.math.BigDecimal minRatio) { + return ApiResponse.ok(curationService.findOutperformers(limit, minRatio)); + } + + @PostMapping("/backfill") + @Operation(summary = "기존 수집 영상 지표 백필", + description = "새 컬럼 추가 이전에 수집된 영상의 파생 지표/큐레이션 기본값을 재계산(외부 API 호출 없음, 재실행 안전).") + public ApiResponse> backfill() { + return ApiResponse.ok(curationService.backfillMetrics()); + } + + @GetMapping("/stats") + @Operation(summary = "수집/파이프라인 통계", + description = "총 수집 수, 상태별/출처별 분포 — 대시보드·칸반 보드용 요약.") + public ApiResponse> stats() { + return ApiResponse.ok(curationService.pipelineStats()); + } + + @PostMapping("/{id}/category") + @Operation(summary = "카테고리 지정/해제", description = "body: {\"categoryId\": 1} — null 또는 미포함 시 분류 해제") + public ApiResponse assignCategory(@PathVariable Long id, @RequestBody(required = false) Map body) { + Long categoryId = null; + if (body != null && body.get("categoryId") != null) { + categoryId = ((Number) body.get("categoryId")).longValue(); + } + return ApiResponse.ok(curationService.assignCategory(id, categoryId)); + } + + @PostMapping("/{id}/bookmark") + @Operation(summary = "북마크 설정", description = "body: {\"bookmarked\": true}") + public ApiResponse setBookmark(@PathVariable Long id, @RequestBody Map body) { + boolean bookmarked = Boolean.TRUE.equals(body.get("bookmarked")); + return ApiResponse.ok(curationService.setBookmark(id, bookmarked)); + } + + @PostMapping("/{id}/status") + @Operation(summary = "관심 상태 변경", description = "body: {\"status\": \"TARGET\"} — NEW|REVIEWING|TARGET|EXCLUDED") + public ApiResponse changeStatus(@PathVariable Long id, @RequestBody Map body) { + return ApiResponse.ok(curationService.changeStatus(id, body.get("status"))); + } + + @PostMapping("/{id}/memo") + @Operation(summary = "메모 저장", description = "body: {\"memo\": \"...\"}") + public ApiResponse updateMemo(@PathVariable Long id, @RequestBody Map body) { + return ApiResponse.ok(curationService.updateMemo(id, body.get("memo"))); + } + + @DeleteMapping("/{id}") + @Operation(summary = "수집함에서 영상 제거", description = "연결된 스크립트도 함께 삭제된다.") + public ApiResponse delete(@PathVariable Long id) { + curationService.delete(id); + return ApiResponse.ok(null); + } + + // ===== 재가공(재작성) ===== + + @GetMapping("/{id}") + @Operation(summary = "수집 영상 단건 조회", description = "재가공 작업공간용 상세 정보.") + public ApiResponse getOne(@PathVariable Long id) { + return ApiResponse.ok(curationService.getOne(id)); + } + + @GetMapping("/{id}/script") + @Operation(summary = "원본 스크립트 조회", description = "추출된 transcript. 없으면 transcript=null.") + public ApiResponse> getScript(@PathVariable Long id) { + String t = curationService.getTranscript(id); + return ApiResponse.ok(Map.of("hasScript", t != null, "transcript", t == null ? "" : t)); + } + + @PostMapping("/{id}/extract-script") + @Operation(summary = "원본 스크립트 추출", description = "외부 transcript 서비스로 자막을 추출해 저장한다.") + public ApiResponse> extractScript(@PathVariable Long id) { + String t = curationService.extractTranscript(id); + return ApiResponse.ok(Map.of("hasScript", t != null, "transcript", t == null ? "" : t)); + } + + @PostMapping("/{id}/rework") + @Operation(summary = "재작성 초안 저장", description = "body: {\"reworkText\": \"...\"} — 저장 시 상태가 TARGET 으로 승격된다.") + public ApiResponse saveRework(@PathVariable Long id, @RequestBody Map body) { + return ApiResponse.ok(curationService.saveRework(id, body.get("reworkText"))); + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideoCurationService.java b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideoCurationService.java new file mode 100644 index 0000000..62571cd --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideoCurationService.java @@ -0,0 +1,185 @@ +package com.hlab.yanalyst.domain.channel; + +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import java.util.List; +import java.util.Set; + +/** + * 수집한 채널 영상의 분류/관리(큐레이션) 로직. + */ +@Service +@RequiredArgsConstructor +@Transactional(readOnly = true) +public class ChannelVideoCurationService { + + private final ChannelVideoRepository channelVideoRepository; + private final ChannelVideoScriptRepository channelVideoScriptRepository; + private final ChannelService channelService; + + private static final Set ALLOWED_STATUS = Set.of("NEW", "REVIEWING", "TARGET", "DONE", "EXCLUDED"); + private static final Set ALLOWED_SORT = Set.of("viewsPerHour", "viewsPerSubRatio", "viewCount", "publishedAt", "durationSec"); + + private ChannelVideo find(Long id) { + return channelVideoRepository.findById(id) + .orElseThrow(() -> new IllegalArgumentException("Video not found: " + id)); + } + + @Transactional + public ChannelVideo assignCategory(Long videoId, Long categoryId) { + ChannelVideo video = find(videoId); + video.assignCategory(categoryId); + return video; + } + + @Transactional + public ChannelVideo setBookmark(Long videoId, boolean bookmarked) { + ChannelVideo video = find(videoId); + video.setBookmarked(bookmarked); + return video; + } + + @Transactional + public ChannelVideo changeStatus(Long videoId, String status) { + if (!ALLOWED_STATUS.contains(status)) { + throw new IllegalArgumentException("허용되지 않은 상태값입니다: " + status + " (가능: " + ALLOWED_STATUS + ")"); + } + ChannelVideo video = find(videoId); + video.changeInterestStatus(status); + return video; + } + + @Transactional + public ChannelVideo updateMemo(Long videoId, String memo) { + ChannelVideo video = find(videoId); + video.setMemo(memo); + return video; + } + + // ===== 재가공(재작성) 연결 ===== + + public ChannelVideo getOne(Long videoId) { + return find(videoId); + } + + /** 원본 스크립트(transcript) 조회. 없으면 null. */ + public String getTranscript(Long videoId) { + ChannelVideo v = find(videoId); + return channelVideoScriptRepository.findByVideoId(v.getVideoId()) + .map(ChannelVideoScript::getTranscript) + .orElse(null); + } + + /** 원본 스크립트 추출(외부 transcript 서비스 호출). 추출 후 transcript 반환. */ + @Transactional + public String extractTranscript(Long videoId) { + ChannelVideo v = find(videoId); + channelService.extractScript(v.getId()); // channel_video_scripts 에 저장 + hasScript=true + return channelVideoScriptRepository.findByVideoId(v.getVideoId()) + .map(ChannelVideoScript::getTranscript) + .orElse(null); + } + + /** 재작성 초안 저장 + 상태를 TARGET 으로 승격(아직 NEW/REVIEWING 이면). */ + @Transactional + public ChannelVideo saveRework(Long videoId, String text) { + ChannelVideo v = find(videoId); + v.setReworkText(text); + if (!"EXCLUDED".equals(v.getInterestStatus())) { + v.changeInterestStatus("TARGET"); + } + return v; + } + + /** 수집함에서 영상 제거(연결된 스크립트도 함께 삭제). */ + @Transactional + public void delete(Long videoId) { + ChannelVideo video = find(videoId); + channelVideoScriptRepository.findByVideoId(video.getVideoId()) + .ifPresent(channelVideoScriptRepository::delete); + channelVideoRepository.delete(video); + } + + /** + * 큐레이션 필터 + 정렬 조회. + * @param source 수집 경로 필터: CHANNEL | SEARCH (null 이면 전체) + * @param sortBy viewsPerHour | viewsPerSubRatio | viewCount | publishedAt | durationSec (기본 viewsPerHour, 내림차순) + */ + public List search(Long categoryId, String status, String source, + boolean shortsOnly, boolean bookmarkedOnly, String sortBy) { + String sortField = StringUtils.hasText(sortBy) && ALLOWED_SORT.contains(sortBy) ? sortBy : "viewsPerHour"; + String sourceFilter = StringUtils.hasText(source) ? source : null; + Sort sort = Sort.by(Sort.Direction.DESC, sortField); + return channelVideoRepository.search(categoryId, status, sourceFilter, shortsOnly, bookmarkedOnly, sort); + } + + /** + * 떡상 후보 자동 발굴 — "구독자 적은데 조회수 터진" Shorts 를 비율 높은 순으로. + * @param limit 최대 개수 (기본 20) + * @param minRatio 최소 (조회수/구독자) 비율 (기본 2.0 = 구독자의 2배 이상 조회) + */ + public List findOutperformers(Integer limit, java.math.BigDecimal minRatio) { + int size = (limit == null || limit <= 0) ? 20 : Math.min(limit, 200); + java.math.BigDecimal threshold = (minRatio == null) ? java.math.BigDecimal.valueOf(2) : minRatio; + return channelVideoRepository.findOutperformers(threshold, + org.springframework.data.domain.PageRequest.of(0, size)); + } + + /** + * 기존 수집 영상의 파생 지표/큐레이션 기본값 백필. + * 새 컬럼 추가 이전에 수집된 행들은 값이 null 이라 통계/필터/떡상 발굴에 잡히지 않으므로, + * 이미 보관 중인 duration/viewCount/publishedAt + 연결 채널 정보로 재계산한다(외부 API 호출 없음). + * 재실행해도 안전(idempotent). + */ + @Transactional + public java.util.Map backfillMetrics() { + java.util.List all = channelVideoRepository.findAll(); + int updated = 0; + for (ChannelVideo v : all) { + Integer durationSec = VideoMetrics.parseDurationSec(v.getDuration()); + Boolean isShorts = VideoMetrics.isShorts(durationSec); + java.math.BigDecimal viewsPerHour = VideoMetrics.viewsPerHour(v.getViewCount(), v.getPublishedAt()); + v.applyMetrics(durationSec, isShorts, viewsPerHour); + + // 채널 연결이 있으면 채널 정보/구독자 대비 비율 채움 (SEARCH 수집물은 이미 채워져 있어 건너뜀) + if ("SEARCH".equals(v.getSource())) { + if (v.getSubscriberCount() != null) { + v.applyChannelInfoKeepSource(v.getYtChannelId(), v.getChannelTitle(), v.getSubscriberCount(), + VideoMetrics.viewsPerSubRatio(v.getViewCount(), v.getSubscriberCount())); + } + } else if (v.getChannel() != null) { + Long subs = v.getChannel().getSubscriberCount(); + v.applyChannelInfo(v.getChannel().getChannelId(), v.getChannel().getTitle(), subs, + VideoMetrics.viewsPerSubRatio(v.getViewCount(), subs)); + } + + v.applyCurationDefaults(); + channelVideoRepository.save(v); + updated++; + } + return java.util.Map.of("updated", updated); + } + + /** 대시보드/칸반용 파이프라인 통계: 총계 + 상태별/출처별 분포. */ + public java.util.Map pipelineStats() { + java.util.Map stats = new java.util.LinkedHashMap<>(); + stats.put("total", channelVideoRepository.count()); + + java.util.Map byStatus = new java.util.LinkedHashMap<>(); + for (String s : ALLOWED_STATUS) { + byStatus.put(s, channelVideoRepository.countByInterestStatus(s)); + } + stats.put("byStatus", byStatus); + + java.util.Map bySource = new java.util.LinkedHashMap<>(); + bySource.put("CHANNEL", channelVideoRepository.countBySource("CHANNEL")); + bySource.put("SEARCH", channelVideoRepository.countBySource("SEARCH")); + stats.put("bySource", bySource); + + return stats; + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideoRepository.java b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideoRepository.java new file mode 100644 index 0000000..784bfcb --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideoRepository.java @@ -0,0 +1,44 @@ +package com.hlab.yanalyst.domain.channel; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.Optional; + +public interface ChannelVideoRepository extends JpaRepository { + Optional findByVideoId(String videoId); + boolean existsByVideoId(String videoId); + java.util.List findByChannelId(Long channelId); + java.util.List findByChannelIdInOrderByPublishedAtDesc(java.util.List channelIds); + + // --- 큐레이션/분석 조회 --- + java.util.List findByCategoryId(Long categoryId); + long countByCategoryId(Long categoryId); + long countByInterestStatus(String interestStatus); + long countBySource(String source); + + /** 떡상 후보: 구독자 대비 조회수 비율이 높은 Shorts (제외 처리된 것은 빼고). */ + @Query("select v from ChannelVideo v where v.isShorts = true " + + "and v.viewsPerSubRatio >= :minRatio and v.interestStatus <> 'EXCLUDED' " + + "order by v.viewsPerSubRatio desc") + java.util.List findOutperformers(@Param("minRatio") java.math.BigDecimal minRatio, + org.springframework.data.domain.Pageable pageable); + + /** + * 큐레이션 필터링 + 조회수/업로드일/시간당조회수 정렬은 호출부의 Sort 로 처리. + * null 인 조건은 무시한다. + */ + @Query("select v from ChannelVideo v where " + + "(:categoryId is null or v.categoryId = :categoryId) and " + + "(:status is null or v.interestStatus = :status) and " + + "(:source is null or v.source = :source) and " + + "(:shortsOnly = false or v.isShorts = true) and " + + "(:bookmarkedOnly = false or v.bookmarked = true)") + java.util.List search(@Param("categoryId") Long categoryId, + @Param("status") String status, + @Param("source") String source, + @Param("shortsOnly") boolean shortsOnly, + @Param("bookmarkedOnly") boolean bookmarkedOnly, + org.springframework.data.domain.Sort sort); +} diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideoScript.java b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideoScript.java new file mode 100644 index 0000000..cf17887 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideoScript.java @@ -0,0 +1,38 @@ +package com.hlab.yanalyst.domain.channel; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.time.LocalDateTime; + +@Entity +@Getter +@Setter +@NoArgsConstructor +@EntityListeners(AuditingEntityListener.class) +@Table(name = "channel_video_scripts") +public class ChannelVideoScript { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "channel_video_id") + private Long channelVideoId; + + @Column(name = "video_id", nullable = false) + private String videoId; + + private String language; + + @Column(columnDefinition = "TEXT") + private String transcript; + + @CreatedDate + @Column(name = "created_at", updatable = false) + private LocalDateTime createdAt; +} diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideoScriptRepository.java b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideoScriptRepository.java new file mode 100644 index 0000000..2665f48 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelVideoScriptRepository.java @@ -0,0 +1,10 @@ +package com.hlab.yanalyst.domain.channel; + +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +public interface ChannelVideoScriptRepository extends JpaRepository { + Optional findByVideoId(String videoId); + boolean existsByVideoId(String videoId); +} diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/SearchCollectionService.java b/src/main/java/com/hlab/yanalyst/domain/channel/SearchCollectionService.java new file mode 100644 index 0000000..42a1a4e --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/channel/SearchCollectionService.java @@ -0,0 +1,65 @@ +package com.hlab.yanalyst.domain.channel; + +import com.hlab.yanalyst.web.dto.YoutubeSearchResultDto; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + * 조회수 검색 결과(YoutubeSearchResultDto)를 수집함(ChannelVideo, source=SEARCH)으로 영속화한다. + * 이미 수집된 videoId 는 건너뛴다(중복 방지). + */ +@Slf4j +@Service +@RequiredArgsConstructor +public class SearchCollectionService { + + private final ChannelVideoRepository channelVideoRepository; + + @Transactional + public CollectResult collectFromSearch(List items) { + if (items == null || items.isEmpty()) { + return new CollectResult(0, 0, List.of()); + } + + int saved = 0; + int skipped = 0; + List savedIds = new ArrayList<>(); + + for (YoutubeSearchResultDto dto : items) { + if (dto.getVideoId() == null || dto.getVideoId().isBlank()) { + skipped++; + continue; + } + if (channelVideoRepository.existsByVideoId(dto.getVideoId())) { + skipped++; // 이미 수집된 영상 + continue; + } + + BigDecimal viewsPerHour = VideoMetrics.viewsPerHour(dto.getViewCount(), dto.getPublishedAt()); + BigDecimal viewsPerSubRatio = VideoMetrics.viewsPerSubRatio(dto.getViewCount(), dto.getSubscriberCount()); + String hashtags = (dto.getHashtags() == null || dto.getHashtags().isEmpty()) + ? null : String.join(",", dto.getHashtags()); + + ChannelVideo video = ChannelVideo.fromSearch( + dto.getVideoId(), dto.getTitle(), dto.getThumbnailUrl(), dto.getPublishedAt(), + dto.getViewCount(), dto.getChannelId(), dto.getChannelTitle(), dto.getSubscriberCount(), + dto.getDurationSec(), viewsPerHour, viewsPerSubRatio, hashtags); + + channelVideoRepository.save(video); + saved++; + savedIds.add(dto.getVideoId()); + } + + log.info("Search collection done. saved={}, skipped(duplicate/invalid)={}", saved, skipped); + return new CollectResult(saved, skipped, savedIds); + } + + /** 수집 결과 요약. */ + public record CollectResult(int saved, int skipped, List savedVideoIds) {} +} diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/VideoMetrics.java b/src/main/java/com/hlab/yanalyst/domain/channel/VideoMetrics.java new file mode 100644 index 0000000..0431835 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/channel/VideoMetrics.java @@ -0,0 +1,44 @@ +package com.hlab.yanalyst.domain.channel; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.Duration; +import java.time.LocalDateTime; + +/** + * 수집 영상의 파생 분석 지표 계산 유틸. 채널 수집/검색 수집 양쪽에서 공용으로 사용. + */ +public final class VideoMetrics { + + private VideoMetrics() {} + + /** ISO 8601 duration(예: PT1M5S) → 초. 실패 시 null. */ + public static Integer parseDurationSec(String isoDuration) { + if (isoDuration == null || isoDuration.isBlank()) return null; + try { + return (int) Duration.parse(isoDuration).getSeconds(); + } catch (Exception e) { + return null; + } + } + + public static boolean isShorts(Integer durationSec) { + return durationSec != null && durationSec <= 65; + } + + /** 시간당 조회수 = 조회수 / 업로드 후 경과 시간(시간). 경과 1시간 미만은 1시간으로 간주. */ + public static BigDecimal viewsPerHour(Long viewCount, LocalDateTime publishedAt) { + if (viewCount == null || publishedAt == null) return BigDecimal.ZERO; + long hours = Duration.between(publishedAt, LocalDateTime.now()).toHours(); + if (hours < 1) hours = 1; + return BigDecimal.valueOf(viewCount) + .divide(BigDecimal.valueOf(hours), 2, RoundingMode.HALF_UP); + } + + /** 구독자 대비 조회수 비율 = 조회수 / 구독자. "구독자 적은데 터진 영상" 발굴용. 구독자 0/누락 시 0. */ + public static BigDecimal viewsPerSubRatio(Long viewCount, Long subscriberCount) { + if (viewCount == null || subscriberCount == null || subscriberCount <= 0) return BigDecimal.ZERO; + return BigDecimal.valueOf(viewCount) + .divide(BigDecimal.valueOf(subscriberCount), 2, RoundingMode.HALF_UP); + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/opal/OpalDraft.java b/src/main/java/com/hlab/yanalyst/domain/opal/OpalDraft.java new file mode 100644 index 0000000..a7965f5 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/opal/OpalDraft.java @@ -0,0 +1,65 @@ +package com.hlab.yanalyst.domain.opal; + +import com.hlab.yanalyst.domain.video.YtVideo; +import io.hypersistence.utils.hibernate.type.json.JsonBinaryType; +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.Type; + +import java.time.LocalDateTime; + +@Entity +@Table(name = "opal_draft") +@Getter +@Setter +@NoArgsConstructor +public class OpalDraft { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "draft_id") + private Long draftId; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "video_id", nullable = false) + private YtVideo video; + + @Type(JsonBinaryType.class) + @Column(name = "request_payload_json", columnDefinition = "jsonb") + private String requestPayloadJson; + + @Column(name = "response_text", columnDefinition = "TEXT") + private String responseText; + + @Column(name = "old_script_summary", columnDefinition = "TEXT") + private String oldScriptSummary; + + @Column(name = "new_script_summary", columnDefinition = "TEXT") + private String newScriptSummary; + + @Column(name = "user_feedback", columnDefinition = "TEXT") + private String userFeedback; + + @Column(name = "version_no", nullable = false) + private Integer versionNo; + + @Column(name = "is_accepted", nullable = false) + private Boolean isAccepted = false; + + @Column(name = "accepted_at") + private LocalDateTime acceptedAt; + + @Column(name = "status", nullable = false, length = 20) + private String status = "SUCCESS"; + + @Column(name = "error_msg", columnDefinition = "TEXT") + private String errorMsg; + + @CreationTimestamp + @Column(name = "created_at", nullable = false, updatable = false) + private LocalDateTime createdAt; +} diff --git a/src/main/java/com/hlab/yanalyst/domain/opal/OpalDraftRepository.java b/src/main/java/com/hlab/yanalyst/domain/opal/OpalDraftRepository.java new file mode 100644 index 0000000..f738de4 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/opal/OpalDraftRepository.java @@ -0,0 +1,9 @@ +package com.hlab.yanalyst.domain.opal; + +import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + +public interface OpalDraftRepository extends JpaRepository { + List findByVideo_VideoIdOrderByVersionNoDesc(Long videoId); + Integer countByVideo_VideoId(Long videoId); +} diff --git a/src/main/java/com/hlab/yanalyst/domain/opal/OpalFinal.java b/src/main/java/com/hlab/yanalyst/domain/opal/OpalFinal.java new file mode 100644 index 0000000..8db79a3 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/opal/OpalFinal.java @@ -0,0 +1,45 @@ +package com.hlab.yanalyst.domain.opal; + +import com.hlab.yanalyst.domain.video.YtVideo; +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.CreationTimestamp; + +import java.time.LocalDateTime; + +@Entity +@Table(name = "opal_final") +@Getter +@Setter +@NoArgsConstructor +public class OpalFinal { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "final_id") + private Long finalId; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "video_id", nullable = false) + private YtVideo video; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "draft_id", nullable = false) + private OpalDraft draft; + + @Column(name = "final_script_text", nullable = false, columnDefinition = "TEXT") + private String finalScriptText; + + @Column(name = "is_active", nullable = false) + private Boolean isActive = false; + + @CreationTimestamp + @Column(name = "finalized_at", nullable = false) + private LocalDateTime finalizedAt; + + @Column(name = "status", nullable = false, length = 20) + private String status = "FINALIZED"; +} diff --git a/src/main/java/com/hlab/yanalyst/domain/opal/OpalFinalAsset.java b/src/main/java/com/hlab/yanalyst/domain/opal/OpalFinalAsset.java new file mode 100644 index 0000000..65f29d9 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/opal/OpalFinalAsset.java @@ -0,0 +1,54 @@ +package com.hlab.yanalyst.domain.opal; + +import io.hypersistence.utils.hibernate.type.json.JsonBinaryType; +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.Type; + +import java.time.LocalDateTime; + +@Entity +@Table(name = "opal_final_asset") +@Getter +@Setter +@NoArgsConstructor +public class OpalFinalAsset { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "asset_id") + private Long assetId; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "final_id", nullable = false) + private OpalFinal opalFinal; + + @Type(JsonBinaryType.class) + @Column(name = "asset_json", nullable = false, columnDefinition = "jsonb") + private String assetJson; + + @Column(name = "title", columnDefinition = "TEXT") + private String title; + + @Column(name = "summary", columnDefinition = "TEXT") + private String summary; + + @Type(JsonBinaryType.class) + @Column(name = "timeline", columnDefinition = "jsonb") + private String timeline; + + @Column(name = "video_prompt", columnDefinition = "TEXT") + private String videoPrompt; + + @Type(JsonBinaryType.class) + @Column(name = "image_urls", columnDefinition = "jsonb") + private String imageUrls; + + @CreationTimestamp + @Column(name = "created_at", nullable = false, updatable = false) + private LocalDateTime createdAt; +} diff --git a/src/main/java/com/hlab/yanalyst/domain/opal/OpalFinalAssetRepository.java b/src/main/java/com/hlab/yanalyst/domain/opal/OpalFinalAssetRepository.java new file mode 100644 index 0000000..c7919b4 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/opal/OpalFinalAssetRepository.java @@ -0,0 +1,8 @@ +package com.hlab.yanalyst.domain.opal; + +import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + +public interface OpalFinalAssetRepository extends JpaRepository { + Optional findByOpalFinal_FinalId(Long finalId); +} diff --git a/src/main/java/com/hlab/yanalyst/domain/opal/OpalFinalRepository.java b/src/main/java/com/hlab/yanalyst/domain/opal/OpalFinalRepository.java new file mode 100644 index 0000000..4010352 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/opal/OpalFinalRepository.java @@ -0,0 +1,10 @@ +package com.hlab.yanalyst.domain.opal; + +import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; +import java.util.List; + +public interface OpalFinalRepository extends JpaRepository { + Optional findByVideo_VideoIdAndIsActiveTrue(Long videoId); + List findByVideo_VideoId(Long videoId); +} diff --git a/src/main/java/com/hlab/yanalyst/domain/opal/dto/OpalDraftResponseDto.java b/src/main/java/com/hlab/yanalyst/domain/opal/dto/OpalDraftResponseDto.java new file mode 100644 index 0000000..7f99130 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/opal/dto/OpalDraftResponseDto.java @@ -0,0 +1,15 @@ +package com.hlab.yanalyst.domain.opal.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class OpalDraftResponseDto { + private String oldScriptSummary; + private String newScriptSummary; +} diff --git a/src/main/java/com/hlab/yanalyst/domain/production/ProductionController.java b/src/main/java/com/hlab/yanalyst/domain/production/ProductionController.java new file mode 100644 index 0000000..17bbcb9 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/production/ProductionController.java @@ -0,0 +1,74 @@ +package com.hlab.yanalyst.domain.production; + +import com.hlab.yanalyst.global.common.ApiResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +@RestController +@RequestMapping("/api/v1/production") +@RequiredArgsConstructor +@Tag(name = "Production API", description = "Production Management API") +public class ProductionController { + + private final ProductionService productionService; + + @PostMapping("/fetch-rankings") + @Operation(summary = "Fetch Rankings", description = "Fetch ranking data from external n8n webhook.") + public ApiResponse fetchRankings() { + return ApiResponse.ok(productionService.fetchRankings()); + } + + @PostMapping("/extract-script") + @Operation(summary = "Extract Script", description = "Extract transcript from a video URL.") + public ApiResponse extractScript(@RequestBody Map payload) { + Long productionVideoId = payload.get("productionVideoId"); + productionService.extractScript(productionVideoId); + return ApiResponse.ok(null); + } + + @org.springframework.web.bind.annotation.GetMapping("/script/{scriptId}") + @Operation(summary = "Get Script", description = "Get transcript details by script ID.") + public ApiResponse getScript(@org.springframework.web.bind.annotation.PathVariable Long scriptId) { + return ApiResponse.ok(productionService.getScript(scriptId)); + } + + @PostMapping("/fetch-summary") + @Operation(summary = "Fetch Summary", description = "Fetch and save summary from Google Docs for a video.") + public ApiResponse fetchSummary(@RequestBody Map payload) { + Long videoId = payload.get("videoId"); + ProductionScript script = productionService.fetchAndSaveSummary(videoId); + return ApiResponse.ok(script); + } + + @PostMapping("/fetch-final-script") + @Operation(summary = "Fetch Final Script", description = "Fetch and save final script from Google Docs for a video.") + public ApiResponse fetchFinalScript(@RequestBody Map payload) { + Long videoId = payload.get("videoId"); + ProductionScript script = productionService.fetchAndSaveFinalScript(videoId); + return ApiResponse.ok(script); + } + + @PostMapping("/update-final-script") + @Operation(summary = "Update Final Script", description = "Update the content of the final script.") + public ApiResponse updateFinalScript(@RequestBody Map payload) { + Long scriptId = ((Number) payload.get("scriptId")).longValue(); + String content = (String) payload.get("content"); + ProductionScript script = productionService.updateFinalScript(scriptId, content); + return ApiResponse.ok(script); + } + + @PostMapping("/fetch-opening") + @Operation(summary = "Fetch Opening Script", description = "Fetch and save opening script from Google Docs for a video.") + public ApiResponse fetchOpening(@RequestBody Map payload) { + Long videoId = payload.get("videoId"); + ProductionScript script = productionService.fetchAndSaveOpening(videoId); + return ApiResponse.ok(script); + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/production/ProductionCrawlHistory.java b/src/main/java/com/hlab/yanalyst/domain/production/ProductionCrawlHistory.java new file mode 100644 index 0000000..bdba7ce --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/production/ProductionCrawlHistory.java @@ -0,0 +1,42 @@ +package com.hlab.yanalyst.domain.production; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +@Entity +@Getter +@NoArgsConstructor +@EntityListeners(AuditingEntityListener.class) +@Table(name = "production_crawl_history") +public class ProductionCrawlHistory { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @CreatedDate + private LocalDateTime crawledAt; + + private Integer topN; + private Integer videoCount; + + @OneToMany(mappedBy = "history", cascade = CascadeType.ALL, orphanRemoval = true) + private List videos = new ArrayList<>(); + + public ProductionCrawlHistory(Integer topN, Integer videoCount) { + this.topN = topN; + this.videoCount = videoCount; + } + + public void addVideo(ProductionVideo video) { + this.videos.add(video); + video.setHistory(this); + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/production/ProductionCrawlHistoryRepository.java b/src/main/java/com/hlab/yanalyst/domain/production/ProductionCrawlHistoryRepository.java new file mode 100644 index 0000000..0b93fd8 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/production/ProductionCrawlHistoryRepository.java @@ -0,0 +1,6 @@ +package com.hlab.yanalyst.domain.production; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ProductionCrawlHistoryRepository extends JpaRepository { +} diff --git a/src/main/java/com/hlab/yanalyst/domain/production/ProductionScript.java b/src/main/java/com/hlab/yanalyst/domain/production/ProductionScript.java new file mode 100644 index 0000000..c45f4f3 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/production/ProductionScript.java @@ -0,0 +1,50 @@ +package com.hlab.yanalyst.domain.production; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.time.LocalDateTime; + +@Entity +@Getter +@Setter +@NoArgsConstructor +@EntityListeners(AuditingEntityListener.class) +@Table(name = "production_script") +public class ProductionScript { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "production_video_id") + private Long productionVideoId; + + @Column(name = "youtube_video_id") + private String youtubeVideoId; + + private String language; + + @Column(columnDefinition = "TEXT") + private String transcript; + + @CreatedDate + @Column(name = "created_at", updatable = false) + private LocalDateTime createdAt; + + @Column(columnDefinition = "TEXT") + private String oldScriptSummary; + + @Column(columnDefinition = "TEXT") + private String newScriptSummary; + + @Column(columnDefinition = "TEXT") + private String finalScript; + + @Column(columnDefinition = "TEXT") + private String openingScript; +} diff --git a/src/main/java/com/hlab/yanalyst/domain/production/ProductionScriptRepository.java b/src/main/java/com/hlab/yanalyst/domain/production/ProductionScriptRepository.java new file mode 100644 index 0000000..d3a6e8d --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/production/ProductionScriptRepository.java @@ -0,0 +1,7 @@ +package com.hlab.yanalyst.domain.production; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ProductionScriptRepository extends JpaRepository { + java.util.List findByProductionVideoIdIn(java.util.List productionVideoIds); +} diff --git a/src/main/java/com/hlab/yanalyst/domain/production/ProductionService.java b/src/main/java/com/hlab/yanalyst/domain/production/ProductionService.java new file mode 100644 index 0000000..54449e9 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/production/ProductionService.java @@ -0,0 +1,413 @@ +package com.hlab.yanalyst.domain.production; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.hlab.yanalyst.domain.production.dto.RankingItemDto; +import com.hlab.yanalyst.domain.production.dto.RankingResponseDto; +import com.hlab.yanalyst.domain.production.dto.ScriptResponseDto; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.data.domain.Sort; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import com.google.api.client.auth.oauth2.Credential; +import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp; +import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver; +import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow; +import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets; +import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; +import com.google.api.client.http.javanet.NetHttpTransport; +import com.google.api.client.json.gson.GsonFactory; +import com.google.api.client.util.store.FileDataStoreFactory; +import com.google.api.services.docs.v1.Docs; +import com.google.api.services.docs.v1.DocsScopes; +import com.google.api.services.docs.v1.model.*; +import org.springframework.web.client.RestTemplate; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.io.InputStreamReader; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +@Slf4j +@Service +@RequiredArgsConstructor +@Transactional(readOnly = true) +public class ProductionService { + + private final RestTemplate restTemplate; + private final ProductionCrawlHistoryRepository historyRepository; + private final ObjectMapper objectMapper; // Jackson ObjectMapper + + @Transactional + public String fetchRankings() { +// String url = "https://h-n8n.tolag.shop/webhook/2ac04910-8243-4e82-9187-df4db8087a5c"; + String url = "https://h-n8n.tolag.shop/webhook/2ac04910-8243"; + + log.info("Fetching rankings from external API: {}", url); + + try { + ResponseEntity response = restTemplate.postForEntity(url, null, String.class); + + if (response.getStatusCode().is2xxSuccessful()) { + String body = response.getBody(); + log.info("Successfully fetched rankings data: {}", body); + + // Save to DB + saveRankingsToDb(body); + + return body; + } else { + log.error("Failed to fetch rankings. Status: {}", response.getStatusCode()); + throw new RuntimeException("Failed to fetch rankings from external API"); + } + } catch (Exception e) { + log.error("Error occurred while fetching rankings", e); + throw new RuntimeException("Error fetching rankings", e); + } + } + + private void saveRankingsToDb(String jsonBody) { + try { + RankingResponseDto dto = objectMapper.readValue(jsonBody, RankingResponseDto.class); + + ProductionCrawlHistory history = new ProductionCrawlHistory(dto.getTopN(), dto.getItems().size()); + // auditing usually handles createdDate, but if not set up, we might need manual set. + // @CreatedDate requires @EnableJpaAuditing. Assuming it's there or will work. + // If strictly needed, we can set manually: history.setCrawledAt(LocalDateTime.now()); + + if (dto.getItems() != null) { + for (RankingItemDto itemDto : dto.getItems()) { + ProductionVideo video = new ProductionVideo(); + video.setRank(itemDto.getRank()); + video.setTitle(itemDto.getTitle()); + video.setVideoUrl(itemDto.getVideoUrl()); + video.setThumbnailUrl(itemDto.getThumbnailUrl()); + video.setChannelTitle(itemDto.getChannelTitle()); + video.setViewCount(itemDto.getViewCount()); + video.setSubscriberCount(itemDto.getSubscriberCount()); + video.setViewsPerHour(itemDto.getViewsPerHour()); + video.setPublishedAt(itemDto.getPublishedAt()); + + history.addVideo(video); + } + } + + historyRepository.save(history); + log.info("Saved crawl history with ID: {}", history.getId()); + + } catch (JsonProcessingException e) { + log.error("Failed to parse ranking JSON", e); + // We don't throw exception here to allow the raw JSON to at least return to frontend if needed, + // or we could throw. Let's log and rethrow safely or just proceed. + // But if we fail to save, user might want to know. + throw new RuntimeException("Failed to parse and save rankings", e); + } + } + + public List getAllHistory() { + return historyRepository.findAll(Sort.by(Sort.Direction.DESC, "id")); // Sort by ID desc - most recent first + } + + public ProductionCrawlHistory getHistory(Long id) { + ProductionCrawlHistory history = historyRepository.findById(id) + .orElseThrow(() -> new IllegalArgumentException("History not found with id: " + id)); + + // Populate transient fields + List videoIds = history.getVideos().stream() + .map(ProductionVideo::getId) + .toList(); + + if (!videoIds.isEmpty()) { + Map scriptMap = productionScriptRepository.findByProductionVideoIdIn(videoIds).stream() + .collect(java.util.stream.Collectors.toMap(ProductionScript::getProductionVideoId, script -> script)); + + for (ProductionVideo video : history.getVideos()) { + if (scriptMap.containsKey(video.getId())) { + ProductionScript script = scriptMap.get(video.getId()); + video.setHasScript(true); + video.setScriptId(script.getId()); + // Check if summaries exist + if (script.getOldScriptSummary() != null && !script.getOldScriptSummary().isEmpty()) { + video.setHasSummary(true); + } + // Check if final script exists + if (script.getFinalScript() != null && !script.getFinalScript().isEmpty()) { + video.setHasFinalScript(true); + } + // Check if opening script exists + if (script.getOpeningScript() != null && !script.getOpeningScript().isEmpty()) { + video.setHasOpening(true); + } + } + } + } + + return history; + } + + private final ProductionVideoRepository videoRepository; + private final ProductionScriptRepository productionScriptRepository; + + @Transactional + public void extractScript(Long productionVideoId) { + ProductionVideo video = videoRepository.findById(productionVideoId) + .orElseThrow(() -> new IllegalArgumentException("Video not found: " + productionVideoId)); + + String apiUrl = "http://h-python.tolag.shop/transcript"; + + Map requestBody = Collections.singletonMap("url", video.getVideoUrl()); + + log.info("Requesting transcript for URL: {}", video.getVideoUrl()); + + try { + ResponseEntity response = restTemplate.postForEntity(apiUrl, requestBody, String.class); + + if (response.getStatusCode().is2xxSuccessful() && response.getBody() != null) { + ScriptResponseDto scriptDto = + objectMapper.readValue(response.getBody(), ScriptResponseDto.class); + + ProductionScript script = new ProductionScript(); + script.setProductionVideoId(productionVideoId); + script.setYoutubeVideoId(scriptDto.getVideoId()); + script.setLanguage(scriptDto.getLanguage()); + script.setTranscript(scriptDto.getTranscript()); + + productionScriptRepository.save(script); + log.info("Saved script for video id: {}", productionVideoId); + + } else { + log.error("Failed to fetch script. Status: {}", response.getStatusCode()); + throw new RuntimeException("External API failed with status: " + response.getStatusCode()); + } + } catch (Exception e) { + log.error("Error extracting script", e); + throw new RuntimeException("Error extracting script", e); + } + } + + public ProductionScript getScript(Long scriptId) { + return productionScriptRepository.findById(scriptId) + .orElseThrow(() -> new IllegalArgumentException("Script not found with id: " + scriptId)); + } + + @Transactional + public ProductionScript fetchAndSaveSummary(Long videoId) { + // Check if video exists + ProductionVideo video = videoRepository.findById(videoId) + .orElseThrow(() -> new IllegalArgumentException("Video not found: " + videoId)); + + // Find the script associated with this video. + ProductionScript script = productionScriptRepository.findByProductionVideoIdIn(Collections.singletonList(videoId)) + .stream().findFirst() + .orElseThrow(() -> new IllegalArgumentException("Script record not found for video: " + videoId)); + + // Doc ID for Opal Drafts / Summary + String docId = "11eFwYXm1Ld2vZUrOHvJZEmN69KDXvQygEysdXWr8-W4"; + log.info("Fetching summary using Google Docs API for video ID {} from Doc ID: {}", videoId, docId); + + try { + // 1. Fetch content using API + String text = readGoogleDoc(docId); + + // Parse + String oldSummaryMarker = "old_script_summary"; + String newSummaryMarker = "new_script_summary"; + + int oldStart = text.indexOf(oldSummaryMarker); + int newStart = text.indexOf(newSummaryMarker); + + if (oldStart != -1 && newStart != -1) { + String oldSummary = text.substring(oldStart + oldSummaryMarker.length(), newStart).trim(); + String newSummary = text.substring(newStart + newSummaryMarker.length()).trim(); + + System.out.println("Saving summaries for video " + videoId); + + script.setOldScriptSummary(oldSummary); + script.setNewScriptSummary(newSummary); + ProductionScript savedScript = productionScriptRepository.save(script); + + // 2. Clear the Google Doc content + clearGoogleDoc(docId); + log.info("Cleared content of Google Doc: {}", docId); + + return savedScript; + + } else { + log.warn("Summary markers not found in the text file."); + // If markers are missing, do we clear? user probably wants to fix it manually. + // Let's NOT clear if parsing fails, so they can debug the doc. + throw new RuntimeException("Summary markers not found in Google Doc"); + } + } catch (Exception e) { + log.error("Error fetching/clearing summary", e); + throw new RuntimeException("Error fetching summary", e); + } + } + + @Transactional + public ProductionScript fetchAndSaveFinalScript(Long videoId) { + // Check if video exists + ProductionVideo video = videoRepository.findById(videoId) + .orElseThrow(() -> new IllegalArgumentException("Video not found: " + videoId)); + + // Find the script associated with this video. + ProductionScript script = productionScriptRepository.findByProductionVideoIdIn(Collections.singletonList(videoId)) + .stream().findFirst() + .orElseThrow(() -> new IllegalArgumentException("Script record not found for video: " + videoId)); + + // Doc ID for Final Script +// String docId = "1tThnN2-OdYS-RuAWUWFsW9W238TPqZssaww5_wULOg4"; + String docId = "1jiSEwFuWeggIFln08j15pXw-8iUsFaDVjVKl3RbVdsw"; + log.info("Fetching final script using Google Docs API for video ID {} from Doc ID: {}", videoId, docId); + + try { + // 1. Fetch content using API + String text = readGoogleDoc(docId); + + System.out.println("Saving final script for video " + videoId); + + // 2. Save to DB + script.setFinalScript(text); + ProductionScript savedScript = productionScriptRepository.save(script); + + // 3. Clear the Google Doc content + clearGoogleDoc(docId); + log.info("Cleared content of Google Doc: {}", docId); + + return savedScript; + + } catch (Exception e) { + log.error("Error fetching/clearing final script", e); + throw new RuntimeException("Error fetching final script", e); + } + } + + @Transactional + public ProductionScript fetchAndSaveOpening(Long videoId) { + // Check if video exists + ProductionVideo video = videoRepository.findById(videoId) + .orElseThrow(() -> new IllegalArgumentException("Video not found: " + videoId)); + + // Find the script associated with this video. + ProductionScript script = productionScriptRepository.findByProductionVideoIdIn(Collections.singletonList(videoId)) + .stream().findFirst() + .orElseThrow(() -> new IllegalArgumentException("Script record not found for video: " + videoId)); + + // Doc ID for Opening + String docId = "1djTi1eo73zSyZIveChgS94S754hUS9JQX0NaaaSjHBo"; + log.info("Fetching opening script using Google Docs API for video ID {} from Doc ID: {}", videoId, docId); + + try { + // 1. Fetch content using API + String text = readGoogleDoc(docId); + + System.out.println("Saving opening script for video " + videoId); + + // 2. Save to DB + script.setOpeningScript(text); + ProductionScript savedScript = productionScriptRepository.save(script); + + // 3. Clear the Google Doc content + clearGoogleDoc(docId); + log.info("Cleared content of Google Doc: {}", docId); + + return savedScript; + + } catch (Exception e) { + log.error("Error fetching/clearing opening script", e); + throw new RuntimeException("Error fetching opening script", e); + } + } + + @Transactional + public ProductionScript updateFinalScript(Long scriptId, String content) { + ProductionScript script = productionScriptRepository.findById(scriptId) + .orElseThrow(() -> new IllegalArgumentException("Script not found with id: " + scriptId)); + + script.setFinalScript(content); + return productionScriptRepository.save(script); + } + + // --- Google Docs Helper Methods --- + + private static final String CREDENTIALS_FILE_PATH = "/credentials.json"; + private static final java.util.List SCOPES = Collections.singletonList(DocsScopes.DOCUMENTS); + private static final String TOKENS_DIRECTORY_PATH = "tokens"; + + private Docs getDocsService() throws Exception { + final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); + GsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance(); + + InputStream in = ProductionService.class.getResourceAsStream(CREDENTIALS_FILE_PATH); + if (in == null) { + throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH); + } + GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in)); + + // Build flow and trigger user authorization request. + GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder( + HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES) + .setDataStoreFactory(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH))) + .setAccessType("offline") + .build(); + + LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build(); + // This authorize call will open browser if token is missing + Credential credential = new AuthorizationCodeInstalledApp(flow, receiver).authorize("user"); + + return new Docs.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential) + .setApplicationName("HLAB-Backend") + .build(); + } + + private String readGoogleDoc(String docId) throws Exception { + Docs service = getDocsService(); + Document doc = service.documents().get(docId).execute(); + StringBuilder sb = new StringBuilder(); + doc.getBody().getContent().forEach(c -> { + if (c.getParagraph() != null) { + c.getParagraph().getElements().forEach(e -> { + if (e.getTextRun() != null) { + sb.append(e.getTextRun().getContent()); + } + }); + sb.append("\n"); // Add line break for paragraphs + } + }); + return sb.toString(); + } + + private void clearGoogleDoc(String docId) throws Exception { + Docs service = getDocsService(); + Document doc = service.documents().get(docId).execute(); + + // Calculate the end index. Content usually ends with a newline. + int lastContentIndex = doc.getBody().getContent().size() - 1; + int docEnd = doc.getBody().getContent().get(lastContentIndex).getEndIndex(); + + log.info("Attempting to clear doc {}. Last content index: {}, Doc End Index: {}", docId, lastContentIndex, docEnd); + + // Safety check: if doc is already practically empty + // Minimum doc with just a newline usually has end index around 2 or so. + if (docEnd > 2) { + int deleteEndIndex = docEnd - 1; + log.info("Deleting range: 1 to {}", deleteEndIndex); + + Request request = new Request() + .setDeleteContentRange(new DeleteContentRangeRequest() + .setRange(new Range().setStartIndex(1).setEndIndex(deleteEndIndex))); + + BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest().setRequests(Collections.singletonList(request)); + BatchUpdateDocumentResponse response = service.documents().batchUpdate(docId, body).execute(); + log.info("Clear doc response: {}", response); + } else { + log.info("Doc appears empty or too small to clear (endIndex <= 2). Skipping delete."); + } + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/production/ProductionVideo.java b/src/main/java/com/hlab/yanalyst/domain/production/ProductionVideo.java new file mode 100644 index 0000000..e48c9e8 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/production/ProductionVideo.java @@ -0,0 +1,60 @@ +package com.hlab.yanalyst.domain.production; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.time.LocalDateTime; + +@Entity +@Getter +@Setter +@NoArgsConstructor +@Table(name = "production_video") +public class ProductionVideo { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "history_id") + private ProductionCrawlHistory history; + + @Column(name = "video_rank") // 'rank' is a reserved keyword in some DBs + private Integer rank; + + @Column(length = 500) + private String title; + + @Column(length = 2083) + private String videoUrl; + + @Column(length = 2083) + private String thumbnailUrl; + + private String channelTitle; + + // Using Long/Double wrappers to allow nulls if data is missing + private Long viewCount; + private Long subscriberCount; + private Double viewsPerHour; + + private LocalDateTime publishedAt; + + @Transient + private boolean hasScript; + + @Transient + private Long scriptId; + + @Transient + private boolean hasSummary; + + @Transient + private boolean hasFinalScript; + + @Transient + private boolean hasOpening; +} diff --git a/src/main/java/com/hlab/yanalyst/domain/production/ProductionVideoRepository.java b/src/main/java/com/hlab/yanalyst/domain/production/ProductionVideoRepository.java new file mode 100644 index 0000000..3fd8085 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/production/ProductionVideoRepository.java @@ -0,0 +1,6 @@ +package com.hlab.yanalyst.domain.production; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ProductionVideoRepository extends JpaRepository { +} diff --git a/src/main/java/com/hlab/yanalyst/domain/production/dto/RankingItemDto.java b/src/main/java/com/hlab/yanalyst/domain/production/dto/RankingItemDto.java new file mode 100644 index 0000000..c2cae80 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/production/dto/RankingItemDto.java @@ -0,0 +1,30 @@ +package com.hlab.yanalyst.domain.production.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class RankingItemDto { + private Integer rank; + private String youtubeVideoId; // might be null based on sample, but useful if present + private String videoUrl; + private String title; + private String channelTitle; + + // The format in the JSON provided is standard ISO-8601 (e.g. 2025-12-29T13:44:51Z) + // Jackson handles this automatically with 'LocalDateTime' usually if JavaTimeModule is registered, + // or we can strictly define pattern. The Z indicates UTC. + // Let's use generic parsing or ZonedDateTime if errors occur, but LocalDateTime is usually safe if simple. + // Actually, "2025-12-29T13:44:51Z" is Instant-compatible. + private LocalDateTime publishedAt; + + private Long viewCount; + private Long likeCount; + private Long commentCount; + private Long subscriberCount; + private Double viewsPerHour; + private Double viewsPerSub; + private String thumbnailUrl; +} diff --git a/src/main/java/com/hlab/yanalyst/domain/production/dto/RankingResponseDto.java b/src/main/java/com/hlab/yanalyst/domain/production/dto/RankingResponseDto.java new file mode 100644 index 0000000..c15887d --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/production/dto/RankingResponseDto.java @@ -0,0 +1,10 @@ +package com.hlab.yanalyst.domain.production.dto; + +import lombok.Data; +import java.util.List; + +@Data +public class RankingResponseDto { + private Integer topN; + private List items; +} diff --git a/src/main/java/com/hlab/yanalyst/domain/production/dto/ScriptResponseDto.java b/src/main/java/com/hlab/yanalyst/domain/production/dto/ScriptResponseDto.java new file mode 100644 index 0000000..7d85f96 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/production/dto/ScriptResponseDto.java @@ -0,0 +1,13 @@ +package com.hlab.yanalyst.domain.production.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +@Data +public class ScriptResponseDto { + @JsonProperty("video_id") + private String videoId; + + private String language; + private String transcript; +} diff --git a/src/main/java/com/hlab/yanalyst/domain/publish/PublishController.java b/src/main/java/com/hlab/yanalyst/domain/publish/PublishController.java new file mode 100644 index 0000000..ae5d2d5 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/publish/PublishController.java @@ -0,0 +1,53 @@ +package com.hlab.yanalyst.domain.publish; + +import com.hlab.yanalyst.global.common.ApiResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/api/v1/publish") +@RequiredArgsConstructor +@Tag(name = "Publish API", description = "발행(배포) 패키지 준비/추적") +public class PublishController { + + private final PublishService publishService; + + @GetMapping("/by-video/{channelVideoId}") + @Operation(summary = "영상별 발행 패키지 조회", description = "없으면 data=null.") + public ApiResponse getByVideo(@PathVariable Long channelVideoId) { + return ApiResponse.ok(publishService.getByVideo(channelVideoId)); + } + + @PostMapping("/by-video/{channelVideoId}") + @Operation(summary = "발행 패키지 저장(upsert)", + description = "body: {title, description, hashtags, platform, scheduledAt(ISO), status(DRAFT|READY|PUBLISHED)}") + public ApiResponse upsert(@PathVariable Long channelVideoId, @RequestBody Map body) { + LocalDateTime scheduledAt = null; + String s = body.get("scheduledAt"); + if (s != null && !s.isBlank()) { + scheduledAt = LocalDateTime.parse(s.length() == 16 ? s + ":00" : s); + } + PublishPackage p = publishService.upsert(channelVideoId, + body.get("title"), body.get("description"), body.get("hashtags"), + body.get("platform"), scheduledAt, body.get("status")); + return ApiResponse.ok(p); + } + + @PostMapping("/{id}/published") + @Operation(summary = "발행 완료 처리", description = "body: {url} — 상태를 PUBLISHED 로 바꾸고 URL/시각 기록.") + public ApiResponse markPublished(@PathVariable Long id, @RequestBody Map body) { + return ApiResponse.ok(publishService.markPublished(id, body.get("url"))); + } + + @GetMapping + @Operation(summary = "발행 큐 조회", description = "status(DRAFT|READY|PUBLISHED) 필터, 예약일 순.") + public ApiResponse> list(@RequestParam(required = false) String status) { + return ApiResponse.ok(publishService.list(status)); + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/publish/PublishPackage.java b/src/main/java/com/hlab/yanalyst/domain/publish/PublishPackage.java new file mode 100644 index 0000000..f47c99d --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/publish/PublishPackage.java @@ -0,0 +1,69 @@ +package com.hlab.yanalyst.domain.publish; + +import jakarta.persistence.*; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.time.LocalDateTime; + +/** + * 발행(배포) 패키지 — 재가공한 영상을 어디에/언제/어떤 메타데이터로 올릴지 준비하고, + * 발행 결과(URL)를 기록한다. 실제 업로드는 수동(또는 추후 플랫폼 API 연동) — 여기는 준비·추적 단계. + * ChannelVideo 와 1:1. + */ +@Entity +@Table(name = "publish_packages", + uniqueConstraints = @UniqueConstraint(columnNames = "channel_video_id")) +@Getter +@Setter +@NoArgsConstructor +@EntityListeners(AuditingEntityListener.class) +public class PublishPackage { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "channel_video_id", nullable = false) + private Long channelVideoId; + + @Column(columnDefinition = "TEXT") + private String title; + + @Column(columnDefinition = "TEXT") + private String description; + + @Column(columnDefinition = "TEXT") + private String hashtags; + + /** 대상 플랫폼: YOUTUBE / TIKTOK / REELS 등. */ + @Column(length = 100) + private String platform = "YOUTUBE"; + + /** 발행 예약 일시(선택). */ + @Column(name = "scheduled_at") + private LocalDateTime scheduledAt; + + /** DRAFT(작성중) / READY(발행대기) / PUBLISHED(발행완료). */ + @Column(length = 20) + private String status = "DRAFT"; + + /** 발행 완료 시 실제 업로드된 URL(수동 기록). */ + @Column(name = "published_url", columnDefinition = "TEXT") + private String publishedUrl; + + @Column(name = "published_at") + private LocalDateTime publishedAt; + + @CreatedDate + @Column(name = "created_at", updatable = false) + private LocalDateTime createdAt; + + @LastModifiedDate + @Column(name = "updated_at") + private LocalDateTime updatedAt; +} diff --git a/src/main/java/com/hlab/yanalyst/domain/publish/PublishPackageRepository.java b/src/main/java/com/hlab/yanalyst/domain/publish/PublishPackageRepository.java new file mode 100644 index 0000000..7d934a2 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/publish/PublishPackageRepository.java @@ -0,0 +1,12 @@ +package com.hlab.yanalyst.domain.publish; + +import org.springframework.data.domain.Sort; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; +import java.util.Optional; + +public interface PublishPackageRepository extends JpaRepository { + Optional findByChannelVideoId(Long channelVideoId); + List findByStatus(String status, Sort sort); +} diff --git a/src/main/java/com/hlab/yanalyst/domain/publish/PublishService.java b/src/main/java/com/hlab/yanalyst/domain/publish/PublishService.java new file mode 100644 index 0000000..a2f5131 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/publish/PublishService.java @@ -0,0 +1,66 @@ +package com.hlab.yanalyst.domain.publish; + +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.StringUtils; + +import java.time.LocalDateTime; +import java.util.List; +import java.util.Set; + +@Service +@RequiredArgsConstructor +@Transactional(readOnly = true) +public class PublishService { + + private final PublishPackageRepository repository; + + private static final Set ALLOWED_STATUS = Set.of("DRAFT", "READY", "PUBLISHED"); + + public PublishPackage getByVideo(Long channelVideoId) { + return repository.findByChannelVideoId(channelVideoId).orElse(null); + } + + /** 영상별 발행 패키지 upsert. */ + @Transactional + public PublishPackage upsert(Long channelVideoId, String title, String description, String hashtags, + String platform, LocalDateTime scheduledAt, String status) { + if (status != null && !ALLOWED_STATUS.contains(status)) { + throw new IllegalArgumentException("허용되지 않은 상태값: " + status + " (가능: " + ALLOWED_STATUS + ")"); + } + PublishPackage p = repository.findByChannelVideoId(channelVideoId).orElseGet(() -> { + PublishPackage np = new PublishPackage(); + np.setChannelVideoId(channelVideoId); + return np; + }); + p.setTitle(title); + p.setDescription(description); + p.setHashtags(hashtags); + if (StringUtils.hasText(platform)) p.setPlatform(platform); + p.setScheduledAt(scheduledAt); + if (StringUtils.hasText(status)) p.setStatus(status); + return repository.save(p); + } + + /** 발행 완료 처리(실제 업로드 URL 기록). */ + @Transactional + public PublishPackage markPublished(Long id, String url) { + PublishPackage p = repository.findById(id) + .orElseThrow(() -> new IllegalArgumentException("Publish package not found: " + id)); + p.setStatus("PUBLISHED"); + p.setPublishedUrl(url); + p.setPublishedAt(LocalDateTime.now()); + return repository.save(p); + } + + /** 발행 큐: 상태(null이면 전체)로 필터, 예약일 → 수정일 순. */ + public List list(String status) { + Sort sort = Sort.by(Sort.Order.asc("scheduledAt").nullsLast(), Sort.Order.desc("updatedAt")); + if (StringUtils.hasText(status)) { + return repository.findByStatus(status, sort); + } + return repository.findAll(sort); + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/script/ScriptGen.java b/src/main/java/com/hlab/yanalyst/domain/script/ScriptGen.java new file mode 100644 index 0000000..de84cad --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/script/ScriptGen.java @@ -0,0 +1,58 @@ +package com.hlab.yanalyst.domain.script; + +import com.hlab.yanalyst.domain.video.YtVideo; +import io.hypersistence.utils.hibernate.type.json.JsonBinaryType; +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.hibernate.annotations.CreationTimestamp; +import org.hibernate.annotations.Type; +import org.hibernate.annotations.UpdateTimestamp; + +import java.time.LocalDateTime; + +@Entity +@Table(name = "script_gen") +@Getter +@Setter +@NoArgsConstructor +public class ScriptGen { + + @Id + @Column(name = "video_id") + private Long videoId; + + @OneToOne(fetch = FetchType.LAZY) + @MapsId + @JoinColumn(name = "video_id") + private YtVideo video; + + @Type(JsonBinaryType.class) + @Column(name = "request_payload_json", columnDefinition = "jsonb") + private String requestPayloadJson; + + @Column(name = "response_text", nullable = false, columnDefinition = "TEXT") + private String responseText; + + @Column(name = "model_name", length = 100) + private String modelName; + + @Column(name = "latency_ms") + private Integer latencyMs; + + @Column(name = "status", nullable = false, length = 20) + private String status = "SUCCESS"; + + @Column(name = "error_msg", columnDefinition = "TEXT") + private String errorMsg; + + @CreationTimestamp + @Column(name = "created_at", nullable = false, updatable = false) + private LocalDateTime createdAt; + + @UpdateTimestamp + @Column(name = "updated_at", nullable = false) + private LocalDateTime updatedAt; +} diff --git a/src/main/java/com/hlab/yanalyst/domain/script/ScriptGenRepository.java b/src/main/java/com/hlab/yanalyst/domain/script/ScriptGenRepository.java new file mode 100644 index 0000000..c3d7a35 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/script/ScriptGenRepository.java @@ -0,0 +1,6 @@ +package com.hlab.yanalyst.domain.script; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface ScriptGenRepository extends JpaRepository { +} diff --git a/src/main/java/com/hlab/yanalyst/domain/video/Video.java b/src/main/java/com/hlab/yanalyst/domain/video/Video.java new file mode 100644 index 0000000..61bfe90 --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/video/Video.java @@ -0,0 +1,64 @@ +package com.hlab.yanalyst.domain.video; + +import com.hlab.yanalyst.domain.channel.Channel; +import jakarta.persistence.*; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import java.time.LocalDateTime; + +@Entity +@Table(name = "videos") +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@EntityListeners(AuditingEntityListener.class) +public class Video { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(nullable = false, unique = true) + private String videoId; // YouTube Video ID + + @Column(nullable = false) + private String title; + + @Column(columnDefinition = "TEXT") + private String description; + + private String thumbnailUrl; + + private String videoUrl; + + private Long viewCount; + + private Long likeCount; + + private LocalDateTime publishedAt; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "channel_id") + private Channel channel; + + @CreatedDate + @Column(updatable = false) + private LocalDateTime collectedAt; + + @Builder + public Video(String videoId, String title, String description, String thumbnailUrl, String videoUrl, Long viewCount, Long likeCount, LocalDateTime publishedAt, Channel channel) { + this.videoId = videoId; + this.title = title; + this.description = description; + this.thumbnailUrl = thumbnailUrl; + this.videoUrl = videoUrl; + this.viewCount = viewCount; + this.likeCount = likeCount; + this.publishedAt = publishedAt; + this.channel = channel; + } +} diff --git a/src/main/java/com/hlab/yanalyst/domain/video/VideoController.java b/src/main/java/com/hlab/yanalyst/domain/video/VideoController.java new file mode 100644 index 0000000..ca93fda --- /dev/null +++ b/src/main/java/com/hlab/yanalyst/domain/video/VideoController.java @@ -0,0 +1,34 @@ +package com.hlab.yanalyst.domain.video; + +import com.hlab.yanalyst.global.common.ApiResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.web.PageableDefault; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/v1/videos") +@RequiredArgsConstructor +@Tag(name = "Video API", description = "Video Management API") +public class VideoController { + + private final VideoService videoService; + + @GetMapping + @Operation(summary = "Get all videos", description = "Retrieve a paginated list of videos.") + public ApiResponse> getVideos(@PageableDefault(size = 20) Pageable pageable) { + return ApiResponse.ok(videoService.getAllVideos(pageable)); + } + + @GetMapping("/{id}") + @Operation(summary = "Get video details", description = "Retrieve detailed information of a specific video.") + public ApiResponse