# FileSite.io - 基于文件和目录管理网址、文章、图片、视频的标准 **摘要:** 我们基于已有的文件格式定义了一个管理几种用户常用数据类型的**标准**,旨在帮助用户在保留现有内容管理习惯的前提下,更容易地把自己的创作建设成网站、App,同时还能更简单地把创作发布到各种平台。 此标准目前支持网址、文章、图片和视频四种类型的数据,如有需要还将扩展其它的数据类型。 ## 简介 我们相信每个人都是一名创作者,他/她可以是作家,可以是摄影师,还可以是摄像师,也许他/她还会把自己喜欢的网站收藏并加以分类。 因为现有的平台和环境,多数人的创作只能静静地躺在电脑的硬盘里,但终将有一天,在许许多多的从业者们的推动下,把个人的创作内容建设成网站、App的门槛会越来越低,那时人人都可以轻松、快捷地创建自己的网站和App,能用一键上传的功能就能把作品发布到各大平台。 我们还坚信,**每个人的作品所有权始终都归作者所有**,无论他/她已经把作品发布到哪个平台,只要他/她愿意,随时都能删除某个平台上他/她所有的数据,从电脑把作品快速上传到另一个平台是如此简单,这将改变平台和创作者之间的关系,不再是创作者依赖平台,而是**平台依赖创作者**。 正因为如此,我们提出了一个新标准,它没有采用任何新技术,完全基于已有的操作系统、文件系统和文件类型,以及大部分人现有的使用习惯,它也是一次抛砖引玉,让这一天早点到来吧! ## 版本 名称:filesite_2023 版本号:20230130 修改时间:2023-01-30 ## 目录和文件 本标准所说的目录和文件,是指Windows、Linux、MacOS等常用操作系统中的文件和目录。 如果市面上不同操作系统中对文件和目录的命名规范存在差异,本标准则采用他们都支持的部分。 ## 数据类型 当前版本支持以下几种类型的数据: | 类型 | 格式 | | ---- | ---- | | 网址 | .url 快捷方式 | | 文章 | .md markdown文件 | | 图片 | .jpg, .png, .gif, .ico | | 视频 | .mp4, .m3u8, .ts | ## 数据说明 如果需要对上述类型的数据进行扩展说明,请使用.txt格式的纯文本文件保存,我们把这类.txt文件称为“**描述文件**”。 描述文件命名规则如下: ``` 目录的描述文件:{英文小写属性名}.txt 文件的描述文件:{被描述文件名_}{英文小写属性名}.txt ``` 几个常用的属性描述文件如下: | 文件名 | 说明 | 属性名 | | ---- | ---- | ---- | | title.txt | 标题 | title | | description.txt | 描述信息 | description | | keywords.txt | 关键词信息 | keywords | | snapshot.txt | 快照图片 | snapshot | ## 目录和文件结构 目录里可包含子目录和文件,目录层级**最多支持 5 级**。 用目录对数据进行**分组**,同一分组的文件放在同一个目录里。 示例(字母**d**代表目录,字母**f**代表文件): ``` -d- 小说 |_d_ 金庸小说 |_f_ 最爱金庸网站图标.ico |_f_ 最爱金庸.url |_d_ 古龙小说 |_f_ 最爱古龙网站图标.ico |_f_ 最爱古龙.url -d- 图片 |_d_ 图片搜索 |_f_ 谷歌图片搜索图标.ico |_f_ 谷歌图片搜索.url |_f_ description.txt |_d_ 必应图片搜索 |_f_ bing图标.ico |_f_ bing.url |_f_ title.txt ``` ## API数据结构 ### 目录-Directory ``` [ 'id' => '根据完整路径生成的唯一编号', 'pid' => '父目录id', //如果有父目录的话 'directory' => '倚天屠龙记', 'realpath' => '/www/webroot/content/倚天屠龙记/', 'path' => '/list/?id={id}', 'snapshot' => '/content/倚天屠龙记封面图.jpg', 'files' => [...], //文件列表 'directories' => [...] //目录列表 ] ``` ### 文件-File 除网址之外的文章、图片、视频文件。 ``` [ 'id' => '根据完整路径生成的唯一编号', 'pid' => '父目录id', //如果有父目录的话 'filename' => '第一章', 'realpath' => '/www/webroot/content/倚天屠龙记/第一章.md', 'path' => '/view/?id={id}', 'extension' => 'md', 'fstat' => [...], //同php方法fstat: https://www.php.net/manual/en/function.fstat.php 'content' => '文章内容...', 'description' => '文章简介...', 'keywords' => '文章关键词...', 'snapshot' => '/content/倚天屠龙记/第一章封面图.jpg', ] ``` .txt,.md和.url 3 种文件说明: * .txt文件是其它所有文件的描述文件,不会出现在文件列表里; * .md会读取文件内容并存储在属性content里; * .url读取文件内容并存储在属性shortcut里; ### 网址-Shortcut .url文件是一种通用的网页快捷方式,它的数据结构比上述文件数据结构多了一个属性:**shortcut**。 ``` [ 'id' => '根据完整路径生成的唯一编号', 'pid' => '父目录id', //如果有父目录的话 'filename' => 'filesite.io', 'realpath' => '/www/webroot/content/网址导航/filesite.io.url', 'path' => '/link/?id={id}', 'extension' => 'url', 'fstat' => [...], //同php方法fstat: https://www.php.net/manual/en/function.fstat.php 'shortcut' => [ 'name' => 'filesite.io', 'url' => 'https://filesite.io', ], ] ``` .url文件内容示例: ``` [InternetShortcut] URL=https://microsoft.com/ ``` ## PHP版实现 我们基于本标准用php做了一个名为Machete的开源程序,你可以在github上找到它: ``` https://github.com/filesite-io/machete/ ``` 详细介绍参见: [Machete - 无数据库、基于文件和目录的Markdown文档、网址导航、图书、图片、视频网站PHP开源系统](./Machete_Doc.md) ## 联系我们 如果你觉得Filesite.io对你有帮助,并愿意在某个项目中使用它,很高兴你跟我们分享你的故事: ``` machete@filesite.io ```