Author Topic: Протокол VKontakte  (Read 658182 times)

0 Members and 3 Guests are viewing this topic.

Offline Elzor

Re: Протокол VKontakte
« Reply #495 on: 13 10 2014, 14:23:08 »
Mikalair, да. Хотя, может быть, и еще какие-то варианты возможны, тут событие "прочтено" ловится, а каким еще образом оно возбудиться может, я не знаю.
 

Offline Mikalair

Re: Протокол VKontakte
« Reply #496 on: 13 10 2014, 14:44:22 »
Хотелось бы, чтобы помечалось ещё и при отображении сообщения во вспл. окошке.
If you like my work, you can donate to me via Bitcoin: 1CHAseNjVFfLQViLWAhh1fe6fGTiR6p1UM
 

Offline YoungMax

  • Newbie
  • *
  • Posts: 30
Re: Протокол VKontakte
« Reply #497 on: 13 10 2014, 14:58:19 »
Кому как,но считаю фичу помечать прочитанным,если начать набирать текст" очень правильной  :)
 

Offline Elzor

Re: Протокол VKontakte
« Reply #498 on: 13 10 2014, 15:06:31 »
Mikalair, я не уверен что так вообще можно и не очень понимаю, а чем это будет отличатся от варианта "при получении"? Или ты хочешь не читать выключением попапов?
 

Offline Mikalair

Re: Протокол VKontakte
« Reply #499 on: 13 10 2014, 15:24:58 »
Если попапы включены, то я как-бы читаю сообщения в них, а собеседник думает, что я его даже не прочёл. А если поставить галку "при получении", то если даже я поставлю статус "не беспокоить" (отключу попапы), то на сервере сообщения будут автоматически прочитанными.

Ах, да, ещё было бы не плохо сделать возможность отображения стикеров через SmileyAdd (т.е заменять ссылку на стикер чем-то вроде "*VKSticker_1*", а там уже можно запилить их в пак вконтакта).
« Last Edit: 13 10 2014, 15:39:31 by Mikalair »
If you like my work, you can donate to me via Bitcoin: 1CHAseNjVFfLQViLWAhh1fe6fGTiR6p1UM
 

Offline Black Sniper

Re: Протокол VKontakte
« Reply #500 on: 13 10 2014, 15:50:32 »
Mikalair, стикер это какой особый смайл?
Бью метко, но редко...
 

Offline Elzor

Re: Протокол VKontakte
« Reply #501 on: 13 10 2014, 15:51:42 »
Mikalair, ну, в принципе у стикера есть product_id и id. Так что то, о чем ты говоришь, возможно. Но в этом будет смысл, только если будут такие смайлпаки.

Про попапы посмотрю, но обещать не буду. Хотя как по мне, так это странный способ.
« Last Edit: 13 10 2014, 16:09:28 by Elzor »
 

Offline watcher

Re: Протокол VKontakte
« Reply #502 on: 13 10 2014, 16:18:03 »
Ах, да, ещё было бы не плохо сделать возможность отображения стикеров через SmileyAdd (т.е заменять ссылку на стикер чем-то вроде "*VKSticker_1*", а там уже можно запилить их в пак вконтакта).

Сколько существует этих наборов стикеров? Кто будет делать у нас эти наборы для SmileyAdd? И на всё это бесчисленное количество наборов будкт паки? А если не будет их, то что? И если у кого-то этот пак не стоит, то что? Это не стандартный набор смайлов, имхо кончится тем, что 95% пользователей вместо стикера будут видеть его текстовый код. Мне это не нравится.
Пожалуйста, внимательно прочтите правила постинга перед тем, как открыть новую тему.
Please read forum rules.
 

Offline Mikalair

Re: Протокол VKontakte
« Reply #503 on: 13 10 2014, 16:21:34 »
watcher,  ну так сделать возможность выбора smileyadd/ссылка
If you like my work, you can donate to me via Bitcoin: 1CHAseNjVFfLQViLWAhh1fe6fGTiR6p1UM
 

Offline Elzor

Re: Протокол VKontakte
« Reply #504 on: 13 10 2014, 16:28:21 »
Mikalair, а что-то мешает обрабатывать смайладдом ссылку?
 

Offline Mikalair

Re: Протокол VKontakte
« Reply #505 on: 13 10 2014, 16:30:48 »
Elzor, об этом я как-то не подумал   ???

Почему-то не получилось. В смайлпак добавляю такой код:
Code: [Select]
Smiley* = "Stickers_64\1.png", 0, "https://vk.com/images/stickers/1/256b.png"
Smiley* = "Stickers_64\2.png", 0, "https://vk.com/images/stickers/2/256b.png"
Smiley* = "Stickers_64\3.png", 0, "https://vk.com/images/stickers/3/256b.png"
...

но не работает
В папке Stickers_64 лежат стикеры, слитые из ВК

Post Merge: 13 10 2014, 17:08:34
Кажется, я понял - smileyadd не обрабатывает ссылки  :(
« Last Edit: 13 10 2014, 17:08:34 by Mikalair »
If you like my work, you can donate to me via Bitcoin: 1CHAseNjVFfLQViLWAhh1fe6fGTiR6p1UM
 

Offline alitor

  • Newbie
  • *
  • Posts: 32
  • Country: ru
  • Jabber: Jabber ID
Re: Протокол VKontakte
« Reply #506 on: 13 10 2014, 17:21:03 »
Вы как с языка (или из головы) у меня сняли про стикеры. Не далее как сегодня сделал это у себя.
Изменил функцию GetAttachmentDescr следующим образом:
Code: [Select]
CMString CVkProto::GetAttachmentDescr(JSONNODE *pAttachments)
{
debugLogA("CVkProto::GetAttachmentDescr");
CMString res;
res.AppendChar('\n');
res += TranslateT("Attachments:");
res.AppendChar('\n');
JSONNODE *pAttach;
for (int k = 0; (pAttach = json_at(pAttachments, k)) != NULL; k++) {
res.AppendChar('\t');
ptrT ptszType(json_as_string(json_get(pAttach, "type")));
if (!lstrcmp(ptszType, _T("photo"))) {
JSONNODE *pPhoto = json_get(pAttach, "photo");
if (pPhoto == NULL) continue;

ptrT ptszLink;
for (int i = 0; i < SIZEOF(szImageTypes); i++) {
JSONNODE *n = json_get(pPhoto, szImageTypes[i]);
if (n != NULL) {
ptszLink = json_as_string(n);
break;
}
}

int iWidth = json_as_int(json_get(pPhoto, "width"));
int iHeight = json_as_int(json_get(pPhoto, "height"));
res.AppendFormat(_T("%s: %s (%dx%d)"), TranslateT("Photo"), ptszLink, iWidth, iHeight);
if (m_bAddImgBbc)
res.AppendFormat(L"\n\t[img]%s[/img]", ptszLink);
}
if (!lstrcmp(ptszType, _T("photo"))) {
JSONNODE *pPhoto = json_get(pAttach, mir_t2a(ptszType));
if (pPhoto == NULL) continue;

ptrT ptszLink;
for (int i = 0; i < SIZEOF(szImageTypes); i++) {
JSONNODE *n = json_get(pPhoto, szImageTypes[i]);
if (n != NULL) {
ptszLink = json_as_string(n);
break;
}
}

int iWidth = json_as_int(json_get(pPhoto, "width"));
int iHeight = json_as_int(json_get(pPhoto, "height"));
ptrT ptszTypeTranslate(TranslateT("Photo"));
res.AppendFormat(_T("%s: %s (%dx%d)"), ptszTypeTranslate, ptszLink, iWidth, iHeight);
if (m_bAddImgBbc)
res.AppendFormat(L"\n\t[img]%s[/img]", ptszLink);
}
else if (!lstrcmp(ptszType, _T("audio"))) {
JSONNODE *pAudio = json_get(pAttach, "audio");
if (pAudio == NULL) continue;

int  aid = json_as_int(json_get(pAudio, "id"));
int  ownerID = json_as_int(json_get(pAudio, "owner_id"));
ptrT ptszArtist(json_as_string(json_get(pAudio, "artist")));
ptrT ptszTitle(json_as_string(json_get(pAudio, "title")));
res.AppendFormat(_T("%s: (%s - %s) - http://vk.com/audio%d_%d"),
TranslateT("Audio"), ptszArtist, ptszTitle, ownerID, aid);
}
else if (!lstrcmp(ptszType, _T("video"))) {
JSONNODE *pVideo = json_get(pAttach, "video");
if (pVideo == NULL) continue;

ptrT ptszTitle(json_as_string(json_get(pVideo, "title")));
int  vid = json_as_int(json_get(pVideo, "id"));
int  ownerID = json_as_int(json_get(pVideo, "owner_id"));
res.AppendFormat(_T("%s: %s - http://vk.com/video%d_%d"),
TranslateT("Video"), ptszTitle, ownerID, vid);
}
else if (!lstrcmp(ptszType, _T("doc"))) {
JSONNODE *pDoc = json_get(pAttach, "doc");
if (pDoc == NULL) continue;

ptrT ptszTitle(json_as_string(json_get(pDoc, "title")));
ptrT ptszUrl(json_as_string(json_get(pDoc, "url")));
res.AppendFormat(_T("%s: (%s) - %s"),
TranslateT("Document"), ptszTitle, ptszUrl);
}
else if (!lstrcmp(ptszType, _T("wall"))) {
JSONNODE *pWall = json_get(pAttach, "wall");
if (pWall == NULL) continue;

ptrT ptszText(json_as_string(json_get(pWall, "text")));
int  id = json_as_int(json_get(pWall, "id"));
int  fromID = json_as_int(json_get(pWall, "from_id"));
res.AppendFormat(_T("%s: %s - http://vk.com/wall%d_%d"), TranslateT("Wall post"), ptszText ? ptszText : L" ", fromID, id);
}
else if (!lstrcmp(ptszType, _T("sticker"))) {
JSONNODE *pSticker = json_get(pAttach, "sticker");
if (pSticker == NULL) continue;
res.Empty(); // sticker is not really an attachment, so we don't want all that heading info
if (m_bAddImgBbc) { // if user wants BBcode, he gets the link to the sticker image
ptrT ptszUrl(json_as_string(json_get(pSticker, "photo_64")));
res.AppendFormat(L"[img]%s[/img]", ptszUrl);
}
else { // otherwise the word "sticker" with the sticker id is given that can later be used in SmileyAdd for the actual sticker
int  id = json_as_int(json_get(pSticker, "id"));
res.AppendFormat(_T("[sticker:%d]"), id);
}
}
else res.AppendFormat(TranslateT("Unsupported or unknown attachment type: %s"), ptszType);

res.AppendChar('\n');
}

return res;
}
И вот такой смайлпак соорудил.
Теперь, если в настройках плагина не включено отображение входящих изображений при помощи BB-кодов, то стикеры преобразуются в надпись типа [sticker:123], который отлавливается SmileyAdd и преобразуется в картинку.
Вот только отправлять стикеры при этом невозможно. Тут надо попрограммировать.
« Last Edit: 13 10 2014, 17:38:55 by alitor »
 

Offline Mikalair

Re: Протокол VKontakte
« Reply #507 on: 13 10 2014, 17:26:53 »
alitor, смайлпак соорудить не проблема, главное - чтобы это добавил Elzor.

кстати, по ссылке на смайлпак открывается стандартный ВК emoji смайлпак
If you like my work, you can donate to me via Bitcoin: 1CHAseNjVFfLQViLWAhh1fe6fGTiR6p1UM
 

Offline alitor

  • Newbie
  • *
  • Posts: 32
  • Country: ru
  • Jabber: Jabber ID
Re: Протокол VKontakte
« Reply #508 on: 13 10 2014, 17:30:29 »
по ссылке на смайлпак открывается стандартный ВК emoji смайлпак
Ну, правильно, это мой смайлпак для ВК, который я еще пару лет назад сделал, а ниже в нем дописаны стикеры. Иначе никак, либо смайлов лишишься, либо стикеров. Сейчас вроде бы сделали уже другой смайлпак для ВК, так что можно использовать и его, только дописать в нем строчки для стикеров.
 

Offline Mikalair

Re: Протокол VKontakte
« Reply #509 on: 13 10 2014, 17:31:43 »
alitor, в том то и дело, что стикеров в нем нет  ;D
If you like my work, you can donate to me via Bitcoin: 1CHAseNjVFfLQViLWAhh1fe6fGTiR6p1UM