获取Google相册中所有文件的列表

时间:2016-04-26 17:11:14

标签: excel vba google-api picasa google-photos

我的最终目标是获取包含我的Google相册帐户中所有文件(照片,视频)的列表,最好是路径。 enter image description here

如果我必须使用某些API,我宁愿使用基于.NET的API。你能在这件事上提供一些指示吗?

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

5 个答案:

答案 0 :(得分:6)

如何列出 Google相册中的所有文件:

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

  • 像生活中的许多事情一样,简单的方式艰难的方式

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

简答: (" Easy" Way)

  1. 确保您已经登录了#34;平常" Google Account (默认)浏览器。

  2. 点击此处:

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

  3. 您将获得所有Google相册相册的基于文本的列表。专辑列表和照片列表看起来都像RSS Feed一样可疑(如果您愿意,可以将其添加为书签)。

    我知道不希望手动手动复制 的照片列表,但我怀疑其他人遇到过这个问题想要" easy" 方式:

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

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

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

      < / LI>
    • 返回照片列表,点击浏览器的 ←返回按钮,然后重复每张专辑

    身份验证:为了简单起见,首先确保您从任何Google页面登录到您的Google帐户,例如从右上角Google Search page。这将允许您使用下面列出的通用地址 - 否则单词&#34; default&#34;需要使用您的Google ID替换,以及其他更改以容纳Google API Authentication

    API端点

    如果您有首选方式发送GET requests,那么您需要的只是两个网址。

    根据我的理解,所有 Google照片都存储在相册中(即使它们看起来并非如此)。因此,为了列出所有照片,您必须解析所有相册,并在每张相册中列出照片。

    列出您的Google相册的GET来电是:

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

    列出相册中所有照片的GET来电是:

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

    以编程方式检索列表: (&#34; .NET API&#34; Way)

    来自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);
    }
    
      

    ★字符串&#34; default&#34;可用于代替真实用户名,在这种情况下,服务器将使用用于验证请求的当前用户凭据的用户名。

    更多信息: Google Picasa .NET Developer's Guide: Request a List of Photos

    使用VBA列出所有Google相片: (&#34; Web-Scrapey Way&#34; with Excel)

    Excel具有内置的XML-Parsing功能,形式多种多样:

    ...但是,即使是最新的功能似乎也支持足够的[我认为的] XML样式/来源的变化,对我有用......(或者我可能只是在做出了点问题。

    因此,我首选的解析XML的方法是简单地将其加载到带有HttpRequest的字符串中,然后使用InstrMid来定位我感兴趣的值in。它很乱,但我已经把它用作快速解决方案&#34;从几种类型的站点中检索几种类型的数据。

      

    在写这个答案的时候,我似乎错放了我的相关代码(过度多任务的副作用?!) - 但如果你做到这一点,你可能会得到它的要点。下面是从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>的出现次数会返回该页面上相册或照片的数量。

    相关链接:

答案 1 :(得分:1)

如何列出特定专辑或整个库中的所有媒体项目

不推荐使用的Picasa API替代方法

自从Google弃用Picasa API以来, Google Photos API 可以用于获取有关相册的信息,并获取该相册甚至整个Google中的照片和视频列表。照片库。

这可以使用REST,Java或PHP(如其 examples page 中所列)完成。

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


Google提供的Web API

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


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

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

注意

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

答案 2 :(得分:0)

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

这将:-

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

请注意,比较是针对文件本身中的元数据进行的,并且文件夹结构和文件名不需要匹配就可以工作。

答案 3 :(得分:0)

我认为这容易得多:

这是我的bash脚本:

import pandas as pd
from flask import Flask,render_template,url_for,request
import numpy as np
from keras import backend as K
import os
from importlib import reload
def set_keras_backend(backend):

installed Python 3.7 later uninstalled it, and installed Python 3.6,
Flask==0.12.2
Flask-Cors==3.0.3
h5py==2.7.1
imutils==0.5.2
Jinja2==2.10
Keras==2.2.4
Keras-Applications==1.0.6
Keras-Preprocessing==1.0.5
matplotlib==2.1.2
numpy==1.14.0
numpydoc==0.7.0
pandas==0.22.0
scikit-image==0.13.1
scikit-learn==0.19.1
statsmodels==0.8.0
tensorflow==1.12.0
Theano==1.0.4
six==1.11.0

答案 4 :(得分:-1)

尝试这种方式:

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