Давным-давно, в далекой-далекой галактике, у меня был запущен и радостно работал мой твиттер-бот Tweepy, который приносил мне в 2 раза больше денег, чем я зарабатывал на написании статей, а потом… он перестал работать.
Всегда весело день или два, когда ваш код работал и казался стабильным, а затем вы хотели добавить некоторые функции, пока он не перестанет работать.
И точно так же, как автомеханик, вы должны разобрать все это на части и попытаться выяснить, почему код не работает.
Вот и прошли последние два дня моей жизни. Проблема заключалась в SSL-сертификатах и в том, как вы должны игнорировать проверку, если все, что вы хотите сделать, это заставить ваш код работать.
Есть причина, по которой вы хотите проверить сертификаты, и это очень веская причина. Но, и это может быть важнее, чем настоящая причина, иногда мне все равно, и все, что я хочу сделать, это сохранить работу моей денежной машины.
Я уверен, что в мире есть много людей, которые знают, что они должны поступать правильно, пока они не захотят просто подзаработать, а затем все, чего они хотят, — это решить проблему и перейти к чему-то более интересному.
Так что меня просто не волнуют поддельные SSL-сертификаты, когда речь идет о Twitter. Я уверен, что люди из Твиттера знают, что делают. Я также не хочу, чтобы мой код перестал работать только потому, что какой-то хакер нашел ловкий способ подделать некоторые SSL-сертификаты, которые раньше не подделывались, а теперь подделываются. Это дает моему коду переключатель уничтожения, который кто-то другой может использовать, чтобы перевести мой код в автономный режим, и это просто глупо. Итак, логическая часть моего мозга взяла верх и определила, что меня это не должно волновать, что означает, что это «ошибка», которую я исправил.
Итак, теперь, когда я знаю, что «ошибка» заключается в коде Tweepy API, мне пришлось копаться в коде этого парня или девушки, чтобы найти исправление, которое я мог бы добавить в свой код, не заменяя Tweepy, потому что я ленив.
Я хотел бы, чтобы Tweepy был более объектно-ориентированным, чем он есть, и это было бы, если бы автор Tweepy больше доверял людям, но я все равно выполнил свою работу.
Как?
Я рад, что вы спросили. Продолжай читать.
У меня уже есть свой собственный объект TwitterAPIProxy, который обертывает Tweepy API для моих собственных коварных целей, но теперь мне нужно сделать свой собственный объект «API» из Tweepy, который я назвал «TweepyAPI», и вы можете поспорить, что я понимаю, насколько действительно оригинальным было мое мышление. , в этом отношении. Мне также нужно было заменить функцию «bind_api», которая на самом деле является объектом, который я бы предпочел подклассу, и поэтому я хотел, чтобы Tweepy Author был более доверчивым или просто лучшим разработчиком; Возможно, мне не пришлось бы быть таким хакерским с моим решением, если бы это было так. Так что простите меня за «хакерство», но отдайте мне должное за создание решения, а не за кодирование собственного Twitter API.
Таким образом, суть моего решения заключалась в том, чтобы сделать копию двух файлов Tweepy, файлов «api.py» и «binder.py», и поместить их в свой собственный каталог, чтобы он выглядел как пакет в том же каталоге, что и мой. основной файл python приложения, а мой базовый каталог также выглядит как пакет. Видите ли, Python наплевать, куда вы поместите свои пакеты, пока они существуют. Я хотел импортировать два файла Tweepy моего собственного создания и искажения из моего собственного пакета «tweepy», поместив две копии одних и тех же очень пустых файлов «__init__.py» в два каталога, и прежде чем вы сможете сказать «Я надеюсь, что это работает», это работал.
Итак, теперь у меня есть собственный TweepyAPI и модули связывания, и именно связыватель управляет тем, как различные API Twitter динамически связываются во время выполнения. Биндер обрабатывает фактическое SSL-соединение, что означает правильное «проверить = False» в интересах запросов, и теперь мой Tweepy Twitter Bot может вернуться к жизни и на самом деле твитить.
Чтобы не утомлять вас всех до слез листингом кода в этой статье, вы можете посмотреть код здесь. Возможно, вам придется время от времени пересматривать, потому что я думаю, что это репо вызывает у меня некоторую любовь по очевидным причинам.
Само собой разумеется, или, может быть, я должен сказать это. Мне нужно вернуться к этому, чтобы сегодня вечером я мог немного побыть наедине с собой.