Получить содержимое папки OneDrive по общей ссылке (URL) - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть URL-адрес для папки OneDrive (https://1drv.ms/f/s!AtXoQFW327DIyMwPjZhmauUCSSHXUA). Каждый, имеющий эту ссылку, может получить доступ к папке через браузер.

Теперь моя цель - создать приложение .NET, которое по этой ссылке может получить список файлов / папок внутри этой папки.

Это вообще возможно?

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Лучший способ сделать это - использовать API OneDrive, предоставляемый через Graph.

Вы можете прочитать документацию "Использование общих ссылок" для получения полной информации, но вы по сути сделаете звонок:

https://graph.microsoft.com/v1.0/shares/u!aHR0cHM6Ly8xZHJ2Lm1zL2YvcyFBdFhvUUZXMzI3REl5TXdQalpobWF1VUNTU0hYVUE/driveItem/children

Вы также можете использовать .NET SDK , чтобы избежать самостоятельных вызовов API, и в этом случае ваш код будет выглядеть примерно так:

client.Shares["u!aHR0cHM6Ly8xZHJ2Lm1zL2YvcyFBdFhvUUZXMzI3REl5TXdQalpobWF1VUNTU0hYVUE"].DriveItem.Children.Request().GetAsync();
0 голосов
/ 01 сентября 2018

Selenium Web Driver - хороший вариант для подобных задач.

  1. Открыть обозреватель решений.
  2. Щелкните правой кнопкой мыши по вашему проекту.
  3. Выберите Управление пакетами NuGet ..
  4. Просмотрите и установите эти два: Selenium.Chrome.WebDriver и Selenium.WebDriver.
  5. Вы только что установили селен в свой проект!

Итак, теперь нам нужно создать службу драйверов и найти необходимые элементы на нашем сайте. Насколько я вижу, имена файлов хранятся как класс span с именем signalFieldValue_03700093.

Но " Last Modified " также хранятся в этом классе, мне нужно было пропустить " Last Modified * ", используя код ниже:

        bool skip = false;
        List<string> myFiles = new List<string>();

        ChromeDriverService service = ChromeDriverService.CreateDefaultService();
        ChromeOptions option = new ChromeOptions();
        var driver = new ChromeDriver(service, option);

        driver.Url = "https://1drv.ms/f/s!AtXoQFW327DIyMwPjZhmauUCSSHXUA";
        driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(10);

        foreach (IWebElement element in driver.FindElements(By.XPath("//span[@class='signalFieldValue_03700093']")))
        {
            if (!skip)
            {
                myFiles.Add(element.Text);
                skip = true;
            }
            else
                skip = false;
        }

В результате у нас есть имена файлов в строковом массиве с именем myFiles.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...