Привет читателю. Сегодня и вчера я просидел за API сайта Вконтакте, и я хотел бы коротко рассказать здесь о том. какие грабли я успел собрать.
Задача была убийственно простая - залить в группу ~1000 изображений и сгенерировать примерно ~1600 страниц википедии.
Кстати говоря, в момент написания поста я еще не дошел до конца обработки всего что нужно, но, кажется, следующая заливка все решит.
Задача была убийственно простая - залить в группу ~1000 изображений и сгенерировать примерно ~1600 страниц википедии.
Кстати говоря, в момент написания поста я еще не дошел до конца обработки всего что нужно, но, кажется, следующая заливка все решит.
Грабли 1.
В процессе добавления страниц в вики-группы некоторые страницы добавляться просто отказались. Что удивительно. удалив абсолютно безобидную часть текста запроса - все начинало работать. Проблема крылась в том что у GET-запросов ограниченная длина. Большое спасибо alexprey, как человек сведущий в вебе он помог мне несколькими быстрыми щелчками по клавиатуре.
Урок простой - никогда не юзайте для API вконтакте GET-запросы.
Урок простой - никогда не юзайте для API вконтакте GET-запросы.
Грабли 2.
Ну, вроде всё готово к большим делам! Но не тут то было - странная ошибка #9 глаголет "Flood control!".
При отправке определенного количества однотипных запросов выскакивает вот такая ошибка. Суть её в том, что на ближайший час (а иногда - несколько часов) вы теряете возможность слать этот запрос вообще.
Уроки из этой ошибки я извлек вот такие:
При отправке определенного количества однотипных запросов выскакивает вот такая ошибка. Суть её в том, что на ближайший час (а иногда - несколько часов) вы теряете возможность слать этот запрос вообще.
Уроки из этой ошибки я извлек вот такие:
- Кешируйте локально данные
- Лучше завести несколько учеток
- Не надо делать гемор с execute. В документации на странице ошибок пишут, мол это поможет. Врут.
Грабли 3.
Я решил что можно обрабатывать данные и через XML, ведь возможность получать в нем данные имеется, скачивать библиотеку было очень лень для своего одноразового говнокода. Однако, некоторые ответы приходят ТОЛЬКО в JSON формате, потому ни о каком xml не может идти речи.
Урок - юзайте JSON.
Урок - юзайте JSON.
Грабли 4.
По разметке в группах.
- Я создавал страницы, в названии которых использовались кавычки. Такие имена для страниц делать нельзя, потому что на них потом нельзя будет сослаться. Проблему решил заменой на "русские кавычки", они вкатывают, да еще и смотрятся круто.
- Знак плюса. Как ни странно, но данный знак из разметки удаляется и подменяется на пробел. HttpUtility.UrlEncode его не обработал, я просто вручную поменял на url-код %2B и всё заработало. Тут тоже спасибо alexprey, подсказал.