Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Скачать картинку с яндекс диска на пк Ут 10

Скачать картинку с яндекс диска на пк Ут 10
Я
   MAPATNK2
 
13.05.21 - 21:21
Всем доброго дня. Есть ссылка на картинку яндекса. Вот пример https://yadi.sk/d/jGbwG3PGpt3am/LM0103C.jpg
Нужно скачать её на пк и желательно добавить в номенклатуру. Делал так:

1 способ)

                                        SSL = Новый ЗащищенноеСоединениеOpenSSL();
                    СерверПриемник = "yadi.sk";
                    Яндекс = новый HTTPСоединение("yadi.sk",,,,,,SSL);
                    HTTPЗапрос = Новый HTTPЗапрос(LM0103C.jpg);
                    
                                    Ответ = Яндекс.Получить(HTTPЗапрос,"D:\Картинки\LM0103C.jpg);

2 Способ)

                                       КопироватьФайл (https://yadi.sk/d/jGbwG3PGpt3am/LM0103C.jpg, "D:\Картинки\LM0103C.jpg");
                    
                    МояКартинка = Новый Картинка("D:\Картинки\LM0103C.jpg");  
                    
                    НовыйОбъект = Справочники.ХранилищеДополнительнойИнформации.СоздатьЭлемент();
                    
                    ВыбранноеИзображение = Новый Картинка("D:\Картинки\LM0103C.jpg", Ложь);
                    НовыйОбъект.Наименование = НашаПозиция.Код;
                    НовыйОбъект.ВидДанных = Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение;
                    НовыйОбъект.Хранилище = Новый ХранилищеЗначения(ВыбранноеИзображение, Новый СжатиеДанных);
                    
                    НовыйОбъект.Объект = НашаПозиция.Ссылка;
                    НовыйОбъект.Записать();

                    //

                    НашаПозиция.ОсновноеИзображение = НовыйОбъект;



Вообще, при сохранении картинки на диск она весит 1 Кб и её не возможно открыть.
Как скачать картнку с яндекса зная ссылку на изображение или сразу загрузить её в товар?
 
 Партнерская программа EFSOL Oblako
   MAPATNK2
 
1 - 13.05.21 - 21:41
ну и вот еще


                                        SSL = Новый ЗащищенноеСоединениеOpenSSL();
                    Соединение = Новый HTTPСоединение("yadi.sk",,,,,,SSL);
                            Запрос =  HTTPЗапрос("/d/jGbwG3PGpt3am/LM0103C.jpg");
                       Ответ = Соединение.Получить(Запрос);
                       ДвоичныеДанныеКартинки = Ответ.ПолучитьТелоКакДвоичныеДанные();
                    ДвоичныеДанныеКартинки.Записать("D:\Картинки\LM0103C.jpg");
   MAPATNK2
 
2 - 13.05.21 - 21:43
в 1 способе 4-ую строку переделал на это:
HTTPЗапрос("/d/jGbwG3PGpt3am/LM0103C.jpg"); тоже не помогло.
   Ненавижу 1С
 
3 - 13.05.21 - 21:43
   MAPATNK2
 
4 - 13.05.21 - 21:46
(3) второй сопосб. Я так и делал. Только не в корень D, а в папку.
   MAPATNK2
 
5 - 13.05.21 - 21:46
(3) В итоге файл 1 Кб нечитаемый.
   MAPATNK2
 
6 - 13.05.21 - 21:50
(3) если нужна какая то особая ссылка на скачивание, то поставщик такие ссылки не предоставляет. Только такие https://yadi.sk/d/jGbwG3PGpt3am/LM0103C.jpg
   MAPATNK2
 
7 - 13.05.21 - 21:52
(3) попробуйте сами мою картинку скачать этой строчкой кода. У мнея любыми способами картинка весит 1 кб и не читается.
   Недопустимый
 
8 - 13.05.21 - 21:58
(0) в браузере картинка открывается?
   MAPATNK2
 
9 - 13.05.21 - 21:59
(8) конечно
   pechkin
 
10 - 13.05.21 - 22:02
Получить хтмл страницу, найти там картинку и вот ее уже скачать
   MAPATNK2
 
11 - 13.05.21 - 22:03
(10) ??????????????
   MAPATNK2
 
12 - 13.05.21 - 22:05
(10) Огонь!  Только как программно теперь html страницу получить?
   pechkin
 
13 - 13.05.21 - 22:07
Также как и картинку получал, только на выходе будет не жпг файл, а хтмл.потом его парсить и тд
   pechkin
 
14 - 13.05.21 - 22:08
Главное чтобы оно не скриптом подгружалось
   MAPATNK2
 
15 - 13.05.21 - 22:09
(13) не понятно, к сожалению
   pechkin
 
16 - 13.05.21 - 22:10
У тебя в (0) весь код уже есть
   MAPATNK2
 
17 - 13.05.21 - 22:11
(16) дак какой из. Я просто не понимаю, как получить ссылку html программно. Руками просто , прогарммно без понятия как.
   pechkin
 
18 - 13.05.21 - 22:13
Ты сам файл уже получил?
Потом чтение хтмл и купи xpath
   pechkin
 
19 - 13.05.21 - 22:13
*кури
   mikecool
 
20 - 13.05.21 - 22:13
может там редирект?
   MAPATNK2
 
21 - 13.05.21 - 22:14
(18) Я не получал никакого файла. Что за xpath. А простых способов нет?
   MAPATNK2
 
22 - 13.05.21 - 22:21
   Ненавижу 1С
 
23 - 13.05.21 - 22:30
(5) (6) (7) у меня ок. Вы его недоскаченным читаете
   Builder
 
24 - 13.05.21 - 22:51
(22) С Я-диска по короткой ссылке ничего не скачать просто так.
Видел сервис, который переделывает короткие ссылки в полноценные для скачивания.
   MAPATNK2
 
25 - 13.05.21 - 22:53
(23) Как его доскачать?
   pechkin
 
26 - 13.05.21 - 22:55
(21) простых способов нет
   pechkin
 
27 - 13.05.21 - 22:56
Короткая ссылка это не картинка, а хтмл страница
   MAPATNK2
 
28 - 13.05.21 - 22:56
(23) т.е вы прям такой код используете и у вас все ок?

Путь1 = "https://yadi.sk/d/jGbwG3PGpt3am/LM0103C.jpg";
Путь2 = "D:\LM0103C.jpg";
КопироватьФайл(Путь1, Путь2);
   MAPATNK2
 
29 - 13.05.21 - 22:56
(27) ок, а примеры есть какие нибудь? В слепую ведь не возможно понять, что делать.
   pechkin
 
30 - 13.05.21 - 22:58
Делай (28) только путь2 = "файл.html"
Это шаг 1
 
 
   MAPATNK2
 
31 - 13.05.21 - 23:00
(30) Ага, пробовал. Пробовал вручную его кстати открыть, показывает ссылку внутри "https://yadi.sk/d/jGbwG3PGpt3am/LM0103C.jpg"
   MAPATNK2
 
32 - 13.05.21 - 23:02
(30) Такое вот внутри      "Found. Redirecting to https://disk.yandex.ru/d/jGbwG3PGpt3am/LM0103C.jpg"
   pechkin
 
33 - 13.05.21 - 23:03
Что значит показывает ссылку?
   pechkin
 
34 - 13.05.21 - 23:04
(32) попробуй тоже самое уже с этой ссылкой
   pechkin
 
35 - 13.05.21 - 23:04
У этой ссылки путь тот же только домен другой, полный
   MAPATNK2
 
36 - 13.05.21 - 23:09
(35) ДА Вижу, теперь xml
   timurhv
 
37 - 13.05.21 - 23:10
(32) В https://yadi.sk/d/jGbwG3PGpt3am/LM0103C.jpg = html страничка, а не картинка.
В html есть ссылка на картинку, но не на оригинальную.
Чтобы скачать оригинальную картинку необходимо использовать API Yandex.Cloud
https://yandex.ru/dev/disk/api/reference/public.html
   MAPATNK2
 
38 - 13.05.21 - 23:15
(37) жесть. Тут неделю разбираться XD
   MAPATNK2
 
39 - 13.05.21 - 23:16
(37) да оригинальная и не нужна. Только ссылку на копию там не могу найти
   timurhv
 
40 - 13.05.21 - 23:27
   timurhv
 
41 - 13.05.21 - 23:28
   timurhv
 
42 - 13.05.21 - 23:35
По ссылке в (40) кстати можете архив получить в zip, если укажете path=/
А потом скопом загружать в номенклатуру.
   MAPATNK2
 
43 - 13.05.21 - 23:42
(42) Сделал так. Пишет - Файл не найден.

SSL = Новый ЗащищенноеСоединениеOpenSSL();

    Яндекс = новый HTTPСоединение("cloud-api.yandex.net",,,,,,SSL);
    //КаталогСохранения = ВыбратьКаталогСохранения();
    HTTPЗапрос = Новый HTTPЗапрос("/v1/disk/public/resources/download?public_key=https://yadi.sk/d/jGbwG3PGpt3am=/LM0103C.jpg");
    //HTTPЗапрос = Новый HTTPЗапрос("/v1/disk/public/resources/download?public_key=https://yadi.sk/d/7VkxupioQEjcNQ&path=/Test3.xlsx");

    Ответ = Яндекс.Получить(HTTPЗапрос);
    Если Ответ.КодСостояния = 200 тогда
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
        СсылкаНаСкачиваниеФайла = ПрочитатьJSON(ЧтениеJSON);
        Если ЗначениеЗаполнено(СсылкаНаСкачиваниеФайла.href) тогда
            КопироватьФайл(СсылкаНаСкачиваниеФайла.href,"D:\123456.jpg");
        КонецЕсли;
    ИначеЕсли Ответ.КодСостояния = 404 тогда
        Сообщить("Файл не найден");
    Иначе
        Сообщить("Что-то пошло не так, Код состояния = " + Ответ.КодСостояния);
    КонецЕсли;
   MAPATNK2
 
44 - 13.05.21 - 23:45
(42) забыл &path.
Поставил. Скачалось 0 Кб.
   MAPATNK2
 
45 - 13.05.21 - 23:50
(42) В итоге сделал так. Но все равно пустой файл качает. Где то уже читал в инете, что такая фигня постоянно с яндекс диском. Либо я что то не понял.

SSL = Новый ЗащищенноеСоединениеOpenSSL();

    Яндекс = новый HTTPСоединение("cloud-api.yandex.net",,,,,,SSL);    
    HTTPЗапрос = Новый HTTPЗапрос("/v1/disk/public/resources/download?public_key=https://yadi.sk/d/jGbwG3PGpt3am&path=/LM0103C.jpg");
    Ответ = Яндекс.Получить(HTTPЗапрос);
    Если Ответ.КодСостояния = 200 тогда
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
        СсылкаНаСкачиваниеФайла = ПрочитатьJSON(ЧтениеJSON);
        Если ЗначениеЗаполнено(СсылкаНаСкачиваниеФайла.href) тогда
            КопироватьФайл(СсылкаНаСкачиваниеФайла.href,"D:\123456.jpg");
        КонецЕсли;
    ИначеЕсли Ответ.КодСостояния = 404 тогда
        Сообщить("Файл не найден");
    Иначе
        Сообщить("Что-то пошло не так, Код состояния = " + Ответ.КодСостояния);
    КонецЕсли;
   MAPATNK2
 
46 - 13.05.21 - 23:56
Победа. Для скачивания картинки с яндекс диска по публичной ссылке. Используйте пример кода:




SSL = Новый ЗащищенноеСоединениеOpenSSL();

    Яндекс = новый HTTPСоединение("cloud-api.yandex.net",,,,,,SSL);
    КаталогСохранения = "C:\ttt";
    HTTPЗапрос = Новый HTTPЗапрос("/v1/disk/public/resources/download?public_key=https://yadi.sk/d/jGbwG3PGpt3am&path=/LM0103C.jpg");
    Ответ = Яндекс.Получить(HTTPЗапрос);
    Если Ответ.КодСостояния = 200 тогда
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(Ответ.ПолучитьТелоКакСтроку());
        СсылкаНаСкачиваниеФайла = ПрочитатьJSON(ЧтениеJSON);
        Если ЗначениеЗаполнено(СсылкаНаСкачиваниеФайла.href) тогда
            //КопироватьФайл(СсылкаНаСкачиваниеФайла.href,КаталогСохранения+"\1.txt");
            Соединение = Новый HTTPСоединение(СтрЗаменить(СсылкаНаСкачиваниеФайла.href,"https://",""),,,,,,
            Новый ЗащищенноеСоединениеOpenSSL()
            );
            
            Запрос = Новый HTTPЗапрос("");
            Результат = Соединение.Получить(Запрос);
            Если Результат.КодСостояния = 302 Тогда
                
                КопироватьФайл(Результат.Заголовки.Получить("Location"),"D:\123456.jpg");
                
            КонецЕсли;
        КонецЕсли;
    ИначеЕсли Ответ.КодСостояния = 404 тогда
        Сообщить("Файл не найден");
        Возврат;
    Иначе
        Сообщить("Что-то пошло не так, Код состояния = " + Ответ.КодСостояния);
        Возврат;
    КонецЕсли;
   timurhv
 
47 - 14.05.21 - 00:32
(46) Наверное, вместо редиректа с кодом 302 может и 200 вернуться. Тогда надо будет использовать
ДД = Результат.ПолучитьДвоичныеДанные();
ДД.Записать("D:\123456.jpg");
   SiAl-chel
 
48 - 14.05.21 - 07:18
   sikuda
 
49 - 14.05.21 - 09:56
(0) А теперь самое главное - Картинка имеет формат webp и в форме 1С не покажется ;)


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.