Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Клиент для сервиса Яндекс.Фотки (cli, Python3)  (Прочитано 3886 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Punko

  • Автор темы
  • Гость
В очередной раз намучившись с веб-версией сервиса, я решил попробовать написать свой клиент для десктопа.

Пока что это будет консольное приложение, которое пилю сам для себя.

Идея такая:
Есть куча фотографий, которые вы привезли с отпуска, хотите загрузить в облако.
дабы не мучаться в браузере:
1. В консоли заходите в директорию с фотками
2. Создаёте новый альбом
3. Одной командой добавляете новые фотки в новый альбом
4. Пока приложение работает в консоли, занимаетесь своими делами :)

Сейчас есть вопросы с авторизацией, такие же, как и для Я.диска

Репозиторий

Сейчас это умеет вытягивать информацию об альбомах пользователя, принимая на вход как аргумент имя пользователя.
main.py %username
Что в планах:
1. Создание альбомов;
2. Загрузка фотографий;
3. Удаление альбомов;
4. Удаление фотографий;
5. Теги;
6. Настройки доступа.
7. GUI.

Если будет нужно кому-то, кроме меня, буду рад :)

P.S. скилл программиста практически на нуле, поэтому код будет постоянно меняться, по мере набора опыта.
« Последнее редактирование: 11 Октябрь 2016, 12:45:45 от Punko »

Axa-Ru

  • Автор темы
  • Гость
Re: Клиент для сервиса Яндекс.Фотки (cli, Python3)
« Ответ #1 : 11 Октябрь 2016, 23:23:31 »
Хорошее дело. А код будешь в Git-е держать?

Punko

  • Автор темы
  • Гость
Re: Клиент для сервиса Яндекс.Фотки (cli, Python3)
« Ответ #2 : 12 Октябрь 2016, 10:50:01 »
Axa-Ru, да, ссылку же дал.
Там нифига толкового нет пока что.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11895
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
Re: Клиент для сервиса Яндекс.Фотки (cli, Python3)
« Ответ #3 : 12 Октябрь 2016, 11:27:00 »
Сейчас есть вопросы с авторизацией, такие же, как и для Я.диска

Так вроде бы уже решилось все (через проверочный код). У меня там в репе уже отлаженный пакет OAuth.py код в нем вылизал и задокументировал - бери, и пользуйся - оперсорс же.
« Последнее редактирование: 12 Октябрь 2016, 11:28:52 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Punko

  • Автор темы
  • Гость
Re: Клиент для сервиса Яндекс.Фотки (cli, Python3)
« Ответ #4 : 12 Октябрь 2016, 11:35:57 »
Sly_tom_cat, спасибо, буду разбираться.

Axa-Ru

  • Автор темы
  • Гость
Re: Клиент для сервиса Яндекс.Фотки (cli, Python3)
« Ответ #5 : 12 Октябрь 2016, 18:29:37 »
Punko, а нет желания сделать в объектной парадигме?

Punko

  • Автор темы
  • Гость
Re: Клиент для сервиса Яндекс.Фотки (cli, Python3)
« Ответ #6 : 12 Октябрь 2016, 18:36:30 »
Axa-Ru, есть, нет знаний :)
Раньше нифига вообще не писал, кроме скриптов.
По мере роста скилла буду рефакторинг делать.

Punko

  • Автор темы
  • Гость
Re: Клиент для сервиса Яндекс.Фотки (cli, Python3)
« Ответ #7 : 21 Октябрь 2016, 00:02:03 »
Наконец-то дошли руки! Никакого нового функционала, только рефакторинг того, что было до этого.
Итак, сделал пока что так:
есть main.py - главная "пускалка"

есть Token.py - класс для получения токена, несколько методов - get, save, load.

get - собственно, получаем токен для авторизации у яндекса. Надо будет переделать (как у Sly_tom_cat), чтоб не срало в stdout;
save - если приложение запущено в первый раз, то токен сохраняется в файл fotki.cfg (после того, как получили его через get);
load - достаем токен из файла fotki.cfg. Если токена там нет - get + save +load

Далее:

Album.py - класс для операций с альбомами.

Пока умеет только выдавать список альбомов пользователя. Методы пока что названы по кривому, так как переделывал с функций, нужно сделать обёртку для получения сервисного документа, чтоб скрыть этот ужас из main.py.

Дело движется, ура :)

Пользователь добавил сообщение 21 Октябрь 2016, 00:04:31:
Axa-Ru, кстати, как я понял, как раз к объектной парадигме и двигаюсь.
Мне так даже больше нравится - всё логично и понятно.

На работе как раз неделю сидел на пайтоном, там относительно серьёзный скрипт, расширил познания языка.
« Последнее редактирование: 21 Октябрь 2016, 00:04:31 от Punko »

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 14922
  • Я не слышу.
    • Просмотр профиля
Re: Клиент для сервиса Яндекс.Фотки (cli, Python3)
« Ответ #8 : 21 Октябрь 2016, 00:44:12 »
1:L~$ cat ~/.netrc
machine webdav.yandex.ru
login XXXXXX
password XXXXXX
1:L~$
1:L~$ echo "ls ubuntu" | cadaver https://webdav.yandex.ru
dav:/> ls ubuntu
Listing collection `/ubuntu/': succeeded.
        vict.tar                          122880  Сен 29  2012
dav:/>
Connection to `webdav.yandex.ru' closed.
1:L~$
копировать фотка
1:L~$
1:L~$ ls avatar1_3838011.jpgavatar1_3838011.jpg
1:L~$
1:L~$ echo -e "cd ubuntu\n put avatar1_3838011.jpg" | cadaver https://webdav.yandex.ru
dav:/> cd ubuntu
dav:/ubuntu/>  put avatar1_3838011.jpg
Uploading avatar1_3838011.jpg to `/ubuntu/avatar1_3838011.jpg':
Progress: [                              ]  Progress: [=============================>] 100,0% of 1379 bytes succeeded.
dav:/ubuntu/>
Connection to `webdav.yandex.ru' closed.
1:L~$
1:L~$ echo "ls ubuntu" | cadaver https://webdav.yandex.ru
dav:/> ls ubuntu
Listing collection `/ubuntu/': succeeded.
        avatar1_3838011.jpg                 1379  Окт 21 00:42
        vict.tar                          122880  Сен 29  2012
dav:/>
Connection to `webdav.yandex.ru' closed.
1:L~$

~.o

Punko

  • Автор темы
  • Гость
Re: Клиент для сервиса Яндекс.Фотки (cli, Python3)
« Ответ #9 : 21 Октябрь 2016, 00:52:13 »
victor00000, да, работает, но это для диска же только? Меня интересует сервис именно фотки, с альбомами, тегами и пару сотен фотографий в каждом альбоме, выкачка всех альбомов, закачка в несколько альбомов и прочие плюшки. :)

Я люблю баш и знаю его лучше пайтона, но всё же тут пайтон предпочтительней.

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 14922
  • Я не слышу.
    • Просмотр профиля
Re: Клиент для сервиса Яндекс.Фотки (cli, Python3)
« Ответ #10 : 21 Октябрь 2016, 02:24:50 »
смонтировал яндиск и бракзер.
firefox file://media/yandisk/
?
~.o

Punko

  • Автор темы
  • Гость
Re: Клиент для сервиса Яндекс.Фотки (cli, Python3)
« Ответ #11 : 21 Октябрь 2016, 23:13:42 »
victor00000, попробую уже в воскресенье, интересно посомтреть на результат, завтра целый день в разъездах.

Моё поделие (скоро, скоро уже начну называть его Программой! :) ) уже умеет создавать альбомы!

метод newalbum класса Album, которому необходимо передать имя будущего альбома и описание (опционально, Default по-умолчанию).

К сожалению (моему, как разрабочтика), я не смог передавать запрос в формате json, приходится использовать формат atom (xml) для передачи данных. Как понимаю, это ограничение API яндекса.
В воскресенье как раз приеду из поездки, будет десяток - другой фотографий, запилю класс фотографий и попробую залить, использую своё поделие (пока ещё поделие) :)

Punko

  • Автор темы
  • Гость
Re: Клиент для сервиса Яндекс.Фотки (cli, Python3)
« Ответ #12 : 23 Октябрь 2016, 08:22:39 »
я тоже присоединяюсь к проекту
отлично :)

вот что единственное осталось от кода
посмотрю сегодня, спасибо.
я как понимаю все же получении данных в виде JSON???
не, получать данные в формате это не проблема, я так и делаю, для этого передаю в запросе параметр
 format=jsonкак указано в описании яндекс API.

Punko

  • Автор темы
  • Гость
Re: Клиент для сервиса Яндекс.Фотки (cli, Python3)
« Ответ #13 : 25 Октябрь 2016, 23:23:22 »
cargan, у меня в исходниках описан этот момент.

Axa-Ru

  • Автор темы
  • Гость
Re: Клиент для сервиса Яндекс.Фотки (cli, Python3)
« Ответ #14 : 25 Октябрь 2016, 23:40:13 »
но зачем нужна авторизация если я хочу только посмотреть?
Видимо потому, что фотки могут быть и приватными.

 

Страница сгенерирована за 0.064 секунд. Запросов: 25.