Stahování obrázků z pinterestu

Následující skript je jednoduchý parser, který dokáže stáhnout obrázky z nástěnky jakéhokoliv pinterest účtu spolu s odkazem na detail obrázku.

Nejprve funkce, která ukládá obrázky do adresáře temp.

function ulozobrazek($novynazev,$url,$sirka,$maxvyska=0) {
  $adresa=false;
  $urlbez=preg_replace('/\\?.*/', '', $url);
  $ext=str_replace('.','',strrchr($urlbez,'.'));
  $ext=strtolower($ext);
  if ($pos=strpos($ext,"?")) $ext=substr($ext,0,$pos);
  $novy="tmp_".$novynazev.".".$ext;
  if ($ext=="jpg" || $ext=="jpeg" || $ext=="gif" || $ext=="png") {
    @$file=fopen($url,"rb");
    if ($file) {
      $fc=fopen("temp/$novy","wb");
      while (!feof($file)) { 
        $line=fread($file,8192); 
        fwrite($fc,$line); 
      } 
      fclose($fc);
      $sku=exif_imagetype("temp/$novy");
      switch ($sku) {
        case 1:	// IMAGETYPE_GIF
          $opr="gif";
        break;
        case 2:	// IMAGETYPE_JPEG
          $opr="jpg";
        break;
        case 3:	// IMAGETYPE_PNG
          $opr="png";
        break;
        default:
          $opr=$ext;
        break;
      }
      if ($ext!=$opr) $ext=$opr;
      $novynazev=$novynazev.".jpg";
      if ($ext=="jpg") {
        $im=imagecreatefromjpeg("temp/$novy");
      } elseif ($ext=="gif") {
        $im=imagecreatefromgif("temp/$novy");
      } elseif ($ext=="png") {
        $im=imagecreatefrompng("temp/$novy");
      }
      $im_width=imagesx($im);
      $im_height=imagesy($im);
      $vyska=round($im_height*$sirka/$im_width);
      if ($maxvyska>0 && $vyska>$maxvyska) {
        $sirka=round($sirka/$vyska*$maxvyska);
        $vyska=$maxvyska;
      }
      $new_im=imagecreatetruecolor($sirka,$vyska);
      imagecopyresampled($new_im,$im,0,0,0,0,$sirka,$vyska,$im_width,$im_height);
      imagedestroy($im);
      imagejpeg($new_im,"temp/".$novynazev,80);
      @unlink("temp/".$novy);
      return("temp/".$novynazev);
    }
  }
  return($adresa);
}

A následuje skript, který uloží posledních 12 pinů z nástěnky uživatele pinterest (https://cz.pinterest.com/pinterest/pins/) jako obrázky a vrátí řetězec obrázků s odkazy v proměnné $data.

$data = '';
$subject = file_get_contents('https://cz.pinterest.com/pinterest/pins/');
$pattern = '/\"orig\": \{\"url\": \"(.*?)\", \"width\":/si';
preg_match_all($pattern, $subject, $matches);
$i=0;
foreach ($matches[1] as $item) {
  $item=str_replace("\\","",$item);
  $nazevobrazku=time().$plusobrazek;
  $nazevobrazku="pinterest_".sha1($nazevobrazku);
  $plusobrazek++;
  $vratobrazek=ulozobrazek($nazevobrazku,$item,100);
  if ($vratobrazek) {
    list($sirka,$vyska)=getimagesize($vratobrazek);
    $data .= '<a href="https://cz.pinterest.com/pinterest/pins/" target="_blank"><img src="' . $vratobrazek . '" style="width:'.$sirka.'px;height:'.$vyska.'px;margin-bottom:5px;"></a>';
    $i++;
    if ($i==12) break;
  }
}

Volání funkce ulozobrazek si můžete upravit a nastavit potřebnou maximální šířku, případně i výšku uloženého obrázku.