Source code for vk_url_scraper.utils
import json
import os
import sys
from contextlib import contextmanager
from datetime import datetime
[docs]class DateTimeEncoder(json.JSONEncoder):
# to allow json.dump with datetimes do json.dumps(obj, cls=DateTimeEncoder)
[docs] def default(self, o):
if isinstance(o, datetime):
return str(o) # with timezone
return json.JSONEncoder.default(self, o)
def captcha_handler(captcha):
key = input(
f"CAPTCHA DETECTED, please solve it and input the solution. url= {captcha.get_url()} :"
).strip()
return captcha.try_again(key)
[docs]@contextmanager
def suppress_stdout():
# https://thesmithfam.org/blog/2012/10/25/temporarily-suppress-console-output-in-python/
# this is used to silence ytdlp which does not fully respects quite=True and outputs filenames to the console
with open(os.devnull, "w") as devnull:
old_stdout = sys.stdout
sys.stdout = devnull
try:
yield
finally:
sys.stdout = old_stdout