From f5e165a446f18c49461c6daf282bc0c85260cd37 Mon Sep 17 00:00:00 2001 From: Franzz Date: Sun, 16 Oct 2022 21:39:26 +0200 Subject: [PATCH] Add w3m support --- inc/Feed.php | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/inc/Feed.php b/inc/Feed.php index 0e69c72..36307b7 100755 --- a/inc/Feed.php +++ b/inc/Feed.php @@ -35,20 +35,29 @@ class Feed extends PhpObject array_walk($asItems, array($this, 'addItem')); } - public function loadRss($sUrl) + public function loadRss($sUrl, $sMode='curl') { - $oCurl = curl_init(); - curl_setopt($oCurl, CURLOPT_URL, $sUrl); - curl_setopt($oCurl, CURLOPT_HEADER, false); - curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, true); - curl_setopt($oCurl, CURLOPT_USERAGENT, array_key_exists('HTTP_USER_AGENT', $_SERVER)?$_SERVER['HTTP_USER_AGENT']:'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:63.0) Gecko/20100101 Firefox/63.0'); - $fCookieJar = @tempnam('/tmp','cookie'); - curl_setopt($oCurl, CURLOPT_COOKIESESSION, true); - curl_setopt($oCurl, CURLOPT_COOKIEJAR, $fCookieJar); - curl_setopt($oCurl, CURLOPT_COOKIEFILE, $fCookieJar); - //curl_setopt($oCurl, CURLOPT_ENCODING, 'gzip'); - $sRssContent = curl_exec($oCurl); - curl_close($oCurl); + $sRssContent = ''; + switch($sMode) { + case 'curl': + $oCurl = curl_init(); + curl_setopt($oCurl, CURLOPT_URL, $sUrl); + curl_setopt($oCurl, CURLOPT_HEADER, false); + curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, true); + curl_setopt($oCurl, CURLOPT_USERAGENT, array_key_exists('HTTP_USER_AGENT', $_SERVER)?$_SERVER['HTTP_USER_AGENT']:'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:105.0) Gecko/20100101 Firefox/105.0'); + $fCookieJar = @tempnam('/tmp','cookie'); + curl_setopt($oCurl, CURLOPT_COOKIESESSION, true); + curl_setopt($oCurl, CURLOPT_COOKIEJAR, $fCookieJar); + curl_setopt($oCurl, CURLOPT_COOKIEFILE, $fCookieJar); + //curl_setopt($oCurl, CURLOPT_ENCODING, 'gzip'); + $sRssContent = curl_exec($oCurl); + curl_close($oCurl); + break; + case 'w3m': + exec('w3m -dump '.$sUrl, $asOutput, $iResult); + $sRssContent = implode("\n", $asOutput); + break; + } //Parse document encoding (useless) $sEncoding = $this->getPregMatch("'encoding=[\'\"](.*?)[\'\"]'si", $sRssContent);