🚀 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
/.vscode
.DS_Store
__pycache__
config.ini
vk_config.v2.json

56
main.py
View File

@@ -1,33 +1,45 @@
import argparse
import configparser
from PIL import Image
import pytesseract
import vk_api
from rich import print
import ast
from time import sleep
from rich import print#, inspect
from rich.console import Console
c = Console()
from utils.authenticate import authenticate
from utils.detect import detect
config = configparser.ConfigParser()
config.read('config.ini')
login = config['DEFAULT']['login']
password = config['DEFAULT']['password']
terms = ast.literal_eval(config['SEARCH']['terms'])
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)')
parser.add_argument('-p', '--password', action='store', help='Your vk password')
queries = []
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():
code = c.input("Enter 2FA code: ", style="bold cyan")
return code, True
# If the image we are getting is new do stuff
if image_url_clean != query['last_url']:
photos_processed += 1
query['last_url'] = image_url_clean
vk_session = vk_api.VkApi(login=args.login, password=args.password, auth_handler=_2fa_handler)
vk_session.auth()
text = detect(image_url+query['string'])
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()
c.print(vk.docs.search(q=".jpg"))
#print(pytesseract.image_to_string(Image.open("test.png")))
sleep(1)

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()