Загружай страницу _http://vkontakte.ru/mail.php и парси с нее нужные тебе данные, в том числе и id сообщений.
То есть можно удалять любое количество сообщений одним запросом? Неплохим вариантом будет такой: 1) Переходим по адресу _http://vkontakte.ru/mail.php и парсим количество сообщений из строки "Выводятся сообщения #1-20 из N". N запоминаем. Парсим также id последнего сообщения (которое в самом верху). 2) Переходим по адресу _http://vkontakte.ru/mail.php?st=N и парсим id самого первого сообщения (которое в самом низу). 3) Просто добавляем в запрос на удаление сообщений все id от первого до последнего и отсылаем на сервер.
Проверил, действительно удаляется несколько тысяч сообщений всего одним запросом )) Кстати. Если после отправки запроса сразу же зайти в личные сообщения и несколько раз обновить страницу, то можно увидеть, что сообщения удаляются постепенно. Каждый раз становиться все меньше и меньше сообщений.
>>как мне узнать что сообщения кончились? да да, полюбасу парсь значение Выводятся сообщения #1-20 из >значение<.</div> переводи в int и учитывай где это нужно
попробуй с помощью API Вконтакте. messages.get – возвращает список входящих либо исходящих сообщений текущего пользователя. messages.delete – удаляет сообщение.
Затестил, собшения ушли в мусор. 1 раз ошибка вылезла, нажал продолжить. было 6к сообшений. руками бы удалять все ушла вечность. респект ТС!
странно ну у меня как бы не работает!!не хочет почему то удалять!и после ошибки клацнул продолжить все равно не удаляет(
1) Использовать сокет и скачивать только определенное количество байт. 2) Использовать поле Range в своем HTTP запросе, с помощью которого можно получить только необходимую часть страницы. Да, из отдельного потока.
плохая идея. сообщения могут находиться не по-порядку. т.е. я могу иметь сообщения с ид 4000-5000 и 8000-9000.
Ну в общем то да, идея не наилучшая. Можно добавить побольше логики. Например, если у пользователя (id последнего сообщения - id первого сообщения) = 10000, а сообщений всего 200, то, наверное, будет легче пройтись по страницам и получить все необходимые id. Но с другой стороны, чтобы получить все эти реальные id сообщений, нам придется скачивать около 10 страниц, что также займет какое то время. Может быть действительно легче просто отослать один POST запрос с диапазоном, чем ходить по страницам.
А зачем изобретать "велосипед" ? Есть же программа "Vkbot" которая без проблем сообщения и со стены всё удаляет....
Омг... Ну это, по сути, можно сказать о любом софте. Зачем писать новые графические пакеты, текстовые редакторы, разнообразные утилиты для компа да и любой софт для ВК, если все уже реализовано?
я думаю проще юзать апи messages.get + messages.delete В гет есть такие штуки как offset смещение, необходимое для выборки определенного подмножества сообщений. count количество сообщений, которое необходимо получить (но не более 100). при получении гета. смотреть послений из 100 полученных и запихивать его в офсет для следующего гета