Войти

Показать полную графическую версию : Нужна помощь с скриптом на питоне


Patroklos
18-01-2018, 18:33
Здравствуйте, я скачиваю фото с инстаграма скриптом на питоне.
https://pypi.python.org/pypi/instaloader/3.2.1
Это единственное что я нашел что качает по тегам после того как злой Цукер запретил.
Так вот пока качаю по тегам на английском всё прекрасно.
Качаю я так: создал батник и прописал следующее
instaloader --filename-pattern={date}_{profile} #Nature --count 50
Но если я пишу тег на русском то питон его не распознаёт
Retrieving pictures with hashtag #????
Кодировка бат utf8, chcp 65001
То есть проблема именно в питоне. Виндовс 10 английская. Питон и скрипт самые свежие вчера установленные.
Сможете помочь?

shisik
18-01-2018, 21:01
То есть проблема именно в питоне. »

Нет, проблема именно в кодировке символов, которые вы передате в скрипт. В венде это cp1251, пологаю.

Patroklos
19-01-2018, 01:41
E:\soft\Python\Python37-32\Scripts>chcp
Active code page: 1251

E:\soft\Python\Python37-32\Scripts>instaloader --filename-pattern={date}_{profile} #природа --count 50
Retrieving pictures with hashtag #????

shisik
19-01-2018, 01:58
Patroklos, значит так и есть. вы передаёте скрипту строку в cp1251, а надо utf8. Можно добавить в скрипт перекодировку.

Patroklos
19-01-2018, 02:08
Это как и в предыдущем сообщении сразу в консоли
E:\soft\Python\Python37-32\Scripts>chcp 65001
Active code page: 65001

E:\soft\Python\Python37-32\Scripts>instaloader --filename-pattern={date}_{profile} #природа --count 50
Retrieving pictures with hashtag #???????
В вин консоли я много работаю. Основные грабли знаю. Это питоша шалит. А я в нём ни бум-бум.

shisik
19-01-2018, 03:02
А я в нём ни бум-бум. »

Заметно. Питон работает с utf8. Я имею в виду 3 версию. Если ему передать строку в cp1251, то будет именно такой эффект. Решения два: или как-то передавать строку в utf8, или добавить в скрипт перекодирование.

Посмотрев скрипт подумалось, что может достаточно установить win_unicode_console

Patroklos
19-01-2018, 03:20
Спасибо за то что помогаете. К сожалению совет с win_unicode_console не сработал.
Картина та же на месте русского знаки вопроса.

lxa85
22-01-2018, 22:31
Patroklos, а виндовая консоль - принципиальный вариант?
Может PowerShell ?
Просто AFAIK именно консоль (cmd) довольно бестолковая вещь (да простят меня адепты)
и кириллицу он воспринимает не как cp1251, а как OEM866.
По крайней мере на этой кодировке он пишет, и вроде как должен быть несколько "умнее" чем cmd.
Хотя нагуглив Хабр (https://habrahabr.ru/post/321076/) проблем с ps так же хватает.
"Похожая"(?) проблема (http://forum.oszone.net/nextoldesttothread-152505.html)
И как я понял chcp - или не панацея, или надо правильно готовить.

Patroklos
24-01-2018, 08:45
а виндовая консоль - принципиальный вариант?
Может PowerShell ? »
Здравствуйте, использовать PoSh мне не приходило в голову. Хорошая идея надо будет попробовать.
Пока я решил проблему тем что в настройках виндовс установил использовать русский для программ не поддерживающих юникод.
Теперь я без проблем качаю по тегам на русском.
Хотя в принципе я был бы рад что бы спецы объяснили где проблема.
В смд, питоше или в кривоватом скрипте.
Спасибо за совет и ссылки.

salat
25-01-2018, 01:42
Проблема не в питоне а в вызове скрипта через cmd.
Кодировку через chcp так не выставишь. У питона своя библиотека. Он по дефолту работает с кирилицей.
Гуглани референс по subprocess checkoutput.




© OSzone.net 2001-2012