GithubHelp home page GithubHelp logo

drizzle365 / moments Goto Github PK

View Code? Open in Web Editor NEW
73.0 1.0 4.0 24.75 MB

一个 C# 开发的博客朋友圈平台。

Home Page: https://moments.shiyu.dev

License: MIT License

C# 78.34% Dockerfile 0.40% CSS 20.67% JavaScript 0.58%
csharp moments asp-net-core blog dotnet atom atom-feed feed rss rss-reader

moments's Introduction

Logo

Moments

构建博友们的朋友圈 —— 连接你我,创造价值

Moments 为你提供了一个全新的方式来与你关注的博客作者和读者互动,让你的博客体验更加丰富和充实。

我们核心目标是通过整合各种订阅源,如 RSS 和 Atom,将你感兴趣的博客转化为一个个人朋友圈。你可以订阅来自世界各地的博客,并实时获取他们的最新动态。无论是热门博客、专业博主,还是你最喜爱的作者,你都可以通过 Moments 获得他们的最新博文、评论和互动。


  • 如果你有好的想法希望可以共同参与下一版本的开发
  • 我们接受任何合理的 pr 和 issue

功能概述

  • Feed订阅(支持包括RSS,Atom)
  • 支持友链,文章 API,方便博客对接
  • 简洁的界面风格,仿照微信朋友圈更美观易用
  • 支持订阅商城,化身专属订阅神器
  • 支持友链自助申请
  • 单独查看某个好友的博文

特点和优势

  • 个性化订阅:通过使用 Moments,你可以根据自己的兴趣订阅并关注任何博客,无论是国内外的知名博主还是小众领域的专家。你将不再错过他们的精彩内容,同时也可以发现新的博客和创作者。
  • 实时动态Moments 实时获取订阅的博客的最新动态,包括新博文、更新通知和互动评论。你可以快速了解博客圈内的热门话题,与作者和其他读者进行互动和讨论。
  • 独立博客聚合Moments 提供了将多个独立博客聚合在一个平台的功能。这意味着你可以在一个地方展示你的多个博客内容,让读者更方便地获取你的全部创作。
  • 个性化用户体验Moments 提供了个性化的用户界面和设置选项,让你根据自己的喜好和需求定制博客社交的体验。你可以自由选择显示方式、排序规则和通知设置,以最符合你的个人偏好。
  • 开源项目Moments 是一个开源项目,意味着你可以参与项目的开发和改进。你可以自由定制代码,添加新功能,为社区的发展做出贡献。

快速开始

1.原生部署

下载源代码编译后运行即可,建议使用supervisord进行进程守护,或者使用Systemd启动,这需要一定的Linux经验,后面会补充相关的原生部署文档

2.Docker部署(⭐推荐)

docker run -d \
--name moments \
-p 3000:80 \
drizzle2001/moments

运行后访问 http://IP:3000 即可
建议使用反向代理绑定域名访问

图文教程(临时): https://shiyu.dev/archives/2069/
完善的文档中心正在构建中

其他相关

如何绑定域名

程序运行后的默认端口是3000,可以使用 nginx 配置反向代理监听本地3000端口

如何配置

后台地址: http://IP:3000/admin
默认密码:lantin (安装完成后应立即进入后台修改)

展示

display.jpg

moments's People

Contributors

drizzle365 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  avatar  avatar  avatar

Watchers

 avatar

moments's Issues

文档中心

使用Gitbook构建完整的文档帮助中心

2.0 版本计划

预计下个版本的更新内容巨大,所以直接将下个版本号定为 2.0 !

最重要的更新在后台部分,使用MASA重构的全新后台,带来更多的功能和更便捷的操作布局

新版后台(测试截图不代表最终发布):
947396e98fb6e0cf1618b3f37fbe206

旧版后台:
image

还有一些其他的更新,敬请期待!

另外还将提供完善的文档中心,稳定的升级策略,并且会发布 1.0 到 2.0 数据库文件升级软件,方便老用户快速使用新版本。

建议添加文章标题的抓取

通过 demo 展示的朋友圈可以看到已经订阅的网站内容,但是列表显示的都是文章摘要,缺少了标题。如果在摘要前面有文章标题的话就更好了,这样看起来也比较好理解。虽然不知道怎么实现,但还是提个建议,万一作者你能实现呢😁😁😁

暂停更新至年底

最近忙于考研,没有时间更新本项目,年底考研结束后会进行高频更新

docker部署采集不成功

  07/13/2023 05:28:30 : 开始采集任务

fail: Moments.Service.GatherService[0]
Flurl.Http.FlurlHttpException: Call failed. Resource temporarily unavailable (www.sunpeiwen.com:443): GET https://www.sunpeiwen.com/atom.xml
---> System.Net.Http.HttpRequestException: Resource temporarily unavailable (www.sunpeiwen.com:443)
---> System.Net.Sockets.SocketException (11): Resource temporarily unavailable
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token)
at System.Net.Sockets.Socket.g__WaitForConnectWithCancellation|281_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(QueueItem queueItem)
at System.Threading.Tasks.TaskCompletionSourceWithCancellation1.WaitWithCancellationAsync(CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.HttpConnectionWaiter1.WaitForConnectionAsync(Boolean async, CancellationToken requestCancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, HttpCompletionOption completionOption, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Flurl.Http.FlurlRequest.HandleExceptionAsync(FlurlCall call, Exception ex, CancellationToken token)
at Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, HttpCompletionOption completionOption, CancellationToken cancellationToken)
at Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, HttpCompletionOption completionOption, CancellationToken cancellationToken)
at Flurl.Http.ResponseExtensions.ReceiveString(Task1 response) at Moments.Service.GatherService.GetAtom(String url, Int32 fid) in /src/Service/GatherService.cs:line 173 fail: Moments.Service.GatherService[0] Flurl.Http.FlurlHttpException: Call failed. Resource temporarily unavailable (www.jkjoy.cn:443): GET https://www.jkjoy.cn/atom.xml ---> System.Net.Http.HttpRequestException: Resource temporarily unavailable (www.jkjoy.cn:443) ---> System.Net.Sockets.SocketException (11): Resource temporarily unavailable at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken) at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.System.Threading.Tasks.Sources.IValueTaskSource.GetResult(Int16 token) at System.Net.Sockets.Socket.g__WaitForConnectWithCancellation|281_0(AwaitableSocketAsyncEventArgs saea, ValueTask connectTask, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken) --- End of inner exception stack trace --- at System.Net.Http.HttpConnectionPool.ConnectToTcpHostAsync(String host, Int32 port, HttpRequestMessage initialRequest, Boolean async, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at System.Net.Http.HttpConnectionPool.AddHttp11ConnectionAsync(QueueItem queueItem) at System.Threading.Tasks.TaskCompletionSourceWithCancellation1.WaitWithCancellationAsync(CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.HttpConnectionWaiter1.WaitForConnectionAsync(Boolean async, CancellationToken requestCancellationToken) at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken) at System.Net.Http.DecompressionHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken) at System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken) at Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, HttpCompletionOption completionOption, CancellationToken cancellationToken) --- End of inner exception stack trace --- at Flurl.Http.FlurlRequest.HandleExceptionAsync(FlurlCall call, Exception ex, CancellationToken token) at Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, HttpCompletionOption completionOption, CancellationToken cancellationToken) at Flurl.Http.FlurlRequest.SendAsync(HttpMethod verb, HttpContent content, HttpCompletionOption completionOption, CancellationToken cancellationToken) at Flurl.Http.ResponseExtensions.ReceiveString(Task1 response)
at Moments.Service.GatherService.GetAtom(String url, Int32 fid) in /src/Service/GatherService.cs:line 173

提供稳定升级方案

当前升级只能清理挂载目录重新拉去docker镜像升级很不方便,而且会清理之前的数据。
增加一种相对稳定的不丢失数据的升级方案:
可行的思路
1.依旧是清理数据但是提供数据导出导入
2.保留数据,升级替换容器内的可执行文件(封装自动化脚本)

关于 1.0 版本的计划

  1. 系统设置从 appsettings.json 中迁移到后台数据库设置(web端设置)
  2. 修改增加友情链接增强功能(自助申请,自动检测,状态标记)
  3. 更完善的后台(UI和功能增强)
  4. 更完善的前台(UI和功能增强)

重构前端页面

重构前后端页面,主要是后台将使用masa重构,使用更加便捷的布局并提供更加丰富的后台管理功能

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.