幫朋友寫了個轉移blogger裡面照片的程式。程式的邏輯很簡單:
1、取出content有googleusercontent的文章的ID
2、取出圖片連結
3、下載圖片並放在對應的資料夾 (若無則建立)
4、新增資料庫裡面的圖片 (這樣才會出現在媒體庫),並加入資料庫 (parent)
5、更新原始POST中 img的來源
但是,實作上遇到很好笑的事。在步驟3時,我會先檢查資料夾是否存在,不在就建立。接著看資料夾裡面的檔案,先比對檔名再比對建立時間,找出最後一張圖,例如目前是05,下一張就是06。
結果啊,剛在測試時就遇到讓我很困擾的狀況了...因為網路和電腦太快,檔案下載下來的時間竟然是一樣的... ><。造成檔名無法如我預期的往下處理...
所以我就只好傻傻的用檔名排序,然後找出最後一筆了 (不想用ls來排,因為說不定哪一天會用在不是Linux的系統上)
排序的這一段是網路上找到的程式碼,紀念一下:
$output = array();
foreach( new RecursiveIteratorIterator(
new RecursiveDirectoryIterator( $path, FilesystemIterator::SKIP_DOTS | FilesystemIterator::UNIX_PATHS ) ) as $value ) {
if ( $value->isFile() ) {
$output[] = array( $value->getMTime(), $value->getRealPath() );
}
}
usort ( $output, function( $a, $b ) {
return $a[0] > $b[0];
});
print_r($output);
list($a,$b) = explode("$path/",end(end($output)));
echo $b."\n";
沒有留言:
張貼留言