:(";
exit();
}
if (substr($article_url, 0, 4) != "http") {
echo ("That's not a web page :(");
die();
}
$url = parse_url($article_url);
$host = $url['host'];
// Attempt to figure out what the requested URL content-type may be
$context = stream_context_create(['http' => array('method' => 'HEAD')]);
$headers = get_headers($article_url, true, $context);
if (!array_key_exists('Content-Type', $headers) || !array_key_exists('Content-Length', $headers)) {
$error_text .= "Failed to get the article, its server did not return expected details :(
getImages() as $image_url):
//we can only do png and jpg
if (strpos($image_url, ".jpg") || strpos($image_url, ".jpeg") || strpos($image_url, ".png") === true) {
$img_num++;
$imgline_html .= " [$img_num] ";
}
endforeach;
if ($img_num > 0) {
echo $imgline_html;
}
?>
";
} else {
// Attempt to handle downloads or other mime-types by passing proxying them through.
if (!in_array($headers['Content-Type'], $compatible_content_types)) {
$filesize = $headers['Content-Length'];
// Check if the linked file isn't too large for us to proxy.
if ($filesize > $proxy_download_max_filesize) {
echo 'Failed to proxy file download, it\'s too large. :(
';
echo 'You can try downloading the file directly: ' . $article_url;
die();
} else {
$contentType = $headers['Content-Type'];
// Only use the last-provided content type if an array was returned (ie. when there were redirects involved)
if (is_array($contentType)) {
$contentType = $contentType[count($contentType) - 1];
}
$filename = basename($url['path']);
// If no filename can be deduced from the URL, set a placeholder filename
if (!$filename) {
$filename = "download";
}
// Set the content headers based on the file we're proxying through.
header('Content-Type: ' . $contentType);
header('Content-Length: ' . $filesize);
// Set the content-disposition to encourage the browser to download the file.
header('Content-Disposition: attachment; filename="' . $filename . '"');
// Use readfile
readfile($article_url);
die();
}
}
}
use fivefilters\Readability\Readability;
use fivefilters\Readability\Configuration;
use fivefilters\Readability\ParseException;
$configuration = new Configuration();
$configuration
->setArticleByLine(false)
->setFixRelativeURLs(true)
->setOriginalURL('http://' . $host);
$readability = new Readability($configuration);
if (!$article_html = file_get_contents($article_url)) {
$error_text .= "Failed to get the article :(
";
}
try {
$readability->parse($article_html);
$readable_article = strip_tags($readability->getContent(), '');
$readable_article = str_replace('strong>', 'b>', $readable_article); //change to
$readable_article = str_replace('em>', 'i>', $readable_article); //change to
$readable_article = clean_str($readable_article);
$readable_article = str_replace('href="http', 'href="/read.php?a=http', $readable_article); //route links through proxy
} catch (ParseException $e) {
$error_text .= 'Sorry! ' . $e->getMessage() . '
';
}
//replace chars that old machines probably can't handle
function clean_str($str)
{
$str = str_replace("‘", "'", $str);
$str = str_replace("’", "'", $str);
$str = str_replace("“", '"', $str);
$str = str_replace("”", '"', $str);
$str = str_replace("–", '-', $str);
return $str;
}
?>
getTitle()); ?>