├── requirements.txt
├── .gitignore
├── vercel.json
├── package.json
├── public
├── image
│ └── favicon.ico
├── assets
│ ├── svg
│ │ ├── search.svg
│ │ ├── moon.svg
│ │ └── sun.svg
│ └── data.json
├── js
│ ├── main.js
│ ├── theme.js
│ ├── context-menu.js
│ └── data-loader.js
├── css
│ ├── dark.css
│ ├── daytime.css
│ ├── context-menu.css
│ └── style.css
├── index.html
└── service-worker.js
├── .github
└── workflows
│ └── scraping.yml
├── scripts
└── scrape.py
├── README.md
└── LICENSE
/requirements.txt:
--------------------------------------------------------------------------------
1 | notion_client==2.2.1
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .env
2 | .DS_store
3 | node_modules
4 | package-lock.json
--------------------------------------------------------------------------------
/vercel.json:
--------------------------------------------------------------------------------
1 | {
2 | "cleanUrls": true,
3 | "trailingSlash": false
4 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "axios": "^1.4.0"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/public/image/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/nowscott/OldIndWebIndex/HEAD/public/image/favicon.ico
--------------------------------------------------------------------------------
/public/assets/svg/search.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/js/main.js:
--------------------------------------------------------------------------------
1 | if ('serviceWorker' in navigator) {
2 | window.addEventListener('load', () => {
3 | navigator.serviceWorker.register('/service-worker.js').then(registration => {
4 | registration.onupdatefound = () => {
5 | const installingWorker = registration.installing;
6 | installingWorker.onstatechange = () => {
7 | if (installingWorker.state === 'installed') {
8 | if (navigator.serviceWorker.controller) {
9 | // 新内容已下载,用户需要重新加载页面以获取更新
10 | if (confirm('新版本已更新,是否立即刷新页面?')) {
11 | window.location.reload();
12 | }
13 | } else {
14 | console.log('Content is now available offline!');
15 | }
16 | }
17 | };
18 | };
19 | }).catch(error => {
20 | console.log('Service Worker registration failed:', error);
21 | });
22 | });
23 | }
24 |
--------------------------------------------------------------------------------
/public/assets/svg/moon.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/css/dark.css:
--------------------------------------------------------------------------------
1 | body {
2 | background-color: #222;
3 | }
4 |
5 | .title-1 {
6 | text-decoration: underline;
7 | text-decoration-color: khaki;
8 | }
9 |
10 | h1 a {
11 | color: khaki;
12 | }
13 |
14 | .title-2 {
15 | text-decoration: underline;
16 | text-decoration-color: #eee;
17 | }
18 |
19 | h2 a {
20 | color: #eee;
21 | }
22 |
23 | .title-tags,
24 | .title-webs {
25 | color: #eee;
26 | }
27 |
28 | .search-in {
29 | color: lightgrey;
30 | background-color: rgb(0, 0, 49);
31 | }
32 |
33 | .search-btn {
34 | background-color: rgb(0, 0, 49);
35 | }
36 |
37 | .tag,
38 | #web {
39 | border: #909090 1.5px solid;
40 | }
41 |
42 | #web {
43 | color: lightgrey;
44 | background-color: rgb(0, 0, 49);
45 | }
46 |
47 | .on {
48 | background-color: lightgrey;
49 | color: darkslategrey;
50 | }
51 |
52 | .off {
53 | background-color: darkslategrey;
54 | color: lightgrey;
55 | }
56 | .footer-text{
57 | color: lightpink;
58 | }
--------------------------------------------------------------------------------
/public/css/daytime.css:
--------------------------------------------------------------------------------
1 | body {
2 | background-color: #f7f7f7;
3 | }
4 |
5 | .title-1 {
6 | text-decoration: underline;
7 | text-decoration-color: darkorange;
8 | }
9 |
10 | h1 a {
11 | color: darkorange;
12 | }
13 |
14 | .title-2 {
15 | text-decoration: underline;
16 | text-decoration-color: darkslateblue;
17 | }
18 |
19 | h2 a {
20 | color: darkslateblue;
21 | }
22 |
23 | .title-tags,
24 | .title-webs {
25 | color: darkblue;
26 | }
27 |
28 | .search-in {
29 | color: navy;
30 | background-color: lemonchiffon;
31 | }
32 |
33 | .search-btn {
34 | background-color: lemonchiffon;
35 | }
36 |
37 | .tag,
38 | #web {
39 | border: #909090 1.5px solid;
40 | }
41 |
42 | #web {
43 | color: navy;
44 | background-color: lemonchiffon;
45 | }
46 |
47 | .on {
48 | background-color: darkslategray;
49 | color: #eee;
50 | }
51 |
52 | .off {
53 | background-color: #eee;
54 | color: darkslategray;
55 | }
56 |
57 | .footer-text {
58 | color: purple;
59 | }
--------------------------------------------------------------------------------
/public/css/context-menu.css:
--------------------------------------------------------------------------------
1 | /* 右键菜单 */
2 | #customContextMenu {
3 | display: none;
4 | position: absolute;
5 | z-index: 1000;
6 | background-color: #ffffff;
7 | border: 1px solid #ddd;
8 | box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.2);
9 | border-radius: 3px;
10 | padding: 0px;
11 | width: 120px;
12 | }
13 |
14 | #customContextMenu li {
15 | padding: 8px 10px;
16 | /* 增加填充,使菜单项更易点击 */
17 | border-top: 1px solid #ddd;
18 | /* 为每个菜单项添加上边框 */
19 | }
20 |
21 | #customContextMenu li:first-child {
22 | border-top: none;
23 | /* 第一个菜单项不需要上边框 */
24 | }
25 |
26 | #customContextMenu li:last-child {
27 | border-bottom: none;
28 | /* 为最后一个菜单项不需要下边框 */
29 | }
30 |
31 | #customContextMenu ul {
32 | list-style-type: none;
33 | margin: 0;
34 | padding: 0;
35 | }
36 |
37 | #customContextMenu ul li {
38 | padding: 8px 12px;
39 | cursor: pointer;
40 | color: #333;
41 | }
42 |
43 | /* #customContextMenu ul li:hover {
44 | background-color: #f5f5f5;
45 | color: #000;
46 | } */
47 |
48 | #customContextMenu li.selected-font {
49 | box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.2);
50 | /* 添加阴影效果 */
51 | background-color: #f0f0f0;
52 | /* 可选:改变背景颜色增强视觉效果 */
53 | }
--------------------------------------------------------------------------------
/.github/workflows/scraping.yml:
--------------------------------------------------------------------------------
1 | name: update data.json
2 |
3 | on:
4 | workflow_dispatch:
5 | schedule:
6 | - cron: "0 * * * *"
7 |
8 | jobs:
9 | scrape_and_save:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - name: Checkout code
13 | uses: actions/checkout@v4
14 | - name: Set up Python
15 | uses: actions/setup-python@v5
16 | with:
17 | python-version: "3.x"
18 | - name: Install dependencies
19 | run: |
20 | python -m pip install --upgrade pip
21 | pip install -r requirements.txt
22 | - name: Run scraping script
23 | env:
24 | NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }}
25 | DATABASE_ID: ${{ secrets.DATABASE_ID }}
26 | run: |
27 | python scripts/scrape.py
28 | - name: Commit data.json
29 | run: |
30 | git diff --quiet --exit-code public/assets/data.json || (
31 | git config --global user.name "NowScott"
32 | git config --global user.email "nowscott@qq.com"
33 | git add public/assets/data.json
34 | DATE=$(TZ="Asia/Shanghai" date "+%Y-%m-%d %H:%M:%S")
35 | git commit -m "Update data.json at $DATE"
36 | git push origin main
37 | )
38 |
39 |
40 |
--------------------------------------------------------------------------------
/public/assets/svg/sun.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
10 | 网站索引
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
25 |
28 |
29 |
34 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
筛选网页
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/public/js/theme.js:
--------------------------------------------------------------------------------
1 | document.addEventListener('DOMContentLoaded', function () {
2 | var currentTime = new Date(); // 创建一个 Date 对象
3 | var currentHour = currentTime.getHours(); // 获取当前时间(小时)
4 |
5 | var dark_mode = document.getElementById('darkcss');
6 | var dark_mode_icon = document.getElementById('icon');
7 | var dark_mode_btn = document.getElementById('darkbtn');
8 |
9 | // 读取 cookie 中的模式设置
10 | var userPref = getCookie('themeMode');
11 |
12 | if (userPref) {
13 | applyTheme(userPref);
14 | } else {
15 | // 如果没有用户偏好设置,根据时间自动切换模式
16 | if (currentHour >= 22 || currentHour < 8) {
17 | applyTheme('dark');
18 | } else {
19 | applyTheme('daytime');
20 | }
21 | }
22 |
23 | dark_mode_btn.onclick = function () {
24 | var newTheme = (dark_mode_btn.className === 'daytime') ? 'dark' : 'daytime';
25 | applyTheme(newTheme);
26 | setCookie('themeMode', newTheme, 12); // 设置 cookie,有效期为 12 小时
27 | }
28 | });
29 |
30 | function applyTheme(theme) {
31 | var dark_mode = document.getElementById('darkcss');
32 | var dark_mode_icon = document.getElementById('icon');
33 | var dark_mode_btn = document.getElementById('darkbtn');
34 |
35 | if (theme === 'dark') {
36 | dark_mode.href = "/css/dark.css";
37 | dark_mode_icon.src = 'assets/svg/sun.svg';
38 | dark_mode_btn.className = 'dark';
39 | } else {
40 | dark_mode.href = "/css/daytime.css";
41 | dark_mode_icon.src = 'assets/svg/moon.svg';
42 | dark_mode_btn.className = 'daytime';
43 | }
44 | }
45 |
46 | function setCookie(name, value, hours) {
47 | var expires = "";
48 | if (hours) {
49 | var date = new Date();
50 | date.setTime(date.getTime() + (hours * 60 * 60 * 1000));
51 | expires = "; expires=" + date.toUTCString();
52 | }
53 | document.cookie = name + "=" + (value || "") + expires + "; path=/";
54 | }
55 |
56 | function getCookie(name) {
57 | var nameEQ = name + "=";
58 | var ca = document.cookie.split(';');
59 | for (var i = 0; i < ca.length; i++) {
60 | var c = ca[i];
61 | while (c.charAt(0) == ' ') c = c.substring(1, c.length);
62 | if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
63 | }
64 | return null;
65 | }
66 |
--------------------------------------------------------------------------------
/scripts/scrape.py:
--------------------------------------------------------------------------------
1 | import os
2 | import json
3 | from notion_client import Client
4 | import traceback # 引入 traceback 用于打印详细的错误信息
5 |
6 | # 本地调试时候取消注释来加载本地环境变量
7 | # from dotenv import load_dotenv
8 | # dotenv_path = '.env'
9 | # load_dotenv(dotenv_path)
10 |
11 | notion = Client(auth=os.getenv("NOTION_TOKEN"))
12 | database_id = os.getenv("DATABASE_ID")
13 |
14 | def process_data(pages):
15 | processed_data = []
16 | for item in pages['results']:
17 | properties = item['properties']
18 | name = properties['name']['title'][0]['text']['content'] if properties['name']['title'] else ''
19 | web = properties.get('web', {}).get('url', '')
20 | tags = [tag['name'] for tag in properties.get('tags', {}).get('multi_select', [])]
21 | brief_text_list = properties.get('brief', {}).get('rich_text', [])
22 | brief = brief_text_list[0].get('text', {}).get('content', '') if brief_text_list else ''
23 |
24 | # 对 state 的处理添加 None 检查
25 | state_prop = properties.get('state')
26 | if state_prop and 'select' in state_prop and state_prop['select']:
27 | state = state_prop['select'].get('name', '')
28 | else:
29 | state = ''
30 |
31 | processed_data.append({
32 | "name": name,
33 | "web": web,
34 | "tags": tags,
35 | "brief": brief,
36 | "state": state
37 | })
38 | return processed_data
39 |
40 |
41 | def fetch_database(database_id):
42 | """从Notion数据库获取所有数据,并处理"""
43 | data = []
44 | has_more = True
45 | start_cursor = None
46 | while has_more:
47 | try:
48 | response = notion.databases.query(database_id=database_id, start_cursor=start_cursor)
49 | data.extend(process_data(response))
50 | has_more = response.get('has_more', False) # type: ignore
51 | start_cursor = response.get('next_cursor') # type: ignore
52 | except Exception as e:
53 | print("Failed to query database:", e)
54 | traceback.print_exc()
55 | break # 出错时退出循环
56 | return data
57 |
58 | def main():
59 | """主函数,获取数据并保存到文件"""
60 | try:
61 | data = fetch_database(database_id)
62 | # 过滤数据
63 | filtered_data = [item for item in data if item['name'] and item['state'] == '正常']
64 | # 保存到JSON文件
65 | with open('public/assets/data.json', 'w', encoding='utf-8') as f:
66 | json.dump(filtered_data, f, ensure_ascii=False, indent=4)
67 | except Exception as e:
68 | print(f"An error occurred: {e}")
69 | traceback.print_exc()
70 |
71 | if __name__ == "__main__":
72 | main()
73 |
--------------------------------------------------------------------------------
/public/service-worker.js:
--------------------------------------------------------------------------------
1 | const CACHE_NAME = 'indwebindex-cache-v2'; // 更新缓存版本
2 | const urlsToCache = [
3 | '/',
4 | '/index.html',
5 | '/css/dark.css',
6 | '/css/context-menu.css',
7 | '/css/style.css',
8 | '/css/daytime.css',
9 | '/js/data-loader.js',
10 | '/js/theme.js',
11 | '/js/context-menu.js',
12 | '/js/main.js',
13 | '/image/favicon.ico',
14 | '/assets/svg/search.svg',
15 | '/assets/svg/sun.svg',
16 | '/assets/svg/moon.svg',
17 | '/assets/data.json',
18 | 'https://cdn.jsdelivr.net/npm/cn-fontsource-smiley-sans-oblique-regular@1.0.1/font.min.css',
19 | 'https://npm.elemecdn.com/lxgw-wenkai-webfont@1.6.0/style.css',
20 | 'https://jhlst.nowscott.top/result.css',
21 | 'https://zqfs.nowscott.top/result.css'
22 | ];
23 |
24 | self.addEventListener('install', event => {
25 | event.waitUntil(
26 | caches.open(CACHE_NAME)
27 | .then(cache => {
28 | console.log('Opened cache');
29 | return cache.addAll(urlsToCache);
30 | })
31 | );
32 | });
33 |
34 | self.addEventListener('fetch', event => {
35 | // 检查请求的来源是否为 chrome-extension 或者其他不支持的协议
36 | if (event.request.url.startsWith('chrome-extension://') ||
37 | !event.request.url.startsWith('http') ||
38 | event.request.method !== 'GET') {
39 | return; // 直接返回,不处理此请求
40 | }
41 |
42 | event.respondWith(
43 | caches.match(event.request).then(response => {
44 | if (response) {
45 | // 检查缓存版本是否过期
46 | return caches.open(CACHE_NAME).then(cache => {
47 | return fetch(event.request).then(fetchResponse => {
48 | if (fetchResponse && fetchResponse.status === 200) {
49 | cache.put(event.request, fetchResponse.clone());
50 | }
51 | return fetchResponse;
52 | }).catch(() => {
53 | console.error('Fetch failed, returning cached response', event.request.url);
54 | return response;
55 | }); // 如果网络请求失败,使用缓存
56 | });
57 | } else {
58 | return fetch(event.request).then(fetchResponse => {
59 | if (fetchResponse && fetchResponse.status === 200) {
60 | return caches.open(CACHE_NAME).then(cache => {
61 | cache.put(event.request, fetchResponse.clone());
62 | return fetchResponse;
63 | });
64 | } else {
65 | return fetchResponse;
66 | }
67 | }).catch(error => {
68 | console.error('Fetch failed for:', event.request.url, error);
69 | throw error; // 处理错误并返回
70 | });
71 | }
72 | })
73 | );
74 | });
75 |
76 | self.addEventListener('activate', event => {
77 | const cacheWhitelist = [CACHE_NAME];
78 | event.waitUntil(
79 | caches.keys().then(cacheNames => {
80 | return Promise.all(
81 | cacheNames.map(cacheName => {
82 | if (cacheWhitelist.indexOf(cacheName) === -1) {
83 | console.log('Deleting old cache:', cacheName);
84 | return caches.delete(cacheName);
85 | }
86 | })
87 | );
88 | })
89 | );
90 | });
91 |
--------------------------------------------------------------------------------
/public/css/style.css:
--------------------------------------------------------------------------------
1 | @import url('https://cdn.jsdelivr.net/npm/cn-fontsource-smiley-sans-oblique-regular@1.0.1/font.min.css');
2 | @import url('https://npm.elemecdn.com/lxgw-wenkai-webfont@1.6.0/style.css');
3 | @import url('https://jhlst.nowscott.top/result.css');
4 | @import url('https://zqfs.nowscott.top/result.css');
5 |
6 | * {
7 | margin: 0;
8 | padding: 0;
9 | }
10 |
11 | /* 字体部分 */
12 |
13 | :root {
14 | --main-font-family: 'KingHwa_OldSong';
15 | }
16 |
17 | body {
18 | user-select: none;
19 | /* 所有现代浏览器 */
20 | -webkit-user-select: none;
21 | /* Safari */
22 | -moz-user-select: none;
23 | /* Firefox */
24 | -ms-user-select: none;
25 | /* IE10+ */
26 | backdrop-filter: blur(15px);
27 | width: 98vw;
28 | height: 100vh;
29 | margin: 0 auto;
30 | font-family: var(--main-font-family);
31 | letter-spacing: 1px;
32 | text-align: center;
33 | }
34 |
35 | /* 需要黑白时专用 */
36 | /* body { filter: grayscale(100%); } */
37 |
38 | #darkbtn {
39 | border: none;
40 | background-color: transparent;
41 | margin-left: 80vw;
42 | margin-top: 2vh;
43 | }
44 |
45 | .html-container {
46 | width: 98vw;
47 | text-align: center;
48 | margin: 0 auto;
49 | position: relative;
50 | min-height: 88vh;
51 | padding-bottom: 5vh;
52 | }
53 |
54 | h1,
55 | h2 {
56 | text-align: center;
57 | font-weight: normal;
58 | font-family: var(--main-font-family);
59 | }
60 |
61 | /* 为标题设置样式 */
62 | h1 {
63 | margin: 3vh 0;
64 | }
65 |
66 | h2 {
67 | margin: 1vh 0;
68 | font-size: 1.1em;
69 | }
70 |
71 | .search-box {
72 | text-align: center;
73 | display: inline-block;
74 | padding: 1vh 0;
75 | width: 80vw;
76 | }
77 |
78 | .search-in {
79 | width: 9rem;
80 | }
81 |
82 | .search-btn {
83 | height: 34px;
84 | width: 34px;
85 | }
86 |
87 | .search-in,
88 | .search-btn {
89 | margin: 2px 1px;
90 | padding: 5px;
91 | font-size: 16px;
92 | line-height: 20px;
93 | border: 2px solid #909090;
94 | border-radius: 10px;
95 | font-family: var(--main-font-family);
96 |
97 | }
98 |
99 | .title-tags,
100 | .title-webs {
101 | text-align: center;
102 | font-size: 1em;
103 | margin: 1vh 0;
104 | }
105 |
106 | a:link,
107 | :hover {
108 | text-decoration: none;
109 | }
110 |
111 | #tags-container,
112 | #webs-container {
113 | margin: 0 8vw;
114 | padding: 1vh 0;
115 | text-align: center;
116 | }
117 |
118 | .tag,
119 | #web {
120 | display: inline-block;
121 | margin: 5px;
122 | padding: 1px 5px;
123 | line-height: 24px;
124 | border-radius: 5px;
125 | letter-spacing: 0.5px;
126 | font-size: 0.9em;
127 | font-family: var(--main-font-family);
128 | }
129 |
130 | .footer-text {
131 | position: absolute;
132 | font-size: xx-small;
133 | white-space: nowrap;
134 | bottom: 2vh;
135 | left: 50%;
136 | transform: translateX(-50%);
137 | /* text-align: center; */
138 | /* padding: 2vh 0 ; */
139 | /* font-size: x-small; */
140 | /* white-space: nowrap; */
141 | /* left: 50%; */
142 | }
--------------------------------------------------------------------------------
/public/js/context-menu.js:
--------------------------------------------------------------------------------
1 | // 字体列表
2 | const fonts = ['Smiley Sans Oblique', 'LXGW WenKai', 'Zhuque Fangsong', 'KingHwa_OldSong'];
3 | const fontnames = ['得意黑', '霞鹜文楷', '朱雀仿宋', '京華老宋体'];
4 |
5 | function populateContextMenu() {
6 | const menu = document.getElementById('customContextMenu').querySelector('ul');
7 | menu.innerHTML = ''; // 清空现有的菜单项,防止重复添加
8 |
9 | fonts.forEach((font, index) => {
10 | let li = document.createElement('li');
11 | li.textContent = fontnames[index]; // 显示中文字体名
12 | li.style.cursor = 'pointer';
13 | li.style.fontFamily = font; // 设置每个字体选项的字体样式
14 | li.onclick = () => {
15 | changeFont(font); // 调用更改字体的函数
16 | };
17 | menu.appendChild(li);
18 | });
19 | }
20 |
21 |
22 | function changeFont(font) {
23 | document.documentElement.style.setProperty('--main-font-family', `"${font}"`);
24 | setCookie('userFont', font, 7); // 更新Cookie,持续7天
25 | updateMenuSelection(font); // 更新菜单选择状态
26 | document.getElementById('customContextMenu').style.display = 'none'; // 隐藏菜单
27 | }
28 |
29 | function updateMenuSelection(selectedFont) {
30 | const items = document.querySelectorAll('#customContextMenu li');
31 | items.forEach(item => {
32 | if (item.textContent.trim() === fontnames[fonts.indexOf(selectedFont)]) { // 使用正确的友好名称进行比较
33 | item.classList.add('selected-font');
34 | } else {
35 | item.classList.remove('selected-font');
36 | }
37 | });
38 | }
39 |
40 |
41 |
42 | document.addEventListener('DOMContentLoaded', function() {
43 | populateContextMenu(); // 填充右键菜单
44 | loadFont(); // 加载用户之前选择的字体
45 | });
46 |
47 | // 处理右键菜单事件
48 | document.addEventListener('contextmenu', function (event) {
49 | event.preventDefault();
50 | var contextMenu = document.getElementById('customContextMenu');
51 | contextMenu.style.display = 'block';
52 | contextMenu.style.left = event.pageX + 'px';
53 | contextMenu.style.top = event.pageY + 'px';
54 | });
55 |
56 | // 处理点击事件,隐藏自定义的右键菜单
57 | document.addEventListener('click', function (event) {
58 | var contextMenu = document.getElementById('customContextMenu');
59 | if (event.target.offsetParent !== contextMenu) {
60 | contextMenu.style.display = 'none';
61 | }
62 | });
63 |
64 | function setCookie(name, value, days) {
65 | var expires = "";
66 | if (days) {
67 | var date = new Date();
68 | date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
69 | expires = "; expires=" + date.toUTCString();
70 | }
71 | document.cookie = name + "=" + (value || "") + expires + "; path=/";
72 | }
73 |
74 | function getCookie(name) {
75 | var nameEQ = name + "=";
76 | var ca = document.cookie.split(';');
77 | for (var i = 0; i < ca.length; i++) {
78 | var c = ca[i];
79 | while (c.charAt(0) == ' ') c = c.substring(1, c.length);
80 | if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
81 | }
82 | return null;
83 | }
84 |
85 | function loadFont() {
86 | var userFont = getCookie('userFont');
87 | if (userFont) {
88 | document.documentElement.style.setProperty('--main-font-family', userFont);
89 | updateMenuSelection(userFont); // 更新菜单选择状态
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Old Individual Web Index(网页索引旧版本)
2 |
3 | [![data update][data-update-image]][data-update-url]
4 | [![GitHub stars][stars-image]][stars-url]
5 | [![GitHub forks][forks-image]][forks-url]
6 | [![license GPL-3.0][license-image]][license-url]
7 |
8 | [![commit-count-permonth][commit-image]][commit-url]
9 | [![contributors-count][contributors-image]][contributors-url]
10 |
11 | [![Star History Chart][stars-history-image]][stars-url]
12 |
13 |
14 | ## 1.如何部署
15 |
16 | 在2024年4月9日的更新之后,部署这个项目变得更加简单。您只需要复制这个[Notion页面][notion-url]作为您自己的数据库,根据需要添加网站数据,然后fork这个仓库。
17 |
18 | 接下来,进入仓库设置,找到Actions下的Secrets and variables。在那里添加两个Repository secrets:ACCESS_TOKEN和DATABASE_ID。这些分别是从[我的集成][access-url]网站获得的密钥,以及您的Notion数据库的ID。
19 |
20 | 请注意,在获取密钥之后,您需要将您的集成连接到您的数据库,并手动运行GitHub Actions中的update data.json。这样就完成了部署。
21 |
22 | ## 2.创建的目的
23 |
24 | 很久以前,互联网初期有一个叫做黄页的网站,上面索引了许多其他网站。随着时间的推移,它逐渐演变成了搜索引擎。
25 |
26 | 然而,在搜索引擎中,当涉及到寻找特定网站时,结果往往缺乏准确性。因此,我仍然认为每个人都需要自己的黄页。
27 |
28 | 这个个人黄页将包含一系列经常使用的网站,以及添加标签和简短描述的功能,方便搜索和浏览。
29 |
30 | 最终,我决定将这个个人黄页命名为“个人网站索引”。
31 |
32 | ## 3.网站迭代
33 |
34 | 从我有这个想法到现在,这个网站经历了多次迭代,URL也变化了几次。当前并且是最终的网站是[nowscott.top](https://nowscott.top)。
35 |
36 | 起初,数据文件是直接手动输入的,每次想要更新数据内容,我都必须访问开发者接口,对数据文件进行更改,然后上传到GitHub。这让我感到非常不友好。
37 |
38 | 因此,在最新版本中,我利用Notion API将数据存储在Notion的数据库中。具体的实现细节将在下一部分解释。
39 |
40 | ## 4.如何使用Notion API
41 | (从Notion获取数据的代码未包含在此项目中。)
42 |
43 | 这个想法起源于Bilibili上一个上传者的视频,下面提供链接:
44 |
45 | [【S1E3】用Notion当数据库写一个简单的API](https://www.bilibili.com/video/BV1gF411E7pV/?share_source=copy_web&vd_source=98c7014c35363c157a4fba4929dbda77)
46 |
47 | 在这个视频中,我学习到了如何使用Notion API从Notion获取数据并在网页上显示。如果你有任何问题,可以观看视频了解更多信息。
48 |
49 | 总而言之,我利用一个叫Netlify的网站部署了一个服务。这个服务每次有人访问我部署的域名时都会运行,它从Notion获取数据并返回给前端。一旦前端接收到数据,就可以在网页上显示。
50 |
51 | 听起来很棒,对吧?然而,这个简单的过程最多需要7到8秒的时间,这与快速加载个人网站的愿景不符。因此,我在这方面做了进一步的改进。
52 |
53 | ## 5.一些优化
54 |
55 | 我无法改变Notion API的访问速度,但我可以改变获取数据的方式。如果我们想要更方便地进行修改,我们可以在一个便利的位置存储一份数据副本。在访问网站时,我们可以获取这个存储的数据,有效地解决了访问速度慢的问题。
56 |
57 | 当数据被修改时,上述便利的数据副本不会立即更新,因为它不能与Notion直接通信。为了解决这个问题,我利用GitHub Actions定期更新存储的数据。这确保了数据保持最新。
58 |
59 | ## 6.最后的说明
60 |
61 | 总之,这个项目是一个基于网络的个人网站索引,它解决了访问速度慢的问题,并确保了数据及时更新。这些优化使修改变得更加容易,并提供了更高效、无缝的用户体验。感谢您对这个项目的兴趣。
62 |
63 | 如果您对这个项目有任何问题或询问,可以通过电子邮件联系我:[nowscott@qq.com](mailto:nowscott@qq.com)
64 |
65 |
66 | [data-update-url]:https://github.com/nowscott/OldIndWebIndex/actions/workflows/scraping.yml "数据更新"
67 | [data-update-image]:https://github.com/nowscott/OldIndWebIndex/actions/workflows/scraping.yml/badge.svg
68 | [stars-url]:https://github.com/NowScott/IndWebIndex/stargazers "星标"
69 | [stars-image]: https://img.shields.io/github/stars/NowScott/IndWebIndex?label=Star
70 | [forks-url]: https://github.com/NowScott/IndWebIndex/forks "复刻"
71 | [forks-image]: https://img.shields.io/github/forks/NowScott/IndWebIndex?label=Fork
72 | [license-url]: https://opensource.org/license/gpl-3-0/ "许可证"
73 | [license-image]: https://img.shields.io/github/license/NowScott/IndWebIndex
74 |
75 | [commit-url]:https://github.com/NowScott/IndWebIndex/commits/main "提交"
76 | [commit-image]:https://img.shields.io/github/commit-activity/m/NowScott/IndWebIndex
77 | [contributors-url]:https://github.com/NowScott/IndWebIndex/graphs/contributors "贡献者"
78 | [contributors-image]:https://img.shields.io/github/contributors/NowScott/IndWebIndex
79 |
80 | [web-url]:https://www.nowscott.top "中文网页"
81 | [web-image]:https://img.shields.io/badge/%E7%BD%91%E9%A1%B5%E9%A2%84%E8%A7%88-%E4%B8%AD%E6%96%87-blue
82 | [stars-history-image]:https://api.star-history.com/svg?repos=NowScott/IndWebIndex&type=Date
83 |
84 | [notion-url]:https://nowscott.notion.site/aef09fbce63649cba8b9269374dbb641?v=36b6f2625b8e4e5faf9f68e1284bd2bc&pvs=74
85 |
86 | [access-url]:https://www.notion.so/my-integrations
--------------------------------------------------------------------------------
/public/js/data-loader.js:
--------------------------------------------------------------------------------
1 | window.onload = function () {
2 | var sources, taglist = [], onlist = [], reslist = [];
3 |
4 | function randomSort(arr) {
5 | for (let i = 0, l = arr.length; i < l; i++) {
6 | let rc = parseInt(Math.random() * l);
7 | const empty = arr[i];
8 | arr[i] = arr[rc];
9 | arr[rc] = empty;
10 | }
11 | return arr;
12 | }
13 |
14 | function unique(arr) { return Array.from(new Set(arr)); }
15 |
16 | function renderWebs(list) {
17 | for (let l in list) {
18 | var a = document.createElement('a');
19 | a.id = 'web';
20 | a.href = list[l].web;
21 | a.target = '_blank';
22 | a.innerHTML = list[l].name;
23 | a.title = list[l].brief;
24 | document.getElementById('webs-container').appendChild(a);
25 | }
26 | }
27 |
28 | function renderTags(tags) {
29 | document.getElementById('tags-container').innerHTML = ''; // 清空旧标签以重新渲染
30 | tags.forEach((tag, index) => {
31 | var button = document.createElement('button');
32 | button.id = 'tag' + index;
33 | button.innerHTML = tag;
34 | // 设置按钮的类名基于是否被选中
35 | button.className = onlist.includes(tag) ? 'tag on' : 'tag off';
36 | document.getElementById('tags-container').appendChild(button);
37 | button.onclick = () => toggleTagButton(button.id);
38 | });
39 | }
40 |
41 | function toggleTagButton(buttonId) {
42 | var button = document.getElementById(buttonId);
43 | var tagText = button.textContent;
44 | var tagIndex = onlist.indexOf(tagText);
45 |
46 | if (tagIndex === -1) {
47 | onlist.push(tagText); // 添加到选中列表
48 | } else {
49 | onlist.splice(tagIndex, 1); // 从选中列表移除
50 | }
51 |
52 | button.className = button.className === 'tag off' ? 'tag on' : 'tag off';
53 | updateResults(); // 更新结果和标签列表
54 | }
55 |
56 | function updateResults() {
57 | reslist = sources.filter(source => onlist.every(tag => source.tags.includes(tag)));
58 | document.getElementById('webs-container').innerHTML = reslist.length > 0 ? '' : '未找到符合条件的网页';
59 | renderWebs(randomSort(unique(reslist)));
60 |
61 | // 更新标签列表,将选中的标签放在前面
62 | let availableTags = [];
63 | reslist.forEach(source => {
64 | source.tags.forEach(tag => {
65 | if (!availableTags.includes(tag)) {
66 | availableTags.push(tag);
67 | }
68 | });
69 | });
70 |
71 | onlist.forEach(tag => {
72 | const index = availableTags.indexOf(tag);
73 | if (index > -1) {
74 | availableTags.splice(index, 1);
75 | }
76 | });
77 |
78 | const sortedTags = onlist.concat(availableTags.filter(tag => !onlist.includes(tag)));
79 | renderTags(sortedTags);
80 | }
81 |
82 | function searchFunction() {
83 | var keyword = document.getElementById('s-in').value.toLowerCase();
84 | reslist = sources.filter(source =>
85 | source.name.toLowerCase().includes(keyword) ||
86 | source.brief.toLowerCase().includes(keyword) ||
87 | source.tags.some(tag => tag.toLowerCase().includes(keyword))
88 | );
89 | document.getElementById('webs-container').innerHTML = reslist.length > 0 ? '' : '未找到符合条件的网页';
90 | renderWebs(randomSort(unique(reslist)));
91 | }
92 |
93 | function extractAndRenderTags(sources) {
94 | let taglist = [];
95 | sources.forEach(source => {
96 | source.tags.forEach(tag => {
97 | if (!taglist.includes(tag)) {
98 | taglist.push(tag);
99 | }
100 | });
101 | });
102 | taglist = randomSort(unique(taglist)); // 随机排序并去重标签列表
103 | renderTags(taglist); // 渲染标签列表
104 | }
105 |
106 | fetch("/assets/data.json") // 从服务器上获取数据
107 | .then(response => response.json())
108 | .then(data => {
109 | sources = data; // 存储数据源
110 | renderWebs(randomSort(unique(sources))); // 初始渲染网页列表
111 | extractAndRenderTags(sources); // 使用封装后的函数处理和渲染标签
112 | document.getElementById('s-btn').onclick = searchFunction; // 绑定搜索按钮的点击事件
113 | document.addEventListener('keydown', event => {
114 | if (event.keyCode === 13) {
115 | document.getElementById('s-btn').click();
116 | }
117 | });
118 | });
119 | }
120 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU AFFERO GENERAL PUBLIC LICENSE
2 | Version 3, 19 November 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 | Preamble
9 |
10 | The GNU Affero General Public License is a free, copyleft license for
11 | software and other kinds of works, specifically designed to ensure
12 | cooperation with the community in the case of network server software.
13 |
14 | The licenses for most software and other practical works are designed
15 | to take away your freedom to share and change the works. By contrast,
16 | our General Public Licenses are intended to guarantee your freedom to
17 | share and change all versions of a program--to make sure it remains free
18 | software for all its users.
19 |
20 | When we speak of free software, we are referring to freedom, not
21 | price. Our General Public Licenses are designed to make sure that you
22 | have the freedom to distribute copies of free software (and charge for
23 | them if you wish), that you receive source code or can get it if you
24 | want it, that you can change the software or use pieces of it in new
25 | free programs, and that you know you can do these things.
26 |
27 | Developers that use our General Public Licenses protect your rights
28 | with two steps: (1) assert copyright on the software, and (2) offer
29 | you this License which gives you legal permission to copy, distribute
30 | and/or modify the software.
31 |
32 | A secondary benefit of defending all users' freedom is that
33 | improvements made in alternate versions of the program, if they
34 | receive widespread use, become available for other developers to
35 | incorporate. Many developers of free software are heartened and
36 | encouraged by the resulting cooperation. However, in the case of
37 | software used on network servers, this result may fail to come about.
38 | The GNU General Public License permits making a modified version and
39 | letting the public access it on a server without ever releasing its
40 | source code to the public.
41 |
42 | The GNU Affero General Public License is designed specifically to
43 | ensure that, in such cases, the modified source code becomes available
44 | to the community. It requires the operator of a network server to
45 | provide the source code of the modified version running there to the
46 | users of that server. Therefore, public use of a modified version, on
47 | a publicly accessible server, gives the public access to the source
48 | code of the modified version.
49 |
50 | An older license, called the Affero General Public License and
51 | published by Affero, was designed to accomplish similar goals. This is
52 | a different license, not a version of the Affero GPL, but Affero has
53 | released a new version of the Affero GPL which permits relicensing under
54 | this license.
55 |
56 | The precise terms and conditions for copying, distribution and
57 | modification follow.
58 |
59 | TERMS AND CONDITIONS
60 |
61 | 0. Definitions.
62 |
63 | "This License" refers to version 3 of the GNU Affero General Public License.
64 |
65 | "Copyright" also means copyright-like laws that apply to other kinds of
66 | works, such as semiconductor masks.
67 |
68 | "The Program" refers to any copyrightable work licensed under this
69 | License. Each licensee is addressed as "you". "Licensees" and
70 | "recipients" may be individuals or organizations.
71 |
72 | To "modify" a work means to copy from or adapt all or part of the work
73 | in a fashion requiring copyright permission, other than the making of an
74 | exact copy. The resulting work is called a "modified version" of the
75 | earlier work or a work "based on" the earlier work.
76 |
77 | A "covered work" means either the unmodified Program or a work based
78 | on the Program.
79 |
80 | To "propagate" a work means to do anything with it that, without
81 | permission, would make you directly or secondarily liable for
82 | infringement under applicable copyright law, except executing it on a
83 | computer or modifying a private copy. Propagation includes copying,
84 | distribution (with or without modification), making available to the
85 | public, and in some countries other activities as well.
86 |
87 | To "convey" a work means any kind of propagation that enables other
88 | parties to make or receive copies. Mere interaction with a user through
89 | a computer network, with no transfer of a copy, is not conveying.
90 |
91 | An interactive user interface displays "Appropriate Legal Notices"
92 | to the extent that it includes a convenient and prominently visible
93 | feature that (1) displays an appropriate copyright notice, and (2)
94 | tells the user that there is no warranty for the work (except to the
95 | extent that warranties are provided), that licensees may convey the
96 | work under this License, and how to view a copy of this License. If
97 | the interface presents a list of user commands or options, such as a
98 | menu, a prominent item in the list meets this criterion.
99 |
100 | 1. Source Code.
101 |
102 | The "source code" for a work means the preferred form of the work
103 | for making modifications to it. "Object code" means any non-source
104 | form of a work.
105 |
106 | A "Standard Interface" means an interface that either is an official
107 | standard defined by a recognized standards body, or, in the case of
108 | interfaces specified for a particular programming language, one that
109 | is widely used among developers working in that language.
110 |
111 | The "System Libraries" of an executable work include anything, other
112 | than the work as a whole, that (a) is included in the normal form of
113 | packaging a Major Component, but which is not part of that Major
114 | Component, and (b) serves only to enable use of the work with that
115 | Major Component, or to implement a Standard Interface for which an
116 | implementation is available to the public in source code form. A
117 | "Major Component", in this context, means a major essential component
118 | (kernel, window system, and so on) of the specific operating system
119 | (if any) on which the executable work runs, or a compiler used to
120 | produce the work, or an object code interpreter used to run it.
121 |
122 | The "Corresponding Source" for a work in object code form means all
123 | the source code needed to generate, install, and (for an executable
124 | work) run the object code and to modify the work, including scripts to
125 | control those activities. However, it does not include the work's
126 | System Libraries, or general-purpose tools or generally available free
127 | programs which are used unmodified in performing those activities but
128 | which are not part of the work. For example, Corresponding Source
129 | includes interface definition files associated with source files for
130 | the work, and the source code for shared libraries and dynamically
131 | linked subprograms that the work is specifically designed to require,
132 | such as by intimate data communication or control flow between those
133 | subprograms and other parts of the work.
134 |
135 | The Corresponding Source need not include anything that users
136 | can regenerate automatically from other parts of the Corresponding
137 | Source.
138 |
139 | The Corresponding Source for a work in source code form is that
140 | same work.
141 |
142 | 2. Basic Permissions.
143 |
144 | All rights granted under this License are granted for the term of
145 | copyright on the Program, and are irrevocable provided the stated
146 | conditions are met. This License explicitly affirms your unlimited
147 | permission to run the unmodified Program. The output from running a
148 | covered work is covered by this License only if the output, given its
149 | content, constitutes a covered work. This License acknowledges your
150 | rights of fair use or other equivalent, as provided by copyright law.
151 |
152 | You may make, run and propagate covered works that you do not
153 | convey, without conditions so long as your license otherwise remains
154 | in force. You may convey covered works to others for the sole purpose
155 | of having them make modifications exclusively for you, or provide you
156 | with facilities for running those works, provided that you comply with
157 | the terms of this License in conveying all material for which you do
158 | not control copyright. Those thus making or running the covered works
159 | for you must do so exclusively on your behalf, under your direction
160 | and control, on terms that prohibit them from making any copies of
161 | your copyrighted material outside their relationship with you.
162 |
163 | Conveying under any other circumstances is permitted solely under
164 | the conditions stated below. Sublicensing is not allowed; section 10
165 | makes it unnecessary.
166 |
167 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
168 |
169 | No covered work shall be deemed part of an effective technological
170 | measure under any applicable law fulfilling obligations under article
171 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or
172 | similar laws prohibiting or restricting circumvention of such
173 | measures.
174 |
175 | When you convey a covered work, you waive any legal power to forbid
176 | circumvention of technological measures to the extent such circumvention
177 | is effected by exercising rights under this License with respect to
178 | the covered work, and you disclaim any intention to limit operation or
179 | modification of the work as a means of enforcing, against the work's
180 | users, your or third parties' legal rights to forbid circumvention of
181 | technological measures.
182 |
183 | 4. Conveying Verbatim Copies.
184 |
185 | You may convey verbatim copies of the Program's source code as you
186 | receive it, in any medium, provided that you conspicuously and
187 | appropriately publish on each copy an appropriate copyright notice;
188 | keep intact all notices stating that this License and any
189 | non-permissive terms added in accord with section 7 apply to the code;
190 | keep intact all notices of the absence of any warranty; and give all
191 | recipients a copy of this License along with the Program.
192 |
193 | You may charge any price or no price for each copy that you convey,
194 | and you may offer support or warranty protection for a fee.
195 |
196 | 5. Conveying Modified Source Versions.
197 |
198 | You may convey a work based on the Program, or the modifications to
199 | produce it from the Program, in the form of source code under the
200 | terms of section 4, provided that you also meet all of these conditions:
201 |
202 | a) The work must carry prominent notices stating that you modified
203 | it, and giving a relevant date.
204 |
205 | b) The work must carry prominent notices stating that it is
206 | released under this License and any conditions added under section
207 | 7. This requirement modifies the requirement in section 4 to
208 | "keep intact all notices".
209 |
210 | c) You must license the entire work, as a whole, under this
211 | License to anyone who comes into possession of a copy. This
212 | License will therefore apply, along with any applicable section 7
213 | additional terms, to the whole of the work, and all its parts,
214 | regardless of how they are packaged. This License gives no
215 | permission to license the work in any other way, but it does not
216 | invalidate such permission if you have separately received it.
217 |
218 | d) If the work has interactive user interfaces, each must display
219 | Appropriate Legal Notices; however, if the Program has interactive
220 | interfaces that do not display Appropriate Legal Notices, your
221 | work need not make them do so.
222 |
223 | A compilation of a covered work with other separate and independent
224 | works, which are not by their nature extensions of the covered work,
225 | and which are not combined with it such as to form a larger program,
226 | in or on a volume of a storage or distribution medium, is called an
227 | "aggregate" if the compilation and its resulting copyright are not
228 | used to limit the access or legal rights of the compilation's users
229 | beyond what the individual works permit. Inclusion of a covered work
230 | in an aggregate does not cause this License to apply to the other
231 | parts of the aggregate.
232 |
233 | 6. Conveying Non-Source Forms.
234 |
235 | You may convey a covered work in object code form under the terms
236 | of sections 4 and 5, provided that you also convey the
237 | machine-readable Corresponding Source under the terms of this License,
238 | in one of these ways:
239 |
240 | a) Convey the object code in, or embodied in, a physical product
241 | (including a physical distribution medium), accompanied by the
242 | Corresponding Source fixed on a durable physical medium
243 | customarily used for software interchange.
244 |
245 | b) Convey the object code in, or embodied in, a physical product
246 | (including a physical distribution medium), accompanied by a
247 | written offer, valid for at least three years and valid for as
248 | long as you offer spare parts or customer support for that product
249 | model, to give anyone who possesses the object code either (1) a
250 | copy of the Corresponding Source for all the software in the
251 | product that is covered by this License, on a durable physical
252 | medium customarily used for software interchange, for a price no
253 | more than your reasonable cost of physically performing this
254 | conveying of source, or (2) access to copy the
255 | Corresponding Source from a network server at no charge.
256 |
257 | c) Convey individual copies of the object code with a copy of the
258 | written offer to provide the Corresponding Source. This
259 | alternative is allowed only occasionally and noncommercially, and
260 | only if you received the object code with such an offer, in accord
261 | with subsection 6b.
262 |
263 | d) Convey the object code by offering access from a designated
264 | place (gratis or for a charge), and offer equivalent access to the
265 | Corresponding Source in the same way through the same place at no
266 | further charge. You need not require recipients to copy the
267 | Corresponding Source along with the object code. If the place to
268 | copy the object code is a network server, the Corresponding Source
269 | may be on a different server (operated by you or a third party)
270 | that supports equivalent copying facilities, provided you maintain
271 | clear directions next to the object code saying where to find the
272 | Corresponding Source. Regardless of what server hosts the
273 | Corresponding Source, you remain obligated to ensure that it is
274 | available for as long as needed to satisfy these requirements.
275 |
276 | e) Convey the object code using peer-to-peer transmission, provided
277 | you inform other peers where the object code and Corresponding
278 | Source of the work are being offered to the general public at no
279 | charge under subsection 6d.
280 |
281 | A separable portion of the object code, whose source code is excluded
282 | from the Corresponding Source as a System Library, need not be
283 | included in conveying the object code work.
284 |
285 | A "User Product" is either (1) a "consumer product", which means any
286 | tangible personal property which is normally used for personal, family,
287 | or household purposes, or (2) anything designed or sold for incorporation
288 | into a dwelling. In determining whether a product is a consumer product,
289 | doubtful cases shall be resolved in favor of coverage. For a particular
290 | product received by a particular user, "normally used" refers to a
291 | typical or common use of that class of product, regardless of the status
292 | of the particular user or of the way in which the particular user
293 | actually uses, or expects or is expected to use, the product. A product
294 | is a consumer product regardless of whether the product has substantial
295 | commercial, industrial or non-consumer uses, unless such uses represent
296 | the only significant mode of use of the product.
297 |
298 | "Installation Information" for a User Product means any methods,
299 | procedures, authorization keys, or other information required to install
300 | and execute modified versions of a covered work in that User Product from
301 | a modified version of its Corresponding Source. The information must
302 | suffice to ensure that the continued functioning of the modified object
303 | code is in no case prevented or interfered with solely because
304 | modification has been made.
305 |
306 | If you convey an object code work under this section in, or with, or
307 | specifically for use in, a User Product, and the conveying occurs as
308 | part of a transaction in which the right of possession and use of the
309 | User Product is transferred to the recipient in perpetuity or for a
310 | fixed term (regardless of how the transaction is characterized), the
311 | Corresponding Source conveyed under this section must be accompanied
312 | by the Installation Information. But this requirement does not apply
313 | if neither you nor any third party retains the ability to install
314 | modified object code on the User Product (for example, the work has
315 | been installed in ROM).
316 |
317 | The requirement to provide Installation Information does not include a
318 | requirement to continue to provide support service, warranty, or updates
319 | for a work that has been modified or installed by the recipient, or for
320 | the User Product in which it has been modified or installed. Access to a
321 | network may be denied when the modification itself materially and
322 | adversely affects the operation of the network or violates the rules and
323 | protocols for communication across the network.
324 |
325 | Corresponding Source conveyed, and Installation Information provided,
326 | in accord with this section must be in a format that is publicly
327 | documented (and with an implementation available to the public in
328 | source code form), and must require no special password or key for
329 | unpacking, reading or copying.
330 |
331 | 7. Additional Terms.
332 |
333 | "Additional permissions" are terms that supplement the terms of this
334 | License by making exceptions from one or more of its conditions.
335 | Additional permissions that are applicable to the entire Program shall
336 | be treated as though they were included in this License, to the extent
337 | that they are valid under applicable law. If additional permissions
338 | apply only to part of the Program, that part may be used separately
339 | under those permissions, but the entire Program remains governed by
340 | this License without regard to the additional permissions.
341 |
342 | When you convey a copy of a covered work, you may at your option
343 | remove any additional permissions from that copy, or from any part of
344 | it. (Additional permissions may be written to require their own
345 | removal in certain cases when you modify the work.) You may place
346 | additional permissions on material, added by you to a covered work,
347 | for which you have or can give appropriate copyright permission.
348 |
349 | Notwithstanding any other provision of this License, for material you
350 | add to a covered work, you may (if authorized by the copyright holders of
351 | that material) supplement the terms of this License with terms:
352 |
353 | a) Disclaiming warranty or limiting liability differently from the
354 | terms of sections 15 and 16 of this License; or
355 |
356 | b) Requiring preservation of specified reasonable legal notices or
357 | author attributions in that material or in the Appropriate Legal
358 | Notices displayed by works containing it; or
359 |
360 | c) Prohibiting misrepresentation of the origin of that material, or
361 | requiring that modified versions of such material be marked in
362 | reasonable ways as different from the original version; or
363 |
364 | d) Limiting the use for publicity purposes of names of licensors or
365 | authors of the material; or
366 |
367 | e) Declining to grant rights under trademark law for use of some
368 | trade names, trademarks, or service marks; or
369 |
370 | f) Requiring indemnification of licensors and authors of that
371 | material by anyone who conveys the material (or modified versions of
372 | it) with contractual assumptions of liability to the recipient, for
373 | any liability that these contractual assumptions directly impose on
374 | those licensors and authors.
375 |
376 | All other non-permissive additional terms are considered "further
377 | restrictions" within the meaning of section 10. If the Program as you
378 | received it, or any part of it, contains a notice stating that it is
379 | governed by this License along with a term that is a further
380 | restriction, you may remove that term. If a license document contains
381 | a further restriction but permits relicensing or conveying under this
382 | License, you may add to a covered work material governed by the terms
383 | of that license document, provided that the further restriction does
384 | not survive such relicensing or conveying.
385 |
386 | If you add terms to a covered work in accord with this section, you
387 | must place, in the relevant source files, a statement of the
388 | additional terms that apply to those files, or a notice indicating
389 | where to find the applicable terms.
390 |
391 | Additional terms, permissive or non-permissive, may be stated in the
392 | form of a separately written license, or stated as exceptions;
393 | the above requirements apply either way.
394 |
395 | 8. Termination.
396 |
397 | You may not propagate or modify a covered work except as expressly
398 | provided under this License. Any attempt otherwise to propagate or
399 | modify it is void, and will automatically terminate your rights under
400 | this License (including any patent licenses granted under the third
401 | paragraph of section 11).
402 |
403 | However, if you cease all violation of this License, then your
404 | license from a particular copyright holder is reinstated (a)
405 | provisionally, unless and until the copyright holder explicitly and
406 | finally terminates your license, and (b) permanently, if the copyright
407 | holder fails to notify you of the violation by some reasonable means
408 | prior to 60 days after the cessation.
409 |
410 | Moreover, your license from a particular copyright holder is
411 | reinstated permanently if the copyright holder notifies you of the
412 | violation by some reasonable means, this is the first time you have
413 | received notice of violation of this License (for any work) from that
414 | copyright holder, and you cure the violation prior to 30 days after
415 | your receipt of the notice.
416 |
417 | Termination of your rights under this section does not terminate the
418 | licenses of parties who have received copies or rights from you under
419 | this License. If your rights have been terminated and not permanently
420 | reinstated, you do not qualify to receive new licenses for the same
421 | material under section 10.
422 |
423 | 9. Acceptance Not Required for Having Copies.
424 |
425 | You are not required to accept this License in order to receive or
426 | run a copy of the Program. Ancillary propagation of a covered work
427 | occurring solely as a consequence of using peer-to-peer transmission
428 | to receive a copy likewise does not require acceptance. However,
429 | nothing other than this License grants you permission to propagate or
430 | modify any covered work. These actions infringe copyright if you do
431 | not accept this License. Therefore, by modifying or propagating a
432 | covered work, you indicate your acceptance of this License to do so.
433 |
434 | 10. Automatic Licensing of Downstream Recipients.
435 |
436 | Each time you convey a covered work, the recipient automatically
437 | receives a license from the original licensors, to run, modify and
438 | propagate that work, subject to this License. You are not responsible
439 | for enforcing compliance by third parties with this License.
440 |
441 | An "entity transaction" is a transaction transferring control of an
442 | organization, or substantially all assets of one, or subdividing an
443 | organization, or merging organizations. If propagation of a covered
444 | work results from an entity transaction, each party to that
445 | transaction who receives a copy of the work also receives whatever
446 | licenses to the work the party's predecessor in interest had or could
447 | give under the previous paragraph, plus a right to possession of the
448 | Corresponding Source of the work from the predecessor in interest, if
449 | the predecessor has it or can get it with reasonable efforts.
450 |
451 | You may not impose any further restrictions on the exercise of the
452 | rights granted or affirmed under this License. For example, you may
453 | not impose a license fee, royalty, or other charge for exercise of
454 | rights granted under this License, and you may not initiate litigation
455 | (including a cross-claim or counterclaim in a lawsuit) alleging that
456 | any patent claim is infringed by making, using, selling, offering for
457 | sale, or importing the Program or any portion of it.
458 |
459 | 11. Patents.
460 |
461 | A "contributor" is a copyright holder who authorizes use under this
462 | License of the Program or a work on which the Program is based. The
463 | work thus licensed is called the contributor's "contributor version".
464 |
465 | A contributor's "essential patent claims" are all patent claims
466 | owned or controlled by the contributor, whether already acquired or
467 | hereafter acquired, that would be infringed by some manner, permitted
468 | by this License, of making, using, or selling its contributor version,
469 | but do not include claims that would be infringed only as a
470 | consequence of further modification of the contributor version. For
471 | purposes of this definition, "control" includes the right to grant
472 | patent sublicenses in a manner consistent with the requirements of
473 | this License.
474 |
475 | Each contributor grants you a non-exclusive, worldwide, royalty-free
476 | patent license under the contributor's essential patent claims, to
477 | make, use, sell, offer for sale, import and otherwise run, modify and
478 | propagate the contents of its contributor version.
479 |
480 | In the following three paragraphs, a "patent license" is any express
481 | agreement or commitment, however denominated, not to enforce a patent
482 | (such as an express permission to practice a patent or covenant not to
483 | sue for patent infringement). To "grant" such a patent license to a
484 | party means to make such an agreement or commitment not to enforce a
485 | patent against the party.
486 |
487 | If you convey a covered work, knowingly relying on a patent license,
488 | and the Corresponding Source of the work is not available for anyone
489 | to copy, free of charge and under the terms of this License, through a
490 | publicly available network server or other readily accessible means,
491 | then you must either (1) cause the Corresponding Source to be so
492 | available, or (2) arrange to deprive yourself of the benefit of the
493 | patent license for this particular work, or (3) arrange, in a manner
494 | consistent with the requirements of this License, to extend the patent
495 | license to downstream recipients. "Knowingly relying" means you have
496 | actual knowledge that, but for the patent license, your conveying the
497 | covered work in a country, or your recipient's use of the covered work
498 | in a country, would infringe one or more identifiable patents in that
499 | country that you have reason to believe are valid.
500 |
501 | If, pursuant to or in connection with a single transaction or
502 | arrangement, you convey, or propagate by procuring conveyance of, a
503 | covered work, and grant a patent license to some of the parties
504 | receiving the covered work authorizing them to use, propagate, modify
505 | or convey a specific copy of the covered work, then the patent license
506 | you grant is automatically extended to all recipients of the covered
507 | work and works based on it.
508 |
509 | A patent license is "discriminatory" if it does not include within
510 | the scope of its coverage, prohibits the exercise of, or is
511 | conditioned on the non-exercise of one or more of the rights that are
512 | specifically granted under this License. You may not convey a covered
513 | work if you are a party to an arrangement with a third party that is
514 | in the business of distributing software, under which you make payment
515 | to the third party based on the extent of your activity of conveying
516 | the work, and under which the third party grants, to any of the
517 | parties who would receive the covered work from you, a discriminatory
518 | patent license (a) in connection with copies of the covered work
519 | conveyed by you (or copies made from those copies), or (b) primarily
520 | for and in connection with specific products or compilations that
521 | contain the covered work, unless you entered into that arrangement,
522 | or that patent license was granted, prior to 28 March 2007.
523 |
524 | Nothing in this License shall be construed as excluding or limiting
525 | any implied license or other defenses to infringement that may
526 | otherwise be available to you under applicable patent law.
527 |
528 | 12. No Surrender of Others' Freedom.
529 |
530 | If conditions are imposed on you (whether by court order, agreement or
531 | otherwise) that contradict the conditions of this License, they do not
532 | excuse you from the conditions of this License. If you cannot convey a
533 | covered work so as to satisfy simultaneously your obligations under this
534 | License and any other pertinent obligations, then as a consequence you may
535 | not convey it at all. For example, if you agree to terms that obligate you
536 | to collect a royalty for further conveying from those to whom you convey
537 | the Program, the only way you could satisfy both those terms and this
538 | License would be to refrain entirely from conveying the Program.
539 |
540 | 13. Remote Network Interaction; Use with the GNU General Public License.
541 |
542 | Notwithstanding any other provision of this License, if you modify the
543 | Program, your modified version must prominently offer all users
544 | interacting with it remotely through a computer network (if your version
545 | supports such interaction) an opportunity to receive the Corresponding
546 | Source of your version by providing access to the Corresponding Source
547 | from a network server at no charge, through some standard or customary
548 | means of facilitating copying of software. This Corresponding Source
549 | shall include the Corresponding Source for any work covered by version 3
550 | of the GNU General Public License that is incorporated pursuant to the
551 | following paragraph.
552 |
553 | Notwithstanding any other provision of this License, you have
554 | permission to link or combine any covered work with a work licensed
555 | under version 3 of the GNU General Public License into a single
556 | combined work, and to convey the resulting work. The terms of this
557 | License will continue to apply to the part which is the covered work,
558 | but the work with which it is combined will remain governed by version
559 | 3 of the GNU General Public License.
560 |
561 | 14. Revised Versions of this License.
562 |
563 | The Free Software Foundation may publish revised and/or new versions of
564 | the GNU Affero General Public License from time to time. Such new versions
565 | will be similar in spirit to the present version, but may differ in detail to
566 | address new problems or concerns.
567 |
568 | Each version is given a distinguishing version number. If the
569 | Program specifies that a certain numbered version of the GNU Affero General
570 | Public License "or any later version" applies to it, you have the
571 | option of following the terms and conditions either of that numbered
572 | version or of any later version published by the Free Software
573 | Foundation. If the Program does not specify a version number of the
574 | GNU Affero General Public License, you may choose any version ever published
575 | by the Free Software Foundation.
576 |
577 | If the Program specifies that a proxy can decide which future
578 | versions of the GNU Affero General Public License can be used, that proxy's
579 | public statement of acceptance of a version permanently authorizes you
580 | to choose that version for the Program.
581 |
582 | Later license versions may give you additional or different
583 | permissions. However, no additional obligations are imposed on any
584 | author or copyright holder as a result of your choosing to follow a
585 | later version.
586 |
587 | 15. Disclaimer of Warranty.
588 |
589 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
590 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
591 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
592 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
593 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
594 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
595 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
596 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
597 |
598 | 16. Limitation of Liability.
599 |
600 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
601 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
602 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
603 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
604 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
605 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
606 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
607 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
608 | SUCH DAMAGES.
609 |
610 | 17. Interpretation of Sections 15 and 16.
611 |
612 | If the disclaimer of warranty and limitation of liability provided
613 | above cannot be given local legal effect according to their terms,
614 | reviewing courts shall apply local law that most closely approximates
615 | an absolute waiver of all civil liability in connection with the
616 | Program, unless a warranty or assumption of liability accompanies a
617 | copy of the Program in return for a fee.
618 |
619 | END OF TERMS AND CONDITIONS
620 |
621 | How to Apply These Terms to Your New Programs
622 |
623 | If you develop a new program, and you want it to be of the greatest
624 | possible use to the public, the best way to achieve this is to make it
625 | free software which everyone can redistribute and change under these terms.
626 |
627 | To do so, attach the following notices to the program. It is safest
628 | to attach them to the start of each source file to most effectively
629 | state the exclusion of warranty; and each file should have at least
630 | the "copyright" line and a pointer to where the full notice is found.
631 |
632 |
633 | Copyright (C)
634 |
635 | This program is free software: you can redistribute it and/or modify
636 | it under the terms of the GNU Affero General Public License as published
637 | by the Free Software Foundation, either version 3 of the License, or
638 | (at your option) any later version.
639 |
640 | This program is distributed in the hope that it will be useful,
641 | but WITHOUT ANY WARRANTY; without even the implied warranty of
642 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
643 | GNU Affero General Public License for more details.
644 |
645 | You should have received a copy of the GNU Affero General Public License
646 | along with this program. If not, see .
647 |
648 | Also add information on how to contact you by electronic and paper mail.
649 |
650 | If your software can interact with users remotely through a computer
651 | network, you should also make sure that it provides a way for users to
652 | get its source. For example, if your program is a web application, its
653 | interface could display a "Source" link that leads users to an archive
654 | of the code. There are many ways you could offer source, and different
655 | solutions will be better for different programs; see section 13 for the
656 | specific requirements.
657 |
658 | You should also get your employer (if you work as a programmer) or school,
659 | if any, to sign a "copyright disclaimer" for the program, if necessary.
660 | For more information on this, and how to apply and follow the GNU AGPL, see
661 | .
662 |
--------------------------------------------------------------------------------
/public/assets/data.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "name": "羽享平台",
4 | "web": "http://yuzhuyi.ysepan.com/",
5 | "tags": [
6 | "🧠学习",
7 | "📦资源",
8 | "🧰软件"
9 | ],
10 | "brief": "各种资源的网页",
11 | "state": "正常"
12 | },
13 | {
14 | "name": "知到",
15 | "web": "https://www.zhihuishu.com/",
16 | "tags": [
17 | "🧠学习"
18 | ],
19 | "brief": "网课平台",
20 | "state": "正常"
21 | },
22 | {
23 | "name": "油管封面",
24 | "web": "https://www.strerr.com/index.html",
25 | "tags": [
26 | "🔧工具",
27 | "🖼️图片"
28 | ],
29 | "brief": "提供油管封面预览和下载功能",
30 | "state": "正常"
31 | },
32 | {
33 | "name": "京东",
34 | "web": "https://www.jd.com/",
35 | "tags": [
36 | "🛒购物"
37 | ],
38 | "brief": "电商购物平台",
39 | "state": "正常"
40 | },
41 | {
42 | "name": "Potplayer",
43 | "web": "https://potplayer.daum.net/",
44 | "tags": [
45 | "🧰软件"
46 | ],
47 | "brief": "贼好用的win播放器",
48 | "state": "正常"
49 | },
50 | {
51 | "name": "无尽道路",
52 | "web": "https://slowroads.io/",
53 | "tags": [
54 | "⛹️♀️娱乐"
55 | ],
56 | "brief": "放松休闲、开车游戏",
57 | "state": "正常"
58 | },
59 | {
60 | "name": "擦除画面",
61 | "web": "https://www.magiceraser.io/",
62 | "tags": [
63 | "🖼️图片",
64 | "🔧工具"
65 | ],
66 | "brief": "可以去背景",
67 | "state": "正常"
68 | },
69 | {
70 | "name": "HomeBrew",
71 | "web": "https://brew.sh/index_zh-cn",
72 | "tags": [
73 | "🍎Apple",
74 | "🐱Code"
75 | ],
76 | "brief": "macOS(或 Linux)缺失的软件包的管理器",
77 | "state": "正常"
78 | },
79 | {
80 | "name": "中文网字",
81 | "web": "https://chinese-font.netlify.app/",
82 | "tags": [
83 | "📦资源",
84 | "🐱Code"
85 | ],
86 | "brief": "收集免费可商用的 Web 字体文件,字体分包工具",
87 | "state": "正常"
88 | },
89 | {
90 | "name": "Unsplash",
91 | "web": "https://unsplash.com/",
92 | "tags": [
93 | "🖼️图片",
94 | "📦资源"
95 | ],
96 | "brief": "互联网的视觉资源,由各地的创作者提供支持",
97 | "state": "正常"
98 | },
99 | {
100 | "name": "花生壳",
101 | "web": "https://hsk.oray.com/",
102 | "tags": [
103 | "☁️云"
104 | ],
105 | "brief": "提供内网穿透和动态域名解析服务,支持外网访问内网服务器",
106 | "state": "正常"
107 | },
108 | {
109 | "name": "Kimi",
110 | "web": "https://kimi.moonshot.cn/",
111 | "tags": [
112 | "🤖AI"
113 | ],
114 | "brief": "月之暗面ai",
115 | "state": "正常"
116 | },
117 | {
118 | "name": "秘塔",
119 | "web": "https://metaso.cn/",
120 | "tags": [
121 | "🤖AI",
122 | "🔍搜索"
123 | ],
124 | "brief": "没有广告,直达结果",
125 | "state": "正常"
126 | },
127 | {
128 | "name": "牛客网",
129 | "web": "https://www.nowcoder.com/",
130 | "tags": [
131 | "🐱Code",
132 | "🧠学习"
133 | ],
134 | "brief": "找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决",
135 | "state": "正常"
136 | },
137 | {
138 | "name": "今日黄金",
139 | "web": "https://www.5huangjin.com/",
140 | "tags": [
141 | "📈基金"
142 | ],
143 | "brief": "查看黄金价格走向",
144 | "state": "正常"
145 | },
146 | {
147 | "name": "Reddit",
148 | "web": "https://www.reddit.com/",
149 | "tags": [
150 | "👁️🗨️媒体"
151 | ],
152 | "brief": "国外小红书",
153 | "state": "正常"
154 | },
155 | {
156 | "name": "模拟扫描",
157 | "web": "https://lookscanned.io/",
158 | "tags": [
159 | "🔧工具"
160 | ],
161 | "brief": "把pdf模拟出扫描的效果",
162 | "state": "正常"
163 | },
164 | {
165 | "name": "通义千问",
166 | "web": "https://tongyi.aliyun.com/qianwen/",
167 | "tags": [
168 | "🤖AI"
169 | ],
170 | "brief": "阿里做的大语言模型助手",
171 | "state": "正常"
172 | },
173 | {
174 | "name": "Ssgo",
175 | "web": "https://ssgo.app/",
176 | "tags": [
177 | "🔍搜索",
178 | "📦资源"
179 | ],
180 | "brief": "阿里云盘搜索引擎",
181 | "state": "正常"
182 | },
183 | {
184 | "name": "飞牛",
185 | "web": "https://www.fnnas.com/",
186 | "tags": [
187 | "📁文件",
188 | "🏠主页"
189 | ],
190 | "brief": "一个基于debian的nas系统",
191 | "state": "正常"
192 | },
193 | {
194 | "name": "shortcut",
195 | "web": "https://sspai.com/page/playbook/zh-CN",
196 | "tags": [
197 | "🍎Apple"
198 | ],
199 | "brief": "ssp的快捷指令导航站",
200 | "state": "正常"
201 | },
202 | {
203 | "name": "Mac清理",
204 | "web": "https://www.prettyclean.cc/zh",
205 | "tags": [
206 | "🍎Apple",
207 | "🧰软件"
208 | ],
209 | "brief": "好用的 macOS 磁盘清理工具 免费下载",
210 | "state": "正常"
211 | },
212 | {
213 | "name": "x2webp",
214 | "web": "https://xtoimage.com/",
215 | "tags": [
216 | "🔧工具"
217 | ],
218 | "brief": "立即将 X 帖子转换为高质量的可共享图像",
219 | "state": "正常"
220 | },
221 | {
222 | "name": "spaceship",
223 | "web": "https://www.spaceship.com/zh/",
224 | "tags": [
225 | "☁️云"
226 | ],
227 | "brief": "购买域名的网站",
228 | "state": "正常"
229 | },
230 | {
231 | "name": "Switch520",
232 | "web": "https://www.gamer520.com/",
233 | "tags": [
234 | "📦资源",
235 | "🕹️游戏"
236 | ],
237 | "brief": "switch游戏下载,PC游戏下载,switch破解游戏下载,PC破解游戏下载,Switch520,xxxxx520",
238 | "state": "正常"
239 | },
240 | {
241 | "name": "RoutineHub",
242 | "web": "https://routinehub.co/",
243 | "tags": [
244 | "🍎Apple"
245 | ],
246 | "brief": "发现、共享和版本控制 Apple 快捷指令",
247 | "state": "正常"
248 | },
249 | {
250 | "name": "Switch618",
251 | "web": "https://www.switch618.com/",
252 | "tags": [
253 | "🕹️游戏",
254 | "📦资源"
255 | ],
256 | "brief": "Switch618|免费Switch游戏PC游戏下载 - SWITCH618游戏公益分享",
257 | "state": "正常"
258 | },
259 | {
260 | "name": "小报童",
261 | "web": "https://xiaobot.net/home.html",
262 | "tags": [
263 | "🏠主页",
264 | "👁️🗨️媒体"
265 | ],
266 | "brief": "付费专栏,体面而用心地创作",
267 | "state": "正常"
268 | },
269 | {
270 | "name": "Devv ai",
271 | "web": "https://devv.ai/zh",
272 | "tags": [
273 | "🤖AI",
274 | "🔍搜索",
275 | "🐱Code"
276 | ],
277 | "brief": "一款专为程序员朋友设计的人工智能搜索引擎",
278 | "state": "正常"
279 | },
280 | {
281 | "name": "Text2Card",
282 | "web": "https://card.pomodiary.com/",
283 | "tags": [
284 | "🔧工具",
285 | "🖼️图片"
286 | ],
287 | "brief": "最简单的卡片制作工具,可记录您的想法和引言”",
288 | "state": "正常"
289 | },
290 | {
291 | "name": "RetroCard",
292 | "web": "https://retro.iwhy.dev/",
293 | "tags": [
294 | "🖼️图片",
295 | "🔧工具"
296 | ],
297 | "brief": "文字卡片制作工具",
298 | "state": "正常"
299 | },
300 | {
301 | "name": "识典古籍",
302 | "web": "https://www.shidianguji.com/",
303 | "tags": [
304 | "🧠学习",
305 | "📦资源"
306 | ],
307 | "brief": "北大和字节开发一个古籍在线阅读平台",
308 | "state": "正常"
309 | },
310 | {
311 | "name": "Canva",
312 | "web": "https://www.canva.cn",
313 | "tags": [
314 | "✒️设计"
315 | ],
316 | "brief": "轻松创建并分享专业设计。",
317 | "state": "正常"
318 | },
319 | {
320 | "name": "Caj2PDF",
321 | "web": "https://caj2pdf.cn/",
322 | "tags": [
323 | "⚙️转换",
324 | "🧠学习"
325 | ],
326 | "brief": "学术必备!!!",
327 | "state": "正常"
328 | },
329 | {
330 | "name": "GitHub卡片",
331 | "web": "https://github.cards/",
332 | "tags": [
333 | "🖼️图片",
334 | "🐱Code"
335 | ],
336 | "brief": "创造个人GitHub卡片",
337 | "state": "正常"
338 | },
339 | {
340 | "name": "PostSpark",
341 | "web": "https://postspark.app/",
342 | "tags": [
343 | "🔧工具",
344 | "🖼️图片",
345 | "🐱Code"
346 | ],
347 | "brief": "截图工具、推特、github贡献、代码",
348 | "state": "正常"
349 | },
350 | {
351 | "name": "符号",
352 | "web": "https://symbl.cc/",
353 | "tags": [
354 | "🔧工具",
355 | "📦资源"
356 | ],
357 | "brief": "Unicode 字符百科",
358 | "state": "正常"
359 | },
360 | {
361 | "name": "仓库分享",
362 | "web": "https://socialify.git.ci/",
363 | "tags": [
364 | "🖼️图片",
365 | "🐱Code"
366 | ],
367 | "brief": "生成 github 仓库分享图",
368 | "state": "正常"
369 | },
370 | {
371 | "name": "DeepSeek",
372 | "web": "https://chat.deepseek.com/",
373 | "tags": [
374 | "🤖AI"
375 | ],
376 | "brief": "国产 ai",
377 | "state": "正常"
378 | },
379 | {
380 | "name": "力扣",
381 | "web": "https://leetcode.cn/",
382 | "tags": [
383 | "🐱Code",
384 | "🧠学习"
385 | ],
386 | "brief": "题库",
387 | "state": "正常"
388 | },
389 | {
390 | "name": "flowith",
391 | "web": "https://flowith.io/blank",
392 | "tags": [
393 | "🤖AI",
394 | "🧠学习"
395 | ],
396 | "brief": "ai for work",
397 | "state": "正常"
398 | },
399 | {
400 | "name": "Vercel",
401 | "web": "https://vercel.com/",
402 | "tags": [
403 | "🐱Code",
404 | "☁️云"
405 | ],
406 | "brief": "搭建网站",
407 | "state": "正常"
408 | },
409 | {
410 | "name": "Qwen",
411 | "web": "https://chat.qwen.ai/",
412 | "tags": [
413 | "🤖AI"
414 | ],
415 | "brief": "Qwen2.5max",
416 | "state": "正常"
417 | },
418 | {
419 | "name": "腾讯元宝",
420 | "web": "https://yuanbao.tencent.com/chat/",
421 | "tags": [
422 | "🤖AI"
423 | ],
424 | "brief": "接入了 deepseek 支持图片识别",
425 | "state": "正常"
426 | },
427 | {
428 | "name": "Geek",
429 | "web": "https://geekuninstaller.com/",
430 | "tags": [
431 | "🏠主页"
432 | ],
433 | "brief": "卸载工具的官网",
434 | "state": "正常"
435 | },
436 | {
437 | "name": "任务清单",
438 | "web": "https://habitica.com/",
439 | "tags": [
440 | "✅效率"
441 | ],
442 | "brief": "用闯关的方式完成任务",
443 | "state": "正常"
444 | },
445 | {
446 | "name": "国家统计局",
447 | "web": "http://www.stats.gov.cn/",
448 | "tags": [
449 | "🔢数据"
450 | ],
451 | "brief": "中国统计信息网",
452 | "state": "正常"
453 | },
454 | {
455 | "name": "幕布",
456 | "web": "https://mubu.com/home",
457 | "tags": [
458 | "🧠学习"
459 | ],
460 | "brief": "思维导图网站",
461 | "state": "正常"
462 | },
463 | {
464 | "name": "墨滴",
465 | "web": "https://mdnice.com/",
466 | "tags": [
467 | "📒笔记",
468 | "⚙️转换"
469 | ],
470 | "brief": "墨滴社区是一个看颜值的文章社区,技术、数学、文学文章汇集,极具趣味性,其开发的 mdnice 编辑器是一款 Markdown 微信编辑器。",
471 | "state": "正常"
472 | },
473 | {
474 | "name": "派欧算力云",
475 | "web": "https://ppio.cn/",
476 | "tags": [
477 | "🤖AI",
478 | "🔧工具",
479 | "☁️云"
480 | ],
481 | "brief": "派欧算力云一站式AIGC云服务平台,提供高性能、高性价比的大模型API和GPU算力服务,无缝集成最前沿的AI推理技术,全面覆盖不同业务阶段的AI需求,加速AI业务发展。",
482 | "state": "正常"
483 | },
484 | {
485 | "name": "问小白",
486 | "web": "https://www.wenxiaobai.com/chat",
487 | "tags": [
488 | "🤖AI"
489 | ],
490 | "brief": "deepseek供应商",
491 | "state": "正常"
492 | },
493 | {
494 | "name": "唧唧down",
495 | "web": "http://client.jijidown.com/",
496 | "tags": [
497 | "🔧工具",
498 | "📺视频",
499 | "📦资源"
500 | ],
501 | "brief": "这是一个用于下载 bilibili 视频的PC应用程序",
502 | "state": "正常"
503 | },
504 | {
505 | "name": "隔离食用",
506 | "web": "https://cook.yunyoujun.cn/",
507 | "tags": [
508 | "🔹其他"
509 | ],
510 | "brief": "多种多样的菜谱任你选择",
511 | "state": "正常"
512 | },
513 | {
514 | "name": "Notion风格",
515 | "web": "https://illustration.imglab.dev",
516 | "tags": [
517 | "🖼️图片",
518 | "🔧工具"
519 | ],
520 | "brief": "一个Notion风格插画生成网站",
521 | "state": "正常"
522 | },
523 | {
524 | "name": "Coze",
525 | "web": "https://www.coze.com/",
526 | "tags": [
527 | "🤖AI"
528 | ],
529 | "brief": "一站式 AI Bot 开发平台(En)",
530 | "state": "正常"
531 | },
532 | {
533 | "name": "Jobs纪念馆",
534 | "web": "https://stevejobsarchive.com/",
535 | "tags": [
536 | "🍎Apple",
537 | "🔹其他"
538 | ],
539 | "brief": "乔布斯纪念网站",
540 | "state": "正常"
541 | },
542 | {
543 | "name": "密码测试",
544 | "web": "https://www.passwordmonster.com/",
545 | "tags": [
546 | "🔧工具",
547 | "⛹️♀️娱乐"
548 | ],
549 | "brief": "测试密码安全程度",
550 | "state": "正常"
551 | },
552 | {
553 | "name": "🍎传言",
554 | "web": "https://www.macrumors.com/",
555 | "tags": [
556 | "🍎Apple",
557 | "🗞️新闻"
558 | ],
559 | "brief": "关于苹果的新闻和传言",
560 | "state": "正常"
561 | },
562 | {
563 | "name": "SpellingBee",
564 | "web": "https://www.nytimes.com/puzzles/spelling-bee",
565 | "tags": [
566 | "🕹️游戏"
567 | ],
568 | "brief": "很难的凑字游戏",
569 | "state": "正常"
570 | },
571 | {
572 | "name": "eSheep",
573 | "web": "https://www.esheep.com/app",
574 | "tags": [
575 | "🤖AI",
576 | "🖼️图片"
577 | ],
578 | "brief": "体验在线的WebUI和ComfyUI",
579 | "state": "正常"
580 | },
581 | {
582 | "name": "台风网",
583 | "web": "https://typhoon.slt.zj.gov.cn/#/",
584 | "tags": [
585 | "🔢数据",
586 | "🔧工具"
587 | ],
588 | "brief": "查看台风路径",
589 | "state": "正常"
590 | },
591 | {
592 | "name": "Emojiall",
593 | "web": "https://www.emojiall.com/zh-hans",
594 | "tags": [
595 | "📦资源",
596 | "🔧工具"
597 | ],
598 | "brief": "emoji大全",
599 | "state": "正常"
600 | },
601 | {
602 | "name": "复制符",
603 | "web": "https://fzf.0211120.xyz/",
604 | "tags": [
605 | "🔧工具"
606 | ],
607 | "brief": "快速查找特殊符号,一键复制",
608 | "state": "正常"
609 | },
610 | {
611 | "name": "表情百科",
612 | "web": "https://emojipedia.org/zh",
613 | "tags": [
614 | "📦资源"
615 | ],
616 | "brief": "emoji 百科",
617 | "state": "正常"
618 | },
619 | {
620 | "name": "泡椒音乐",
621 | "web": "https://pjmp3.com/",
622 | "tags": [
623 | "🎵音频"
624 | ],
625 | "brief": "免注册即可搜索、试听与下载。",
626 | "state": "正常"
627 | },
628 | {
629 | "name": "扣子",
630 | "web": "https://www.coze.cn/",
631 | "tags": [
632 | "🤖AI"
633 | ],
634 | "brief": "一站式 AI Bot 开发平台(CN)",
635 | "state": "正常"
636 | },
637 | {
638 | "name": "即刻",
639 | "web": "https://web.okjike.com/",
640 | "tags": [
641 | "📱数码",
642 | "👁️🗨️媒体"
643 | ],
644 | "brief": "与更多同好分享你的见闻与感受,每一个独到的声音,都值得被更多人倾听。",
645 | "state": "正常"
646 | },
647 | {
648 | "name": "Apple参数",
649 | "web": "https://hubweb.cn/",
650 | "tags": [
651 | "🍎Apple"
652 | ],
653 | "brief": "Apple 苹果产品参数中心",
654 | "state": "正常"
655 | },
656 | {
657 | "name": "Youtube",
658 | "web": "https://www.youtube.com/",
659 | "tags": [
660 | "📺视频"
661 | ],
662 | "brief": "需要魔法才能访问的视频平台",
663 | "state": "正常"
664 | },
665 | {
666 | "name": "Logo制作",
667 | "web": "https://www.designevo.com/cn",
668 | "tags": [
669 | "🔧工具",
670 | "♻︎图标"
671 | ],
672 | "brief": "一款专业制作Logo的免费软件",
673 | "state": "正常"
674 | },
675 | {
676 | "name": "钢笔工具",
677 | "web": "https://bezier.method.ac/",
678 | "tags": [
679 | "⛹️♀️娱乐"
680 | ],
681 | "brief": "一个帮助你熟练掌握钢笔工具的网站",
682 | "state": "正常"
683 | },
684 | {
685 | "name": "拼图",
686 | "web": "https://fulicat.com/lab/pintu/",
687 | "tags": [
688 | "🔧工具"
689 | ],
690 | "brief": "最简单的图片拼接网站",
691 | "state": "正常"
692 | },
693 | {
694 | "name": "中国色",
695 | "web": "http://zhongguose.com/",
696 | "tags": [
697 | "🎈色彩"
698 | ],
699 | "brief": "提供各种中国的传统颜色的名称,CMYK值,RGB值,16进制表示",
700 | "state": "正常"
701 | },
702 | {
703 | "name": "W32DI",
704 | "web": "https://win32diskimager.org/",
705 | "tags": [
706 | "🧰软件"
707 | ],
708 | "brief": "Win32DiskImager一个将原始磁盘映像写入可移动设备的程序",
709 | "state": "正常"
710 | },
711 | {
712 | "name": "Discord",
713 | "web": "https://discord.com/app/",
714 | "tags": [
715 | "✏️协作",
716 | "👁️🗨️媒体"
717 | ],
718 | "brief": "在这里,您可以轻而易举地每日谈天说地,时常消遣娱乐",
719 | "state": "正常"
720 | },
721 | {
722 | "name": "sojson",
723 | "web": "https://www.sojson.com/",
724 | "tags": [
725 | "⚙️转换"
726 | ],
727 | "brief": "json转换为其他的格式",
728 | "state": "正常"
729 | },
730 | {
731 | "name": "FirstWeb",
732 | "web": "http://info.cern.ch/",
733 | "tags": [
734 | "🔹其他"
735 | ],
736 | "brief": "万维网第一个网页",
737 | "state": "正常"
738 | },
739 | {
740 | "name": "ChatMind",
741 | "web": "https://www.chatmind.tech/",
742 | "tags": [
743 | "🤖AI"
744 | ],
745 | "brief": "AI生成思维导图的效率工具, 为用户提供智能化思维导图方案",
746 | "state": "正常"
747 | },
748 | {
749 | "name": "Steam",
750 | "web": "https://store.steampowered.com/",
751 | "tags": [
752 | "🕹️游戏",
753 | "🏠主页"
754 | ],
755 | "brief": "一个游戏集合的官网",
756 | "state": "正常"
757 | },
758 | {
759 | "name": "Figma",
760 | "web": "https://www.figma.com/",
761 | "tags": [
762 | "✏️协作",
763 | "✒️设计",
764 | "🖼️图片"
765 | ],
766 | "brief": "Figma是一款协作设计工具,用于创建用户界面和原型。",
767 | "state": "正常"
768 | },
769 | {
770 | "name": "开发者搜索",
771 | "web": "https://kaifa.baidu.com/",
772 | "tags": [
773 | "🐱Code",
774 | "🧠学习",
775 | "🔍搜索"
776 | ],
777 | "brief": "一个面向开发者的知识搜索平台",
778 | "state": "正常"
779 | },
780 | {
781 | "name": "荔枝商店",
782 | "web": "https://lizhi.shop/",
783 | "tags": [
784 | "📱数码",
785 | "🧰软件",
786 | "🛒购物"
787 | ],
788 | "brief": "数码荔枝 x 软件商店 - 专注于分享最新鲜优秀的正版软件",
789 | "state": "正常"
790 | },
791 | {
792 | "name": "Apple.cn",
793 | "web": "https://www.apple.com.cn/",
794 | "tags": [
795 | "🍎Apple"
796 | ],
797 | "brief": "一个伟大公司的官网",
798 | "state": "正常"
799 | },
800 | {
801 | "name": "骇客新闻",
802 | "web": "https://news.ycombinator.com/",
803 | "tags": [
804 | "📱数码",
805 | "🗞️新闻"
806 | ],
807 | "brief": "一个专注于计算机科学和创业的社交新闻网站",
808 | "state": "正常"
809 | },
810 | {
811 | "name": "在线测试",
812 | "web": "https://www.onlinemictest.com/",
813 | "tags": [
814 | "🔧工具"
815 | ],
816 | "brief": "提供各种测试工具",
817 | "state": "正常"
818 | },
819 | {
820 | "name": "IT之家",
821 | "web": "https://www.ithome.com/",
822 | "tags": [
823 | "🗞️新闻",
824 | "📱数码"
825 | ],
826 | "brief": "青岛软媒旗下的前沿科技门户网站",
827 | "state": "正常"
828 | },
829 | {
830 | "name": "B站封面",
831 | "web": "https://bilicover.magecorn.com/",
832 | "tags": [
833 | "🖼️图片",
834 | "🔧工具"
835 | ],
836 | "brief": "提取B站视频封面",
837 | "state": "正常"
838 | },
839 | {
840 | "name": "轻松传",
841 | "web": "https://easychuan.cn/",
842 | "tags": [
843 | "📁文件"
844 | ],
845 | "brief": "轻松传文件到各种地方",
846 | "state": "正常"
847 | },
848 | {
849 | "name": "在线LaTeX",
850 | "web": "https://cn.overleaf.com/",
851 | "tags": [
852 | "🐱Code",
853 | "📒笔记"
854 | ],
855 | "brief": "在线 LaTeX 编辑器,无需安装,实时共享,版本控制,数百免费模板",
856 | "state": "正常"
857 | },
858 | {
859 | "name": "Cobalt",
860 | "web": "https://cobalt.tools/",
861 | "tags": [
862 | "🔧工具",
863 | "📺视频"
864 | ],
865 | "brief": "资源下载工具",
866 | "state": "正常"
867 | },
868 | {
869 | "name": "Slack",
870 | "web": "https://slack.com/",
871 | "tags": [
872 | "✏️协作",
873 | "✅效率"
874 | ],
875 | "brief": "一个团队协作的网站",
876 | "state": "正常"
877 | },
878 | {
879 | "name": "Lightly",
880 | "web": "https://lightly.teamcode.com/",
881 | "tags": [
882 | "🐱Code",
883 | "☁️云"
884 | ],
885 | "brief": "在线编译工具,免费用户500Mb内存",
886 | "state": "正常"
887 | },
888 | {
889 | "name": "影视飓风",
890 | "web": "https://www.ysjf.com/index",
891 | "tags": [
892 | "🕊️up主",
893 | "🏠主页"
894 | ],
895 | "brief": "影视飓风官网",
896 | "state": "正常"
897 | },
898 | {
899 | "name": "ChatGPT",
900 | "web": "https://chatgpt.com",
901 | "tags": [
902 | "🤖AI"
903 | ],
904 | "brief": "OpenAi做的智能助手",
905 | "state": "正常"
906 | },
907 | {
908 | "name": "全渠道搜索",
909 | "web": "http://dir.scmor.com/",
910 | "tags": [
911 | "🔍搜索",
912 | "🔧工具"
913 | ],
914 | "brief": "各种搜索渠道",
915 | "state": "正常"
916 | },
917 | {
918 | "name": "阿里云",
919 | "web": "https://cn.aliyun.com/",
920 | "tags": [
921 | "☁️云"
922 | ],
923 | "brief": "阿里云平台,图床服务",
924 | "state": "正常"
925 | },
926 | {
927 | "name": "小红书",
928 | "web": "https://www.xiaohongshu.com/explore",
929 | "tags": [
930 | "👁️🗨️媒体",
931 | "⛹️♀️娱乐"
932 | ],
933 | "brief": "小红书 - 你的生活指南",
934 | "state": "正常"
935 | },
936 | {
937 | "name": "手写板",
938 | "web": "https://excalidraw.com/",
939 | "tags": [
940 | "🧠学习",
941 | "📒笔记"
942 | ],
943 | "brief": "手写效果白板工具",
944 | "state": "正常"
945 | },
946 | {
947 | "name": "食物图片",
948 | "web": "https://www.foodiesfeed.com/",
949 | "tags": [
950 | "🖼️图片",
951 | "📦资源"
952 | ],
953 | "brief": "搜索超过1802张免费美食照片",
954 | "state": "正常"
955 | },
956 | {
957 | "name": "快捷键库",
958 | "web": "https://hotkeycheatsheet.com/zh",
959 | "tags": [
960 | "🔧工具"
961 | ],
962 | "brief": "通过提供常用快捷键的快速访问来帮助用户提高生产力",
963 | "state": "正常"
964 | },
965 | {
966 | "name": "耳聆网",
967 | "web": "https://www.ear0.com/",
968 | "tags": [
969 | "🎵音频",
970 | "📦资源"
971 | ],
972 | "brief": "提供全面的声音资源和版权保护机制,满足各方面音频素材需求",
973 | "state": "正常"
974 | },
975 | {
976 | "name": "Phind",
977 | "web": "https://phind.com/",
978 | "tags": [
979 | "🔍搜索",
980 | "🐱Code"
981 | ],
982 | "brief": "面向程序员的搜索引擎",
983 | "state": "正常"
984 | },
985 | {
986 | "name": "Jumblie",
987 | "web": "https://jumblie.com/",
988 | "tags": [
989 | "🕹️游戏"
990 | ],
991 | "brief": "每日挑战,找出混在一起的四个指定主题单词",
992 | "state": "正常"
993 | },
994 | {
995 | "name": "小红书创作",
996 | "web": "https://creator.xiaohongshu.com",
997 | "tags": [
998 | "👁️🗨️媒体"
999 | ],
1000 | "brief": "小红书后台",
1001 | "state": "正常"
1002 | },
1003 | {
1004 | "name": "Claude",
1005 | "web": "https://claude.ai/",
1006 | "tags": [
1007 | "🤖AI"
1008 | ],
1009 | "brief": "Anthropic公司开发的一个人工智能助手",
1010 | "state": "正常"
1011 | },
1012 | {
1013 | "name": "小米有品",
1014 | "web": "https://www.xiaomiyoupin.com/",
1015 | "tags": [
1016 | "🛒购物"
1017 | ],
1018 | "brief": "小米有品,购物平台",
1019 | "state": "正常"
1020 | },
1021 | {
1022 | "name": "网易新闻",
1023 | "web": "https://news.163.com/",
1024 | "tags": [
1025 | "🗞️新闻"
1026 | ],
1027 | "brief": "包含各种新闻的门户网站",
1028 | "state": "正常"
1029 | },
1030 | {
1031 | "name": "Pixabay",
1032 | "web": "https://pixabay.com/",
1033 | "tags": [
1034 | "🖼️图片",
1035 | "📦资源"
1036 | ],
1037 | "brief": "令人惊叹的免费图片和免版税库存",
1038 | "state": "正常"
1039 | },
1040 | {
1041 | "name": "今日头条",
1042 | "web": "https://www.toutiao.com/",
1043 | "tags": [
1044 | "👁️🗨️媒体"
1045 | ],
1046 | "brief": "字节跳动旗下文字和视频网站",
1047 | "state": "正常"
1048 | },
1049 | {
1050 | "name": "Telegraph",
1051 | "web": "https://telegra.ph/",
1052 | "tags": [
1053 | "📒笔记"
1054 | ],
1055 | "brief": "匿名发布文章",
1056 | "state": "正常"
1057 | },
1058 | {
1059 | "name": "闲鱼",
1060 | "web": "https://www.goofish.com/",
1061 | "tags": [
1062 | "🛒购物"
1063 | ],
1064 | "brief": "二手交易平台",
1065 | "state": "正常"
1066 | },
1067 | {
1068 | "name": "MongoDB",
1069 | "web": "https://cloud.mongodb.com/",
1070 | "tags": [
1071 | "🐱Code",
1072 | "🔢数据"
1073 | ],
1074 | "brief": "一种高性能、可扩展和灵活的开源文档数据库管理系统",
1075 | "state": "正常"
1076 | },
1077 | {
1078 | "name": "Horizons",
1079 | "web": "https://yx.g8hh.com/heart-of-galaxy-horizons/",
1080 | "tags": [
1081 | "🕹️游戏"
1082 | ],
1083 | "brief": "一款图文并茂的网页游戏",
1084 | "state": "正常"
1085 | },
1086 | {
1087 | "name": "Poe",
1088 | "web": "https://poe.com/",
1089 | "tags": [
1090 | "🤖AI"
1091 | ],
1092 | "brief": "Poe可让您提问、获得即时回答、并与AI机器人互动对话。",
1093 | "state": "正常"
1094 | },
1095 | {
1096 | "name": "抖音",
1097 | "web": "https://www.douyin.com/",
1098 | "tags": [
1099 | "⛹️♀️娱乐",
1100 | "👁️🗨️媒体"
1101 | ],
1102 | "brief": "抖音 - 记录美好生活",
1103 | "state": "正常"
1104 | },
1105 | {
1106 | "name": "谷歌",
1107 | "web": "https://www.google.com/",
1108 | "tags": [
1109 | "🔍搜索"
1110 | ],
1111 | "brief": "需要魔法才能用的检索工具",
1112 | "state": "正常"
1113 | },
1114 | {
1115 | "name": "TMDB",
1116 | "web": "https://www.themoviedb.org/",
1117 | "tags": [
1118 | "🔢数据",
1119 | "📺视频"
1120 | ],
1121 | "brief": "一个电影数据库网站",
1122 | "state": "正常"
1123 | },
1124 | {
1125 | "name": "Github",
1126 | "web": "https://github.com/",
1127 | "tags": [
1128 | "🐱Code",
1129 | "✏️协作",
1130 | "☁️云"
1131 | ],
1132 | "brief": "存代码的地方",
1133 | "state": "正常"
1134 | },
1135 | {
1136 | "name": "全球logo",
1137 | "web": "https://www.logonews.cn/",
1138 | "tags": [
1139 | "🖼️图片",
1140 | "📦资源"
1141 | ],
1142 | "brief": "logo情报网站",
1143 | "state": "正常"
1144 | },
1145 | {
1146 | "name": "对牛弹琴",
1147 | "web": "https://chat.nowscott.top/",
1148 | "tags": [
1149 | "🤖AI"
1150 | ],
1151 | "brief": "每一次对话,都是一场思想碰撞",
1152 | "state": "正常"
1153 | },
1154 | {
1155 | "name": "woc",
1156 | "web": "https://woc.space/",
1157 | "tags": [
1158 | "📁文件",
1159 | "✏️协作",
1160 | "☁️云"
1161 | ],
1162 | "brief": "全球文件传输与协作平台",
1163 | "state": "正常"
1164 | },
1165 | {
1166 | "name": "日本色",
1167 | "web": "https://nipponcolors.com/",
1168 | "tags": [
1169 | "🎈色彩"
1170 | ],
1171 | "brief": "日本传统颜色",
1172 | "state": "正常"
1173 | },
1174 | {
1175 | "name": "亚马逊",
1176 | "web": "https://www.amazon.cn/",
1177 | "tags": [
1178 | "🛒购物"
1179 | ],
1180 | "brief": "全球购物平台",
1181 | "state": "正常"
1182 | },
1183 | {
1184 | "name": "阿里云盘",
1185 | "web": "https://www.aliyundrive.com/",
1186 | "tags": [
1187 | "☁️云",
1188 | "📦资源"
1189 | ],
1190 | "brief": "一款速度快、不打扰、够安全、易于分享的网盘",
1191 | "state": "正常"
1192 | },
1193 | {
1194 | "name": "格式转换",
1195 | "web": "https://www.aconvert.com/cn/",
1196 | "tags": [
1197 | "⚙️转换"
1198 | ],
1199 | "brief": "内含多种格式转换",
1200 | "state": "正常"
1201 | },
1202 | {
1203 | "name": "青柠起始页",
1204 | "web": "https://limestart.cn/",
1205 | "tags": [
1206 | "🏠主页"
1207 | ],
1208 | "brief": "一个up主做的起始页,很精美",
1209 | "state": "正常"
1210 | },
1211 | {
1212 | "name": "颜色代码",
1213 | "web": "https://encycolorpedia.cn/html",
1214 | "tags": [
1215 | "🎈色彩",
1216 | "🐱Code"
1217 | ],
1218 | "brief": "提供很多的颜色、不同国家、不同应用场景",
1219 | "state": "正常"
1220 | },
1221 | {
1222 | "name": "爱给网",
1223 | "web": "https://www.aigei.com/",
1224 | "tags": [
1225 | "🎵音频",
1226 | "📦资源",
1227 | "📺视频"
1228 | ],
1229 | "brief": "中国最大的数字娱乐免费素材下载网站",
1230 | "state": "正常"
1231 | },
1232 | {
1233 | "name": "海棠诗社",
1234 | "web": "https://haitang.app/",
1235 | "tags": [
1236 | "🧠学习"
1237 | ],
1238 | "brief": "当科技与艺术融合,诗词创作从此变得更有趣",
1239 | "state": "正常"
1240 | },
1241 | {
1242 | "name": "学习通",
1243 | "web": "https://i.chaoxing.com/",
1244 | "tags": [
1245 | "🧠学习"
1246 | ],
1247 | "brief": "网课学习",
1248 | "state": "正常"
1249 | },
1250 | {
1251 | "name": "Theb.AI",
1252 | "web": "https://beta.theb.ai/",
1253 | "tags": [
1254 | "🤖AI"
1255 | ],
1256 | "brief": "一个基于API的聊天机器人 可选择多种模型",
1257 | "state": "正常"
1258 | },
1259 | {
1260 | "name": "比特虫.ico",
1261 | "web": "https://www.bitbug.net/",
1262 | "tags": [
1263 | "♻︎图标",
1264 | "✒️设计",
1265 | "⚙️转换"
1266 | ],
1267 | "brief": "制作网站图标的网站",
1268 | "state": "正常"
1269 | },
1270 | {
1271 | "name": "网易邮箱",
1272 | "web": "https://mail.163.com/",
1273 | "tags": [
1274 | "📧邮箱"
1275 | ],
1276 | "brief": "网易邮箱163、126",
1277 | "state": "正常"
1278 | },
1279 | {
1280 | "name": "爱奇艺体育",
1281 | "web": "https://ssports.iqiyi.com/",
1282 | "tags": [
1283 | "📺视频"
1284 | ],
1285 | "brief": "中国知名的体育赛事平台",
1286 | "state": "正常"
1287 | },
1288 | {
1289 | "name": "🍎Store",
1290 | "web": "https://www.apple.com.cn/retail/storelist/",
1291 | "tags": [
1292 | "🍎Apple",
1293 | "🛒购物"
1294 | ],
1295 | "brief": "中国苹果直营店位置",
1296 | "state": "正常"
1297 | },
1298 | {
1299 | "name": "拼字幕",
1300 | "web": "https://www.pinzimu.com/",
1301 | "tags": [
1302 | "🖼️图片",
1303 | "🔧工具"
1304 | ],
1305 | "brief": "一键免费生成字幕拼图",
1306 | "state": "正常"
1307 | },
1308 | {
1309 | "name": "CodeForces",
1310 | "web": "https://codeforces.com/",
1311 | "tags": [
1312 | "🐱Code"
1313 | ],
1314 | "brief": "一个俄罗斯的刷题网站,有模拟竞赛",
1315 | "state": "正常"
1316 | },
1317 | {
1318 | "name": "猫啃网",
1319 | "web": "https://www.maoken.com/",
1320 | "tags": [
1321 | "📦资源"
1322 | ],
1323 | "brief": "最新最全的可免费商用中文字体下载网站",
1324 | "state": "正常"
1325 | },
1326 | {
1327 | "name": "汉兜",
1328 | "web": "https://handle.antfu.me/",
1329 | "tags": [
1330 | "🕹️游戏"
1331 | ],
1332 | "brief": "汉字猜字游戏",
1333 | "state": "正常"
1334 | },
1335 | {
1336 | "name": "赛博耶稣",
1337 | "web": "https://yesu.ink/",
1338 | "tags": [
1339 | "🤖AI"
1340 | ],
1341 | "brief": "一个配备有ChatGPT的耶稣陪伴在您的身边",
1342 | "state": "正常"
1343 | },
1344 | {
1345 | "name": "测速网",
1346 | "web": "https://www.speedtest.cn/",
1347 | "tags": [
1348 | "🕸️网络",
1349 | "🔧工具"
1350 | ],
1351 | "brief": "你的网速怎么样?",
1352 | "state": "正常"
1353 | },
1354 | {
1355 | "name": "Buzzing",
1356 | "web": "https://www.buzzing.cc/",
1357 | "tags": [
1358 | "🗞️新闻"
1359 | ],
1360 | "brief": "用中文浏览国外社交媒体里的热门讨论,母语快速导读, 感兴趣再进原文深度阅读",
1361 | "state": "正常"
1362 | },
1363 | {
1364 | "name": "微博",
1365 | "web": "https://weibo.com/",
1366 | "tags": [
1367 | "👁️🗨️媒体"
1368 | ],
1369 | "brief": "国内最大的媒体",
1370 | "state": "正常"
1371 | },
1372 | {
1373 | "name": "ChatExcel",
1374 | "web": "https://chatexcel.com/",
1375 | "tags": [
1376 | "🤖AI"
1377 | ],
1378 | "brief": "仅通过聊天来操控您的Excel表格",
1379 | "state": "正常"
1380 | },
1381 | {
1382 | "name": "猜中国省份",
1383 | "web": "https://vultr.youmu.moe/quiz/",
1384 | "tags": [
1385 | "⛹️♀️娱乐"
1386 | ],
1387 | "brief": "你对我们的国家熟悉嘛?",
1388 | "state": "正常"
1389 | },
1390 | {
1391 | "name": "中文手写板",
1392 | "web": "https://handraw.top/",
1393 | "tags": [
1394 | "🧠学习",
1395 | "📒笔记"
1396 | ],
1397 | "brief": "中文友好的手写白板工具",
1398 | "state": "正常"
1399 | },
1400 | {
1401 | "name": "知乎",
1402 | "web": "https://www.zhihu.com/",
1403 | "tags": [
1404 | "🧠学习",
1405 | "👁️🗨️媒体"
1406 | ],
1407 | "brief": "看看别人怎么说?",
1408 | "state": "正常"
1409 | },
1410 | {
1411 | "name": "开源程序书",
1412 | "web": "https://github.com/EbookFoundation/free-programming-books/blob/main/books/free-programming-books-zh.md",
1413 | "tags": [
1414 | "🐱Code",
1415 | "🧠学习"
1416 | ],
1417 | "brief": "一些开源的程序书籍",
1418 | "state": "正常"
1419 | },
1420 | {
1421 | "name": "wccftech",
1422 | "web": "https://wccftech.com/",
1423 | "tags": [
1424 | "📱数码",
1425 | "🗞️新闻"
1426 | ],
1427 | "brief": "最新的硬件、移动数码、游戏的资讯",
1428 | "state": "正常"
1429 | },
1430 | {
1431 | "name": "Gemini",
1432 | "web": "https://gemini.google.com/",
1433 | "tags": [
1434 | "🤖AI"
1435 | ],
1436 | "brief": "谷歌人工智能的一个大型语言模型",
1437 | "state": "正常"
1438 | },
1439 | {
1440 | "name": "微信网页版",
1441 | "web": "https://filehelper.weixin.qq.com/",
1442 | "tags": [
1443 | "📁文件"
1444 | ],
1445 | "brief": "微信传文件",
1446 | "state": "正常"
1447 | },
1448 | {
1449 | "name": "QQ邮箱",
1450 | "web": "https://mail.qq.com",
1451 | "tags": [
1452 | "📧邮箱"
1453 | ],
1454 | "brief": "腾讯邮箱",
1455 | "state": "正常"
1456 | },
1457 | {
1458 | "name": "图寻",
1459 | "web": "https://tuxun.fun/",
1460 | "tags": [
1461 | "⛹️♀️娱乐"
1462 | ],
1463 | "brief": "探索真实世界,收集线索,找出自己的位置",
1464 | "state": "正常"
1465 | },
1466 | {
1467 | "name": "Mac应用",
1468 | "web": "https://decrypt.day/",
1469 | "tags": [
1470 | "🍎Apple",
1471 | "🧰软件"
1472 | ],
1473 | "brief": "查找并下载最新解密的IPA应用程序",
1474 | "state": "正常"
1475 | },
1476 | {
1477 | "name": "-LKs-",
1478 | "web": "http://lkssite.vip/",
1479 | "tags": [
1480 | "🕊️up主"
1481 | ],
1482 | "brief": "一个墨镜区up做的网址大全",
1483 | "state": "正常"
1484 | },
1485 | {
1486 | "name": "油管解析",
1487 | "web": "https://fotoun.com/?p=161",
1488 | "tags": [
1489 | "🔧工具",
1490 | "📺视频"
1491 | ],
1492 | "brief": "YouTube视频在线解析网站",
1493 | "state": "正常"
1494 | },
1495 | {
1496 | "name": "开发文档",
1497 | "web": "https://wangdoc.com/",
1498 | "tags": [
1499 | "🐱Code",
1500 | "📒笔记",
1501 | "🧠学习"
1502 | ],
1503 | "brief": "提供高质量的、自主版权的、可以自由使用的中文软件文档",
1504 | "state": "正常"
1505 | },
1506 | {
1507 | "name": "硬件测试仪",
1508 | "web": "https://hardwaretester.com/",
1509 | "tags": [
1510 | "🔧工具"
1511 | ],
1512 | "brief": "提供手柄、GPU、麦克风以及midi功能的测试",
1513 | "state": "正常"
1514 | },
1515 | {
1516 | "name": "GropAI",
1517 | "web": "https://groq.com/",
1518 | "tags": [
1519 | "🤖AI"
1520 | ],
1521 | "brief": "人工智能接口系统",
1522 | "state": "正常"
1523 | },
1524 | {
1525 | "name": "打字网站",
1526 | "web": "https://dazidazi.com/",
1527 | "tags": [
1528 | "⛹️♀️娱乐"
1529 | ],
1530 | "brief": "一个up主做的打字网站",
1531 | "state": "正常"
1532 | },
1533 | {
1534 | "name": "谷歌学术",
1535 | "web": "https://scholar.google.com.hk/?hl=zh-CN",
1536 | "tags": [
1537 | "🧠学习",
1538 | "🔍搜索"
1539 | ],
1540 | "brief": "轻松地大范围搜索学术文献",
1541 | "state": "正常"
1542 | },
1543 | {
1544 | "name": "芒果商城",
1545 | "web": "https://www.mgidshop.com/",
1546 | "tags": [
1547 | "🍎Apple",
1548 | "🛒购物"
1549 | ],
1550 | "brief": "购买日区美区小火箭、美区苹果ID",
1551 | "state": "正常"
1552 | },
1553 | {
1554 | "name": "汤姆硬件",
1555 | "web": "https://www.tomshardware.com/news",
1556 | "tags": [
1557 | "📱数码",
1558 | "🗞️新闻"
1559 | ],
1560 | "brief": "Tom's Hardware 是您进入科技世界的专家指南",
1561 | "state": "正常"
1562 | },
1563 | {
1564 | "name": "唤醒",
1565 | "web": "https://www.keepscreenon.com/",
1566 | "tags": [
1567 | "🔧工具"
1568 | ],
1569 | "brief": "保持屏幕唤醒",
1570 | "state": "正常"
1571 | },
1572 | {
1573 | "name": "SIcon",
1574 | "web": "https://simpleicons.org/",
1575 | "tags": [
1576 | "🐱Code",
1577 | "♻︎图标"
1578 | ],
1579 | "brief": "SimpleIcons包含很多种流行品牌的免费 SVG 图标库",
1580 | "state": "正常"
1581 | },
1582 | {
1583 | "name": "据义查句",
1584 | "web": "https://wantquotes.net/",
1585 | "tags": [
1586 | "🧠学习",
1587 | "🔧工具"
1588 | ],
1589 | "brief": "根据意思来查找名人名言",
1590 | "state": "正常"
1591 | },
1592 | {
1593 | "name": "🐒type",
1594 | "web": "https://monkeytype.com/",
1595 | "tags": [
1596 | "⛹️♀️娱乐"
1597 | ],
1598 | "brief": "练习打字的网站",
1599 | "state": "正常"
1600 | },
1601 | {
1602 | "name": "腾讯文档",
1603 | "web": "https://doc.weixin.qq.com/",
1604 | "tags": [
1605 | "📒笔记",
1606 | "✏️协作",
1607 | "📁文件"
1608 | ],
1609 | "brief": "腾讯旗下的协作工具",
1610 | "state": "正常"
1611 | },
1612 | {
1613 | "name": "代码高亮",
1614 | "web": "http://word.wd1x.com/",
1615 | "tags": [
1616 | "🐱Code",
1617 | "📒笔记"
1618 | ],
1619 | "brief": "在线生成可以在word/PPT中高亮的代码,支持各类主流语言在线着色",
1620 | "state": "正常"
1621 | },
1622 | {
1623 | "name": "微信公众",
1624 | "web": "https://mp.weixin.qq.com/",
1625 | "tags": [
1626 | "👁️🗨️媒体"
1627 | ],
1628 | "brief": "公众号和小程序的后台",
1629 | "state": "正常"
1630 | },
1631 | {
1632 | "name": "飞桨",
1633 | "web": "https://aistudio.baidu.com/aistudio/index",
1634 | "tags": [
1635 | "🐱Code",
1636 | "☁️云"
1637 | ],
1638 | "brief": "一个强大且易用的开源深度学习平台",
1639 | "state": "正常"
1640 | },
1641 | {
1642 | "name": "Pexels",
1643 | "web": "https://www.pexels.com/zh-cn/",
1644 | "tags": [
1645 | "🖼️图片",
1646 | "📦资源"
1647 | ],
1648 | "brief": "摄影作者在这里免费分享最精彩的素材图片和视频",
1649 | "state": "正常"
1650 | },
1651 | {
1652 | "name": "世界名画",
1653 | "web": "https://www.nbfox.com/",
1654 | "tags": [
1655 | "🖼️图片",
1656 | "📦资源"
1657 | ],
1658 | "brief": "高清著名画作",
1659 | "state": "正常"
1660 | },
1661 | {
1662 | "name": "Git文档",
1663 | "web": "https://gitee.com/progit/index.html",
1664 | "tags": [
1665 | "🐱Code",
1666 | "🧠学习",
1667 | "📒笔记"
1668 | ],
1669 | "brief": "快来学习Git!",
1670 | "state": "正常"
1671 | },
1672 | {
1673 | "name": "Wordle",
1674 | "web": "https://www.nytimes.com/games/wordle/index.html",
1675 | "tags": [
1676 | "🕹️游戏"
1677 | ],
1678 | "brief": "很好玩的填字游戏",
1679 | "state": "正常"
1680 | },
1681 | {
1682 | "name": "哔哩哔哩",
1683 | "web": "https://www.bilibili.com/",
1684 | "tags": [
1685 | "📺视频",
1686 | "👁️🗨️媒体"
1687 | ],
1688 | "brief": "一个看视频的网站",
1689 | "state": "正常"
1690 | },
1691 | {
1692 | "name": "软件目录",
1693 | "web": "https://www.yuque.com/books/share/ec226b31-5272-4792-811b-c22334cf0a9a?#%20%E3%80%8A%E8%BD%AF%E4%BB%B6%E7%9B%AE%E5%BD%95%E3%80%8B",
1694 | "tags": [
1695 | "🧰软件"
1696 | ],
1697 | "brief": "一些付费软件的免费安装包",
1698 | "state": "正常"
1699 | },
1700 | {
1701 | "name": "itellyou",
1702 | "web": "https://next.itellyou.cn/",
1703 | "tags": [
1704 | "🧰软件"
1705 | ],
1706 | "brief": "操作系统镜像|windows|linux",
1707 | "state": "正常"
1708 | },
1709 | {
1710 | "name": "🫂Chat",
1711 | "web": "https://huggingface.co/chat/",
1712 | "tags": [
1713 | "🤖AI"
1714 | ],
1715 | "brief": "让社区最好的AI聊天模型面向所有人开放。",
1716 | "state": "正常"
1717 | },
1718 | {
1719 | "name": "菜鸟教程",
1720 | "web": "https://www.runoob.com/",
1721 | "tags": [
1722 | "🐱Code",
1723 | "🧠学习"
1724 | ],
1725 | "brief": "提供了编程的基础技术教程",
1726 | "state": "正常"
1727 | },
1728 | {
1729 | "name": "云盘资源",
1730 | "web": "https://www.aliyunpanziyuan.com/",
1731 | "tags": [
1732 | "📦资源",
1733 | "🔍搜索"
1734 | ],
1735 | "brief": "阿里云盘资源网-网盘资源共享平台",
1736 | "state": "正常"
1737 | },
1738 | {
1739 | "name": "深言达意",
1740 | "web": "https://shenyandayi.com/",
1741 | "tags": [
1742 | "🤖AI",
1743 | "🧠学习"
1744 | ],
1745 | "brief": "清华开发的根据句子找词的工具,基于AI模型",
1746 | "state": "正常"
1747 | },
1748 | {
1749 | "name": "硅基流动",
1750 | "web": "https://siliconflow.cn/zh-cn/siliconcloud",
1751 | "tags": [
1752 | "🤖AI"
1753 | ],
1754 | "brief": "提供免费的国产大模型api",
1755 | "state": "正常"
1756 | },
1757 | {
1758 | "name": "找鼠标",
1759 | "web": "https://pointerpointer.com/",
1760 | "tags": [
1761 | "⛹️♀️娱乐"
1762 | ],
1763 | "brief": "你的鼠标在哪都能被找到",
1764 | "state": "正常"
1765 | },
1766 | {
1767 | "name": "腾讯云",
1768 | "web": "https://cloud.tencent.com/",
1769 | "tags": [
1770 | "☁️云"
1771 | ],
1772 | "brief": "腾讯云平台,云主机",
1773 | "state": "正常"
1774 | },
1775 | {
1776 | "name": "图标库",
1777 | "web": "https://www.iconfont.cn/",
1778 | "tags": [
1779 | "♻︎图标",
1780 | "✒️设计"
1781 | ],
1782 | "brief": "可以找到很多官方图标",
1783 | "state": "正常"
1784 | },
1785 | {
1786 | "name": "AColor",
1787 | "web": "https://color.adobe.com/",
1788 | "tags": [
1789 | "🎈色彩"
1790 | ],
1791 | "brief": "Adobe的一个配色网站",
1792 | "state": "正常"
1793 | },
1794 | {
1795 | "name": "矩阵计算",
1796 | "web": "https://m.matrix.reshish.com/zh/",
1797 | "tags": [
1798 | "🧠学习"
1799 | ],
1800 | "brief": "最为便捷的在线矩阵计算器",
1801 | "state": "正常"
1802 | },
1803 | {
1804 | "name": "Netlify",
1805 | "web": "https://app.netlify.com/",
1806 | "tags": [
1807 | "🐱Code",
1808 | "☁️云"
1809 | ],
1810 | "brief": "一个免服务器构建网页的网站",
1811 | "state": "正常"
1812 | },
1813 | {
1814 | "name": "PH风格",
1815 | "web": "https://logoly.pro/",
1816 | "tags": [
1817 | "⛹️♀️娱乐",
1818 | "♻︎图标",
1819 | "🖼️图片"
1820 | ],
1821 | "brief": "在线的 PornHub 风格 Logo 生成工具",
1822 | "state": "正常"
1823 | },
1824 | {
1825 | "name": "网站图标",
1826 | "web": "https://fontawesome.com/",
1827 | "tags": [
1828 | "♻︎图标",
1829 | "🐱Code"
1830 | ],
1831 | "brief": "一些图标",
1832 | "state": "正常"
1833 | },
1834 | {
1835 | "name": "连通性检验",
1836 | "web": "https://ip.skk.moe/",
1837 | "tags": [
1838 | "🕸️网络",
1839 | "🔧工具"
1840 | ],
1841 | "brief": "检测你的电脑是否能连接一些节点",
1842 | "state": "正常"
1843 | },
1844 | {
1845 | "name": "微信读书",
1846 | "web": "https://weread.qq.com/",
1847 | "tags": [
1848 | "🧠学习"
1849 | ],
1850 | "brief": "一个看书的网站",
1851 | "state": "正常"
1852 | },
1853 | {
1854 | "name": "UU在线工具",
1855 | "web": "https://uutool.cn/",
1856 | "tags": [
1857 | "🔧工具"
1858 | ],
1859 | "brief": "很多的工具",
1860 | "state": "正常"
1861 | },
1862 | {
1863 | "name": "离谱相关性",
1864 | "web": "http://tylervigen.com/spurious-correlations",
1865 | "tags": [
1866 | "⛹️♀️娱乐",
1867 | "🔹其他"
1868 | ],
1869 | "brief": "什么是离谱的呢?",
1870 | "state": "正常"
1871 | },
1872 | {
1873 | "name": "淘宝",
1874 | "web": "https://www.taobao.com/",
1875 | "tags": [
1876 | "🛒购物"
1877 | ],
1878 | "brief": "买!买!买!",
1879 | "state": "正常"
1880 | },
1881 | {
1882 | "name": "DS可视化",
1883 | "web": "https://visualgo.net/",
1884 | "tags": [
1885 | "🐱Code",
1886 | "🧠学习"
1887 | ],
1888 | "brief": "数据结构和算法动态可视化",
1889 | "state": "正常"
1890 | },
1891 | {
1892 | "name": "飞布API",
1893 | "web": "https://www.fireboom.io/",
1894 | "tags": [
1895 | "🐱Code",
1896 | "☁️云"
1897 | ],
1898 | "brief": "可视化API开发平台",
1899 | "state": "正常"
1900 | },
1901 | {
1902 | "name": "豆包AI",
1903 | "web": "https://www.doubao.com/chat/",
1904 | "tags": [
1905 | "🤖AI"
1906 | ],
1907 | "brief": "抖音旗下的AI助手",
1908 | "state": "正常"
1909 | },
1910 | {
1911 | "name": "80S",
1912 | "web": "https://www.80sgod.com/",
1913 | "tags": [
1914 | "📺视频"
1915 | ],
1916 | "brief": "提供最新高清MP4电影,电视剧,动漫下载.采用迅雷磁力链方式下载",
1917 | "state": "正常"
1918 | },
1919 | {
1920 | "name": "商量",
1921 | "web": "https://chat.sensetime.com/",
1922 | "tags": [
1923 | "🤖AI"
1924 | ],
1925 | "brief": "商汤自研的超千亿参数语言大模型应用平台",
1926 | "state": "正常"
1927 | },
1928 | {
1929 | "name": "渐变色",
1930 | "web": "https://uigradients.com/",
1931 | "tags": [
1932 | "🎈色彩"
1933 | ],
1934 | "brief": "提供上百种渐变色",
1935 | "state": "正常"
1936 | },
1937 | {
1938 | "name": "油猴脚本",
1939 | "web": "https://greasyfork.org/zh-CN",
1940 | "tags": [
1941 | "🔧工具",
1942 | "🧰软件"
1943 | ],
1944 | "brief": "这里是一个提供用户脚本的网站",
1945 | "state": "正常"
1946 | },
1947 | {
1948 | "name": "SpeedTest",
1949 | "web": "https://speed.cloudflare.com/",
1950 | "tags": [
1951 | "🕸️网络",
1952 | "🔧工具"
1953 | ],
1954 | "brief": "Cloudflare的测速工具",
1955 | "state": "正常"
1956 | },
1957 | {
1958 | "name": "DeepL",
1959 | "web": "https://www.deepl.com/translator",
1960 | "tags": [
1961 | "🧠学习"
1962 | ],
1963 | "brief": "一个很好用的翻译网站",
1964 | "state": "正常"
1965 | },
1966 | {
1967 | "name": "LaTeX公式",
1968 | "web": " https://www.latexlive.com/",
1969 | "tags": [
1970 | "🐱Code",
1971 | "📒笔记"
1972 | ],
1973 | "brief": "在线编辑LaTeX公式的工具",
1974 | "state": "正常"
1975 | },
1976 | {
1977 | "name": "国外手机号",
1978 | "web": "https://sms-activate.org",
1979 | "tags": [
1980 | "🔧工具"
1981 | ],
1982 | "brief": "虚拟号码来在线接受短信",
1983 | "state": "正常"
1984 | },
1985 | {
1986 | "name": "视频号",
1987 | "web": "https://channels.weixin.qq.com/",
1988 | "tags": [
1989 | "👁️🗨️媒体"
1990 | ],
1991 | "brief": "微信视频号",
1992 | "state": "正常"
1993 | },
1994 | {
1995 | "name": "01万物",
1996 | "web": "https://lingyiwanwu.com/",
1997 | "tags": [
1998 | "🤖AI"
1999 | ],
2000 | "brief": "AI工作平台与大模型开发平台",
2001 | "state": "正常"
2002 | },
2003 | {
2004 | "name": "Kaggle",
2005 | "web": "https://www.kaggle.com/",
2006 | "tags": [
2007 | "🔢数据",
2008 | "🧠学习"
2009 | ],
2010 | "brief": "找一些成品的数据文件以及其他开发者对数据的处理",
2011 | "state": "正常"
2012 | },
2013 | {
2014 | "name": "fydeos",
2015 | "web": "https://fydeos.com/",
2016 | "tags": [
2017 | "🧰软件",
2018 | "🏠主页"
2019 | ],
2020 | "brief": "基于chromeos的一个桌面系统",
2021 | "state": "正常"
2022 | },
2023 | {
2024 | "name": "图形计算器",
2025 | "web": "https://www.desmos.com/calculator?lang=zh-CN",
2026 | "tags": [
2027 | "🧠学习",
2028 | "🖼️图片"
2029 | ],
2030 | "brief": "绘制函数图形并进行可视化",
2031 | "state": "正常"
2032 | },
2033 | {
2034 | "name": "面试鸭",
2035 | "web": "https://www.mianshiya.com/",
2036 | "tags": [
2037 | "🧠学习",
2038 | "🐱Code"
2039 | ],
2040 | "brief": "提供了很多面试题",
2041 | "state": "正常"
2042 | },
2043 | {
2044 | "name": "在线剪视频",
2045 | "web": "https://online-video-cutter.com/cn/",
2046 | "tags": [
2047 | "🔧工具",
2048 | "📺视频"
2049 | ],
2050 | "brief": "从任何在线视频中剪切片段",
2051 | "state": "正常"
2052 | },
2053 | {
2054 | "name": "拼接音视频",
2055 | "web": "https://maple3142.github.io/mergemp4/",
2056 | "tags": [
2057 | "🔧工具",
2058 | "👁️🗨️媒体"
2059 | ],
2060 | "brief": "将音频和视频拼到一起(不负责对齐)",
2061 | "state": "正常"
2062 | },
2063 | {
2064 | "name": "9to5mac",
2065 | "web": "https://9to5mac.com/",
2066 | "tags": [
2067 | "🍎Apple",
2068 | "🗞️新闻"
2069 | ],
2070 | "brief": "苹果新闻和传言",
2071 | "state": "正常"
2072 | },
2073 | {
2074 | "name": "赛博佛祖",
2075 | "web": "https://fozu.ink/",
2076 | "tags": [
2077 | "🤖AI"
2078 | ],
2079 | "brief": "一个配备有ChatGPT的佛陪伴在您的身边",
2080 | "state": "正常"
2081 | },
2082 | {
2083 | "name": "OpenArt",
2084 | "web": "https://openart.ai/home",
2085 | "tags": [
2086 | "🖼️图片",
2087 | "🤖AI"
2088 | ],
2089 | "brief": "AI艺术生成器",
2090 | "state": "正常"
2091 | },
2092 | {
2093 | "name": "即时工具",
2094 | "web": "https://www.67tool.com/",
2095 | "tags": [
2096 | "🔧工具"
2097 | ],
2098 | "brief": "一些工具",
2099 | "state": "正常"
2100 | },
2101 | {
2102 | "name": "站长之家",
2103 | "web": "https://tool.chinaz.com/",
2104 | "tags": [
2105 | "🔧工具",
2106 | "🕸️网络"
2107 | ],
2108 | "brief": "提供各种查询工具",
2109 | "state": "正常"
2110 | },
2111 | {
2112 | "name": "MD排版",
2113 | "web": "https://md.guozh.net/",
2114 | "tags": [
2115 | "⚙️转换",
2116 | "📒笔记"
2117 | ],
2118 | "brief": "让markdown可以很好的发在公众号上",
2119 | "state": "正常"
2120 | },
2121 | {
2122 | "name": "谷歌翻译",
2123 | "web": "https://translate.google.com/",
2124 | "tags": [
2125 | "🧠学习"
2126 | ],
2127 | "brief": "(也许)需要魔法才能用的翻译工具",
2128 | "state": "正常"
2129 | },
2130 | {
2131 | "name": "新榜",
2132 | "web": "https://newrank.cn/",
2133 | "tags": [
2134 | "👁️🗨️媒体"
2135 | ],
2136 | "brief": "更多更好的KOL自媒体,品效合一的传播销售方案,尽在新榜",
2137 | "state": "正常"
2138 | },
2139 | {
2140 | "name": "耳机评测站",
2141 | "web": "https://www.woodenears.com/",
2142 | "tags": [
2143 | "📱数码"
2144 | ],
2145 | "brief": "耳机测评网站",
2146 | "state": "正常"
2147 | },
2148 | {
2149 | "name": "Jetbrains",
2150 | "web": "https://www.jetbrains.com/zh-cn/",
2151 | "tags": [
2152 | "🐱Code",
2153 | "🧰软件",
2154 | "🏠主页"
2155 | ],
2156 | "brief": "为专业人士和团队制作开发者工具",
2157 | "state": "正常"
2158 | },
2159 | {
2160 | "name": "图司机",
2161 | "web": "https://www.tusij.com/",
2162 | "tags": [
2163 | "🖼️图片",
2164 | "✒️设计"
2165 | ],
2166 | "brief": "简单修图网页",
2167 | "state": "正常"
2168 | },
2169 | {
2170 | "name": "OTP",
2171 | "web": "https://otp.landian.vip/zh-cn/",
2172 | "tags": [
2173 | "🧰软件",
2174 | "🔧工具"
2175 | ],
2176 | "brief": "OfficeToolPlus软件的工具网页",
2177 | "state": "正常"
2178 | },
2179 | {
2180 | "name": "ChatDoc",
2181 | "web": "https://chatdoc.com/chatdoc/#/upload",
2182 | "tags": [
2183 | "🤖AI"
2184 | ],
2185 | "brief": "一个文件阅读助手,可以快速从文档中提取、定位和汇总信息",
2186 | "state": "正常"
2187 | },
2188 | {
2189 | "name": "壁纸",
2190 | "web": "https://wallhaven.cc/",
2191 | "tags": [
2192 | "🖼️图片",
2193 | "📦资源"
2194 | ],
2195 | "brief": "好看高清壁纸",
2196 | "state": "正常"
2197 | },
2198 | {
2199 | "name": "慕课",
2200 | "web": "https://www.icourse163.org/",
2201 | "tags": [
2202 | "🧠学习"
2203 | ],
2204 | "brief": "网课,内含很多精品公开课",
2205 | "state": "正常"
2206 | },
2207 | {
2208 | "name": "知网",
2209 | "web": "https://www.cnki.net/",
2210 | "tags": [
2211 | "🧠学习",
2212 | "📦资源"
2213 | ],
2214 | "brief": "面向读者提供各类学术资源统一检索、统一导航、在线阅读和下载服务",
2215 | "state": "正常"
2216 | },
2217 | {
2218 | "name": "Gitee",
2219 | "web": "https://gitee.com/",
2220 | "tags": [
2221 | "🐱Code",
2222 | "☁️云",
2223 | "✏️协作"
2224 | ],
2225 | "brief": "存代码用的,国内访问很快",
2226 | "state": "正常"
2227 | },
2228 | {
2229 | "name": "字幕库",
2230 | "web": "https://zmk.pw/",
2231 | "tags": [
2232 | "📦资源"
2233 | ],
2234 | "brief": "字幕下载网站",
2235 | "state": "正常"
2236 | },
2237 | {
2238 | "name": "网页存档",
2239 | "web": "https://archive.ph/",
2240 | "tags": [
2241 | "📒笔记",
2242 | "🔢数据"
2243 | ],
2244 | "brief": "将网页永久保存,即使原来的消失了,仍然可以通过存档查看网页内容",
2245 | "state": "正常"
2246 | },
2247 | {
2248 | "name": "Gmail",
2249 | "web": "https://mail.google.com/mail/",
2250 | "tags": [
2251 | "📧邮箱"
2252 | ],
2253 | "brief": "谷歌邮箱",
2254 | "state": "正常"
2255 | },
2256 | {
2257 | "name": "DuckGo",
2258 | "web": "https://start.duckduckgo.com/",
2259 | "tags": [
2260 | "🔍搜索"
2261 | ],
2262 | "brief": "搜索但保护你的隐私",
2263 | "state": "正常"
2264 | },
2265 | {
2266 | "name": "敲字背单词",
2267 | "web": "https://qwerty.kaiyi.cool/",
2268 | "tags": [
2269 | "🧠学习",
2270 | "⛹️♀️娱乐"
2271 | ],
2272 | "brief": "为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件",
2273 | "state": "正常"
2274 | },
2275 | {
2276 | "name": "在线工具",
2277 | "web": "https://tool.lu/",
2278 | "tags": [
2279 | "🔧工具"
2280 | ],
2281 | "brief": "有很多各式各样的在线工具",
2282 | "state": "正常"
2283 | },
2284 | {
2285 | "name": "SOC-PK",
2286 | "web": "https://www.socpk.com/",
2287 | "tags": [
2288 | "📱数码"
2289 | ],
2290 | "brief": "极客湾做的移动芯片排行",
2291 | "state": "正常"
2292 | },
2293 | {
2294 | "name": "一网一匠",
2295 | "web": "https://ywyj.cn/",
2296 | "tags": [
2297 | "🔧工具",
2298 | "🕊️up主"
2299 | ],
2300 | "brief": "一个up主叫一网一匠做的主页",
2301 | "state": "正常"
2302 | },
2303 | {
2304 | "name": "秒搜",
2305 | "web": "https://miaosou.fun/",
2306 | "tags": [
2307 | "🔍搜索",
2308 | "📦资源"
2309 | ],
2310 | "brief": "一个很好用的网盘资源搜索引擎",
2311 | "state": "正常"
2312 | },
2313 | {
2314 | "name": "Typora",
2315 | "web": "https://www.typoraio.cn/",
2316 | "tags": [
2317 | "📒笔记"
2318 | ],
2319 | "brief": "一款 Markdown 编辑器和阅读器",
2320 | "state": "正常"
2321 | },
2322 | {
2323 | "name": "文心一言",
2324 | "web": "https://yiyan.baidu.com/",
2325 | "tags": [
2326 | "🤖AI"
2327 | ],
2328 | "brief": "百度的大语言模型",
2329 | "state": "正常"
2330 | },
2331 | {
2332 | "name": "流程图导图",
2333 | "web": "https://www.processon.com/",
2334 | "tags": [
2335 | "🖼️图片",
2336 | "🧠学习"
2337 | ],
2338 | "brief": "流程清晰可见",
2339 | "state": "正常"
2340 | },
2341 | {
2342 | "name": "INS",
2343 | "web": "https://www.instagram.com/",
2344 | "tags": [
2345 | "👁️🗨️媒体"
2346 | ],
2347 | "brief": "一款Meta的社交媒体平台",
2348 | "state": "正常"
2349 | },
2350 | {
2351 | "name": "进化",
2352 | "web": "https://evolve.g8hh.com/",
2353 | "tags": [
2354 | "🕹️游戏"
2355 | ],
2356 | "brief": "从原生质开始,逐步解锁高级生命形式,开启属于自己的文明",
2357 | "state": "正常"
2358 | },
2359 | {
2360 | "name": "星标历史图",
2361 | "web": "https://star-history.com/",
2362 | "tags": [
2363 | "🐱Code",
2364 | "🖼️图片"
2365 | ],
2366 | "brief": "GitHub上缺失的星标历史图,star-history",
2367 | "state": "正常"
2368 | },
2369 | {
2370 | "name": "PY标准库",
2371 | "web": "https://docs.python.org/zh-cn/3/library/",
2372 | "tags": [
2373 | "🐱Code",
2374 | "🧠学习"
2375 | ],
2376 | "brief": "语言参考手册描述了Python的语法和语义,库参考则介绍了Python标准库",
2377 | "state": "正常"
2378 | },
2379 | {
2380 | "name": "免费歌曲",
2381 | "web": "https://tool.liumingye.cn/music/#/",
2382 | "tags": [
2383 | "🎵音频"
2384 | ],
2385 | "brief": "免费下载歌曲",
2386 | "state": "正常"
2387 | },
2388 | {
2389 | "name": "Notion头像",
2390 | "web": "https://notion-avatar.vercel.app/zh",
2391 | "tags": [
2392 | "✒️设计",
2393 | "🖼️图片"
2394 | ],
2395 | "brief": "制作notion风格的头像",
2396 | "state": "正常"
2397 | },
2398 | {
2399 | "name": "7ED",
2400 | "web": "https://www.7ed.net/",
2401 | "tags": [
2402 | "🕸️网络",
2403 | "🔧工具"
2404 | ],
2405 | "brief": "包含静态资源 CDN 加速服务、Git 资源加速服务、海外图片内地加速服务、Bing 每日图片 API等。",
2406 | "state": "正常"
2407 | },
2408 | {
2409 | "name": "W3school",
2410 | "web": "https://www.w3school.com.cn/",
2411 | "tags": [
2412 | "🧠学习"
2413 | ],
2414 | "brief": "全球最大的中文 Web 技术教程",
2415 | "state": "正常"
2416 | },
2417 | {
2418 | "name": "Notion",
2419 | "web": "https://www.notion.so/",
2420 | "tags": [
2421 | "✏️协作",
2422 | "📒笔记",
2423 | "✅效率"
2424 | ],
2425 | "brief": "一款功能强大的协作工具和笔记应用",
2426 | "state": "正常"
2427 | },
2428 | {
2429 | "name": "cal计算器",
2430 | "web": "https://www.calculator.net/calorie-calculator.html",
2431 | "tags": [
2432 | "🔧工具"
2433 | ],
2434 | "brief": "估算每天需要摄入的卡路里数量,以维持、减重或增重",
2435 | "state": "正常"
2436 | },
2437 | {
2438 | "name": "BibiGPT",
2439 | "web": "https://b.jimmylv.cn/",
2440 | "tags": [
2441 | "🤖AI",
2442 | "📒笔记",
2443 | "📺视频"
2444 | ],
2445 | "brief": "一键总结音视频",
2446 | "state": "正常"
2447 | },
2448 | {
2449 | "name": "重开模拟器",
2450 | "web": "https://liferestart.syaro.io/public/index.html",
2451 | "tags": [
2452 | "🕹️游戏"
2453 | ],
2454 | "brief": "如果能重来~",
2455 | "state": "正常"
2456 | },
2457 | {
2458 | "name": "打开文件",
2459 | "web": "https://openfiles.online/",
2460 | "tags": [
2461 | "🔧工具"
2462 | ],
2463 | "brief": "无需下载软件,在线打开图片、文本、视频、音频、压缩包,让工作更轻松",
2464 | "state": "正常"
2465 | },
2466 | {
2467 | "name": "Outlook",
2468 | "web": "https://outlook.live.com/mail/",
2469 | "tags": [
2470 | "📧邮箱"
2471 | ],
2472 | "brief": "微软邮箱",
2473 | "state": "正常"
2474 | },
2475 | {
2476 | "name": "徽章制作",
2477 | "web": "https://shields.io/",
2478 | "tags": [
2479 | "🐱Code",
2480 | "♻︎图标"
2481 | ],
2482 | "brief": "提供各种服务的简洁、一致的易读徽章(badge、徽标)",
2483 | "state": "正常"
2484 | },
2485 | {
2486 | "name": "X",
2487 | "web": "https://x.com",
2488 | "tags": [
2489 | "👁️🗨️媒体"
2490 | ],
2491 | "brief": "推特,已被马斯克收购",
2492 | "state": "正常"
2493 | },
2494 | {
2495 | "name": "ChatPDF",
2496 | "web": "https://www.chatpdf.com/",
2497 | "tags": [
2498 | "🤖AI"
2499 | ],
2500 | "brief": "ChatPDF是一种快速简便的方法,可以与任何PDF文件进行对话",
2501 | "state": "正常"
2502 | },
2503 | {
2504 | "name": "播客搜索",
2505 | "web": "https://pod.link/",
2506 | "tags": [
2507 | "🔧工具",
2508 | "🎵音频"
2509 | ],
2510 | "brief": "搜索播客的网站",
2511 | "state": "正常"
2512 | },
2513 | {
2514 | "name": "空投",
2515 | "web": "https://airportal.cn/",
2516 | "tags": [
2517 | "📁文件"
2518 | ],
2519 | "brief": "快速传文件",
2520 | "state": "正常"
2521 | },
2522 | {
2523 | "name": "数学求解",
2524 | "web": "https://zs.symbolab.com/",
2525 | "tags": [
2526 | "🧠学习"
2527 | ],
2528 | "brief": "Symbolab:方程搜索和数学求解器 - 一步步求解代数,三角函数和微积分问题",
2529 | "state": "正常"
2530 | },
2531 | {
2532 | "name": " Civitai",
2533 | "web": "https://civitai.com/",
2534 | "tags": [
2535 | "🤖AI",
2536 | "🖼️图片"
2537 | ],
2538 | "brief": "Civitai是一个专注于分享和交流AI生成艺术及其相关资源的社区平台。",
2539 | "state": "正常"
2540 | },
2541 | {
2542 | "name": "SQLKiller",
2543 | "web": "https://www.sqlkiller.com/",
2544 | "tags": [
2545 | "🤖AI"
2546 | ],
2547 | "brief": "直接描述你的取数需求,一键生成SQL",
2548 | "state": "正常"
2549 | },
2550 | {
2551 | "name": "少数派",
2552 | "web": "https://sspai.com/",
2553 | "tags": [
2554 | "📱数码",
2555 | "👁️🗨️媒体",
2556 | "🗞️新闻"
2557 | ],
2558 | "brief": "写文字的平台,数码科技相关",
2559 | "state": "正常"
2560 | },
2561 | {
2562 | "name": "找图标",
2563 | "web": "https://pushkeen.ai/appstore-icons",
2564 | "tags": [
2565 | "✒️设计",
2566 | "🔍搜索"
2567 | ],
2568 | "brief": "快速下载appstore的图标",
2569 | "state": "正常"
2570 | },
2571 | {
2572 | "name": "CSDN",
2573 | "web": "https://www.csdn.net/",
2574 | "tags": [
2575 | "🐱Code",
2576 | "🔍搜索"
2577 | ],
2578 | "brief": "代码有关的问题来问我",
2579 | "state": "正常"
2580 | },
2581 | {
2582 | "name": "Topbook",
2583 | "web": "https://topbook.cc/overview",
2584 | "tags": [
2585 | "🕊️up主",
2586 | "🏠主页",
2587 | "✅效率"
2588 | ],
2589 | "brief": "一个百科全书",
2590 | "state": "正常"
2591 | },
2592 | {
2593 | "name": "XFastest",
2594 | "web": "https://news.xfastest.com/",
2595 | "tags": [
2596 | "🗞️新闻"
2597 | ],
2598 | "brief": "香港科技新闻网站",
2599 | "state": "正常"
2600 | }
2601 | ]
--------------------------------------------------------------------------------