roboforum.ru

Технический форум по робототехнике.

Python и Web

Все здесь

Re: Python и Web

Сообщение Romikgy » 03 авг 2010, 14:24

die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 750
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Porto Franco "Odessa"

Re: Python и Web

Сообщение MiBBiM » 03 авг 2010, 17:34

что-то я запутался, вот ситуация:
был текст в cp1251, его приложение прочитало как latin1 и сохранило в utf-8 (насчет последнего шага не уверен).
нужно эту солянку перевести обратно в cp1251 и закодировать в обычный юникод.
вот пример (слово 'Ария'):
Àðèÿ

опытным путем выяснить комбинацию encode, decode как-то не получается :(
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: Python и Web

Сообщение Vooon » 03 авг 2010, 19:28

EasyTag

Добавлено спустя 1 минуту 18 секунд:
А вообще выпилил приложение из robobb http://vehq.ru/blog/2010/08/03/django-e ... tachments/
может кому пригодится.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Python и Web

Сообщение MiBBiM » 03 авг 2010, 20:25

repr выводит страшное (слово то же, 'Ария'):
[u'[u"[u\'\\\\xc0\\\\xf0\\\\xe8\\\\xff\']"]']

утилиты юзать не получится, т.к. источник - веб-ресурс.
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: Python и Web

Сообщение Romikgy » 03 авг 2010, 21:18

MiBBiM писал(а):что-то я запутался, вот ситуация:
был текст в cp1251, его приложение прочитало как latin1 и сохранило в utf-8 (насчет последнего шага не уверен).
нужно эту солянку перевести обратно в cp1251 и закодировать в обычный юникод.
вот пример (слово 'Ария'):
Àðèÿ

опытным путем выяснить комбинацию encode, decode как-то не получается :(

а можно файл с таким текстом прицепить здесь , больно хочется на сие чудо перекодировки поглядеть ...
die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 750
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Porto Franco "Odessa"

Re: Python и Web

Сообщение MiBBiM » 03 авг 2010, 21:35

это тэги, так что большие файлы не получится. попробую чуть позже предоставить несколько фраз.
собственно, если сделать в интерпретаторе так:
Код: Выделить всёРазвернуть
>>> s = "Àðèÿ"
>>> print s
Àðèÿ
>>> print s.decode('utf8').encode('latin1').decode('cp1251')
Ария

то вроде как работает, но в приложении - нет.
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: Python и Web

Сообщение Vooon » 03 авг 2010, 23:01

Что за приложение такое секретное?
Прилепи хоть этот модуль (получение с ресурса и работа с тегом) попробую помочь.
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Python и Web

Сообщение setar » 03 авг 2010, 23:59

не знаю, может не в тему - просто слова знакомые увидел
в линуксе есть пакет который кодировку сам исходную выясняет
app-i18n/enca
ENCA detects the character coding of a file and converts it if desired
Аватара пользователя
setar
Site Admin
 
Сообщения: 10990
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Python и Web

Сообщение MiBBiM » 04 авг 2010, 20:13

setar писал(а):ENCA detects the character coding of a file and converts it if desired

к сожалению, не получится, т.к. данные идут потоком и это не текстовый файл.
Vooon писал(а):Что за приложение такое секретное?

ну, оно просто большое, это плеер exaile, а я пишу к нему плагин.
http://github.com/mibbim/exaile_prostopleer

Добавлено спустя 22 минуты 16 секунд:
проблема перекодировки решается в файле __init__.py, процедуре on_tags_parsed (сейчас в репозитории в тексте процедуры костыль). в коде происходит получение двух значений - artist и title, которые и нужно привести к читаемому виду. вот код, которым я пользовался во время тестов:
Код: Выделить всёРазвернуть
    def on_tags_parsed(self, type, player, args):
        track = player.current
        if track.get_tag_raw('__loc').startswith('http://prostopleer.com/'):
            title = track.get_tag_raw('title')
            artist = track.get_tag_raw('artist')
            # здесь перекодировка
            track.set_tag_raw('title', title)
            track.set_tag_raw('artist', artist)
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: Python и Web

Сообщение MiBBiM » 06 авг 2010, 14:42

победил-таки, оказывается это не строка была, а что-то необъяснимое =) с этими динамическими типами бида сплошная :)
Tomorrow will be. Better
Аватара пользователя
MiBBiM
 
Сообщения: 1866
Зарегистрирован: 29 окт 2007, 18:11
Откуда: Пермь
прог. языки: Brainfuck/Basic/Delphi/C++/Lisp/x86asm/JavaScript

Re: Python и Web

Сообщение Vooon » 06 авг 2010, 23:55

Делай unit tests :)
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Пред.

Вернуться в Свободное общение

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 0

cron