Новости из Блогов Простой скрипт для выкачивания картинок на рабочий стол

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 12 Nov 2012.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,373
    Likes Received:
    6,619
    Reputations:
    693
    Простой скрипт для выкачивания картинок на рабочий стол
    11.11.2012
    http://bafoed.net/post/12540/
    http://bafoed.net



    Понадобились значит картинки, решил написать скрипт, который выкачивал бы их. Выкачивает с сайта Wallbase.cc.

    Код простой, комментировать нечего, просто может пригодится кому-нибудь, чтобы ставить рандомные картинки каждые n-минут.

    PHP:
    <?php
    // bafoed.net
    $width = 1920; //   разрешение
    $height = 1080; // 
    $folder = dirname(__FILE__) . '/wallpapers/'; // папка для загрузки
    $pages = 10; // кол-во страниц, каждая страница содержит 32 картинки
     
    function curl($url)
    {
        
    $ch = curl_init($url);
        
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-Requested-With: XMLHttpRequest'));
        
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11');
        
    curl_setopt($ch, CURLOPT_REFERER, 'http://wallbase.cc/random/12/eqeq/1920x1080/0/100/32/865');
        
    curl_setopt($ch, CURLOPT_COOKIEJAR, './cookie');
        
    curl_setopt($ch, CURLOPT_COOKIEFILE, './cookie');
     
        
    $response = curl_exec($ch);
        
    curl_close($ch);
        return 
    $response;
    }
     
     
    foreach(
    range(1, $pages) as $i)
    {
       echo 
    '[Page #' . $i . ']';
       echo 
    '   Loading wallpapers URL...';
       
    $data = curl('http://wallbase.cc/random/12/eqeq/'. $width . 'x' . $height . '/0/100/32/' . rand(1, 999));
       
    $data = json_decode($data, true);
       
    $count = count($data);
       echo 
    '   Done, ' . $count . ' loaded.' . PHP_EOL;
     
       foreach(
    $data as $c => $wallpaper)
       {
          
    $data = curl('http://wallbase.cc/wallpaper/' . $wallpaper['id']);
          
    preg_match('#B\(\'(.*?)\'\)#is', $data, $out);
          
    $url = base64_decode($out[1]);
          
    $ext = end(explode('.', $url));
          
    $path = $folder . 'wallpaper-' . $wallpaper['id'] . '.' . $ext;
          echo 
    '   Downloading image ' . $c . '/' . $count . ' to ' . $path . ' ...';  
          
    file_put_contents($path, file_get_contents($url));
          echo 
    ' OK' . PHP_EOL;
       }
    }
    echo 
    'Stop.';
    Рекомендую запускать через терминал, чтобы выглядело не в одну строчку и выводилось постепенно.

    [​IMG]
     
  2. MadFun.

    MadFun. Elder - Старейшина

    Joined:
    8 May 2007
    Messages:
    32
    Likes Received:
    28
    Reputations:
    20
    Полезная штука, спасибо.
     
  3. De-visible

    De-visible [NDC] Network develope c0ders

    Joined:
    6 Jan 2008
    Messages:
    916
    Likes Received:
    550
    Reputations:
    66
    В чем полезность?