放牧代码和思想
专注自然语言处理、机器学习算法
    愛しさ 優しさ すべて投げ出してもいい

百度云储存批量下载脚本

前些时间在BAE上搭了一个应用,数据写入了百度云储存BCS里。现在想将BCS里的数据搬走,但是官方并没有提供一个一键下载的功能。只好自己写了一个,运行良好。

此脚本在本地PHP环境下运行,需要开启CURL拓展。代码里的krumo是一个调试输出类,如果你没有这个类,直接注释掉即可,不影响功能。bcs的相关类库请自行在此下载。如果发现脚本运行超时,请自行修改php的max_execution_time,给它一个大一点的数值,30秒肯定不够的。

<?php
/**
 * Author: hankcs
 * Date  : 14-3-29
 * Time  : 下午10:29
 */
ini_set("max_execution_time", 36000);
require_once '../bcs.class.php';
require_once '../krumo/class.krumo.php';
$host = 'bcs.duapp.com';
$ak = '你的公钥';
$sk = '你的私钥';
$bucket = '要下载的bucket名称';
$baidu_bcs = new BaiduBCS ( $ak, $sk, $host );

$response = json_decode($baidu_bcs->list_object ( $bucket, array('start' => 0,'limit' => 1024,) )->body);
$downloaded_size = 0;
while($downloaded_size < $response->object_total)
{
    krumo($response);
    // 下载它们
    foreach($response->object_list as $object)
    {
        if(!$object->is_dir)
        {
            mk_dir('.'.$object->parent_dir);
            $result = $baidu_bcs->get_object ( $bucket, $object->object, array ("fileWriteTo" => '.'.$object->object ) );
        }
    }
    $downloaded_size += count($response->object_list);
    $response = json_decode($baidu_bcs->list_object ( $bucket, array('start' => $downloaded_size,'limit' => 1024,) )->body);
}

function mk_dir($dir, $mode = 0755)
{
    if (is_dir($dir) || @mkdir($dir,$mode)) return true;
    if (!mk_dir(dirname($dir),$mode)) return false;
    return @mkdir($dir,$mode);
}

知识共享许可协议 知识共享署名-非商业性使用-相同方式共享码农场 » 百度云储存批量下载脚本

评论 4

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #4

    本人QQ858422252

    闫迎强9年前 (2015-06-21)回复
  2. #3

    楼主能留下QQ或者其他联系方式吗,这边有大量文件需要从BCS上下载下来,不知是百度BCS接口变化了还是其他原因博主的脚本运行一直出错,希望博主能帮忙解决一下,可以付费

    闫迎强9年前 (2015-06-21)回复
  3. #2

    非常感谢分享源码,已经在下载了。。

    test9年前 (2014-12-08)回复
  4. #1

    非常感觉分享源码,已经在下载了。。

    test9年前 (2014-12-08)回复

我的作品

HanLP自然语言处理包《自然语言处理入门》