Добавлен , опубликован
Привет читателю. Сегодня и вчера я просидел за API сайта Вконтакте, и я хотел бы коротко рассказать здесь о том. какие грабли я успел собрать.
Задача была убийственно простая - залить в группу ~1000 изображений и сгенерировать примерно ~1600 страниц википедии.
Кстати говоря, в момент написания поста я еще не дошел до конца обработки всего что нужно, но, кажется, следующая заливка все решит.

Грабли 1.

В процессе добавления страниц в вики-группы некоторые страницы добавляться просто отказались. Что удивительно. удалив абсолютно безобидную часть текста запроса - все начинало работать. Проблема крылась в том что у GET-запросов ограниченная длина. Большое спасибо alexprey, как человек сведущий в вебе он помог мне несколькими быстрыми щелчками по клавиатуре.
Урок простой - никогда не юзайте для API вконтакте GET-запросы.

Грабли 2.

Ну, вроде всё готово к большим делам! Но не тут то было - странная ошибка #9 глаголет "Flood control!".
При отправке определенного количества однотипных запросов выскакивает вот такая ошибка. Суть её в том, что на ближайший час (а иногда - несколько часов) вы теряете возможность слать этот запрос вообще.
Уроки из этой ошибки я извлек вот такие:
  • Кешируйте локально данные
Дабы несколько раз не отправить одно и тоже изображение/страницу. Обновлять нужно только то, что реально изменилось. Храните хеш под боком.
  • Лучше завести несколько учеток
Флуд контрол на обновлении страниц срабатывал примерно через 500 запросов. Если данных реально много (у меня напомню, 1600 страниц), то несколько учеток просто необходимо, если не хочется потерять весь день. Я как человек неподготовленный собрал учеток со всей родни и делал свои черные дела от их имени.
  • Не надо делать гемор с execute. В документации на странице ошибок пишут, мол это поможет. Врут.

Грабли 3.

Я решил что можно обрабатывать данные и через XML, ведь возможность получать в нем данные имеется, скачивать библиотеку было очень лень для своего одноразового говнокода. Однако, некоторые ответы приходят ТОЛЬКО в JSON формате, потому ни о каком xml не может идти речи.
Урок - юзайте JSON.

Грабли 4.

По разметке в группах.
  1. Я создавал страницы, в названии которых использовались кавычки. Такие имена для страниц делать нельзя, потому что на них потом нельзя будет сослаться. Проблему решил заменой на "русские кавычки", они вкатывают, да еще и смотрятся круто.
  2. Знак плюса. Как ни странно, но данный знак из разметки удаляется и подменяется на пробел. HttpUtility.UrlEncode его не обработал, я просто вручную поменял на url-код %2B и всё заработало. Тут тоже спасибо alexprey, подсказал.