From 5ef7237c800cd9e5d308d38166339c77296d6441 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 10 Nov 2019 21:11:42 +0300 Subject: [PATCH 01/39] Realize most functions without using OOP(first iteration without json) --- news.py | 3 +++ rss_reader.py | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 news.py create mode 100644 rss_reader.py diff --git a/news.py b/news.py new file mode 100644 index 0000000..2823da0 --- /dev/null +++ b/news.py @@ -0,0 +1,3 @@ +class News: + def __init__(self, title): + self.title = title \ No newline at end of file diff --git a/rss_reader.py b/rss_reader.py new file mode 100644 index 0000000..7010ab7 --- /dev/null +++ b/rss_reader.py @@ -0,0 +1,64 @@ +import argparse +import logging as log +import feedparser +import json + +def validation(url): + try: + import re + pattern = re.compile('''((?:http|https)(?::\\/{2}[\\w]+)(?:[\\/|\\.]?)(?:[^\\s"]*))''', re.IGNORECASE|re.DOTALL) + match = pattern.fullmatch(url) + if match: + return match.group() + else: + raise Exception("Invalid url") + except Exception as e: + print(e) + log.error(e) + + +def get_news(source, limit=None): + a = feedparser.parse(validation(source)) + if a['entries'] and a['status'] == 200: + print("Feed: ", a['feed']['title'],"\n") + from bs4 import BeautifulSoup + list_of_news = a['entries'][:args.limit[0]] if limit else a['entries'] + for news in list_of_news: + print('Title: ', news['title']) + print('Date: ', news['published']) + print('Link: ', news['link'], "\n") + feed = news['summary_detail']['value'] + if feed.startswith('

'): + parser = BeautifulSoup(feed,'html.parser') + print("[image: ", parser.find('img')['alt'], "][2]", parser.find('p').get_text(), "\n") + print() + else: + print(feed, "\n") + print('Links: ') + print("[1] ", news['link'], '(link)') + + if 'media_content' in news.keys(): + print("[2] ", news['media_content'][0]['url'], '(image)') + print("="*90) + +def adding_arguments(): + parser = argparse.ArgumentParser(description='Pure Python command-line RSS reader') + parser.add_argument('source', metavar='source', type=str, help='RSS URL') + parser.add_argument('--version', action='version', version='ver 1.1', help='Print version info') + parser.add_argument('--limit', metavar='LIMIT', nargs=1, type=int) + parser.add_argument('--verbose', action='store_true') + parser.add_argument('--json', action='store_true') + parser.add_argument('--date', nargs=1, type=int) + log.info("Argument initialization") + return parser + +if __name__=="__main__": + parser = adding_arguments() + + args = parser.parse_args() + if args.verbose: + log.basicConfig(format='%(asctime)s %(module)s %(message)s', datefmt='%I:%M:%S', level=log.INFO) + get_news(args.source, args.limit) + + + From 3eb31f127236d2e11d4875cce3a3055142bebf30 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 17 Nov 2019 03:08:12 +0300 Subject: [PATCH 02/39] small rethinking of the project structure (using __main__.py and the class of the executor) --- __main__.py | 9 +++++ news.py | 25 ++++++++++-- rss_reader.py | 109 ++++++++++++++++++++++++-------------------------- 3 files changed, 84 insertions(+), 59 deletions(-) create mode 100644 __main__.py diff --git a/__main__.py b/__main__.py new file mode 100644 index 0000000..d91e580 --- /dev/null +++ b/__main__.py @@ -0,0 +1,9 @@ +def main(): + parser = adding_arguments() + + args = parser.parse_args() + get_news(args.source, args.limit) + + +if __name__=="__main__": + main() \ No newline at end of file diff --git a/news.py b/news.py index 2823da0..d650724 100644 --- a/news.py +++ b/news.py @@ -1,3 +1,22 @@ -class News: - def __init__(self, title): - self.title = title \ No newline at end of file +from sqlalchemy import * +from sqlalchemy.ext.declarative import declarative_base + + +Base = declarative_base() + + +class News(Base): + __tablename__ = 'news' + + id = Column(Integer, primary_key=True, increment=1) + title = Column(String(100)) + description = Column(Text) + date = Column(Date) + link = Column(Text) + media_content = Column(Text) + + def __repr__(): + pass + + + \ No newline at end of file diff --git a/rss_reader.py b/rss_reader.py index 7010ab7..13de1cd 100644 --- a/rss_reader.py +++ b/rss_reader.py @@ -1,64 +1,61 @@ import argparse import logging as log -import feedparser import json +import feedparser +from validator_collection.checkers import is_url -def validation(url): - try: - import re - pattern = re.compile('''((?:http|https)(?::\\/{2}[\\w]+)(?:[\\/|\\.]?)(?:[^\\s"]*))''', re.IGNORECASE|re.DOTALL) - match = pattern.fullmatch(url) - if match: - return match.group() - else: - raise Exception("Invalid url") - except Exception as e: - print(e) - log.error(e) - -def get_news(source, limit=None): - a = feedparser.parse(validation(source)) - if a['entries'] and a['status'] == 200: - print("Feed: ", a['feed']['title'],"\n") - from bs4 import BeautifulSoup - list_of_news = a['entries'][:args.limit[0]] if limit else a['entries'] - for news in list_of_news: - print('Title: ', news['title']) - print('Date: ', news['published']) - print('Link: ', news['link'], "\n") - feed = news['summary_detail']['value'] - if feed.startswith('

'): - parser = BeautifulSoup(feed,'html.parser') - print("[image: ", parser.find('img')['alt'], "][2]", parser.find('p').get_text(), "\n") - print() +class Executor: + def __init__(self): + pass + + def validation(url): + try: + if is_url(url): + return url else: - print(feed, "\n") - print('Links: ') - print("[1] ", news['link'], '(link)') - - if 'media_content' in news.keys(): - print("[2] ", news['media_content'][0]['url'], '(image)') - print("="*90) - -def adding_arguments(): - parser = argparse.ArgumentParser(description='Pure Python command-line RSS reader') - parser.add_argument('source', metavar='source', type=str, help='RSS URL') - parser.add_argument('--version', action='version', version='ver 1.1', help='Print version info') - parser.add_argument('--limit', metavar='LIMIT', nargs=1, type=int) - parser.add_argument('--verbose', action='store_true') - parser.add_argument('--json', action='store_true') - parser.add_argument('--date', nargs=1, type=int) - log.info("Argument initialization") - return parser - -if __name__=="__main__": - parser = adding_arguments() - - args = parser.parse_args() - if args.verbose: + raise Exception("Invalid url") + except Exception as e: + print(e) + log.error(e) + + + def get_news(source, limit=None): + a = feedparser.parse(validation(source)) + if a['entries'] and a['status'] == 200: + print("Feed: ", a['feed']['title'],"\n") + from bs4 import BeautifulSoup + list_of_news = a['entries'][:args.limit[0]] if limit else a['entries'] + for news in list_of_news: + print('Title: ', news['title']) + print('Date: ', news['published']) + print('Link: ', news['link'], "\n") + feed = news['summary_detail']['value'] + if feed.startswith('

'): + parser = BeautifulSoup(feed,'html.parser') + print("[image: ", parser.find('img')['alt'], "][2]", parser.find('p').get_text(), "\n") + print() + else: + print(feed, "\n") + print('Links: ') + print("[1] ", news['link'], '(link)') + + if 'media_content' in news.keys(): + print("[2] ", news['media_content'][0]['url'], '(image)') + print("="*90) + + def adding_arguments(): + parser = argparse.ArgumentParser(description='Pure Python command-line RSS reader') + parser.add_argument('source', metavar='source', type=str, help='RSS URL') + parser.add_argument('--version', action='version', version='ver 1.1', help='Print version info') + parser.add_argument('--limit', metavar='LIMIT', nargs=1, type=int) + parser.add_argument('--verbose', action='store_true') + parser.add_argument('--json', action='store_true') + parser.add_argument('--date', nargs=1, type=int) + log.info("Argument initialization") + return parser + + def init_logging(): log.basicConfig(format='%(asctime)s %(module)s %(message)s', datefmt='%I:%M:%S', level=log.INFO) - get_news(args.source, args.limit) - - + From 5074bb93a39acc426fc6be6e43fc8553b4806468 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 17 Nov 2019 14:12:16 +0300 Subject: [PATCH 03/39] utility wrapped into distribution package(iteration 2) --- __main__.py | 9 --------- rss-reader/__init__.py | 0 rss-reader/__main__.py | 23 +++++++++++++++++++++++ news.py => rss-reader/news.py | 0 rss_reader.py => rss-reader/rss_reader.py | 23 +++++++++-------------- setup.py | 15 +++++++++++++++ 6 files changed, 47 insertions(+), 23 deletions(-) delete mode 100644 __main__.py create mode 100644 rss-reader/__init__.py create mode 100644 rss-reader/__main__.py rename news.py => rss-reader/news.py (100%) rename rss_reader.py => rss-reader/rss_reader.py (69%) create mode 100644 setup.py diff --git a/__main__.py b/__main__.py deleted file mode 100644 index d91e580..0000000 --- a/__main__.py +++ /dev/null @@ -1,9 +0,0 @@ -def main(): - parser = adding_arguments() - - args = parser.parse_args() - get_news(args.source, args.limit) - - -if __name__=="__main__": - main() \ No newline at end of file diff --git a/rss-reader/__init__.py b/rss-reader/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/rss-reader/__main__.py b/rss-reader/__main__.py new file mode 100644 index 0000000..e3bcf5a --- /dev/null +++ b/rss-reader/__main__.py @@ -0,0 +1,23 @@ +import argparse + + +def main(): + parser = adding_arguments() + args = parser.parse_args() + print(args.limit) + #get_news(args.source, args.limit) + + +def adding_arguments(): + parser = argparse.ArgumentParser(description='Pure Python command-line RSS reader') + parser.add_argument('source', metavar='source', type=str, help='RSS URL') + parser.add_argument('--version', action='version', version='ver 1.1', help='Print version info') + parser.add_argument('--limit', metavar='LIMIT', nargs=1, type=int) + parser.add_argument('--verbose', action='store_true') + parser.add_argument('--json', action='store_true') + parser.add_argument('--date', nargs='+', type=int) + return parser + + +if __name__=="__main__": + main() \ No newline at end of file diff --git a/news.py b/rss-reader/news.py similarity index 100% rename from news.py rename to rss-reader/news.py diff --git a/rss_reader.py b/rss-reader/rss_reader.py similarity index 69% rename from rss_reader.py rename to rss-reader/rss_reader.py index 13de1cd..f01c613 100644 --- a/rss_reader.py +++ b/rss-reader/rss_reader.py @@ -1,15 +1,19 @@ -import argparse import logging as log import json import feedparser from validator_collection.checkers import is_url -class Executor: - def __init__(self): +class RssReader: + def __init__(self, source): pass - def validation(url): + def __new__(cls): + if not hasattr(cls, 'instance'): + cls.instance = super(RssReader, cls).__new__(cls) + return cls.instance + + def validation(self): try: if is_url(url): return url @@ -44,16 +48,7 @@ def get_news(source, limit=None): print("[2] ", news['media_content'][0]['url'], '(image)') print("="*90) - def adding_arguments(): - parser = argparse.ArgumentParser(description='Pure Python command-line RSS reader') - parser.add_argument('source', metavar='source', type=str, help='RSS URL') - parser.add_argument('--version', action='version', version='ver 1.1', help='Print version info') - parser.add_argument('--limit', metavar='LIMIT', nargs=1, type=int) - parser.add_argument('--verbose', action='store_true') - parser.add_argument('--json', action='store_true') - parser.add_argument('--date', nargs=1, type=int) - log.info("Argument initialization") - return parser + def init_logging(): log.basicConfig(format='%(asctime)s %(module)s %(message)s', datefmt='%I:%M:%S', level=log.INFO) diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..c6ad01d --- /dev/null +++ b/setup.py @@ -0,0 +1,15 @@ +from setuptools import setup + +setup( + name='rss-reader', + version='1.0', + packages=['rss-reader'], + url='', + license='', + author='zavxoz', + author_email='artem.klimec8@gmail.com', + description='simple command-line rss reader', + entry_points={ + 'console_scripts': ['rss_reader = rss_reader.__main__:main'] + } +) From 3fd793f529e11886f44eb8e025ddafe994cd2076 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 17 Nov 2019 23:27:53 +0300 Subject: [PATCH 04/39] small changes in architecture of the application (update of __main__.py) --- requirements.txt | 3 ++ rss-reader/__init__.py | 0 rss-reader/__main__.py | 23 ------------ rss_reader/__init__.py | 2 + rss_reader/__main__.py | 2 + rss_reader/cli.py | 47 ++++++++++++++++++++++++ {rss-reader => rss_reader}/news.py | 0 {rss-reader => rss_reader}/rss_reader.py | 37 ++++++------------- setup.py | 8 ++-- 9 files changed, 70 insertions(+), 52 deletions(-) create mode 100644 requirements.txt delete mode 100644 rss-reader/__init__.py delete mode 100644 rss-reader/__main__.py create mode 100644 rss_reader/__init__.py create mode 100644 rss_reader/__main__.py create mode 100644 rss_reader/cli.py rename {rss-reader => rss_reader}/news.py (100%) rename {rss-reader => rss_reader}/rss_reader.py (63%) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..2c77f43 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +bs4==4.4.0 +validator_collection==1.3.7 +sqlalchemy==1.2.7 diff --git a/rss-reader/__init__.py b/rss-reader/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/rss-reader/__main__.py b/rss-reader/__main__.py deleted file mode 100644 index e3bcf5a..0000000 --- a/rss-reader/__main__.py +++ /dev/null @@ -1,23 +0,0 @@ -import argparse - - -def main(): - parser = adding_arguments() - args = parser.parse_args() - print(args.limit) - #get_news(args.source, args.limit) - - -def adding_arguments(): - parser = argparse.ArgumentParser(description='Pure Python command-line RSS reader') - parser.add_argument('source', metavar='source', type=str, help='RSS URL') - parser.add_argument('--version', action='version', version='ver 1.1', help='Print version info') - parser.add_argument('--limit', metavar='LIMIT', nargs=1, type=int) - parser.add_argument('--verbose', action='store_true') - parser.add_argument('--json', action='store_true') - parser.add_argument('--date', nargs='+', type=int) - return parser - - -if __name__=="__main__": - main() \ No newline at end of file diff --git a/rss_reader/__init__.py b/rss_reader/__init__.py new file mode 100644 index 0000000..7e172b4 --- /dev/null +++ b/rss_reader/__init__.py @@ -0,0 +1,2 @@ +from .rss_reader import RssReader +#from .news import News diff --git a/rss_reader/__main__.py b/rss_reader/__main__.py new file mode 100644 index 0000000..130bc63 --- /dev/null +++ b/rss_reader/__main__.py @@ -0,0 +1,2 @@ +from .cli import main +main() diff --git a/rss_reader/cli.py b/rss_reader/cli.py new file mode 100644 index 0000000..3cf169e --- /dev/null +++ b/rss_reader/cli.py @@ -0,0 +1,47 @@ +import argparse +import logging +import datetime +from validator_collection.checkers import is_url +from .rss_reader import RssReader + + +def main(): + parser = adding_arguments() + args = parser.parse_args() + init_logging(args.verbose) + validation(args.source) + RssReader(args.source, args.limit, args.date, args.json).get_and_parse_news() + + +def adding_arguments(): + parser = argparse.ArgumentParser(description='Pure Python command-line RSS reader') + parser.add_argument('source', metavar='source', type=str, help='RSS URL') + parser.add_argument('--version', action='version', version='ver 1.2', help='Print version info') + parser.add_argument('--limit', metavar='LIMIT', nargs=1, type=int) + parser.add_argument('--verbose', action='store_true') + parser.add_argument('--json', action='store_true') + parser.add_argument('--date', nargs='+', type=int) + return parser + + +def init_logging(verbose): + if verbose: + logging.basicConfig(format='%(module)s %(asctime)s %(message)s', + datefmt='%I:%M:%S', level=logging.INFO) + + +def validation(url, date=None): + logging.info('Validate input parameters') + try: + if date: + date_structure = datetime.strptime(date, '%Y%m%d') + if is_url(url): + return url, date + else: + raise Exception('Invalid url') + except Exception as e: + logging.error(e) + + +if __name__ == "__main__": + main() diff --git a/rss-reader/news.py b/rss_reader/news.py similarity index 100% rename from rss-reader/news.py rename to rss_reader/news.py diff --git a/rss-reader/rss_reader.py b/rss_reader/rss_reader.py similarity index 63% rename from rss-reader/rss_reader.py rename to rss_reader/rss_reader.py index f01c613..df9954b 100644 --- a/rss-reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -1,35 +1,29 @@ import logging as log import json import feedparser -from validator_collection.checkers import is_url -class RssReader: - def __init__(self, source): - pass +class RssReader(object): + def __init__(self, source, limit, date, json): + self.source = source + self.limit = limit + self.date = date + self.json = json + + ''' def __new__(cls): if not hasattr(cls, 'instance'): cls.instance = super(RssReader, cls).__new__(cls) return cls.instance + ''' - def validation(self): - try: - if is_url(url): - return url - else: - raise Exception("Invalid url") - except Exception as e: - print(e) - log.error(e) - - - def get_news(source, limit=None): - a = feedparser.parse(validation(source)) + def get_and_parse_news(self): + a = feedparser.parse(self.source) if a['entries'] and a['status'] == 200: print("Feed: ", a['feed']['title'],"\n") from bs4 import BeautifulSoup - list_of_news = a['entries'][:args.limit[0]] if limit else a['entries'] + list_of_news = a['entries'][:self.limit[0]] if self.limit else a['entries'] for news in list_of_news: print('Title: ', news['title']) print('Date: ', news['published']) @@ -47,10 +41,3 @@ def get_news(source, limit=None): if 'media_content' in news.keys(): print("[2] ", news['media_content'][0]['url'], '(image)') print("="*90) - - - - def init_logging(): - log.basicConfig(format='%(asctime)s %(module)s %(message)s', datefmt='%I:%M:%S', level=log.INFO) - - diff --git a/setup.py b/setup.py index c6ad01d..47b0563 100644 --- a/setup.py +++ b/setup.py @@ -2,14 +2,14 @@ setup( name='rss-reader', - version='1.0', - packages=['rss-reader'], + version='1.2', + packages=['rss_reader'], url='', license='', - author='zavxoz', + author='Zavxoz', author_email='artem.klimec8@gmail.com', description='simple command-line rss reader', entry_points={ - 'console_scripts': ['rss_reader = rss_reader.__main__:main'] + 'console_scripts': ['rss-reader = rss_reader.cli:main'] } ) From aa4f18280ef8e4141775580d365866f3e175f66d Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 17 Nov 2019 23:42:38 +0300 Subject: [PATCH 05/39] adding installing required packages into setup.py --- rss_reader/__init__.py | 1 + setup.py | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/rss_reader/__init__.py b/rss_reader/__init__.py index 7e172b4..96a0308 100644 --- a/rss_reader/__init__.py +++ b/rss_reader/__init__.py @@ -1,2 +1,3 @@ from .rss_reader import RssReader #from .news import News +__version__ = '1.2' \ No newline at end of file diff --git a/setup.py b/setup.py index 47b0563..8222560 100644 --- a/setup.py +++ b/setup.py @@ -1,14 +1,20 @@ from setuptools import setup +from rss_reader import __version__ as version + +with open('requirements.txt') as f: + requirements = f.read() + setup( name='rss-reader', - version='1.2', + version=version, packages=['rss_reader'], url='', license='', author='Zavxoz', author_email='artem.klimec8@gmail.com', description='simple command-line rss reader', + install_requires=requirements, entry_points={ 'console_scripts': ['rss-reader = rss_reader.cli:main'] } From ae0466a444e63b6424a24ca6a4a4839a51203921 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Mon, 18 Nov 2019 00:52:10 +0300 Subject: [PATCH 06/39] add sqlalchemy to support caching in app --- rss_reader/__init__.py | 2 -- rss_reader/news.py | 24 +++++++++++++++++------- rss_reader/rss_reader.py | 24 +++++++++++++++++++++--- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/rss_reader/__init__.py b/rss_reader/__init__.py index 96a0308..f3a2b1c 100644 --- a/rss_reader/__init__.py +++ b/rss_reader/__init__.py @@ -1,3 +1 @@ -from .rss_reader import RssReader -#from .news import News __version__ = '1.2' \ No newline at end of file diff --git a/rss_reader/news.py b/rss_reader/news.py index d650724..2f4cab4 100644 --- a/rss_reader/news.py +++ b/rss_reader/news.py @@ -2,21 +2,31 @@ from sqlalchemy.ext.declarative import declarative_base +engine = create_engine('sqlite:///news.db') Base = declarative_base() class News(Base): __tablename__ = 'news' - id = Column(Integer, primary_key=True, increment=1) - title = Column(String(100)) - description = Column(Text) + id = Column(Integer, primary_key=True, autoincrement=True) + feed = Column(String) + title = Column(String) date = Column(Date) - link = Column(Text) - media_content = Column(Text) + link = Column(String) + description = Column(String) + media_content = Column(String) + + def __init__(self, feed, title, description, link, media_content): + self.feed = feed + self.title = title + self.date = date + self.link = link + self.description = description + self.media_content = media_content + + def __repr__(): pass - - \ No newline at end of file diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index df9954b..a11d196 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -1,7 +1,8 @@ -import logging as log +import logging import json import feedparser - +from sqlalchemy.orm import sessionmaker +from .news import News, engine, Base class RssReader(object): def __init__(self, source, limit, date, json): @@ -9,6 +10,8 @@ def __init__(self, source, limit, date, json): self.limit = limit self.date = date self.json = json + Base.metadata.create_all(engine) + ''' @@ -19,12 +22,18 @@ def __new__(cls): ''' def get_and_parse_news(self): + logging.info('Getting news') a = feedparser.parse(self.source) + logging.info('Parsing news') + Session = sessionmaker(bind=engine) + session = Session() if a['entries'] and a['status'] == 200: print("Feed: ", a['feed']['title'],"\n") from bs4 import BeautifulSoup list_of_news = a['entries'][:self.limit[0]] if self.limit else a['entries'] - for news in list_of_news: + for news in list_of_news: + + print('Title: ', news['title']) print('Date: ', news['published']) print('Link: ', news['link'], "\n") @@ -33,6 +42,13 @@ def get_and_parse_news(self): parser = BeautifulSoup(feed,'html.parser') print("[image: ", parser.find('img')['alt'], "][2]", parser.find('p').get_text(), "\n") print() + aaa = News(a['feed']['title'], + news['title'], + #news['published_parsed'], + news['link'], + parser.find('p').get_text(), + news['media_content'][0]['url']) + session.add(aaa) else: print(feed, "\n") print('Links: ') @@ -41,3 +57,5 @@ def get_and_parse_news(self): if 'media_content' in news.keys(): print("[2] ", news['media_content'][0]['url'], '(image)') print("="*90) + session.commit() + session.close() From 621e934bc291c7a0955e7bcf8a3c15640f4d1e82 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Mon, 18 Nov 2019 01:32:09 +0300 Subject: [PATCH 07/39] finish work with adding information into database --- rss_reader/cli.py | 2 +- rss_reader/news.py | 17 ++++----- rss_reader/rss_reader.py | 75 ++++++++++++++++++---------------------- 3 files changed, 41 insertions(+), 53 deletions(-) diff --git a/rss_reader/cli.py b/rss_reader/cli.py index 3cf169e..b315570 100644 --- a/rss_reader/cli.py +++ b/rss_reader/cli.py @@ -20,7 +20,7 @@ def adding_arguments(): parser.add_argument('--limit', metavar='LIMIT', nargs=1, type=int) parser.add_argument('--verbose', action='store_true') parser.add_argument('--json', action='store_true') - parser.add_argument('--date', nargs='+', type=int) + parser.add_argument('--date', nargs=1, type=int) return parser diff --git a/rss_reader/news.py b/rss_reader/news.py index 2f4cab4..d475c8d 100644 --- a/rss_reader/news.py +++ b/rss_reader/news.py @@ -8,25 +8,22 @@ class News(Base): __tablename__ = 'news' - + id = Column(Integer, primary_key=True, autoincrement=True) feed = Column(String) title = Column(String) - date = Column(Date) + date = Column(DateTime) link = Column(String) - description = Column(String) + description = Column(String) media_content = Column(String) - - - def __init__(self, feed, title, description, link, media_content): + + def __init__(self, feed, title, date, description, link, media_content): self.feed = feed self.title = title self.date = date self.link = link - self.description = description + self.description = description self.media_content = media_content - - + def __repr__(): pass - \ No newline at end of file diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index a11d196..7d7df43 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -1,61 +1,52 @@ import logging import json import feedparser +from datetime import datetime as dt +from time import mktime from sqlalchemy.orm import sessionmaker from .news import News, engine, Base + class RssReader(object): def __init__(self, source, limit, date, json): self.source = source self.limit = limit self.date = date self.json = json - Base.metadata.create_all(engine) - - - - ''' - def __new__(cls): - if not hasattr(cls, 'instance'): - cls.instance = super(RssReader, cls).__new__(cls) - return cls.instance - ''' + Base.metadata.create_all(engine) def get_and_parse_news(self): logging.info('Getting news') - a = feedparser.parse(self.source) + news = feedparser.parse(self.source) logging.info('Parsing news') - Session = sessionmaker(bind=engine) - session = Session() - if a['entries'] and a['status'] == 200: - print("Feed: ", a['feed']['title'],"\n") + session = self.create_session() + if news['entries'] and news['status'] == 200: from bs4 import BeautifulSoup - list_of_news = a['entries'][:self.limit[0]] if self.limit else a['entries'] - for news in list_of_news: - - - print('Title: ', news['title']) - print('Date: ', news['published']) - print('Link: ', news['link'], "\n") - feed = news['summary_detail']['value'] - if feed.startswith('

'): - parser = BeautifulSoup(feed,'html.parser') - print("[image: ", parser.find('img')['alt'], "][2]", parser.find('p').get_text(), "\n") - print() - aaa = News(a['feed']['title'], - news['title'], - #news['published_parsed'], - news['link'], - parser.find('p').get_text(), - news['media_content'][0]['url']) - session.add(aaa) - else: - print(feed, "\n") - print('Links: ') - print("[1] ", news['link'], '(link)') - - if 'media_content' in news.keys(): - print("[2] ", news['media_content'][0]['url'], '(image)') - print("="*90) + list_of_news = news['entries'][:self.limit[0]] if self.limit else news['entries'] + for feed in list_of_news: + text_of_the_feed = feed['summary_detail']['value'] + if text_of_the_feed.startswith('

'): + parser = BeautifulSoup(text_of_the_feed, 'html.parser') + text_of_the_feed = parser.find('p').get_text() + if 'media_content' in feed.keys(): + media_content = feed['media_content'][0]['url'] + feed_object = News(news['feed']['title'], + feed['title'], + dt.fromtimestamp(mktime(feed['published_parsed'])), + feed['link'], + text_of_the_feed, + feed['media_content'][0]['url']) + session.add(feed_object) + else: + raise ConnectionError + logging.info('All news are cached') session.commit() session.close() + + @classmethod + def create_session(cls): + Session = sessionmaker(bind=engine) + return Session() + + def __repr__(self): + pass From a00ecba40188c2acb4ba75346e3217604a5dc1d6 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Mon, 18 Nov 2019 02:31:15 +0300 Subject: [PATCH 08/39] add some functionality for print news --- requirements.txt | 1 + rss_reader/news.py | 10 +++++++--- rss_reader/rss_reader.py | 5 ++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/requirements.txt b/requirements.txt index 2c77f43..0ca96e8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ bs4==4.4.0 validator_collection==1.3.7 sqlalchemy==1.2.7 +feedparser==5.2.1 \ No newline at end of file diff --git a/rss_reader/news.py b/rss_reader/news.py index d475c8d..287ae2d 100644 --- a/rss_reader/news.py +++ b/rss_reader/news.py @@ -17,7 +17,7 @@ class News(Base): description = Column(String) media_content = Column(String) - def __init__(self, feed, title, date, description, link, media_content): + def __init__(self, feed, title, date, link, description, media_content): self.feed = feed self.title = title self.date = date @@ -25,5 +25,9 @@ def __init__(self, feed, title, date, description, link, media_content): self.description = description self.media_content = media_content - def __repr__(): - pass + def __str__(self): + return 'Feed: %s\nTitle: %s\nDate: %s\nLink: %s\n\n%s\n\nLinks:\n[1] %s (feed)\n[2] %s (image)\n' % \ + (self.feed, self.title, self.date, self.link, self.description, self.link, self.media_content) + + def __call__(self): + return self.feed, self.title, self.date, self.link, self.description, self.media_content diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index 7d7df43..3dafef2 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -48,5 +48,8 @@ def create_session(cls): Session = sessionmaker(bind=engine) return Session() - def __repr__(self): + def get_news(self, date): + pass + + def __str__(self): pass From 8d2b64b9f15db1ec49b93f5f1572de0cd234f8cb Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Mon, 18 Nov 2019 09:22:50 +0300 Subject: [PATCH 09/39] Add classes to work with json format --- rss_reader/json_formatter.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 rss_reader/json_formatter.py diff --git a/rss_reader/json_formatter.py b/rss_reader/json_formatter.py new file mode 100644 index 0000000..e0b2bf8 --- /dev/null +++ b/rss_reader/json_formatter.py @@ -0,0 +1,17 @@ +import json +from .news import News + +class FeedEncoder(json.JSONEncoder): + def default(self, obj: object) -> Dict: + if isinstance(obj, News): + return {} + return json.JSONEncoder.default(self, obj) + + +class Json(object): + + def __init__(self, feed, title, date, description, links): + self.feed_dict = {'feed':feed, 'title':title, 'date':date, 'description':description, 'links':links} + + def mk_json(self): + json.dumps(self, cls=FeedEncoder, indent=4, encure_ascii=False). From 6753bfe5ec1e93ea06b5bc2383ef225d41f49a91 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Thu, 21 Nov 2019 14:52:11 +0300 Subject: [PATCH 10/39] adding check for news in the database --- rss_reader/cli.py | 4 +++- rss_reader/json_formatter.py | 10 ++++++---- rss_reader/news.py | 6 +++--- rss_reader/rss_reader.py | 15 ++++++++++++--- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/rss_reader/cli.py b/rss_reader/cli.py index b315570..86ffbd2 100644 --- a/rss_reader/cli.py +++ b/rss_reader/cli.py @@ -10,7 +10,9 @@ def main(): args = parser.parse_args() init_logging(args.verbose) validation(args.source) - RssReader(args.source, args.limit, args.date, args.json).get_and_parse_news() + rss = RssReader(args.source, args.limit, args.date, args.json) + rss.get_and_parse_news() + def adding_arguments(): diff --git a/rss_reader/json_formatter.py b/rss_reader/json_formatter.py index e0b2bf8..8986297 100644 --- a/rss_reader/json_formatter.py +++ b/rss_reader/json_formatter.py @@ -2,7 +2,7 @@ from .news import News class FeedEncoder(json.JSONEncoder): - def default(self, obj: object) -> Dict: + def default(self, obj: object): if isinstance(obj, News): return {} return json.JSONEncoder.default(self, obj) @@ -10,8 +10,10 @@ def default(self, obj: object) -> Dict: class Json(object): - def __init__(self, feed, title, date, description, links): - self.feed_dict = {'feed':feed, 'title':title, 'date':date, 'description':description, 'links':links} + def __init__(self, obj): + self.feed_dict = {'feed':obj.feed, 'title':obj.title, 'date':obj.date, + 'description':obj.description, 'links':[obj.link, obj.media_content]} def mk_json(self): - json.dumps(self, cls=FeedEncoder, indent=4, encure_ascii=False). + print(json.dumps(self, cls=FeedEncoder, indent=4, encure_ascii=False)) + return json.dumps(self, cls=FeedEncoder, indent=4, encure_ascii=False) diff --git a/rss_reader/news.py b/rss_reader/news.py index 287ae2d..bd41005 100644 --- a/rss_reader/news.py +++ b/rss_reader/news.py @@ -25,9 +25,9 @@ def __init__(self, feed, title, date, link, description, media_content): self.description = description self.media_content = media_content - def __str__(self): - return 'Feed: %s\nTitle: %s\nDate: %s\nLink: %s\n\n%s\n\nLinks:\n[1] %s (feed)\n[2] %s (image)\n' % \ - (self.feed, self.title, self.date, self.link, self.description, self.link, self.media_content) + def __str__(self, json=None): + return 'Feed: %s\nTitle: %s\nDate: %s\nLink: %s\n\n%s\n\nLinks:\n[1] %s --feed\n[2] %s --image\n' % \ + (self.feed, self.title, self.date, self.link, self.description, self.link, self.media_content if self.media_content else 'There is no') def __call__(self): return self.feed, self.title, self.date, self.link, self.description, self.media_content diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index 3dafef2..1a3cf8c 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -5,7 +5,7 @@ from time import mktime from sqlalchemy.orm import sessionmaker from .news import News, engine, Base - +from .json_formatter import Json class RssReader(object): def __init__(self, source, limit, date, json): @@ -13,6 +13,7 @@ def __init__(self, source, limit, date, json): self.limit = limit self.date = date self.json = json + self.news_to_print = [] Base.metadata.create_all(engine) def get_and_parse_news(self): @@ -36,7 +37,10 @@ def get_and_parse_news(self): feed['link'], text_of_the_feed, feed['media_content'][0]['url']) - session.add(feed_object) + + self.news_to_print.append(feed_object) + if not session.query(News).filter(News.title==feed['title']).first(): + session.add(feed_object) else: raise ConnectionError logging.info('All news are cached') @@ -48,8 +52,13 @@ def create_session(cls): Session = sessionmaker(bind=engine) return Session() - def get_news(self, date): + def get_cached_news(self, date): pass + + def print_news(self): + for feed in self.news_to_print: + print(feed) + def __str__(self): pass From f9f4e796b66b02f3c5ab2a3eca8ec066f4fb83fa Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Thu, 21 Nov 2019 17:35:32 +0300 Subject: [PATCH 11/39] adding getting and printing cached news by date(iteration 3) --- rss_reader/cli.py | 4 ++-- rss_reader/rss_reader.py | 28 ++++++++++++++++++++-------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/rss_reader/cli.py b/rss_reader/cli.py index 86ffbd2..72e6769 100644 --- a/rss_reader/cli.py +++ b/rss_reader/cli.py @@ -11,7 +11,7 @@ def main(): init_logging(args.verbose) validation(args.source) rss = RssReader(args.source, args.limit, args.date, args.json) - rss.get_and_parse_news() + rss.get_news() @@ -22,7 +22,7 @@ def adding_arguments(): parser.add_argument('--limit', metavar='LIMIT', nargs=1, type=int) parser.add_argument('--verbose', action='store_true') parser.add_argument('--json', action='store_true') - parser.add_argument('--date', nargs=1, type=int) + parser.add_argument('--date', nargs=1, type=str) return parser diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index 1a3cf8c..4af235c 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -1,9 +1,10 @@ import logging import json import feedparser -from datetime import datetime as dt +from datetime import datetime, date from time import mktime from sqlalchemy.orm import sessionmaker +from sqlalchemy import DATE, func from .news import News, engine, Base from .json_formatter import Json @@ -11,9 +12,9 @@ class RssReader(object): def __init__(self, source, limit, date, json): self.source = source self.limit = limit - self.date = date + self.date = date[0] self.json = json - self.news_to_print = [] + #self.news_to_print = [] Base.metadata.create_all(engine) def get_and_parse_news(self): @@ -31,14 +32,15 @@ def get_and_parse_news(self): text_of_the_feed = parser.find('p').get_text() if 'media_content' in feed.keys(): media_content = feed['media_content'][0]['url'] + print(datetime.fromtimestamp(mktime(feed['published_parsed']))) feed_object = News(news['feed']['title'], feed['title'], - dt.fromtimestamp(mktime(feed['published_parsed'])), + datetime.fromtimestamp(mktime(feed['published_parsed'])), feed['link'], text_of_the_feed, feed['media_content'][0]['url']) - self.news_to_print.append(feed_object) + #self.news_to_print.append(feed_object) if not session.query(News).filter(News.title==feed['title']).first(): session.add(feed_object) else: @@ -52,10 +54,20 @@ def create_session(cls): Session = sessionmaker(bind=engine) return Session() - def get_cached_news(self, date): - pass - + def get_cached_news(self): + session = self.create_session() + date_for_find = datetime.strptime(self.date, '%Y%m%d').date() + cached_news = session.query(News).filter(func.DATE(News.date)==date_for_find).all() + session.close() + for feed in cached_news: + print(feed) + def get_news(self): + if self.date: + self.get_cached_news() + else: + self.get_and_parse_news() + def print_news(self): for feed in self.news_to_print: print(feed) From 5a5e5e503932196b9677f2991625b8b94a885eca Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Fri, 22 Nov 2019 19:17:14 +0300 Subject: [PATCH 12/39] change the method of determining the news that will be printed(getting news from database) --- rss_reader/cli.py | 2 +- rss_reader/json_formatter.py | 14 ++++----- rss_reader/news.py | 18 +++++++---- rss_reader/rss_reader.py | 58 ++++++++++++++++++++++++------------ 4 files changed, 59 insertions(+), 33 deletions(-) diff --git a/rss_reader/cli.py b/rss_reader/cli.py index 72e6769..e6a6549 100644 --- a/rss_reader/cli.py +++ b/rss_reader/cli.py @@ -12,7 +12,7 @@ def main(): validation(args.source) rss = RssReader(args.source, args.limit, args.date, args.json) rss.get_news() - + rss.print_news() def adding_arguments(): diff --git a/rss_reader/json_formatter.py b/rss_reader/json_formatter.py index 8986297..45ddfe4 100644 --- a/rss_reader/json_formatter.py +++ b/rss_reader/json_formatter.py @@ -3,17 +3,15 @@ class FeedEncoder(json.JSONEncoder): def default(self, obj: object): - if isinstance(obj, News): - return {} + if isinstance(obj, Json): + return {'News':[{'Feed'+str(number):{k:v for k,v in (feed.__dict__).items()} for number, feed in zip(range(len(obj.news_to_convert)),obj.news_to_convert)}]} return json.JSONEncoder.default(self, obj) class Json(object): - def __init__(self, obj): - self.feed_dict = {'feed':obj.feed, 'title':obj.title, 'date':obj.date, - 'description':obj.description, 'links':[obj.link, obj.media_content]} + def __init__(self, news): + self.news_to_convert = news - def mk_json(self): - print(json.dumps(self, cls=FeedEncoder, indent=4, encure_ascii=False)) - return json.dumps(self, cls=FeedEncoder, indent=4, encure_ascii=False) + def __str__(self): + return json.dumps(self, cls=FeedEncoder, indent=4, ensure_ascii=False) diff --git a/rss_reader/news.py b/rss_reader/news.py index bd41005..7e557cd 100644 --- a/rss_reader/news.py +++ b/rss_reader/news.py @@ -2,7 +2,7 @@ from sqlalchemy.ext.declarative import declarative_base -engine = create_engine('sqlite:///news.db') +engine = create_engine('postgresql:///news') Base = declarative_base() @@ -15,19 +15,27 @@ class News(Base): date = Column(DateTime) link = Column(String) description = Column(String) - media_content = Column(String) + media_content = Column(PickleType) + date_of_addition = Column(DateTime) - def __init__(self, feed, title, date, link, description, media_content): + def __init__(self, feed, title, date, link, description, media_content, date_of_addition): self.feed = feed self.title = title self.date = date self.link = link self.description = description self.media_content = media_content + self.date_of_addition = date_of_addition def __str__(self, json=None): - return 'Feed: %s\nTitle: %s\nDate: %s\nLink: %s\n\n%s\n\nLinks:\n[1] %s --feed\n[2] %s --image\n' % \ - (self.feed, self.title, self.date, self.link, self.description, self.link, self.media_content if self.media_content else 'There is no') + str_to_print = 'Feed: %s\nTitle: %s\nDate: %s\nLink: %s\n\n%s\n\nLinks:\n[1] %s --feed\n' % \ + (self.feed, self.title, self.date, self.link, self.description, self.link) + if self.media_content: + for i in range(len(self.media_content)): + str_to_print += '[%d] %s --image\n' % (i+2, self.media_content[i]) + return str_to_print def __call__(self): return self.feed, self.title, self.date, self.link, self.description, self.media_content + + \ No newline at end of file diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index 4af235c..c440593 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -4,7 +4,7 @@ from datetime import datetime, date from time import mktime from sqlalchemy.orm import sessionmaker -from sqlalchemy import DATE, func +from sqlalchemy import DATE, func, TIME, desc, asc from .news import News, engine, Base from .json_formatter import Json @@ -12,9 +12,8 @@ class RssReader(object): def __init__(self, source, limit, date, json): self.source = source self.limit = limit - self.date = date[0] + self.date = date self.json = json - #self.news_to_print = [] Base.metadata.create_all(engine) def get_and_parse_news(self): @@ -23,26 +22,28 @@ def get_and_parse_news(self): logging.info('Parsing news') session = self.create_session() if news['entries'] and news['status'] == 200: - from bs4 import BeautifulSoup + list_of_news = news['entries'][:self.limit[0]] if self.limit else news['entries'] for feed in list_of_news: - text_of_the_feed = feed['summary_detail']['value'] - if text_of_the_feed.startswith('

'): - parser = BeautifulSoup(text_of_the_feed, 'html.parser') - text_of_the_feed = parser.find('p').get_text() + text_of_the_feed = self.parse_html(feed['summary_detail']['value']) + title = self.parse_html(feed['title']) if 'media_content' in feed.keys(): media_content = feed['media_content'][0]['url'] - print(datetime.fromtimestamp(mktime(feed['published_parsed']))) feed_object = News(news['feed']['title'], - feed['title'], + title, datetime.fromtimestamp(mktime(feed['published_parsed'])), feed['link'], text_of_the_feed, - feed['media_content'][0]['url']) - - #self.news_to_print.append(feed_object) - if not session.query(News).filter(News.title==feed['title']).first(): + [image['url'] for image in feed['media_content']], + datetime.today()) + current_feed_in_table = session.query(News).filter(News.link==feed['link']).first() + if not current_feed_in_table: session.add(feed_object) + else: + session.query(News)\ + .filter(News.link==feed['link'])\ + .update({'date_of_addition':datetime.today()}) + session.commit() else: raise ConnectionError logging.info('All news are cached') @@ -54,10 +55,15 @@ def create_session(cls): Session = sessionmaker(bind=engine) return Session() + def parse_html(self, html): + from bs4 import BeautifulSoup + parser = BeautifulSoup(html, 'html.parser') + return parser.get_text() + def get_cached_news(self): session = self.create_session() - date_for_find = datetime.strptime(self.date, '%Y%m%d').date() - cached_news = session.query(News).filter(func.DATE(News.date)==date_for_find).all() + date_for_find = [datetime.strptime(date_of_feed, '%Y%m%d').date() for date_of_feed in self.date] + cached_news = session.query(News).filter(func.DATE(News.date) == date_for_find[0]).all() session.close() for feed in cached_news: print(feed) @@ -69,8 +75,22 @@ def get_news(self): self.get_and_parse_news() def print_news(self): - for feed in self.news_to_print: - print(feed) - + if self.json: + print(Json()) + else: + session = self.create_session() + if self.limit: + news_to_print = session.query(News)\ + .filter(News.date_of_addition == datetime.today())\ + .order_by(News.date_of_addition.desc())\ + .limit(self.limit[0]).all() + else: + news_to_print = session.query(News)\ + .filter(func.DATE(News.date_of_addition) == datetime.today().date())\ + .order_by(News.date_of_addition.asc()).all() + session.close() + for feed in news_to_print: + print(feed) + def __str__(self): pass From 1d67d200d87b941c7ce5aec4024956bcc1416f8b Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sat, 23 Nov 2019 01:11:42 +0300 Subject: [PATCH 13/39] use context manager to use sqlalchemy session --- rss_reader/cli.py | 2 +- rss_reader/rss_reader.py | 113 +++++++++++++++++++++------------------ 2 files changed, 61 insertions(+), 54 deletions(-) diff --git a/rss_reader/cli.py b/rss_reader/cli.py index e6a6549..4365b04 100644 --- a/rss_reader/cli.py +++ b/rss_reader/cli.py @@ -12,7 +12,7 @@ def main(): validation(args.source) rss = RssReader(args.source, args.limit, args.date, args.json) rss.get_news() - rss.print_news() + #rss.print_news() def adding_arguments(): diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index c440593..8573548 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -7,6 +7,20 @@ from sqlalchemy import DATE, func, TIME, desc, asc from .news import News, engine, Base from .json_formatter import Json +from contextlib import contextmanager + + +@contextmanager +def create_session(adding=None): + Session = sessionmaker(bind=engine) + s = Session() + try: + yield s + finally: + if adding: + s.commit() + s.close() + class RssReader(object): def __init__(self, source, limit, date, json): @@ -14,83 +28,76 @@ def __init__(self, source, limit, date, json): self.limit = limit self.date = date self.json = json + self.news_to_print = [] Base.metadata.create_all(engine) def get_and_parse_news(self): logging.info('Getting news') news = feedparser.parse(self.source) logging.info('Parsing news') - session = self.create_session() if news['entries'] and news['status'] == 200: - - list_of_news = news['entries'][:self.limit[0]] if self.limit else news['entries'] - for feed in list_of_news: - text_of_the_feed = self.parse_html(feed['summary_detail']['value']) - title = self.parse_html(feed['title']) - if 'media_content' in feed.keys(): - media_content = feed['media_content'][0]['url'] - feed_object = News(news['feed']['title'], - title, - datetime.fromtimestamp(mktime(feed['published_parsed'])), - feed['link'], - text_of_the_feed, - [image['url'] for image in feed['media_content']], - datetime.today()) - current_feed_in_table = session.query(News).filter(News.link==feed['link']).first() - if not current_feed_in_table: - session.add(feed_object) - else: - session.query(News)\ - .filter(News.link==feed['link'])\ - .update({'date_of_addition':datetime.today()}) - session.commit() + with create_session('adding') as s: + list_of_news = news['entries'][:self.limit[0]] if self.limit else news['entries'] + for feed in list_of_news: + text_of_the_feed = self.parse_html(feed['summary_detail']['value']) + title = self.parse_html(feed['title']) + if 'media_content' in feed.keys(): + media_content = feed['media_content'][0]['url'] + feed_object = News(news['feed']['title'], + title, + datetime.fromtimestamp(mktime(feed['published_parsed'])), + feed['link'], + text_of_the_feed, + [image['url'] for image in feed['media_content']], + datetime.today()) + current_feed_in_table = s.query(News).filter(News.link==feed['link']).first() + if not current_feed_in_table: + s.add(feed_object) + else: + s.query(News)\ + .filter(News.link==feed['link'])\ + .update({'date_of_addition':datetime.today()}) else: raise ConnectionError logging.info('All news are cached') - session.commit() - session.close() - - @classmethod - def create_session(cls): - Session = sessionmaker(bind=engine) - return Session() - + def parse_html(self, html): from bs4 import BeautifulSoup parser = BeautifulSoup(html, 'html.parser') return parser.get_text() def get_cached_news(self): - session = self.create_session() - date_for_find = [datetime.strptime(date_of_feed, '%Y%m%d').date() for date_of_feed in self.date] - cached_news = session.query(News).filter(func.DATE(News.date) == date_for_find[0]).all() - session.close() - for feed in cached_news: - print(feed) + with create_session() as s: + date_for_find = [datetime.strptime(date_of_feed, '%Y%m%d').date() for date_of_feed in self.date] + self.news_to_print = s.query(News).filter(func.DATE(News.date) == date_for_find[0]).all() + self.print_news() def get_news(self): if self.date: self.get_cached_news() else: self.get_and_parse_news() + self.get_news_to_print() - def print_news(self): - if self.json: - print(Json()) - else: - session = self.create_session() + def get_news_to_print(self): + with create_session() as s: if self.limit: - news_to_print = session.query(News)\ - .filter(News.date_of_addition == datetime.today())\ - .order_by(News.date_of_addition.desc())\ - .limit(self.limit[0]).all() + self.news_to_print = s.query(News)\ + .filter(News.date_of_addition == datetime.today())\ + .order_by(News.date_of_addition.desc())\ + .limit(self.limit[0]).all() else: - news_to_print = session.query(News)\ - .filter(func.DATE(News.date_of_addition) == datetime.today().date())\ - .order_by(News.date_of_addition.asc()).all() - session.close() - for feed in news_to_print: - print(feed) - + self.news_to_print = s.query(News)\ + .filter(func.DATE(News.date_of_addition) == datetime.today().date())\ + .order_by(News.date_of_addition.asc()).all() + if self.json: + print(Json(self.news_to_print)) + else: + self.print_news() + + def print_news(self): + for feed in self.news_to_print: + print(feed) + def __str__(self): pass From fb2a223e51e1c14f3aa64fd34051fc4a79086431 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sat, 23 Nov 2019 01:36:05 +0300 Subject: [PATCH 14/39] added classes for converters and some little changes in rss_reader.py --- rss_reader/cli.py | 3 +-- rss_reader/converter.py | 21 +++++++++++++++++++++ rss_reader/rss_reader.py | 18 ++++++++---------- 3 files changed, 30 insertions(+), 12 deletions(-) create mode 100644 rss_reader/converter.py diff --git a/rss_reader/cli.py b/rss_reader/cli.py index 4365b04..b313193 100644 --- a/rss_reader/cli.py +++ b/rss_reader/cli.py @@ -11,8 +11,7 @@ def main(): init_logging(args.verbose) validation(args.source) rss = RssReader(args.source, args.limit, args.date, args.json) - rss.get_news() - #rss.print_news() + rss() def adding_arguments(): diff --git a/rss_reader/converter.py b/rss_reader/converter.py new file mode 100644 index 0000000..b4d4f0a --- /dev/null +++ b/rss_reader/converter.py @@ -0,0 +1,21 @@ +from abc import ABC, abstractmethod + + +class ConverterBase(ABC): + + @abstractmethod + def convert(self): + return self + +class PdfConverter(ConverterBase): + pass + +class EpubConverte(ConverterBase): + pass + +class MobiConverter(ConverterBase): + pass + +class Fb2Converter(ConverterBase): + pass + \ No newline at end of file diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index 8573548..eef3314 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -70,14 +70,7 @@ def get_cached_news(self): with create_session() as s: date_for_find = [datetime.strptime(date_of_feed, '%Y%m%d').date() for date_of_feed in self.date] self.news_to_print = s.query(News).filter(func.DATE(News.date) == date_for_find[0]).all() - self.print_news() - - def get_news(self): - if self.date: - self.get_cached_news() - else: - self.get_and_parse_news() - self.get_news_to_print() + self.print_news() def get_news_to_print(self): with create_session() as s: @@ -98,6 +91,11 @@ def get_news_to_print(self): def print_news(self): for feed in self.news_to_print: print(feed) + print('='*50) - def __str__(self): - pass + def __call__(self): + if self.date: + self.get_cached_news() + else: + self.get_and_parse_news() + self.get_news_to_print() From d5d590deccf4789f366868dd80d0d4c38da81cdf Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Tue, 26 Nov 2019 19:41:11 +0300 Subject: [PATCH 15/39] commit for checking how system work on clean machine(docker container) --- requirements.txt | 2 +- rss_reader/converter.py | 22 ++++++++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/requirements.txt b/requirements.txt index 0ca96e8..b0e9d78 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,4 @@ -bs4==4.4.0 +beautifulsoup4==4.8.0 validator_collection==1.3.7 sqlalchemy==1.2.7 feedparser==5.2.1 \ No newline at end of file diff --git a/rss_reader/converter.py b/rss_reader/converter.py index b4d4f0a..d30801c 100644 --- a/rss_reader/converter.py +++ b/rss_reader/converter.py @@ -2,20 +2,34 @@ class ConverterBase(ABC): - + def __init__(self, news): + self.news = news + @abstractmethod - def convert(self): - return self + def convert(self, news): + return news + +class HtmlConverter(ConverterBase): + + def convert(self): + return path + + class PdfConverter(ConverterBase): - pass + + def convert(self): + return path + class EpubConverte(ConverterBase): pass + class MobiConverter(ConverterBase): pass + class Fb2Converter(ConverterBase): pass \ No newline at end of file From e624dbaaf67b4e7ed7d92f47e3c653968673e33c Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Tue, 26 Nov 2019 19:41:11 +0300 Subject: [PATCH 16/39] commit for checking how system work on clean machine(docker container) --- requirements.txt | 5 +++-- rss_reader/converter.py | 22 ++++++++++++++++++---- setup.py | 1 + 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/requirements.txt b/requirements.txt index 0ca96e8..d83d659 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ -bs4==4.4.0 +beautifulsoup4==4.8.0 validator_collection==1.3.7 sqlalchemy==1.2.7 -feedparser==5.2.1 \ No newline at end of file +feedparser==5.2.1 +psycopg2==2.8.4 \ No newline at end of file diff --git a/rss_reader/converter.py b/rss_reader/converter.py index b4d4f0a..d30801c 100644 --- a/rss_reader/converter.py +++ b/rss_reader/converter.py @@ -2,20 +2,34 @@ class ConverterBase(ABC): - + def __init__(self, news): + self.news = news + @abstractmethod - def convert(self): - return self + def convert(self, news): + return news + +class HtmlConverter(ConverterBase): + + def convert(self): + return path + + class PdfConverter(ConverterBase): - pass + + def convert(self): + return path + class EpubConverte(ConverterBase): pass + class MobiConverter(ConverterBase): pass + class Fb2Converter(ConverterBase): pass \ No newline at end of file diff --git a/setup.py b/setup.py index 8222560..27a8cea 100644 --- a/setup.py +++ b/setup.py @@ -15,6 +15,7 @@ author_email='artem.klimec8@gmail.com', description='simple command-line rss reader', install_requires=requirements, + dependency_links=['https://github.com/postgres/postgres'], entry_points={ 'console_scripts': ['rss-reader = rss_reader.cli:main'] } From 853640a43877f0807efbf78f2e0c64e0005ba8e4 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Tue, 26 Nov 2019 22:14:56 +0300 Subject: [PATCH 17/39] changed news storage database to cimplify application deployment --- requirements.txt | 3 +-- rss_reader/news.py | 2 +- setup.py | 1 - 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/requirements.txt b/requirements.txt index d83d659..b0e9d78 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,4 @@ beautifulsoup4==4.8.0 validator_collection==1.3.7 sqlalchemy==1.2.7 -feedparser==5.2.1 -psycopg2==2.8.4 \ No newline at end of file +feedparser==5.2.1 \ No newline at end of file diff --git a/rss_reader/news.py b/rss_reader/news.py index 7e557cd..cb0af9a 100644 --- a/rss_reader/news.py +++ b/rss_reader/news.py @@ -2,7 +2,7 @@ from sqlalchemy.ext.declarative import declarative_base -engine = create_engine('postgresql:///news') +engine = create_engine('sqlite:///news') Base = declarative_base() diff --git a/setup.py b/setup.py index 27a8cea..8222560 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,6 @@ author_email='artem.klimec8@gmail.com', description='simple command-line rss reader', install_requires=requirements, - dependency_links=['https://github.com/postgres/postgres'], entry_points={ 'console_scripts': ['rss-reader = rss_reader.cli:main'] } From fcc72d01ded8fd8712a6081adddc6c11b7da727c Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Wed, 27 Nov 2019 19:19:10 +0300 Subject: [PATCH 18/39] upgrading validation of arguments --- rss_reader/cli.py | 55 +++++++++++++++++++++++++++------------- rss_reader/rss_reader.py | 13 ++++++---- 2 files changed, 45 insertions(+), 23 deletions(-) diff --git a/rss_reader/cli.py b/rss_reader/cli.py index b313193..67ca41f 100644 --- a/rss_reader/cli.py +++ b/rss_reader/cli.py @@ -1,6 +1,7 @@ import argparse import logging -import datetime +from datetime import datetime +from pathlib import Path from validator_collection.checkers import is_url from .rss_reader import RssReader @@ -9,39 +10,57 @@ def main(): parser = adding_arguments() args = parser.parse_args() init_logging(args.verbose) - validation(args.source) - rss = RssReader(args.source, args.limit, args.date, args.json) + configuration_for_conversion = mk_config_for_conversion(args.to_pdf, args.to_html) + rss = RssReader(args.source, args.limit, args.date, args.json, configuration_for_conversion) rss() def adding_arguments(): parser = argparse.ArgumentParser(description='Pure Python command-line RSS reader') - parser.add_argument('source', metavar='source', type=str, help='RSS URL') + parser.add_argument('source', metavar='source', type=url, help='RSS URL') parser.add_argument('--version', action='version', version='ver 1.2', help='Print version info') - parser.add_argument('--limit', metavar='LIMIT', nargs=1, type=int) + parser.add_argument('--limit', metavar='LIMIT', type=int) parser.add_argument('--verbose', action='store_true') parser.add_argument('--json', action='store_true') - parser.add_argument('--date', nargs=1, type=str) + parser.add_argument('--date', type=date) + parser.add_argument('--to-pdf', type=directory) + parser.add_argument('--to-html', type=directory) return parser +def directory(path): + if not Path.exists(path): + raise ValueError('Wrong path to save file') + return path + + +def url(source): + if not is_url(source): + raise argparse.ArgumentError('Invalid url') + return source + + +def date(date): + try: + checked_date = datetime.strptime(date, '%Y%m%d') + return checked_date + except: + raise argparse.ArgumentError('Wrong date') + + def init_logging(verbose): if verbose: logging.basicConfig(format='%(module)s %(asctime)s %(message)s', datefmt='%I:%M:%S', level=logging.INFO) - -def validation(url, date=None): - logging.info('Validate input parameters') - try: - if date: - date_structure = datetime.strptime(date, '%Y%m%d') - if is_url(url): - return url, date - else: - raise Exception('Invalid url') - except Exception as e: - logging.error(e) +def mk_config_for_conversion(pdf, html): + from collections import defaultdict + dict_with_directories = defaultdict(Path) + if pdf: + dict_with_directories['pdf'] = pdf + if html: + dict_with_directories['html'] = html + return dict_with_directories if __name__ == "__main__": diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index eef3314..e235c21 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -23,11 +23,12 @@ def create_session(adding=None): class RssReader(object): - def __init__(self, source, limit, date, json): + def __init__(self, source, limit, dates, json, configuration_for_conversion): self.source = source self.limit = limit - self.date = date + self.dates = dates self.json = json + self.configuration_for_conversion = configuration_for_conversion self.news_to_print = [] Base.metadata.create_all(engine) @@ -68,8 +69,10 @@ def parse_html(self, html): def get_cached_news(self): with create_session() as s: - date_for_find = [datetime.strptime(date_of_feed, '%Y%m%d').date() for date_of_feed in self.date] - self.news_to_print = s.query(News).filter(func.DATE(News.date) == date_for_find[0]).all() + for date in self.dates: + self.news_to_print.extend(s.query(News).filter(func.DATE(News.date) == date).all()) + if not self.news_to_print: + raise Exception('No cached news on this date') self.print_news() def get_news_to_print(self): @@ -94,7 +97,7 @@ def print_news(self): print('='*50) def __call__(self): - if self.date: + if self.dates: self.get_cached_news() else: self.get_and_parse_news() From c4df599b5457e9c49ff3dcb089b2c24596c9369c Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Wed, 27 Nov 2019 20:14:03 +0300 Subject: [PATCH 19/39] fix working with sqlalchemy after previous changes with checking of arguments --- rss_reader/cli.py | 2 +- rss_reader/rss_reader.py | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/rss_reader/cli.py b/rss_reader/cli.py index 67ca41f..dd4f47e 100644 --- a/rss_reader/cli.py +++ b/rss_reader/cli.py @@ -42,7 +42,7 @@ def url(source): def date(date): try: - checked_date = datetime.strptime(date, '%Y%m%d') + checked_date = datetime.strptime(date, '%Y%m%d').date() return checked_date except: raise argparse.ArgumentError('Wrong date') diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index e235c21..cf4a16d 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -4,7 +4,7 @@ from datetime import datetime, date from time import mktime from sqlalchemy.orm import sessionmaker -from sqlalchemy import DATE, func, TIME, desc, asc +from sqlalchemy import func, desc, asc, Date from .news import News, engine, Base from .json_formatter import Json from contextlib import contextmanager @@ -23,10 +23,10 @@ def create_session(adding=None): class RssReader(object): - def __init__(self, source, limit, dates, json, configuration_for_conversion): + def __init__(self, source, limit, date, json, configuration_for_conversion): self.source = source self.limit = limit - self.dates = dates + self.date = date self.json = json self.configuration_for_conversion = configuration_for_conversion self.news_to_print = [] @@ -38,7 +38,7 @@ def get_and_parse_news(self): logging.info('Parsing news') if news['entries'] and news['status'] == 200: with create_session('adding') as s: - list_of_news = news['entries'][:self.limit[0]] if self.limit else news['entries'] + list_of_news = news['entries'][:self.limit] if self.limit else news['entries'] for feed in list_of_news: text_of_the_feed = self.parse_html(feed['summary_detail']['value']) title = self.parse_html(feed['title']) @@ -69,8 +69,7 @@ def parse_html(self, html): def get_cached_news(self): with create_session() as s: - for date in self.dates: - self.news_to_print.extend(s.query(News).filter(func.DATE(News.date) == date).all()) + self.news_to_print.extend(s.query(News).filter(func.date(News.date) == self.date).all()) if not self.news_to_print: raise Exception('No cached news on this date') self.print_news() @@ -81,10 +80,10 @@ def get_news_to_print(self): self.news_to_print = s.query(News)\ .filter(News.date_of_addition == datetime.today())\ .order_by(News.date_of_addition.desc())\ - .limit(self.limit[0]).all() + .limit(self.limit).all() else: self.news_to_print = s.query(News)\ - .filter(func.DATE(News.date_of_addition) == datetime.today().date())\ + .filter(func.Date(News.date_of_addition) == datetime.today().date())\ .order_by(News.date_of_addition.asc()).all() if self.json: print(Json(self.news_to_print)) @@ -97,7 +96,7 @@ def print_news(self): print('='*50) def __call__(self): - if self.dates: + if self.date: self.get_cached_news() else: self.get_and_parse_news() From 743ba9c8e98aeb1a877c8ddf2d021c821fddbc87 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Wed, 27 Nov 2019 23:15:32 +0300 Subject: [PATCH 20/39] some changes after first review --- rss_reader/cli.py | 18 ++++++++++-------- rss_reader/converter.py | 9 +++++++-- rss_reader/news.py | 4 +--- rss_reader/rss_reader.py | 25 ++++++++++++++++--------- 4 files changed, 34 insertions(+), 22 deletions(-) diff --git a/rss_reader/cli.py b/rss_reader/cli.py index dd4f47e..5d7f1ce 100644 --- a/rss_reader/cli.py +++ b/rss_reader/cli.py @@ -11,20 +11,21 @@ def main(): args = parser.parse_args() init_logging(args.verbose) configuration_for_conversion = mk_config_for_conversion(args.to_pdf, args.to_html) - rss = RssReader(args.source, args.limit, args.date, args.json, configuration_for_conversion) - rss() + rss = RssReader(args.source, args.limit, args.date, args.json, configuration_for_conversion, args.all) + rss.exec() def adding_arguments(): parser = argparse.ArgumentParser(description='Pure Python command-line RSS reader') parser.add_argument('source', metavar='source', type=url, help='RSS URL') parser.add_argument('--version', action='version', version='ver 1.2', help='Print version info') - parser.add_argument('--limit', metavar='LIMIT', type=int) - parser.add_argument('--verbose', action='store_true') - parser.add_argument('--json', action='store_true') - parser.add_argument('--date', type=date) - parser.add_argument('--to-pdf', type=directory) - parser.add_argument('--to-html', type=directory) + parser.add_argument('--limit', metavar='LIMIT', type=int, help='Amount of news output') + parser.add_argument('--verbose', action='store_true', help='Print all logs in stdout') + parser.add_argument('--json', action='store_true', help='Print news in json format') + parser.add_argument('--date', type=date, help='Print news published on a given day') + parser.add_argument('--to-pdf', type=directory, help='Conversion news to the PDF format') + parser.add_argument('--to-html', type=directory, help='Conversion news to the HTML format') + parser.add_argument('--all', action='store_true', help='Getting all cached news') return parser @@ -53,6 +54,7 @@ def init_logging(verbose): logging.basicConfig(format='%(module)s %(asctime)s %(message)s', datefmt='%I:%M:%S', level=logging.INFO) + def mk_config_for_conversion(pdf, html): from collections import defaultdict dict_with_directories = defaultdict(Path) diff --git a/rss_reader/converter.py b/rss_reader/converter.py index d30801c..4aebe43 100644 --- a/rss_reader/converter.py +++ b/rss_reader/converter.py @@ -2,13 +2,18 @@ class ConverterBase(ABC): - def __init__(self, news): + def __init__(self, news, dir_for_save): self.news = news @abstractmethod def convert(self, news): return news + def save_file(self): + pass + + def get_images(self, images): + pass class HtmlConverter(ConverterBase): @@ -17,7 +22,7 @@ def convert(self): class PdfConverter(ConverterBase): - + from fpdf import FPDF def convert(self): return path diff --git a/rss_reader/news.py b/rss_reader/news.py index cb0af9a..947fb77 100644 --- a/rss_reader/news.py +++ b/rss_reader/news.py @@ -1,4 +1,4 @@ -from sqlalchemy import * +from sqlalchemy import create_engine, Column, String, DateTime, PickleType, Integer from sqlalchemy.ext.declarative import declarative_base @@ -37,5 +37,3 @@ def __str__(self, json=None): def __call__(self): return self.feed, self.title, self.date, self.link, self.description, self.media_content - - \ No newline at end of file diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index cf4a16d..ef31eff 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -23,12 +23,13 @@ def create_session(adding=None): class RssReader(object): - def __init__(self, source, limit, date, json, configuration_for_conversion): + def __init__(self, source, limit, date, json, configuration_for_conversion, all): self.source = source self.limit = limit self.date = date self.json = json self.configuration_for_conversion = configuration_for_conversion + self.all = all self.news_to_print = [] Base.metadata.create_all(engine) @@ -71,14 +72,19 @@ def get_cached_news(self): with create_session() as s: self.news_to_print.extend(s.query(News).filter(func.date(News.date) == self.date).all()) if not self.news_to_print: - raise Exception('No cached news on this date') - self.print_news() - + raise Exception('No cached news on this date') + + def get_all_news(self): + with create_session() as s: + self.news_to_print = s.query(News).all() + if not self.news_to_print: + raise Exception('No cached news') + def get_news_to_print(self): with create_session() as s: if self.limit: self.news_to_print = s.query(News)\ - .filter(News.date_of_addition == datetime.today())\ + .filter(func.Date(News.date_of_addition) == datetime.today().date())\ .order_by(News.date_of_addition.desc())\ .limit(self.limit).all() else: @@ -87,17 +93,18 @@ def get_news_to_print(self): .order_by(News.date_of_addition.asc()).all() if self.json: print(Json(self.news_to_print)) - else: - self.print_news() def print_news(self): for feed in self.news_to_print: print(feed) print('='*50) - def __call__(self): + def exec(self): if self.date: self.get_cached_news() + elif self.all: + self.get_all_news() else: self.get_and_parse_news() - self.get_news_to_print() + self.get_news_to_print() + self.print_news() From c091803a7951d4f16fe31026fc49eef96bb8deb7 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Wed, 27 Nov 2019 23:59:54 +0300 Subject: [PATCH 21/39] fix serialization into JSON format --- news | Bin 0 -> 135168 bytes rss_reader/cli.py | 3 ++- rss_reader/json_formatter.py | 11 +++++++++-- rss_reader/rss_reader.py | 26 +++++++++++++++----------- 4 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 news diff --git a/news b/news new file mode 100644 index 0000000000000000000000000000000000000000..e3fe8e818bad32d987b1b208f12b44a17fec593e GIT binary patch literal 135168 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�tzr9JMS-0ENO5 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%0DZK{vu0{Hz?qQhnk%!`@!1O@WtmwHCsMAS9XFR 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 z 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 VqumBe(Bf>HX9&RdO1su*{C|4qjQaop literal 0 HcmV?d00001 diff --git a/rss_reader/cli.py b/rss_reader/cli.py index 5d7f1ce..93f1c9e 100644 --- a/rss_reader/cli.py +++ b/rss_reader/cli.py @@ -25,7 +25,8 @@ def adding_arguments(): parser.add_argument('--date', type=date, help='Print news published on a given day') parser.add_argument('--to-pdf', type=directory, help='Conversion news to the PDF format') parser.add_argument('--to-html', type=directory, help='Conversion news to the HTML format') - parser.add_argument('--all', action='store_true', help='Getting all cached news') + parser.add_argument('--all', action='store_true', help='Getting all cached news.\ + Compatible with the following arguments: --verbose, --json, --to-pdf, --to-html') return parser diff --git a/rss_reader/json_formatter.py b/rss_reader/json_formatter.py index 45ddfe4..691d295 100644 --- a/rss_reader/json_formatter.py +++ b/rss_reader/json_formatter.py @@ -3,8 +3,15 @@ class FeedEncoder(json.JSONEncoder): def default(self, obj: object): - if isinstance(obj, Json): - return {'News':[{'Feed'+str(number):{k:v for k,v in (feed.__dict__).items()} for number, feed in zip(range(len(obj.news_to_convert)),obj.news_to_convert)}]} + names_of_sections = ('Feed source', 'Title', 'Date', 'Link', 'Description', 'Media_content') + if isinstance(obj, Json): + number_of_news = len(obj.news_to_convert) + return {'News': + [{'Feed'+str(number): + {section_name:str(feed_section) for section_name, feed_section + in zip(names_of_sections, feed())}\ + for number, feed + in zip(range(number_of_news),obj.news_to_convert)}]} return json.JSONEncoder.default(self, obj) diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index ef31eff..b889736 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -91,20 +91,24 @@ def get_news_to_print(self): self.news_to_print = s.query(News)\ .filter(func.Date(News.date_of_addition) == datetime.today().date())\ .order_by(News.date_of_addition.asc()).all() - if self.json: - print(Json(self.news_to_print)) def print_news(self): + if self.json: + print(Json(self.news_to_print)) + return for feed in self.news_to_print: print(feed) - print('='*50) + print('='*77) def exec(self): - if self.date: - self.get_cached_news() - elif self.all: - self.get_all_news() - else: - self.get_and_parse_news() - self.get_news_to_print() - self.print_news() + try: + if self.date: + self.get_cached_news() + elif self.all: + self.get_all_news() + else: + self.get_and_parse_news() + self.get_news_to_print() + self.print_news() + except Exception as e: + print(e) From 5070317918f8c89b7b124e1d34f740cd3e3b5a25 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Thu, 28 Nov 2019 13:59:28 +0300 Subject: [PATCH 22/39] adding methods to initialization directories where files in pdf or html formats will be saved, adding saving file and getting images that will be append to file --- rss_reader/converter.py | 41 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/rss_reader/converter.py b/rss_reader/converter.py index 4aebe43..fbb953e 100644 --- a/rss_reader/converter.py +++ b/rss_reader/converter.py @@ -1,21 +1,51 @@ +import logging +import os from abc import ABC, abstractmethod class ConverterBase(ABC): def __init__(self, news, dir_for_save): self.news = news + self.dir_for_save = dir_for_save + self.dir_for_images = os.path.join(dir_for_save, '.images_from_news') + self.init_dir_for_save() + self.init_dir_for_images_from_news() + + def init_dir_for_save(self): + if os.path.exists(self.dir_for_save): + logging.info('Directory %s already exists' % self.dir_for_save) + else: + os.mkdirs(self.dir_for_save) + logging.info('Create directory %s for saving file' % self.dir_for_save) + + def init_dir_for_images_from_news(self): + if os.path.exists(self.dir_for_save): + logging.info('Directory %s already exists' % self.dir_for_images) + else: + os.mkdir(self.dir_for_images) + logging.info('Create directory %s for saving images from news' % self.dir_for_images) @abstractmethod def convert(self, news): return news - def save_file(self): - pass + def save_file(self, data): + with open(str(os.path.join(self.dir_for_save, self.filename))) as f: + f.write(self.data) def get_images(self, images): - pass + import httplib2 #this lib selected because it is much faster than urllib or requests(if you use caching of course) + h = httplib2.Http('.cache') + for number, feed in zip(range(len(news)), news): + response, content = h.request(feed) + with open(os.path.join(self.dir_for_images, 'image%d.jpg' % number), 'wb') as image: + image.write(content) + class HtmlConverter(ConverterBase): + def __init__(self, news, dir_for_save): + super().__init__(news, dir_for_save) + self.filename = 'news.html' def convert(self): return path @@ -23,6 +53,10 @@ def convert(self): class PdfConverter(ConverterBase): from fpdf import FPDF + def __init__(self, news, dir_for_save): + super().__init__(news, dir_for_save) + self.filename = 'news.pdf' + def convert(self): return path @@ -37,4 +71,3 @@ class MobiConverter(ConverterBase): class Fb2Converter(ConverterBase): pass - \ No newline at end of file From 7f9fd838b64734ef740aa88d7e09a39c59f9430e Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Fri, 29 Nov 2019 04:08:06 +0300 Subject: [PATCH 23/39] adding first version of html converter --- news | Bin 135168 -> 0 bytes rss_reader/converter.py | 65 +++++++++++++++++++++++++++++---------- rss_reader/rss_reader.py | 9 +++--- 3 files changed, 54 insertions(+), 20 deletions(-) delete mode 100644 news diff --git a/news b/news deleted file mode 100644 index e3fe8e818bad32d987b1b208f12b44a17fec593e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135168 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�tzr9JMS-0ENO5 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%0DZK{vu0{Hz?qQhnk%!`@!1O@WtmwHCsMAS9XFR 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 z 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 VqumBe(Bf>HX9&RdO1su*{C|4qjQaop diff --git a/rss_reader/converter.py b/rss_reader/converter.py index fbb953e..fde7ded 100644 --- a/rss_reader/converter.py +++ b/rss_reader/converter.py @@ -1,5 +1,5 @@ import logging -import os +from os import path, makedirs, mkdir from abc import ABC, abstractmethod @@ -7,22 +7,22 @@ class ConverterBase(ABC): def __init__(self, news, dir_for_save): self.news = news self.dir_for_save = dir_for_save - self.dir_for_images = os.path.join(dir_for_save, '.images_from_news') + self.dir_for_images = path.join(dir_for_save, '.images_from_news') self.init_dir_for_save() self.init_dir_for_images_from_news() def init_dir_for_save(self): - if os.path.exists(self.dir_for_save): + if path.exists(self.dir_for_save): logging.info('Directory %s already exists' % self.dir_for_save) else: - os.mkdirs(self.dir_for_save) + makedirs(self.dir_for_save) logging.info('Create directory %s for saving file' % self.dir_for_save) def init_dir_for_images_from_news(self): - if os.path.exists(self.dir_for_save): + if path.exists(self.dir_for_images): logging.info('Directory %s already exists' % self.dir_for_images) else: - os.mkdir(self.dir_for_images) + mkdir(self.dir_for_images) logging.info('Create directory %s for saving images from news' % self.dir_for_images) @abstractmethod @@ -30,25 +30,58 @@ def convert(self, news): return news def save_file(self, data): - with open(str(os.path.join(self.dir_for_save, self.filename))) as f: - f.write(self.data) + with open(str(path.join(self.dir_for_save, self.filename)), 'w') as f: + f.write(data) - def get_images(self, images): + def get_images(self): import httplib2 #this lib selected because it is much faster than urllib or requests(if you use caching of course) h = httplib2.Http('.cache') - for number, feed in zip(range(len(news)), news): - response, content = h.request(feed) - with open(os.path.join(self.dir_for_images, 'image%d.jpg' % number), 'wb') as image: - image.write(content) - + for feed in self.news: + images = feed.media_content + for number_of_image, image in zip(range(len(images)), images): + response, content = h.request(image) + image_file_name = path.join(self.dir_for_images, '%s%d.jpg'%(feed.title, number_of_image)) + with open(image_file_name, 'wb') as out: + out.write(content) + class HtmlConverter(ConverterBase): def __init__(self, news, dir_for_save): super().__init__(news, dir_for_save) self.filename = 'news.html' + self.html_template = ''' + + + + News you were looking for + + +

News you were looking for

+ {news} + +''' + + self.feed_template = ''' +

{title}

+

Link to that feed

+ +{description}
+
{img}
+
+''' + + self.image_template = '
' + def convert(self): - return path + self.get_images() + news_str = '' + for feed in self.news: + images_from_the_feed = '' + for number_of_image in range(len(feed.media_content)): + images_from_the_feed += self.image_template.format(path=path.join(path.basename(self.dir_for_images), '%s%d.jpg'%(feed.title, number_of_image))) + news_str += self.feed_template.format(title=feed.title, url=feed.link, description=feed.description, img=images_from_the_feed) + self.save_file(self.html_template.format(news=news_str)) class PdfConverter(ConverterBase): @@ -58,7 +91,7 @@ def __init__(self, news, dir_for_save): self.filename = 'news.pdf' def convert(self): - return path + pass class EpubConverte(ConverterBase): diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index b889736..6e03e0b 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -8,7 +8,7 @@ from .news import News, engine, Base from .json_formatter import Json from contextlib import contextmanager - +from .converter import HtmlConverter @contextmanager def create_session(adding=None): @@ -101,7 +101,7 @@ def print_news(self): print('='*77) def exec(self): - try: + #try: if self.date: self.get_cached_news() elif self.all: @@ -110,5 +110,6 @@ def exec(self): self.get_and_parse_news() self.get_news_to_print() self.print_news() - except Exception as e: - print(e) + HtmlConverter(self.news_to_print, '/home/zavxoz/Pictures').convert() + #except Exception as e: + # print(e) From e39ede7e0f4f10201462d2b81f3f16efe8ae21a9 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Fri, 29 Nov 2019 04:08:06 +0300 Subject: [PATCH 24/39] adding first version of html converter --- news | Bin 135168 -> 0 bytes rss_reader/__init__.py | 2 +- rss_reader/cli.py | 2 +- rss_reader/converter.py | 65 +++++++++++++++++++++++++++++---------- rss_reader/rss_reader.py | 9 +++--- 5 files changed, 56 insertions(+), 22 deletions(-) delete mode 100644 news diff --git a/news b/news deleted file mode 100644 index e3fe8e818bad32d987b1b208f12b44a17fec593e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135168 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�tzr9JMS-0ENO5 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%0DZK{vu0{Hz?qQhnk%!`@!1O@WtmwHCsMAS9XFR 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 z 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 VqumBe(Bf>HX9&RdO1su*{C|4qjQaop diff --git a/rss_reader/__init__.py b/rss_reader/__init__.py index f3a2b1c..1246fac 100644 --- a/rss_reader/__init__.py +++ b/rss_reader/__init__.py @@ -1 +1 @@ -__version__ = '1.2' \ No newline at end of file +__version__ = '1.4' \ No newline at end of file diff --git a/rss_reader/cli.py b/rss_reader/cli.py index 93f1c9e..c47dce4 100644 --- a/rss_reader/cli.py +++ b/rss_reader/cli.py @@ -18,7 +18,7 @@ def main(): def adding_arguments(): parser = argparse.ArgumentParser(description='Pure Python command-line RSS reader') parser.add_argument('source', metavar='source', type=url, help='RSS URL') - parser.add_argument('--version', action='version', version='ver 1.2', help='Print version info') + parser.add_argument('--version', action='version', version='ver 1.4', help='Print version info') parser.add_argument('--limit', metavar='LIMIT', type=int, help='Amount of news output') parser.add_argument('--verbose', action='store_true', help='Print all logs in stdout') parser.add_argument('--json', action='store_true', help='Print news in json format') diff --git a/rss_reader/converter.py b/rss_reader/converter.py index fbb953e..fde7ded 100644 --- a/rss_reader/converter.py +++ b/rss_reader/converter.py @@ -1,5 +1,5 @@ import logging -import os +from os import path, makedirs, mkdir from abc import ABC, abstractmethod @@ -7,22 +7,22 @@ class ConverterBase(ABC): def __init__(self, news, dir_for_save): self.news = news self.dir_for_save = dir_for_save - self.dir_for_images = os.path.join(dir_for_save, '.images_from_news') + self.dir_for_images = path.join(dir_for_save, '.images_from_news') self.init_dir_for_save() self.init_dir_for_images_from_news() def init_dir_for_save(self): - if os.path.exists(self.dir_for_save): + if path.exists(self.dir_for_save): logging.info('Directory %s already exists' % self.dir_for_save) else: - os.mkdirs(self.dir_for_save) + makedirs(self.dir_for_save) logging.info('Create directory %s for saving file' % self.dir_for_save) def init_dir_for_images_from_news(self): - if os.path.exists(self.dir_for_save): + if path.exists(self.dir_for_images): logging.info('Directory %s already exists' % self.dir_for_images) else: - os.mkdir(self.dir_for_images) + mkdir(self.dir_for_images) logging.info('Create directory %s for saving images from news' % self.dir_for_images) @abstractmethod @@ -30,25 +30,58 @@ def convert(self, news): return news def save_file(self, data): - with open(str(os.path.join(self.dir_for_save, self.filename))) as f: - f.write(self.data) + with open(str(path.join(self.dir_for_save, self.filename)), 'w') as f: + f.write(data) - def get_images(self, images): + def get_images(self): import httplib2 #this lib selected because it is much faster than urllib or requests(if you use caching of course) h = httplib2.Http('.cache') - for number, feed in zip(range(len(news)), news): - response, content = h.request(feed) - with open(os.path.join(self.dir_for_images, 'image%d.jpg' % number), 'wb') as image: - image.write(content) - + for feed in self.news: + images = feed.media_content + for number_of_image, image in zip(range(len(images)), images): + response, content = h.request(image) + image_file_name = path.join(self.dir_for_images, '%s%d.jpg'%(feed.title, number_of_image)) + with open(image_file_name, 'wb') as out: + out.write(content) + class HtmlConverter(ConverterBase): def __init__(self, news, dir_for_save): super().__init__(news, dir_for_save) self.filename = 'news.html' + self.html_template = ''' + + + + News you were looking for + + +

News you were looking for

+ {news} + +''' + + self.feed_template = ''' +

{title}

+

Link to that feed

+ +{description}
+
{img}
+
+''' + + self.image_template = '
' + def convert(self): - return path + self.get_images() + news_str = '' + for feed in self.news: + images_from_the_feed = '' + for number_of_image in range(len(feed.media_content)): + images_from_the_feed += self.image_template.format(path=path.join(path.basename(self.dir_for_images), '%s%d.jpg'%(feed.title, number_of_image))) + news_str += self.feed_template.format(title=feed.title, url=feed.link, description=feed.description, img=images_from_the_feed) + self.save_file(self.html_template.format(news=news_str)) class PdfConverter(ConverterBase): @@ -58,7 +91,7 @@ def __init__(self, news, dir_for_save): self.filename = 'news.pdf' def convert(self): - return path + pass class EpubConverte(ConverterBase): diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index b889736..6e03e0b 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -8,7 +8,7 @@ from .news import News, engine, Base from .json_formatter import Json from contextlib import contextmanager - +from .converter import HtmlConverter @contextmanager def create_session(adding=None): @@ -101,7 +101,7 @@ def print_news(self): print('='*77) def exec(self): - try: + #try: if self.date: self.get_cached_news() elif self.all: @@ -110,5 +110,6 @@ def exec(self): self.get_and_parse_news() self.get_news_to_print() self.print_news() - except Exception as e: - print(e) + HtmlConverter(self.news_to_print, '/home/zavxoz/Pictures').convert() + #except Exception as e: + # print(e) From daf1d302b5efd9818212131180969077f3a78489 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sat, 30 Nov 2019 15:12:09 +0300 Subject: [PATCH 25/39] pdf converter created --- MANIFEST.in | 1 + requirements.txt | 3 +- rss_reader/converter.py | 103 +++++++++++++++++++++++++++------------ rss_reader/rss_reader.py | 6 +-- setup.py | 1 + times-new-roman.ttf | Bin 0 -> 834240 bytes 6 files changed, 80 insertions(+), 34 deletions(-) create mode 100644 MANIFEST.in create mode 100644 times-new-roman.ttf diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..f16e473 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +include times-new-roman.ttf \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index b0e9d78..1ad2c9a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,5 @@ beautifulsoup4==4.8.0 validator_collection==1.3.7 sqlalchemy==1.2.7 -feedparser==5.2.1 \ No newline at end of file +feedparser==5.2.1 +fpdf==1.7.2 \ No newline at end of file diff --git a/rss_reader/converter.py b/rss_reader/converter.py index fde7ded..0d4f89b 100644 --- a/rss_reader/converter.py +++ b/rss_reader/converter.py @@ -1,19 +1,22 @@ import logging from os import path, makedirs, mkdir from abc import ABC, abstractmethod - +from fpdf import FPDF, HTMLMixin, fpdf class ConverterBase(ABC): - def __init__(self, news, dir_for_save): + def __init__(self, news, dir_for_save, saving_file=True): self.news = news - self.dir_for_save = dir_for_save - self.dir_for_images = path.join(dir_for_save, '.images_from_news') - self.init_dir_for_save() - self.init_dir_for_images_from_news() - + self.saving_file = saving_file + self.dir_for_images = path.join(dir_for_save, '.images_from_news') if saving_file else dir_for_save + if saving_file: + self.dir_for_save = dir_for_save + self.init_dir_for_save() + self.init_dir_for_images_from_news() + self.get_images(news) + def init_dir_for_save(self): if path.exists(self.dir_for_save): - logging.info('Directory %s already exists' % self.dir_for_save) + logging.info('Directory %s already exists' % self.dir_for_save) else: makedirs(self.dir_for_save) logging.info('Create directory %s for saving file' % self.dir_for_save) @@ -22,7 +25,7 @@ def init_dir_for_images_from_news(self): if path.exists(self.dir_for_images): logging.info('Directory %s already exists' % self.dir_for_images) else: - mkdir(self.dir_for_images) + mkdir(self.dir_for_images) logging.info('Create directory %s for saving images from news' % self.dir_for_images) @abstractmethod @@ -33,66 +36,103 @@ def save_file(self, data): with open(str(path.join(self.dir_for_save, self.filename)), 'w') as f: f.write(data) - def get_images(self): + def get_images(self, news): import httplib2 #this lib selected because it is much faster than urllib or requests(if you use caching of course) + from PIL import Image + import io h = httplib2.Http('.cache') - for feed in self.news: + for feed in news: images = feed.media_content for number_of_image, image in zip(range(len(images)), images): + if not image: + continue response, content = h.request(image) - image_file_name = path.join(self.dir_for_images, '%s%d.jpg'%(feed.title, number_of_image)) - with open(image_file_name, 'wb') as out: - out.write(content) + image = Image.open(io.BytesIO(content)) + #image.convert('RGB') + image_file_name = path.join(self.dir_for_images, '%d%d.png'%(feed.id, number_of_image)) + image.save(image_file_name, 'PNG') + #with open(image_file_name, 'wb') as out: + # out.write(content) class HtmlConverter(ConverterBase): - def __init__(self, news, dir_for_save): - super().__init__(news, dir_for_save) + def __init__(self, news, dir_for_save, saving_file=True): + super().__init__(news, dir_for_save, saving_file) self.filename = 'news.html' self.html_template = ''' - News you were looking for

News you were looking for

- {news} +

{news}

''' self.feed_template = ''' -

{title}

+

+

{title}

Link to that feed

- -{description}
-
{img}
-
+ + + + +
+
{description}
+
+

+

''' - self.image_template = '
' + self.image_template = '
' def convert(self): - self.get_images() news_str = '' for feed in self.news: images_from_the_feed = '' for number_of_image in range(len(feed.media_content)): - images_from_the_feed += self.image_template.format(path=path.join(path.basename(self.dir_for_images), '%s%d.jpg'%(feed.title, number_of_image))) + images_from_the_feed += self.image_template.format(path=path.join(self.dir_for_images, '%d%d.jpg'%(feed.id, number_of_image))) news_str += self.feed_template.format(title=feed.title, url=feed.link, description=feed.description, img=images_from_the_feed) - self.save_file(self.html_template.format(news=news_str)) + converted_data = self.html_template.format(news=news_str) + return self.save_file(converted_data) if self.saving_file else converted_data + + +class HTML2PDF(FPDF, HTMLMixin): + pass class PdfConverter(ConverterBase): - from fpdf import FPDF def __init__(self, news, dir_for_save): super().__init__(news, dir_for_save) self.filename = 'news.pdf' def convert(self): - pass - + pdf = HTML2PDF('P','mm', 'A4') + pdf.add_font('TimesNewRoman', '', 'times-new-roman.ttf', uni=True) + pdf.add_page() + pdf.set_font('TimesNewRoman', size=22) + pdf.set_left_margin(20) + pdf.set_right_margin(15) + pdf.cell(0, 20, 'News you were looking for', ln=1, align='C') + for feed in self.news: + pdf.set_font('TimesNewRoman', size=18) + pdf.multi_cell(0, 10, feed.title, align='C') + pdf.set_font('TimesNewRoman', 'U', 12) + pdf.set_text_color(r=0, g=0, b=255) + pdf.cell(210, 15, 'Link to that news', ln=1, align='L', link=feed.link) + pdf.set_text_color(0,0,0) + pdf.set_font('TimesNewRoman', size=14) + pdf.write(6, feed.description) + pdf.ln(10) + for number_of_image in range(len(feed.media_content)): + pdf.image(path.join(self.dir_for_images, '%d%d.png'%(feed.id, number_of_image)), 20, w=120, h=80) + + #html_news = HtmlConverter(self.news, self.dir_for_images, False).convert() + #pdf.write_html(html_news) + pdf.output(self.filename) + class EpubConverte(ConverterBase): pass @@ -104,3 +144,6 @@ class MobiConverter(ConverterBase): class Fb2Converter(ConverterBase): pass + +if __name__=='__main__': + PdfConverter(123,'123').convert() \ No newline at end of file diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index 6e03e0b..a8213e0 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -8,7 +8,7 @@ from .news import News, engine, Base from .json_formatter import Json from contextlib import contextmanager -from .converter import HtmlConverter +from .converter import HtmlConverter, PdfConverter @contextmanager def create_session(adding=None): @@ -66,7 +66,7 @@ def get_and_parse_news(self): def parse_html(self, html): from bs4 import BeautifulSoup parser = BeautifulSoup(html, 'html.parser') - return parser.get_text() + return parser.getText() def get_cached_news(self): with create_session() as s: @@ -110,6 +110,6 @@ def exec(self): self.get_and_parse_news() self.get_news_to_print() self.print_news() - HtmlConverter(self.news_to_print, '/home/zavxoz/Pictures').convert() + PdfConverter(self.news_to_print, './').convert() #except Exception as e: # print(e) diff --git a/setup.py b/setup.py index 8222560..4634ca3 100644 --- a/setup.py +++ b/setup.py @@ -15,6 +15,7 @@ author_email='artem.klimec8@gmail.com', description='simple command-line rss reader', install_requires=requirements, + include_package_data=True, entry_points={ 'console_scripts': ['rss-reader = rss_reader.cli:main'] } diff --git a/times-new-roman.ttf b/times-new-roman.ttf new file mode 100644 index 0000000000000000000000000000000000000000..eaf5e11645877217b360a6c795967cabff1f0bdd GIT binary patch literal 834240 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�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
  • {L|Y%Uud0A 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⧀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 z

    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 Date: Sat, 30 Nov 2019 18:25:13 +0300 Subject: [PATCH 26/39] all features are finished --- rss_reader/converter.py | 89 +++++++++++++++++++++++++--------------- rss_reader/news.py | 4 +- rss_reader/rss_reader.py | 15 +++---- setup.py | 3 +- 4 files changed, 68 insertions(+), 43 deletions(-) diff --git a/rss_reader/converter.py b/rss_reader/converter.py index 0d4f89b..f3656f2 100644 --- a/rss_reader/converter.py +++ b/rss_reader/converter.py @@ -45,14 +45,17 @@ def get_images(self, news): images = feed.media_content for number_of_image, image in zip(range(len(images)), images): if not image: - continue + continue + image = self.check_image_link(image) response, content = h.request(image) image = Image.open(io.BytesIO(content)) - #image.convert('RGB') image_file_name = path.join(self.dir_for_images, '%d%d.png'%(feed.id, number_of_image)) image.save(image_file_name, 'PNG') - #with open(image_file_name, 'wb') as out: - # out.write(content) + + def check_image_link(self, image_link): + where_sub_link = image_link.rfind('http') + if where_sub_link: + return image_link[where_sub_link:] class HtmlConverter(ConverterBase): @@ -99,39 +102,62 @@ def convert(self): return self.save_file(converted_data) if self.saving_file else converted_data -class HTML2PDF(FPDF, HTMLMixin): - pass - - class PdfConverter(ConverterBase): def __init__(self, news, dir_for_save): super().__init__(news, dir_for_save) self.filename = 'news.pdf' + class PDF(FPDF): + def __init__(self): + super().__init__('P','mm', 'A4') + self.add_font('TimesNewRoman', '', 'times-new-roman.ttf', uni=True) + self.set_margins(30, 20, 10) + self.set_auto_page_break(True, 20) + self.add_page() + self.set_font('TimesNewRoman', size=22) + self.cell(0, 20, 'News you were looking for', ln=1, align='C') + + def footer(self): + self.set_y(-20) + self.set_font('TimesNewRoman', size=12) + self.cell(0, 20, '%s' % self.page_no(), 0, 0, 'R') + + def add_link(self, link): + self.set_font('TimesNewRoman', 'U', 12) + self.set_text_color(r=0, g=0, b=255) + self.cell(210, 15, 'Link to that news', ln=1, align='L', link=link) + + + def add_title(self, title): + self.set_font('TimesNewRoman', size=18) + self.multi_cell(0, 10, title, align='C') + + def add_description(self, description): + self.set_text_color(0,0,0) + self.set_font('TimesNewRoman', size=14) + self.write(6, feed.description) + self.ln(10) + + def add_images_from_the_feed(self, id, media_content): + for number_of_image in range(len(media_content)): + if not media_content[0]: + continue + self.set_x(50) + self.image(path.join(self.dir_for_images, '%d%d.png'%(id, number_of_image)), w=120, h=80) + self.ln(10) + + def add_feed(self, feed): + self.add_title(feed.title) + self.add_link(feed.link) + self.add_description(feed.description) + self.add_images_from_the_feed(feed.id, feed.media_content) + self.ln(20) + def convert(self): - pdf = HTML2PDF('P','mm', 'A4') - pdf.add_font('TimesNewRoman', '', 'times-new-roman.ttf', uni=True) - pdf.add_page() - pdf.set_font('TimesNewRoman', size=22) - pdf.set_left_margin(20) - pdf.set_right_margin(15) - pdf.cell(0, 20, 'News you were looking for', ln=1, align='C') + pdf = self.PDF() for feed in self.news: - pdf.set_font('TimesNewRoman', size=18) - pdf.multi_cell(0, 10, feed.title, align='C') - pdf.set_font('TimesNewRoman', 'U', 12) - pdf.set_text_color(r=0, g=0, b=255) - pdf.cell(210, 15, 'Link to that news', ln=1, align='L', link=feed.link) - pdf.set_text_color(0,0,0) - pdf.set_font('TimesNewRoman', size=14) - pdf.write(6, feed.description) - pdf.ln(10) - for number_of_image in range(len(feed.media_content)): - pdf.image(path.join(self.dir_for_images, '%d%d.png'%(feed.id, number_of_image)), 20, w=120, h=80) - - #html_news = HtmlConverter(self.news, self.dir_for_images, False).convert() - #pdf.write_html(html_news) - pdf.output(self.filename) + pdf.add_feed(feed) + pdf.output(path.join(self.dir_for_save, self.filename)) class EpubConverte(ConverterBase): @@ -144,6 +170,3 @@ class MobiConverter(ConverterBase): class Fb2Converter(ConverterBase): pass - -if __name__=='__main__': - PdfConverter(123,'123').convert() \ No newline at end of file diff --git a/rss_reader/news.py b/rss_reader/news.py index 947fb77..519431b 100644 --- a/rss_reader/news.py +++ b/rss_reader/news.py @@ -30,8 +30,8 @@ def __init__(self, feed, title, date, link, description, media_content, date_of_ def __str__(self, json=None): str_to_print = 'Feed: %s\nTitle: %s\nDate: %s\nLink: %s\n\n%s\n\nLinks:\n[1] %s --feed\n' % \ (self.feed, self.title, self.date, self.link, self.description, self.link) - if self.media_content: - for i in range(len(self.media_content)): + if self.media_content[0]: + for i in range(len(self.media_content)): str_to_print += '[%d] %s --image\n' % (i+2, self.media_content[i]) return str_to_print diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index a8213e0..7e3550b 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -43,14 +43,12 @@ def get_and_parse_news(self): for feed in list_of_news: text_of_the_feed = self.parse_html(feed['summary_detail']['value']) title = self.parse_html(feed['title']) - if 'media_content' in feed.keys(): - media_content = feed['media_content'][0]['url'] feed_object = News(news['feed']['title'], title, datetime.fromtimestamp(mktime(feed['published_parsed'])), feed['link'], text_of_the_feed, - [image['url'] for image in feed['media_content']], + [image.get('url') for image in feed.get('media_content')], datetime.today()) current_feed_in_table = s.query(News).filter(News.link==feed['link']).first() if not current_feed_in_table: @@ -101,7 +99,7 @@ def print_news(self): print('='*77) def exec(self): - #try: + try: if self.date: self.get_cached_news() elif self.all: @@ -110,6 +108,9 @@ def exec(self): self.get_and_parse_news() self.get_news_to_print() self.print_news() - PdfConverter(self.news_to_print, './').convert() - #except Exception as e: - # print(e) + if 'pdf' in self.configuration_for_conversion: + PdfConverter(self.news_to_print, self.configuration_for_conversion.get('pdf')).convert() + if 'html' in self.configuration_for_conversion: + HtmlConverter(self.news_to_print, self.configuration_for_conversion.get('html')).convert() + except Exception as e: + print(e) diff --git a/setup.py b/setup.py index 4634ca3..87b60e2 100644 --- a/setup.py +++ b/setup.py @@ -4,7 +4,8 @@ with open('requirements.txt') as f: requirements = f.read() - + + setup( name='rss-reader', version=version, From 093b223e8e48cd25979029402b1fab550ee0a9ea Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 1 Dec 2019 00:26:33 +0300 Subject: [PATCH 27/39] Codestyle was checked --- rss_reader/__init__.py | 2 +- rss_reader/cli.py | 31 +++++---- rss_reader/converter.py | 121 +++++++++++++++++++---------------- rss_reader/json_formatter.py | 4 ++ rss_reader/news.py | 2 +- rss_reader/rss_reader.py | 86 ++++++++++++++----------- 6 files changed, 142 insertions(+), 104 deletions(-) diff --git a/rss_reader/__init__.py b/rss_reader/__init__.py index 1246fac..0f66308 100644 --- a/rss_reader/__init__.py +++ b/rss_reader/__init__.py @@ -1 +1 @@ -__version__ = '1.4' \ No newline at end of file +__version__ = '1.4' diff --git a/rss_reader/cli.py b/rss_reader/cli.py index c47dce4..3c17170 100644 --- a/rss_reader/cli.py +++ b/rss_reader/cli.py @@ -1,9 +1,9 @@ import argparse import logging from datetime import datetime -from pathlib import Path +from os import path, makedirs from validator_collection.checkers import is_url -from .rss_reader import RssReader +from .rss_reader import RSSReader def main(): @@ -11,7 +11,7 @@ def main(): args = parser.parse_args() init_logging(args.verbose) configuration_for_conversion = mk_config_for_conversion(args.to_pdf, args.to_html) - rss = RssReader(args.source, args.limit, args.date, args.json, configuration_for_conversion, args.all) + rss = RSSReader(args.source, args.limit, args.date, args.json, configuration_for_conversion, args.all) rss.exec() @@ -30,35 +30,42 @@ def adding_arguments(): return parser -def directory(path): - if not Path.exists(path): - raise ValueError('Wrong path to save file') - return path +def directory(dir_for_save): + if path.exists(dir_for_save): + logging.info(f'Directory {dir_for_save} already exists') + else: + makedirs(dir_for_save) + logging.info(f'Create directory {dir_for_save} for saving file') + return dir_for_save def url(source): + logging.info('URL validation') if not is_url(source): raise argparse.ArgumentError('Invalid url') return source def date(date): + logging.info('Date validation') try: checked_date = datetime.strptime(date, '%Y%m%d').date() return checked_date - except: - raise argparse.ArgumentError('Wrong date') - - + except ValueError: + print('Wrong date') + + def init_logging(verbose): if verbose: logging.basicConfig(format='%(module)s %(asctime)s %(message)s', datefmt='%I:%M:%S', level=logging.INFO) + logging.info('Initialization of logging') def mk_config_for_conversion(pdf, html): + logging.info('Making dict with configuration of conversion') from collections import defaultdict - dict_with_directories = defaultdict(Path) + dict_with_directories = defaultdict(str) if pdf: dict_with_directories['pdf'] = pdf if html: diff --git a/rss_reader/converter.py b/rss_reader/converter.py index f3656f2..fd5db1b 100644 --- a/rss_reader/converter.py +++ b/rss_reader/converter.py @@ -1,66 +1,72 @@ import logging -from os import path, makedirs, mkdir +from os import path, mkdir from abc import ABC, abstractmethod -from fpdf import FPDF, HTMLMixin, fpdf +from fpdf import FPDF + class ConverterBase(ABC): - def __init__(self, news, dir_for_save, saving_file=True): + def __init__(self, news, dir_for_save): self.news = news - self.saving_file = saving_file - self.dir_for_images = path.join(dir_for_save, '.images_from_news') if saving_file else dir_for_save - if saving_file: - self.dir_for_save = dir_for_save - self.init_dir_for_save() - self.init_dir_for_images_from_news() - self.get_images(news) - - def init_dir_for_save(self): - if path.exists(self.dir_for_save): - logging.info('Directory %s already exists' % self.dir_for_save) - else: - makedirs(self.dir_for_save) - logging.info('Create directory %s for saving file' % self.dir_for_save) - + self.dir_for_images = path.join(dir_for_save, '.images_from_news') + self.dir_for_save = dir_for_save + self.init_dir_for_images_from_news() + self.get_images(news) + def init_dir_for_images_from_news(self): if path.exists(self.dir_for_images): logging.info('Directory %s already exists' % self.dir_for_images) else: mkdir(self.dir_for_images) logging.info('Create directory %s for saving images from news' % self.dir_for_images) - + @abstractmethod def convert(self, news): return news - + def save_file(self, data): - with open(str(path.join(self.dir_for_save, self.filename)), 'w') as f: + logging.info('Saving file with news') + with open(self.generate_filename(), 'w') as f: f.write(data) - + + def generate_filename(self): + filename = path.join(self.dir_for_save, self.filename) + number_of_files = 1 + while number_of_files: + if path.exists(filename): + filename = path.join(self.dir_for_save, str(number_of_files) + self.filename) + number_of_files += 1 + else: + return filename + def get_images(self, news): - import httplib2 #this lib selected because it is much faster than urllib or requests(if you use caching of course) + import httplib2 # this lib selected because it is much faster than urllib or requests(if you use caching of course) from PIL import Image import io h = httplib2.Http('.cache') + logging.info('Getting images from news') for feed in news: images = feed.media_content for number_of_image, image in zip(range(len(images)), images): if not image: - continue + continue image = self.check_image_link(image) response, content = h.request(image) image = Image.open(io.BytesIO(content)) - image_file_name = path.join(self.dir_for_images, '%d%d.png'%(feed.id, number_of_image)) + image_file_name = path.join(self.dir_for_images, f'{feed.id}{number_of_image}.png') image.save(image_file_name, 'PNG') - def check_image_link(self, image_link): + @staticmethod + def check_image_link(image_link): + logging.info('Checking for nested links') where_sub_link = image_link.rfind('http') if where_sub_link: return image_link[where_sub_link:] -class HtmlConverter(ConverterBase): - def __init__(self, news, dir_for_save, saving_file=True): - super().__init__(news, dir_for_save, saving_file) +class HtmlConverter(ConverterBase): + def __init__(self, news, dir_for_save): + logging.info('Initialization of HtmlConverter') + super().__init__(news, dir_for_save) self.filename = 'news.html' self.html_template = ''' @@ -73,10 +79,9 @@ def __init__(self, news, dir_for_save, saving_file=True): ''' - self.feed_template = '''

    -

    {title}

    +

    {title}

    Link to that feed

    @@ -85,80 +90,88 @@ def __init__(self, news, dir_for_save, saving_file=True):
    +

    + {img} +

    ''' - self.image_template = '
    ' - + self.image_template = '
    ' + def convert(self): + logging.info('Converting news to HTML format') news_str = '' for feed in self.news: images_from_the_feed = '' for number_of_image in range(len(feed.media_content)): - images_from_the_feed += self.image_template.format(path=path.join(self.dir_for_images, '%d%d.jpg'%(feed.id, number_of_image))) + images_from_the_feed += self.image_template.format(path=path.join(self.dir_for_images, f'{feed.id}{number_of_image}.png')) news_str += self.feed_template.format(title=feed.title, url=feed.link, description=feed.description, img=images_from_the_feed) converted_data = self.html_template.format(news=news_str) - return self.save_file(converted_data) if self.saving_file else converted_data + self.save_file(converted_data) class PdfConverter(ConverterBase): def __init__(self, news, dir_for_save): + logging.info('Initialization of PdfConverter') super().__init__(news, dir_for_save) self.filename = 'news.pdf' - + class PDF(FPDF): - def __init__(self): - super().__init__('P','mm', 'A4') + def __init__(self, dir_with_images): + logging.info('Initialization of PDF document') + self.dir_with_images = dir_with_images + super().__init__('P', 'mm', 'A4') self.add_font('TimesNewRoman', '', 'times-new-roman.ttf', uni=True) self.set_margins(30, 20, 10) self.set_auto_page_break(True, 20) self.add_page() self.set_font('TimesNewRoman', size=22) self.cell(0, 20, 'News you were looking for', ln=1, align='C') - + def footer(self): self.set_y(-20) self.set_font('TimesNewRoman', size=12) self.cell(0, 20, '%s' % self.page_no(), 0, 0, 'R') - + def add_link(self, link): self.set_font('TimesNewRoman', 'U', 12) self.set_text_color(r=0, g=0, b=255) self.cell(210, 15, 'Link to that news', ln=1, align='L', link=link) - - + def add_title(self, title): self.set_font('TimesNewRoman', size=18) self.multi_cell(0, 10, title, align='C') - + def add_description(self, description): - self.set_text_color(0,0,0) - self.set_font('TimesNewRoman', size=14) - self.write(6, feed.description) + self.set_text_color(0, 0, 0) + self.set_font('TimesNewRoman', size=14) + self.write(6, description) self.ln(10) - + def add_images_from_the_feed(self, id, media_content): for number_of_image in range(len(media_content)): if not media_content[0]: continue self.set_x(50) - self.image(path.join(self.dir_for_images, '%d%d.png'%(id, number_of_image)), w=120, h=80) + self.image(path.join(self.dir_with_images, f'{id}{number_of_image}.png'), w=120, h=80) self.ln(10) - + def add_feed(self, feed): self.add_title(feed.title) self.add_link(feed.link) - self.add_description(feed.description) + self.add_description(feed.description) self.add_images_from_the_feed(feed.id, feed.media_content) self.ln(20) - + def convert(self): - pdf = self.PDF() + logging.info('Converting news to PDF format') + pdf = self.PDF(self.dir_for_images) for feed in self.news: pdf.add_feed(feed) - pdf.output(path.join(self.dir_for_save, self.filename)) - + logging.info('Saving news in PDF format') + pdf.output(self.generate_filename()) + class EpubConverte(ConverterBase): pass diff --git a/rss_reader/json_formatter.py b/rss_reader/json_formatter.py index 691d295..f2e1b58 100644 --- a/rss_reader/json_formatter.py +++ b/rss_reader/json_formatter.py @@ -1,10 +1,12 @@ import json +import logging from .news import News class FeedEncoder(json.JSONEncoder): def default(self, obj: object): names_of_sections = ('Feed source', 'Title', 'Date', 'Link', 'Description', 'Media_content') if isinstance(obj, Json): + logging.info('Encoding news into JSON format') number_of_news = len(obj.news_to_convert) return {'News': [{'Feed'+str(number): @@ -18,7 +20,9 @@ def default(self, obj: object): class Json(object): def __init__(self, news): + logging.info('Initialization of JSON formatter') self.news_to_convert = news def __str__(self): + logging.info('Receiving news in JSON fromat') return json.dumps(self, cls=FeedEncoder, indent=4, ensure_ascii=False) diff --git a/rss_reader/news.py b/rss_reader/news.py index 519431b..fd5f3e1 100644 --- a/rss_reader/news.py +++ b/rss_reader/news.py @@ -31,7 +31,7 @@ def __str__(self, json=None): str_to_print = 'Feed: %s\nTitle: %s\nDate: %s\nLink: %s\n\n%s\n\nLinks:\n[1] %s --feed\n' % \ (self.feed, self.title, self.date, self.link, self.description, self.link) if self.media_content[0]: - for i in range(len(self.media_content)): + for i in range(len(self.media_content)): str_to_print += '[%d] %s --image\n' % (i+2, self.media_content[i]) return str_to_print diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index 7e3550b..e324bdb 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -4,12 +4,13 @@ from datetime import datetime, date from time import mktime from sqlalchemy.orm import sessionmaker -from sqlalchemy import func, desc, asc, Date +from sqlalchemy import func, desc, asc, Date from .news import News, engine, Base from .json_formatter import Json from contextlib import contextmanager from .converter import HtmlConverter, PdfConverter + @contextmanager def create_session(adding=None): Session = sessionmaker(bind=engine) @@ -22,8 +23,9 @@ def create_session(adding=None): s.close() -class RssReader(object): +class RSSReader(object): def __init__(self, source, limit, date, json, configuration_for_conversion, all): + logging.info('Initialization of RSS Reader') self.source = source self.limit = limit self.date = date @@ -37,73 +39,85 @@ def get_and_parse_news(self): logging.info('Getting news') news = feedparser.parse(self.source) logging.info('Parsing news') - if news['entries'] and news['status'] == 200: - with create_session('adding') as s: - list_of_news = news['entries'][:self.limit] if self.limit else news['entries'] - for feed in list_of_news: - text_of_the_feed = self.parse_html(feed['summary_detail']['value']) - title = self.parse_html(feed['title']) - feed_object = News(news['feed']['title'], - title, - datetime.fromtimestamp(mktime(feed['published_parsed'])), - feed['link'], - text_of_the_feed, - [image.get('url') for image in feed.get('media_content')], - datetime.today()) - current_feed_in_table = s.query(News).filter(News.link==feed['link']).first() - if not current_feed_in_table: - s.add(feed_object) - else: - s.query(News)\ - .filter(News.link==feed['link'])\ - .update({'date_of_addition':datetime.today()}) - else: + if not news.get('entries'): + raise Exception('Entered URL is not a RSS source') + if news.get('status')/100 != 2: raise ConnectionError + with create_session('adding') as s: + list_of_news = news['entries'][:self.limit] if self.limit else news['entries'] + for feed in list_of_news: + text_of_the_feed = self.parse_html(feed['summary_detail']['value']) + title = self.parse_html(feed['title']) + feed_object = News(news['feed']['title'], + title, + datetime.fromtimestamp(mktime(feed['published_parsed'])), + feed['link'], + text_of_the_feed, + [image.get('url') for image in feed.get('media_content')], + datetime.today()) + current_feed_in_table = s.query(News).filter(News.link == feed['link']).first() + if not current_feed_in_table: + s.add(feed_object) + else: + s.query(News)\ + .filter(News.link == feed['link'])\ + .update({'date_of_addition': datetime.today()}) logging.info('All news are cached') - + def parse_html(self, html): + logging.info('Parsing news description content in HTML format') from bs4 import BeautifulSoup parser = BeautifulSoup(html, 'html.parser') return parser.getText() - + def get_cached_news(self): + logging.info('Getting news from cache by date') with create_session() as s: - self.news_to_print.extend(s.query(News).filter(func.date(News.date) == self.date).all()) + if self.limit: + self.news_to_print.extend(s.query(News).filter(func.date(News.date) == self.date).limit(self.limit).all()) + else: + self.news_to_print.extend(s.query(News).filter(func.date(News.date) == self.date).all()) if not self.news_to_print: - raise Exception('No cached news on this date') - + raise Exception('No cached news on this date') + def get_all_news(self): + logging.info('Getting all news from cache') with create_session() as s: self.news_to_print = s.query(News).all() if not self.news_to_print: raise Exception('No cached news') - + def get_news_to_print(self): + logging.info('Receiving news that will be displayed') with create_session() as s: if self.limit: self.news_to_print = s.query(News)\ .filter(func.Date(News.date_of_addition) == datetime.today().date())\ .order_by(News.date_of_addition.desc())\ - .limit(self.limit).all() + .limit(self.limit)\ + .all() else: self.news_to_print = s.query(News)\ .filter(func.Date(News.date_of_addition) == datetime.today().date())\ - .order_by(News.date_of_addition.asc()).all() - + .order_by(News.date_of_addition.asc())\ + .all() + def print_news(self): + logging.info('Print news') if self.json: print(Json(self.news_to_print)) return for feed in self.news_to_print: print(feed) print('='*77) - + def exec(self): + logging.info('Starting work of the RSS Reader') try: - if self.date: - self.get_cached_news() - elif self.all: + if self.all: self.get_all_news() + elif self.date: + self.get_cached_news() else: self.get_and_parse_news() self.get_news_to_print() From 3d8202b7afc619db95f8e300f2bd74bf70cdb73e Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 1 Dec 2019 02:44:29 +0300 Subject: [PATCH 28/39] Adding docstrings --- rss_reader/__init__.py | 1 + rss_reader/__main__.py | 1 + rss_reader/cli.py | 8 ++++++++ rss_reader/converter.py | 37 +++++++++++++++++++++++++++++------- rss_reader/json_formatter.py | 6 +++++- rss_reader/news.py | 4 +++- rss_reader/rss_reader.py | 7 +++---- rss_reader/tests/__init__.py | 0 rss_reader/tests/__main__.py | 0 9 files changed, 51 insertions(+), 13 deletions(-) create mode 100644 rss_reader/tests/__init__.py create mode 100644 rss_reader/tests/__main__.py diff --git a/rss_reader/__init__.py b/rss_reader/__init__.py index 0f66308..e34b0ed 100644 --- a/rss_reader/__init__.py +++ b/rss_reader/__init__.py @@ -1 +1,2 @@ +'''Package implements command-line RSS reader with some advanced features''' __version__ = '1.4' diff --git a/rss_reader/__main__.py b/rss_reader/__main__.py index 130bc63..187cbfb 100644 --- a/rss_reader/__main__.py +++ b/rss_reader/__main__.py @@ -1,2 +1,3 @@ +'''Module contain entry point to the package''' from .cli import main main() diff --git a/rss_reader/cli.py b/rss_reader/cli.py index 3c17170..165be3d 100644 --- a/rss_reader/cli.py +++ b/rss_reader/cli.py @@ -1,3 +1,4 @@ +'''Module implements a CLI of the application''' import argparse import logging from datetime import datetime @@ -7,6 +8,7 @@ def main(): + '''Entry point of the app''' parser = adding_arguments() args = parser.parse_args() init_logging(args.verbose) @@ -16,6 +18,7 @@ def main(): def adding_arguments(): + '''Function initializes arguments of the RSS Reader''' parser = argparse.ArgumentParser(description='Pure Python command-line RSS reader') parser.add_argument('source', metavar='source', type=url, help='RSS URL') parser.add_argument('--version', action='version', version='ver 1.4', help='Print version info') @@ -31,6 +34,7 @@ def adding_arguments(): def directory(dir_for_save): + '''Function validates the path where the exported file will be saved''' if path.exists(dir_for_save): logging.info(f'Directory {dir_for_save} already exists') else: @@ -40,6 +44,7 @@ def directory(dir_for_save): def url(source): + '''Function validates the URL that is the source of the news''' logging.info('URL validation') if not is_url(source): raise argparse.ArgumentError('Invalid url') @@ -47,6 +52,7 @@ def url(source): def date(date): + '''Function validates date''' logging.info('Date validation') try: checked_date = datetime.strptime(date, '%Y%m%d').date() @@ -56,6 +62,7 @@ def date(date): def init_logging(verbose): + '''Logging initialization''' if verbose: logging.basicConfig(format='%(module)s %(asctime)s %(message)s', datefmt='%I:%M:%S', level=logging.INFO) @@ -63,6 +70,7 @@ def init_logging(verbose): def mk_config_for_conversion(pdf, html): + '''Function creates a dictionary which contain which type of files and where news will be saved''' logging.info('Making dict with configuration of conversion') from collections import defaultdict dict_with_directories = defaultdict(str) diff --git a/rss_reader/converter.py b/rss_reader/converter.py index fd5db1b..47346f2 100644 --- a/rss_reader/converter.py +++ b/rss_reader/converter.py @@ -1,3 +1,4 @@ +'''Module contains classes that implement converters in different formats''' import logging from os import path, mkdir from abc import ABC, abstractmethod @@ -5,6 +6,7 @@ class ConverterBase(ABC): + '''Base class of converters''' def __init__(self, news, dir_for_save): self.news = news self.dir_for_images = path.join(dir_for_save, '.images_from_news') @@ -13,6 +15,7 @@ def __init__(self, news, dir_for_save): self.get_images(news) def init_dir_for_images_from_news(self): + '''Method creates directory where images from the news wiil be saved''' if path.exists(self.dir_for_images): logging.info('Directory %s already exists' % self.dir_for_images) else: @@ -24,11 +27,13 @@ def convert(self, news): return news def save_file(self, data): + '''Method that save converted file''' logging.info('Saving file with news') with open(self.generate_filename(), 'w') as f: f.write(data) def generate_filename(self): + '''Method that generate unique filename in the directory''' filename = path.join(self.dir_for_save, self.filename) number_of_files = 1 while number_of_files: @@ -39,6 +44,7 @@ def generate_filename(self): return filename def get_images(self, news): + '''Method that getting images that were in the news from their sources''' import httplib2 # this lib selected because it is much faster than urllib or requests(if you use caching of course) from PIL import Image import io @@ -57,6 +63,12 @@ def get_images(self, news): @staticmethod def check_image_link(image_link): + ''' + Method checks nested links in the source of image. + + For example, in news.yahoo.com link to the image has nested link + that contains the address of this image in its original form. + ''' logging.info('Checking for nested links') where_sub_link = image_link.rfind('http') if where_sub_link: @@ -64,6 +76,7 @@ def check_image_link(image_link): class HtmlConverter(ConverterBase): + '''Class implements conversion into HTML format''' def __init__(self, news, dir_for_save): logging.info('Initialization of HtmlConverter') super().__init__(news, dir_for_save) @@ -100,6 +113,7 @@ def __init__(self, news, dir_for_save): self.image_template = '
    ' def convert(self): + '''Method that doing conversion''' logging.info('Converting news to HTML format') news_str = '' for feed in self.news: @@ -112,12 +126,14 @@ def convert(self): class PdfConverter(ConverterBase): + '''Class that implements conversion into PDF format''' def __init__(self, news, dir_for_save): logging.info('Initialization of PdfConverter') super().__init__(news, dir_for_save) self.filename = 'news.pdf' class PDF(FPDF): + '''Class implements PDF document''' def __init__(self, dir_with_images): logging.info('Initialization of PDF document') self.dir_with_images = dir_with_images @@ -130,26 +146,39 @@ def __init__(self, dir_with_images): self.cell(0, 20, 'News you were looking for', ln=1, align='C') def footer(self): + '''Method that adds footer to document''' self.set_y(-20) self.set_font('TimesNewRoman', size=12) self.cell(0, 20, '%s' % self.page_no(), 0, 0, 'R') + def add_feed(self, feed): + '''Method that adds feed to document''' + self.add_title(feed.title) + self.add_link(feed.link) + self.add_description(feed.description) + self.add_images_from_the_feed(feed.id, feed.media_content) + self.ln(20) + def add_link(self, link): + '''Method that adds link to document''' self.set_font('TimesNewRoman', 'U', 12) self.set_text_color(r=0, g=0, b=255) self.cell(210, 15, 'Link to that news', ln=1, align='L', link=link) def add_title(self, title): + '''Method that adds title of the feed to document''' self.set_font('TimesNewRoman', size=18) self.multi_cell(0, 10, title, align='C') def add_description(self, description): + '''Method that adds description of the feed to document''' self.set_text_color(0, 0, 0) self.set_font('TimesNewRoman', size=14) self.write(6, description) self.ln(10) def add_images_from_the_feed(self, id, media_content): + '''Method that adds images from the news to document''' for number_of_image in range(len(media_content)): if not media_content[0]: continue @@ -157,14 +186,8 @@ def add_images_from_the_feed(self, id, media_content): self.image(path.join(self.dir_with_images, f'{id}{number_of_image}.png'), w=120, h=80) self.ln(10) - def add_feed(self, feed): - self.add_title(feed.title) - self.add_link(feed.link) - self.add_description(feed.description) - self.add_images_from_the_feed(feed.id, feed.media_content) - self.ln(20) - def convert(self): + '''Method that doing conversion''' logging.info('Converting news to PDF format') pdf = self.PDF(self.dir_for_images) for feed in self.news: diff --git a/rss_reader/json_formatter.py b/rss_reader/json_formatter.py index f2e1b58..25c98f7 100644 --- a/rss_reader/json_formatter.py +++ b/rss_reader/json_formatter.py @@ -1,9 +1,12 @@ +'''Module contains implementation of JSON converter''' import json import logging from .news import News class FeedEncoder(json.JSONEncoder): + """Subclass of JSONEncoder to be used for transforming into JSON""" def default(self, obj: object): + '''Method returns serializable object of news''' names_of_sections = ('Feed source', 'Title', 'Date', 'Link', 'Description', 'Media_content') if isinstance(obj, Json): logging.info('Encoding news into JSON format') @@ -18,11 +21,12 @@ def default(self, obj: object): class Json(object): - + '''Class that implements getting of the news in JSON format''' def __init__(self, news): logging.info('Initialization of JSON formatter') self.news_to_convert = news def __str__(self): + '''Returns news in JSON format''' logging.info('Receiving news in JSON fromat') return json.dumps(self, cls=FeedEncoder, indent=4, ensure_ascii=False) diff --git a/rss_reader/news.py b/rss_reader/news.py index fd5f3e1..0bdd03e 100644 --- a/rss_reader/news.py +++ b/rss_reader/news.py @@ -1,3 +1,4 @@ +'''Module contain class related to news''' from sqlalchemy import create_engine, Column, String, DateTime, PickleType, Integer from sqlalchemy.ext.declarative import declarative_base @@ -7,8 +8,8 @@ class News(Base): + '''News class''' __tablename__ = 'news' - id = Column(Integer, primary_key=True, autoincrement=True) feed = Column(String) title = Column(String) @@ -28,6 +29,7 @@ def __init__(self, feed, title, date, link, description, media_content, date_of_ self.date_of_addition = date_of_addition def __str__(self, json=None): + '''Method returns full text of the feed''' str_to_print = 'Feed: %s\nTitle: %s\nDate: %s\nLink: %s\n\n%s\n\nLinks:\n[1] %s --feed\n' % \ (self.feed, self.title, self.date, self.link, self.description, self.link) if self.media_content[0]: diff --git a/rss_reader/rss_reader.py b/rss_reader/rss_reader.py index e324bdb..b47c92e 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rss_reader.py @@ -13,13 +13,12 @@ @contextmanager def create_session(adding=None): - Session = sessionmaker(bind=engine) + "Context manager that creates a session for exchanging data with a database" + Session = sessionmaker(bind=engine, autocommit=True) s = Session() try: yield s finally: - if adding: - s.commit() s.close() @@ -43,7 +42,7 @@ def get_and_parse_news(self): raise Exception('Entered URL is not a RSS source') if news.get('status')/100 != 2: raise ConnectionError - with create_session('adding') as s: + with create_session() as s: list_of_news = news['entries'][:self.limit] if self.limit else news['entries'] for feed in list_of_news: text_of_the_feed = self.parse_html(feed['summary_detail']['value']) diff --git a/rss_reader/tests/__init__.py b/rss_reader/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/rss_reader/tests/__main__.py b/rss_reader/tests/__main__.py new file mode 100644 index 0000000..e69de29 From 31d48e5d0ce357d864feb36f2e60581e45c114cf Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 1 Dec 2019 21:48:43 +0300 Subject: [PATCH 29/39] adding unittests and some fixes after second review --- requirements.txt | 10 +-- rss_reader/cli.py | 73 ++++++++++++--------- rss_reader/converter.py | 31 ++++----- rss_reader/json_formatter.py | 3 +- rss_reader/news.py | 3 +- rss_reader/{rss_reader.py => rssreader.py} | 71 ++++++++++++-------- {rss_reader/tests => tests}/__init__.py | 0 {rss_reader/tests => tests}/__main__.py | 0 tests/all_news(date also 01-12-2019).txt | 20 ++++++ tests/news | Bin 0 -> 8192 bytes tests/news.html | 0 tests/news.pdf | Bin tests/one_news_from20191201.txt | 10 +++ tests/print_news3.txt | 22 +++++++ tests/test_cli.py | 30 +++++++++ tests/test_converter.py | 14 ++++ tests/test_json.py | 29 ++++++++ tests/test_news.py | 15 +++++ tests/test_rssreader.py | 54 +++++++++++++++ 19 files changed, 303 insertions(+), 82 deletions(-) rename rss_reader/{rss_reader.py => rssreader.py} (68%) rename {rss_reader/tests => tests}/__init__.py (100%) rename {rss_reader/tests => tests}/__main__.py (100%) create mode 100644 tests/all_news(date also 01-12-2019).txt create mode 100644 tests/news create mode 100644 tests/news.html create mode 100644 tests/news.pdf create mode 100644 tests/one_news_from20191201.txt create mode 100644 tests/print_news3.txt create mode 100644 tests/test_cli.py create mode 100644 tests/test_converter.py create mode 100644 tests/test_json.py create mode 100644 tests/test_news.py create mode 100644 tests/test_rssreader.py diff --git a/requirements.txt b/requirements.txt index 1ad2c9a..e493061 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ -beautifulsoup4==4.8.0 -validator_collection==1.3.7 -sqlalchemy==1.2.7 -feedparser==5.2.1 -fpdf==1.7.2 \ No newline at end of file +beautifulsoup4>=4.8.0 +validator_collection>=1.3.7 +sqlalchemy>=1.2.7 +feedparser>=5.2.1 +fpdf>=1.7.2 \ No newline at end of file diff --git a/rss_reader/cli.py b/rss_reader/cli.py index 165be3d..490924e 100644 --- a/rss_reader/cli.py +++ b/rss_reader/cli.py @@ -1,10 +1,11 @@ '''Module implements a CLI of the application''' -import argparse import logging +from argparse import ArgumentParser from datetime import datetime from os import path, makedirs from validator_collection.checkers import is_url -from .rss_reader import RSSReader +from .rssreader import RSSReader +from collections import defaultdict def main(): @@ -12,67 +13,79 @@ def main(): parser = adding_arguments() args = parser.parse_args() init_logging(args.verbose) + source, date = validate_arguments(args) configuration_for_conversion = mk_config_for_conversion(args.to_pdf, args.to_html) - rss = RSSReader(args.source, args.limit, args.date, args.json, configuration_for_conversion, args.all) + rss = RSSReader(source, args.limit, date, args.json, configuration_for_conversion, args.all) rss.exec() def adding_arguments(): '''Function initializes arguments of the RSS Reader''' - parser = argparse.ArgumentParser(description='Pure Python command-line RSS reader') - parser.add_argument('source', metavar='source', type=url, help='RSS URL') + parser = ArgumentParser(description='Pure Python command-line RSS reader') + parser.add_argument('source', metavar='source', type=str, help='RSS URL') parser.add_argument('--version', action='version', version='ver 1.4', help='Print version info') parser.add_argument('--limit', metavar='LIMIT', type=int, help='Amount of news output') parser.add_argument('--verbose', action='store_true', help='Print all logs in stdout') parser.add_argument('--json', action='store_true', help='Print news in json format') - parser.add_argument('--date', type=date, help='Print news published on a given day') - parser.add_argument('--to-pdf', type=directory, help='Conversion news to the PDF format') - parser.add_argument('--to-html', type=directory, help='Conversion news to the HTML format') + parser.add_argument('--date', type=str, help='Print news published on a given day') + parser.add_argument('--to-pdf', type=str, help='Conversion news to the PDF format') + parser.add_argument('--to-html', type=str, help='Conversion news to the HTML format') parser.add_argument('--all', action='store_true', help='Getting all cached news.\ Compatible with the following arguments: --verbose, --json, --to-pdf, --to-html') return parser -def directory(dir_for_save): - '''Function validates the path where the exported file will be saved''' - if path.exists(dir_for_save): - logging.info(f'Directory {dir_for_save} already exists') - else: - makedirs(dir_for_save) - logging.info(f'Create directory {dir_for_save} for saving file') - return dir_for_save - - -def url(source): +def init_logging(verbose): + '''Logging initialization''' + if verbose: + logging.basicConfig(format='%(module)s %(asctime)s %(message)s', + datefmt='%I:%M:%S', level=logging.INFO) + + +def validate_arguments(args): + '''Function validates of all received arguments''' + source = validate_url(args.source) + date = None + if args.date: + date = validate_date(args.date) + if args.to_html: + validate_path(args.to_html) + if args.to_pdf: + validate_path(args.to_pdf) + return source, date + + +def validate_url(source): '''Function validates the URL that is the source of the news''' logging.info('URL validation') if not is_url(source): - raise argparse.ArgumentError('Invalid url') + raise ValueError('Invalid url') return source -def date(date): +def validate_date(date): '''Function validates date''' logging.info('Date validation') try: checked_date = datetime.strptime(date, '%Y%m%d').date() return checked_date - except ValueError: + except ValueError as e: print('Wrong date') + - -def init_logging(verbose): - '''Logging initialization''' - if verbose: - logging.basicConfig(format='%(module)s %(asctime)s %(message)s', - datefmt='%I:%M:%S', level=logging.INFO) - logging.info('Initialization of logging') +def validate_path(dir_for_save): + '''Function validates the path where the exported file will be saved''' + if path.exists(dir_for_save): + logging.info(f'Directory {dir_for_save} already exists') + else: + makedirs(dir_for_save) + logging.info(f'Create directory {dir_for_save} for saving file') + return dir_for_save def mk_config_for_conversion(pdf, html): '''Function creates a dictionary which contain which type of files and where news will be saved''' logging.info('Making dict with configuration of conversion') - from collections import defaultdict dict_with_directories = defaultdict(str) if pdf: dict_with_directories['pdf'] = pdf diff --git a/rss_reader/converter.py b/rss_reader/converter.py index 47346f2..af18518 100644 --- a/rss_reader/converter.py +++ b/rss_reader/converter.py @@ -1,5 +1,8 @@ '''Module contains classes that implement converters in different formats''' import logging +import httplib2 +import io +from PIL import Image from os import path, mkdir from abc import ABC, abstractmethod from fpdf import FPDF @@ -9,18 +12,19 @@ class ConverterBase(ABC): '''Base class of converters''' def __init__(self, news, dir_for_save): self.news = news - self.dir_for_images = path.join(dir_for_save, '.images_from_news') self.dir_for_save = dir_for_save - self.init_dir_for_images_from_news() + self.dir_for_images = self.init_dir_for_images_from_news(path.join(dir_for_save, '.images_from_news')) self.get_images(news) - def init_dir_for_images_from_news(self): + @staticmethod + def init_dir_for_images_from_news(dir_for_images): '''Method creates directory where images from the news wiil be saved''' - if path.exists(self.dir_for_images): - logging.info('Directory %s already exists' % self.dir_for_images) + if path.exists(dir_for_images): + logging.info('Directory %s already exists' % dir_for_images) else: - mkdir(self.dir_for_images) - logging.info('Create directory %s for saving images from news' % self.dir_for_images) + mkdir(dir_for_images) + logging.info('Create directory %s for saving images from news' % dir_for_images) + return dir_for_images @abstractmethod def convert(self, news): @@ -45,14 +49,11 @@ def generate_filename(self): def get_images(self, news): '''Method that getting images that were in the news from their sources''' - import httplib2 # this lib selected because it is much faster than urllib or requests(if you use caching of course) - from PIL import Image - import io h = httplib2.Http('.cache') logging.info('Getting images from news') for feed in news: images = feed.media_content - for number_of_image, image in zip(range(len(images)), images): + for number_of_image, image in enumerate(images): if not image: continue image = self.check_image_link(image) @@ -137,10 +138,10 @@ class PDF(FPDF): def __init__(self, dir_with_images): logging.info('Initialization of PDF document') self.dir_with_images = dir_with_images - super().__init__('P', 'mm', 'A4') - self.add_font('TimesNewRoman', '', 'times-new-roman.ttf', uni=True) - self.set_margins(30, 20, 10) - self.set_auto_page_break(True, 20) + super().__init__(orientation='P', unit='mm', format='A4') + self.add_font('TimesNewRoman', fname='times-new-roman.ttf', uni=True) + self.set_margins(left=30, top=20, right=10) + self.set_auto_page_break(True, margin=20) self.add_page() self.set_font('TimesNewRoman', size=22) self.cell(0, 20, 'News you were looking for', ln=1, align='C') diff --git a/rss_reader/json_formatter.py b/rss_reader/json_formatter.py index 25c98f7..6498570 100644 --- a/rss_reader/json_formatter.py +++ b/rss_reader/json_formatter.py @@ -10,13 +10,12 @@ def default(self, obj: object): names_of_sections = ('Feed source', 'Title', 'Date', 'Link', 'Description', 'Media_content') if isinstance(obj, Json): logging.info('Encoding news into JSON format') - number_of_news = len(obj.news_to_convert) return {'News': [{'Feed'+str(number): {section_name:str(feed_section) for section_name, feed_section in zip(names_of_sections, feed())}\ for number, feed - in zip(range(number_of_news),obj.news_to_convert)}]} + in enumerate(obj.news_to_convert)}]} return json.JSONEncoder.default(self, obj) diff --git a/rss_reader/news.py b/rss_reader/news.py index 0bdd03e..fc1b006 100644 --- a/rss_reader/news.py +++ b/rss_reader/news.py @@ -1,9 +1,8 @@ '''Module contain class related to news''' -from sqlalchemy import create_engine, Column, String, DateTime, PickleType, Integer +from sqlalchemy import Column, String, DateTime, PickleType, Integer from sqlalchemy.ext.declarative import declarative_base -engine = create_engine('sqlite:///news') Base = declarative_base() diff --git a/rss_reader/rss_reader.py b/rss_reader/rssreader.py similarity index 68% rename from rss_reader/rss_reader.py rename to rss_reader/rssreader.py index b47c92e..40e1208 100644 --- a/rss_reader/rss_reader.py +++ b/rss_reader/rssreader.py @@ -3,19 +3,19 @@ import feedparser from datetime import datetime, date from time import mktime +from bs4 import BeautifulSoup from sqlalchemy.orm import sessionmaker -from sqlalchemy import func, desc, asc, Date -from .news import News, engine, Base +from sqlalchemy import func, desc, Date, create_engine +from .news import News, Base from .json_formatter import Json from contextlib import contextmanager from .converter import HtmlConverter, PdfConverter @contextmanager -def create_session(adding=None): +def create_session(session): "Context manager that creates a session for exchanging data with a database" - Session = sessionmaker(bind=engine, autocommit=True) - s = Session() + s = session() try: yield s finally: @@ -23,7 +23,8 @@ def create_session(adding=None): class RSSReader(object): - def __init__(self, source, limit, date, json, configuration_for_conversion, all): + '''Class of RSS reader''' + def __init__(self, source, limit, date, json, configuration_for_conversion, all, name_of_database='news'): logging.info('Initialization of RSS Reader') self.source = source self.limit = limit @@ -32,46 +33,56 @@ def __init__(self, source, limit, date, json, configuration_for_conversion, all) self.configuration_for_conversion = configuration_for_conversion self.all = all self.news_to_print = [] - Base.metadata.create_all(engine) + self.init_database(name_of_database) + def init_database(self, name_of_database): + '''Method initialize interaction with the database''' + engine = create_engine(f'sqlite:///{name_of_database}') + Base.metadata.create_all(engine) + self.session = sessionmaker(bind=engine, autocommit=True) + def get_and_parse_news(self): + '''Method for getting, parsing and saving news from the Internet''' logging.info('Getting news') news = feedparser.parse(self.source) logging.info('Parsing news') - if not news.get('entries'): - raise Exception('Entered URL is not a RSS source') - if news.get('status')/100 != 2: - raise ConnectionError - with create_session() as s: - list_of_news = news['entries'][:self.limit] if self.limit else news['entries'] + if news.bozo: + if news.bozo_exception.args[0].endswith('name\n'): + raise Exception('Entered URL is not a RSS source') + else: + raise news.bozo_exception + with create_session(self.session) as s: + list_of_news = news.entries[:self.limit+1] if self.limit else news.entries for feed in list_of_news: - text_of_the_feed = self.parse_html(feed['summary_detail']['value']) - title = self.parse_html(feed['title']) - feed_object = News(news['feed']['title'], + text_of_the_feed = self.parse_html(feed.summary_detail.value) + title = self.parse_html(feed.title) + feed_object = News(news.feed.title, title, - datetime.fromtimestamp(mktime(feed['published_parsed'])), - feed['link'], + datetime.fromtimestamp(mktime(feed.published_parsed)), + feed.link, text_of_the_feed, - [image.get('url') for image in feed.get('media_content')], + [image.get('url') for image in feed.media_content], datetime.today()) - current_feed_in_table = s.query(News).filter(News.link == feed['link']).first() + current_feed_in_table = s.query(News).filter(News.link == feed.link).first() if not current_feed_in_table: s.add(feed_object) else: s.query(News)\ - .filter(News.link == feed['link'])\ + .filter(News.link == feed.link)\ .update({'date_of_addition': datetime.today()}) logging.info('All news are cached') - def parse_html(self, html): - logging.info('Parsing news description content in HTML format') - from bs4 import BeautifulSoup + @staticmethod + def parse_html(html): + '''Method that parse html elements from news''' + logging.info('Parsing content of the news in HTML format') parser = BeautifulSoup(html, 'html.parser') return parser.getText() def get_cached_news(self): + '''Method for getting cached news by date''' logging.info('Getting news from cache by date') - with create_session() as s: + with create_session(self.session) as s: if self.limit: self.news_to_print.extend(s.query(News).filter(func.date(News.date) == self.date).limit(self.limit).all()) else: @@ -80,15 +91,17 @@ def get_cached_news(self): raise Exception('No cached news on this date') def get_all_news(self): + '''Method getting all news from database''' logging.info('Getting all news from cache') - with create_session() as s: + with create_session(self.session) as s: self.news_to_print = s.query(News).all() if not self.news_to_print: raise Exception('No cached news') def get_news_to_print(self): + '''Getting news that will be printed''' logging.info('Receiving news that will be displayed') - with create_session() as s: + with create_session(self.session) as s: if self.limit: self.news_to_print = s.query(News)\ .filter(func.Date(News.date_of_addition) == datetime.today().date())\ @@ -98,10 +111,11 @@ def get_news_to_print(self): else: self.news_to_print = s.query(News)\ .filter(func.Date(News.date_of_addition) == datetime.today().date())\ - .order_by(News.date_of_addition.asc())\ + .order_by(News.date_of_addition.desc())\ .all() def print_news(self): + '''Method that print news in sys.stdout''' logging.info('Print news') if self.json: print(Json(self.news_to_print)) @@ -111,6 +125,7 @@ def print_news(self): print('='*77) def exec(self): + '''Method implements execution of RSS reader''' logging.info('Starting work of the RSS Reader') try: if self.all: diff --git a/rss_reader/tests/__init__.py b/tests/__init__.py similarity index 100% rename from rss_reader/tests/__init__.py rename to tests/__init__.py diff --git a/rss_reader/tests/__main__.py b/tests/__main__.py similarity index 100% rename from rss_reader/tests/__main__.py rename to tests/__main__.py diff --git a/tests/all_news(date also 01-12-2019).txt b/tests/all_news(date also 01-12-2019).txt new file mode 100644 index 0000000..78d470a --- /dev/null +++ b/tests/all_news(date also 01-12-2019).txt @@ -0,0 +1,20 @@ +Feed: Yahoo News - Latest News & Headlines +Title: Toll at least 21 after Mexico cartel attack near US border +Date: 2019-12-01 15:28:11 +Link: https://news.yahoo.com/toll-least-21-mexico-cartel-152811534.html + +Mexican security forces on Sunday killed seven more members of a presumed cartel assault force that rolled into a town near the Texas border and staged an hour-long attack, officials said, bringing the death toll to at least 21. The Coahuila state government said in a statement that lawmen were still chasing remnants of the force that arrived in a convoy of trucks and attacked the city hall of Villa Union on Saturday. Gov. Miguel Angel Riquelme said at least 14 people had died by that afternoon, four of them police officers. + +Links: +[1] https://news.yahoo.com/toll-least-21-mexico-cartel-152811534.html --feed +[2] http://l2.yimg.com/uu/api/res/1.2/eaVOxQfOmhj3xx9cS9ntTw--/YXBwaWQ9eXRhY2h5b247aD04Njt3PTEzMDs-/https://media.zenfs.com/en/ap.org/9150f9f4c340580bbd66527e978ee26d --image +Feed: Yahoo News - Latest News & Headlines +Title: Newsweek 'fires' journalist who reported Trump was golfing for Thanksgiving before he secretly travelled to Afghanistan +Date: 2019-12-01 14:24:00 +Link: https://news.yahoo.com/newsweek-fires-journalist-reported-trump-142400157.html + +A Newsweek reporter who wrote that Donald Trump would spend Thanksgiving ‘tweeting, golfing, and more’ - hours before he touched down in a surprise visit to US troops in Afghanistan - has reportedly been fired.The visit was kept highly secret for the president’s safety, and his public schedule said he would be at his Mar-a-Lago hotel in Florida on the holiday, where he would make calls to selected military members. + +Links: +[1] https://news.yahoo.com/newsweek-fires-journalist-reported-trump-142400157.html --feed +[2] http://l1.yimg.com/uu/api/res/1.2/zcYzP.Ed7Z2ViZZL6RjfJw--/YXBwaWQ9eXRhY2h5b247aD04Njt3PTEzMDs-/https://media.zenfs.com/en/the_independent_635/218f25cad42049a1432f1d7fa1a031c8 --image diff --git a/tests/news b/tests/news new file mode 100644 index 0000000000000000000000000000000000000000..59646258481e50377ee98d0d8fca6ca50993f29a GIT binary patch literal 8192 zcmeHM&u`l{6t;sFTZ?raFciBD++}TnNVa4tvAxTj#%sGdN$WUSQ=kZF>B(X&i5f}S zadv4|VBKNI4%n`{?X=sj`(OGW>_6Be6}R4DKMp(eAR%&0>WS}tAHR%ZvWeLxn_Uz$2E+qU;nU%f7MknP%%(3 zP%%(3P%%(3P%%(3P%%(3P%%(3@CGt)eq4X+gBv&M&puLgoInP1sqeKr!+vknC!^lh zpiguUxpnml3(5W6QU7j#NOt!|WcOe&SSMGnL;xW<><#bS>kV~VF_pk-M@aDizK!FJ z?(g(c|g<_jh{3 zBl1Q6h}>e~?W?!-*?jHo-)rw2;74^;3{(tM3{(tM3{(tM47~XaJb!=fTJ7Nc>)!e8 zZ=XDSw|7Ki&dILcky&JbTOp~+*2m-?&=7Z4AobHZz?9sKm;iZ`obWq`dK3B|A!F~5BJ6H*)_b#jFT#fu z_Q$TbNw=Hc?ulwW81>I~wx!irip-oE>@&zBX_7$JKs3iJ3qeZ&i96nC`3=`;N3I{x z&~uw!hdN%%jht{Zq7H4goS^-J+N*-@biH=h_ieZBy6w*MTXpTqdhh)Dcm6l(Ke=+m zlSH$h07W0V4xy0(L3ZGj1swTAN9yN_22(t7QK4lt<{|{KT8H0t+g-=`XJaW$Wtlvd z>sYDDV3ipx$9LO~?Th975+0%Y zwHgbg{1pHxX_2UMoYIT}tHA)4p;{W&ugA-g02U0hts%V3Hnv(!c?YxPToJdgnWs}l-HGny&nDKg0oYb9DL1e+PS2o}$-GrllU zq6ntaKrG>4h%P(Oq{nC`9dw8}C^^XVIatpCRfWJgKm>RB%qBZ*QlLh9*#tj_>?>@f z7Y=`g*YQXWJV)op6jv#RX~wu@>qXJ%E#o{}$Jr^wMeQlc(dPkR6WP7+?Juu=`}5Mb z?%(Z$_QS3tC>&Z#T!|aAU)FH=(oH Q25>jRzp<+0x~}8@2}Oj&{r~^~ literal 0 HcmV?d00001 diff --git a/tests/news.html b/tests/news.html new file mode 100644 index 0000000..e69de29 diff --git a/tests/news.pdf b/tests/news.pdf new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/tests/one_news_from20191201.txt b/tests/one_news_from20191201.txt new file mode 100644 index 0000000..7f3ba11 --- /dev/null +++ b/tests/one_news_from20191201.txt @@ -0,0 +1,10 @@ +Feed: Yahoo News - Latest News & Headlines +Title: Toll at least 21 after Mexico cartel attack near US border +Date: 2019-12-01 15:28:11 +Link: https://news.yahoo.com/toll-least-21-mexico-cartel-152811534.html + +Mexican security forces on Sunday killed seven more members of a presumed cartel assault force that rolled into a town near the Texas border and staged an hour-long attack, officials said, bringing the death toll to at least 21. The Coahuila state government said in a statement that lawmen were still chasing remnants of the force that arrived in a convoy of trucks and attacked the city hall of Villa Union on Saturday. Gov. Miguel Angel Riquelme said at least 14 people had died by that afternoon, four of them police officers. + +Links: +[1] https://news.yahoo.com/toll-least-21-mexico-cartel-152811534.html --feed +[2] http://l2.yimg.com/uu/api/res/1.2/eaVOxQfOmhj3xx9cS9ntTw--/YXBwaWQ9eXRhY2h5b247aD04Njt3PTEzMDs-/https://media.zenfs.com/en/ap.org/9150f9f4c340580bbd66527e978ee26d --image diff --git a/tests/print_news3.txt b/tests/print_news3.txt new file mode 100644 index 0000000..632b91d --- /dev/null +++ b/tests/print_news3.txt @@ -0,0 +1,22 @@ +{ + "News": [ + { + "Feed0": { + "Feed source": "Yahoo News - Latest News & Headlines", + "Title": "Inmate wanted by ICE released on bail. He was arrested weeks later for attempted murder", + "Date": "2019-11-30 00:01:47", + "Link": "https://news.yahoo.com/inmate-wanted-ice-released-bail-000147188.html", + "Description": "A 2019 Colorado law bars law enforcement officials in the state from holding a person based only on a request from ICE.", + "Media_content": "['http://l.yimg.com/uu/api/res/1.2/NAYKLmiuVlclFbmhgJhmmQ--/YXBwaWQ9eXRhY2h5b247aD04Njt3PTEzMDs-/https://media.zenfs.com/en-us/usa_today_news_641/fad4e8fdfc4aec082a2ec8c57ab045dc']" + }, + "Feed1": { + "Feed source": "Yahoo News - Latest News & Headlines", + "Title": "Newsweek 'fires' journalist who reported Trump was golfing for Thanksgiving before he secretly travelled to Afghanistan", + "Date": "2019-12-01 14:24:00", + "Link": "https://news.yahoo.com/newsweek-fires-journalist-reported-trump-142400157.html", + "Description": "A Newsweek reporter who wrote that Donald Trump would spend Thanksgiving ‘tweeting, golfing, and more’ - hours before he touched down in a surprise visit to US troops in Afghanistan - has reportedly been fired.The visit was kept highly secret for the president’s safety, and his public schedule said he would be at his Mar-a-Lago hotel in Florida on the holiday, where he would make calls to selected military members.", + "Media_content": "['http://l1.yimg.com/uu/api/res/1.2/zcYzP.Ed7Z2ViZZL6RjfJw--/YXBwaWQ9eXRhY2h5b247aD04Njt3PTEzMDs-/https://media.zenfs.com/en/the_independent_635/218f25cad42049a1432f1d7fa1a031c8']" + } + } + ] +} \ No newline at end of file diff --git a/tests/test_cli.py b/tests/test_cli.py new file mode 100644 index 0000000..7e654f0 --- /dev/null +++ b/tests/test_cli.py @@ -0,0 +1,30 @@ +import unittest +from argparse import ArgumentParser +import rss_reader.cli as cli + + +class TestCli(unittest.TestCase): + def test_directory(self): + self.assertEqual(cli.validate_path('tests'), 'tests') + + def test_url(self): + self.assertEqual(cli.validate_url('https://news.yahoo.com'), 'https://news.yahoo.com') + with self.assertRaises(ValueError): + cli.validate_url('http:/news.yahoo') + + def test_date(self): + import datetime + self.assertEqual(cli.validate_date('20191123'), datetime.date(2019, 11, 23)) + self.assertIsNone(cli.validate_date('20193212')) + + def test_make_config_dict(self): + self.assertDictEqual(cli.mk_config_for_conversion('path', None), {'pdf': 'path'}) + self.assertDictEqual(cli.mk_config_for_conversion(None, 'path'), {'html': 'path'}) + self.assertDictEqual(cli.mk_config_for_conversion('path', 'path'), {'pdf': 'path', 'html': 'path'}) + + def test_adding_arguments(self): + self.assertIsInstance(cli.adding_arguments(), ArgumentParser) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_converter.py b/tests/test_converter.py new file mode 100644 index 0000000..2750466 --- /dev/null +++ b/tests/test_converter.py @@ -0,0 +1,14 @@ +import unittest +from rss_reader.converter import ConverterBase, PdfConverter, HtmlConverter + + +class TestNews(unittest.TestCase): + def test_init_dir_for_images(self): + self.assertEqual(ConverterBase.init_dir_for_images_from_news('tests'), 'tests') + + def test_check_image_link(self): + self.assertEqual(ConverterBase.check_image_link('htttps://linkhttp:/nestedlink'), 'http:/nestedlink') + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_json.py b/tests/test_json.py new file mode 100644 index 0000000..7bfb9c9 --- /dev/null +++ b/tests/test_json.py @@ -0,0 +1,29 @@ +import unittest +from datetime import datetime +from rss_reader.json_formatter import Json +from rss_reader.news import News + + +class TestNews(unittest.TestCase): + def test_json(self): + news = [News('feed', 'title', datetime(2019, 11, 12), 'link', 'description', ['link_to_image'], datetime.now())] + json_example = '''\ +{ + "News": [ + { + "Feed0": { + "Feed source": "feed", + "Title": "title", + "Date": "2019-11-12 00:00:00", + "Link": "link", + "Description": "description", + "Media_content": "['link_to_image']" + } + } + ] +}''' + self.assertEqual(Json(news).__str__(), json_example) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_news.py b/tests/test_news.py new file mode 100644 index 0000000..656a9c3 --- /dev/null +++ b/tests/test_news.py @@ -0,0 +1,15 @@ +import unittest +from datetime import datetime +from rss_reader.news import News + + +class TestNews(unittest.TestCase): + def test_str_and_call(self): + feed = News('feed', 'title', datetime(2019, 11, 12), 'link', 'description', ['link_to_image'], datetime.now()) + feed_str_example = f'Feed: feed\nTitle: title\nDate: {datetime(2019, 11, 12)}\nLink: link\n\ndescription\n\nLinks:\n[1] link --feed\n[2] link_to_image --image\n' + self.assertEqual(feed.__str__(), feed_str_example) + self.assertEqual(feed(), ('feed', 'title', datetime(2019, 11, 12), 'link', 'description', ['link_to_image'])) + + +if __name__ == '__main__': + unittest.main() diff --git a/tests/test_rssreader.py b/tests/test_rssreader.py new file mode 100644 index 0000000..c14a492 --- /dev/null +++ b/tests/test_rssreader.py @@ -0,0 +1,54 @@ +import unittest +import glob +from rss_reader.rssreader import RSSReader +from datetime import datetime + + +class TestNews(unittest.TestCase): + + maxDiff = None + + def test_parse_html(self): + rss_example = RSSReader('source', 1, datetime(2019, 12, 1), True, {}, False) + html_example = '''

    Ilhan Omar GOP challenger banned from Twitter after sayingshe should be "tried for treason and hanged”\ +Danielle Stella campaign account also tweeted a picture of a stick figure being hanged with a link to a blog post about her comments.


    \ +''' + html_result = '''Danielle Stella campaign account also tweeted a picture of a stick figure being hanged with a link to a blog post about her comments.''' + self.assertEqual(rss_example.parse_html(html_example), html_result) + + def test_get_cached_news(self): + rss_example1 = RSSReader('source', None, datetime(2019, 12, 1).date(), True, {}, False, 'tests/news') + rss_example2 = RSSReader('source', 1, datetime(2019, 12, 1).date(), False, {}, False, 'tests/news') + with open('tests/all_news(date also 01-12-2019).txt', 'r') as f: + all_news = f.read() + rss_example1.get_cached_news() + cached_news = '' + for feed in rss_example1.news_to_print: + cached_news += feed.__str__() + self.assertEqual(all_news, cached_news) + with open('tests/one_news_from20191201.txt', 'r') as f: + one_news = f.read() + rss_example2.get_cached_news() + cached_news = '' + for feed in rss_example2.news_to_print: + cached_news += feed.__str__() + self.assertEqual(one_news, cached_news) + + def test_get_all_news(self): + rss_example1 = RSSReader('source', None, datetime(2019, 12, 1).date(), True, {}, True, 'tests/news') + with open('tests/all_news(date also 01-12-2019).txt', 'r') as f: + all_news = f.read() + rss_example1.get_all_news() + cached_news = '' + for feed in rss_example1.news_to_print: + cached_news += feed.__str__() + self.assertEqual(all_news, cached_news) + + +if __name__ == '__main__': + unittest.main() From 73e816037ec6f6c045b6529df2e1a62c15b2cb97 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 1 Dec 2019 22:20:20 +0300 Subject: [PATCH 30/39] Update requirements.txt --- requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e493061..61011e8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,5 @@ beautifulsoup4>=4.8.0 validator_collection>=1.3.7 sqlalchemy>=1.2.7 feedparser>=5.2.1 -fpdf>=1.7.2 \ No newline at end of file +fpdf>=1.7.2 +httplib2>=0.14.0 \ No newline at end of file From de874651bf33bb6da0fa87debcae63f6cca7be62 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 1 Dec 2019 22:22:23 +0300 Subject: [PATCH 31/39] Revert "Update requirements.txt" This reverts commit 73e816037ec6f6c045b6529df2e1a62c15b2cb97. --- requirements.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index 61011e8..e493061 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,5 +2,4 @@ beautifulsoup4>=4.8.0 validator_collection>=1.3.7 sqlalchemy>=1.2.7 feedparser>=5.2.1 -fpdf>=1.7.2 -httplib2>=0.14.0 \ No newline at end of file +fpdf>=1.7.2 \ No newline at end of file From 7d802e91f0b038730feb6f543f689a8eeaea7ffc Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 1 Dec 2019 22:23:20 +0300 Subject: [PATCH 32/39] Update requirements.txt --- requirements.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e493061..27edeff 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,6 @@ beautifulsoup4>=4.8.0 validator_collection>=1.3.7 sqlalchemy>=1.2.7 feedparser>=5.2.1 -fpdf>=1.7.2 \ No newline at end of file +fpdf>=1.7.2 +httplib2>=0.14.0 +PIL>=1.1.6 \ No newline at end of file From 8e43e9c77db3792643f7881a2338caf397d8327f Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 1 Dec 2019 22:24:16 +0300 Subject: [PATCH 33/39] Revert "Update requirements.txt" This reverts commit 7d802e91f0b038730feb6f543f689a8eeaea7ffc. --- requirements.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/requirements.txt b/requirements.txt index 27edeff..e493061 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,6 +2,4 @@ beautifulsoup4>=4.8.0 validator_collection>=1.3.7 sqlalchemy>=1.2.7 feedparser>=5.2.1 -fpdf>=1.7.2 -httplib2>=0.14.0 -PIL>=1.1.6 \ No newline at end of file +fpdf>=1.7.2 \ No newline at end of file From e6115d5e2286fb8d774c2dd2b1f7868ea9eedbaf Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 1 Dec 2019 22:25:22 +0300 Subject: [PATCH 34/39] Update requirements.txt --- requirements.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e493061..fdb66e0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,4 +2,6 @@ beautifulsoup4>=4.8.0 validator_collection>=1.3.7 sqlalchemy>=1.2.7 feedparser>=5.2.1 -fpdf>=1.7.2 \ No newline at end of file +fpdf>=1.7.2 +httplib2>=0.14.0 +Pillow>=6.2.1 \ No newline at end of file From 2a7d9e753cb32fdf5d0d0b2f18ab6903b84a406d Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 1 Dec 2019 22:31:43 +0300 Subject: [PATCH 35/39] Update tests directory --- tests/__main__.py | 0 .../all_news(date also 01-12-2019).txt | 0 tests/{ => data_for_testing}/news | Bin tests/{ => data_for_testing}/news.html | 0 tests/{ => data_for_testing}/news.pdf | Bin .../one_news_from20191201.txt | 0 tests/print_news3.txt | 22 ------------------ tests/test_rssreader.py | 12 +++++----- 8 files changed, 6 insertions(+), 28 deletions(-) delete mode 100644 tests/__main__.py rename tests/{ => data_for_testing}/all_news(date also 01-12-2019).txt (100%) rename tests/{ => data_for_testing}/news (100%) rename tests/{ => data_for_testing}/news.html (100%) rename tests/{ => data_for_testing}/news.pdf (100%) rename tests/{ => data_for_testing}/one_news_from20191201.txt (100%) delete mode 100644 tests/print_news3.txt diff --git a/tests/__main__.py b/tests/__main__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/all_news(date also 01-12-2019).txt b/tests/data_for_testing/all_news(date also 01-12-2019).txt similarity index 100% rename from tests/all_news(date also 01-12-2019).txt rename to tests/data_for_testing/all_news(date also 01-12-2019).txt diff --git a/tests/news b/tests/data_for_testing/news similarity index 100% rename from tests/news rename to tests/data_for_testing/news diff --git a/tests/news.html b/tests/data_for_testing/news.html similarity index 100% rename from tests/news.html rename to tests/data_for_testing/news.html diff --git a/tests/news.pdf b/tests/data_for_testing/news.pdf similarity index 100% rename from tests/news.pdf rename to tests/data_for_testing/news.pdf diff --git a/tests/one_news_from20191201.txt b/tests/data_for_testing/one_news_from20191201.txt similarity index 100% rename from tests/one_news_from20191201.txt rename to tests/data_for_testing/one_news_from20191201.txt diff --git a/tests/print_news3.txt b/tests/print_news3.txt deleted file mode 100644 index 632b91d..0000000 --- a/tests/print_news3.txt +++ /dev/null @@ -1,22 +0,0 @@ -{ - "News": [ - { - "Feed0": { - "Feed source": "Yahoo News - Latest News & Headlines", - "Title": "Inmate wanted by ICE released on bail. He was arrested weeks later for attempted murder", - "Date": "2019-11-30 00:01:47", - "Link": "https://news.yahoo.com/inmate-wanted-ice-released-bail-000147188.html", - "Description": "A 2019 Colorado law bars law enforcement officials in the state from holding a person based only on a request from ICE.", - "Media_content": "['http://l.yimg.com/uu/api/res/1.2/NAYKLmiuVlclFbmhgJhmmQ--/YXBwaWQ9eXRhY2h5b247aD04Njt3PTEzMDs-/https://media.zenfs.com/en-us/usa_today_news_641/fad4e8fdfc4aec082a2ec8c57ab045dc']" - }, - "Feed1": { - "Feed source": "Yahoo News - Latest News & Headlines", - "Title": "Newsweek 'fires' journalist who reported Trump was golfing for Thanksgiving before he secretly travelled to Afghanistan", - "Date": "2019-12-01 14:24:00", - "Link": "https://news.yahoo.com/newsweek-fires-journalist-reported-trump-142400157.html", - "Description": "A Newsweek reporter who wrote that Donald Trump would spend Thanksgiving ‘tweeting, golfing, and more’ - hours before he touched down in a surprise visit to US troops in Afghanistan - has reportedly been fired.The visit was kept highly secret for the president’s safety, and his public schedule said he would be at his Mar-a-Lago hotel in Florida on the holiday, where he would make calls to selected military members.", - "Media_content": "['http://l1.yimg.com/uu/api/res/1.2/zcYzP.Ed7Z2ViZZL6RjfJw--/YXBwaWQ9eXRhY2h5b247aD04Njt3PTEzMDs-/https://media.zenfs.com/en/the_independent_635/218f25cad42049a1432f1d7fa1a031c8']" - } - } - ] -} \ No newline at end of file diff --git a/tests/test_rssreader.py b/tests/test_rssreader.py index c14a492..68d48d0 100644 --- a/tests/test_rssreader.py +++ b/tests/test_rssreader.py @@ -22,16 +22,16 @@ def test_parse_html(self): self.assertEqual(rss_example.parse_html(html_example), html_result) def test_get_cached_news(self): - rss_example1 = RSSReader('source', None, datetime(2019, 12, 1).date(), True, {}, False, 'tests/news') - rss_example2 = RSSReader('source', 1, datetime(2019, 12, 1).date(), False, {}, False, 'tests/news') - with open('tests/all_news(date also 01-12-2019).txt', 'r') as f: + rss_example1 = RSSReader('source', None, datetime(2019, 12, 1).date(), True, {}, False, 'tests/data_for_testing/news') + rss_example2 = RSSReader('source', 1, datetime(2019, 12, 1).date(), False, {}, False, 'tests/data_for_testing/news') + with open('tests/data_for_testing/all_news(date also 01-12-2019).txt', 'r') as f: all_news = f.read() rss_example1.get_cached_news() cached_news = '' for feed in rss_example1.news_to_print: cached_news += feed.__str__() self.assertEqual(all_news, cached_news) - with open('tests/one_news_from20191201.txt', 'r') as f: + with open('tests/data_for_testing/one_news_from20191201.txt', 'r') as f: one_news = f.read() rss_example2.get_cached_news() cached_news = '' @@ -40,8 +40,8 @@ def test_get_cached_news(self): self.assertEqual(one_news, cached_news) def test_get_all_news(self): - rss_example1 = RSSReader('source', None, datetime(2019, 12, 1).date(), True, {}, True, 'tests/news') - with open('tests/all_news(date also 01-12-2019).txt', 'r') as f: + rss_example1 = RSSReader('source', None, datetime(2019, 12, 1).date(), True, {}, True, 'tests/data_for_testing/news') + with open('tests/data_for_testing/all_news(date also 01-12-2019).txt', 'r') as f: all_news = f.read() rss_example1.get_all_news() cached_news = '' From c5d042bc57f729310269226071c02e3b97adc490 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Mon, 2 Dec 2019 00:00:22 +0300 Subject: [PATCH 36/39] Update tests --- Test_coverage.png | Bin 0 -> 27223 bytes rss_reader/converter.py | 15 ++++++++------- rss_reader/rssreader.py | 16 +++++++++++----- tests/data_for_testing/example_of_rss.xml | 2 ++ tests/test_converter.py | 9 +++++++++ tests/test_rssreader.py | 15 +++++++++++---- 6 files changed, 41 insertions(+), 16 deletions(-) create mode 100644 Test_coverage.png create mode 100644 tests/data_for_testing/example_of_rss.xml diff --git a/Test_coverage.png b/Test_coverage.png new file mode 100644 index 0000000000000000000000000000000000000000..da9443afb86f89afb2ef91959317f5d47b10fd0e GIT binary patch literal 27223 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
    HKQ zEi7LDwqFe)eq&j!@ub%LKl4w~_YFv|1FxVzjw#2t+YV+Tc&xJ=I34^U#4~BaZiAHL zv4s$}$E}V6FPf~6-oLfZq!Un(PL=W)jf!rfF1+*^qwyJd|8}NpMEw|cw5*O5tGxi? zEXtRO$eV5VJW!Vs=0kCT9mOL3$J#sd3a?M;x1%~G>*tr@(iMZkCCnxPv}YMVj2=!( zWnEL5SMJTu200Wtl(B(X{rWY9e(o}*i>sbzMbO-3W2CeVxVocD88o*T7yuksTnbD0 ziQp2qujU`q2krA2Tqfr=S5;5wdxt_}Fw#Iqk(o>E3NNRXfE0>`N$zAvYqVhrKM%~h zW$&$im8aYw?wMM%0N1Khr7dZB6#(N>!)A3an^%!_E;VUYXrH2C*O2w9ua`w?`K~pa z;CQIuIQXc)uuJhs^cynp%kMG2eLm5Xsz7}Oe661zQuwr5`d2SJvw$4mb$gU zCA|ud$a~{&yDe0x$Q&`q{HLitHf#+r0y49oQ&z6d;%C9+NIw^R%dGX$fXnkN5UiC! zC`uPle#iw8!Jn@dthEUr-Rv=Tc$qfBmnAoQ88*(N!=c?_CHReEMn0O78DfeL4TM)V z`w43y_B;jDJ~h9)!>oo~as$poeW{C68$Y_<+zk#dOG`g4{qpz*|A5a>cUQGn=%&F} zu=vOZIx(EpI4j7g*0{gVw;5B$fh3~_^OgVrh|$!$)oK^g(lQ0 ztLJ^PA=-zJiDONrCKiS8W{2D{*v`tB|#Nw<*r4vSvPs%mW63;mC)NQh=5Ta z@LLuZQpGk}2OHOV5BDdEGD3Qg)cl| zD+L!{i6AlRPS@(dZVSVTbzWU{_4c=?T-Q&YVrLWtH27mB<9W>dx;-d~yYOG`ckX&+ z!02{|dQkFtBz$m#*ZYo9&>k>Ph|QF6MHjrBUWUio3}C5&47L^Ue{K{vXDuRi=l~t0 zqnVHvezX+khdK_hbZ~)|Hd319HjW53LgFwi-)nqjQl=P`O)!j``=ckx$i{p>$_^A;aGnpgGclmcWMleB>uI1|~-Gp1u z0yrzj3vlk;G`Qj}JKS7yX1XVCdK%p5ux?Vd2_=iKcm&}A$Fl{WSwdPDBU}=b0xqr# zvSM=29~#%=_eSt_iM(Q~W4Ue*+)8#H6G{8R*Z9n)`UZ9;Q{b4pq`<9ka$yUT6?dJE??BXh%(^l!Ihp|Iv ze!R`nWZ@>P;DZDISt!a5k7V^>C8b#4_meTnn34PDz1$K>d?e$|$2yMHuc%fULe9v6 zSg`FTsPRzK5J+5w#)lp*@vHA5f=5b1MBv9pcF#zZR87;}TEUzX5l}s3;znn>heDa`ug;W67jbtBQ3`_Tg?OUZZ^aC5AM@(K` z>=bXFe}mE)bWN>*mYahoo News - Latest News & Headlineshttps://www.yahoo.com/newsThe latest news and headlines from Yahoo! News. Get breaking news stories and in-depth coverage with videos and photos.en-USCopyright (c) 2019 Yahoo! Inc. All rights reservedSun, 01 Dec 2019 15:04:03 -05005Yahoo News - Latest News & Headlineshttps://www.yahoo.com/newshttp://l.yimg.com/rz/d/yahoo_news_en-US_s_f_p_168x21_news.pngLondon Attack by Convicted Terrorist Disrupts U.K. Campaign<p><a href="https://news.yahoo.com/terrorist-kills-two-london-putting-205829309.html"><img src="http://l.yimg.com/uu/api/res/1.2/Rv4DOpfMFWNaXKQRLUHotg--/YXBwaWQ9eXRhY2h5b247aD04Njt3PTEzMDs-/https://media.zenfs.com/en/bloomberg_politics_602/dc1103d0b79d8002ce450951062ebec9" width="130" height="86" alt="London Attack by Convicted Terrorist Disrupts U.K. Campaign" align="left" title="London Attack by Convicted Terrorist Disrupts U.K. Campaign" border="0" ></a>(Bloomberg) -- The man suspected of stabbing two people to death near London Bridge had been released early from jail after a terrorism conviction, allowing an attack in the heart of the city that is disrupting the U.K.’s general election campaign two weeks before the vote.Officers shot and killed the 28-year-old attacker, who was wearing a fake suicide vest after members of the public wrestled him to the ground on London Bridge, on the edge of the city’s financial district. He was tackled by passersby moments after carrying out the attack at about 2 p.m. on Friday.Boris Johnson broke away from campaigning on Friday for the Dec. 12 election to rush back to Downing Street for a security briefing on the attack. Speaking afterward, he praised the civilians who tried to stop the suspected terrorist before police arrived, and declared that “Britain will not be cowed” by the incident.On Saturday, Johnson met with police at the site of the attack and used the opportunity to criticize the U.K.’s criminal justice system, which routinely allows for jail sentences, even for criminals committing violent crimes or acts of terrorism, to be reduced.“The practice of automatic early release, when you cut a sentence in half and let serious and violent offenders out, is not working,” he told the BBC after his meeting with police.Click Here for the Day’s Events as They HappenedThe suspect, identified by police as Usman Khan, was released from prison on parole in December 2018, the police said in a statement. Khan was one of nine people convicted in 2012 for offenses ranging from a plot to bomb the London Stock Exchange to planning a terrorist training camp. Khan originally received an indeterminate sentence, which was changed on appeal in 2013 to 16 years, the BBC reported.Johnson also praised the men who fought the attacker and pinned him to the ground on London Bridge until the police arrived. Khan began the attack while attending a conference on prisoner rehabilitation at a building called Fishmongers’ Hall next to the bridge.A Polish chef grabbed an ornamental narwhal tusk off a wall and used it to confront the attacker, while another chased Khan with a fire extinguisher, Sky News reported. A third man who aided the victims and tried to fend Khan off was a convicted murderer who was close to completing his sentence, the Telegraph reported, while another man stopped his car and helped the others force Khan to release the two knives he was carrying.“I want to pay tribute to the sheer bravery of the members of the public who went to deal with and put their own lives at risk,“ Johnson said.The first victim of the attack was identified as Jack Merritt, 25, a University of Cambridge graduate who was a coordinator of the conference that Khan attended, the BBC reported.With voters set to go to the polls on Dec. 12, the impact of such a potentially disruptive event is unclear. But the revelation that the attacker was a former convicted terrorist is likely to put pressure on the ruling Conservatives -- who traditionally view crime prevention as one of their stronger cards -- to explain why the person was allowed out of jail.Johnson also told the BBC that his government would review sentencing policies in the wake of the attack.Campaigning in the U.K.’s last election in 2017 was thrown off course by two terrorist attacks, including one in the same area of London just five days before the vote. In that incident, eight people were killed and 48 injured.In the aftermath of the 2017 attack, U.S. President Donald Trump triggered a diplomatic row when he criticized London Mayor Sadiq Khan over his response, and their spat has continued ever since. The U.S. president arrives in the U.K. next week for a NATO summit, which Johnson hopes will be a low-key visit.Trump spoke to Johnson on Saturday and expressed his condolences following the attack, White House spokesman Judd Deere said in a statement. On Friday, Johnson and Labour leader Jeremy Corbyn spoke by phone and each suspended their election campaigns in the capital for the rest of the day. Johnson’s team said he would also cancel his events on Saturday so he can focus on the security response.But speaking to television reporters just before a meeting of the government’s ‘Cobra’ crisis committee on Friday evening, Johnson highlighted his election pledge to hire extra police officers.‘Hunted Down’“Anybody involved in this crime and these attacks will be hunted down and will be brought to justice,” he said. “This country will never be cowed or divided or intimidated by this sort of attack and our British values will prevail.”After the alarm was raised on Friday lunchtime, armed police cleared cafes and shops in the London Bridge area. Officers burst into restaurants in the popular Borough Market area on the other side of the river, urging diners to leave immediately. They shouted “Out, out, out,” to people at the Black and Blue bar, and ordered customers to walk away with their hands on their heads. Nearby, police shouted to pedestrians to “run.”The police asked people to avoid the area. Mayor Sadiq Khan said Saturday on BBC’s Radio 4 that while there will be “more high visibility police officers present in London” through the weekend “there’s no reason to believe there is an increased threat” from terrorism. The bridge will remain closed for some time, he said from the site on Saturday afternoon.(Updates with Trump-Johnson phone call from 15th paragraph.)&#92;--With assistance from Tim Ross.To contact the reporters on this story: Jessica Shankleman in London at jshankleman@bloomberg.net;Greg Ritchie in London at gritchie10@bloomberg.net;Kitty Donaldson in London at kdonaldson1@bloomberg.netTo contact the editors responsible for this story: Tim Ross at tross54@bloomberg.net, James Amott, Andrew DavisFor more articles like this, please visit us at bloomberg.com©2019 Bloomberg L.P.<p><br clear="all">https://news.yahoo.com/terrorist-kills-two-london-putting-205829309.htmlSat, 30 Nov 2019 18:17:14 -0500Bloombergterrorist-kills-two-london-putting-205829309.html<p><a href="https://news.yahoo.com/terrorist-kills-two-london-putting-205829309.html"><img src="http://l.yimg.com/uu/api/res/1.2/Rv4DOpfMFWNaXKQRLUHotg--/YXBwaWQ9eXRhY2h5b247aD04Njt3PTEzMDs-/https://media.zenfs.com/en/bloomberg_politics_602/dc1103d0b79d8002ce450951062ebec9" width="130" height="86" alt="London Attack by Convicted Terrorist Disrupts U.K. Campaign" align="left" title="London Attack by Convicted Terrorist Disrupts U.K. Campaign" border="0" ></a>(Bloomberg) -- The man suspected of stabbing two people to death near London Bridge had been released early from jail after a terrorism conviction, allowing an attack in the heart of the city that is disrupting the U.K.’s general election campaign two weeks before the vote.Officers shot and killed the 28-year-old attacker, who was wearing a fake suicide vest after members of the public wrestled him to the ground on London Bridge, on the edge of the city’s financial district. He was tackled by passersby moments after carrying out the attack at about 2 p.m. on Friday.Boris Johnson broke away from campaigning on Friday for the Dec. 12 election to rush back to Downing Street for a security briefing on the attack. Speaking afterward, he praised the civilians who tried to stop the suspected terrorist before police arrived, and declared that “Britain will not be cowed” by the incident.On Saturday, Johnson met with police at the site of the attack and used the opportunity to criticize the U.K.’s criminal justice system, which routinely allows for jail sentences, even for criminals committing violent crimes or acts of terrorism, to be reduced.“The practice of automatic early release, when you cut a sentence in half and let serious and violent offenders out, is not working,” he told the BBC after his meeting with police.Click Here for the Day’s Events as They HappenedThe suspect, identified by police as Usman Khan, was released from prison on parole in December 2018, the police said in a statement. Khan was one of nine people convicted in 2012 for offenses ranging from a plot to bomb the London Stock Exchange to planning a terrorist training camp. Khan originally received an indeterminate sentence, which was changed on appeal in 2013 to 16 +years, the BBC reported.Johnson also praised the men who fought the attacker and pinned him to the ground on London Bridge until the police arrived. Khan began the attack while attending a conference on prisoner rehabilitation at a building called Fishmongers’ Hall next to the bridge.A Polish chef grabbed an ornamental narwhal tusk off a wall and used it to confront the attacker, while another chased Khan with a fire extinguisher, Sky News reported. A third man who aided the victims and tried to fend Khan off was a convicted murderer who was close to completing his sentence, the Telegraph reported, while another man stopped his car and helped the others force Khan to release the two knives he was carrying.“I want to pay tribute to the sheer bravery of the members of the public who went to deal with and put their own lives at risk,“ Johnson said.The first victim of the attack was identified as Jack Merritt, 25, a University of Cambridge graduate who was a coordinator of the conference that Khan attended, the BBC reported.With voters set to go to the polls on Dec. 12, the impact of such a potentially disruptive event is unclear. But the revelation that the attacker was a former convicted terrorist is likely to put pressure on the ruling Conservatives -- who traditionally view crime prevention as one of their stronger cards -- to explain why the person was allowed out of jail.Johnson also told the BBC that his government would review sentencing policies in the wake of the attack.Campaigning in the U.K.’s last election in 2017 was thrown off course by two terrorist attacks, including one in the same area of London just five days before the vote. In that incident, eight people were killed and 48 injured.In the aftermath of the 2017 attack, U.S. President Donald Trump triggered a diplomatic row when he criticized London Mayor Sadiq Khan over his response, and their spat has continued ever since. The U.S. president arrives in the U.K. next week for a NATO summit, which Johnson hopes will be a low-key visit.Trump spoke to Johnson on Saturday and expressed his condolences following the attack, White House spokesman Judd Deere said in a statement. On Friday, Johnson and Labour leader Jeremy Corbyn spoke by phone and each suspended their election campaigns in the capital for the rest of the day. Johnson’s team said he would also cancel his events on Saturday so he can focus on the security response.But speaking to television reporters just before a meeting of the government’s ‘Cobra’ crisis committee on Friday evening, Johnson highlighted his election pledge to hire extra police officers.‘Hunted Down’“Anybody involved in this crime and these attacks will be hunted down and will be brought to justice,” he said. “This country will never be cowed or divided or intimidated by this sort of attack and our British values will prevail.”After the alarm was raised on Friday lunchtime, armed police cleared cafes and shops in the London Bridge area. Officers burst into restaurants in the popular Borough Market area on the other side of the river, urging diners to leave immediately. They shouted “Out, out, out,” to people at the Black and Blue bar, and ordered customers to walk away with their hands on their heads. Nearby, police shouted to pedestrians to “run.”The police asked people to avoid the area. Mayor Sadiq Khan said Saturday on BBC’s Radio 4 that while there will be “more high visibility police officers present in London” through the weekend “there’s no reason to believe there is an increased threat” from terrorism. The bridge will remain closed for some time, he said from the site on Saturday afternoon.(Updates with Trump-Johnson phone call from 15th paragraph.)&#92;--With assistance from Tim Ross.To contact the reporters on this story: Jessica Shankleman in London at jshankleman@bloomberg.net;Greg Ritchie in London at gritchie10@bloomberg.net;Kitty Donaldson in London at kdonaldson1@bloomberg.netTo contact the editors responsible for this story: Tim Ross at tross54@bloomberg.net, James Amott, Andrew DavisFor more articles like this, please visit us at bloomberg.com©2019 Bloomberg L.P.<p><br clear="all"> diff --git a/tests/test_converter.py b/tests/test_converter.py index 2750466..a995546 100644 --- a/tests/test_converter.py +++ b/tests/test_converter.py @@ -1,4 +1,5 @@ import unittest +import os from rss_reader.converter import ConverterBase, PdfConverter, HtmlConverter @@ -9,6 +10,14 @@ def test_init_dir_for_images(self): def test_check_image_link(self): self.assertEqual(ConverterBase.check_image_link('htttps://linkhttp:/nestedlink'), 'http:/nestedlink') + def test_generate_filename_pdf(self): + path_to_file = os.path.join(os.getcwd(),'tests/data_for_testing/') + self.assertEqual(PdfConverter.generate_filename(path_to_file, 'news.pdf'), f'{path_to_file}1news.pdf') + + def test_generate_filename_html(self): + path_to_file = os.path.join(os.getcwd(),'tests/data_for_testing/') + self.assertEqual(PdfConverter.generate_filename(path_to_file, 'news.html'), f'{path_to_file}1news.html') + if __name__ == '__main__': unittest.main() diff --git a/tests/test_rssreader.py b/tests/test_rssreader.py index 68d48d0..22fb879 100644 --- a/tests/test_rssreader.py +++ b/tests/test_rssreader.py @@ -40,15 +40,22 @@ def test_get_cached_news(self): self.assertEqual(one_news, cached_news) def test_get_all_news(self): - rss_example1 = RSSReader('source', None, datetime(2019, 12, 1).date(), True, {}, True, 'tests/data_for_testing/news') + rss_example = RSSReader('source', None, datetime(2019, 12, 1).date(), True, {}, True, 'tests/data_for_testing/news') with open('tests/data_for_testing/all_news(date also 01-12-2019).txt', 'r') as f: all_news = f.read() - rss_example1.get_all_news() + rss_example.get_all_news() cached_news = '' - for feed in rss_example1.news_to_print: + for feed in rss_example.news_to_print: cached_news += feed.__str__() self.assertEqual(all_news, cached_news) - + def test_get_news(self): + news = RSSReader.get_news(r'tests/data_for_testing/example_of_rss.xml') + self.assertEqual(news.feed.title, 'Yahoo News - Latest News & Headlines') + self.assertEqual(news.feed.link, 'https://www.yahoo.com/news') + self.assertEqual(news.feed.subtitle, 'The latest news and headlines from Yahoo! News. Get breaking news stories and in-depth coverage with videos and photos.') + self.assertEqual(news.feed.rights, 'Copyright (c) 2019 Yahoo! Inc. All rights reserved') + + if __name__ == '__main__': unittest.main() From 19c4d125f031ed2adf1c89d3bcf07bb8cca76f3d Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Mon, 2 Dec 2019 00:40:59 +0300 Subject: [PATCH 37/39] Add readme and json schema --- README.md | 6 +++ json_schema.json | 73 ++++++++++++++++++++++++++++++++++++ rss_reader/json_formatter.py | 2 +- rss_reader/news.py | 2 +- 4 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 README.md create mode 100644 json_schema.json diff --git a/README.md b/README.md new file mode 100644 index 0000000..835463f --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +# Command-line RSS reader + +Final task for the Introduction to Python Epam courses. + +[Code coverage](Test_coverage.png) -- Code coverage percentage with tests +[Json schema](json_schema.json) -- Scheme of JSON structure diff --git a/json_schema.json b/json_schema.json new file mode 100644 index 0000000..7405ba3 --- /dev/null +++ b/json_schema.json @@ -0,0 +1,73 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "News": { + "type": "array", + "items": [ + { + "type": "object", + "properties": { + "Feed#": { + "type": "object", + "title": "Feed", + "properties": { + "Feed source": { + "type": "string", + "title": "Source ", + "description": "Source where the news came from" + }, + "Title": { + "type": "string", + "title": "Title", + "description": "Title of the feed" + }, + "Date": { + "type": "string", + "title": "Publication date", + "description": "Date when the news was published" + }, + "Link": { + "type": "string", + "title": "Link", + "description": "News link" + }, + "Description": { + "type": "string", + "title": "Description", + "description": "A description of the feed" + }, + "Media_content": { + "type": "array", + "title": "Image links", + "description": "Array of image links", + "items": [ + { + "type": "string" + "title": "URL", + "description": "URL of image" + } + ] + } + }, + "required": [ + "Feed source", + "Title", + "Date", + "Link", + "Description", + "Media_content" + ] + } + }, + "required": [ + "Feed0" + ] + } + ] + } + }, + "required": [ + "News" + ] +} diff --git a/rss_reader/json_formatter.py b/rss_reader/json_formatter.py index 6498570..9dc52f3 100644 --- a/rss_reader/json_formatter.py +++ b/rss_reader/json_formatter.py @@ -12,7 +12,7 @@ def default(self, obj: object): logging.info('Encoding news into JSON format') return {'News': [{'Feed'+str(number): - {section_name:str(feed_section) for section_name, feed_section + {section_name: feed_section for section_name, feed_section in zip(names_of_sections, feed())}\ for number, feed in enumerate(obj.news_to_convert)}]} diff --git a/rss_reader/news.py b/rss_reader/news.py index fc1b006..ceba0f0 100644 --- a/rss_reader/news.py +++ b/rss_reader/news.py @@ -37,4 +37,4 @@ def __str__(self, json=None): return str_to_print def __call__(self): - return self.feed, self.title, self.date, self.link, self.description, self.media_content + return self.feed, self.title, str(self.date), self.link, self.description, self.media_content From efa2c82f57ead3d6a9c1242bc6a63994aab9d80e Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 8 Dec 2019 02:03:26 +0300 Subject: [PATCH 38/39] font file was replaced to package directory and fix path to this file in MANIFEST and converter.py --- MANIFEST.in | 2 +- README.md | 4 ++-- rss_reader/converter.py | 2 +- .../times-new-roman.ttf | Bin 4 files changed, 4 insertions(+), 4 deletions(-) rename times-new-roman.ttf => rss_reader/times-new-roman.ttf (100%) diff --git a/MANIFEST.in b/MANIFEST.in index f16e473..a5655cd 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1 +1 @@ -include times-new-roman.ttf \ No newline at end of file +include rss_reader/times-new-roman.ttf diff --git a/README.md b/README.md index 835463f..9252ec4 100644 --- a/README.md +++ b/README.md @@ -2,5 +2,5 @@ Final task for the Introduction to Python Epam courses. -[Code coverage](Test_coverage.png) -- Code coverage percentage with tests -[Json schema](json_schema.json) -- Scheme of JSON structure +* [Code coverage](Test_coverage.png) -- Code coverage percentage with tests +* [Json schema](json_schema.json) -- Scheme of JSON structure diff --git a/rss_reader/converter.py b/rss_reader/converter.py index c97b490..333020d 100644 --- a/rss_reader/converter.py +++ b/rss_reader/converter.py @@ -140,7 +140,7 @@ def __init__(self, dir_with_images): logging.info('Initialization of PDF document') self.dir_with_images = dir_with_images super().__init__(orientation='P', unit='mm', format='A4') - self.add_font('TimesNewRoman', fname='times-new-roman.ttf', uni=True) + self.add_font('TimesNewRoman', fname='rss_reader/times-new-roman.ttf', uni=True) self.set_margins(left=30, top=20, right=10) self.set_auto_page_break(True, margin=20) self.add_page() diff --git a/times-new-roman.ttf b/rss_reader/times-new-roman.ttf similarity index 100% rename from times-new-roman.ttf rename to rss_reader/times-new-roman.ttf From fe4efabb069ba2fa8bdbe74a30ec09618e0ae011 Mon Sep 17 00:00:00 2001 From: Zavxoz Date: Sun, 8 Dec 2019 12:07:51 +0300 Subject: [PATCH 39/39] little bugfix --- rss_reader/converter.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/rss_reader/converter.py b/rss_reader/converter.py index 333020d..28f2aa5 100644 --- a/rss_reader/converter.py +++ b/rss_reader/converter.py @@ -55,7 +55,7 @@ def get_images(self, news): for feed in news: images = feed.media_content for number_of_image, image in enumerate(images): - if not image: + if not image or image.endswith('.mp4'): continue image = self.check_image_link(image) response, content = h.request(image) @@ -75,6 +75,7 @@ def check_image_link(image_link): where_sub_link = image_link.rfind('http') if where_sub_link: return image_link[where_sub_link:] + return image_link class HtmlConverter(ConverterBase): @@ -181,8 +182,8 @@ def add_description(self, description): def add_images_from_the_feed(self, id, media_content): '''Method that adds images from the news to document''' - for number_of_image in range(len(media_content)): - if not media_content[0]: + for number_of_image, image_link in enumerate(media_content): + if not image_link or image_link.endswith('.mp4'): continue self.set_x(50) self.image(path.join(self.dir_with_images, f'{id}{number_of_image}.png'), w=120, h=80)