Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

建议楼主filter增加对多个关键字的支持,同时修正下dockerfile #15

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 20 additions & 23 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,30 +1,27 @@
# nginx-gunicorn-flask
FROM python:3.11-alpine AS build

FROM ubuntu:latest
MAINTAINER Hiller Liao <hillerliao@163.com>
WORKDIR /app

ENV DEBIAN_FRONTEND noninteractive
COPY requirements.txt ./
RUN pip install -r requirements.txt

RUN apt-get update
RUN apt-get install -y python3 python3-pip python3-virtualenv nginx supervisor

# Setup flask application
RUN mkdir -p /app
COPY . /app
RUN pip install -r /app/requirements.txt -i https://mirrors.aliyun.com/pypi/simple
COPY . .
RUN pip install gunicorn
# RUN pip install git+https://github.com/getsyncr/notion-sdk.git

# Setup nginx
RUN rm /etc/nginx/sites-enabled/default
COPY flask.conf /etc/nginx/sites-available/
RUN ln -s /etc/nginx/sites-available/flask.conf /etc/nginx/sites-enabled/flask.conf
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
FROM python:3.11-alpine AS runtime

WORKDIR /app

# 复制并安装gunicorn
COPY --from=build /app/requirements.txt .
RUN pip install -r requirements.txt
RUN pip install Flask-Caching

# 复制应用代码
COPY --from=build /app .

# Setup supervisord
RUN mkdir -p /var/log/supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY gunicorn.conf /etc/supervisor/conf.d/gunicorn.conf
# 设置用户和端口
USER 1000:1000
EXPOSE 5000

# Start processes
CMD ["/usr/bin/supervisord"]
ENTRYPOINT ["gunicorn", "-w", "4", "-b", ":5000", "main:app"]
26 changes: 15 additions & 11 deletions rsshub/blueprints/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,21 @@ def feeds():

@bp.app_template_global()
def filter_content(ctx):
include_title = request.args.get('include_title')
include_description = request.args.get('include_description')
exclude_title = request.args.get('exclude_title')
exclude_description = request.args.get('exclude_description')
limit = request.args.get('limit', type=int)
items = ctx['items'].copy()
items = [item for item in items if include_title in item['title']] if include_title else items
items = [item for item in items if include_description in item['description']] if include_description else items
items = [item for item in items if exclude_title not in item['title']] if exclude_title else items
items = [item for item in items if exclude_description not in item['description']] if exclude_description else items
items = items[:limit] if limit else items
if 'include_title' in request.args:
include_titles = request.args['include_title'].split('|')
items = [item for item in items if any(title in item['title'] for title in include_titles)]
if 'exclude_title' in request.args:
exclude_titles = request.args['exclude_title'].split('|')
items = [item for item in items if all(title not in item['title'] for title in exclude_titles)]
if 'include_description' in request.args:
include_description = request.args['include_description'].split('|')
items = [item for item in items if any(description in item['description'] for description in include_description)]
if 'exclude_description' in request.args:
exclude_description = request.args['exclude_description'].split('|')
items = [item for item in items if all(description not in item['description'] for description in exclude_description)]
if 'limit' in request.args:
items = items[:int(request.args['limit'])]
ctx = ctx.copy()
ctx['items'] = items
return ctx
Expand Down Expand Up @@ -320,4 +324,4 @@ def tadoku_books(category=''):
def rss_filter():
from rsshub.spiders.rssfilter.filter import ctx
feed_url = request.args.get("feed")
return render_template('main/atom.xml', **filter_content(ctx(feed_url)))
return render_template('main/atom.xml', **filter_content(ctx(feed_url)))