如何按专辑名称Picasa和Zend GData PHP获取照片

时间:2012-11-30 09:58:14

标签: php zend-framework picasa zend-gdata

我无法按专辑名称访问Picasa网络相册。我有专辑名称'My Test Album'。如果我使用该名称(包括空格),我收到错误:

  

致命错误:带有消息的未捕获异常'Zend_Uri_Exception'   '提供的URI无效'

没有空格'MyTestAlbum'可以正常工作:

// Construct the query                      
$query = $this->photos->newAlbumQuery();
$query->setUser( "default" );
$query->setAlbumName( "MyTestAlbum" ); //This works fine

这会导致错误:

// Construct the query                      
$query = $this->photos->newAlbumQuery();
$query->setUser( "default" );
$query->setAlbumName( "My Test Album" ); // This causes error

我的问题是,不允许使用哪些字符,以便在拨打setAlbumName()之前将其删除?

或者有关更好方法的任何建议?

由于 伊恩

1 个答案:

答案 0 :(得分:0)

您只能获得与特定名称匹配的相册列表:

// Find the album for the given accountId.
$albumQuery = $picasa->newAlbumQuery();
$albumQuery->setUser( $user );
$albumQuery->setAlbumName( "AlbumName" ); // No spaces.
$albumQuery->setMaxResults( 1 );

$albumId = null;

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

  foreach( $albumFeed as $key => $entry ) {
    $albumId = $entry->getGphotoAlbumId();
  }
}
catch( Zend_Gdata_App_Exception $ex ) {
  // Create the album because the album name could not be found.
  $albumId = $this->createAlbum( $picasa, "AlbumName" );
}

此时,$albumId应该引用有效的相册。

代码迭代专辑Feed。您必须确保唯一标识相册名称;否则代码将返回与名称匹配的多个专辑。

请注意,如果删除相册,然后重新创建相同名称的相册,则会出现一个错误,导致您无法检索该相册。另见:List recreated album names that were previously deleted