Giter Site home page Giter Site logo

allanchain / pkuholecommunity Goto Github PK

View Code? Open in Web Editor NEW
70.0 9.0 5.0 6.53 MB

P 大树洞网页版社区分支,欢迎大家动手自己实现功能

Home Page: https://pkuholece.gitee.io/stable/

License: GNU General Public License v3.0

HTML 1.09% CSS 15.72% JavaScript 83.19%
hole react

pkuholecommunity's Introduction

PKU Hole Community

P 大树洞网页版社区分支

(简称“树洞社区版”)

GitHub tag (latest SemVer release) GitHub tag (latest SemVer pre-release) GitHub license GitHub contributors

树洞网页版无疑取得了巨大的成功,占有较大的“市场份额”

贵校有很多动手能力强的同学,也有很多同学有着对网页版树洞的独特想法。这些想法有的是合理的、巧妙的,有的是脑洞太大不切实际的;有的完全可以在客户端完成,有的则需要联系后端。

然而官方并没有很好的处理同学们自己动手和表达想法的渠道。而且有很多呼声较高的功能迟迟不添加(毕竟一个人的精力有限)

P 大树洞网页版社区分支(以下简称“社区版”)的定位是提供一个交流的平台,提供大家动手实现的方案,让大家自己动手实现对树洞网页版的想法。社区版并非试图取代官方版本,更多的是牺牲一部分稳定性来换取好用的功能。如果大家喜欢,乐于贡献代码或想法,社区版会继续维护下去。

计划功能列表

project

更新功能列表

(此列表跟进 beta 版)

主要功能

  • 屏蔽词
  • 在关注列表中搜索
  • 别名,适用于给神洞等一个名字
  • 关注列表按最新回复排序
  • 可设置默认隐藏图片

次要功能

  • 从一个洞内通过链接访问另一个洞,返回后记住原状态(即保留刷到的位置以及是否是倒序)
  • 关注列表中缓存更新了的洞会有黄点提示(通常情况下是有新的回复)
  • 侧边栏模式下禁止主时间线的滚动
  • 以文本形式复制树洞时遵从逆序和仅看

界面/行为改变

  • 顶栏中的应用链接(成绩、不咕)目前可以正常访问,但访问时会回到官方版
  • 和 App 客户端一样受到验证限制,但提供不稳定的自动验证选项
  • 将 CNZZ 统计替换为简单且隐私友好型的 Microanalytics,所有人均可查看(有时访问数会超过月度限制,可以切换到本月视图查看本月前几天的数据)

项目管理

  • 使用主流的代码风格
  • 配置 GitHub Actions, 利用版本号控制发布

其他

  • 社区版提供 Beta 测试版本,登录状态与稳定版同步,但是会不稳定,试验性的新功能会优先推送到 Beta 版

Contributing

有更多的同学喜欢,才有动力继续开发。而且现有的社区版开发者并非 React 土著,十分欢迎有 React 经验的同学共同开发。

社区版欢迎大家提出功能建议,或者参与到社区版的维护和更新中。相比于建议,社区版会优先考虑 PR。提出问题请到 GitHub Issue,树洞内讨论建议包含“树洞社区版”关键词。希望有能力的同学一起打造树洞社区版。

更多事项见 CONTRIBUTING.md

Note

使用社区版同样应当遵守树洞规范。

这个版本属于“自行实现你的想法”,基于 GPLv3 在 GitHub 开源。而不恰当使用此版本或利用此版本的漏洞对 PKU Helper 造成的不利影响由用户负责。作为社区版本,社区(no warranty)维护版本的安全,同时也欢迎同学实现你的想法。

附 PKU Helper 官方的意思:

根据GPL,你有权fork【网页版树洞前端】的代码并进行相应的修改。请注意,你的修改版本必须依然基于GPL授权,并依据此公开源码。

根据树洞规范5.3规定,非官方客户端在PKU Helper团队认定造成不利影响,例如非法攻击服务器、盗取用户个人信息时,我们有权对其进行封禁。

以下为原 README(注:这与访问原树洞网页版的 GitHub 链接不同,因为在某事件之后,xmcp 做了一些不同寻常的操作)


PKU Helper 网页版 P大树洞:pkuhelper.pku.edu.cn/hole

浏览器兼容

下表为当前 PKU Helper 网页版的浏览器兼容目标:

平台 Desktop Windows macOS iOS Android
浏览器 Chrome Chromium
(国产浏览器)
Firefox EdgeHTML IE Safari Safari 微信
(WebView)
Chrome Chromium
(WebView)
优先兼容 76+ 最新版 12+ 最新版
兼容 56+ 最新版 56+ 最新版 10+ 10+ 最新版 56+ 最新版
不兼容 其他 其他 其他 其他 全部 其他 其他 其他 其他 其他

优先兼容 指不应有 bug 和性能问题,可以 Polyfill 的功能尽可能提供,若发现问题会立刻修复。

兼容 指不应有恶性 bug 和严重性能问题,若发现问题会在近期修复。

不兼容 指在此种浏览器上访问本网站是未定义行为,问题反馈一般会被忽略。

num+ 指符合版本号 num 的最新版本及后续所有版本。最新版 以 stable 分支为准。

问题反馈

对 PKU Helper 网页版的 bug 反馈请在相应仓库提交 Issue。

欢迎提出功能和 UI 建议,但可能不会被采纳。根据 GPL,你有权自行实现你的想法。

不方便在 GitHub 上说明的问题可以邮件 xmcp at pku dot edu dot cn。邮件内容可能会被公开。

对 PKU Helper 后端服务、客户端、账号、树洞内容的反馈请联系相应人员,或邮件 helper at pku dot edu dot cn。

License

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

pkuholecommunity's People

Contributors

allanchain avatar dependabot-preview[bot] avatar dependabot[bot] avatar xmcp avatar yixuan-wang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pkuholecommunity's Issues

登录后显示:TypeError: Cannot read property 'length' of undefined

如题,网页版也有同样的问题,控制台错误描述:

TypeError: Cannot read properties of undefined (reading 'length')
    at Flows.js:1179:41
n @ Flows.js:1165
widgets.js:126 
        
       loading appswitcher items failed
(匿名) @ widgets.js:126
widgets.js:127 TypeError: Failed to fetch
    at widgets.js:108:13
(匿名) @ widgets.js:127

解决 beta 版本和 stable 版本之间的冲突

问题简述

#21 中为了不必更改 beta 版本的 PUBLIC_URL,还可共用部分 assets,故部署与 beta.html

但是这引起了 service worker 的冲突问题。react 默认使用 precache(在 service worker 安装时 cache 资源),而两个版本的 precache-manifest 的内容和名字不同,同时 service-worker.js 被 beta 版本覆盖,从而造成冲突。stable 版本的 precache-manifest 被污染,造成加载完成却白屏的现象。

同时,更改共有文件(如字体文件)也会引起问题。

解决方案

应该使两个版本彻底分离。目前看来,解决方案有:

  • (preferred) 使用两个子文件夹,stable/beta/,在 index.html 中增加 redirect
  • (should work)另开仓库部署 beta 版本

注意事项

  • 在问题解决前,不得发布 beta 版本
  • 如要发布 beta 版本,则需在 ci 中选择不覆盖 service worker

如何过渡

masterfix-ci-beta 分支中,注释掉发布部分,使用 upload artifacts 测试。最后 squash merge

(虽然 fix-ci-beta 里的应该不会触发 master 的 workflow)

v0.2.5 Release (Plan)

截至 976afe4

Release Note (Draft)

因为有较多小功能的更新,跳过 v0.2.4。主要更新如下:

  • 提供 beta 版,为新开发功能的实验地,登录状态与原社区版同步,地址为 https://allanchain.github.io/PKUHoleCommunity/beta.html
  • 上线关注列表中搜索功能,在关注列表顶部搜索框输入关键词,即可搜索关注列表。(如果你是 RegEx 大佬,可以使用 /.+/ 格式搜索)
  • “社区版” 更加显眼
  • 修复顶部 PKU Helper 其他应用的链接
  • 去掉了默认的屏蔽词列表
  • 跟进官方
  • 修复一些警告

欢迎大家提出功能建议,或者参与到制作中来

有没有考虑对删除洞进行自动备份+页面显示

如题,本项目已经积累了一定用户量,如果可以询问用户是否自愿加入备份计划,并得到一定量的Token,理论上即可对全天所有树洞进行分钟级别监测,并在其他地方备份树洞内容。
据我所知,自树洞开洞以来,所有文本数据在10GB这个数量级。而且即使是被删除的洞,图片资源也仍然可以通过URL访问。
我之前做过 PKU NEWS(一个树洞热榜,每半小时更新一次,可以依据关注、恢复以及热度来排序,因被乐坛已下架)以及 PKU Backup(小时级备份树洞,备份率达99%,已删除) 但后来因为脚本达到每天万次(每半小时请求100页+约200条监测列表)的请求量,被计算中心定位并封号(现已解封),就有了这个idea。
如果能够召一定量集用户分散请求量,理论上就可以避免被定位非法请求请喝茶。数据量上来说,每天几千条树洞带上回复,这种原始但有效的备份方法应当是可行的。
考虑到qy现在删帖速度越来越快,对于每条树洞的持续更新时间可以设到很小,比如十分钟,那么每天1440次请求最新的几张整体页面,一天假设是3000条树洞,每条请求十次评论,则整体API请求次数大概也就是数万级别。如果完全不考虑回复,只考虑主贴内容,则请求量则可控制在数千级别。
已知:树洞根据Token有反爬,IP似乎也有一定限制,可能要考虑上IP池。
以上仅为个人想法,具体操作能否实现、愿不愿意实现均未知,仅供参考。

树洞更新

树洞更新

  1. 域名变更:从https://pkuhelper.pku.edu.cn/变更至https://treehole.pku.edu.cn/,主页标题由“P大树洞”变更至“北大树洞”
  2. 初次登录需要以IAAA登录,且强制要求验证手机号,移除了User_Token登录方式
  3. 发送树洞支持自己添加标签(类型限制:课程心得、失物招领、求职经历)
  4. UI似乎有微调,看起来在某些元素之间调整了间距等,调整了各种图标icon,个人感觉变得更丑了
  5. 移除了加载时的 @xmcp 标识
  6. 不再支持点击树洞链接全文复制
  7. 移除了关于界面中原作者的致谢、框架信息
  8. 北大树洞服务协议更新
  9. 目前看起来很多组件的自适应布局做的并不好,在移动端显示有许多bug
  10. 框架从React迁移到了Vue,控制台工具中可见Vue.js,且有着类似Vue的样式作用域限制类名
  11. 原有请求API失效,变更至 https://treehole.pku.edu.cn/api/ 下,请求参数不再含有user_token字段,鉴权可能变更至Cookie认证
  12. 除了第3条之外,没有任何新功能增加。
  13. 多个关键词搜索变成了取并集,而非原先的交集
  14. 移除了查看系统通知功能,即使被举报删帖也不会再得到任何回复
  15. 树洞关注更新并不及时,比如这条洞到现在都还没出现在我自己的关注列表中
  16. 显示长度增加限制,超出部分直接截断,但控制台可见剩余节点,发送长度也增加了限制(16000)
  17. 无法在关注列表中回复,这意味你回复几天前的树洞几乎不可能了(目前只能手动翻主页回复)
  18. 成绩界面当前不可用
  19. 自适应黑暗模式失效
  20. 课程评测失效
  21. 引用树洞不再支持非单行模式(存疑,如果有前缀加#就不会再像以前一样在下面显示)
  22. 移除了引用树洞的透明度减弱
  23. 密码明文发送
  24. 快速点击刷新会导致复读机界面(重复节点)
  25. 图片加载缓慢
  26. 回复最多显示500条,且是源代码层面,即html中不再包含500以后的节点
  27. 屏蔽搜索监管词库没有同步更新,现在可以检索原先的禁词。

评价:愈发难用、难看,完全罔顾开源精神,没有任何开源相关说明/致谢!!!学生权限进一步收紧,应用性能大幅下降,有用的功能几乎要么移除要么没有适配,安全性也大幅降低,我估计开发完全是外包+qy需求型/舆论管控型导向。大家的期待几乎完全落空!!!

脸都不要了!!!

不知道这个项目以后会怎么走,真的被青烟的操作搞无语了,md

更换图标解决方案

目前的图标解决方案是基于 icomoon 的,在网站上生成需要的图标字体。有以下不如意之处:

  1. icomoon 图标很
  2. 更换图标需要在原图标配置的基础上重新打包,而原图标的配置手头没有,需要手动输入。
  3. 更新图标需要更换图标字体,是二进制文件,不利于 git 版本控制。

如果换用 fontawesome(fa)material design icons(mdi)

  1. 两种方案图标都较,维护积极。
  2. 都有 React 包,引入新图标只需修改组件的 prop。
  3. 都支持 tree-shaking

但换用图标可能对用户的观感有影响……

超过 36 小时就是 2 天了

rt, 可查阅 1380860,超过 36 小时就显示 2 天比较反人类。

据考察为 react-timeago 的问题。可能歪果仁觉得这样没毛病?有没有必要修呢?

PS: 该库已一年未更新

路线规划(草稿)

目前计划实现的功能

暂时列举,如要进一步讨论可以单开 Issue,如果可以的话就列在 project 里。

按照回复时间排序

这样可以将置顶和未读提醒“毕其功于一役”

Beta 版测试功能

配置 CI,当发布如 0.3.0b1 的版本时,同时构建稳定版和 Beta 版。Beta 版的 index.html 命名为 beta.html 后,两个版本拷贝到一个文件夹中。正式版发布后,仅将其 index.html 拷贝为 beta.html 即可。

设置 Beta 版的目的是开发人员试用 Beta 版无大碍后再发布为正式版,提高稳定性。

友情链接不要 404

dependabot

是否给邮箱带来了“*扰”?

项目未来

项目能不能继续下去仍是一个未知数,姑且走一步看一步。

项目定位

树洞网页版无疑取得了巨大的成功,占有较大的“市场份额”

贵校有很多动手能力强的同学,也有很多同学有着对网页版树洞的独特想法。这些想法有的是合理的、巧妙的,有的是脑洞太大不切实际的;有的完全可以在客户端完成,有的则需要联系后端。

然而官方并没有很好的处理同学们自己动手和表达想法的渠道。而且有很多呼声较高的功能迟迟不添加(毕竟一个人的精力有限)

社区版的目的是提供一个交流的平台,提供大家动手实现的方案。允许大家齐心协力构建自己的树洞客户端。

顺便也是让开发不再受制于个人的尝试。

项目名字

树洞网页社区版?社区网页版树洞?社区版网页树洞?树洞社区版?树洞网页版 CE?

关于推广

  • 见到同学要求的网页版功能已实现时,予以回复推广
  • 新功能开发完成后,以 change log 的形式推广

关于组织

我寻思凑齐 5 个 contributor 就开个组织吧。(如果号召不到 5 个,作为“社区版”大概率坚持不下去)

关于跟进官方

到了假期,官方很有可能会发布新功能,能否跟进是一大挑战。尤其是在修改了其代码风格的情况下(欲吐槽又止)

而且在官方维护人毕业之前,我相信项目仍然能得到较好的维护。如果官方在假期中维护得很好,社区版也就没有必要存在下去了。

关注列表分组

没能收集到足够的关注列表组成的反馈……只能口胡一波……

关注在树洞里是一个非常模糊的概念,它可能表示以下意义:

  1. 点赞,+1。
  2. 吃瓜,关注(等待话题实时更新)。
  3. 参与讨论(回复后自动关注)。
  4. 订阅(等待话题(比如个人经历的分享、针对某个问题的答疑等)定期更新)。
  5. 收集(一次性发出的实用信息,比如课程测评,收集起来留待日后查阅)
  6. 留念(自己在这个洞里留下了回忆,偶尔翻一翻追忆一下)
  7. 神洞

因此关注列表内部可能确实存在分组的需求。

图标和背景图加载不出

如题。关注回复等图标以及背景图片日常加载不出来,刷新网页重启浏览器都没效果。在官方版上没有此问题。

发布树洞后不能滚动

this.props.show_sidebar(
'发表树洞',
<PostForm
token={token}
on_complete={() => {
this.props.show_sidebar(null, null);
this.do_refresh();
}}
/>,
);

show_sidebar(title, content, mode = 'push') {

谜之使用 push 模式?应该使用 clear 模式才对吧!使用 push 则 sidebar 仍认为是打开状态

要么把这里改成 clear,要么在 push 模式下也做检测,去除禁止滚动状态。

搜索代码发现仅此一处 push null, null,可能修改为 clear 模式更好一些

关于个人隐私的保护问题

今天PKU Helper官方置顶,第二条似有所指:

各位洞友,近期树洞出现的各类非北大域名“树洞”,均非官方行为,请大家注意个人隐私和账号安全:

  • 不要在陌生的网站上使用自己通常使用的密码,最好不同网站使用不同密码注册;
  • 不要在陌生的网站上使用PKU Helper的 User Token。”树洞网页版“ 提供的导出 User Token 功能仅供迁移登录使用,不要提供给他人。
    请同学们注意安全风险,在网络上做好个人信息的防护,理性上网。
    PKU Helper团队

建议开发者考虑如何应对新产生的用户隐私的顾虑,否则项目要危险了

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.