Merge pull request #126 from obosob/internal_links
Handle internal reddit links internally, including x-posts
This commit is contained in:
@@ -2,6 +2,7 @@ import logging
|
|||||||
|
|
||||||
import praw
|
import praw
|
||||||
import requests
|
import requests
|
||||||
|
import re
|
||||||
|
|
||||||
from .exceptions import SubmissionError, SubredditError, AccountError
|
from .exceptions import SubmissionError, SubredditError, AccountError
|
||||||
from .helpers import humanize_timestamp, wrap_text, strip_subreddit_url
|
from .helpers import humanize_timestamp, wrap_text, strip_subreddit_url
|
||||||
@@ -105,7 +106,7 @@ class BaseContent(object):
|
|||||||
displayed through the terminal.
|
displayed through the terminal.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
is_selfpost = lambda s: s.startswith('http://www.reddit.com/r/')
|
reddit_link = re.compile("https?://(www\.)?(np\.)?redd(it\.com|\.it)/r/.*")
|
||||||
author = getattr(sub, 'author', '[deleted]')
|
author = getattr(sub, 'author', '[deleted]')
|
||||||
name = getattr(author, 'name', '[deleted]')
|
name = getattr(author, 'name', '[deleted]')
|
||||||
flair = getattr(sub, 'link_flair_text', '')
|
flair = getattr(sub, 'link_flair_text', '')
|
||||||
@@ -123,7 +124,19 @@ class BaseContent(object):
|
|||||||
data['subreddit'] = strip_subreddit_url(sub.permalink)
|
data['subreddit'] = strip_subreddit_url(sub.permalink)
|
||||||
data['flair'] = flair
|
data['flair'] = flair
|
||||||
data['url_full'] = sub.url
|
data['url_full'] = sub.url
|
||||||
data['url'] = ('selfpost' if is_selfpost(sub.url) else sub.url)
|
|
||||||
|
if data['permalink'].split('/r/')[-1] == data['url_full'].split('/r/')[-1]:
|
||||||
|
data['url_type'] = 'selfpost'
|
||||||
|
data['url'] = 'selfpost'
|
||||||
|
|
||||||
|
elif reddit_link.match(data['url_full']):
|
||||||
|
data['url_type'] = 'x-post'
|
||||||
|
data['url'] = 'x-post via {}'.format(strip_subreddit_url(data['url_full']))
|
||||||
|
|
||||||
|
else:
|
||||||
|
data['url_type'] = 'external'
|
||||||
|
data['url'] = data['url_full']
|
||||||
|
|
||||||
data['likes'] = sub.likes
|
data['likes'] = sub.likes
|
||||||
data['gold'] = sub.gilded > 0
|
data['gold'] = sub.gilded > 0
|
||||||
data['nsfw'] = sub.over_18
|
data['nsfw'] = sub.over_18
|
||||||
@@ -154,7 +167,7 @@ class SubmissionContent(BaseContent):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
with loader():
|
with loader():
|
||||||
submission = reddit.get_submission(url, comment_sort='hot')
|
submission = reddit.get_submission(url.replace("http:","https:"), comment_sort='hot')
|
||||||
except praw.errors.APIException:
|
except praw.errors.APIException:
|
||||||
raise SubmissionError(url)
|
raise SubmissionError(url)
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ from .exceptions import SubredditError, AccountError
|
|||||||
from .page import BasePage, Navigator, BaseController
|
from .page import BasePage, Navigator, BaseController
|
||||||
from .submission import SubmissionPage
|
from .submission import SubmissionPage
|
||||||
from .content import SubredditContent
|
from .content import SubredditContent
|
||||||
from .helpers import open_browser, open_editor
|
from .helpers import open_browser, open_editor, strip_subreddit_url
|
||||||
from .docs import SUBMISSION_FILE
|
from .docs import SUBMISSION_FILE
|
||||||
from .history import load_history, save_history
|
from .history import load_history, save_history
|
||||||
from .curses_helpers import (Color, LoadScreen, add_line, get_arrow, get_gold,
|
from .curses_helpers import (Color, LoadScreen, add_line, get_arrow, get_gold,
|
||||||
@@ -108,10 +108,11 @@ class SubredditPage(BasePage):
|
|||||||
"Open a link with the webbrowser"
|
"Open a link with the webbrowser"
|
||||||
data = self.content.get(self.nav.absolute_index)
|
data = self.content.get(self.nav.absolute_index)
|
||||||
|
|
||||||
if data['url'] == 'selfpost':
|
url = data['url_full']
|
||||||
self.open_submission()
|
if data['url_type'] in ['x-post', 'selfpost']:
|
||||||
|
page = SubmissionPage(self.stdscr, self.reddit, url=url)
|
||||||
|
page.loop()
|
||||||
else:
|
else:
|
||||||
url = data['url_full']
|
|
||||||
open_browser(url)
|
open_browser(url)
|
||||||
global history
|
global history
|
||||||
history.add(url)
|
history.add(url)
|
||||||
|
|||||||
Reference in New Issue
Block a user