add anticaptcha support for vk feeds
This commit is contained in:
parent
c1679c52a9
commit
5817496228
@ -32,3 +32,4 @@ class FeedsAppConfigForm(ConfigForm):
|
||||
vk_username = forms.CharField(required=True)
|
||||
vk_password = forms.CharField(required=True)
|
||||
vk_auth = forms.CharField(required=False, widget=forms.Textarea())
|
||||
anticaptcha_token = forms.CharField()
|
||||
|
@ -1,17 +1,19 @@
|
||||
import os
|
||||
import tempfile
|
||||
from io import BytesIO
|
||||
|
||||
import requests
|
||||
import sentry_sdk
|
||||
from django.db import models
|
||||
from djconfig import config
|
||||
from python_anticaptcha import AnticaptchaClient, ImageToTextTask
|
||||
from telebot import TeleBot
|
||||
from telebot.types import InputMediaPhoto
|
||||
from vk_api import VkApi
|
||||
from vk_api.audio import VkAudio
|
||||
|
||||
from feeds.models import FeedModuleConfig
|
||||
from feeds.utils import DatabaseConfig
|
||||
from feeds.utils import DatabaseConfig, captcha_handler
|
||||
|
||||
|
||||
def get_vk_photo(attachment):
|
||||
@ -47,7 +49,7 @@ class VKFeedModuleConfig(FeedModuleConfig):
|
||||
last_id = 0
|
||||
|
||||
vk_session = VkApi(login=config.vk_username, password=config.vk_password, config=DatabaseConfig,
|
||||
api_version='5.60')
|
||||
api_version='5.60', captcha_handler=captcha_handler)
|
||||
vk_session.auth()
|
||||
vk_audio = VkAudio(vk_session)
|
||||
vk = vk_session.get_api()
|
||||
|
@ -11,7 +11,7 @@ from vk_api import VkApi
|
||||
from vk_api.audio import VkAudio
|
||||
|
||||
from feeds.models import FeedModuleConfig
|
||||
from feeds.utils import DatabaseConfig
|
||||
from feeds.utils import DatabaseConfig, captcha_handler
|
||||
|
||||
|
||||
def get_vk_photo(attachment):
|
||||
@ -48,7 +48,7 @@ class VKMusicFeedModuleConfig(FeedModuleConfig):
|
||||
last_id = 0
|
||||
|
||||
vk_session = VkApi(login=config.vk_username, password=config.vk_password, config=DatabaseConfig,
|
||||
api_version='5.60')
|
||||
api_version='5.60', captcha_handler=captcha_handler)
|
||||
if config.russian_proxy_string:
|
||||
vk_session.http.proxies = {
|
||||
'http': config.russian_proxy_string,
|
||||
|
@ -1,7 +1,11 @@
|
||||
from io import BytesIO
|
||||
|
||||
import requests
|
||||
import yaml
|
||||
from django.views.generic import TemplateView
|
||||
from djconfig import config
|
||||
from jconfig.base import BaseConfig
|
||||
from python_anticaptcha import AnticaptchaClient, ImageToTextTask
|
||||
from yaml.parser import ParserError
|
||||
|
||||
from cabinet.utils import CabinetViewMixin
|
||||
@ -58,3 +62,10 @@ class DatabaseConfig(BaseConfig):
|
||||
form = FeedsAppConfigForm(data={'vk_auth': yaml.dump(self._settings)})
|
||||
form.is_valid()
|
||||
form.save()
|
||||
|
||||
|
||||
def captcha_handler(captcha):
|
||||
client = AnticaptchaClient(config.anticaptcha_token)
|
||||
job = client.createTask(ImageToTextTask(BytesIO(requests.get(captcha.get_url()).content)))
|
||||
job.join()
|
||||
return job.get_captcha_text()
|
||||
|
Loading…
Reference in New Issue
Block a user