首页 > 其他分享 >中南大学分布式图书馆预约座位机器人

中南大学分布式图书馆预约座位机器人

时间:2024-02-29 23:47:02浏览次数:21  
标签:GitHub 中南大学 预约 用户 图书馆 座位 分布式

项目背景和必要性

图书馆是学习和研究的重要场所,但是图书馆的座位往往供不应求,尤其是在考试期间,很多同学都会遇到抢不到座位的困难。为了解决这个问题,一些同学会提前预约座位,但是这也需要花费时间和精力,而且有时候还会因为网络延迟或者系统故障而预约失败。有没有一种更方便的方法,可以让我们自动化地预约图书馆的座位呢?

项目建设主体

  • 本项目研究了图书馆的预约系统,设计了一个分布式的、云端部署的、离线的自动化脚本,可以代替用户抢座。本项目的代码已经在 GitHub 上开源,任何人都可以免费使用,但是禁止商用。
  • 希望各位同学遵守图书馆规定,预约了就去,不要浪费位置
  • https://github.com/zzbcode/CSU-Library-main

项目主要内容

项目的核心是一个 Python 脚本,它可以实现以下功能:

  • 登录图书馆的预约系统,获取用户的身份信息和 cookie
  • 根据用户的配置文件,选择合适的座位和时间段,发送预约请求
  • 检查预约结果,如果成功则发送通知,如果失败则重试或者换座位
  • 支持多用户同时预约,通过分布式部署和多线程技术,提高效率和成功率
  • 支持云端部署,用户可以通过 GitHub Actions 来设置定时任务,无需本地运行
  • 支持离线运行,用户可以通过 GitHub Actions 来设置触发条件,无需手动启动

原则

  • 免费开源,不收取任何费用,也不会泄露用户的隐私
  • 分布式云端,不占用用户的本地资源,也不受网络环境的影响
  • 离线自动,不需要用户的人工干预,也不会错过预约的时间
  • 灵活配置,可以根据用户的喜好和需求,选择合适的座位

项目成果展示

项目的代码已经在 GitHub 上开源,地址是 https://github.com/zzbcode/CSU-Library-main ,欢迎大家下载使用和反馈意见。项目的效果如下图所示,可以看到,用户可以通过配置文件来设置自己的账号信息,座位编号,时间段,以及通知方式。用户可以通过 GitHub Actions 来设置定时任务或者触发条件,让脚本自动运行。运行结果会通过邮件或者微信等方式通知用户,如果预约成功,会显示座位的位置和时间,如果预约失败,会显示失败的原因和建议。

标签:GitHub,中南大学,预约,用户,图书馆,座位,分布式
From: https://www.cnblogs.com/zzbcoder/p/18045906

相关文章

  • 分布式id生成
    一snowflake算法组成snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生4096个ID),最后还有一个符号位,永远是0。最高位......
  • 脑图系列-分布式
     概念解释集群集中式系统就是把一整个系统的所有功能,包括数据库等等全部都部署在一起,通过一个整套系统对外提供服务在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。  集中式系统存在系统大而复杂、难于维护、容易发生单点故障......
  • 脑图系列-分布式事物
    一致性类型强一致性引入一个协调者,通过协调者来协调所有参与者来进行提交或者回滚基于XA规范的二阶段及三阶段提交支持2阶段提交的第三方框架,如SeataTCC也是一种强一致性的方案最终一致性基于可靠消息的最终一致性(本地消息表、事务消息)借助支持事务消息的中间件,通过发送......
  • Seata系列之(一)分布式事务问题
    分布式事务问题用户购买商品的业务逻辑。整个业务逻辑由3个微服务提供支持:仓储服务:对始定的商品扣除仓储数量。订单服务:根据采购需创建订单。帐户服务∶从用户帐户中扣除余额。​ 单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个......
  • SpringCloud系列之(十二)SpringCloud Sleuth分布式请求链路追踪
    SpringCloudSleuth分布式请求链路追踪一、概述1.应用场景​ 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前端请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个请......
  • Redis加Lua脚本实现分布式锁
    先讲一下为什么使用分布式锁:在传统的单体应用中,我们可以使用Java并发处理相关的API(如ReentrantLock或synchronized)来实现对共享资源的互斥控制,确保在高并发情况下同一时间只有一个线程能够执行特定方法。然而,随着业务的发展,单体应用逐渐演化为分布式系统,多线程、多进程分布在不同......
  • 【进阶篇】使用 Redis 实现分布式缓存的全过程思考(一)
    目录前言一、关于缓存二、基本数据结构三、缓存注解3.1自定义注解3.2定义切点(拦截器)3.3AOP实现3.4使用示例四、数据一致性4.1缓存更新策略4.2缓存读写过程五、高可用5.1缓存穿透5.2缓存击穿5.3缓存雪崩5.4Redis集群六、文章小结前言写在前面,让我们从3个问题开始今天的文章:......
  • 13.分布式事件总线DotNetCore.CAP的简单使用
    DotNetCore.CAP框架提供了一个简单易用的API和多种消息传输协议支持(包括Redis、RabbitMQ等),可以让用户轻松地实现消息队列、事件发布/订阅、分布式事务等功能。它还具备自动重试、异常处理、数据序列化等高级特性,可以保证消息的可靠性和一致性。使用DotNetCore.CAP框架,你可以:1.......
  • 分布式事务
    分布式事务1.基础概念1.1什么是事务事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。1.2本地事务​在计算机系统中,更多的是通过关系型数据库来控制事务,这是利用数据库本身的事务特性来实现的,因此叫数据库事务,由于应用主要靠关系数据库......
  • 开源:Taurus.DistributedLock 分布式锁框架,支持 .Net 和 .Net Core 双系列版本
    前言:在经过漫长的技术沉淀,终于又为.Net及.NetCore的微服务系列框架贡献当中的一个重要组件。Taurus.DistributedLockisadistributedlockfor.netor.netcore.【支持:Redis、MemCache、Database、Local、File五类锁】1、开源地址:https://github.com/cyq1162/Taurus......