fnorby777's picture
Initial clean commit
076bd51
Raw
History Blame Contribute Delete
3.43 kB
import sys
import os
import multiprocessing
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
def record_user(
user, url, room_id, mode, interval, proxy, output, duration, use_telegram, cookies
):
from core.tiktok_recorder import TikTokRecorder
from utils.logger_manager import logger
try:
TikTokRecorder(
url=url,
user=user,
room_id=room_id,
mode=mode,
automatic_interval=interval,
cookies=cookies,
proxy=proxy,
output=output,
duration=duration,
use_telegram=use_telegram,
).run()
except Exception as e:
logger.error(f"{e}")
def run_recordings(args, mode, cookies):
if isinstance(args.user, list):
processes = []
for user in args.user:
p = multiprocessing.Process(
target=record_user,
args=(
user,
args.url,
args.room_id,
mode,
args.automatic_interval,
args.proxy,
args.output,
args.duration,
args.telegram,
cookies,
),
)
p.start()
processes.append(p)
try:
for p in processes:
p.join()
except KeyboardInterrupt:
print("\n[!] Ctrl-C detected.")
try:
for p in processes:
p.join()
except KeyboardInterrupt:
print("\n[!] Forcefully terminating all processes.")
for p in processes:
if p.is_alive():
p.terminate()
else:
record_user(
args.user,
args.url,
args.room_id,
mode,
args.automatic_interval,
args.proxy,
args.output,
args.duration,
args.telegram,
cookies,
)
def main():
from utils.args_handler import validate_and_parse_args
from utils.utils import read_cookies
from utils.logger_manager import logger
from utils.custom_exceptions import TikTokRecorderError
from check_updates import check_updates
try:
# validate and parse command line arguments
args, mode = validate_and_parse_args()
# check for updates
if args.update_check is True:
logger.info("Checking for updates...\n")
if check_updates():
exit()
else:
logger.info("Skipped update check\n")
# read cookies from the config file
cookies = read_cookies()
# run the recordings based on the parsed arguments
run_recordings(args, mode, cookies)
except TikTokRecorderError as ex:
logger.error(f"Application Error: {ex}")
except Exception as ex:
logger.critical(f"Generic Error: {ex}", exc_info=True)
if __name__ == "__main__":
# print the banner
from utils.utils import banner
banner()
# check and install dependencies
from utils.dependencies import check_and_install_dependencies
check_and_install_dependencies()
# set up signal handling for graceful shutdown
multiprocessing.freeze_support()
# run
main()