@botoid

Страница 3968 из 4042
͏
14.10.2018
20:31:09
если речь идет о памяти, то нет

Я понимаю, нужно все емодзи в сообщении выловить.
все названия эмоджи начинаются и заканчиваются с :

ищешь в тексте :, смотришь, есть ли второе и проверяешь текст между ними

Google
Undefined
14.10.2018
20:34:02
все названия эмоджи начинаются и заканчиваются с :
Названия эмоджи - да Сами эмоджи - нет

Language: py3 Source: print(bytes("?", "utf-8")) Result: b'\xf0\x9f\x8c\x9a'

Artemiy
14.10.2018
20:37:14
в каком смысле 2 символа?
Сами емодзи в тексте сообщения тг. И уже понятно, что нет: старые занимают 1 символ, а те, что по-новее -- больше.

Например, ? = 1 символ, ⚡️ = 2 символа.

3bl3gamer
14.10.2018
20:40:28
бывает и 3. и вроде даже 4

Например, ? = 1 символ, ⚡️ = 2 символа.
в каком языке два символа?

Artemiy
14.10.2018
20:44:59
3bl3gamer
14.10.2018
20:54:08
а, конкретно в этом случае вторым символом оказывается идёт какой-то https://emojipedia.org/emoji/%EF%B8%8F/

а есть например ?. это один юникодовый символ, но в некоторых языках он считается за два, потому что его номер не влезает в два байта

в ТГ он тоже считается за два, это имеет значение для всяких entities

Artemiy
14.10.2018
21:00:11
в ТГ он тоже считается за два, это имеет значение для всяких entities
Вот это именно мой случай. Емодзи нахер засирают оффсеты.

3bl3gamer
14.10.2018
21:01:52
а. ну в Го я решал это конвертированием строки в ютф16, распиливанием получившегося массива двухбайтовых интов по ентитям и конвертированием обратно в нативные строки

Google
Artemiy
14.10.2018
21:10:24
а. ну в Го я решал это конвертированием строки в ютф16, распиливанием получившегося массива двухбайтовых интов по ентитям и конвертированием обратно в нативные строки
Сложно. Я пока на стадии, когда я хожу от ентити к ентити, считаю в промежутках между ними количество емодзей и вычитаю это количство из оффсета. Но такое: "textasdf link1.com ⚡️ link2.com ? link3.com ▶️link4.com fsdatext" не пашет, т.к. ?=1 символ в тг, а ▶️ и⚡️=2 символа каждый. Пока не понимаю, как питоном вычислить количество символов для каждого эмодзи.

Вообще, странно, что в апи такое не предусмотрено.

3bl3gamer
14.10.2018
21:13:54
да редактор тут вообще ни при чём

Marlik
14.10.2018
21:14:35
А какая цель была?

3bl3gamer
14.10.2018
21:15:06
жир?ный текст ^ вот там жирность должна быть с 0 по 7 символ. а ТГ скажет, что жирность с 0 по 8, потому что ? у них считается за два

а в Питоне и Го он считается за один

Oleksandr
14.10.2018
21:16:20


Marlik
14.10.2018
21:16:48
Внутрь текста вставлять эмоджи? Нахера?

3bl3gamer
14.10.2018
21:18:53
> ?=1 точно? чёта в ЖСе он тоже два

> как питоном вычислить возможно, так: > len('?'.encode('utf-16le')) // 2 2 > len('Q'.encode('utf-16le')) // 2 1

3bl3gamer
14.10.2018
21:24:32
В ютф8 же все вроде
всё в ютф-8. но при конвертации в ютф-16 эти емодзи развалятся на суррогатную пару (т.е. два ютф16-символа) и при нарезке строки по телеграмным entity смещения будут правильные

т.е. можно всю строку сконвертировать в этот utf-16le, разрезать по ентятям и каждый кусочек сконвертировать обратно в utf-8. ну, может есть способ получше

3bl3gamer
14.10.2018
21:31:12
Ты уверен? Для двух эмодзей, имеющих разную длину по тг, он вывел одинаковый len.
Не уверен. Но в Го это сработало. А у каких это символов?

Artemiy
14.10.2018
21:31:47
>>> len('?'.encode('utf-16le')) 4 >>> len('▶️'.encode('utf-16le')) 4

Google
Artemiy
14.10.2018
21:32:23
Первый занимает 1, второй -- 2.

Undefined
14.10.2018
21:34:40
Language: py3 Source: print(bytes('?', 'utf-8'), bytes('?', 'utf-16le')) Result: b'\xf0\x9f\x98\x80' b'=\xd8\x00\xde'

Artemiy
14.10.2018
21:37:34
>>> len(bytes('?', 'utf-8')) 4 >>> len(bytes('▶️', 'utf-8')) 6 >>> len(bytes('?', 'utf-16le')) 4 >>> len(bytes('▶️', 'utf-16le')) 4

3bl3gamer
14.10.2018
21:38:18
Тут был бот, возвращающий жсон в ответ на сообщение?

kirussian
14.10.2018
21:39:20
привет! я вообще не понимаю в этом, может подскажете: пишу бота на питоне, хочу залить все на сервер, купил vds и теперь не знаю, какую ОС выбрать - FreeBS, Винда, Ubuntu Virtual Desctop, Ubuntu Server, CentOs ?

kirussian
14.10.2018
21:46:32
Точно не винда
так, один вариант исключен, спасибо.

3bl3gamer
14.10.2018
21:47:28


{ "update_id": 919867504, "message": { "message_id": 97262, "from": { "id": 78542303, "is_bot": false, "first_name": "3bl3gamer", "username": "zblzgamer", "language_code": "ru-RU" }, "chat": { "id": 78542303, "first_name": "3bl3gamer", "username": "zblzgamer", "type": "private" }, "date": 1539553635, "text": "?Й", "entities": [ { "offset": 2, "length": 1, "type": "bold" } ] } }

3bl3gamer
14.10.2018
21:47:40
Вот, тоже два символа

Й там жирное

kirussian
14.10.2018
21:51:10
3bl3gamer
14.10.2018
21:54:19
а вот так емодзя уже считается за 4 символа: "text": "??Q", "entities": [ { "offset": 4, "length": 1, "type": "bold" } ]

Artemiy
14.10.2018
21:55:55
Ох сложно.

3bl3gamer
14.10.2018
21:56:53
7 символов: "text": "??‍?Q", "entities": [ { "offset": 7, "length": 1, "type": "bold" } ]

Artemiy
14.10.2018
21:57:31
Главное, я не вижу никакой зависимости между количеством символов и длиной в байтах.

!report

Google
Бананиум
14.10.2018
21:58:43
!report
Мы примем все необходимые меры, спасибо.

Artemiy
14.10.2018
21:59:38
7 символов: "text": "??‍?Q", "entities": [ { "offset": 7, "length": 1, "type": "bold" } ]
>>> len(bytes('??', 'utf-8')) 8 >>> len(bytes('??‍?', 'utf-8')) 15

3bl3gamer
14.10.2018
22:00:01
Главное, я не вижу никакой зависимости между количеством символов и длиной в байтах.
в байтах utf-8? а там нормальной и не будет. надо смотреть номер символа. если он больше FFFF, ТГ будет считать его за два

хотя не, наверно не FFFF, а что-то поменьше

Admin
ERROR: S client not available

Artemiy
14.10.2018
22:01:56
Ещё б понять, с каких он будет считать за три, четыре, и т.д.

3bl3gamer
14.10.2018
22:02:37
7 символов: "text": "??‍?Q", "entities": [ { "offset": 7, "length": 1, "type": "bold" } ]
этого пожарника Питон кстати считает за 4 символа

Artemiy
14.10.2018
22:04:52
Т.е. задача нихрена не тривиальная, короче.

3bl3gamer
14.10.2018
22:05:51
Ещё б понять, с каких он будет считать за три, четыре, и т.д.
если он считает каую-то емодзю за 4, то она составная. например: > len('??') 2 она состоит из ? и ? и считается питоном за два символа. в ТГ каждый в два раза длиннее, оттуда и 4

Artemiy
14.10.2018
22:07:42
А пожарника он считает за 4, но он 7.

Математика бессильна.

3bl3gamer
14.10.2018
22:08:26
а там три обычных емодзи и ещё один мелкий символ, наверно опять https://emojipedia.org/emoji/%EF%B8%8F/



там https://emojipedia.org/emoji/%E2%80%8D/

едрить там костылей

Artemiy
14.10.2018
22:10:37
Как бы сказал классик: "обоссать и сжечь".

Never give up!
14.10.2018
22:13:29
Ищу создателя этого бота: @QiwiWalletapibot

3bl3gamer
14.10.2018
22:13:35
7 символов: "text": "??‍?Q", "entities": [ { "offset": 7, "length": 1, "type": "bold" } ]
например вот тут жирный смвол с 7 по 8 позицию, пробуем: > "??‍?Q".encode('utf-16le')[(7*2):(8*2)].decode('utf-16le') 'Q'

Artemiy
14.10.2018
22:15:49
Хм, спасибо большое. Сейчас поковыряю.

Google
Marlik
14.10.2018
23:41:15
Ищу создателя этого бота: @QiwiWalletapibot
Щас бы в 2018 не понятно кому деньги доверять.

Vitaly
15.10.2018
03:07:33
нашел гифку по питону

Honor
15.10.2018
03:24:40
По js же

Vitaly
15.10.2018
03:29:05
нет

питон

Honor
15.10.2018
03:36:28
Не знай, у меня в коде все логично

Vitaly
15.10.2018
03:42:09
значит не по пепу

Undefined
15.10.2018
04:59:55
Это антиреклама?

Marlik
15.10.2018
05:06:59
Лох не мамонт, 21 век, а всё по прежнему.

Ivan
15.10.2018
05:11:10
!report

Бананиум
15.10.2018
05:11:10
!report
Мы примем все необходимые меры, спасибо.

Rocket
15.10.2018
05:11:57
Как ни зайду - тут Виталий все хейтит. Больная тема, видать. ??‍♂️

?? Eugene
15.10.2018
05:45:28
Как ни зайду - тут Виталий все хейтит. Больная тема, видать. ??‍♂️
Хейтит - значит любит. Думаю, он сам темными ночами на питоне кодит и кайфует пока никто не видит ?

Boris
15.10.2018
05:45:49
Душит змею, так сказать...

Страница 3968 из 4042