summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfox <[email protected]>2017-09-18 04:14:57 +0000
committerGogs <[email protected]>2017-09-18 04:14:57 +0000
commitaf13f3009c59c3db338b719b09335a472383d11c (patch)
tree085835bdb14d1bfc666336980e2f9b3b866607e7
parent06a19166bda1505eaab655299a36cca3d12cc8cd (diff)
parentb4b5236ec469bfc4b59d73b202864a6fa0c2c61e (diff)
Merge branch 'vreddit_fallback_url' of wn/tt-rss into master
-rwxr-xr-xplugins/af_redditimgur/init.php45
1 files changed, 40 insertions, 5 deletions
diff --git a/plugins/af_redditimgur/init.php b/plugins/af_redditimgur/init.php
index c872b429a..8074894fd 100755
--- a/plugins/af_redditimgur/init.php
+++ b/plugins/af_redditimgur/init.php
@@ -159,7 +159,34 @@ class Af_RedditImgur extends Plugin {
$poster_url = false;
}
- $source_stream = "https://v.redd.it/" . $matches[1] . "/DASH_600_K";
+ // Get original article URL from v.redd.it redirects
+ $source_article_url = $this->get_location($matches[0]);
+ _debug("Resolved ".$matches[0]." to ".$source_article_url, $debug);
+
+ $source_stream = false;
+
+ if ($source_article_url) {
+ $j = json_decode(fetch_file_contents($source_article_url.".json"), true);
+
+ if ($j) {
+ foreach ($j as $listing) {
+ foreach ($listing["data"]["children"] as $child) {
+ if ($child["data"]["url"] == $matches[0]) {
+ try {
+ $source_stream = $child["data"]["media"]["reddit_video"]["fallback_url"];
+ }
+ catch (Exception $e) {
+ }
+ break 2;
+ }
+ }
+ }
+ }
+ }
+
+ if (!$source_stream) {
+ $source_stream = "https://v.redd.it/" . $matches[1] . "/DASH_600_K";
+ }
$this->handle_as_video($doc, $entry, $source_stream, $poster_url);
$found = 1;
@@ -452,8 +479,8 @@ class Af_RedditImgur extends Plugin {
}
}
- private function get_content_type($url, $useragent = SELF_USER_AGENT) {
- $content_type = false;
+ private function get_header($url, $useragent = SELF_USER_AGENT, $header) {
+ $ret = false;
if (function_exists("curl_init") && !defined("NO_CURL")) {
$ch = curl_init($url);
@@ -465,10 +492,18 @@ class Af_RedditImgur extends Plugin {
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
@curl_exec($ch);
- $content_type = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
+ $ret = curl_getinfo($ch, $header);
}
- return $content_type;
+ return $ret;
+ }
+
+ private function get_content_type($url, $useragent = SELF_USER_AGENT) {
+ return $this->get_header($url, $useragent, CURLINFO_CONTENT_TYPE);
+ }
+
+ private function get_location($url, $useragent = SELF_USER_AGENT) {
+ return $this->get_header($url, $useragent, CURLINFO_EFFECTIVE_URL);
}
/**