All streams
Search
Write a publication
Pull to refresh
30
0
Олег Юрчик @Ryder95

Senior Python Developer

Send message
Очень рад, что она приносит пользу) Если есть какие-то изменения, то не могли бы Вы форкнуть репозиторий и предложить изменения?
А она, как я понял, также эмулирует приложение, да? И в нём надо обязательно авторизовываться?
Да, есть такое. Это тоже можно обойти, но из-за того, что эта проблема встречается редко — я не смог её решить(
На самом деле, технически можно достать и за полминуты. По-моему, из запросов типа ?__a=1 можно достать ещё маленькие изображения и, кажется, текст. Но это не точно

Простите, я считаю, как обезьяна. 10000 постов можно вытащить максимум за полминуты, а вот получить картинку, текст и так далее каждого поста — это долго, да

Официально у них описано только API, и там тоже не ахти. В варианте веб версии некоторую инфу можно вытаскивать анонимно, а с API это невозможно. Если про реальные цифры, то чтобы не уйти в 429 я пробовал ставить ожидание после каждого запроса от 1 до 2 секунд. С 1 секундой он уходит в 429 ошибку, с 2 — никогда. Думаю, при таком варианте — это где-то 40-50 запросов в минуту. Так как максимум можно вытащить около 1000 запросов за раз (скорее всего, есть цифра точная, но я не ставил экспериментов пока), то на 10000 постов надо будет потратить около 3-4 часов. Это если быть авторизованным. А если вытаскивать посты без авторизации с использованием прокси — то ограничений нет. Опять же, если бы мобильное приложение или API давали лучшие результаты(

Как я выше писал, все запросы делаются на основе библиотеки requests. Если использовать парсинг с авторизацией, то прокси не поможет, это да. Мне приходилось вставлять обработчик ошибок, чтобы при 429 он ожидал какое-то время
Не, всё верно, но пока я не увидел в этом смысла) и мне удобнее было писать, когда всё в одном файле

Пока нет, но в теории можно)

Он маскируется под старую версию приложения? Я думал, они закрывают доступ)
Насколько мне известно, query_id привязывается к сессии, а вы их вынесли в качестве магических констант.

Это действительно магические константы) Точнее, они требуются для того, чтобы указать, что запрашивается. Это проверено опытным путём
Очень жаль, что не все методы работают (например, получение лайков и комментариев без авторизации).

Нет, без авторизации точно можно получать комментарии, а лайки, если честно, не пробовал. Но если web-интерфейс позволяет, то и в приложении можно.
Я не знаю, я ещё года 2 назад пытался получить доступ к API, но мне не дали) Его, как мне рассказывали, дают в приоритете каким-либо веб-приложениям, и чаще всего уже запущенным
Действительно. Даже не знаю, как это исправить) честно говоря, сделал теперь эту задачу через метаклассы, но эта же проблема остаётся(
Нет, не вызовет) так как буквально после присвоения оригинальный конструктор встаёт на своё место. Но это не суть, я почитал комментарии и понял, что мои труды были напрасны и всё можно много проще сделать с помощью метаклассов. В общем-то, рабочие примеры уже были приведены
А ведь действительно… Единственное, что с наследованием не будет работать, а так ведь полностью решает проблему. А я и не подумал, спасибо)
Метаклассы никак не подходят, я пробовал, так как в метаклассе нельзя управлять тем, что метод __init__ вызывается сразу после метода __new__. Метакласс создаёт классы, а не объекты, а значит с созданием объектов надо копаться в классе.
Классы то наследуемы друг от друга, поэтому у них общий кэш. Я, наверное, просто неявный пример привёл, где непонятно, зачем у двух родственных классов один кэш. Плюс даже если этого не делать, как я описал, то при повторном вызове Animal(1) конструктор выполнится для старого объекта повторно, что не есть гуд
Ну таки я же сразу сказал, что хочу скорее отзывов и направлений на путь истинный) Всё же отзывов и решений я получил больше, чем просто бы запостил вопрос на SO) Да, я уже решил, что заменю монстра на ansible, но всё равно спасибо)
Вы правы, Ant я посмотрел и он мне понравился. Конечно, формат XML — это не очень, ИМХО) Ну и единственное, что он предназначен для Java. Это сразу же ограничивает круг применения, я об этом написал) А Phing, как я понял, для PHP

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
Senior