分享GitHub开源项目【摸鱼岛】

今天给大家分享一个有趣的开源项目——摸鱼岛(Fish Island),这是一个专为程序员打造的摸鱼神器!项目由作者 @lhccong 主导,贡献者 @Shingbb 参与开发,集成了实时信息聚合、摸鱼群聊、待办事项、小游戏和实用工具箱等功能。无论你是想在工作间隙偷个闲,还是想学习娱乐两不误,摸鱼岛都能满足你的需求!😎

项目完全开源,代码托管在GitHub上,欢迎大家体验、贡献或直接拿来作为自己的小项目!
🔗 在线体验地址: https://fish.codebug.icu/

🌈 后端地址: https://github.com/lhccong/fish-island-backend

🏖️ 前端地址: https://github.com/lhccong/fish-island-frontend

项目背景

作者@lhccong是个热爱摸鱼的程序员,喜欢在摸鱼时刷实时资讯。他发现市面上的信息聚合网站很有意思,于是决定自己动手开发一个类似的平台。随着开发的深入,他发现这个项目不仅好玩,还能整合多种实用功能,最终诞生了摸鱼岛——一个集学习、娱乐、社交于一体的摸鱼网站!🐟

技术栈

摸鱼岛的技术栈非常现代化,适合学习和参考:

  • 前端:React、Antd、json-viewer、aj-captcha-react
  • 后端:SpringBoot、MySQL、Redis、Netty、WebSocket、JSOUP爬虫

通过Redis和信息压缩优化,数据返回速度从1秒提升到100毫秒,性能提升10倍!💪

核心功能

摸鱼岛的功能丰富多彩,涵盖了程序员摸鱼的方方面面:

1. 摸鱼群聊 💬

基于用户反馈,摸鱼岛新增了群聊功能!你可以在这里与摸鱼小伙伴们讨论技术问题、分享B站视频,或者一起学习进步。编程导航+摸鱼聊天,完美结合!
📸 群聊界面
摸鱼群聊 – 预览图

2. 聚合信息源 🌈

摸鱼岛聚合了多个热门信息源,包括编程导航、知乎、微博、网易云等热榜。后端通过JSOUP爬虫和接口请求获取数据,结合Redis优化,数据加载快如闪电!在这里,你可以轻松获取编程资讯和娱乐八卦,学习娱乐两不误。
📸 信息聚合界面

信息聚合界面 – 预览图

3. 每日待办 💡

作者贴心地加入了待办事项功能,方便你记录每日任务。直接在网站上管理待办,摸鱼的同时还能保持高效!
📸 待办界面

4. 小游戏 🎮

摸鱼怎么能少得了小游戏?目前支持五子棋2048,代码由AI生成(推荐AI工具:v0.devbolt.new)。

  • 五子棋:支持与AI对战或在线与好友对战,只需创建房间并分享房间号即可开玩!
    📸 五子棋对战
  • 2048:经典数字游戏,随时挑战你的最高分!
    📸 2048

5. 工具箱 🔧

  • JSON格式化工具:程序员必备,快速格式化JSON数据,界面简洁实用。
    📸 JSON格式化
  • 老板键:上班摸鱼怕被发现?老板键来救场!支持两种模式:
    • 普通模式:自定义快捷键跳转页面。
    • 隐藏模式:按Ctrl + Shift + B快速显示自定义图片,伪装工作状态;再按Ctrl + Shift + S设置老板页面。
      📸 老板键

开源与贡献

摸鱼岛作为一个开源项目,欢迎大家参与贡献!如果你有想聚合的数据源,或者有其他创意功能,可以通过以下方式加入:

贡献方式

  1. 页面元素抓取
    适用场景:目标网站无API,需从HTML中提取数据。
    推荐工具:Jsoup(Java)、BeautifulSoup(Python)、Cheerio(Node.js)。
    要求:

    • 选择器精准,避免页面结构变化导致抓取失败。
    • 减少HTTP请求,优化效率。
    • 遵守robots.txt规则。
      示例代码:
    java复制代码
    Document doc = Jsoup.connect("https://example.com").get();
    String title = doc.select("h1.article-title").text();
    
  2. 页面接口数据抓取
    适用场景:目标网站提供API,可直接获取JSON/XML数据。
    推荐工具:HttpClient(Java)、axios(Node.js)、requests(Python)。
    要求:

    • 确保请求参数完整(headers、cookies、token)。
    • 优化调用频率,避免触发反爬机制。
    • 完善异常处理。
      示例代码:
    java复制代码
    String apiUrl = "https://api.example.com/data";
    String response = HttpRequest.get(apiUrl).execute().body();
    JSONObject json = JSON.parseObject(response);
    

数据源注册流程

  1. 添加数据源Key:在HotDataKeyEnum.java定义新Key。
  2. 更新数据源映射:在DatabaseConfig.java添加配置。
  3. 创建数据源类:在datasource目录下新建类,继承DataSource,实现getHotPost方法。
  4. 返回数据:按HotPostDataVO格式返回,示例:
    java复制代码
    HotPostDataVO.builder()
        .title(title)
        .url(url)
        .followerCount(followerCount)
        .excerpt(excerpt)
        .build();
    

贡献流程

  1. Fork仓库。
  2. 创建分支(如feature/data-scraper-optimization)。
  3. 提交代码,确保代码规范。
  4. 提交Pull Request,描述更改内容。
  5. 等待审核,审核通过后合并。

写在最后

摸鱼岛是一个充满创意和实用性的项目,不仅能让程序员在摸鱼时找到乐趣,还能通过开源社区的协作不断进化!如果你觉得这个项目有趣,不妨给个Star🌟,成为摸鱼岛的“精神股东”!也欢迎体验网站、提交Issue或贡献代码,让我们一起打造更棒的摸鱼天堂!💪

🎉 感谢每一位贡献者,你们的努力让摸鱼岛更精彩!


📌 项目地址

快来加入摸鱼岛的开源社区吧!🐟

相关阅读

表情
文章目录