从链接列表下载收藏夹图标

时间:2018-07-11 19:11:00

标签: php favicon

我试图创建一个脚本来从链接列表中下载网站图标:

我的文件link_list.txt如下所示:

stackoverflow.com
http://google.com
www.gmail.com
facebook.com

我正在使用以下库来检查和下载网站图标:

Github: FaviconDownloader

我的脚本当前如下所示:

<?php
require_once 'vendor/autoload.php';
use Vincepare\FaviconDownloader\FaviconDownloader;

$fh = fopen(dirname(__FILE__).DIRECTORY_SEPARATOR . 'link_list.txt','r');
while ($line = fgets($fh)) {

    //if the url has not http:// add it
    if(preg_match("@^http://@i",$line))
        $line = preg_replace("@(http://)+@i",'http://',$line);
    else
        $line = 'http://'.$line;
    echo('URL: ' . $line."\n");
    $favicon = new FaviconDownloader($line);

    if (!$favicon->icoExists) {
        echo "No favicon for ".$favicon->url;
    }

    // get name of url
    $parts = parse_url($line);
    $path_parts = explode('.', isset($parts['host'])?$parts['host']:$parts['path']);

    echo 'Filename: fav-'. $path_parts[0] .'.ico' . "\n";
    $filename = dirname(__FILE__).DIRECTORY_SEPARATOR.'fav-'. $path_parts[0] . '.ico';
    file_put_contents($filename, $favicon->icoData);
    echo "Saved to ".$filename."\n\n";
}

fclose($fh);

运行脚本时,我只能下载最后一个图标。在此示例中,只有facebook:

enter image description here

任何建议我的脚本有什么问题吗?

感谢您的答复!

更新

var_dump($favicon)我得到:

class Vincepare\FaviconDownloader\FaviconDownloader#2 (13) {
  public $url =>
  string(21) "http://www.gmail.com
"
  public $pageUrl =>
  NULL
  public $siteUrl =>
  NULL
  public $icoUrl =>
  NULL
  public $icoType =>
  NULL
  public $findMethod =>
  NULL
  public $error =>
  string(31) "Illegal characters found in URL"
  public $icoExists =>
  NULL
  public $icoMd5 =>
  NULL
  public $icoData =>
  NULL
  public $debugInfo =>
  array(1) {
    'document_curl_errno' =>
    int(3)
  }
  protected $httpProxy =>
  NULL
  protected $sslVerify =>
  bool(true)
}

我猜下载器不喜欢\n。有什么建议可以解决该问题吗?

1 个答案:

答案 0 :(得分:-2)

您是否尝试过打开图标,它们在那里,因此可以正常工作。如果它不起作用,可能是它尚未下载或已损坏。至于脚本,我不了解PHP,因此我无法为您提供脚本帮助。