Разное

Api диска яндекс: Новый REST API Яндекс.Диска и Полигон. А также зачем Диску ещё один API и как мы его делали

Содержание

Новый REST API Яндекс.Диска и Полигон. А также зачем Диску ещё один API и как мы его делали

Многие знают, что у Диска уже достаточно давно есть API на WebDAV. Он достаточно узко заточен под работу с файловой структурой, а у его реализации на разных платформах часто бывают некритичные, но не очень приятные недостатки. Поэтому в дополнение к WebDAV мы запускаем REST API, который позволит разработчикам делать всё то же и немного больше.

Например, при использовании нового API все приложения, которым просто нужно хранить свои файлы в Диске, смогут получать доступ только к своей папке, лежащей в Диске пользователя в папке «Приложения». В WebDAV API сервису для этого придётся получать у пользователя разрешение на запись/чтение всего Диска, а не только конкретной папки.

В этом посте я хочу рассказывать не о структуре или об операциях, которые умеет выполнять наш API — там всё довольно очевидно — а сразу перейду к интересным вещам: что такое Hypermedia и Machine-readable and Self-describing API, и как мы все это реализовали.

Hypermedia API

Мы снабдили наш API гиперссылками, которые связывают его ресурсы между собой. Они позволяют превратить работу клиента из дёрганья захардкоденных URL в перемещение по ссылкам, которые предоставляет API в теле возвращаемых объектов. Мы взяли за основу стандарт HAL, как один из наиболее простых и зрелых стандартов в этой области. В настоящее время HAL имеет драфт RFC-стандарта, и его уже можно встретить в API некоторых крупных компаний.

Благодаря поддержке HAL клиент понимает, что можно делать с каждым объектом, знает готовый или шаблонизированный в соответствии с RFC 6570 URL и HTTP-метод действия. В свою очередь, разработчики клиентских приложений могут писать меньше кода, тратя на это меньше времени, а этот код становится проще и легче для восприятия. Например, код, выполняющий базовые операции с папками в Диске, не использующий гиперссылки, будет выглядеть примерно так:

Скрытый текст

# -*- coding: utf-8 -*-
import urllib
import httplib
import json
import uritemplate

headers = {'Authorization': '<OAuth токен>'}
connection = httplib. HTTPSConnection('cloud-api.yandex.net')
resource_url = '/v1/disk/resources'

def request(method, url, query=None):
    if query:
        qs = urllib.urlencode(query)
        url = '%s?%s' % (url, qs)
    connection.request(method, url, headers=headers)
    resp = connection.getresponse()
    content = resp.read()
    obj = json.loads(content) if content else None
    status = resp.status
    if status == 201:
        # получаем созданный объект
        obj = request(obj['method'], obj['href'])
    return obj

if __name__ == '__main__':
    # создаём папку
    path = '/foo'
    folder = request('PUT', resource_url, {'path': path})

    # перемещаем папку и получаем перемещённую
    new_path = '/bar'
    folder = request('POST', '%s/move' % resource_url, {'path': new_path, 'from': path})

    # копируем папку и получаем новую папку
    copy_path = '/foobar'
    folder_copy = request('POST', '%s/copy' % resource_url, {'path': copy_path, 'from': new_path})

    # удаляем папки
    request('DELETE', resource_url, {'path': new_path})
    request('DELETE', resource_url, {'path': copy_path})

При использовании гиперссылок пропадает необходимость вручную собирать URL и беспокоиться о параметрах запроса и без того известных объекту, над которым выполняется операция:Скрытый текст

# -*- coding: utf-8 -*-
import urllib
import httplib
import json
import uritemplate

headers = {'Authorization': '<OAuth токен>', 'Accept': 'application/hal+json'}
connection = httplib. HTTPSConnection('cloud-api.yandex.net')
resource_url = '/v1/disk/resources?path={path}'

def request(method, url, params=None):
    url = uritemplate.expand(url, params or {})
    connection.request(method, url, headers=headers)
    resp = connection.getresponse()
    content = resp.read()
    obj = json.loads(content) if content else None
    status = resp.status
    if status == 201:
        # получаем созданный объект
        status, obj = request(obj['method'], obj['href'])
    return status, obj

def do(resource, action, params=None):
    link = resource['_links'][action]
    _, obj = request(link['method'], link['href'], params)
    return obj

if __name__ == '__main__':
    # создаём папку
    _, folder = request('PUT', uritemplate.expand(resource_url, {'path': '/foo'}))

    # перемещаем папку и получаем перемещённую
    folder = do(folder, 'move', {'path': '/bar'})

    # копируем папку и получаем новую папку
    folder_copy = do(folder, 'copy', {'path': '/foobar'})

    # удаляем папки
    do(folder, 'delete')
    do(folder_copy, 'delete')
Machine-readable & Self-describing API

Кроме гипермедиа, мы решили сделать наш API самоописываемым и машиночитаемым. В процессе подготовки мы изучили различные стандарты описания REST API, такие как RAML, WADL, JSON Schema+JSON HyperSchema, IO Docs, Apiary Blueprints, однако окончательный выбор пал на Swagger. Одно из основных преимуществ Swagger заключается в том, что он развивается как стандарт (API Яндекс.Диска поддерживает версию спецификации 1.2, но сейчас уже ведётся разработка версии стандарта 2.0). Он описывает REST API с помощью JSON, достаточно прост для понимания и имеет неплохую экосистему инструментов для работы с описаниями API.

Swagger-документация охватывает все доступные в API ресурсы и методы их вызова. Для каждого метода ресурса есть описание принимаемых им параметров и структуры возвращаемых объектов.

Это описание можно использовать, как в качестве отправной точки для универсальных Swagger-клиентов, так и для автогенерации части кода нативных SDK для различных языков.

Полигон

Благодаря наличию Swagger-документации API мы запустили проект Полигон, который даёт разработчикам возможность, не написав ни строчки кода, отправлять боевые запросы в API. Кроме того, Полигон может служить примером универсального клиента для любого API, поддерживающего Swagger-описание. Наш разработчик Рома Акинфеев подготовил скринкаст, в котором рассказал немного о возможностях Полигона.

Больше приложений хороших и разных!

Сейчас функциональности API Диска более чем достаточно для разработки приложений, работающих с контентом пользователей, например, фоторедакторов, генераторов слайд-шоу, медиа-проигрывателей и т.д.

С помощью нашего API можно хранить и синхронизировать данные приложения между девайсами пользователя, например, сохранять прогресс в играх или хранить избранное и закладки пользователя, созданные в вашем приложении.

Мы старались сделать новый API Диска таким, чтобы вам было легко и приятно им пользоваться, меньше штудируя документацию и больше интуитивно осваивая его на практике. Поэтому без лишних слов предлагаем воспользоваться Полигоном и самостоятельно познакомиться с новым REST API Яндекс.Диска.

Новый REST API Яндекс. Диска и Полигон. А также зачем Диску ещё один API и как мы его делали

Многие знают, что у Диска уже достаточно давно есть API на WebDAV. Он достаточно узко заточен под работу с файловой структурой, а у его реализации на разных платформах часто бывают некритичные, но не очень приятные недостатки. Поэтому в дополнение к WebDAV мы запускаем REST API, который позволит разработчикам делать всё то же и немного больше.

Например, при использовании нового API все приложения, которым просто нужно хранить свои файлы в Диске, смогут получать доступ только к своей папке, лежащей в Диске пользователя в папке «Приложения». В WebDAV API сервису для этого придётся получать у пользователя разрешение на запись/чтение всего Диска, а не только конкретной папки.

В этом посте я хочу рассказывать не о структуре или об операциях, которые умеет выполнять наш API — там всё довольно очевидно — а сразу перейду к интересным вещам: что такое Hypermedia и Machine-readable and Self-describing API, и как мы все это реализовали.

Hypermedia API

Мы снабдили наш API гиперссылками, которые связывают его ресурсы между собой. Они позволяют превратить работу клиента из дёрганья захардкоденных URL в перемещение по ссылкам, которые предоставляет API в теле возвращаемых объектов. Мы взяли за основу стандарт

HAL

, как один из наиболее простых и зрелых стандартов в этой области. В настоящее время HAL имеет драфт RFC-стандарта, и его уже можно встретить в API некоторых крупных компаний.

Благодаря поддержке HAL клиент понимает, что можно делать с каждым объектом, знает готовый или шаблонизированный в соответствии с RFC 6570 URL и HTTP-метод действия. В свою очередь, разработчики клиентских приложений могут писать меньше кода, тратя на это меньше времени, а этот код становится проще и легче для восприятия. Например, код, выполняющий базовые операции с папками в Диске, не использующий гиперссылки, будет выглядеть примерно так:

Скрытый текст

# -*- coding: utf-8 -*-
import urllib
import httplib
import json
import uritemplate

headers = {'Authorization': '<OAuth токен>'}
connection = httplib. HTTPSConnection('cloud-api.yandex.net')
resource_url = '/v1/disk/resources'

def request(method, url, query=None):
    if query:
        qs = urllib.urlencode(query)
        url = '%s?%s' % (url, qs)
    connection.request(method, url, headers=headers)
    resp = connection.getresponse()
    content = resp.read()
    obj = json.loads(content) if content else None
    status = resp.status
    if status == 201:
        # получаем созданный объект
        obj = request(obj['method'], obj['href'])
    return obj

if __name__ == '__main__':
    # создаём папку
    path = '/foo'
    folder = request('PUT', resource_url, {'path': path})

    # перемещаем папку и получаем перемещённую
    new_path = '/bar'
    folder = request('POST', '%s/move' % resource_url, {'path': new_path, 'from': path})

    # копируем папку и получаем новую папку
    copy_path = '/foobar'
    folder_copy = request('POST', '%s/copy' % resource_url, {'path': copy_path, 'from': new_path})

    # удаляем папки
    request('DELETE', resource_url, {'path': new_path})
    request('DELETE', resource_url, {'path': copy_path})

При использовании гиперссылок пропадает необходимость вручную собирать URL и беспокоиться о параметрах запроса и без того известных объекту, над которым выполняется операция:

Скрытый текст

# -*- coding: utf-8 -*-
import urllib
import httplib
import json
import uritemplate

headers = {'Authorization': '<OAuth токен>', 'Accept': 'application/hal+json'}
connection = httplib. HTTPSConnection('cloud-api.yandex.net')
resource_url = '/v1/disk/resources?path={path}'

def request(method, url, params=None):
    url = uritemplate.expand(url, params or {})
    connection.request(method, url, headers=headers)
    resp = connection.getresponse()
    content = resp.read()
    obj = json.loads(content) if content else None
    status = resp.status
    if status == 201:
        # получаем созданный объект
        status, obj = request(obj['method'], obj['href'])
    return status, obj

def do(resource, action, params=None):
    link = resource['_links'][action]
    _, obj = request(link['method'], link['href'], params)
    return obj

if __name__ == '__main__':
    # создаём папку
    _, folder = request('PUT', uritemplate.expand(resource_url, {'path': '/foo'}))

    # перемещаем папку и получаем перемещённую
    folder = do(folder, 'move', {'path': '/bar'})

    # копируем папку и получаем новую папку
    folder_copy = do(folder, 'copy', {'path': '/foobar'})

    # удаляем папки
    do(folder, 'delete')
    do(folder_copy, 'delete')
Machine-readable & Self-describing API

Кроме гипермедиа, мы решили сделать наш API самоописываемым и машиночитаемым. В процессе подготовки мы изучили различные стандарты описания REST API, такие как RAML, WADL, JSON Schema+JSON HyperSchema, IO Docs, Apiary Blueprints, однако окончательный выбор пал на Swagger. Одно из основных преимуществ Swagger заключается в том, что он развивается как стандарт (API Яндекс.Диска поддерживает версию спецификации 1.2, но сейчас уже ведётся разработка версии стандарта 2.0). Он описывает REST API с помощью JSON, достаточно прост для понимания и имеет неплохую экосистему инструментов для работы с описаниями API.

Swagger-документация охватывает все доступные в API ресурсы и методы их вызова. Для каждого метода ресурса есть описание принимаемых им параметров и структуры возвращаемых объектов.

Это описание можно использовать, как в качестве отправной точки для универсальных Swagger-клиентов, так и для автогенерации части кода нативных SDK для различных языков.

Полигон

Благодаря наличию Swagger-документации API мы запустили проект

Полигон

, который даёт разработчикам возможность, не написав ни строчки кода, отправлять боевые запросы в API. Кроме того, Полигон может служить примером универсального клиента для любого API, поддерживающего Swagger-описание. Наш разработчик Рома Акинфеев подготовил

скринкаст

, в котором рассказал немного о возможностях Полигона.

Больше приложений хороших и разных!

Сейчас функциональности API Диска более чем достаточно для разработки приложений, работающих с контентом пользователей, например, фоторедакторов, генераторов слайд-шоу, медиа-проигрывателей и т.д.

С помощью нашего API можно хранить и синхронизировать данные приложения между девайсами пользователя, например, сохранять прогресс в играх или хранить избранное и закладки пользователя, созданные в вашем приложении.

Мы старались сделать новый API Диска таким, чтобы вам было легко и приятно им пользоваться, меньше штудируя документацию и больше интуитивно осваивая его на практике. Поэтому без лишних слов предлагаем воспользоваться Полигоном и самостоятельно познакомиться с новым REST API Яндекс.Диска.

Python API для Яндекс. Диск

Дело было вечером, делать было нечего, вот и решил я написать обёртку для Яндекс Диска на python, дабы потом прикрутить скрипты бекапа для своих VPS. Готовое решение можно посмотреть на github или установить через pip: pip install YaDiskClient. Прежде чем начать, как полагается, посмотрел что же уже реализовано.
Есть одна библиотека на PHP, которая удовлетворяет всем моим требованиям за исключением языка — хочется всё же работать на питоне. На pypi нашёл наработку от lexich. Вроде делает всё необходимое и даже больше, но какая-то она монстроидальная. Мне-то надо всего несколько методов. В общем, решил сам поковыряться с webdav и API Яндекс.Диска. К слову, авторизация в первом проекте реализована через OAuth, во втором — Basic. Я остановился на втором как наиболее простом. Класс для OAuth есть в первом коммите, может кому и пригодится 🙂

Yandex.Disk API

На странице API Yandex.Disk есть руководство как организовать авторизацию. Подключать к такой простой задаче как моя OAuth черезчур затратно, так что Basic. Для работы с сетью я использую библиотеку requests, в которой Basic-авторизация уже прозрачно реализована через передачу параметра auth=(login, password). По стандарту такой тип входа реализовывается посредством установки заголовка HTTP запроса “Authorization” в base_64(“%s:%s” % (login, password)). Ура, теперь мы можем работать со своим облаком 🙂

Следующий шаг — выполнение примитивного запроса. Для примера я взял получение информации о свободном месте, отправив такой запрос:

PROPFIND / HTTP/1.1
Host: webdav.yandex.ru
Accept: */*
Depth: 0
Authorization: OAuth 0c4181a7c2cf4521964a72ff57a34a07

<D:propfind xmlns:D="DAV:">
  <D:prop>
    <D:quota-available-bytes/>
    <D:quota-used-bytes/>
  </D:prop>
</D:propfind>

К сожалению, requests поддерживает только REST-запросы, среди которых отсутствует тип PROPFIND, так что придётся делать через сессии:

req = requests.Request(type, url, headers=headers, auth=(self. login, self.password), data=data)
with requests.Session() as s:
return s.send(req.prepare())

где type=‘PROPFIND’, url=‘/’, headers={‘Accept’: ‘/’, ‘Depth’: 0}, auth=(‘[email protected]’, ‘password’), data=<та большая XML>. В ответ придёт XML, где в узлах “d:quota-available-bytes” и “d:quota-used-bytes” будет нужная информация. И тут вторая засада: Yandex использует namespace xmlns:d=“DAV:“. К сожалению, в lxml в методы выборки надо явно передавать пространства имён, участвующие в запросе. Т.е. tree.xpath(”//d:prop”) — ничего не найдёт и даже ругнётся на префикс d, а вот tree.xpath(“//d:prop”, {’d’: “DAV:“}) — сработает на ура. На самом деле использование в данном случае lxml — из пушки по воробьям, достаточно и xml.dom.minidom.

Методы создания, копирования, удаления файлов тривиальны. Если кому-то будет интересно, то посмотреть можно здесь.

Тесты

Стало необходимым писать тесты для своих программ, так что побудем в тренде 🙂 Для тестирования принято использовать библиотеку unittest. Документации по ней море, но мне бы хотелось остановиться на двух моментах. Первый — методы setUp и tearDown. Они выполняются перед и после каждого метода класса теста. В общем случае подключение к Диску может занимать заметное время, так что я вынес инициализацию в методы класса setUpClass и tearDownClass, которые будут вызыватся только один раз за прогон.

Второй момент — порядок выполнения тестов. По умолчанию он определяется по имени метода. Все методы с префиксом “test_” п

чтение списка ресурсов и скачивание файлов. – Delphi в Internet

Итак, продолжим тему работы с сервисом Яндекс.Диск в Delphi. Кто не знает или уже забыл – ранее я уже писал про работу с API этого сервиса и даже выложил небольшой исходник, реализующий основные методы WebDAV с использованием моей любимой библиотеки Synapse. В прошлый раз я остановился на том, что реализовал в отдельном классе TWebDAVSend методы протокола WebDAV такие как PROPFIND, MKCOL и т. д. Сегодня мы с Вами немного расширим возможности этого класса и сделаем возможность скачивать и загружать файла в аккаунт Яндекс.Диска.

Открываем документацию API Яндекс.Диска, проект Delphi и приступаем к работе.

Чтение списка ресурсов

В начале немного разберемся с тем, что присылается нам в ответе на запрос методом PROPFIND. После выполнения PROPFIND сервер нам возвращает XML-файл, содержащий свойства ресурсов. При этом каждый узел с описанием свойств ресурса может содержать следующие дочерние элементы:

  • d:href – путь к ресурсу
  • d:propstat– содержит код статуса выполнения операции и набор индивидуальных свойств ресурса
    • d:status – код статуса выполнения операции. Например, если мы будем использовать метод PROPPATCH (редактирование свойств ресурса), то этот узел поможет нам узнать прошла ли операция успешно или нет.
    • d:prop– коллекция свойств ресурса
      • d:creationdate – дата создания ресурса в UTC
      • d:displayname – имя ресурса, которое используется для отображения в интерфейсе пользователя
      • d:getcontentlength – размер ресурса в байтах. Соответственно, для коллекций это свойство всегда равно 0.
      • d:getlastmodified – дата последнего изменения ресурса (по формату отличается от даты, представленной в d:creationdate)
      • d:resourcetype – признак того, что ресурс является коллекцией. Если у этого узла имеется дочерний пустой узел d:collection,  то ресурс является коллекцией, иначе – файлом.

Теперь допишем наш проект и сделаем так, чтобы в интерфейсе программы отображались все файлы и коллекции запрошенные методом PROPFIND. Интерфейс программы у меня теперь стал таким:

В ListView будем выводить информацию по ресурсам. В качестве заготовки будущих классов для работы с API Яндекс.Диска я создал следующие классы:

класс, хранящий информацию по ресурсу:

type
  TWDResource = class
  private
    FHref         : string;
    FStatusCode   : integer;
    FContentLength: int64;
    FCreationDate : TDateTime;
    FLastmodified : TDateTime;
    FDisplayName  : string;
    FContentType  : string;
    FCollection   : Boolean;
  public
    property StatusCode   : integer read FStatusCode;
    property ContentLength: int64 read FContentLength;
    property CreationDate : TDateTime read FCreationDate;
    property Lastmodified : TDateTime read FLastmodified;
    property DisplayName  : string read FDisplayName;
    property ContentType  : string read FContentType;
    property Href: string read FHref;
    property Collection   : Boolean read FCollection;
end;

Потом в этот класс можно будет добавить методы для редактирования свойств и т. д. Пока же он у нас будет выполнять одну простую роль – хранить информацию по одному ресурсу.
Следующий класс – коллекция (список ресурсов) аккаунта:

TWDResourceList = class(TList)
public
  constructor Create;
  destructor Destroy;override;
  procedure Clear;
end;

Здесь, вроде бы, тоже ничего сверхсложного нету – класс хранит список всех запрошенных ранее ресурсов и, по необходимости – чистит список.
Теперь приступим к работе с API и напишем обработчик OnClick кнопки “Выполнить” следующим образом:

procedure TForm5.Button1Click(Sender: TObject);
 
procedure ParseResources(const AXMLStr: string);
var XMLDoc: IXMLDocument;
    ResponseNode,ChildNode,PropNodeChild, PropertyNode: IXMLNode;
     s, su,Value: string;
begin
  XMLDoc:=TXMLDocument.Create(nil);
  try
    XMLDoc.LoadFromXML(AXMLStr);
    if not XMLDoc.IsEmptyDoc then
      begin
        ResponseNode:=XMLDoc.DocumentElement.ChildNodes.First;
        while Assigned(ResponseNode) do
          begin
            Resources. Add(TWDResource.Create);
            ChildNode:=ResponseNode.ChildNodes.First;
            while Assigned(ChildNode) do
              begin
                if ChildNode.NodeName='d:href' then
                   Resources.Last.FHref:=ChildNode.Text
                else
                  if ChildNode.NodeName='d:propstat' then
                    begin
                      PropNodeChild:=ChildNode.ChildNodes.First;
                      while Assigned(PropNodeChild) do
                        begin
                          if PropNodeChild.NodeName='d:status' then
                            begin
                              Value:=PropNodeChild.Text;
                              s := Trim(SeparateRight(Value, ' '));
                              su := Trim(SeparateLeft(s, ' '));
                              Resources.Last.FStatusCode:=StrToIntDef(su, 0);
                            end
                          else
                            if PropNodeChild.NodeName='d:prop' then
                              begin
                                PropertyNode:=PropNodeChild.ChildNodes.First;
                                while Assigned(PropertyNode) do
                                  begin
                                    if PropertyNode.NodeName='d:creationdate' then
                                      Resources.Last.FCreationDate:=UTCToSystemTime(ISODateTime2UTC(PropertyNode.Text))
                                    else
                                      if PropertyNode.NodeName='d:displayname' then
                                        Resources.Last.FDisplayName:=Utf8ToAnsi(PropertyNode.Text)
                                      else
                                        if PropertyNode.NodeName='d:getcontentlength' then
                                          Resources.Last.FContentLength:=PropertyNode.NodeValue
                                        else
                                          if PropertyNode.NodeName='d:getlastmodified' then
                                            Resources.Last.FLastmodified:=DecodeRfcDateTime(PropertyNode.Text)
                                          else
                                            if PropertyNode.NodeName='d:resourcetype' then
                                              Resources.Last.FCollection:=PropertyNode.ChildNodes.Count&gt;0;
                                    PropertyNode:=PropertyNode.NextSibling;
                                  end;
                              end;
                          PropNodeChild:=PropNodeChild.NextSibling;
                        end;
                    end;
                ChildNode:=ChildNode.NextSibling;
              end;
            ResponseNode:=ResponseNode.NextSibling;
          end;
      end;
  finally
    XMLDoc:=nil;
  end;
end;
 
var Str: string;
  I: Integer;
begin
  WebDAV.Login := Edit1.Text;
  WebDAV.Password := Edit2.Text;
  Resources.Clear;
  Str:=WebDAV.PROPFIND(1, InputBox('Ресурс', 'Ресурс', ''));
  if Length(Trim(Str))&gt;0 then
    begin
      ParseResources(Str);
      for I := 0 to Resources.Count-1 do
        begin
          with ListView1.Items.Add do
            begin
              Caption:=Resources[i].DisplayName;
              SubItems.Add(Resources[i].Href);
              SubItems.Add(DateTimeToStr(Resources[i].CreationDate));
              SubItems.Add(DateTimeToStr(Resources[i].Lastmodified));
              SubItems.Add(IntToStr(Resources[i].ContentLength));
              if Resources[i].Collection then
                SubItems.Add('yes')
              else
                SubItems.Add('no');
              SubItems.Add(IntToStr(Resources[i].StatusCode))
            end;
        end;
 
    end;
end;

Выглядит довольно жутенько, поэтому рассмотрим этот метод по частям. Начнем с основного кода процедуры. Вначале мы записываем логин/пароль пользователя и запрашиваем методом PROPFIND сведения по ресурсу, который пользователь задаст в InputBox:

WebDAV.Login := Edit1.Text;
  WebDAV.Password := Edit2.Text;
  Resources.Clear;
  Str:=WebDAV.PROPFIND(1, InputBox('Ресурс', 'Ресурс', ''));

Если запрос прошел успешно и сервер вернул нам ответ, то выполняется вложенная процедура ParseResources, которая и разбирает XML-документ. Сама процедура хоть и выглядит немного громоздко, но является довольно простой – проходит последовательно по всем узлам XML и считывает информацию по ресурсам. Если Вам трудно разобраться с тем, что делает ParseResources, то ниже я представил Вам листинг этой процедуры с некоторыми комментариями к коду:

procedure ParseResources(const AXMLStr: string);
var XMLDoc: IXMLDocument;
    ResponseNode,ChildNode,PropNodeChild, PropertyNode: IXMLNode;
     s, su,Value: string;
begin
  XMLDoc:=TXMLDocument.Create(nil);
  try
    XMLDoc.LoadFromXML(AXMLStr);
    if not XMLDoc.IsEmptyDoc then
      begin
        //выбираем первый узел d:response
        ResponseNode:=XMLDoc.DocumentElement.ChildNodes.First;
        while Assigned(ResponseNode) do
          begin
            //создаем запись нового ресурса в списке
            Resources.Add(TWDResource.Create);
            //проходим по дочерним узлам d:response
            ChildNode:=ResponseNode.ChildNodes.First;
            while Assigned(ChildNode) do
              begin
                if ChildNode.NodeName='d:href' then
                   Resources.Last.FHref:=ChildNode.Text
                else
                  //нашли узел со свойствами ресурса
                  if ChildNode.NodeName='d:propstat' then
                    begin
                      //выбираем первый дочерний узел, обычно - это d:status
                      PropNodeChild:=ChildNode.ChildNodes.First;
                      while Assigned(PropNodeChild) do
                        begin
                          //считываем код статуса
                          if PropNodeChild.NodeName='d:status' then
                            begin
                              Value:=PropNodeChild.Text;
                              s := Trim(SeparateRight(Value, ' '));
                              su := Trim(SeparateLeft(s, ' '));
                              Resources.Last.FStatusCode:=StrToIntDef(su, 0);
                            end
                          else
                            //нашли узел d:prop - проходимся по его дочерним узлам
                            if PropNodeChild.NodeName='d:prop' then
                              begin
                                PropertyNode:=PropNodeChild.ChildNodes.First;
                                while Assigned(PropertyNode) do
                                  begin
                                    if PropertyNode.NodeName='d:creationdate' then
                                      Resources.Last.FCreationDate:=UTCToSystemTime(ISODateTime2UTC(PropertyNode.Text))
                                    else
                                      if PropertyNode.NodeName='d:displayname' then
                                        Resources.Last.FDisplayName:=Utf8ToAnsi(PropertyNode.Text)
                                      else
                                        if PropertyNode.NodeName='d:getcontentlength' then
                                          Resources.Last.FContentLength:=PropertyNode.NodeValue
                                        else
                                          if PropertyNode.NodeName='d:getlastmodified' then
                                            Resources.Last.FLastmodified:=DecodeRfcDateTime(PropertyNode.Text)
                                          else
                                            if PropertyNode.NodeName='d:resourcetype' then
                                              Resources.Last.FCollection:=PropertyNode.ChildNodes.Count&gt;0;
                                    //выбираем следующий дочерний узел у d:prop
                                    PropertyNode:=PropertyNode.NextSibling;
                                  end;
                              end;
                          //выбираем следующий дочерний узел у d:propstat
                          PropNodeChild:=PropNodeChild.NextSibling;
                        end;
                    end;
                //выбираем следующий дочерний узел у d:response
                ChildNode:=ChildNode.NextSibling;
              end;
            //выбираем следующий узел d:response
            ResponseNode:=ResponseNode.NextSibling;
          end;
      end;
  finally
    XMLDoc:=nil;
  end;
end;

После того, как список ресурсов заполнен снова возвращаемся в основной код процедуры OnClick и заполняем ListView данными:

for I := 0 to Resources.Count-1 do
   begin
      with ListView1.Items.Add do
         begin
            Caption:=Resources[i].DisplayName;
            SubItems.Add(Resources[i].Href);
            SubItems.Add(DateTimeToStr(Resources[i].CreationDate));
            SubItems.Add(DateTimeToStr(Resources[i].Lastmodified));
            SubItems.Add(IntToStr(Resources[i].ContentLength));
            if Resources[i].Collection then
              SubItems.Add('yes')
            else
              SubItems.Add('no');
            SubItems.Add(IntToStr(Resources[i].StatusCode))
         end;
   end;

Подобным образом вы можете организовать, например, проход по всему дереву каталогов в аккаунте, запрашивая методом PROPFIND необходимые сведения. Теперь посмотрим как скачивать файлы из аккаунта.

Скачивание файлов с Яндекс.Диска

Вначале посмотрим, что нам говорит документация по поводу метода GET. В принципе тут нет ничего нового по сравнению с обычным GET, который мы уже сто раз использовали в самых разным ситуациях при работе с другими API. Яндекс.Диск также может вернуть нам файл в сжатом виде, если сжатие оправдано (про работу с GZIP я писал в статье “Используем GZip в Synapse.“). Сегодня мы рассмотрим скачивание без использование сжатия.

Дописываем у класса TWebDAVSend следующий метод:

type
  TWebDAVSend = class
  private
    FHTTP: THTTPSend;
    [...]
  public
    [...]
    function Get(const ElementHref:string; var Response:TStream):boolean;
  end;
 
function TWebDAVSend.Get(const ElementHref: string; var Response:TStream): boolean;
var URL: string;
begin
  if not Assigned(Response) then Exit;
  URL:=GetRequestURL(ElementHref,false);
  with FHTTP do
  begin
    Headers.Clear;
    Document.Clear;
    Headers.Add('Authorization: Basic ' + FToken);
    Headers.Add('Accept: */*');
    if HTTPMethod('GET', URL) then
      begin
        Result:=ResultCode=200;
        if not Result then
          raise Exception.Create(IntToStr(ResultCode)+' '+ResultString)
        else
          Document.SaveToStream(Response);
      end
    else
      raise Exception.Create(rsPropfindError+' '+ResultString);
  end;
end;

Метод работает следующим образом: в качестве входных параметров Get принимает путь к ресурсу и поток, в который необходимо поместить скачанные данные. Здесь следует отметить, что ElementHref – это строка, которую мы только что получили из XML, когда парсили список ресурсов (свойство Href). Вначале собирается URL по которому находится файл, затем добавляются заголовки авторизации и выполнятся обычный Get. Если запрос выполнен успешно, то все данные сохраняются в поток Response. Вот и вся работа по скачиванию файлов с Яндекс.Диска 🙂 Осталось проверить эту работу на практике.

Для проверки работы функции скачивания файла с Яндекс.Диска я написал следующий обработчик д

Как получить доступ к API Яндекса

Клиенты часто спрашивают, как мы научили Foster находить ошибки в аккаунтах Яндекс.Директ. Все дело в том, что у нашего сервиса есть доступ к API Яндекса. Но, как известно, нельзя так просто взять и начать работу с API Яндекс.Директ. Разработчику необходимо пройти процедуру регистрации приложения. В этом посте я хочу пошагово рассказать, как мы регистрировали приложение для полноценной работы с Директом. 

Кто может получить доступ к API?

Запрос к API выполняется от имени пользователя Директа — рекламодателя или рекламного агентства. В запросе необходимо указывать авторизационный токен — специальный код, разрешающий приложению операции с данными этого пользователя.

Создание нового приложения

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

На всякий случай напоминаю, что список всех поданных заявок можно посмотреть здесь.

Заявка на тестовый доступ

На первых этапах работы большинству разработчиков, скорее всего, будет достаточно заявки на ограниченный доступ к API Директа. Он включает в себя только доступ к «Песочнице». Получить подтвержденную заявку на тестовый доступ несложно:

  1. Кликаем по кнопке «Новая заявка».
  2. Выбираем «Тестовый доступ».
  3. Выбираем из списка свое приложение, созданное на первом шаге и заполняем необходимые поля (на этом этапе можно особо не сочинять, достаточно общих сведений).

С вероятностью в 98% ваша заявка будет одобрена.

В оставшихся двух процентах случаев Яндекс сочтет, что приложение будет наносить вред рекламным кампаниям и отклонит заявку.

Заявка на полный доступ

Однако для запуска полноценного сервиса тестового доступа мало. Для получения полного доступа заходим на страницу редактирования заявки и кликаем по ссылке «Оформить заявку на полный доступ». Далее нужно проявить все свои писательские скиллы при заполнении поля «Опишите схему взаимодействия вашего приложения с Директом».

Сразу скажу, что общие фразы Яндекс не промодерирует. Заявку отклонит, а в комментариях попросит более подробно описать работу системы.

Детальный перечень того, что нужно указать в описании: 1. Детальное описание системы. 2. Перечислить весь список методов API, к которым планируется обращение системы. 2.1. Указать, с какой периодичностью методы API будут использоваться. 2.2. Почему выбраны именно эти методы, какие задачи системы они решают. 2.3. Как обработаны ошибки, которые могут возникнуть при обращении к методам API. 3. Подробно описать, как система проверяет лимиты Директа (а их немало), и что происходит при превышении лимитов. Тут самое главное упомянуть, что мы сразу перестаем ломиться к API, как только вышли за грани дозволенного. Можно кинуть пару строк кода с обработкой исключений по превышению лимитов.

4. Желательно для убедительности загрузить несколько скриншотов интерфейса. Никто не требует интерфейса готовой системы, можно ограничиться схематическим расположением кнопок. Проделав весь путь, примерно через час после повторной подачи заявки мы увидели долгожданный статус «одобрено» для полного доступа.

На финише мы получили систему Foster в том виде, в котором вы её знаете. Сегодня клиенты сервиса, подключив соответствующие алгоритмы, могут с легкостью находить ошибки в Яндекс.Директ и исправлять их до того, как они навредят рекламной кампании. Кстати, с результатами интеграции сервиса с услугой [PPC 2.0] от Netpeak можно познакомиться в кейсе.

Что такое Яндекс.Диск

Яндекс.Диск – облачное хранилище данных от компании Яндекс, позволяющее хранить, передавать и синхронизировать файлы между устройствами пользователя, делиться ссылками на файлы, а также управлять файлами, размещенными на сервисах Яндекса.

Принцип работы Яндекс.Диска прост. На вашем ПК устанавливается клиентское приложение, которое работает в фоновом режиме. Это приложение создает специальную папку – «Яндекс.Диск». В этой папке можно копировать документы и данные, которые хотелось бы хранить в облаке. Сразу же после этого выбранные данные загружаются на сервер Яндекса.

После подключения Диска, сервис предоставляет 3 Гб свободного места. Установив программу Яндекс.Диск, загрузив на Диск первый файл и поделившись ссылкой на файл в соц.сети, вы увеличите это пространство до 10 Гб. Так, достаточно быстро, вы получаете возможность хранить даже очень крупные файлы в защищенном месте.

Вы можете передавать файлы, хранящиеся на облачном диске, просто настроив к нему доступ. При этом передача крупных файлов не будет занимать много времени — просто скопируйте и перешлите ссылку, а ваши коллеги, друзья или родные сами их скачают.

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

Как пользоваться Яндекс.Диском:

  • Через веб-страницу сервиса непосредственно в браузере.
  • При помощи специального клиентского приложения, установленного на компьютер или мобильное устройство.
  • С помощью WebDAV-клиента.

Поддержка протокола WebDAV позволяет подключиться к Яндекс.Диску с помощью любого WebDAV-клиента и реализована в API Диска. Функция API — Application Programming Interface (Интерфейс Программирования Приложений) – позволяет использовать облачный диск в любых разработках, предполагающих наличие протокола WebDAV. Использование дополнительных программ для работы с Яндекс.Диском помогает существенно расширить его возможности.

Handy Backup входит в официальный перечень программ, полноценно работающих с Яндекс.Диском.

Созданная нами бесплатная версия программы для загрузки данных на Яндекс.Диск дает возможность сохранять файлы, папки, папки пользователя Windows, базы данных 1С.

Платные версии программы поддерживают резервное копирование на Яндекс.Диск, позволяя бэкапить разнообразные виды данных, в том числе MySQL, MS SQL, PostgreSQL, DB2, MS Exchange и другие базы данных.

Обзор Яндекс.Диска 2020 — Российская альтернатива Google

Яндекс.Диск

2,00 доллара США в месяц за 100 ГБ

Дополнительные функции

7,0 / 10

Плюсы

  • Простота использования
  • Интеграция с офисом
  • Хорошие цены
  • Защищено от U.Гос. Учреждения
  • Инструмент для создания скриншотов рабочего стола

Минусы

  • Ограниченные возможности совместного использования
  • Скорости могут насторожиться за пределами Европы
  • Неизвестная безопасность
  • Без шифрования на стороне клиента
  • Ограниченная поддержка

Яндекс.Диск Обзор

Яндекс.Диск или, как мы его называем, российский Google — один из вариантов облачного хранилища, из которого вы можете выбрать.Это приличное облачное хранилище, которое неплохо конкурирует с западными компаниями. Цены и планы Яндекс Диска относятся к среднему классу по сравнению с другими облачными хранилищами. Конечно, не хватает во многих областях, таких как отсутствующие параметры совместного использования, неизвестная безопасность и очень ограниченная поддержка. Если вы проверили этот обзор Яндекс.Диска, чтобы узнать, могут ли государственные органы США получить доступ к вашим файлам, они, вероятно, не могут. В таком случае вы попали в нужное место. В противном случае не останавливайтесь на этом и просмотрите наш список лучших поставщиков облачных хранилищ.

Полный обзор Яндекс.Диска читайте ниже.


Альтернативы Яндекс.Диску

# Сервис Рейтинг Описание Платный тариф Перейти к
1

pCloud

Прочитать обзор

pCloud — отличный облачный сервис, который гордится тем, что предлагает высочайшую доступную защиту (включая шифрование на стороне клиента) с потрясающими решениями для синхронизации.Это также было первое облачное хранилище с инновационными планами LIFETIME. Он прост в использовании и является одним из лучших облачных хранилищ на рынке. 10 ГБ бесплатного хранилища.

4,99 $ / месяц 500 ГБ

Перейти в pCloud
2

Sync.com

Прочитать обзор

Sync.com — канадское облачное хранилище, использующее принцип нулевого разглашения.Он предлагает беспрецедентную конфиденциальность и безопасность (через шифрование на стороне клиента) с отличными решениями для синхронизации, обмена и извлечения файлов. 5 ГБ бесплатного хранилища.

8 $ / месяц 2000 ГБ

Перейти на Sync.com
3

Icedrive

Прочитать обзор

Icedrive — это облачное хранилище в Великобритании, основное внимание в котором уделяется безопасности ваших файлов.Они достигают этого с помощью шифрования на стороне клиента Twofish, что, безусловно, вызывает удивление. Привлекательный минималистичный дизайн в сочетании с отличными мобильными приложениями и интересными планами LIFETIME делает их интересным выбором! 10 ГБ бесплатного хранилища.

4,99 € / месяц 1000 ГБ

Перейти к Icedrive
4

МЕГА

Прочитать обзор

MEGA предлагает безопасное облачное хранилище с шифрованием на стороне клиента.У него современный / отзывчивый интерфейс. Онлайн-поддержка ограничена, и скорость загрузки / скачивания может быть лучше. 15 ГБ бесплатного хранилища.

4,99 € / месяц 400 ГБ

Перейти в МЕГА
5

Тресорит

Прочитать обзор

Tresorit защищает ваши файлы с помощью швейцарских законов о конфиденциальности и шифрования на стороне клиента.Он имеет потрясающую скорость синхронизации, возможности совместного использования и превосходит практически во всех других областях, но принимает пулю с очень дорогими и неконкурентоспособными ценами. 3 ГБ бесплатного хранилища.

9,99 € / месяц 500 ГБ

Иди в Тресорит

Перейти к:

Цены и планы
Для кого это?
Простота использования
Синхронизация файлов
Обмен файлами
Получение файлов
Безопасность
Онлайн-поддержка
Дополнительные функции
Заключение


Яндекс.Характеристики диска


Стоимость и планы Яндекс Диска

Яндекс.Диск имеет несколько тарифных планов, из которых вы можете выбрать. При обновлении вы не получите никаких дополнительных функций, кроме увеличенного хранилища. Если вы решите перейти на год, вы сэкономите 17% на каждом плане.

План Стоимость Хранилище
Яндекс.Диск Бесплатно Бесплатно 10 ГБ
Бесплатно + 100 ГБ $ 2.00 / месяц

20,40 долл. США / год

100 ГБ
Бесплатно + 1000 ГБ 10,00 долл. США в месяц

99,6 долл. США в год

1000 ГБ
Бесплатно + 3000 ГБ 30,00 долл. США в месяц

300,00 долл. США / год

3000 ГБ

Обновление до платного плана также предоставит вам доступ к:

  • Расширенный журнал изменений для файлов
  • Без рекламы
  • Приоритетная поддержка
  • Неограниченное скачивание по публичным ссылкам

Яндекс.Диск не предлагает пожизненных планов облачного хранилища и не дешев по сравнению с другими дешевыми поставщиками облачных хранилищ, которые имеют лучшие функции.


Для кого это?

Яндекс — это компания, расположенная в России, можно назвать ее российским Google, и это действительно так. Он управляет крупнейшей поисковой системой в России с долей рынка около 60% в этой стране. Если вы ищете достойное облачное хранилище, которое ограничивает доступ государственных органов США к вашим файлам, тогда Яндекс.Диск для тебя. Хотя они не являются ярким примером безопасного облачного хранилища, поскольку не раскрывают, как они обеспечивают безопасность и конфиденциальность. Имейте в виду, что скорость загрузки является лучшей в Европе и может отличаться в других частях мира.


Удобство использования

Если у вас уже есть учетная запись на Яндексе, значит, вы готовы начать пользоваться Яндекс.Диском. Если нет, то просто создайте учетную запись, которая займет пару минут.

Сам интерфейс выглядит прилично и на самом деле весьма полезен.Вы можете искать в своих папках, как на своем компьютере, или вы можете нажимать на различные дополнительные вкладки, такие как «Фото», «Общий доступ», «История» и «Корзина». Кроме того, он очень отзывчивый.

Вы можете выбрать один из 3 различных видов хранилища. Сама навигация становится довольно простой, когда вы разбираетесь в вещах.

Предварительный просмотр и редактирование файлов

Вы также можете изменять Office и просматривать PDF-документы прямо из браузера, поскольку они реализовали Office 365 в своем облачном хранилище.

Прослушивание музыки, предварительный просмотр изображений и просмотр фильмов также возможны прямо из браузера.


Синхронизация файлов

Клиент Яндекс.Диска доступен для установки в системах Windows , macOS и Linux .

Синхронизация между устройствами была сделана невероятно быстро. В тот момент, когда я начал загружать файлы со своего компьютера в Интернет, синхронизация началась на всех других устройствах одновременно.Время загрузки и загрузки приличное, но ничего необычного. Это зависит от того, где вы находитесь на земном шаре, поскольку Яндекс родом из России, а его серверы расположены в России и Финляндии. Вы не можете ограничивать скорость передачи данных, как в большинстве других облачных хранилищ.

Файлы хранятся в облаке ( экономит хранилище ), но если вы хотите сделать их доступными для использования, вы можете хранить их на своем компьютере (что действительно занимает место). По сути, это Яндекс.Дисковая версия выборочной синхронизации .

Максимальный размер файла на Яндекс.Диске — 50 ГБ. Для загрузки файлов размером более 10 ГБ рекомендуется использовать их настольный клиент.

В настольное приложение также интегрирована интересная функция, которая позволяет делать снимки экрана, что потенциально может устранить необходимость в дополнительном приложении, таком как Gyazo.

Яндекс.Диск не использует синхронизацию на уровне блоков , которая ускоряет загрузку файлов, уже находящихся в облаке (обновление документов, изображений и т. Д.).Точно так же Яндекс.Диск не дает возможности синхронизировать любую папку на вашем компьютере. Если вы хотите, чтобы папка была синхронизирована с облаком, вам придется переместить ее на воображаемый диск. В Яндекс.


Обмен файлами

Обмен файлами с Яндексом может быть довольно интересным. Он не предлагает много вариантов, таких как файлы, защищенные паролем, установка сроков годности и т. Д. Вы можете поделиться своими файлами, создав ссылку, которой затем можно будет поделиться с друзьями по электронной почте, в социальных сетях или даже создать QR-код.

Вашему другу или коллеге не требуется аккаунт на Яндекс.Диске для просмотра файлов. Однако он понадобится ему для редактирования текстовых документов в Интернете. Что ж, он всегда может просто скачать файл, отредактировать его на своем компьютере и отправить обратно вам. Однако первый вариант намного проще.

Также есть возможность отключить ссылку, которая не позволяет никому открывать ее в будущем.

Также можно предоставить общий доступ к папке определенным людям и назначить им два уровня разрешений:

  • Полный доступ: позволяет редактировать и просматривать
  • Только чтение: разрешает только просмотр

Получение файлов

Файлы, которые вы удаляете, будут храниться в вашей корзине 30 дней , после чего они автоматически удаляются с сервера.Как только это произойдет, вы больше не сможете их получить. Файлы в корзине по-прежнему занимают место в хранилище, поэтому, если вы хотите освободить место, вы, вероятно, удалите их из корзины вручную.

Версии ваших файлов хранятся в течение 14 дней в бесплатном плане и до 90 дней в любом из платных планов.


Безопасность

Яндекс.Диск имеет серверы, расположенные в Россия и Финляндия .

Яндекс.Диск очень сомнительный о его безопасности. Они не ответили на мои электронные письма и не разместили на своем сайте никакой информации об этом. Они не предоставили никакой информации о том, зашифрованы ли файлы на сервере и какую защиту они используют. Если вы серьезно относитесь к этому, вы имеете полное право избегать Яндекса с этой точки зрения. Мы можем только догадываться, как они защищают наши файлы. Они также не публиковали никакой информации о соответствии требованиям (например, GDPR или HIPAA).

Они наверняка не обеспечивают шифрование на стороне клиента и конфиденциальность с нулевым разглашением, что означает, что только вы имеете доступ к вашим файлам и личной информации (в отличие от pCloud и Sync.com). Это в сочетании с их отношением к неразглашению какой-либо информации о безопасности вызывает у меня большие подозрения, поэтому я бы порекомендовал вам взглянуть на наши 10 лучших поставщиков облачных хранилищ и найти безопасного поставщика облачных хранилищ, который заботится о вашей конфиденциальности. .

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


Онлайн-поддержка

Если возникнут проблемы с облачным хранилищем, лучше всего поискать в базе часто задаваемых вопросов. Информации там довольно много, но я не могу гарантировать, что вы найдете то, что вам нужно.

Возможности связи очень ограничены, даже их контактная страница почему-то на русском языке.Наверное, просто забыли перевести.

Пользователи с платными тарифными планами получают приоритетную поддержку. Нет возможности поговорить с ними через чат или позвонить им напрямую.


Дополнительные возможности


Интегрированные Word, Excel и Powerpoint

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


Приложение Smart TV для LG

Если у вас телевизор LG Smart TV, вы можете просматривать фото и видео со своего Яндекс.Диска через специальное приложение Яндекс.Диск для Smart TV. Чтобы использовать приложение, вам просто нужно зайти в магазин приложений LG, загрузить его и войти под своим именем пользователя и паролем.


Мобильное приложение

Яндекс.Диск можно установить на Android и iOS . На моем iPhone 6s приложение работает очень плавно. В этом нет ничего особенного, но он делает свое дело.

Вы можете активировать автоматическую загрузку фотографий, если хотите, чтобы они были заархивированы, что весьма полезно. Также есть возможность сделать некоторые файлы доступными для вас, даже когда вы не в сети, что займет часть памяти вашего телефона.


Заключение

Яндекс.Диск — в целом неплохой облачный сервис. Цены и планы являются средними по сравнению с другими облачными сервисами. Это, безусловно, не без недостатков. У него отсутствуют определенные параметры синхронизации (синхронизация на уровне блоков и синхронизация любой папки) и очень ограничен , когда дело доходит до совместного использования файлов .Неизвестная безопасность меня действительно беспокоит и заставляет опасаться Яндекс.Диска. Поддержка также не на том уровне, которого можно было бы ожидать от такой большой компании, как Яндекс. Кроме того, это качественный сервис, серверы которого находятся в России и Финляндии, а это значит, что ни одно из западных агентств не будет иметь доступа к вашим файлам. Если взглянуть на более широкую картину, становится очевидным, что существуют лучшие облачные сервисы хранения. Пойдите, проверьте несколько, это не тот, с которым вам следует соглашаться.



Надеюсь, мы рассмотрели все, что вы хотели знать о Яндексе.Диск в этом обзоре Яндекс.Диска. Если у вас есть какие-либо вопросы без ответа, не стесняйтесь задавать их в разделе комментариев ниже, и я отвечу на них в ближайшее время!

Яндекс Диск — ArchWiki

Яндекс Диск — это бесплатное облачное хранилище, созданное Яндексом, которое дает вам доступ к вашим фотографиям, видео и документам с любого устройства, подключенного к Интернету.
Клиентская консоль Яндекс Диск позволяет:

  • синхронизировать файлы и папки с Диском,
  • получить публичные ссылки на файлы и папки,
  • настроить синхронизацию папок.

Установка

яндекс-диск AUR Клиент для Linux может быть установлен из AUR. Обратите внимание, что это клиент CLI — на данный момент для него нет официального графического интерфейса. Альтернативы см. # Неофициальные клиенты.

Чтобы настроить прокси, пользователя и локальную папку, введите

 $ настройка яндекс-диска
 

Синхронизация начнется после завершения этого шага, теперь вы готовы использовать Яндекс Диск.

Команды

Управлять папкой можно с помощью любого файлового менеджера или консоли.

Полный список команд доступен в man yandex-disk или с помощью

 $ яндекс-диск --help
 

Вот несколько примеров использования:

  • setup — Запуск мастера установки.
  • start — Запустить как демон и начать синхронизацию папок. Текущее состояние синхронизации записывается в файл «.sync / status».
  • status — показать статус демона: статус синхронизации, ошибки, недавно синхронизированные файлы, статус дискового пространства.Если отображается ФАЙЛ, будет возвращен статус этого файла.
  • token — получить токен OAuth, закодировать и сохранить его в специальном файле (по умолчанию — /.config/yandex-disk/passwd). Если параметры -p PASSWORD или —password PASSWORD не отображаются, то пароль должен быть введен из STDIN.
  • синхронизация — синхронизировать папку и выйти из системы (если демон запущен, дождитесь завершения синхронизации).
  • опубликовать — сделать файл / папку общедоступными и удалить ссылку на STDOUT.Элемент будет скопирован в папку синхронизации. Используйте параметр —overwrite, чтобы перезаписать существующие элементы.
  • отменить публикацию — удаляет публичный доступ к файлу / папке.

Неофициальные клиенты

См. Также

http://help.yandex.com/disk/cli-clients.xml

Установить Яндекс.Диск — бесплатно Облачное хранилище • MintGuide.Org

Файл , сервис хранения , доступный с любого устройства с подключением к Интернету.После подключения диска вы получите 11 ГБ .

Полная синхронизация через Windows, OS X, iPhone, Android, Windows Phone, Linux !!!

Кроме того, вы можете увеличить Дисковое пространство, просто пригласив друзей в Яндекс.Диск. Вы получите +0,5 ГБ, а приглашенные люди получат дополнительно +1 ГБ.

Магазин

Файлы на Яндекс.Диске не потеряются при поломке телефона или компьютера. У вас будет достаточно места для хранения самых ценных фотографий и важных документов.

Доступ

Доступ к файлам Яндекс.Диска из любой точки мира, все, что вам нужно, это подключение к Интернету.

Поделиться

Поделитесь файлами на Яндекс.Диске с семьей, коллегами или друзьями. Вы контролируете, кто имеет доступ к вашим файлам.

API

Интегрируйте Яндекс.Диск в собственное программное обеспечение с помощью нашего полностью совместимого с WebDAV API.

Установка Яндекс.Диска в Linux Mint (Ubuntu)

Для начала Вам необходимо зарегистрировать в сервисе.

Затем откройте терминал и введите одну команду:

sudo echo «deb http://repo.yandex.ru/yandex-disk/deb/ stable main» | sudo tee -a /etc/apt/sources.list.d/yandex.list> / dev / null && wget http://repo.yandex.ru/yandex-disk/YANDEX-DISK-KEY.GPG -O- | sudo apt-key add — && sudo apt-get update && sudo apt-get install -y yandex-disk

Или установка с помощью apt-get:

sudo echo «deb http://repo.yandex.ru / yandex-disk / deb / stable main »>> / etc / apt / sources.list.d / yandex.listsudo apt-get updatesudo apt-get install yandex-disk

Чтобы установить клиент вручную, загрузите необходимую версию пакета по соответствующей ссылке ниже:

Как настроить Яндекс.Диск

После установки запустите установку клиента с помощью команды setup:

  1. Введите имя каталога для хранения локальной копии Диска. Если оставить имя пустым, в домашнем каталоге будет создана папка Яндекс.Диск.
  2. Укажите, использовать ли прокси-сервер (да / нет).
  3. Укажите, запускать ли клиент при запуске (да / нет).
  4. Введите ваше имя пользователя на Яндексе.
  5. Введите пароль на Яндексе.
  6. После того, как мастер завершит свою работу, в каталоге ~ / .config / yandex-disk будет создан файл конфигурации config.cfg .

На этом установка завершена. Теперь просто запустите Яндекс.Диск с командой:

Чтобы узнать статус и какие файлы были синхронизированы последними, вы можете использовать команду:

Для дополнительных настроек и получения дополнительных сведений о программе перейдите по ссылке.

Удачи !!!

Сайт перешел на новый движок, помогите мне исправить ошибки, отправьте мне свое уведомление, выделив этот текст и нажав Ctrl + Enter .

Яндексдиск

YANDEX DİSK 2019 SÜPER TÜRK İFŞA (LİNK AÇIKLMADA 2020)

LİNK: https: // tr.ссылка / vK2Vg
LİNK: https://tr.link/vK2Vg
LİNK: https://tr.link/vK2Vg

яндекс диск аршив,
ссылка на яндекс-диск,
яндекс диск nasıl kullanılır mobil,
яндекс диск arşiv mega,
яндекс диск dev arşiv,
яндекс диск ünlü arşiv,
яндекс диск видео yükleme,
яндекс диск arşiv yeni,
яндекс диск arşiv fotoğraf,
яндекс диск аршив 50 гб,
яндекс диск bağlantı engellendi sorunu,
яндекс диск başak karahan,
яндекс диск bilgisayardan kaldırma,
яндекс диск büyük arşiv,
яндекс диск бедава алан,
яндекс диск börü,
яндекс диск bağlantı engellendi hatası,
яндекс диск boyutu arttırma,
sıfır bir яндекс диск,
яндекс диск sıfır bir ссылка,
диск яндекса аманды черни,
фотошоп cs6 яндекс диск,
яндекс диск çöp kutusundan silinen dosyaları geri getirme,
яндекс диск дер,
яндекс диск dosya yükleme,
яндекс диск ден дося индирме,
яндекс диск дося индирме,
яндекс диск depolama alanı,
яндекс диск dosya indirme limiti aşıldı,
яндекс диск дилан дере,
яндекс диск dil değiştirme,
яндекс диск е насыл кайыт олунур,
яндекс диск е китап,
яндекс диск epub kitap,
яндекс диск engellendi,
Элвис Кайнерар яндекс диск,
en iyi яндекс диск,
диск яндекс evonmoss,
яндекс диск fotoğraf arşivi,
яндекс диск фото аршив,
яндекс диск фильм,
яндекс диск fotoğraf yükleme,
яндекс диск фильм аршиви,
яндекс диск фильм аршиви 2019,
яндекс диск фильм аршиви 2018,
яндекс диск fotoğraf silme,
яндекс диск фильм аршиви 2017,
яндекс диск фильм indirme,
яндекс диск gb arttırma,
яндекс диск гириш,
яндекс диск geçmişi silme,
яндекс диск giriş yap,
яндекс диск geçmiş temizleme,
яндекс диск güncel,
яндекс диск хадис,
яндекс диск hızlı indirme,
яндекс диск hesap açma,
яндекс диск hesabımı unuttum,
яндекс диск https yadi sk d l3bf3rxf3u2hdp,
яндекс диск hızlı dosya yükleme,
яндекс диск hesap aç,
яндекс диск hesabı nasıl açılır,
яндекс диск hande,
яндекс диск indirme,
яндекс диск indirme nasıl,
яндекс диск indirme limiti aşıldı sorunu,
яндекс диск indirme sınırı,
яндекс диск indir,
яндекс диск inci,
яндекс диск indirme sorunu,
яндекс диск ile dosya paylaşımı,
яндекс диск ingilizce kitaplar,
яндекс диск kayıt olma,
яндекс диск калдырма,
яндекс диск китап аршив,
яндекс диск кайдедилемеди,
яндекс диск kitap nasıl indirilir,
яндекс диск китап,
яндекс диск kayıt,
яндекс диск kapasitesi arttırma hilesi,
яндекс диск кайдол,
яндекс диск kayıt olmuyor,
яндекс ссылка на диск 2019,
яндекс диск лило,
яндекс ссылка на диск açma,
яндекс диск линки,
яндекс ссылка на диск behzat ç,
яндекс ссылка на диск paylaşımı,
яндекс ссылка на диск Paylaşma,
яндекс диск мега аршив,
яндекс диск мобил,
яндекс диск müzik arşivi 2019,
яндекс диск müzik arşivi 2018,
яндекс диск мюзик,
яндекс диск müzik arşivi,
яндекс диск mp3 arşivi,
яндекс диск merve sanay,
яндекс диск мега,
melek özçağan яндекс диск,
яндекс диск nedir nasıl kullanılır,
яндекс диск nasıl kullanılır,
яндекс диск nasıl indirilir,
яндекс диск nasıl kullanılır telefon,
яндекс диск nasıl видео indirilir,
яндекс диск ne işe yarar,
яндекс диск nilay hoca,
яндекс диск nasıl kullanılır ios,
яндекс диск oluştur,
яндекс диск oyun arşivi,
яндекс диск otomatik yükleme,
яндекс диск öznur garip,
яндекс диск özellikleri,
duru önver яндекс диск,
яндекс диск для казанмы,
яндекс диск paylaşım,
яндекс диск pdf,
яндекс диск промосьон коду 2019,
яндекс диск Paylaşma,
яндекс диск программа arşivi,
яндекс диск pdf архив,
яндекс диск paylaşımları,
промокод яндекс диска бесплатно,
яндекс диск pdf китап аршиви,
яндекс диск rusça hata,
яндекс диск rar dosyası açma,
обзор яндекс диска,
яндекс диск русса,
яндекс диск сору,
яндекс диск silme,
яндекс диск sınır aşıldı,
яндекс диск союнма,
яндекс диск silinen fotoğrafları geri getirme,
яндекс диск sıfır bir,
диск яндекс merve sanay,
яндекс диск şifremi unuttum,
яндекс диск şifre değiştirme,
яндекс диск şifre kırma,
яндекс диск тыт,
яндекс диск телефон,
яндекс диск türkçe yapma,
яндекс диск тен дося индирме,
яндекс диск те китап арама,
яндекс диск тыт айт pdf,
яндекс диск toplu indirme,
ссылка на яндекс-диск на тюрк,
яндекс диск тайт,
яндекс диск uygulaması,
яндекс загрузка диска hızı,
API загрузки яндекс диска,
яндекс диск ücretsiz depolama alanı,
яндекс диск üye olmadan indirme,
яндекс диск ücretsiz alan,
яндекс диск ünlüler,
яндекс диск видео indirme,
яндекс диск видео açılmıyor,
яндекс диск видео индир,
яндекс диск видео indirici,
яндекс диск видео nasıl indirilir,
яндекс диск вк,
яндекс диск видео излеме,
яндекс диск видео архив,
яндекс диск видео арама,
яндекс диск yabancı arşiv,
яндекс диск йени аршив,
яндекс диск yeterli alan yok,
яндекс диск yeterli alan yok hatası,
яндекс диск яди.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *