10

我的最终目标是在我的谷歌照片帐户中获得一个包含所有文件(照片、视频)的列表,最好是它们的路径。 在此处输入图像描述

如果我必须使用一些 API,我宁愿使用基于 .NET 的 API。你能在这个问题上提供一些方向吗?

我通过 PicasaService 尝试了 Gdata API,但提供我的电子邮件/密码作为凭据不起作用,我总是得到 404 响应。

4

5 回答 5

8

此答案已过时,由于 Picasa 及其 API 已关闭,因此将不再有效

如何列出Google 照片中的所有文件:

我很惊讶我花了多长时间才找到这个 API。这不一定是“秘密信息”,但我想大多数用户都非常乐意以“老式方式”查看他们的 Google 照片。我最初的目标是能够确定哪些照片已经/没有正确上传,然后我冒着删除任何有价值的东西的风险,甚至是我的旧照片的“第三个备份副本”

  • 就像生活中的许多事情一样,有简单的方法困难的方法

  • 根据您的观点,艰难的方式通常更有趣和/或更充实......


简短的回答:(“简单”的方式)

  1. 确保您已在“常规”(默认)浏览器上登录您的Google 帐户。

  2. 点击:<strong> https://picasaweb.google.com/data/feed/api/user/default

您将获得所有 Google相册的基于文本的列表。专辑列表和照片列表看起来都像 RSS 提要(如果您愿意的话,可以这样添加书签)。


我知道不想手动复制照片列表,但我怀疑遇到此问题的其他人想要“简单”的方式:

  • 打开 API URL后,点击第一个相册链接。

  • 点击Ctrl+A然后Ctrl+C从页面复制文本

  • 转到您最喜欢的文本编辑器(Notepad++、Excel、oldschool Notepad 等)并点击Ctrl+V

  • 返回照片列表,点击浏览器的←" />Back</kbd> button and <em>repeat for each album</em>.</p>
</li>
</ul>
<p><strong>Authentication:</strong>  For the sake of simplicty, first <strong>make sure you are signed in</strong> to your Google account from any Google page, such as from the top-right corner of the <a href=Google Search page. This will allow you to use the generic addresses listed below -- otherwise the word "default" would need to be replaced with your Google ID, as as well as other changes to accomodate Google API Authentication.


    API 端点

    如果您有发送GET 请求的首选方法,那么您只需要两个 URL。

    据我了解,所有谷歌照片都存储在相册中(即使它们看起来不是)。因此,为了列出所有照片,您必须解析所有相册,列出每个相册中的照片。

    GET列出您的 Google 相册相册的调用是:

    https://picasaweb.google.com/data/feed/api/user/default
    

    列出相册中所有照片的GET调用是:

    https://picasaweb.google.com/data/feed/api/user/default/albumid/__[albumID]__
    

    以编程方式检索列表:(“. NET API”方式)

    来自Google的 .NET 示例:

    PhotoQuery query = new PhotoQuery(PicasaQuery.CreatePicasaUri(username, albumid));
    
    PicasaFeed feed = service.Query(query);
    
    foreach (PicasaEntry entry in feed.Entries)
    {
        Console.WriteLine(entry.Title.Text);
    }
    

    ★ 字符串“ default”可以用来代替真实的用户名,在这种情况下,服务器将使用当前用户凭据的用户名来验证请求。

    更多信息:Google Picasa .NET 开发人员指南:请求照片列表


    使用 VBA 列出所有 Google 照片:(使用 Excel 的“Web-Scrapey 方式”)

    Excel 具有各种形式的内置 XML 解析功能

    ...但即使是最新的功能似乎也不支持足够的 [我认为是] XML 样式/源代码的变化,对我有用......(或者也许我只是做错了什么。

    因此,我解析 XML 的首选方法是简单地将其加载到带有 an 的字符串中HttpRequest,然后使用InstrMid找到我感兴趣的值。这很混乱,但我已将其用作“快速修复”来检索几个来自多种类型网站的数据类型。

    在写这个答案时,我似乎放错了我的相关代码(过度多任务处理的副作用?!) - 但如果你做到了这一点,你可能会明白它的要点。下面是从 URL 检索源的简单函数。如果您有兴趣看到其余部分,请添加评论,我会更加努力。:-)

    Public Function getHTTP(ByVal url As String) As String
    'equivalent to Excel's WEBSERVICE function
        Dim encResp() As Byte, xmlHTTP As Object
        Set xmlHTTP = CreateObject("MSXML2.XMLHTTP") 'create XML/HTTP object
        xmlHTTP.Open "GET", url, False 'initialize GET request
        xmlHTTP.send 'send request to remote server
        encResp = xmlHTTP.responseBody 'receive raw (encoded) response
        Set xmlHTTP = Nothing 'always clean up after yourself!
        getHTTP = StrConv(encResp, vbUnicode) 'return decoded response
    End Function
    

    也是一种快速计算一个字符串在另一个字符串中出现次数的偷偷摸摸的方法:

    Function countOccur(searchWithin As String, toFind As String) As String
        'returns the count of occurrences of [toFind] within [searchWithin]
        countOccur = UBound(Split(searchWithin, toFind))
    End Function
    

    计算<entry>专辑或照片页面上的出现次数会返回该页面上的专辑或照片的计数。


    相关链接:

于 2018-02-22T04:02:54.733 回答
4

我认为这要容易得多:

这是我的 bash 脚本:

#!/bin/bash
#
# listgp - list google photos
#
# usage: listgp <file>
#
# dumps listing of all curreent user's stored google photos in the speeceifieed file
#
# example access to google api
#
# curl   'https://photoslibrary.googleapis.com/v1/mediaItems?pageToken=CkQKQnR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLnBob3Rvcy5saWJyYXJ5LnYxLkxpc3RNZWRpYUl0ZW1zUmVxdWVzdBKiAUFIX3VRNDM0V1JKaEVkcTRfYU1uUXNnUXlzdGJpUEt4enlhVXZ3QW1TUTB5cVg2SEdRRk85MjkwRlFrRVg2VlJMRVBOVnI4cHRyRWhPcE11bTN3WUFTVHNnTXNFdmc5eUtaODd6TFJsLXh2QjNnSUlabWpLZl9sZV81c2lMc1VCUmhsalNFRXowWm9lazVhczQtNXB0dkJtYzduYUs1b1Vidw'   --header 'Authorization: Bearer ya29.GmTMBkWYE5CNTCSKJJTqlSh7FohUHp6u0hWTiyevsIW5iEGbBC0lmExfCNAldH8kaKBkwszW3Pk-ZwAzFMPNXtM4RlBF8M4vgbf8Lzv99LiVxWtojooSnRxOHWqq7ZEm-4sE9NI-'   --header 'Accept: application/json'  --compressed
#
# to determine your auth token,
#    see https://developers.google.com/photos/library/reference/rest/v1/mediaItems/list
# open dev tools in chrome, go to network tab, run the example, log into your google photos account
#    you can inpect the headers and find one that has 'Authorization: Bearer '.  Copy and paste your token
#    in the script below as the value for 'auth'.
#
#
auth="ya29.GmPNBqtRiw1dvOdiqjoaRkG9CtO2gunFtV8u_00vsAHROatuT5gZlFwNjmXf-CiPxOqxdgDKmweTdZIXeOCVaMM7d8n7E9VQlxAKOZo1zyE5Gq0_Nqqpc7T6csUJ5wablvhajQw"
#
function getItems() {
    pageToken=$1;

    if [ "$pageToken" != "" ]
    then
       pageTokenParam=pageToken="$pageToken";
    else    
    pageTokenParam="";
    fi

    curl  \
     "https://photoslibrary.googleapis.com/v1/mediaItems?$pageTokenParam" \
     --header "Authorization: Bearer $auth" \
     --header 'Accept: application/json'\
     --compressed > page

    cat page >> list

    grepOut=(`grep nextPageToken page | sed s/\"//g`)

    if [ "${grepOut[0]}" == "" ]
    then
    exit;
    fi

    getItems ${grepOut[1]}
}

getItems
于 2019-03-15T04:02:11.677 回答
4

如何列出特定相册或整个库中的所有照片

已弃用的 Picasa API 替代方案

由于 Picasa API 已被 Google 弃用,因此Google Photos API可用于获取有关相册的信息,并获取该相册甚至整个 Google Photos 库中的照片和视频列表。

这可以使用 REST、Java 或 PHP(如其示例页面上所列)来完成。

开始使用https ://developers.google.com/photos/


谷歌提供的 Web API

您还可以通过访问示例页面上显示的 Web 上的 API 方法链接之一轻松测试 API 功能,而无需下载或编码任何内容:


要获取特定相册中所有照片和视频的列表,请使用:

  • 搜索媒体项目: https ://developers.google.com/photos/library/reference/rest/v1/mediaItems/search
    • 这样您就可以列出一张专辑中的媒体项目。
    • 使用此方法,您一次最多只能在一个相册中列出100 个媒体项目(在一个页面上)。每个响应nextPageToken最后都会给你。使用pageToken参数浏览页面。
    • 如果你需要这样做几次,没问题。对于像这样简单且重复的任务,您可以利用TinyTask记录鼠标和键盘输入,并将枯燥的工作自动化

笔记

对于简单的搜索和列表,您可以使用上面提到的每个页面最多提供 100 个结果的 Web API。对于任何更高级的内容,我建议您编写将遍历所有结果页面并存储或打印出您需要的信息的代码。对于无编码解决方案,TinyTask是一个不错的选择。

于 2019-03-06T13:21:24.980 回答
3

如果您想列出所有照片并根据备份检查它们,您可以使用我的 python 项目https://pypi.org/project/gphotos-sync/,它使用新的(ish)Google Photos API。

这将:-

  • 将所有媒体和专辑索引到 SQL 数据库中
  • 下载本地备份(如果需要)
  • 将您的新本地备份与以前的备份进行比较
  • 为您提供库中缺少的文件的列表
  • 为您提供以前备份中丢失的文件列表
  • 为您提供备份文件夹中所有重复项的列表

请注意,比较适用于文件本身中的元数据,并且文件夹结构和文件名不需要匹配才能工作。

于 2019-03-07T12:46:33.023 回答
1

试试这个方法:

  1. 选择您帐户中的所有照片。如果你有很多,你可能会遇到麻烦,解决方法是选择第一个并向下滚动。图像将加载,按住 shift 按钮将图像悬停在光标下,因此单击带有 shift 的图像以尽可能多地选择。
  2. 当您有必要的选择时,单击下载图像。文件开始下载。您的任务是中断它并尝试使用一些存档查看器进入保存的文件。该文件已损坏,但至少存档将包含所有文件名。
于 2017-07-11T20:22:59.413 回答