当前位置: 首页 > 知识库问答 >
问题:

Microsoft Graph API - 从OneDrive获取最新的照片缩略图

吴浩博
2023-03-14

我正在尝试使用Microsoft Graph API从OneDrive获取最新照片的缩略图。

我一直在使用GitHub上的Microsoft Graph OneDrive Photo Browser示例作为指南,我正在尝试修改它以仅显示最新的照片。

我需要两件事的帮助:

    < li >展开子文件夹。我不确定这是否是正确的术语但是如果我提出这样的请求(https://graph . Microsoft . com/v 1.0/me/drive/special/photos/children?select=id,name)它将返回文件夹的集合。我希望响应包含照片缩略图的集合,而不是必须为每个文件夹发出另一个请求来获取这些缩略图。 < li >按创建日期降序排列请求。

下面是照片浏览器示例应用程序的代码。

using Models;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Graph;

public class ItemsController
{

    private GraphServiceClient graphClient;

    public ItemsController(GraphServiceClient graphClient)
    {
        this.graphClient = graphClient;
    }

    /// <summary>
    /// Gets the child folders and photos of the specified item ID.
    /// </summary>
    /// <param name="id">The ID of the parent item.</param>
    /// <returns>The child folders and photos of the specified item ID.</returns>
    public async Task<ObservableCollection<ItemModel>> GetImagesAndFolders(string id)
    {
        ObservableCollection<ItemModel> results = new ObservableCollection<ItemModel>();

        IEnumerable<DriveItem> items;

        var expandString = "thumbnails, children($expand=thumbnails)";

        // If id isn't set, get the OneDrive root's photos and folders. Otherwise, get those for the specified item ID.
        // Also retrieve the thumbnails for each item if using a consumer client.
        var itemRequest = string.IsNullOrEmpty(id)
            ? this.graphClient.Me.Drive.Special["photos"].Request().Expand(expandString)
            : this.graphClient.Me.Drive.Items[id].Request().Expand(expandString);

        var item = await itemRequest.GetAsync();

        items = item.Children == null
            ? new List<DriveItem>()
            : item.Children.CurrentPage.Where(child => child.Folder != null || child.Image != null);

        foreach (var child in items)
        {
            results.Add(new ItemModel(child));
        }

        return results;
    }
}

共有1个答案

单于承
2023-03-14

这可以使用 OData 查询选项来实现。

1) 扩展是在同一响应主体中引入相关资源的正确术语。

您描述的请求可以在REST中按如下方式完成:<code>https://graph.microsoft.com/v1.0/me/drive/special/photos/children?$select=id,名称

$select指定您只希望在响应正文中包含这些属性,而$expand为每个驱动器项目提取相关的缩略图集合。

2) 您可以添加额外的$orderby查询选项来指定排序顺序。总之,它看起来如下:

https://graph.microsoft.com/v1.0/me/drive/special/photos/children?$选择=id,名称

我相信您可以将这些查询选项中的每一个作为字符串传递给 OrderBy、展开和选择作为“createdDateTime desc”、“缩略图”和“id、name”。

 类似资料:
  • 问题内容: 我需要在活动中获得并显示照片库中最近拍摄的3张照片,而无需任何点击。 完成此步骤后,滚动时,我应该以3 x 3的方式拍摄其他照片。 您知道快速执行此操作的正确方法吗?谢谢。 问题答案: 这是使用适用于iOS 8+设备的框架的解决方案:

  • 问题内容: 我想为Vimeo的视频获取缩略图。 从Youtube获取图像时,我只是这样做: 知道如何为Vimeo做什么? 问题答案: 从Vimeo Simple API文档中: 发出视频请求 video_id 要获取其信息的视频的ID。 输出 指定输出类型。目前,我们提供JSON,PHP和XML格式。 因此获取此URL 解析每个视频以获取缩略图 这是PHP中的近似代码

  • 我正在尝试使用microsoft graph检查是否已签出一个onedrive文件。根据文件https://learn.microsoft.com/en-us/onedrive/developer/rest-api/resources/driveitem,存在DriveItem的发布属性。但默认情况下不返回此属性。但是文档没有提到如何检索此属性。

  • 任何想法都是高度赞赏的。 最好,丹尼尔

  • 我想知道收藏中最新的唱片。怎么做? 注意:我知道以下命令行查询工作: 在idate中添加了时间戳。 问题是收集时间更长,我的“测试”收集真的很大。我需要一个具有恒定时间响应的查询。 如果有更好的mongodb命令行查询,一定要告诉我。

  • Pinch手势对图片进行缩放。即用两根手指往不同方向拖拉照片,照片会被缩小或放大。 作者说:在本站见到过一些照片缩放的例子,都是用ScrollerView设置的,总感觉有点飘浮。本例子用简单地手势控制照片的缩放。 [Code4App.com]