工作台STUDIO / 李澜涛
已保存 20:33:21

作品

顺序就是首页索引的顺序,用上移 / 下移调整。点一行展开编辑,改完直接点「预览作品集」看效果。

16:9
影片列表
R2videos/2026-11-09/mw98obam-tg-2022-04-12-1335294461649741730555.mp4·29.9 MB
还没接片子:可以贴链接,也可以直接上传
还没接片子:可以贴链接,也可以直接上传
剧照
正在打包,稍等…
', ''); var jsData = 'window.__SITE_DATA__ = ' + JSON.stringify(data, null, 2) + ';\n' + (STUDIO.clean ? 'window.__NO_STUDIO__ = true;\n' : ''); var enc = new TextEncoder(); var files = [ { name: 'index.html', data: enc.encode(html) }, { name: 'data.js', data: enc.encode(jsData) }, { name: 'README.txt', data: enc.encode(buildReadme()) } ]; var chain = Promise.resolve(); Object.keys(mapping).forEach(function (id) { chain = chain.then(function () { var rec = byId[id]; if (!rec) return; return rec.blob.arrayBuffer().then(function (ab) { files.push({ name: mapping[id], data: new Uint8Array(ab) }); }); }); }); return chain.then(function () { var d = new Date(); downloadBlob(zipStore(files), 'portfolio-' + d.getFullYear() + pad(d.getMonth() + 1) + pad(d.getDate()) + '.zip'); toast('发布包已生成,共 ' + files.length + ' 个文件'); }); }).catch(function (err) { toast('打包失败:' + (err && err.message ? err.message : err)); }); } function exportBackup() { var d = new Date(); var name = 'portfolio-data-' + d.getFullYear() + pad(d.getMonth() + 1) + pad(d.getDate()) + '.json'; downloadBlob(new Blob([JSON.stringify(clone(DATA), null, 2)], { type: 'application/json' }), name); toast('内容备份已下载'); } function importBackup() { var input = document.createElement('input'); input.type = 'file'; input.accept = '.json,.js,application/json,text/javascript'; input.onchange = function () { var f = input.files && input.files[0]; if (!f) return; var fr = new FileReader(); fr.onload = function () { try { var txt = String(fr.result).trim(); var a = txt.indexOf('{'); var b = txt.lastIndexOf('}'); if (a < 0 || b < 0) throw new Error('no json'); var obj = JSON.parse(txt.slice(a, b + 1)); if (!obj || !obj.brand) { toast('这个文件不是作品集备份'); return; } DATA = obj; siteDirty = true; localStorage.setItem(STORE_KEY, JSON.stringify(DATA)); renderStudio(); toast('已导入备份'); } catch (e) { toast('导入失败:文件不是有效 JSON'); } }; fr.readAsText(f); }; input.click(); } /* ========================================================================== H. 路由与启动 ========================================================================== */ function route() { var h = location.hash || ''; if (h.indexOf('#/studio') === 0 && !window.__NO_STUDIO__) { isStudio = true; viewSite.hidden = true; viewStudio.hidden = false; document.body.classList.remove('lock'); closeSheet(); renderStudio(); window.scrollTo(0, 0); } else { if (isStudio) { isStudio = false; viewStudio.hidden = true; viewSite.hidden = false; } if (siteDirty) { renderSite(); siteDirty = false; } } } function boot() { STORAGE = loadStorage(); DATA = load(); if (DATA.brand && !DATA.brand.reel) DATA.brand.reel = { title: 'REEL', duration: '00:58', url: '' }; renderSite(); siteDirty = false; route(); window.addEventListener('hashchange', route); hydrateMedia().then(function () { if (!isStudio) renderSite(); }).catch(function () {}); } boot(); })();