vtubers.js 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  1. const data = [
  2. {
  3. "id": "0",
  4. "name": "凡笙弦語",
  5. "intro": "台灣新人Vtuber鹹魚翻身後依然是條鹹魚以歌唱與歌曲創作為主!",
  6. "img": "https://i.imgur.com/1Oahh38.jpg",
  7. "images": ["https://i.imgur.com/1Oahh38.jpg"],
  8. "style": ["可愛"],
  9. "tags": ["#FS鹹魚", "#魚塭", "#TWVtuber", "#台灣", "#台湾", "#VirtualYouTuber", "#虛擬YouTuber", "#Vtuber"],
  10. "contact": "",
  11. "demand": ["角色曝光", "聲優配音", "承接業配"],
  12. "follow": [
  13. {
  14. "channel": "facebook",
  15. "link": 'https://www.facebook.com/F.S.XianYu/',
  16. "img": "https://i.imgur.com/HtfL33q.png"
  17. },
  18. {
  19. "channel": "Youtube",
  20. "link": "https://www.youtube.com/watch?v=AcE1edvJ9g0",
  21. "img": "https://i.imgur.com/c4VdjRJ.png"
  22. },
  23. {
  24. "channel": "twitter",
  25. "link": 'https://twitter.com/FS_xianyu',
  26. "img": "https://i.imgur.com/4VKBo9w.png"
  27. },
  28. {
  29. "channel": "website",
  30. "link": "https://marshmallow-qa.com/fs_xianyu",
  31. "img": "https://i.imgur.com/8nmvSdj.png"
  32. },
  33. {
  34. "channel": "twitch",
  35. "link": 'https://www.facebook.com/groups/590614894737063/?hoisted_section_header_type=recently_seen&multi_permalinks=1253077595157453',
  36. "img": "https://i.imgur.com/FjIaiz9.png"
  37. },
  38. ],
  39. "mp4": null
  40. },
  41. {
  42. "id": "1",
  43. "name": "小烏龜-Yui",
  44. "intro": "日常♡搞怪♡美食小烏龜 姓名:Yu i 生日:2020/08/07 個性:愛玩、愛吃、愛搞怪 擅長:搗亂、畫圖 品種:烤饅頭 龜稀有值:100%",
  45. "img": "https://i.imgur.com/iHtiCpP.jpg",
  46. "images": ["https://i.imgur.com/iHtiCpP.jpg"],
  47. "style": ["可愛"],
  48. "tags": ["#小烏龜yui"],
  49. "contact": "",
  50. "demand": ["角色曝光", "聲優配音", "承接業配"],
  51. "follow": [
  52. {
  53. "channel": "facebook",
  54. "link": 'https://www.facebook.com/littleturtleyui/',
  55. "img": "https://i.imgur.com/HtfL33q.png"
  56. },
  57. ],
  58. "mp4": null
  59. },
  60. {
  61. "id": "2",
  62. "name": "柚餓幽窮",
  63. "intro": "哈囉大家好!我們是魔法少女⭐幽可⭐&狗狗🎀柚子🎀影片以遊戲、聊天、直播精華、連動…等為主每週二 四晚上六點出片❤假日直播 偶爾有突發⚠️_歡迎私訊合作邀約(˶‾᷄ ⁻̫ ‾᷅˵)希望能和大家一起玩💕_",
  64. "img": "https://i.imgur.com/g00i7Ji.jpg",
  65. "images": ["https://i.imgur.com/NKxoaoi.png", "https://i.imgur.com/pR2IjVn.png"],
  66. "style": ["奶兇"],
  67. "tags": [],
  68. "contact": "",
  69. "demand": ["角色曝光", "聲優配音", "承接業配"],
  70. "follow": [
  71. {
  72. "channel": "facebook",
  73. "link": 'https://www.facebook.com/profile.php?id=100070148449631',
  74. "img": "https://i.imgur.com/HtfL33q.png"
  75. },
  76. {
  77. "channel": "youtube",
  78. "link": 'https://www.youtube.com/channel/UC9ymconZOuIj-cuWpEUyjUg',
  79. "img": "https://i.imgur.com/c4VdjRJ.png"
  80. },
  81. {
  82. "channel": "website",
  83. "link": 'https://discord.gg/4RRQHYfXww',
  84. "img": "https://i.imgur.com/Vbjnelb.png"
  85. },
  86. ],
  87. "mp4": null
  88. },
  89. {
  90. "id": "3",
  91. "name": "花御いしき",
  92. "intro": "吾是住在台灣的花神,如果名子不好記可以叫我花花就好! 願望是看見你們如花朵般燦爛的微笑,私は台湾に住む花の神様です。名前がわかりにくい場合は、華華と呼んでください!,願いが花のように明るくて、あなたの笑顔を作ることです!",
  93. "img": "https://i.imgur.com/e0Nl0FW.png",
  94. "images": ["https://i.imgur.com/e0Nl0FW.png"],
  95. "style": ["溫柔可愛", "人格分裂", "配音系"],
  96. "tags": ["#擴散希望", "#男vtuber", " #虛擬youtuber", "#新人VTuber"],
  97. "contact": "",
  98. "demand": ["角色曝光", "聲優配音", "承接業配"],
  99. "follow": [
  100. {
  101. "channel": "facebook",
  102. "link": 'https://www.facebook.com/groups/590614894737063/?hoisted_section_header_type=recently_seen&multi_permalinks=1253077595157453',
  103. "img": "https://i.imgur.com/HtfL33q.png"
  104. },
  105. {
  106. "channel": "Youtube",
  107. "link": 'https://www.youtube.com/channel/UCtjosoymWqb5YtyL5BIqRlg',
  108. "img": "https://i.imgur.com/c4VdjRJ.png"
  109. },
  110. {
  111. "channel": "twitter",
  112. "link": 'https://twitter.com/hanaoishiki',
  113. "img": "https://i.imgur.com/4VKBo9w.png"
  114. },
  115. {
  116. "channel": "website",
  117. "link": 'https://marshmallow-qa.com/hanaoishiki',
  118. "img": "https://i.imgur.com/8nmvSdj.png"
  119. },
  120. {
  121. "channel": "discord",
  122. "link": 'https://discord.gg/Ey3rNJ75UZ',
  123. "img": "https://i.imgur.com/Vbjnelb.png"
  124. }
  125. ],
  126. "mp4": "https://www.mboxdrive.com/%E8%81%B2%E9%9F%B3%E7%9B%92%E5%AD%901%20-%20ishiki%20hanao.mp4"
  127. },
  128. {
  129. "id": "4",
  130. "name": "Ikusen(小千)",
  131. "intro": "我是來自台灣的Vtuber(台V),Ikusen(小千)!💕 最喜歡跟【MOMOMO團】的夥伴一起直播了!🐑",
  132. "img": "https://i.imgur.com/GXHDTcd.png",
  133. "images": ["https://i.imgur.com/GXHDTcd.png"],
  134. "style": ["御姊"],
  135. "tags": ["#台灣Vtuber", "#いくせん", "#VTuber ", "#TWvtuber", "#Ikusen", "#小千", "#虛擬Youtuber"],
  136. "contact": "",
  137. "demand": ["角色曝光", "聲優配音", "承接業配"],
  138. "follow": [
  139. {
  140. "channel": "facebook",
  141. "link": 'https://www.facebook.com/ikusen.vtube…',
  142. "img": "https://i.imgur.com/HtfL33q.png"
  143. },
  144. {
  145. "channel": "Youtube",
  146. "link": 'https://www.youtube.com/channel/UCKazkVudNQs8ZhwfXj_RNPw',
  147. "img": "https://i.imgur.com/c4VdjRJ.png"
  148. },
  149. {
  150. "channel": "twitter",
  151. "link": 'https://twitter.com/Ikusen_',
  152. "img": "https://i.imgur.com/4VKBo9w.png"
  153. },
  154. ],
  155. "mp4": null
  156. },
  157. {
  158. "id": "5",
  159. "name": "迷途小喵",
  160. "intro": "原本在月球上生活得好好的,結果因為‘假面騎士孝子砸月’行為被甩飛到了地球(台灣),之後發現地球上的高等生物是人類不是兔子,並且學習融入人類的社會中,途中喜歡上了繪師們,所以決定成立漢化組,來無償協助繪師們,夢想是成為繪師們的小天使,但也許是因為漢化過於疲勞,不幸追撞了黑色的高級車。對為了保護組員而擔下全部責任的組長,車主——暴力團員谷岡所提出的和解條件是…成為VTB",
  161. "img": "https://i.imgur.com/YnSPyv7.jpg",
  162. "images": ["https://i.imgur.com/YnSPyv7.jpg"],
  163. "style": ["御姊", "多聲線"],
  164. "tags": ["#台V", "#いくせん", "#VTuber ", "#TWvtuber"],
  165. "contact": "",
  166. "demand": ["角色曝光", "聲優配音", "承接業配"],
  167. "follow": [
  168. {
  169. "channel": "Youtube",
  170. "link": 'https://www.youtube.com/channel/UCWtYRC3kmgSUQcWqWFqXvJA/featured',
  171. "img": "https://i.imgur.com/c4VdjRJ.png"
  172. },
  173. {
  174. "channel": "twitch",
  175. "link": 'https://www.twitch.tv/straynyan',
  176. "img": "https://i.imgur.com/FjIaiz9.png"
  177. },
  178. ],
  179. "mp4": null
  180. },
  181. {
  182. "id": "6",
  183. "name": "天晴Haruru🐧",
  184. "intro": "我是養著可愛小企鵝的天晴Haruru🐧 喜歡電競、吉他、雜談、動漫、運動、程式設計、區塊鏈還有許多不同的領域 希望可以跟大家一起開心的遊戲和談天",
  185. "img": "https://i.imgur.com/9autFIy.jpg",
  186. "images": ["https://i.imgur.com/9autFIy.jpg"],
  187. "style": ["奶兇"],
  188. "tags": ["#天晴Haruru", "#VTuber", "#新人VTuber", "#TWvtuber", "#企鵝"],
  189. "contact": "",
  190. "demand": ["角色曝光", "聲優配音", "承接業配"],
  191. "follow": [
  192. {
  193. "channel": "facebook",
  194. "link": 'https://www.facebook.com/TCHaruru',
  195. "img": "https://i.imgur.com/HtfL33q.png"
  196. },
  197. {
  198. "channel": "Youtube",
  199. "link": 'https://youtu.be/MYcs6bbxwWI',
  200. "img": "https://i.imgur.com/c4VdjRJ.png"
  201. },
  202. {
  203. "channel": "twitter",
  204. "link": 'https://twitter.com/TCHaruru72',
  205. "img": "https://i.imgur.com/4VKBo9w.png"
  206. },
  207. {
  208. "channel": "website",
  209. "link": ' https://marshmallow-qa.com/tcharuru72',
  210. "img": "https://i.imgur.com/8nmvSdj.png"
  211. },
  212. {
  213. "channel": "discord",
  214. "link": 'https://discord.gg/8eRWytUXtf',
  215. "img": "https://i.imgur.com/Vbjnelb.png"
  216. },
  217. ],
  218. "mp4": null
  219. },
  220. {
  221. "id": "7",
  222. "name": "拉美拉 ramellae",
  223. "intro": "我是打工巫女拉美拉 Ramellae ヾ(*´∀ ˋ*)ノ一邊打掃著神社,一邊嚮往著劍與魔法的魔幻世界✨✨✨",
  224. "img": "https://i.imgur.com/0p2VzTh.jpg",
  225. "images": ["https://i.imgur.com/0p2VzTh.jpg"],
  226. "style": ["御姊", "多聲線"],
  227. "tags": ["#台V", "#いくせん", "#VTuber ", "#TWvtuber"],
  228. "contact": "",
  229. "demand": ["角色曝光", "聲優配音", "承接業配"],
  230. "follow": [
  231. {
  232. "channel": "facebook",
  233. "link": 'https://pse.is/3kp3y3',
  234. "img": "https://i.imgur.com/HtfL33q.png"
  235. },
  236. {
  237. "channel": "Youtube",
  238. "link": 'https://www.youtube.com/channel/UCEwfcA9-y1hcQpVMt9Xge_w',
  239. "img": "https://i.imgur.com/c4VdjRJ.png"
  240. },
  241. {
  242. "channel": "twitter",
  243. "link": 'https://pse.is/3layv4',
  244. "img": "https://i.imgur.com/FjIaiz9.png"
  245. },
  246. ],
  247. "mp4": null
  248. },
  249. {
  250. "id": "8",
  251. "name": "蕉バナ Bana🍌",
  252. "intro": "我是打工巫女拉美拉 Ramellae ヾ(*´∀ ˋ*)ノ一邊打掃著神社,一邊嚮往著劍與魔法的魔幻世界✨✨✨",
  253. "img": "https://i.imgur.com/4NyjGaS.jpg",
  254. "images": ["https://i.imgur.com/4NyjGaS.jpg"],
  255. "style": [],
  256. "tags": [],
  257. "contact": "",
  258. "demand": ["角色曝光", "聲優配音", "承接業配"],
  259. "follow": [
  260. {
  261. "channel": "twitch",
  262. "link": 'https://www.twitch.tv/jia0bana',
  263. "img": "https://i.imgur.com/HtfL33q.png"
  264. },
  265. {
  266. "channel": "Youtube",
  267. "link": 'https://www.youtube.com/channel/UCxyTFoXTDyo16R2zBEMPZrw/featured',
  268. "img": "https://i.imgur.com/c4VdjRJ.png"
  269. },
  270. {
  271. "channel": "twitter",
  272. "link": 'https://twitter.com/Jia0bana',
  273. "img": "https://i.imgur.com/FjIaiz9.png"
  274. },
  275. ],
  276. "mp4": null
  277. },
  278. {
  279. "id": "9",
  280. "name": "王顧採",
  281. "intro": "藝輪點燈旗下所屬 Vtuber,平時的職業是六埕順揚宮主任委員,因為整天在休息室看股票泡茶,被太太說怎麼不去做點正事,所以決定中年轉職為偶像實習生的叔叔系藝人。預計會直播的方向包括了股市投資、民俗文化、新聞與訪談,如果有興趣的還請大家多多追蹤訂閱支持!",
  282. "img": "https://i.imgur.com/jqK2SEM.jpg",
  283. "images": ["https://i.imgur.com/jqK2SEM.jpg"],
  284. "style": [],
  285. "tags": [],
  286. "contact": "",
  287. "demand": ["角色曝光", "聲優配音", "承接業配"],
  288. "follow": [
  289. {
  290. "channel": "twitch",
  291. "link": 'https://www.twitch.tv/jia0bana',
  292. "img": "https://i.imgur.com/HtfL33q.png"
  293. },
  294. {
  295. "channel": "Youtube",
  296. "link": 'https://www.youtube.com/channel/UCDK61SWPrZm3PDj8RohAM-w',
  297. "img": "https://i.imgur.com/c4VdjRJ.png"
  298. },
  299. {
  300. "channel": "twitter",
  301. "link": 'https://twitter.com/chiveswang_llt5',
  302. "img": "https://i.imgur.com/FjIaiz9.png"
  303. },
  304. {
  305. "channel": "ig",
  306. "link": 'https://www.instagram.com/chiveswang.llt5/',
  307. "img": "https://i.imgur.com/MAObTJv.png"
  308. },
  309. ],
  310. "mp4": null
  311. },
  312. ];
  313. function getVtuber() {
  314. if(window.location.pathname.match('vtuber')) {
  315. console.log('vtuber list');
  316. let result = [...data];
  317. console.log(result);
  318. let str = '';
  319. for(let i = 0; i < result.length; i++){
  320. let style = '';
  321. for(let j = 0; j < result[i].style.length; j++){
  322. style += `<span class="vt-style">${result[i].style[j]}</span>`;
  323. console.log(result[i].style.length);
  324. }
  325. str += `<div class="col-6 col-sm-4 col-md-3">
  326. <div class="card" style="width: 100%;">
  327. <div class="vt-ribbon"><p>Vtuber</p></div>
  328. <div class="card-img-fr" style="background-image:url(${result[i].img})"></div>
  329. <div class="card-body">
  330. <h5 class="card-title">${result[i].name}</h5>
  331. ${style}
  332. <button class="card-link" data-toggle="modal" data-target="#more1Modal" data-id="${result[i].id}" >查看更多></button>
  333. </div>
  334. </div>
  335. </div>`;
  336. }
  337. $('.vt-list .vt-content').html(str);
  338. $('.vt-content .card-link').click(function(){
  339. const music = document.querySelector('.modal-body-sample audio');
  340. const progressBar = document.querySelector('#progress-bar');
  341. const progressZone = document.querySelector('.music-progress');
  342. let selected = result.filter(item =>
  343. item.id == $(this).data('id')
  344. )[0];
  345. console.log(selected);
  346. $('#more1Modal .modal-title').text(selected.name);
  347. $('#more1Modal p').text(selected.intro);
  348. let slideStr = '';
  349. for(let i = 0; i < selected.images.length; i++){
  350. if(i==0) {
  351. slideStr += `<div class="item active modal-imgfr">
  352. <div class="modal-slide-item" alt="..." style="background-image:url(${selected.images[i]})"></div>
  353. </div>`;
  354. } else {
  355. slideStr += `<div class="item modal-imgfr">
  356. <div class="modal-slide-item" alt="..." style="background-image:url(${selected.images[i]})"></div>
  357. </div>`;
  358. }
  359. }
  360. $('#more1Modal .carousel-inner').html(slideStr);
  361. let str = '';
  362. for(let i = 0; i < selected.follow.length; i++){
  363. str += `<a href="${selected.follow[i].link}"><img src="${selected.follow[i].img}" alt="${selected.follow[i].channel}" width="32px" height="32px"></a>`
  364. }
  365. $('#more1Modal .footer-socials').html(str);
  366. if(selected.mp4 == null) {
  367. $('.modal-body-sample').css('display', 'none');
  368. } else {
  369. $('.modal-body-sample audio').attr('src', selected.mp4);
  370. }
  371. let hashtagStr = "";
  372. for(let i = 0; i < selected.tags.length; i++){
  373. hashtagStr+= `<span class="hashtag-pill">${selected.tags[i]}</span>`;
  374. };
  375. let demandStr = "";
  376. for(let i = 0; i < selected.demand.length; i++){
  377. demandStr+= `<span class="demand-item">${selected.demand[i]}</span>`;
  378. };
  379. $('#more1Modal .modal-hashtag').html(hashtagStr);
  380. $('#more1Modal .modal-body-demandArr').html(demandStr);
  381. let isPlaying = false;
  382. $('.modal-body-toggleplay').click(function(){
  383. //isPlaying? pauseMusic(music) : playMusic(music)
  384. if(isPlaying) {
  385. music.pause();
  386. $('.modal-body-toggleplay').attr("src", "https://i.imgur.com/gYst9TQ.png");
  387. isPlaying = false;
  388. } else {
  389. music.play();
  390. $('.modal-body-toggleplay').attr("src", "https://i.imgur.com/f5PWQUb.png");
  391. isPlaying = true;
  392. }
  393. console.log(isPlaying);
  394. });
  395. $('[data-dismiss="modal"]').click(function() {
  396. music.pause();
  397. $('.modal-body-toggleplay').attr("src", "https://i.imgur.com/gYst9TQ.png");
  398. isPlaying = false;
  399. });
  400. music.addEventListener('timeupdate', updateProgress);
  401. progressZone.addEventListener('click', setProgress);
  402. })
  403. }
  404. }
  405. getVtuber();
  406. const updateProgress = (e) => {
  407. const music = document.querySelector('.modal-body-sample audio');
  408. const progressBar = document.querySelector('#progress-bar');
  409. const progressZone = document.querySelector('.music-progress');
  410. const {
  411. duration,
  412. currentTime
  413. } = e.srcElement;
  414. const progressPercent = (currentTime / duration) * 100
  415. progressBar.style.width = `${progressPercent}%`
  416. if(progressPercent == 100) {
  417. music.pause();
  418. $('.modal-body-toggleplay').attr("src", "https://i.imgur.com/gYst9TQ.png");
  419. isPlaying = false;
  420. console.log('test');
  421. }
  422. }
  423. function setProgress(e) {
  424. const music = document.querySelector('.modal-body-sample audio');
  425. const width = this.clientWidth;
  426. const setPoint = e.offsetX;
  427. const duration = music.duration;
  428. music.currentTime = (setPoint / width) * duration;
  429. }