From 79f264d4a36a6072b5c92965b82c18f7a8bea170 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B4=9B=E5=A4=A9=E4=BE=9D?= Date: Tue, 21 Jan 2025 20:55:11 +0000 Subject: [PATCH] add: site data --- .github/workflows/ci.yaml | 46 ++-- data/home.yaml | 17 ++ data/inscription/faq.yaml | 90 +++++++ html/home.html | 70 ++++++ html/inscription/faq.html | 120 ++++++++++ html/inscription/profile.html | 221 ++++++++++++++++++ images/bg.jpg | 3 + images/icon/bx-chevron-right.svg | 1 + images/icon/bx-envelope.svg | 4 + images/icon/bx-globe.svg | 4 + images/icon/bx-link-alt.svg | 5 + images/icon/bx-wallet-alt.svg | 4 + images/profile-avatar.webp | 3 + images/sq1.png | 3 + images/sq2.png | 3 + images/sq3.png | 3 + images/sq4.png | 3 + images/sq5.png | 3 + images/sq6.png | 3 + .../assets/VOCALOID_CHINA_ART_COLLECTIONS.pdf | 3 + public/assets/style.css | 134 +++++++++++ public/favicon.ico | Bin 0 -> 16958 bytes 22 files changed, 719 insertions(+), 24 deletions(-) create mode 100644 data/home.yaml create mode 100644 data/inscription/faq.yaml create mode 100644 html/home.html create mode 100644 html/inscription/faq.html create mode 100644 html/inscription/profile.html create mode 100644 images/bg.jpg create mode 100644 images/icon/bx-chevron-right.svg create mode 100644 images/icon/bx-envelope.svg create mode 100644 images/icon/bx-globe.svg create mode 100644 images/icon/bx-link-alt.svg create mode 100644 images/icon/bx-wallet-alt.svg create mode 100644 images/profile-avatar.webp create mode 100644 images/sq1.png create mode 100644 images/sq2.png create mode 100644 images/sq3.png create mode 100644 images/sq4.png create mode 100644 images/sq5.png create mode 100644 images/sq6.png create mode 100644 public/assets/VOCALOID_CHINA_ART_COLLECTIONS.pdf create mode 100644 public/assets/style.css create mode 100644 public/favicon.ico diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 3bb8b7c..4f0e594 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -3,32 +3,30 @@ on: [push, pull_request, workflow_dispatch] name: CI jobs: deploy: - name: Deploy + name: CI runs-on: ubuntu-latest env: - DEPLOY_SERVER: copy.lty.name + GIT_SERVER: devops.lty.name + DEPLOY_USER: web-deploy + DEPLOY_SERVER: lty.name DEPLOY_SERVER_KEY: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBKn1tARbrf+klrF31iN1Q0otmL1AvDDI87kC7HLo5ix + DEPLOY_SOURCE: dist DEPLOY_TARGET: homepage steps: - - uses: actions/checkout@v4 - with: - persist-credentials: true - lfs: true - # - uses: actions/setup-python@v5 - # with: - # python-version: '3.12' - # - name: Install dependencies & Build - # run: | - # pip install pdm==2.20.1 - # pdm install - # pdm start - # - if: github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' - # name: Deploy to the web server - # run: | - # mkdir -p "${HOME}/.ssh" - # echo "${DEPLOY_SSH_KEY}" | base64 -d > "${HOME}/.ssh/id_ed25519" - # chmod 600 "${HOME}/.ssh/id_ed25519" - # echo "${DEPLOY_SERVER} ${DEPLOY_SERVER_KEY}" > "${HOME}/.ssh/known_hosts" - # rsync -avz --delete ./dist/ "${DEPLOY_TARGET}:~/${DEPLOY_TARGET}/" - # env: - # DEPLOY_SSH_KEY: ${{ secrets.DEPLOY_SSH_KEY }} + - name: build + run: | + git clone https://${{ github.token }}@${{ env.GIT_SERVER }}/${{ github.repository }} $(pwd) + git lfs install + git lfs pull + pip install --break-system-package pdm==2.20.1 + pdm config check_update false + pdm install + pdm start + - name: deploy + if: github.ref == 'refs/heads/main' || github.event_name == 'workflow_dispatch' + run: | + apt update && apt install -y rsync + mkdir -p ~/.ssh && touch ~/.ssh/id_ed25519 && chmod 600 ~/.ssh/id_ed25519 + echo ${{ secrets.DEPLOY_SSH_KEY }} | base64 -d > ~/.ssh/id_ed25519 + echo ${{ env.DEPLOY_SERVER }} ${{ env.DEPLOY_SERVER_KEY }} > ~/.ssh/known_hosts + rsync -avz --delete ./${{ env.DEPLOY_SOURCE || 'none' }}/ ${{ env.DEPLOY_USER }}@${{ env.DEPLOY_SERVER }}:web/${{ env.DEPLOY_TARGET || 'none' }}/ diff --git a/data/home.yaml b/data/home.yaml new file mode 100644 index 0000000..2178183 --- /dev/null +++ b/data/home.yaml @@ -0,0 +1,17 @@ +title: Tianyi CodeLab +headline: Welcome to Tianyi CodeLab +links: + - text: AI 聊天室
ChatAI + link: https://ai.lty.name/ + - text: 云音乐
Music + link: https://music.lty.name/ + - text: 资源下载
Download + link: https://dl.lty.name/ + - text: 开源中心
DevOps + link: https://devops.lty.name/ + - text: 链上镌刻
Inscription + link: /inscription/profile +footer: | + © 2025 Tianyi CodeLab 在 CC BY-NC-SA 4.0 协议下提供 | 电子邮箱:me@lty.name +
+ 本站不面向欧盟用户提供服务。根据相关法律法规要求,我们可能收集您的 IP 地址和浏览器信息。「Vsinger」及「洛天依」是上海禾念科技有限公司的注册商标。图片按原利用规约提供,来源信息如下: 背景图片 101300012 (pixiv) by 菊花猹, 102153120 (pixiv) by 天姫神織, 101019411 (pixiv) by Ben_SY, 75554096 (pixiv) by TID, 「无题—创作欲」曲绘 by Cyarhy from twitter @cyarhy, 洛天依AI模型,洛天依公式服 by 上海禾念。 diff --git a/data/inscription/faq.yaml b/data/inscription/faq.yaml new file mode 100644 index 0000000..f3d5f0f --- /dev/null +++ b/data/inscription/faq.yaml @@ -0,0 +1,90 @@ +faq: + - question: 反诈提示 + alert: true + answer: | + 警告:lty.name 不是「洛天依」官方创建的网站,与「洛天依」的版权持有者「上海禾念」无关。本站系「洛天依」爱好者创建的公益性质网站,旨在使用区块链及其他去中心化网络技术,保存对「洛天依」重要的文本资料和其他信息。 + + lty.name 不会以任何方式、任何名义(包括但不限于保证金、手续费、初始费、友情赞助、自愿捐赠、成本价、会员费等),要求您支出任何形式的货币或财产(无论是法定货币还是加密货币)。请务必提高警惕,防范诈骗。 + + luotianyi.eth0x66CCffDE4E5941aD0593adE6e6Fe23e8CE1550C6 是专用于「」的地址。请勿向该地址转入任何形式的 ETH 链上货币,任何要求您这样做的都是诈骗。由于加密货币的匿名性,我们无法追踪和返还您的资产。 + + + - question: 什么是「链上镌刻」和区块链刻字? + answer: | + 简单的说,区块链刻字(Blockchain Inscription)就是把文字信息保存在区块链上。这种技术有两种特性: + + 永久性:由于区块链具有不可篡改的特性,镌刻的内容一旦写入,就会永久存在于区块链上,并有由每一个「区块链节点」保存。 + + 公开性:区块链的节点、数据、记录都是公开的,任何人都能轻松地访问、查看这些信息。 + + 「链上镌刻 — 永不停止的歌声」是 Tianyi CodeLab 提供的「区块链刻字」服务名称。正如项目名称「永不停止的歌声」所寓意的一样,我们希望将与洛天依有关的点点滴滴永久保存在区块链上,让这些信息永远不消失。 + + + - question: Tianyi CodeLab 使用什么技术进行「链上镌刻」? + answer: | + Tianyi CodeLab 在「以太坊 (Ethereum)」链上进行区块链刻字(Blockchain Inscription)。 + + 与其他商业区块链刻字项目不同的是,Tianyi CodeLab 使用 ENS 记录 进行「链上镌刻」,而非使用「交易记录」。 + + 相比其他技术,使用 ENS 记录成本更高,但是在 Etherscan 上可以直接解码为文字,而不需要手动计算编解码,因此更加直观、简便。 + + + - question: 区块链刻字成本如何?Tianyi CodeLab 进行「链上镌刻」有什么收费? + answer: | + 首先明确的是,Tianyi CodeLab 不会以任何方式、任何名义要求您支付任何形式的费用。区块链市场参与者鱼龙混杂,请务必提高警惕,防范诈骗。 + + 区块链刻字成本较高,一般在 10 到 30 美元之间。虽然「以太坊」本身对「区块链刻字」本身不收费,但是由于向区块链写入数据需要支付「燃气费(Gas Fee)」,因此需要一定的成本支出。 + + 在 Tianyi CodeLab,我们不会向用户收取任何费用。「链上镌刻」的成本由 Tianyi CodeLab 自行承担。若您的「链上镌刻」请求不符合要求,我们会拒绝或建议您修改,且永远不会因此向您收取任何费用。 + + + - question: 「链上镌刻」可以镌刻哪些内容? + answer: | + 我们鼓励您镌刻任何与「洛天依」有关的内容。包括但不限于: + + + + 但是,我们也对内容存在一定的限制,以下内容将不会被接受: + + + 由于区块链刻字成本高昂,我们不建议您镌刻大段内容。文本长度应以 100~250 字节为宜(采用 UTF-8 编码)。您可以使用一下规则进行简单但不准确的估算: + + + 由于技术限制,无法镌刻图片、视频、音频等非文本内容。 + + + - question: 如何使用 Tainyi CodeLab「链上镌刻」服务? + answer: | + 请将您想要镌刻的内容发送至 me@lty.name,并在邮件中包含以下内容: + + + + 您的镌刻请求将会被我们人工审核。根据上述的内容策略和当前的 Gas Fee 价格,我们可能会建议您修改或删减内容,或拒绝您的请求。 + + 一旦您的「链上镌刻」请求审核通过后,将择日安排「链上镌刻」操作。目前操作亦由人工完成,完成后您将收到包含本次「链上镌刻」详细信息的通知。 + + + - question: 「链上镌刻」的内容是公开的吗?我可以修改或删除「链上镌刻」内容吗? + answer: | + 由于区块链的透明性,任何写入区块链的数据都是完全公开、可被任何人访问和查看的,自然也包括「链上镌刻」的内容。您可以在 ENS 记录Etherscan 上查看 Tainyi CodeLab 过往的「链上镌刻」历史。 + + 请注意,由于区块链的特性,「链上镌刻」内容一旦写入,就无法修改或删除。我们建议您在镌刻前仔细检查内容,确保没有错误或不当内容。 diff --git a/html/home.html b/html/home.html new file mode 100644 index 0000000..b35ed6a --- /dev/null +++ b/html/home.html @@ -0,0 +1,70 @@ + + + + + + + + + + {{ title }} + + + + +
+ +
+ + diff --git a/html/inscription/faq.html b/html/inscription/faq.html new file mode 100644 index 0000000..cd9ed3c --- /dev/null +++ b/html/inscription/faq.html @@ -0,0 +1,120 @@ + + + + + + 「永不停止的歌声」— 链上镌刻 | Luo Tianyi CodeLab + + + +
+ + {% for item in faq %} +
+
+ {{ item.question }} + Expand +
+
+ {{ item.answer | replace('\n\n', '

') | safe }} +
+
+ {% endfor %} + 返回首页 +
+ + + + diff --git a/html/inscription/profile.html b/html/inscription/profile.html new file mode 100644 index 0000000..2dca5c8 --- /dev/null +++ b/html/inscription/profile.html @@ -0,0 +1,221 @@ + + + + + + + + + Profile on Blockchain | Luo Tianyi CodeLab + + + +
+
+ Profile Avatar +
+

Luo Tianyi

+ luotianyi.eth +
+
+
+

华风夏韵·洛水天依 | 世界首位中文 VOCALOID 虚拟歌手,生日 2012 年 7 月 12 日,代表色 66CCFF。

+

性格内向安静,感性细腻。拥有「共鸣」的特殊能力,能够感受并且读出人类所藏的「心中的歌声」。

+
+
+
+ + 位置图标 + 位置 + + + 瓦纳海姆 + +
+
+ + 邮箱图标 + 电子邮箱 + + + me@lty.me + +
+
+ + 链接图标 + 网页 + + + lty.name + +
+
+ + 链接图标 + 网页 + + + luotianyi.eth.limo + +
+ +
+ + +
+ + diff --git a/images/bg.jpg b/images/bg.jpg new file mode 100644 index 0000000..b872be4 --- /dev/null +++ b/images/bg.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b48f30d953e1a1e9bf2b69635c2cfa99799410077265bce4db538e2ab36f265 +size 899443 diff --git a/images/icon/bx-chevron-right.svg b/images/icon/bx-chevron-right.svg new file mode 100644 index 0000000..f5ee198 --- /dev/null +++ b/images/icon/bx-chevron-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/icon/bx-envelope.svg b/images/icon/bx-envelope.svg new file mode 100644 index 0000000..75d3638 --- /dev/null +++ b/images/icon/bx-envelope.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/images/icon/bx-globe.svg b/images/icon/bx-globe.svg new file mode 100644 index 0000000..ccfdc9c --- /dev/null +++ b/images/icon/bx-globe.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/images/icon/bx-link-alt.svg b/images/icon/bx-link-alt.svg new file mode 100644 index 0000000..d32bce2 --- /dev/null +++ b/images/icon/bx-link-alt.svg @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/images/icon/bx-wallet-alt.svg b/images/icon/bx-wallet-alt.svg new file mode 100644 index 0000000..ee7e5c5 --- /dev/null +++ b/images/icon/bx-wallet-alt.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/images/profile-avatar.webp b/images/profile-avatar.webp new file mode 100644 index 0000000..4598219 --- /dev/null +++ b/images/profile-avatar.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bd2c6ba886da9fdeea258e0eaa504ffbe58c7426221532b7a5317be3ab5735f +size 31604 diff --git a/images/sq1.png b/images/sq1.png new file mode 100644 index 0000000..cfc465e --- /dev/null +++ b/images/sq1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23167b43ca1ea833e20ff2d0c31d090b64e3168664879149d2b53fcec05a84a7 +size 5646306 diff --git a/images/sq2.png b/images/sq2.png new file mode 100644 index 0000000..5f38afa --- /dev/null +++ b/images/sq2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23c818d73cf092b7eabbc486db4b9521c4c3bc407508799a68fe67a5f38a0ce5 +size 739854 diff --git a/images/sq3.png b/images/sq3.png new file mode 100644 index 0000000..d9b96d8 --- /dev/null +++ b/images/sq3.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c7e5557b666f17cbab24bf969d03479cf001546dd1e58221840bb9f0f19f56f +size 4974505 diff --git a/images/sq4.png b/images/sq4.png new file mode 100644 index 0000000..6f61fa3 --- /dev/null +++ b/images/sq4.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8de58dd7aecefcfd9881a001535cfd92300945734dd8dbe3895dddea71865fe +size 2536318 diff --git a/images/sq5.png b/images/sq5.png new file mode 100644 index 0000000..05b9fbf --- /dev/null +++ b/images/sq5.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebbd586045c88668b4a14f67a30c0f0a5b0111c32f91bd9b15af23c423cb1cbe +size 1141963 diff --git a/images/sq6.png b/images/sq6.png new file mode 100644 index 0000000..5f4df85 --- /dev/null +++ b/images/sq6.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5332627707d9fbf4488aa78adfa1b1ed3a3ba9e63e36f8c6cb4ae643477b0235 +size 400832 diff --git a/public/assets/VOCALOID_CHINA_ART_COLLECTIONS.pdf b/public/assets/VOCALOID_CHINA_ART_COLLECTIONS.pdf new file mode 100644 index 0000000..3b2b601 --- /dev/null +++ b/public/assets/VOCALOID_CHINA_ART_COLLECTIONS.pdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6235506ddc316b49f1d890c302f86acb5a093a697f2b750b75422957f0e44af +size 36675074 diff --git a/public/assets/style.css b/public/assets/style.css new file mode 100644 index 0000000..302ee4e --- /dev/null +++ b/public/assets/style.css @@ -0,0 +1,134 @@ +html { + min-width: 900px; +} + +body { + font-family: -apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Source Han Sans SC", Helvetica, Arial, sans-serif;; + font-size: 14px; + line-height: 1.5; + margin: 0; + background-repeat: no-repeat; + background-position: 80% top; + background-size: cover; + background-color: #071017; + min-width: 900px; +} + +code { + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; +} + +.container { + width: 840px; + margin: 0 auto; +} + +.box { + width: 840px; + margin: auto; + margin-top: 100px; + display: flex; + flex-direction: column; +} + +.box header { + min-height: 100px; + width: 100%; + align-self: center; + align-items: center; + display: flex; + flex-direction: column; + justify-content: center; + align-items: flex-start; + background-color: rgba(102, 204, 255); +} + +.box h1 { + font-size: 2em; + font-weight: 400; + margin: 0 2rem; + color: white; +} + +.square-container { + display: grid; + grid-template-columns: repeat(12, 50px); + grid-auto-rows: 50px; +} + +.square { + color: white; + font-size: 1.5em; + line-height: 1.3; + font-weight: 400; + display: flex; + justify-content: left; + align-items: flex-end; + padding: 10px; + width: 80px; + height: 80px; +} + +.square-code { + font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace; +} + +.square-multiline { + font-size: 1rem; + line-height: 1; +} + +.square-img { + background-size: cover !important; +} + +.square-blue-1 { + background-color: #1d4a89; +} + +.square-blue-2 { + background-color: #3478c6; +} + +.square-blue-3 { + background-color: #66ccff; +} +.square-container a { + line-height: 1.2; + text-decoration: none; + cursor: pointer; +} + +.square-container a.square-blue-1:hover { + background: #2794c7; + font-size: 1.2em; + transition: .2s; +} + +.square-container a.square-blue-2:hover { + background: #619ef8; + font-size: 1.2em; + transition: .2s; +} + +.square-container a.square-blue-3:hover { + background: #46a4d3; + font-size: 1.2em; + transition: .2s; +} + +footer { + font-size: .75rem; + color: #f0f0f0; + padding-top: 50px; +} + +footer a { + color: #f0f0f0; + text-decoration: none; +} + +footer a:hover { + color: #f0f0f0; + text-decoration: underline; +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..705faacf4ded37751ba334be0e5242d1fedb34db GIT binary patch literal 16958 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 literal 0 HcmV?d00001