From 90a736fd09a096bd5ed5fd0b80aa7c652f0ca4a3 Mon Sep 17 00:00:00 2001 From: lex51 Date: Sat, 17 Aug 2019 19:46:03 +0300 Subject: [PATCH 01/14] Delete routes.py --- app/routes.py | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 app/routes.py diff --git a/app/routes.py b/app/routes.py deleted file mode 100644 index 4ee1448..0000000 --- a/app/routes.py +++ /dev/null @@ -1,9 +0,0 @@ -# View functions -from flask import render_template -from app import app - - -@app.route('/') -def index(): - feed_blank = 'Podcast Main page: RSS feed' - return render_template('index.html', feed_blank=feed_blank) From 2344a6c05a330928bcf7f35337ee71e071481471 Mon Sep 17 00:00:00 2001 From: lex51 Date: Sat, 17 Aug 2019 19:52:46 +0300 Subject: [PATCH 02/14] Update models.py --- app/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models.py b/app/models.py index afe8f99..0417898 100644 --- a/app/models.py +++ b/app/models.py @@ -49,10 +49,10 @@ def generate_wrapped_file(self, upload_file): class Joke(db.Model): id = db.Column(db.Integer, primary_key=True) joke_text = db.Column(db.Text, nullable=False) - user_id = db.Column(db.Integer, db.ForeignKey('user.id')) +# user_id = db.Column(db.Integer, db.ForeignKey('user.id')) def __repr__(self): - return f', name: {self.name}' + return f', joke_text: {self.joke_text}' def get_file_path(self): ''' From e49068ede60a89f9801f5194d310c1c8b54893c1 Mon Sep 17 00:00:00 2001 From: lex51 Date: Sat, 17 Aug 2019 19:53:38 +0300 Subject: [PATCH 03/14] Create parser.py --- app/parser.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 app/parser.py diff --git a/app/parser.py b/app/parser.py new file mode 100644 index 0000000..d4a001b --- /dev/null +++ b/app/parser.py @@ -0,0 +1,28 @@ +# parsing jokes from anekdotitut.ru +# +import urllib.request +from urllib.parse import quote +from urllib.parse import unquote +from bs4 import BeautifulSoup +import re +from app.models import Joke +from app import db + + +def parse_anekdot(): + jokes_out = [] + for i in range(1, 10): + url = url = 'https://anekdotitut.ru/pro_armyanskoe_radio' + str( + i) + '.php' + html_doc = urllib.request.urlopen(url) + soup_doc = BeautifulSoup(html_doc, 'html.parser') + jokes = soup_doc.body(class_='noselect', id=re.compile('anekdot\d+')) + for joke in jokes: + jokes_out.append(joke.text) + if not bool(Joke.query.filter_by(joke_text='some_text').first()): + j = Joke(joke_text=joke.text) + db.session.add(j) + db.session.commit() + + # return jokes_out + From 40a8f707d6a1a3871d1486b593503a72344691cd Mon Sep 17 00:00:00 2001 From: lex51 Date: Sun, 18 Aug 2019 11:44:47 +0300 Subject: [PATCH 04/14] Update config.py --- config.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config.py b/config.py index 94849ca..d79af6e 100644 --- a/config.py +++ b/config.py @@ -13,3 +13,5 @@ class Config(object): ADMINS = ['your-email@example.com'] STATIC_ROOT = '/static/' + + PARSE_TIME_HOURS = 40 From 6e3d1be4c7e4a8b1ebe02a1487905afd753e0890 Mon Sep 17 00:00:00 2001 From: lex51 Date: Sun, 18 Aug 2019 11:45:51 +0300 Subject: [PATCH 05/14] Update __init__.py --- app/__init__.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/app/__init__.py b/app/__init__.py index 9ea8fbd..d1b33ae 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -21,3 +21,17 @@ # as it is always done. The bottom import is a workaround to circular imports, # a common problem with Flask applications. from app import routes, models +import atexit +from app.parser import parse_anekdot +from apscheduler.schedulers.background import BackgroundScheduler + +def scheduler_parser(): + + parse_anekdot() + +scheduler = BackgroundScheduler() +scheduler.add_job(func=scheduler_parser, trigger="interval", hour=Config.PARSE_TIME_HOURS) +scheduler.start() + +# Shut down the scheduler when exiting the app +atexit.register(lambda: scheduler.shutdown()) From 65f85be096d7e17c37e4f26c9f4a5f28be0ba331 Mon Sep 17 00:00:00 2001 From: lex51 Date: Sun, 18 Aug 2019 11:47:03 +0300 Subject: [PATCH 06/14] Update models.py --- app/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models.py b/app/models.py index 0417898..1b318cf 100644 --- a/app/models.py +++ b/app/models.py @@ -49,7 +49,7 @@ def generate_wrapped_file(self, upload_file): class Joke(db.Model): id = db.Column(db.Integer, primary_key=True) joke_text = db.Column(db.Text, nullable=False) -# user_id = db.Column(db.Integer, db.ForeignKey('user.id')) + user_id = db.Column(db.Integer, db.ForeignKey('user.id')) def __repr__(self): return f', joke_text: {self.joke_text}' From 45468ba7fb92378cde452daec8a0a4f02e8f2a3c Mon Sep 17 00:00:00 2001 From: lex51 Date: Sun, 18 Aug 2019 11:48:17 +0300 Subject: [PATCH 07/14] Update parser.py --- app/parser.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/app/parser.py b/app/parser.py index d4a001b..2ae542f 100644 --- a/app/parser.py +++ b/app/parser.py @@ -1,5 +1,4 @@ # parsing jokes from anekdotitut.ru -# import urllib.request from urllib.parse import quote from urllib.parse import unquote @@ -11,18 +10,15 @@ def parse_anekdot(): jokes_out = [] - for i in range(1, 10): + for i in range(1, 11): url = url = 'https://anekdotitut.ru/pro_armyanskoe_radio' + str( i) + '.php' html_doc = urllib.request.urlopen(url) soup_doc = BeautifulSoup(html_doc, 'html.parser') jokes = soup_doc.body(class_='noselect', id=re.compile('anekdot\d+')) for joke in jokes: - jokes_out.append(joke.text) - if not bool(Joke.query.filter_by(joke_text='some_text').first()): - j = Joke(joke_text=joke.text) + # jokes_out.append(joke.text) + if not bool(Joke.query.filter_by(joke_text = joke.text).first()): + j = Joke(joke_text = joke.text, user_id = 999) db.session.add(j) db.session.commit() - - # return jokes_out - From b86798d6b8d1e18d328ef5f4c08ef2e9146eed31 Mon Sep 17 00:00:00 2001 From: lex51 Date: Sun, 18 Aug 2019 11:49:15 +0300 Subject: [PATCH 08/14] Update requirements.txt --- requirements.txt | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/requirements.txt b/requirements.txt index dfe16f3..04c0f32 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,23 @@ -# core -Flask ~= 1.1.1 - -# database -Flask-SQLAlchemy ~= 2.4.0 -flask-migrate ~= 2.5.2 +alembic==1.0.11 +Click==7.0 +dominate==2.4.0 +Flask==1.1.1 +Flask-Bootstrap==3.3.7.1 +Flask-Login==0.4.1 +Flask-Migrate==2.5.2 +Flask-SQLAlchemy==2.4.0 +Flask-WTF==0.14.2 +itsdangerous==1.1.0 +Jinja2==2.10.1 +Mako==1.1.0 +MarkupSafe==1.1.1 +pydub==0.23.1 +python-dateutil==2.8.0 +python-editor==1.0.4 +six==1.12.0 +SQLAlchemy==1.3.7 +visitor==0.1.3 +Werkzeug==0.15.5 +WTForms==2.2.1 +beautifulsoup4==4.7.1 +APScheduler==3.6.1 From a1022e50946db58b85a612f66cd36c2b57275860 Mon Sep 17 00:00:00 2001 From: lex51 Date: Sun, 18 Aug 2019 16:59:16 +0300 Subject: [PATCH 09/14] Update parser.py --- app/parser.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/app/parser.py b/app/parser.py index 2ae542f..69dd18e 100644 --- a/app/parser.py +++ b/app/parser.py @@ -1,4 +1,5 @@ -# parsing jokes from anekdotitut.ru +# Parsing jokes from anekdotitut.ru and adds +# them to the database. import urllib.request from urllib.parse import quote from urllib.parse import unquote @@ -9,16 +10,20 @@ def parse_anekdot(): + ''' + Simple func for collecting jokes from anekdotitut.ru + and add them to DB. + ''' jokes_out = [] - for i in range(1, 11): + for i in range(1, 10): url = url = 'https://anekdotitut.ru/pro_armyanskoe_radio' + str( i) + '.php' html_doc = urllib.request.urlopen(url) soup_doc = BeautifulSoup(html_doc, 'html.parser') jokes = soup_doc.body(class_='noselect', id=re.compile('anekdot\d+')) for joke in jokes: - # jokes_out.append(joke.text) + # Check for entry in DB. if not bool(Joke.query.filter_by(joke_text = joke.text).first()): j = Joke(joke_text = joke.text, user_id = 999) db.session.add(j) - db.session.commit() + db.session.commit() From 6c6e001e1ac2b63d74145641b72b7a47f6291adb Mon Sep 17 00:00:00 2001 From: lex51 Date: Sun, 18 Aug 2019 17:01:10 +0300 Subject: [PATCH 10/14] Update __init__.py --- app/__init__.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/__init__.py b/app/__init__.py index d1b33ae..8fbd155 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -26,12 +26,17 @@ from apscheduler.schedulers.background import BackgroundScheduler def scheduler_parser(): - + ''' + Starts the parser. + ''' parse_anekdot() +# Scheduler settings and start. +# Variables locate in config.Config scheduler = BackgroundScheduler() scheduler.add_job(func=scheduler_parser, trigger="interval", hour=Config.PARSE_TIME_HOURS) scheduler.start() # Shut down the scheduler when exiting the app atexit.register(lambda: scheduler.shutdown()) + From f72afa6e1e9ae414b941eaf55b275b6ee22cf406 Mon Sep 17 00:00:00 2001 From: lex51 Date: Sun, 18 Aug 2019 17:02:18 +0300 Subject: [PATCH 11/14] Update config.py --- config.py | 1 + 1 file changed, 1 insertion(+) diff --git a/config.py b/config.py index d79af6e..12e51ca 100644 --- a/config.py +++ b/config.py @@ -14,4 +14,5 @@ class Config(object): STATIC_ROOT = '/static/' + # Time period for parser PARSE_TIME_HOURS = 40 From af3783a1ad55184759118ad66dde62ec5bbbcb68 Mon Sep 17 00:00:00 2001 From: dschglv Date: Sun, 18 Aug 2019 21:54:26 +0300 Subject: [PATCH 12/14] change parameter --- app.db | Bin 32768 -> 53248 bytes app/__init__.py | 3 ++- app/parser.py | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app.db b/app.db index db697ed4f2b3d83d7c9e044580c6a55bc2e31f25..c8c52df2cac77bac2acefa367a3fd2d74c471322 100644 GIT binary patch literal 53248 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 diff --git a/app/__init__.py b/app/__init__.py index 8fbd155..3a39a44 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -33,8 +33,9 @@ def scheduler_parser(): # Scheduler settings and start. # Variables locate in config.Config + scheduler = BackgroundScheduler() -scheduler.add_job(func=scheduler_parser, trigger="interval", hour=Config.PARSE_TIME_HOURS) +scheduler.add_job(func=scheduler_parser, trigger="interval", minutes=60 * Config.PARSE_TIME_HOURS) scheduler.start() # Shut down the scheduler when exiting the app diff --git a/app/parser.py b/app/parser.py index 69dd18e..8793c9f 100644 --- a/app/parser.py +++ b/app/parser.py @@ -26,4 +26,5 @@ def parse_anekdot(): if not bool(Joke.query.filter_by(joke_text = joke.text).first()): j = Joke(joke_text = joke.text, user_id = 999) db.session.add(j) - db.session.commit() + print(joke.joke_text) + db.session.commit() \ No newline at end of file From cc5ba48d174e5e8b015db93be0082601e6c854c6 Mon Sep 17 00:00:00 2001 From: dschglv Date: Sun, 18 Aug 2019 21:55:50 +0300 Subject: [PATCH 13/14] change parameter --- app/parser.py | 1 - 1 file changed, 1 deletion(-) diff --git a/app/parser.py b/app/parser.py index 8793c9f..464f5c4 100644 --- a/app/parser.py +++ b/app/parser.py @@ -26,5 +26,4 @@ def parse_anekdot(): if not bool(Joke.query.filter_by(joke_text = joke.text).first()): j = Joke(joke_text = joke.text, user_id = 999) db.session.add(j) - print(joke.joke_text) db.session.commit() \ No newline at end of file From 94c12f2faeb5019189c3d82dba38b55ec647517c Mon Sep 17 00:00:00 2001 From: dschglv Date: Sun, 18 Aug 2019 22:03:37 +0300 Subject: [PATCH 14/14] change parameter --- app/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index 3a39a44..d049118 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -20,7 +20,7 @@ # The routes module is imported at the bottom and not at the top of the script # as it is always done. The bottom import is a workaround to circular imports, # a common problem with Flask applications. -from app import routes, models +from app import models import atexit from app.parser import parse_anekdot from apscheduler.schedulers.background import BackgroundScheduler @@ -35,7 +35,7 @@ def scheduler_parser(): # Variables locate in config.Config scheduler = BackgroundScheduler() -scheduler.add_job(func=scheduler_parser, trigger="interval", minutes=60 * Config.PARSE_TIME_HOURS) +scheduler.add_job(func=scheduler_parser, trigger="interval", hours=Config.PARSE_TIME_HOURS) scheduler.start() # Shut down the scheduler when exiting the app