diff --git a/.travis.yml b/.travis.yml index cbd3026..007faa7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,6 @@ language: python dist: trusty python: - 2.7 - - 3.3 - 3.4 - 3.5 - 3.6 diff --git a/AUTHORS.rst b/AUTHORS.rst index 19a672b..dc4c557 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -12,13 +12,14 @@ Thanks to the following people for their contributions to this project. * `Johnathan Jenkins `_ * `tyjak `_ * `Alexandre Kaskasoli `_ +* `Josue Ortega `_ * `mekhami `_ * `obosob `_ -* `Josue Ortega `_ * `Toby Hughes `_ * `Noah Morrison `_ * `mardiqwop `_ * `Shawn Hind `_ +* `Antoine Nguyen `_ * `JuanPablo `_ * `Robert Greener `_ * `nagracks `_ @@ -26,11 +27,10 @@ Thanks to the following people for their contributions to this project. * `Lorenz Leitner `_ * `Reshef Elisha `_ * `Ryan Reno `_ +* `jupart `_ * `afloofloo `_ * `Charles Saracco `_ -* `cmccandless `_ +* `Corey McCandless `_ +* `Danilo G. Baio `_ * `Fabio Alessandro Locati `_ -* `Hans Roman `_ -* `Marc Abramowitz `_ -* `Matthew Smith `_ -* `mskwon `_ \ No newline at end of file +* `Hans Roman `_ \ No newline at end of file diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 8c6ca47..c4de868 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -2,6 +2,8 @@ RTV Changelog ============= +.. _1.20.0: http://github.com/michael-lazar/rtv/releases/tag/v1.20.0 +.. _1.19.0: http://github.com/michael-lazar/rtv/releases/tag/v1.19.0 .. _1.18.0: http://github.com/michael-lazar/rtv/releases/tag/v1.18.0 .. _1.17.1: http://github.com/michael-lazar/rtv/releases/tag/v1.17.1 .. _1.17.0: http://github.com/michael-lazar/rtv/releases/tag/v1.17.0 @@ -30,6 +32,57 @@ RTV Changelog .. _1.2.1: http://github.com/michael-lazar/rtv/releases/tag/v1.2.1 .. _1.2: http://github.com/michael-lazar/rtv/releases/tag/v1.2 +-------------------- +1.20.0_ (2017-12-05) +-------------------- + +Features + +* Text piped to the ``$PAGER`` will now wrap on word / sentence breaks. +* New MIME parsers have been added for liveleak.com and worldstarhiphop.com. + +Bugfixes + +* Fixed a regression where text from the web browser's stdout/stderr was + being sent to the terminal window. +* Fixed crashing on startup when the terminal doesn't support colors. +* Fixed broken text formatting when running inside of emacs ``term``. + +Codebase + +* Dropped support for python 3.3 because it's no longer supported upstream + by **pytest**. The application will still install through pip but will no + longer be tested. +* Added a text logo to the README. + +-------------------- +1.19.0_ (2017-10-24) +-------------------- + +Features + +* Greatly improved loading times by using smarter rate limiting and page caching. +* The logout prompt is now visible as a popup notification. +* New MIME parsers have been added for gifs.com, giphy.com, imgtc.com, + imgflip.com, livememe.com, makeameme.org and flickr.com +* Improved mailcap examples for parsing video links with mpv. + +Bugfixes + +* Patched a backwards-incompatible Reddit API change with the comment + permalink now being returned in the response JSON. +* Fixed crashing when a comment contained exotic unicode characters like emojis. +* Removed the option to select custom sorting ranges for controversial and + top comments. +* Fixed MIME parsing for single image Imgur galleries. + +Codebase + +* Preliminary refactoring for the upcoming theme support. +* Created some utility scripts for project maintenance. +* Created a release checklist document. +* Updated the README gif images and document layout. + -------------------- 1.18.0_ (2017-09-06) -------------------- @@ -440,7 +493,8 @@ Bugfixes ----------------- Features -* Unicode support has been vastly improved and is now turned on by default. Ascii only mode can be toggled with the `--ascii` command line flag. +* Unicode support has been vastly improved and is now turned on by default. + Ascii only mode can be toggled with the `--ascii` command line flag. * Added pageup and pagedown with the `m` and `n` keys. * Support for terminal based webbrowsers such as links and w3m. * Browsing history is now persistent and stored in `$XDG_CACHE_HOME`. diff --git a/README.md b/README.md index eab373e..6dce074 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,19 @@ -# RTV (Reddit Terminal Viewer) +

+Reddit Terminal Viewer +

-RTV provides an interface to view and interact with reddit from your terminal.
-It's compatible with *most* terminal emulators on Linux and OS X. +

+RTV provides an interface to view and interact with reddit from your terminal.
+It's compatible with most terminal emulators on Linux and macOS. +

title image

-RTV is built in **python** using the **curses** library. +

+RTV is built in python using the curses library. +

--- @@ -58,7 +64,7 @@ $ pip install rtv ### Native packages -See [Repology](https://repology.org/metapackage/rtv/information) for an up-to-date list of supported packages: +See [Repology](https://repology.org/metapackage/rtv/packages) for an up-to-date list of supported packages: ```bash # macOS @@ -67,11 +73,11 @@ $ brew install rtv # Debian 9+, Ubuntu 17.04+ $ apt install rtv -# Fedora 24+ -$ yum install rtv - # Arch -$ yaourt -S rtv +$ pacaur -S rtv + +# Nix +$ nix-env -i rtv ``` ## Usage diff --git a/requirements.txt b/requirements.txt index f29662f..e0ec043 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,6 +4,6 @@ kitchen==1.2.4 mailcap-fix==0.1.3 requests==2.11.0 six==1.10.0 -pytest==3.0.7 +pytest==3.2.3 vcrpy==1.10.5 pylint==1.6.5 \ No newline at end of file diff --git a/resources/logo.png b/resources/logo.png new file mode 100644 index 0000000..bbd2989 Binary files /dev/null and b/resources/logo.png differ diff --git a/resources/logo_black.png b/resources/logo_black.png new file mode 100644 index 0000000..8cdcd31 Binary files /dev/null and b/resources/logo_black.png differ diff --git a/rtv.1 b/rtv.1 index 9bec049..3cd8a02 100644 --- a/rtv.1 +++ b/rtv.1 @@ -1,4 +1,4 @@ -.TH "RTV" "1" "September 06, 2017" "Version 1.18.0" "Usage and Commands" +.TH "RTV" "1" "December 05, 2017" "Version 1.20.0" "Usage and Commands" .SH NAME RTV - Reddit Terminal Viewer .SH SYNOPSIS @@ -68,7 +68,7 @@ Press \fB?\fR to open the help screen. .TP .BR $XDG_CONFIG_HOME/rtv/rtv.cfg The configuration file can be used to customize default program settings, see -README.rst for more information. +README.md for more information. .TP .BR $XDG_CONFIG_HOME/rtv/refresh-token After you login to reddit, your most recent OAuth refresh token will be stored diff --git a/rtv/__version__.py b/rtv/__version__.py index 4049e56..5e44d16 100644 --- a/rtv/__version__.py +++ b/rtv/__version__.py @@ -1,4 +1,4 @@ # -*- coding: utf-8 -*- from __future__ import unicode_literals -__version__ = '1.18.0' +__version__ = '1.20.0' diff --git a/rtv/mime_parsers.py b/rtv/mime_parsers.py index e70515d..a2d8e78 100644 --- a/rtv/mime_parsers.py +++ b/rtv/mime_parsers.py @@ -55,8 +55,10 @@ class OpenGraphMIMEParser(BaseMIMEParser): def get_mimetype(url): page = requests.get(url) soup = BeautifulSoup(page.content, 'html.parser') - for og_type in ['og:video:secure_url', 'og:video', 'og:image']: - tag = soup.find('meta', attrs={'property': og_type}) + for og_type in ['video', 'image']: + tag = soup.find('meta', + attrs={'property':'og:' + og_type + ':secure_url'}) or \ + soup.find('meta', attrs={'property': 'og:' + og_type}) if tag: return BaseMIMEParser.get_mimetype(tag.get('content')) return url, None @@ -206,11 +208,14 @@ class ImgurApiMIMEParser(BaseMIMEParser): _logger.warning('Imgur API failure, resp %s', r.json()) return cls.fallback(url, domain) - if 'images' in data: + if 'images' in data and len(data['images']) > 1: # TODO: handle imgur albums with mixed content, i.e. jpeg and gifv link = ' '.join([d['link'] for d in data['images'] if not d['animated']]) mime = 'image/x-imgur-album' else: + data = data['images'][0] if 'images' in data else data + # this handles single image galleries + link = data['mp4'] if data['animated'] else data['link'] mime = 'video/mp4' if data['animated'] else data['type'] @@ -371,11 +376,16 @@ class LiveleakMIMEParser(BaseMIMEParser): if source: urls.append((source.get('src'), source.get('type'))) # TODO: Handle pages with multiple videos - # TODO: Handle pages with youtube embeds if urls: return urls[0] else: - return url, None + iframe = soup.find_all(lambda t: t.name == 'iframe' and + 'youtube.com' in t['src']) + if iframe: + return YoutubeMIMEParser.get_mimetype(iframe[0]['src'].strip('/')) + else: + return url, None + class ClippitUserMIMEParser(BaseMIMEParser): """ @@ -391,6 +401,85 @@ class ClippitUserMIMEParser(BaseMIMEParser): return tag.get(quality[0]), 'video/mp4' +class GifsMIMEParser(OpenGraphMIMEParser): + """ + Gifs.com uses the Open Graph protocol + """ + pattern = re.compile(r'https?://(www\.)?gifs\.com/gif/.+$') + + +class GiphyMIMEParser(OpenGraphMIMEParser): + """ + Giphy.com uses the Open Graph protocol + """ + pattern = re.compile(r'https?://(www\.)?giphy\.com/gifs/.+$') + + +class ImgtcMIMEParser(OpenGraphMIMEParser): + """ + imgtc.com uses the Open Graph protocol + """ + pattern = re.compile(r'https?://(www\.)?imgtc\.com/w/.+$') + + +class ImgflipMIMEParser(OpenGraphMIMEParser): + """ + imgflip.com uses the Open Graph protocol + """ + pattern = re.compile(r'https?://(www\.)?imgflip\.com/i/.+$') + + +class LivememeMIMEParser(OpenGraphMIMEParser): + """ + livememe.com uses the Open Graph protocol + """ + pattern = re.compile(r'https?://(www\.)?livememe\.com/[^.]+$') + + +class MakeamemeMIMEParser(OpenGraphMIMEParser): + """ + makeameme.com uses the Open Graph protocol + """ + pattern = re.compile(r'https?://(www\.)?makeameme\.org/meme/.+$') + + +class FlickrMIMEParser(OpenGraphMIMEParser): + """ + Flickr uses the Open Graph protocol + """ + pattern = re.compile(r'https?://(www\.)?flickr\.com/photos/[^/]+/[^/]+/?$') + # TODO: handle albums/photosets (https://www.flickr.com/services/api) + + +class WorldStarHipHopMIMEParser(BaseMIMEParser): + """ + + Sometimes only one video source is available + """ + pattern = re.compile(r'https?://((www|m)\.)?worldstarhiphop\.com/videos/video.php\?v=\w+$') + + @staticmethod + def get_mimetype(url): + page = requests.get(url) + soup = BeautifulSoup(page.content, 'html.parser') + + source = soup.find_all(lambda t: t.name == 'source' and + t['src'] and t['type'] == 'video/mp4') + if source: + return source[0]['src'], 'video/mp4' + else: + iframe = soup.find_all(lambda t: t.name == 'iframe' and + 'youtube.com' in t['src']) + if iframe: + return YoutubeMIMEParser.get_mimetype(iframe[0]['src']) + else: + return url, None + + + # Parsers should be listed in the order they will be checked parsers = [ ClippitUserMIMEParser, @@ -405,5 +494,13 @@ parsers = [ YoutubeMIMEParser, LiveleakMIMEParser, TwitchMIMEParser, + FlickrMIMEParser, + GifsMIMEParser, + GiphyMIMEParser, + ImgtcMIMEParser, + ImgflipMIMEParser, + LivememeMIMEParser, + MakeamemeMIMEParser, + WorldStarHipHopMIMEParser, GifvMIMEParser, BaseMIMEParser] diff --git a/rtv/objects.py b/rtv/objects.py index 262ccd1..6da21e8 100644 --- a/rtv/objects.py +++ b/rtv/objects.py @@ -33,6 +33,15 @@ def patch_webbrowser(): https://bugs.python.org/issue31348 """ + # Add the suckless.org surf browser, which isn't in the python + # standard library + webbrowser.register('surf', None, webbrowser.BackgroundBrowser('surf')) + + # Fix the opera browser, see https://github.com/michael-lazar/rtv/issues/476. + # By default, opera will open a new tab in the current window, which is + # what we want to do anyway. + webbrowser.register('opera', None, webbrowser.BackgroundBrowser('opera')) + if sys.platform != 'darwin' or 'BROWSER' not in os.environ: return @@ -83,6 +92,7 @@ def curses_session(): # return from C start_color() is ignorable. try: curses.start_color() + curses.use_default_colors() except: _logger.warning('Curses failed to initialize color support') @@ -92,9 +102,6 @@ def curses_session(): except: _logger.warning('Curses failed to initialize the cursor mode') - # Assign the terminal's default (background) color to code -1 - curses.use_default_colors() - yield stdscr finally: diff --git a/rtv/packages/__init__.py b/rtv/packages/__init__.py index 7594fb4..91663bf 100644 --- a/rtv/packages/__init__.py +++ b/rtv/packages/__init__.py @@ -10,7 +10,7 @@ from __future__ import absolute_import import sys -__praw_hash__ = 'ad0dbcf49d5937ffd39e13e45ebcb404b00c582a' +__praw_hash__ = 'f0373b788356e212be184590741383cc4747a682' __praw_bundled__ = True diff --git a/rtv/packages/praw/__init__.py b/rtv/packages/praw/__init__.py index 0c12d9c..f2215fc 100644 --- a/rtv/packages/praw/__init__.py +++ b/rtv/packages/praw/__init__.py @@ -2310,13 +2310,17 @@ class MultiredditMixin(AuthenticatedReddit): """ url = self.config['multireddit_about'].format(user=self.user.name, multi=name) - self.http.headers['x-modhash'] = self.modhash + + # The modhash isn't necessary for OAuth requests + if not self._use_oauth: + self.http.headers['x-modhash'] = self.modhash + try: self.request(url, data={}, method='DELETE', *args, **kwargs) finally: - del self.http.headers['x-modhash'] + if not self._use_oauth: + del self.http.headers['x-modhash'] - @decorators.restrict_access(scope='subscribe') def edit_multireddit(self, *args, **kwargs): """Edit a multireddit, or create one if it doesn't already exist. diff --git a/rtv/packages/praw/objects.py b/rtv/packages/praw/objects.py index a4f94f5..b5cd607 100644 --- a/rtv/packages/praw/objects.py +++ b/rtv/packages/praw/objects.py @@ -115,6 +115,13 @@ class RedditContentObject(object): """Set the `name` attribute to `value.""" if value and name == 'subreddit' and isinstance(value, six.string_types): value = Subreddit(self.reddit_session, value, fetch=False) + elif name == 'permalink' and isinstance(self, Comment): + # The Reddit API now returns the permalink field for comments. This + # will unfortunately break PRAW because permalink is a @property on the + # Comment object. I need to investigate if the property can be removed, + # for now this is a quick hack to get things working again. + # https://github.com/michael-lazar/rtv/issues/462 + return elif value and name in REDDITOR_KEYS: if isinstance(value, bool): pass @@ -1653,6 +1660,13 @@ class Subreddit(Messageable, Refreshable): class Multireddit(Refreshable): """A class for users' Multireddits.""" + # 2017-11-13 + # Several of the @restrict_access decorators have been removed here, + # because they were duplicated in the corresponding reddit_session + # methods and raised assertion errors. The is the same category of + # bug as this issue: + # https://github.com/praw-dev/praw/issues/477 + # Generic listing selectors get_controversial = _get_sorter('controversial') get_hot = _get_sorter('') @@ -1687,6 +1701,15 @@ class Multireddit(Refreshable): def __init__(self, reddit_session, author=None, name=None, json_dict=None, fetch=False, **kwargs): """Construct an instance of the Multireddit object.""" + + # When get_my_multireddits is called, we extract the author + # and multireddit name from the path. A trailing forward + # slash was recently added to the path string in the API + # response, the needs to be removed to fix the code. + # path = "/user/redditor/m/multi/" + if json_dict and json_dict['path']: + json_dict['path'] = json_dict['path'].rstrip('/') + author = six.text_type(author) if author \ else json_dict['path'].split('/')[-3] if not name: @@ -1735,16 +1758,19 @@ class Multireddit(Refreshable): url = self.reddit_session.config['multireddit_add'].format( user=self._author, multi=self.name, subreddit=subreddit) method = 'DELETE' if _delete else 'PUT' - self.reddit_session.http.headers['x-modhash'] = \ - self.reddit_session.modhash + # The modhash isn't necessary for OAuth requests + if not self.reddit_session._use_oauth: + self.reddit_session.http.headers['x-modhash'] = \ + self.reddit_session.modhash data = {'model': dumps({'name': subreddit})} try: self.reddit_session.request(url, data=data, method=method, *args, **kwargs) finally: - del self.reddit_session.http.headers['x-modhash'] + # The modhash isn't necessary for OAuth requests + if not self.reddit_session._use_oauth: + del self.reddit_session.http.headers['x-modhash'] - @restrict_access(scope='subscribe') def copy(self, to_name): """Copy this multireddit. @@ -1756,7 +1782,6 @@ class Multireddit(Refreshable): return self.reddit_session.copy_multireddit(self._author, self.name, to_name) - @restrict_access(scope='subscribe') def delete(self): """Delete this multireddit. @@ -1767,7 +1792,6 @@ class Multireddit(Refreshable): """ return self.reddit_session.delete_multireddit(self.name) - @restrict_access(scope='subscribe') def edit(self, *args, **kwargs): """Edit this multireddit. @@ -1779,12 +1803,10 @@ class Multireddit(Refreshable): return self.reddit_session.edit_multireddit(name=self.name, *args, **kwargs) - @restrict_access(scope='subscribe') def remove_subreddit(self, subreddit, *args, **kwargs): """Remove a subreddit from the user's multireddit.""" return self.add_subreddit(subreddit, True, *args, **kwargs) - @restrict_access(scope='subscribe') def rename(self, new_name, *args, **kwargs): """Rename this multireddit. diff --git a/rtv/page.py b/rtv/page.py index 2130b0a..d106e58 100644 --- a/rtv/page.py +++ b/rtv/page.py @@ -391,7 +391,9 @@ class Page(object): else: title = sub_name - if os.getenv('DISPLAY'): + # Setting the terminal title will break emacs or systems without + # X window. + if os.getenv('DISPLAY') and not os.getenv('INSIDE_EMACS'): title += ' - rtv {0}'.format(__version__) title = self.term.clean(title) if six.PY3: diff --git a/rtv/submission_page.py b/rtv/submission_page.py index 3e23c22..d3f8080 100644 --- a/rtv/submission_page.py +++ b/rtv/submission_page.py @@ -155,13 +155,15 @@ class SubmissionPage(Page): Open the selected item with the system's pager """ + n_rows, n_cols = self.term.stdscr.getmaxyx() + data = self.get_selected_item() if data['type'] == 'Submission': text = '\n\n'.join((data['permalink'], data['text'])) - self.term.open_pager(text) + self.term.open_pager(text, wrap=n_cols) elif data['type'] == 'Comment': text = '\n\n'.join((data['permalink'], data['body'])) - self.term.open_pager(text) + self.term.open_pager(text, wrap=n_cols) else: self.term.flash() diff --git a/rtv/templates/mailcap b/rtv/templates/mailcap index 2dc131a..a0907c9 100644 --- a/rtv/templates/mailcap +++ b/rtv/templates/mailcap @@ -26,15 +26,15 @@ # Note that rtv returns a list of urls for imgur albums, so we don't put quotes # around the `%s` image/x-imgur-album; feh -g 640x480 %s; test=test -n "$DISPLAY" +image/gif; mpv '%s' --autofit 640x480 --loop=inf; test=test -n "$DISPLAY" image/*; feh -g 640x480 '%s'; test=test -n "$DISPLAY" # Youtube videos are assigned a custom mime-type, which can be streamed with # vlc or youtube-dl. video/x-youtube; vlc '%s' --width 640 --height 480; test=test -n "$DISPLAY" -video/x-youtube; youtube-dl -q -o - '%s' | mpv - --autofit 640x480; test=test -n "$DISPLAY" +video/x-youtube; mpv --ytdl-format=best '%s' --autofit 640x480; test=test -n "$DISPLAY" # Mpv is a simple and effective video streamer -video/webm; mpv '%s' --autofit 640x480 --loop=inf; test=test -n "$DISPLAY" video/*; mpv '%s' --autofit 640x480 --loop=inf; test=test -n "$DISPLAY" ############################################################################### diff --git a/rtv/terminal.py b/rtv/terminal.py index faf1e63..f2dc9b4 100644 --- a/rtv/terminal.py +++ b/rtv/terminal.py @@ -20,7 +20,7 @@ from tempfile import NamedTemporaryFile import six from kitchen.text.display import textual_width_chop -from . import exceptions, mime_parsers +from . import exceptions, mime_parsers, content from .theme import Theme, ThemeList from .objects import LoadScreen @@ -269,9 +269,13 @@ class Terminal(object): # Trying to draw outside of the screen bounds return - text = self.clean(text, n_cols) - params = [] if attr is None else [attr] - window.addstr(row, col, text, *params) + try: + text = self.clean(text, n_cols) + params = [] if attr is None else [attr] + window.addstr(row, col, text, *params) + except curses.error as e: + _logger.warning('add_line raised an exception') + _logger.exception(str(e)) @staticmethod def add_space(window): @@ -508,9 +512,21 @@ class Terminal(object): # can re-use the webbrowser instance that has been patched # by RTV. It's also safer because it doesn't inject # python code through the command line. - null = open(os.devnull, 'ab+', 0) - sys.stdout, sys.stderr = null, null - webbrowser.open_new_tab(url) + + # Surpress stdout/stderr from the browser, see + # https://stackoverflow.com/questions/2323080. We can't + # depend on replacing sys.stdout & sys.stderr because + # webbrowser uses Popen(). + stdout, stderr = os.dup(1), os.dup(2) + null = os.open(os.devnull, os.O_RDWR) + try: + os.dup2(null, 1) + os.dup2(null, 2) + webbrowser.open_new_tab(url) + finally: + null.close() + os.dup2(stdout, 1) + os.dup2(stderr, 2) p = Process(target=open_url_silent, args=(url,)) p.start() @@ -535,7 +551,7 @@ class Terminal(object): with self.suspend(): webbrowser.open_new_tab(url) - def open_pager(self, data): + def open_pager(self, data, wrap=None): """ View a long block of text using the system's default pager. @@ -544,6 +560,11 @@ class Terminal(object): pager = os.getenv('PAGER') or 'less' command = shlex.split(pager) + + if wrap: + data_lines = content.Content.wrap_text(data, wrap) + data = '\n'.join(data_lines) + try: with self.suspend(): _logger.debug('Running command: %s', command) diff --git a/setup.py b/setup.py index e4f72b1..37827d8 100644 --- a/setup.py +++ b/setup.py @@ -74,7 +74,9 @@ setuptools.setup( 'Operating System :: POSIX', 'Natural Language :: English', 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', 'Topic :: Terminals', 'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Message Boards', 'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: News/Diary', diff --git a/tests/cassettes/test_imgur_fallback.yaml b/tests/cassettes/test_imgur_fallback.yaml index d82f313..48af462 100644 --- a/tests/cassettes/test_imgur_fallback.yaml +++ b/tests/cassettes/test_imgur_fallback.yaml @@ -5,7 +5,7 @@ interactions: Accept: ['*/*'] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python-requests/2.15.1] + User-Agent: [python-requests/2.14.2] method: GET uri: http://imgur.com/yW0kbMi response: @@ -15,14 +15,14 @@ interactions: Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] Connection: [close] Content-Length: ['0'] - Date: ['Thu, 14 Sep 2017 04:40:21 GMT'] + Date: ['Sat, 07 Oct 2017 01:01:21 GMT'] Location: ['https://imgur.com/yW0kbMi'] Retry-After: ['0'] Server: [cat factory 1.0] X-Cache: [HIT] X-Cache-Hits: ['0'] X-Frame-Options: [DENY] - X-Served-By: [cache-dfw1821-DFW] + X-Served-By: [cache-atl6223-ATL] status: {code: 301, message: Moved Permanently} - request: body: null @@ -30,7 +30,7 @@ interactions: Accept: ['*/*'] Accept-Encoding: ['gzip, deflate'] Connection: [keep-alive] - User-Agent: [python-requests/2.15.1] + User-Agent: [python-requests/2.14.2] method: GET uri: https://imgur.com/yW0kbMi response: @@ -44,7 +44,7 @@ interactions: gifs, memes, pictures, new pictures, reaction gifs, share photos, share images, latest images, funny, cute, visual storytelling, imgur\" />\n \n \n\n \ \n\n \n \n \n \n \n \n \n \n \n \n \ \n \n - \ \n\n \n \n\n \n \n\n\n \n \n \n \n \n\n\n\n \n\n\n
\n \n\n
\n\n \n \ \n \n \n\n
\n \ \n\n
\n\n \n\n + id=\"sid\" type=\"hidden\" value=\"7446bb35af059181971ad2c6d121f496\" />\n\n \
\n\t
\n\t\t

\n\t\t\n\t\t
\n\n\t\t
\n\t\t\t
\n\t\t\t\t\nif(typeof jQuery === 'undefined') {\n document.write('\n\n\n\n\n \n\n - \ \n \n\n + type=\"text/javascript\" src=\"//s.imgur.com/min/react15.js?1507313072\">\n\n + \ \n \n\n \ \n\n \n\n \n\n\n + type=\"text/javascript\" src=\"//s.imgur.com/min/advertising.js?1507313072\">\n\n\n \ \n - \ \n\n + \ \n\n \ \n\n \n \n\n \n \n\n \n\n \n\n\n\n\n\n\n \n\n\n\n\n \n - \ \n \n + \ \n \n \ \n\n\n
\n \n\n
\n
\n
\n
\n \
\n
\n \n\n
\n \ \n\n
\n\n \n\n + id=\"sid\" type=\"hidden\" value=\"7446bb35af059181971ad2c6d121f496\" />\n\n \
\n\t
\n\t\t

\n\t\t\n\t\t
\n\n\t\t
\n\t\t\t
\n\t\t\t\t\nif(typeof jQuery === 'undefined') {\n document.write('\n\n\n\n\n \n\n - \ \n \n\n + type=\"text/javascript\" src=\"//s.imgur.com/min/react15.js?1507313072\">\n\n + \ \n \n\n \ \n\n \n\n \n\n\n + type=\"text/javascript\" src=\"//s.imgur.com/min/advertising.js?1507313072\">\n\n\n \ \n - \ \n\n + \ \n\n \ \n\n \n \n\n \n \n\n \n\n \n\n\n\n\n\n\n \n\n\n\n\n \n \n \n \n\n\n\n \n\n\n
\n \n\n
\n
\n
\n \ \n @@ -1206,22 +1185,72 @@ interactions: post-pad\">\n
\n
\n \n\n \
\n\n \n\n \ \n \n \n - \ \n \n - \ \n\n
\n
\n \n\n \n \n\n \n \"\"\n \"\"\n \n + \ \n \n \n
\n\n \n\n + \
\n \n\n \n + \
\n\n \n \n\n + \ \n \n \n + \ \n
\n \n + \ \n \n \n + \ \n\n
\n + \
\n + \ \n\n \n + \ \"\"\n \n \n + \ \n \n
\n\n \n\n
\n + \ \n\n \n
\n\n + \ \n \n\n \n \n \n + \ \n
\n \n + \ \n \n \n + \ \n\n
\n + \
\n + \ \n\n \n + \ \"\"\n \n \n + \ \n \n
\n\n \n\n
\n + \ \n\n \n
\n\n + \ \n \n\n \n \n \n + \ \n
\n \n + \ \n \n \n + \ \n \n\n + \
\n
\n \n\n \"\"\n \n \n
\n\n \n\n \
\n \n\n \n \
\n\n \n \n\n + itemprop=\"datePublished\" content=\"2017-10-06\">\n \n\n + \ \n \n \n \ \n
\n \n \ \n\n \n\n \n \ \n\n \n
\n\n @@ -1269,7 +1298,7 @@ interactions: icon-take-me-up\">
\n
\n
\n \
\n
\n
\n\n
\n \
\n\n
\n\n \n\n + id=\"sid\" type=\"hidden\" value=\"7446bb35af059181971ad2c6d121f496\" />\n\n \
\n\t
\n\t\t

\n\t\t\n\t\t
\n\n\t\t
\n\t\t\t
\n\t\t\t\t\nif(typeof jQuery === 'undefined') {\n document.write('\n\n\n\n\n \n\n - \ \n \n\n + type=\"text/javascript\" src=\"//s.imgur.com/min/react15.js?1507313072\">\n\n + \ \n \n\n \ \n\n \n\n \n\n\n + type=\"text/javascript\" src=\"//s.imgur.com/min/advertising.js?1507313072\">\n\n\n \ \n - \ \n\n + \ \n\n \ \n\n \n \n\n \n \n\n \n\n \n\n\n\n\n\n\n \n\n\n\n\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nSafe Mode: On\r\n
\r\n\t
\r\n\t\t\"\"/\r\n\r\n\t\t
\r\n\t\t\t

\r\n\t\t\t\t + \ Create Account | \r\n\t\t\t\tLog in | \r\n  \r\n \r\n \t\t\t

\r\n
\r\n\t\t\t\r\n\r\n\t\t\t
\r\n
\r\n\t\t\t\t\r\n\t\t\t\t\r\n
\r\n\t\t + \
\r\n
\r\n\r\n\t\t
\r\n\r\n\t\t\t\t\t\r\n\t
\r\n
\r\n
\r\n
\r\n\t
\r\n\t\t
+ \
\r\n \r\n
\r\n \r\n + \
\r\n
\r\n
Trump + Toys with Reporters at Press Conference Today
\r\n
\r\n + \
\r\n
\"\" Part of channel(s): Presidency of Donald Trump (current + event)
\r\n

The MSM is circling + the drain and can't be done with fast enough!

\r\n\t\t
\r\n + \ \r\n
\r\n \r\n
+ \ \r\n\r\n + \
\r\n
\r\n
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t + \
\r\n
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tAdded: + Feb-17-2017 Occurred On: Feb-17-2017 + \
By: TurnOffTelevision + \
In:
Politics + \
Tags: No, + More, Fake, News
Location: United States (load + item map)
Views: + 18845 | Comments: 292 | Votes: 25\r\n + | Favorites: 1 + | Shared: 38 | Updates: 0 | Times + used in channels: 3 + \
\r\n \r\n
\r\n + \
\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n
\r\n\r\n
\r\n\r\n + \ \r\n + \ Direct link:


\r\n Direct + link without comments:
\r\n
\r\n
+ \r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n + \
\r\n \r\n
\r\n \r\n + \
\r\n \r\n
\r\n \r\n\r\n + \
You need to be registered in order to add comments! + Register HERE
\r\n + \ \r\n \r\n\r\n \r\n
\r\n + \ \r\n
\r\n + \
\r\n\t\r\n \r\n \r\n

\r\n\r\n Advertisement below\r\n
\r\n
\r\n\r\n\r\n
\r\n + \
\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n + \ \r\n\r\n\r\n
Liveleak + on Facebook
\r\nLIKE Liveleak.com

\r\n
Items
\r\n
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
    \r\n + \ \t\t\t\t\t\t\t
  • Related
  • \r\n \t\t\t\t\t\t\t
  • User
  • \r\n + \ \t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t + \
\r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t\t + \r\n\t\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n \t\t
\r\n
Advertisers
\r\n
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t
\r\n\t\t\t\t

\r\n Advertise on Liveleak
\r\n + \ Liveleak Forums
\r\n TomoNews - Animated News
\r\n + \

\r\n
\r\n
+ \r\n \t\t
\r\n\t
\r\n
\r\n
\r\n\t
\r\n\t\t\r\n\r\n\t\t\"Web\r\n\t\tBACK + TO TOP\r\n\r\n\t
\r\n
\r\n \r\n + \ \r\n\r\n + \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"} + headers: + Access-Control-Allow-Origin: ['*'] + Cache-Control: ['no-store, no-cache, must-revalidate, post-check=0, pre-check=0'] + Connection: [keep-alive] + Content-Type: [text/html; charset=UTF-8] + Date: ['Sun, 29 Oct 2017 13:56:26 GMT'] + Expires: ['Thu, 19 Nov 1981 08:52:00 GMT'] + Pragma: [no-cache] + Server: [nginx/1.6.1] + Set-Cookie: [PHPSESSID=c47884aaee715fa322e3e3952ac01ded; path=/; domain=.liveleak.com, + 'liveleak_safe_mode=1; expires=Mon, 29-Oct-2018 13:56:26 GMT; Max-Age=31536000; + path=/; domain=.liveleak.com; httponly', 'liveleak_use_old_player=1; expires=Mon, + 29-Oct-2018 13:56:26 GMT; Max-Age=31536000; path=/; domain=.liveleak.com; + httponly'] + X-Powered-By: [PHP/5.6.30] + status: {code: 200, message: OK} +version: 1 diff --git a/tests/cassettes/test_parser[livememe].yaml b/tests/cassettes/test_parser[livememe].yaml new file mode 100644 index 0000000..030c91c --- /dev/null +++ b/tests/cassettes/test_parser[livememe].yaml @@ -0,0 +1,500 @@ +interactions: +- request: + body: null + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + User-Agent: [python-requests/2.14.2] + method: GET + uri: http://www.livememe.com/v67cxy9 + response: + body: + string: !!binary | + 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 + headers: + CF-RAY: [3ac23c6373435522-ORD] + Cache-Control: [no-cache] + Connection: [keep-alive] + Content-Encoding: [gzip] + Content-Type: [text/html;charset=UTF-8] + Date: ['Wed, 11 Oct 2017 13:41:15 GMT'] + Last-Modified: ['Wed, 11 Oct 2017 13:41:15 GMT'] + Server: [cloudflare-nginx] + Set-Cookie: ['__cfduid=d0c2baf2bab7367fcaa619ebaf870d5661507729275; expires=Thu, + 11-Oct-18 13:41:15 GMT; path=/; domain=.livememe.com; HttpOnly'] + Vary: [Accept-Encoding] + status: {code: 200, message: OK} +version: 1 diff --git a/tests/cassettes/test_parser[makeameme].yaml b/tests/cassettes/test_parser[makeameme].yaml new file mode 100644 index 0000000..3e40ffe --- /dev/null +++ b/tests/cassettes/test_parser[makeameme].yaml @@ -0,0 +1,298 @@ +interactions: +- request: + body: null + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + User-Agent: [python-requests/2.14.2] + method: GET + uri: http://makeameme.org/meme/joined-reddit-for + response: + body: {string: ''} + headers: + CF-RAY: [3ac23caa60482597-ORD] + Cache-Control: [max-age=3600] + Connection: [keep-alive] + Date: ['Wed, 11 Oct 2017 13:41:26 GMT'] + Expires: ['Wed, 11 Oct 2017 14:41:26 GMT'] + Location: ['https://makeameme.org/meme/joined-reddit-for'] + Server: [cloudflare-nginx] + status: {code: 301, message: Moved Permanently} +- request: + body: null + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + User-Agent: [python-requests/2.14.2] + method: GET + uri: https://makeameme.org/meme/joined-reddit-for + response: + body: + string: !!binary | + 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 + YX7/AwAA//8DAEFF6QAKtgAA + headers: + CF-RAY: [3ac23cab5f8b718b-ORD] + Cache-Control: ['max-age=0, must-revalidate, no-cache, no-store'] + Connection: [keep-alive] + Content-Encoding: [gzip] + Content-Type: [text/html; charset=UTF-8] + Date: ['Wed, 11 Oct 2017 13:41:29 GMT'] + Display: [pub_site_sol] + Expires: ['Tue, 10 Oct 2017 13:41:29 GMT'] + PageSpeed: ['off'] + Pragma: [no-cache] + Response: ['200'] + Server: [cloudflare-nginx] + Set-Cookie: ['__cfduid=dacca9a448a3d8f87c6692ad3e068be921507729286; expires=Thu, + 11-Oct-18 13:41:26 GMT; path=/; domain=.makeameme.org; HttpOnly', 'PHPSESSID=0q0tt7ho7agq71bdqbbqucdb67; + expires=Sat, 19-Jun-2049 15:28:07 GMT; Max-Age=999999999; path=/', 'ezoadgid_45140=-1; + Path=/; Domain=makeameme.org; Expires=Wed, 11 Oct 2017 14:11:28 UTC', 'ez_wrap=0; + Path=/; Domain=makeameme.org; Expires=Wed, 11 Oct 2017 14:41:28 UTC', 'ezouid_45140=958380662; + Path=/; Domain=makeameme.org; Expires=Tue, 01 Oct 2019 13:41:28 UTC', 'ezoref_45140=; + Path=/; Domain=makeameme.org; Expires=Wed, 11 Oct 2017 15:41:28 UTC', 'lp_45140=https://makeameme.org/meme/joined-reddit-for; + Path=/; Domain=makeameme.org; Expires=Wed, 11 Oct 2017 15:41:28 UTC', 'ezoab_45140=mod6-; + Path=/; Domain=makeameme.org; Expires=Wed, 11 Oct 2017 14:11:28 UTC', 'active_template::45140=pub_site; + Path=/; Domain=makeameme.org; Expires=Fri, 13 Oct 2017 13:41:28 UTC', 'ezovid_45140=1370788363; + Path=/; Domain=makeameme.org; Expires=Wed, 11 Oct 2017 14:11:29 UTC', 'ezovuuid_45140=de5ff64e-0590-436c-7be9-dd04dd2ca674; + Path=/; Domain=makeameme.org; Expires=Wed, 11 Oct 2017 14:11:29 UTC', 'ezopvc_45140=1; + Path=/; Domain=makeameme.org; Expires=Wed, 11 Oct 2017 16:41:29 UTC'] + Vary: ['Accept-Encoding,X-APP-JSON'] + X-Clacks-Overhead: [GNU Terry Pratchett] + X-Middleton-Display: [pub_site_sol] + X-Middleton-Response: ['200'] + X-Sol: [pub_site] + status: {code: 200, message: OK} +version: 1 diff --git a/tests/cassettes/test_parser[worldstar_1].yaml b/tests/cassettes/test_parser[worldstar_1].yaml new file mode 100644 index 0000000..7ce94d6 --- /dev/null +++ b/tests/cassettes/test_parser[worldstar_1].yaml @@ -0,0 +1,199 @@ +interactions: +- request: + body: null + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + User-Agent: [python-requests/2.14.2] + method: GET + uri: http://www.worldstarhiphop.com/videos/video.php?v=wshh09DUN5MeDK2El4sO + response: + body: + string: !!binary | + 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 + e5l/ASHf/LIHogAA + headers: + Accept-Ranges: [bytes] + Age: ['255'] + Connection: [keep-alive] + Content-Encoding: [gzip] + Content-Length: ['9759'] + Content-Type: [text/html] + Date: ['Sun, 29 Oct 2017 12:20:09 GMT'] + Server: [Apache] + Vary: [Accept-Encoding] + Via: [1.1 varnish] + X-Varnish: [2618724991 2618705315] + status: {code: 200, message: OK} +version: 1 diff --git a/tests/cassettes/test_parser[worldstar_2].yaml b/tests/cassettes/test_parser[worldstar_2].yaml new file mode 100644 index 0000000..968d5aa --- /dev/null +++ b/tests/cassettes/test_parser[worldstar_2].yaml @@ -0,0 +1,174 @@ +interactions: +- request: + body: null + headers: + Accept: ['*/*'] + Accept-Encoding: ['gzip, deflate'] + Connection: [keep-alive] + User-Agent: [python-requests/2.14.2] + method: GET + uri: http://www.worldstarhiphop.com/videos/video.php?v=wshhJ6bVdAv0iMrNGFZG + response: + body: + string: !!binary | + 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 + headers: + Accept-Ranges: [bytes] + Age: ['123'] + Connection: [keep-alive] + Content-Encoding: [gzip] + Content-Length: ['8368'] + Content-Type: [text/html] + Date: ['Sun, 29 Oct 2017 12:25:13 GMT'] + Server: [Apache] + Vary: [Accept-Encoding] + Via: [1.1 varnish] + X-Varnish: [2618750061 2618740007] + status: {code: 200, message: OK} +version: 1 diff --git a/tests/test_mime_parsers.py b/tests/test_mime_parsers.py index ea77469..d9f64a5 100644 --- a/tests/test_mime_parsers.py +++ b/tests/test_mime_parsers.py @@ -50,8 +50,8 @@ URLS = OrderedDict([ 'https://i.imgur.com/yjP1v4B.mp4', 'video/mp4')), ('imgur_album', ( - 'http://imgur.com/a/qx9t5', - 'https://i.imgur.com/uEt0YLI.jpg', + 'https://imgur.com/a/pRYEi', + 'https://i.imgur.com/tiUSazy.png https://i.imgur.com/phIsEAi.png https://i.imgur.com/TvT8V5m.png https://i.imgur.com/qETPFAi.png', 'image/x-imgur-album')), ('instagram_image', ( 'https://www.instagram.com/p/BIxQ0vrBN2Y/?taken-by=kimchi_chic', @@ -70,10 +70,14 @@ URLS = OrderedDict([ re.compile('https://(.*)\.cloudfront\.net/videos/15694926/52450725.mp4(.*)'), 'video/mp4', marks=pytest.mark.xfail(reason="vidme API appears to have changed format"))), - ('liveleak_video', ( + ('liveleak_video_1', ( 'https://www.liveleak.com/view?i=08b_1499296574', re.compile('https://cdn\.liveleak\.com/(.*)\.mp4(.*)'), 'video/mp4')), + ('liveleak_video_2', ( + 'https://www.liveleak.com/view?i=cad_1487311993', + re.compile('www\.youtube\.com/embed/D4GrlOMlOBY'), + 'video/x-youtube')), ('reddit_gif', ( 'https://v.redd.it/wkm9zol8c6fz', 'https://v.redd.it/wkm9zol8c6fz/DASH_600_K', @@ -94,6 +98,42 @@ URLS = OrderedDict([ 'https://www.clippituser.tv/c/edqqld', 'https://clips.clippit.tv/edqqld/720.mp4', 'video/mp4')), + ('gifs_com', ( + 'https://gifs.com/gif/cat-jumps-into-lake-after-guy-sneezes-0VqvRL', + 'https://j.gifs.com/0VqvRL.gif', + 'image/gif')), + ('giphy', ( + 'https://giphy.com/gifs/cameron-dallas-OpesLQSjwdGj6', + 'https://media.giphy.com/media/OpesLQSjwdGj6/giphy.mp4', + 'video/mp4')), + ('imgtc', ( + 'https://imgtc.com/w/Sa2whPE', + 'https://imgtc.b-cdn.net/uploads/ZHI3OopOhKJ.mp4', + 'video/mp4')), + ('imgflip', ( + 'https://imgflip.com/i/1dtdbv', + 'https://i.imgflip.com/1dtdbv.jpg', + 'image/jpeg')), + ('livememe', ( + 'http://www.livememe.com/v67cxy9', + 'http://e.lvme.me/v67cxy9.jpg', + 'image/jpeg')), + ('makeameme', ( + 'http://makeameme.org/meme/joined-reddit-for', + 'https://media.makeameme.org/created/joined-reddit-for.jpg', + 'image/jpeg')), + ('flickr', ( + 'https://www.flickr.com/photos/obamawhitehouse/8191317327/', + 'https://c1.staticflickr.com/9/8065/8191317327_5180e95d98_b.jpg', + 'image/jpeg')), + ('worldstar_1', ( + 'http://www.worldstarhiphop.com/videos/video.php?v=wshh09DUN5MeDK2El4sO', + 'https://hw-videos.worldstarhiphop.com/u/vid/2017/10/4OnndgEmNSME.mp4', + 'video/mp4')), + ('worldstar_2', ( + 'http://www.worldstarhiphop.com/videos/video.php?v=wshhJ6bVdAv0iMrNGFZG', + 'http://www.youtube.com/embed/Bze53qwHS8o?autoplay=1', + 'video/x-youtube')), ]) diff --git a/tests/test_subreddit.py b/tests/test_subreddit.py index 8d74ac9..f9f1352 100644 --- a/tests/test_subreddit.py +++ b/tests/test_subreddit.py @@ -108,6 +108,11 @@ def test_subreddit_title(subreddit_page, terminal, capsys): out, _ = capsys.readouterr() assert not out + with mock.patch.dict('os.environ', {'INSIDE_EMACS': '25.3.1,term:0.96'}): + subreddit_page.draw() + out, _ = capsys.readouterr() + assert not out + def test_subreddit_search(subreddit_page, terminal): window = terminal.stdscr.subwin diff --git a/tests/test_terminal.py b/tests/test_terminal.py index 2764b88..cb7c2a0 100644 --- a/tests/test_terminal.py +++ b/tests/test_terminal.py @@ -650,3 +650,16 @@ def test_set_theme(terminal, stdscr): terminal.theme = None terminal.set_theme(Theme.from_name('molokai')) assert terminal.theme.display_string == 'molokai (preset)' + + +def test_set_theme_no_colors(terminal, stdscr): + + # Monochrome should be forced if the terminal doesn't support color + with mock.patch('curses.has_colors') as has_colors: + has_colors.return_value = False + + terminal.set_theme() + assert not terminal.theme.use_color + + terminal.set_theme(Theme(use_color=True)) + assert not terminal.theme.use_color \ No newline at end of file