-
Notifications
You must be signed in to change notification settings - Fork 18
关于文件
你上传的文件将按照其 md5sum 来重命名,并存储为 https://byrdocs.org/files/${md5}.${ext}
,例如:
https://byrdocs.org/files/dd6388976e48a6ce2f8a30355acfcba0.pdf
https://byrdocs.org/files/62b43f8fbed2bb3087f2afc96fd89b0f.zip
文件 URL 的结构就是这样简单。所以,如果你预先知道了某个文件的 md5sum(及其后缀名),你就可以直接通过 URL 来下载它。
Note
我们仍然推荐你通过 BYR Docs 下载文件,因为通过 BYR Docs 下载的文件会自动重命名;而通过 URL 直接下载的文件不会重命名,仍使用 md5sum 作为文件名,不便于使用。
你上传的文件也是如此。通过 byrdocs-cli
上传的文件会重命名,然后其他人可以通过 URL 直接下载它。但是注意,如果不通过审核,这些文件是无法搜索到的。
我们人为地将文件区分成三个类别(type):书籍(book)、试题(test)、资料(doc)。
-
书籍 必须满足以下条件
- 是书籍(课件、笔记等形式不符合书籍这一定义)
- 是PDF格式的电子书(若为EPUB等其它格式,请考虑转换为PDF)
- 是正式出版物(以个人/团体名义公开发表,但未经出版的书籍不属于此类)
- 是教育资源(小说、散文、漫画不属于此类,除非有足够充分的证据证明它是教育资源)
-
试题 必须满足以下条件
- 是PDF格式的电子资料(若为纸质资料,可自行扫描、交由本团队扫描,或通过 考题补完计划 制作电子版
- 来自北京邮电大学(不可以是外校试题)
- 是期中/期末考试题(不可以是月考、随堂作业等阶段性试题)
- 必须是一套实际考过的真题,正常考或缓考均可(不可以是题库、模拟卷等。即使其中的大多数题目真的出现在真题中也不行)
-
资料 可以认为是以上两类的补集,不符合以上两类要求的文件可以算作此类,但是仍需满足以下条件
- 是PDF或ZIP格式(如不是,可考虑自行制作ZIP格式再提交)
- 是教育资源(学校的培养方案、规章通知等不属于此类)
- 必须能够对应到至少一门课程(否则就是无关资料)
- 必须与课程学习、考试复习相关(竞赛资料,例如大学生数学竞赛、大学生英语竞赛的相关资料不应收录)
一个文件即便符合以上条件,也有可能因为质量不过关而遭拒。
- 文件模糊不清晰,影响正常阅读。请自行想办法解决。
- 文件有明显的缺页、重页、页面乱序问题,影响正常阅读。请自行收集缺页,删除重页或调整页面顺序。
- 文件杂糅(比如,多套题目合并到了同一个PDF文件中)。请自行拆分为多个PDF,再分别提交。
- 缺失封面(说来话长,见文件封面)
为了方便检索,我们必须为每个文件录入一些元信息,比如名称、学科、版本等。
每种类别的资料都有各自的特征,所以不同类别的信息都有不同的元信息格式。你必须按照规定的格式来填写文件元信息。本项目的元信息使用 .yml
文件保存。
在编写元信息时,推荐使用 yaml 相关的语法支持(Eclipse Desktop IDE, Eclipse Che, VS Code, IntelliJ, Emacs, vim),并在文件开头根据文件类型加入不同的 schema 注释。
# yaml-language-server: $schema=https://byrdocs.org/schema/book.yaml
# yaml-language-server: $schema=https://byrdocs.org/schema/doc.yaml
# yaml-language-server: $schema=https://byrdocs.org/schema/test.yaml
下面的三个例子详细解释了不同类别的信息格式:
# yaml-language-server: $schema=https://byrdocs.org/schema/book.yaml
# 文件的 MD5 值
id: 06fa27d50ba4a4baae1b665ea48fd677
# 通过 byrdocs-cli 上传文件后得到的 URL
url: https://byrdocs.org/files/06fa27d50ba4a4baae1b665ea48fd677.pdf
# 必须是 book/test/doc 三者之一。
# 一旦确定下来,后续的内容必须按照以下格式填写
type: book
data:
# title 需与原书保持一致。部分书藉的封面标题与信息页标题不完全一致,填写哪一个都可行
# 中文书(包括外文书的中译本)使用中文书名,如「操作系统概念(原书第9版)」
# 外文书(包括中文书的外文译本)使用外文书名,如「Calculus」),但有如下例外
# 1. 语言类课程使用的外语教科书,仍用中文书名,如「全新版大学英语综合教程学生用书2」
# 2. 由中方编著的国际学院外文教科书,使用双语书名,如「线性代数/Linear Algebra」
# 3. 繁体中文书名的处理方法视同外文书
title: 理论物理学教程 第10卷 物理动理学 第2版
# 填写为数组,必填
# 尽量使用原名而非中译名。若作者原名不是英文名,可酌情考虑标注一个中译名
authors:
- Лифшиц, Евгений Михайлович(粟弗席兹)
- Питаевский, Лев Петрович(皮塔耶夫斯基)
# 如没有/未知译者,可省略此字段
translators:
- 徐锡申
- 徐春华
- 黄京民
# 对于译著而言,其原著的版本一般不等于译著的版本
# 比如本书是原著第2版,译著第1版。这时,edition 中应填译著的版本。
# 至于原著版本,可以填入 title 中
# 如未知版次,省略此字段
edition: '1'
# 如未知出版社,省略此字段
# 如果是译著,必须填写译著的出版社
# 出版社原名为英文的,使用英文名;其他语言的,使用中译名或英译名
publisher: 高等教育出版社
# 如未知出版年份,省略此字段
# 如果是译著,必须填译著的出版年份
publish_year: '2008'
# 必填
# 如果是译著,必须填译著的ISBN
# 必须填写为 ISBN13 格式,不接受 ISBN10。
# 如有多个 ISBN,可以全部填写
isbn:
- 978-7-04-023069-7
# 原则上只能是 pdf 格式
filetype: pdf
# yaml-language-server: $schema=https://byrdocs.org/schema/test.yaml
# 文件的 MD5 值
id: 154a930358251fe7bf774dd194bd9a00
# 通过 byrdocs-cli 上传文件后得到的 URL
url: https://byrdocs.org/files/154a930358251fe7bf774dd194bd9a00.pdf
# 必须是 book/test/doc 三者之一。
# 一旦确定下来,后续的内容必须按照以下格式填写
type: test
data:
# 如未知学院,可省略此字段
# 只有当你确认「此学院在当时实际考过这份考卷」时,才可以填写这个学院。如无法确认,应当不填
college:
- 人工智能学院
- 自动化学院
- 信息与通信工程学院
# 试题相关的课程,必填
course:
# 「本科」或「研究生」,如未知请省略此字段
type: 本科
# 对应课程的全称,必填。需要包括字母和括号中的内容,比如「高等数学A(上)」
# 即便是外文考试,也应当填写中文课程名
name: 概率论与数理统计
# 必填,至少需要填写 start 和 end
# 时间信息应精确到某学年的某学期,比如这里就是 2023-2024 学年第二学期。
# 如果文件中的信息不全,就只能做到尽量精确
time:
# 如果只能精确到某一年,但不知学期起止年,可以为 start 和 end 填写同一个值,比如都是 2024
# 完全不知道年份的试题是不应该收录的
start: '2023'
end: '2024'
# 只能填写「First」「Second」中的一个,如果无法精确到某个学期,可省略此字段
semester: Second
# 只能填写「期中」「期末」中的一个。如果无法精确到某个阶段,可省略此字段
stage: 期末
# 原则上只能是 pdf 格式
filetype: pdf
# 必填,只能填写「原题」「答案」中的一个或多个
# 如果只有答案而没有题面,不能算作「原题」
# 如果答案不能涵盖绝大多数题目(如,只有选择题答案,没有简答题答案),不能算作「答案」
# 如果题目显著不全,答案也显著不全,这样的文件不应当被收录
content:
- 原题
# yaml-language-server: $schema=https://byrdocs.org/schema/doc.yaml
# 文件的 MD5 值
id: 3d6fa4f7305fb91e9c014e468037310c
# 通过 byrdocs-cli 上传文件后得到的 URL
url: https://byrdocs.org/files/3d6fa4f7305fb91e9c014e468037310c.pdf
# 必须是 book/test/doc 三者之一。
# 一旦确定下来,后续的内容必须按照以下格式填写
type: doc
data:
# 请自行总结一个合适的 title
title: 工程制图习题解答
# 原则上只能是 pdf 或 zip 格式
filetype: pdf
# 资料的 course 字段不可以留空,需填写为数组
course:
- type: 本科 # 只能填写为「本科」或「研究生」,如未知请省略此字段
# 对应课程的全称,必填
# 课程名称不应省略字母和括号中的内容,比如「高等数学A(上)」
name: 工程图学
# 不可以留空。只能填写「思维导图」「题库」「答案」「知识点」「课件」中的一个或多个
# 「思维导图」顾名思义
# 「题库」是指不能归入 book/test 两类中的题库、题集,比如「军事理论题库」「线代绿书2018版」(一个非正式出版的线代题集)
# 「答案」包括课后习题答案、作业答案、题集答案等。如果它是一个有答案的题库,那么它同时属于「题库」和「答案」
# 「知识点」指的是各种辅助学习资料或考试复习资料
# 「课件」包括讲义、(非正式出版的)辅导书、教学手册等与教学息息相关的资料
content:
- 题库
- 答案
狭义上的去重就是按 md5sum 来去重,在通过 byrdocs-cli
上传时,相同的文件无法上传。
真正麻烦的在于广义上的去重:同一本书有若干不同的PDF,每个文件的质量都不同;同样是一份试题,有一版只有原题,有一版既有原题又有答案;同样的两份资料,领域相同,但内容又各有异同,只有部分重复……
这些情况实在太复杂,这里只列举一些常见的情况:
在两本书均没有质量问题(比如缺页漏页,或者很糟糕的清晰度)的前提下,我们有以下取舍指标:
- 若某本书的清晰度高于另一本,那么我们更倾向于选择前者。(这里也需要澄清一个误区,PDF的大小与它的清晰度没有必然关联)
- 若某本书有封面而另一本书没有,那么我们更倾向于选择前者(可以减少自行添加封面的麻烦)。
- 若某本书有完善的书签(bookmark)而另一本书没有,那么我们更倾向于选择前者。
若二者没有内容上的冲突,最多只有包含关系,那么当然以保留全部内容为佳。
- 若一份是原题,一份是答案,虽然不重复,也建议将其合并成同一个文件,这样方便用户一次性下载原题和答案。
- 若其中一份仅有原题,而另一份既有原题又有答案,那么最好把两者合并,原题在前,答案在后。(因为很多用户可能希望先做一遍再对答案)
- 若其中一份仅有答案,而另一份既有原题又有答案,那么前者无需保留,直接删除即可。
还有一些情况是:试题所指示的年份和科目都完全相同,但是内容基本不一致。这种重复在某些情形下是合理的——
- 正常考和补考的题目不相同;
- 不同学院的考卷不相同;
- 为避免作弊,使用了多份考卷进行考试(貌似只有疫情时期存在过这种情况);
总之,试题的去重需要考虑的东西比较多,恐怕不能给出一个确定的标准。
便宜行事
为了方便用户查找文件,BYR Docs 为每个PDF文件都制作了一份封面。这样一来,读者找书时,只需看一眼封面图就可以从众多同名书籍中找到自己想要的那本。
简而言之,我们提取封面的规则是:提取PDF文件的第一页,并通过一些必要的处理,将其转换成符合要求的JPG和WEBP文件。这一系列操作将在文件上传之后由服务器完成,所以你无需担心。
但是有一个问题:有些电子书没有封面页!
这时你需要上网找到这本电子书对应的封面页,并将其添加到这本书的第一页。
如果你使用 Linux 或 MacOS,可以通过 BYR Docs 的脚本来进行添加封面的操作。
再次提醒,BYR Docs 不接受缺少封面的文件。