列出先前已删除的重新创建的相册名称

时间:2013-05-03 06:08:28

标签: php picasa zend-gdata

背景

我想列出我的帐户中与给定名称匹配的所有相册。

问题

删除相册,然后重新创建具有完全相同名称的相册后,$albumQuery->setAlbumName( ... )找到相册名称的代码将失败,即使相册已成功创建,也会失败。

以下代码运行良好:

// This is correct -- adding photographs to albums works.
$client = $this->login( $user, $pass, $picasa );
$picasa = $this->newPhotographService( $client );

$albumQuery = $picasa->newAlbumQuery();
$albumQuery->setUser( $user );
$albumQuery->setAlbumName( "17" );      // This is the literal name of the album.
$albumQuery->setMaxResults( 10 );

此行在调用setMaxResults后立即存在,但失败了:

$albumFeed = $picasa->getAlbumFeed( $albumQuery );

执行上述行时,会发生以下错误:

  

例外:预期的响应代码200,得到404

更新#1

以下代码有效,但不一致:

echo "Search for the album named $accountId for $user\n";
$albumQuery = $picasa->newAlbumQuery();
$albumQuery->setUser( $user );
$albumQuery->setAlbumName( "ALBUM17" );
$albumQuery->setMaxResults( 1 );

$albumId = null;

try {
  echo "\nGet album feed from albumQuery.\n";
  $albumFeed = $picasa->getAlbumFeed( $albumQuery );

  // The feed returns a list of photos; each photo has an album ID.
  foreach( $albumFeed as $key => $entry ) {
    $albumId = $entry->getGphotoAlbumId();
  }

  echo "\nFound album ID: ALBUM17\n";
}
catch( Zend_Gdata_App_Exception $ex ) {
  echo "\nError: " . $ex->getMessage() . "\n";
  echo "\nCreate album.\n";

  // Create the album.
  $albumId = $this->createAlbum( $picasa, "ALBUM17" );
  echo "\nCreated album ID: ALBUM17\n";
}

这将按预期执行,直到删除相册。重新创建已删除的相册时,似乎API无法找到重新创建的名称。结果是上面的代码创建了具有相同名称的新专辑,这是不可取的。

更新#2

这似乎是一个错误;我记录了一个问题:

https://code.google.com/p/gdata-issues/issues/detail?id=4516

问题

如何使用Picasa的PHP API检索已删除然后重新创建的相册的相册ID?

1 个答案:

答案 0 :(得分:0)

我不熟悉这个特殊的API ...

通常情况下,您无法重新创建条目。删除后,它就消失了。

您需要做的就是获取刚刚创建的新相册的 id ,然后在代码中使用它。

您还可能会将相册的名称 id 混淆。