我的最终目标是获取包含我的Google相册帐户中所有文件(照片,视频)的列表,最好是路径。
如果我必须使用某些API,我宁愿使用基于.NET的API。你能在这件事上提供一些指示吗?
我已经通过PicasaService尝试了Gdata API,但提供我的电子邮件/密码作为凭据不起作用,我总是收到404响应。
答案 0 :(得分:6)
我很惊讶我找到这个API花了多长时间。它不一定是秘密信息"但我想大多数用户都非常乐意查看他们的Google照片"老式的方式"。我最初的目标是能够确定哪些照片已经/没有正确上传,然后我冒险删除任何有价值的内容,甚至是我的"第3张备份副本" 旧照片。
像生活中的许多事情一样,简单的方式和艰难的方式。
根据您的观点,艰难的方式通常更有趣和/或更充实......
确保您已经登录了#34;平常" Google Account (默认)浏览器。
点击此处:
您将获得所有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。
如果您有首选方式发送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]__
来自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
Excel具有内置的XML-Parsing功能,形式多种多样:
...但是,即使是最新的功能似乎也支持足够的[我认为的] XML样式/来源的变化,对我有用......(或者我可能只是在做出了点问题。
因此,我首选的解析XML的方法是简单地将其加载到带有HttpRequest
的字符串中,然后使用Instr
和Mid
来定位我感兴趣的值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)
自从Google弃用Picasa API以来, Google Photos API 可以用于获取有关相册的信息,并获取该相册甚至整个Google中的照片和视频列表。照片库。
这可以使用REST,Java或PHP(如其 examples page 中所列)完成。
开始使用:https://developers.google.com/photos/
通过访问示例页面上显示的Web上的API方法链接之一,您还可以轻松地测试API功能,而无需下载或编写任何代码:
要获取特定相册中所有照片和视频的列表,请使用:
nextPageToken
。使用pageToken
参数浏览页面。要进行简单的搜索和列出,您可以使用上述网络API,每页最多可提供100个结果。对于任何更高级的内容,我建议您编写将遍历所有结果页面并存储或打印出所需信息的代码。对于没有编码的解决方案, TinyTask 是一个很好的选择。
答案 2 :(得分:0)
如果要列出所有照片并对照备份检查它们,则可以使用我的python项目https://pypi.org/project/gphotos-sync/,该项目使用新的(ish)Google Photos API。
这将:-
请注意,比较是针对文件本身中的元数据进行的,并且文件夹结构和文件名不需要匹配就可以工作。
答案 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)
尝试这种方式: