Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.52/25: Рейтинг темы: голосов - 25, средняя оценка - 4.52
4 / 4 / 0
Регистрация: 20.07.2015
Сообщений: 36

Скачивание файла из Яндекс диска

09.01.2021, 20:24. Показов 6208. Ответов 20

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Подскажите, пожалуйста, можно ли скачать файл из яндекс диска. Нужно чтобы на работе, при запуске небольшой программки, файл скачивался и сохранялся в определенной папке. Далее уже обрабатывался программой. Ответов на эту тему немного. Для VB практически нет. В тех, что есть у кого-то работает, у кого-то нет. Пробовал так
VB.NET
1
2
Dim m As New WebClient
m.DownloadFile("https://yadi.sk/i/twpekdWnRXtimQ", "D:\11111.txt")
Файл не скачивается, а создается файл с какой-то html разверткой внутри. Я в этом всем не силен. Программу небольшую написал. Очень нужная. Но без периодического скачивания файла с яндекс диска абсолютно бесполезная. Ступор. Буду очень признателен если кто поможет...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.01.2021, 20:24
Ответы с готовыми решениями:

Скачивание файла с Яндекс Диска
Здравствуйте. Сегодня мне нужно было сделать так, что бы код смог скачать файл с Я.Диска. "В чем проблема?" проблема...

Скачивание файла с Яндекс диска
Как программно скачать файл с Яндекс диска или ргхоста

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

20
sleep
 Аватар для I can
4941 / 4624 / 842
Регистрация: 13.04.2015
Сообщений: 9,799
09.01.2021, 20:31
Цитата Сообщение от Dim27 Посмотреть сообщение
"https://yadi.sk/i/twpekdWnRXtimQ"
А файл такой есть ? Скачивается если урл вставить в адресную строку браузера?
0
4 / 4 / 0
Регистрация: 20.07.2015
Сообщений: 36
09.01.2021, 21:26  [ТС]
Если нажать скачать, то да

Добавлено через 7 минут
Я так понимаю, эта ссылка для скачивания. А как по ней скачать программно ???
VB.NET
1
2
Dim m As New WebClient
m.DownloadFile("https://yadi.sk/d/mRNIgYUCZh7pgA", "D:\11111.txt")

Добавлено через 28 секунд
Так не получается

Добавлено через 1 минуту
VB.NET
1
My.Computer.Network.DownloadFile("https://yadi.sk/d/mRNIgYUCZh7pgA", "D:\1111.txt")
Так тоже самое

Добавлено через 5 минут
Нашел на форуме вот такой код:
VB.NET
1
2
3
4
5
6
7
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        IO.Directory.CreateDirectory("D:\Bushnev Laboratory\FS9.01")
        Try My.Computer.Network.DownloadFile("https://downloader.disk.yandex.ru/disk/535fdcf4d017f7b12190f2c5fbaf096ec8eb8f192b9bb03a5d4976959569e927/58d6e314/Qpaa7JYVuewE3NNrywXMQ1v8mE49V1NlNd4U9q8E6KWFGMwotkrSp3wqrFvkatfg1tbFuHZcm0w7BBK8P5CJHA%3D%3Duid=0&filename=%D0%A2%D0%95%D0%A1%D0%A2%D0%9E%D0%92%D0%AB%D0%99.txt&disposition=attachment&hash=QPeBkxupJvupD3ItMggs/KQojVaIK4uuXI5%2B2SF6nRI%3D%3A&limit=0&content_type=text%2Fplain&fsize=44&hid=7da8a74a4b293bf65a487c2a14998027&media_type=document&tknv=v2", "D:\Bushnev Laboratory\FS9.01\тЕСТ")
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End Sub
Где взять такой адрес файла ??? Может в этом дело

Добавлено через 28 минут
Ох, а в таком варианте и не получится. Если я этот файл подкорректирую, и снова загружу на Яндекс диск, то ссылка тоже изменится. Как теперь быть? Нужно чтобы программа скачивала и сохраняла файл из интернета. Содержимое файла, соответственно, может меняться. Как осуществить задуманное?

Добавлено через 3 минуты
Если только в Яндекс диске создать папку. Открыть доступ к этой папке. И скачивать файл из папки по имени этого файла. Но как??? Помогите, пожалуйста, разобраться. Подзапутался уже...
0
sleep
 Аватар для I can
4941 / 4624 / 842
Регистрация: 13.04.2015
Сообщений: 9,799
09.01.2021, 21:35
Цитата Сообщение от Dim27 Посмотреть сообщение
Как теперь быть?
Загружать тоже программно, с определённым именем.

Добавлено через 1 минуту
Может авторизация нужна?

Добавлено через 7 минут
Цитата Сообщение от Dim27 Посмотреть сообщение
с какой-то html разверткой внутри
А файл-то какой скачиваете? Текстовый?
0
Эксперт .NET
 Аватар для Rius
13131 / 7691 / 1677
Регистрация: 25.05.2015
Сообщений: 23,468
Записей в блоге: 14
09.01.2021, 21:38
Dim27, скачивать можно только по прямой ссылке к файлу. Это когда по переходу на неё сервер сразу отдаёт файл.
Ваша ссылка другая - открывается страница, где есть ссылка на скачку.

Для Яндекс.Диск есть API: https://yandex.ru/dev/disk/rest/?turbo=true
0
4 / 4 / 0
Регистрация: 20.07.2015
Сообщений: 36
09.01.2021, 21:45  [ТС]
Да, текстовый

Добавлено через 6 минут
Цитата Сообщение от Rius Посмотреть сообщение
Для Яндекс.Диск есть API: https://yandex.ru/dev/disk/rest/?turbo=true
Смотрел. Там мне не разобраться.
Зарегистрировал, вроде. Получил, что-то такое:
Права:
Доступ к Яндекс.Диску для приложений
Чтение всего Диска
Доступ к папке приложения на Диске
ID: ********************
Пароль: *******************
В том то и дело, что я не понимаю как этим пользоваться. Если бы понимал, то сделал и к вам за помощью не обращался. Думал, может есть попроще способ
0
sleep
 Аватар для I can
4941 / 4624 / 842
Регистрация: 13.04.2015
Сообщений: 9,799
09.01.2021, 21:50
Цитата Сообщение от Dim27 Посмотреть сообщение
Думал, может есть попроще способ
Свой сайт сделать, и использовать как файловое хранилище.
0
Эксперт .NET
 Аватар для Rius
13131 / 7691 / 1677
Регистрация: 25.05.2015
Сообщений: 23,468
Записей в блоге: 14
09.01.2021, 21:53
Ftp поднять на своём роутере и открыть доступ только для чтения. Дёшево, сердито, бесплатно, просто.

Добавлено через 1 минуту
Ещё можно установить Яндекс.Диск. Он сам будет скачивать.
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,528
Записей в блоге: 22
09.01.2021, 23:56
Скачивается страница .html. В ней есть ссылка. Но если её вставить в адресную строку браузера получаем:
HTTP 422
No parameter: disposition
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
10.01.2021, 08:10
а в SberDisk есть возможность создавать прямые ссылки. Не тестировал еще такие ссылки с My.Computer.Network.DownloadFile
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,528
Записей в блоге: 22
10.01.2021, 13:13
Цитата Сообщение от Yury Komar Посмотреть сообщение
а в SberDisk есть возможность создавать прямые ссылки.
Я о таком вообще не слышал. Дайте ссылку, пожалуйста. Я попробую скачать из-под VB.
0
Эксперт .NET
 Аватар для Rius
13131 / 7691 / 1677
Регистрация: 25.05.2015
Сообщений: 23,468
Записей в блоге: 14
10.01.2021, 13:16
Да это не тайна, вот для яндекс :
https://getfile.dokpub.com/yandex/
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
10.01.2021, 13:45
Argus19, https://files.sberdisk.ru/s/Q5... Z/download

Добавлено через 4 минуты
Dim27, а почему имкнно облачный диск, закиньте файл на хостинг и качайте
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,528
Записей в блоге: 22
10.01.2021, 14:48
Yury Komar, не хочет.
У Яндекса запускается JS. Видимо и тут тоже.
Вот код на VB:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Option Explicit
Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" (ByVal pCaller As Long, _
ByVal szURL As String, _
  ByVal szFileName As String, _
  ByVal dwReserved As Long, _
  ByVal lpfnCB As Long) As Long
  Dim URL As String, ret As Boolean
 
Private Sub Command1_Click()
 
URL = "https://files.sberdisk.ru/s/Q54QMdg9GKARbdZ/download"
    ret = DownloadFile(URL, "C:\1111.zip")
        Debug.Print ret
End Sub
  
  
  Public Function DownloadFile(URL As String, LocalFilename As String) As Boolean
Dim lngRetVal As Long
lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
If lngRetVal = 0 Then DownloadFile = True
End Function
 
Private Sub Command2_Click()
    End
End Sub
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
10.01.2021, 15:01
Argus19, возможно.

а почему VB? Здесь ветка VB.NET же
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,528
Записей в блоге: 22
10.01.2021, 17:22
Цитата Сообщение от Yury Komar Посмотреть сообщение
Здесь ветка VB.NET же
VB.Net запрещает использовать функции API Windows? Если нет, то надо только переписать код.
Эта функция нормально считывает файл по прямой ссылке.
0
2283 / 1599 / 400
Регистрация: 26.06.2017
Сообщений: 4,739
Записей в блоге: 1
10.01.2021, 18:23
Цитата Сообщение от Argus19 Посмотреть сообщение
VB.Net запрещает использовать функции API Windows?
Абсолютно не запрещает - читаем здесь.
0
 Аватар для Argus19
1427 / 444 / 78
Регистрация: 24.09.2017
Сообщений: 2,528
Записей в блоге: 22
10.01.2021, 18:45
Цитата Сообщение от Uswer Посмотреть сообщение
Абсолютно не запрещает
Вот и я про то. Надо разместить необходимый файл на ресурсе, позволяющем скачивать по прямой ссылке или создать свой FTP-сервер на локальном компьютере. Если задача позволяет это.
Когда мне надо, я включаю портативный Quick 'n Easy FTP Server 3.0 Lite.
0
259 / 200 / 49
Регистрация: 18.12.2015
Сообщений: 416
10.01.2021, 22:18
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Imports System.IO
Imports System.Net
Imports System.Net.Security
Imports System.Security.Cryptography.X509Certificates
Imports System.Text.RegularExpressions
 
Module YandexDownloader
 
    Sub Main()
        Dim yadiskshareurl As String = "https://yadi.sk/i/03bE933n3PqpG2"
        Dim yadiskposturl As String = "https://yadi.sk/public/api/download-url"
        Dim content As String = Nothing, result As String = Nothing
 
        ServicePointManager.ServerCertificateValidationCallback = AddressOf ValidateCertificate
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 Or SecurityProtocolType.Tls Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12
 
        With DirectCast(WebRequest.Create(yadiskshareurl), HttpWebRequest)
            .Method = "GET"
            .UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
            content = New StreamReader(.GetResponse().GetResponseStream()).ReadToEnd()
        End With
        Dim hash As String = New Regex("""timestamp"":(.+?),""hash"":""(?<hash>(.+?))""").Matches(content)(0).Groups("hash").Value
        Dim sk As String = New Regex("""sk"":""(?<sk>(.+?))"",""yandexuid"":""(.+?)""").Matches(content)(0).Groups("sk").Value
        Dim yandexuid As String = New Regex("""sk"":""(.+?)"",""yandexuid"":""(?<yandexuid>(.+?))""").Matches(content)(0).Groups("yandexuid").Value
 
        Dim raw As String = "{""hash"":""" & hash & """,""sk"":""" & sk & """,""options"":{""hasExperimentVideoWithoutPreview"":true}}"
        Dim cookie As String = "yandexuid=" & yandexuid & "; tld=ru; lang=ru"
 
 
        With DirectCast(WebRequest.Create(yadiskposturl), HttpWebRequest)
            .Method = "POST"
            .UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
            .Headers("Cookie") = cookie
            .ContentType = "text/plain"
            Using Stream = New StreamWriter(.GetRequestStream())
                Stream.Write(raw)
                Stream.Flush()
                Stream.Close()
            End Using
            Using Stream = .GetResponse().GetResponseStream()
                Using Reader = New StreamReader(Stream)
                    result = Reader.ReadToEnd()
                End Using
            End Using
        End With
 
        Console.WriteLine(result)
        Console.ReadKey()
    End Sub
    Private Function ValidateCertificate(sender As Object, certificate As X509Certificate, chain As X509Chain, sslPolicyErrors As SslPolicyErrors) As Boolean
        Return True
    End Function
End Module
Из ответа берем ссылку на файл и скачиваем ее методом DownloadFile
2
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
27.12.2023, 16:44
Jungl, добавлю (вместо строки 42) парсинг прямой ссылки на загрузку файла из ответа:
VB.NET
42
result = New Regex("""url"":""(?<url>(.+?))""").Matches(Reader.ReadToEnd())(0).Groups("url").Value
PS: не играйтесь слишком часто, иначе Яндекс запросит разгадать капчу и вся затея с загрузкой с диска закончится, не успев начаться...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.12.2023, 16:44
Помогаю со студенческими работами здесь

Скачивание файла с Яндекс.Диска
Здравствуйте. Помогите пожалуйста программно скачать файлы с яндекс диска. Я что-то не понимаю, как это делается.

Скачивание Excel файла с диска сервера
Добрый день. Сам удивляюсь, но не могу скачать файл с сервера. Подскажите, пожалуйста, кто проделывал это на MVC? Гугл уже кончился.. ...

Скачивание с Яндекс Диска
как скачать файл с Яндекс диска

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

Скачивание файла из интернета на Яндекс.Диск
Не получается скачать файл ACCESS_TOKEN рабочий, так как файлы в папки выводит... не понимаю в чем проблема :wall: Скачивание файла из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru