2010-01-18 19 views
9

Tôi đã nhìn xung quanh trong một thời gian dài như thế nào để có được tập tin từ Basecamp và cho đến nay nó có vẻ như một 'nhiệm vụ bất khả', nhưng tôi muốn hỏi ở đây cũng như:Xuất file từ Basecamp

Có bất kỳ cách nào để lấy tệp từ dự án Basecamp và, nếu có, làm thế nào?

Xin cảm ơn trước.

Đã chỉnh sửa: Tôi muốn biết cách tải các tệp đã tải lên. Bạn có thể xuất tất cả dữ liệu dự án ngoại trừ các tệp bạn đã tải lên ở đó.

+0

Không trả lời ??? – Sayuj

+0

Cập nhật: Tôi đã liên hệ với dịch vụ khách hàng của BaseCamp và họ rất sẵn lòng nén tất cả các tệp và lưu vào dự án "Dịch vụ khách hàng" không được tính vào giới hạn bộ nhớ của tôi. Không phải là một giải pháp thanh lịch, nhưng nó hoạt động. Các kho lưu trữ được tổ chức bởi các thư mục, với mỗi dự án trong một thư mục riêng biệt. –

+0

Tôi đã bỏ phiếu cho tất cả các câu trả lời có nhiều khả năng làm việc nhất hiện nay. Thật không may, tôi không có thời gian để kiểm tra từng người vì đã gần 3 năm kể từ khi tôi đăng câu hỏi và tôi không chịu trách nhiệm cho dự án đó nữa, nhưng dựa trên phiếu bầu của những người khác tôi cho là họ ổn. Tôi thích các wget + cookie thingie (đẹp nhất, thực sự), tuy nhiên tôi sẽ chấp nhận câu trả lời về API bởi vì nó phản ánh những gì là hợp lệ ngày hôm nay, mà không có khó chịu hacks/cách giải quyết. –

Trả lời

3

Các Basecamp API ngụ ý cung cấp quyền truy cập đầy đủ bao gồm các file.

Nếu bạn có bất kỳ kiến ​​thức của REST bạn sẽ có thể kéo bất kỳ/tất cả dữ liệu ra (tỷ lệ modulo hạn chế) bằng tay và sau đó làm bất cứ điều gì bạn thích với nó.

Ngẫu nhiên, nếu bạn viết một công cụ cho phép tôi di chuyển một dự án từ tài khoản này sang tài khoản khác, tôi sẽ trả tiền tốt cho điều đó!

+0

cách đây 3 năm không thể thực hiện được, nếu không câu hỏi sẽ không được đăng ở đây (nó là phương sách cuối cùng). Như tôi đã giải thích trong phần bình luận cho câu hỏi đó, tôi đã chấp nhận câu trả lời của bạn vì nó là cách thuận tiện nhất và cách làm như thế nào, kể từ hôm nay. Thật không may, việc chuyển các dự án từ tài khoản này sang tài khoản khác không phải là mục tiêu, không thể không có ở đó :) –

1

basecamp cung cấp cho bạn để xuất dự án của bạn bằng XML, HTML - và đó cũng là một cách để có được nó trong PDF. thông tin này có thể được tìm thấy trong phần help/faq của Basecamp: http://basecamphq.com/help/general#exporting_data

thêm về việc xuất khẩu PDF: http://37signals.blogs.com/products/2008/02/export-a-baseca.html

+0

Tôi đã chỉnh sửa câu hỏi. Ý tôi là: làm thế nào để có được các tập tin mà bạn đã tải lên (các) dự án của bạn tại Basecamp. Chúng không được cung cấp qua API, hoặc tôi không biết rằng nó có thể được thực hiện. –

+0

fyi, phương thức xuất PDF được liên kết với yêu cầu máy chủ ColdFusion (Tôi không nhận ra rằng mọi người vẫn sử dụng CFM nhưng, myeup) – cyphunk

12

Bạn có thể xuất mọi thứ từ Basecamp bằng các bước sau.

  1. Đăng nhập bằng Chrome.
  2. Sao chép tiêu đề cookie từ tài liệu trang yêu cầu trong công cụ dành cho nhà phát triển Chrome.
  3. wget --mirror -e robots=no --reject logout --no-cookies 'http://your-subdomain.basecamphq.com' --header <pasted-cookie-header>
+0

Bây giờ (vào năm 2012) Basecamp đã trở thành Basecamp Classic và Basecamp mới là khác nhau, phương pháp này vẫn hoạt động? Nó hoạt động nếu bạn không có một tên miền phụ? – LarsH

1

Sử dụng this tool cho Windows.

Trong chế độ dùng thử, công cụ này sẽ cho phép ba dự án được tải xuống từ cơ sở, sẽ liệt kê tất cả các dự án trên tài khoản cơ sở của bạn sau khi bạn đăng nhập bằng thông tin basecamp của mình.

+0

Theo trang web của họ sản phẩm (Parachute) bị ngưng và không thể tải xuống được nữa. – Julian

9

Câu trả lời của Matt McClure đã được phát hiện nhưng một vài điều đã khiến tôi khó chịu;

  1. Để tìm cookie cần thiết trong Chrome công cụ phát triển, click vào biểu tượng Network trên đầu và sau đó Headers tab.

  2. Sao chép toàn bộ phần cookie từ phần 'request headers', bao gồm 'Cookie:' nhãn

  3. Dán toàn bộ chuỗi với dấu ngoặc kép nơi mờ chỉ <pasted-cookie-header> như sau;

    wget --mirror -e robots=no --reject logout --no-cookies 'http://your-subdomain.basecamphq.com' --header 'Cookie: session_token=c6a1ea88a0187b88025e; transition_token=BAhbB2kDA0VjSXU6CVRpbWUNqB...'

(Tôi đã rút ngắn chuỗi cookie cho rõ ràng)

+0

Tôi không thể xác định session_token và transition_token trong cookie của mình, bất kỳ ý tưởng nào? – James

0
  1. Import bạn dự án Basecamp cổ điển đến mới Basecamp
  2. dữ liệu xuất khẩu từ mới Basecamp
  3. Chờ
  4. Nhận email được thực hiện và tải xuống tệp zip
0

Bạn có thể thiết lập một kết hợp giữa Basecamp và Dropbox để tự động chuyển toàn bộ file đính kèm Basecamp của bạn vào một thư mục Dropbox chuyên dụng:

http://blog.cloudwork.com/your-automatic-basecamp-dropbox-backup-step-by-step/

Việc tích hợp được thực hiện bằng CloudWork, trong đó có một kế hoạch miễn phí vì vậy nếu bạn không nghĩ rằng bạn sẽ sao lưu hơn 100 tệp đính kèm mỗi tháng, nó có thể làm điều đó miễn phí. Trên đó, có một kế hoạch định giá.

1

Cả Matt và Peter đã đề xuất sử dụng wget --mirror mà tôi nghĩ đây là giải pháp dễ dàng nhất. Tuy nhiên, tôi không thể sao chép đúng cookie từ Google Chrome.

Thay vào đó, tôi đã đi theo một hướng hơi khác và sử dụng Chrome cookie.txt export extension để sao chép tất cả cookie dưới dạng văn bản thuần túy sang tệp cookie.txt.

lệnh wget của tôi sau đó trông như thế này:

wget --mirror -e robots=no --reject logout 'http://yourdomain.basecamphq.com' --load-cookies cookies.txt 

lưu ý bổ sung cho người dùng Mac: wget có thể dễ dàng cài đặt với homebrew:

brew install wget 
0

Nếu bạn đã php cài đặt trên máy tính của bạn, tiết kiệm mã này để basecampfilevac.php:

<? 
// make sure the folder of the script is writeable (0777) 
ini_set('memory_limit', '-1');//keeps the script from timing out 

function BasecampCall($endPoint, $usePrefix = true) { 

    // From: http://prattski.com/2008/10/22/basecamp-api-examples-using-php-and-curl-get/ 
    $session = curl_init(); 

    $basecampId  = '[Your Basecamp Account Id Here]'; //this should be a number like 9999999, You can find it in the URL when you log into Basecamp. 
    $username  = '[Your Basecamp Username Here]'; 
    $password  = '[Your Basecamp Password Here]'; 
    $emailaddress = '[Your Basecamp Email Address Here]'; 

    $basecampUrl  = 'https://basecamp.com/' . $basecampId . '/api/v1/'; 

    curl_setopt($session, CURLOPT_URL, ($usePrefix == true ? $basecampUrl : "") . $endPoint); 
    curl_setopt($session, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 
    curl_setopt($session, CURLOPT_HTTPGET, 1); 
    curl_setopt($session, CURLOPT_HEADER, false); 
    curl_setopt($session, CURLOPT_HTTPHEADER, array('Accept: application/json', 'Content-Type: application/json')); 
    curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($session, CURLOPT_USERAGENT, "MyApp (".$emailaddress.")"); 

    curl_setopt($session,CURLOPT_USERPWD, $username . ":" . $password); 

    if(ereg("^(https)",$request)) curl_setopt($session,CURLOPT_SSL_VERIFYPEER,false); 

    $response = curl_exec($session); 
    curl_close($session); 

    if($usePrefix){ 
     $r = json_decode($response); 
    } else { 
     $r = $response; 
    } 

    return $r; 
} 

$projects = BasecampCall('projects.json'); 

// For each project take name and id 
foreach($projects as $proj) { 

    $pr = array(
     "id" => (string)$proj->id, 
     "name" => (string)$proj->name 
    ); 

    // Retrieve the attachments 
    echo "\nSaving attachments for project: " . $pr['name'] . "...\n"; 

    @mkdir($pr['name']); 

    $filesArray = array(); 

    $n = 1; 
    do { 

     $attachments = BasecampCall("projects/" . $proj->id . "/attachments.json?page=" . $n); 

     if(count($attachments) > 0) { 

      foreach($attachments as $attachment) { 

       $file = pathinfo($attachment->name); 

       @file_put_contents($pr['name'] . "/" . $file['filename'] . (in_array($file['filename'], $filesArray) ? "-" . rand() : "") . "." . $file['extension'], BasecampCall($attachment->{'url'}, false)); 

       $filesArray[] = $file['filename']; 

       echo "Saving file " . $attachment->name . "...\n"; 
      } 
     } 

     $n++; 

    } while(count($attachments) == 50); 
} 
?> 

sau đó cập nhật các dòng sau đây với các thông tin chính xác:

$basecampId  = '[Your Basecamp Account Id Here]'; //this should be a number like 9999999, You can find it in the URL when you log into Basecamp. 
$username  = '[Your Basecamp Username Here]'; 
$password  = '[Your Basecamp Password Here]'; 
$emailaddress = '[Your Basecamp Email Address Here]'; 

sau đó lưu và thực hiện lệnh này: php basecampfilevac.php

Đây là một kịch bản biến đổi ban đầu từ Rettger Galactic

chưa
Các vấn đề liên quan