🚀 Somewhat working version

This commit is contained in:
2021-04-06 03:44:09 +03:00
parent 8dbc53330d
commit eacb568dc7
4 changed files with 63 additions and 22 deletions

1
.gitignore vendored
View File

@@ -1,6 +1,7 @@
/venv /venv
/.vscode /.vscode
.DS_Store .DS_Store
__pycache__
config.ini config.ini
vk_config.v2.json vk_config.v2.json

56
main.py
View File

@@ -1,33 +1,45 @@
import argparse
import configparser import configparser
from PIL import Image import ast
import pytesseract from time import sleep
import vk_api from rich import print#, inspect
from rich import print
from rich.console import Console from rich.console import Console
c = Console()
from utils.authenticate import authenticate
from utils.detect import detect
config = configparser.ConfigParser() config = configparser.ConfigParser()
config.read('config.ini') config.read('config.ini')
login = config['DEFAULT']['login'] terms = ast.literal_eval(config['SEARCH']['terms'])
password = config['DEFAULT']['password'] interests = ast.literal_eval(config['SEARCH']['interests'])
parser = argparse.ArgumentParser(description='List the content of a folder') c = Console()
vk = authenticate()
parser.add_argument('-l', '--login', action='store', help='Your vk login (phone or email)') queries = []
parser.add_argument('-p', '--password', action='store', help='Your vk password') for i in range(len(terms)):
queries.append({
'string': terms[i],
'last_url': ''
})
args = parser.parse_args() photos_processed = 0
photos_saved = 0
while True:
for query in queries:
response = vk.docs.search(q=query['string'], count=1)
image_url = response.popitem()[1][0]['url'] # WTF not readable
image_url_clean = image_url.split('?')[0] # Get url without params
def _2fa_handler(): # If the image we are getting is new do stuff
code = c.input("Enter 2FA code: ", style="bold cyan") if image_url_clean != query['last_url']:
return code, True photos_processed += 1
query['last_url'] = image_url_clean
vk_session = vk_api.VkApi(login=args.login, password=args.password, auth_handler=_2fa_handler) text = detect(image_url+query['string'])
vk_session.auth() for interest in interests:
if interest in text:
photos_saved += 1
c.print('Found an interesting photo!', style="green")
c.print(image_url)
vk = vk_session.get_api() sleep(1)
c.print(vk.docs.search(q=".jpg"))
#print(pytesseract.image_to_string(Image.open("test.png")))

19
utils/authenticate.py Normal file
View File

@@ -0,0 +1,19 @@
import vk_api
import configparser
from rich.console import Console
c = Console()
config = configparser.ConfigParser()
config.read('config.ini')
login = config['CREDENTIALS']['login']
password = config['CREDENTIALS']['password']
def _2fa_handler():
code = c.input("Enter 2FA code: ", style="italic cyan")
return code, True
def authenticate():
vk_session = vk_api.VkApi(login=login, password=password, auth_handler=_2fa_handler)
vk_session.auth()
return vk_session.get_api()

9
utils/detect.py Normal file
View File

@@ -0,0 +1,9 @@
import pytesseract
from PIL import Image
import io
import requests
def detect(url):
response = requests.get(url)
img = Image.open(io.BytesIO(response.content))
return pytesseract.image_to_string(img).lower()