当前大部分导航页类开源项目的可定制度都不高,个人想要关注的信息又过于分散,因此决定自己写一个可以由用户高度定制的导航页,并整合自己所需要的信息和功能。
恢复更新啦!过去的两年忙于打工,一直没有太多精力,最近会抽时间修一修
前端使用Vue.js,后端使用Python,MariaDB+Redis提供数据存储。前端框架使用Element UI,后端框架使用Flask,后端ORM使用Peewee。
? 如果有任何BUG/需求/建议,欢迎附上复现步骤/想法并提Issues!
欢迎star!
?个人用了好几年的机场,速度快价格便宜,良心推荐,真的非常好用!戳此链接!
字节跳动社招内推直接戳此链接投递即可,校招内推码:AWN958P,欢迎转发扩散!
dev分支为开发中分支,运行可能会有问题,建议使用master分支进行部署测试
docker已经在搞啦~
首先需要Python3、Pip、MySQL(测试时使用的是MariaDB)和Redis环境
申请SeverChan的key用于推送提醒到微信;和风天气的key用于获取天气信息;默认发送邮箱和口令,参考QQ邮箱的口令获取方式
在具备环境后,使用python3运行根目录下的start.py并根据提示进行操作
目录 | 内容 |
---|---|
/backend | 后端代码 |
/backend/run.py | 后端入口文件 |
/frontend | 前端代码 |
/dist | 前端编译的产物 |
/upload | 存储用户上传的文件 |
/wallpapers | 存储爬取的必应壁纸 |
可以点击这里来使用vscode临时查阅代码
入口:主页
功能:输入内容后跳转到搜索网址,进入页面焦点自动置于搜索框内,输入文字可以带出提示(需要在数据表search_engines中配置相应引擎的回调函数,增减引擎的话同样是在数据库中增加数据)
入口:登陆后左上角hover用户名-控制台
功能:提供在console表中注册的前端组件入口,方便日后权限控制或进行排序等操作,如需增加前端模块,除了编写前端业务外,还需要在console表中增加一条记录
入口: 登陆后左上角hover用户名-控制台-脚本运行平台。
功能: 用于后台程序的统一驱动。前端表单均由配置产生,无需接触前端代码,通过填写配置生成的表单来提交脚本至后端运行脚本,并展示运行结果,而且具有定时运行脚本、对以前运行的任务进行回放、记录运行耗时、记录运行日志、定制运行记录表格等人性化功能
注意:
模块:
编辑脚本:
初始选项:
组件选项:
print()
来打印需要输出的文字;此外,通过一定的数据格式,可以选择器组件的选项进行初始化,见下方实例:import json
d = {
'code': 200, # 状态码,非必填,无实际作用
'data': {
'msg': 'hellonworld qwenqewqweewqwe', # 展示的文本,非必须,会被解析为html,使用"n"换行
'value': '123', # 非必须,当传递value时,会将组件内的值替换成传回的值
'options': [ # 非必须,当传递options时,会将选择器组件内的选项替换成传回的选项
{
'label': '234', # 标签,用于选择器组件展示的值
'value': '234' # 值,用于选择器组件选择时实际代表和传递的值
},
]
}
}
print(json.dumps(d))
入口:登陆后左上角hover用户名-控制台-账户和权限
功能:使用"用户-角色-权限"模型编写的接口层级的权限控制系统,接口使用一个装饰器即可以对权限进行控制。默认用户请求接口时,请求IP必须与登录时使用的IP一致,这是一种较为严格的策略,在"/backend/app/privilege/privilege_control.py:24"可以关闭
模块:
用户设置:新增用户、禁用用户、删除用户、修改用户角色、修改用户密码
角色对应权限设置:新增角色、禁用角色、删除角色、修改角色名称、修改角色对应权限
权限设置:新增权限、禁用权限、删除权限、修改权限
入口:登陆后左上角hover用户名-控制台-修改主页组件
功能: 拖拽来修改主页显示的方式。组件的父级定义为"组件集",当有且只有一个组件集的时候,页面不展示组件集标题,仅展示它所包含的组件,当有两个及两个以上的组件集时,展示组件集及其所包含的组件
按钮:使用左右拖拽的方式来编辑组件集的顺序,使用组件集右侧圆形加号按钮来添加组件集,使用每个组件集内部的编辑按钮来修改组件集的名称,使用每个组件集内部的删除按钮来删除组件集;组件集内的组件使用上下拖拽的方式来编辑顺序,使用每个组件集内的方形加号按钮来添加组件,使用组件右侧的删除按钮来删除组件。组件详情不支持修改,可以手动改库(widget)来对其进行修改
入口:登陆后左上角hover用户名-网盘/图床
网盘:
一个简易的网盘功能,并支持通过下载链接分享,文件上传不限制大小,下载不限制速度,但是大文件上传时需要多等一会直到loading结束。文件存储于根目录的upload文件夹,并建立名称为日期的子文件夹。
按钮:界面上方为上传文件按钮,可以点击并选择文件或者通过拖拽文件至浏览器来上传文件;下方文件列表的按钮有:1.下载按钮-点击会下载文件;2.分享按钮(未分享时出现)-点击后会生成分享链接,分享给其他人后,其他人粘贴至浏览器即可触发该文件的下载,分享链接经过加密和压缩,真实下载链接会被压缩为短链接,方便使用,且链接带有鉴权token,保证基本的安全性;3.复制分享链接按钮(分享后出现)-点击后复制分享链接至剪贴板;4.取消分享按钮(分享后出现)-将分享链接置为失效并取消分享;5.删除按钮-将文件逻辑删除;6.修改文件名按钮,可以对文件名进行修改
图床:
如不登录则展示IP所在地的天气信息(受限于第三方API,IP位置为国外时,支持不好),登录后可以进行自定义,展示范围为IP+自定义位置的信息。此外,当请求数据时,为了保障速度,首先会使用缓存,缓存数据有效期为3小时(在backendappweatherweather_function.py:16修改),如果没有有效缓存,则会请求外部API以获取数据并存为缓存
按钮:新增-登录后新增城市;排序-可拖动对自定义的城市进行排序或删除;推送-推送有三种异常天气可选,分别为雨雪天气、温度骤升/骤降、空气质量,且需要推送到位置和展示的位置是独立的,可以分别设置
登陆后可以自定义,不登录时展示的书签是在数据库中修改(bookmarks.user_id==0)
按钮:新增-登陆后新增书签;设置-登陆后拖动排序、删除或修改书签的图标
查找苹果软件商店的应用并监控其价格,当小于设定的阈值时,提醒用户。
记录便签,并可以定时推送便签内容到微信/邮件。由于不想把功能做的太复杂,提交的推送是不允许撤销的,但可以多次设置,即:设置的推送可以随意加但不能减。此外,便签还可以通过"时间机器"回滚至之前的版本,适用于误删等情况。
按钮:鼠标hover省略号,可以弹出三个按钮:编辑和删除-对选中的便签进行编辑或删除,提交后将所有便签保存为一个新版本;提醒-点击后弹出编辑提醒对话框,可以通过微信/邮件的方式提醒便签内容,最小颗粒度为五分钟。下方的圆形按钮分别为新增按钮和时间机器按钮,功能不再赘述
使用translators实现,使用的是阿里的服务,当在左侧输入区输入文字后,一段间隔后,会根据上方选择的语言进行翻译。
系统使用「脚本运行平台」驱动脚本来每天爬取一张必应壁纸,小组件上则滚动展示7天内的壁纸,点击图片可以下载原图。
监控黄金价格,并且可以设定阈值,当价格超过阈值时发送提醒。需要在"脚本运行平台"中配置定时任务,爬虫在爬取数据的时候会跳过国内黄金不开盘的时间。
爬取沪深股市、港股、美股股票数据,并可以设置超过阈值后提醒功能。
爬取基金数据,并可以设置超过阈值后提醒功能。
聚合20几个网站的信息,通过定时任务每小时采集一次,并可以通过点击标题来进行手动刷新,部分内容截图如下。
注意:截至2020年11月,百度、微博、煎蛋、搜狗明确禁止个人用户爬取任何信息,请在运行项目时严格删除相关代码。
由于网站规则可能变动,请在运行项目时依次检查本项目使用的数据源,当robots协议禁止个人用户爬取时,删除相关代码!
遵守robots协议,遵守爬虫道德,建立更好的互联网环境。
?本项目的开发依赖的大量的优秀开源项目以及网站服务:
使用缓存数据和限制频次等方法对代码进行了优化,以避免爬取数据对网站造成较大的压力。
所获得数据仅供学习参考使用,如有侵权,请立即联系删除。
?如果本项目对你有启发或帮助,不妨支持一下开发者
MPL-2.0