Untitled

mail@pastecode.io avatar
unknown
python
6 months ago
6.5 kB
2
Indexable
Never
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from time import sleep
import requests
from selenium.webdriver.common.action_chains import ActionChains
import urllib.parse, urllib.request, sys
import os
import re

from easy_playlist import Playlists

import datetime
import time

# from selenium.webdriver.chrome.service import Service
# from webdriver_manager.chrome import ChromeDriverManager

current_directory = os.path.dirname(os.path.abspath(__file__))


pls = Playlists()
drivers = {}


def tex(text):
    r="".join(text.split())
    return r.lower()


    
def create_room(channel,key,uid,chatId,ss):
    close_driver(chatId)
    options = Options()
    options.add_argument('use-fake-device-for-media-stream')
    options.add_argument('--headless')
    options.add_argument('--no-sandbox')
    options.add_argument('--disable-dev-shm-usage')
    options.add_argument('--use-fake-ui-for-media-stream')
    options.add_argument('--use-file-for-fake-audio-capture=Silent.wav')
    options.add_argument(f'--new-window={chatId}')
    driver = webdriver.Chrome(options=options)

    if ss=="sc":
        driver.get("https://sunny-hotteok-2f6e84.netlify.app/")
    else:
        driver.get("https://sunny-hotteok-2f6e84.netlify.app/")
    driver.tab_name = chatId
    # pls.add_playlist(chatId)
    drivers[chatId] = {"driver": driver, "start_time": datetime.datetime.now()}
    driver.find_element(By.ID,'appid').send_keys('2b0567d3ff534f0593528432dac20dc1')
    driver.find_element(By.ID,'token').send_keys(key)
    driver.find_element(By.ID,'channel').send_keys(channel)
    driver.find_element(By.ID,'uid').send_keys(uid)
    driver.find_element(By.ID,'join').click()
    sleep(1)
    if ss!="sc":
        driver.find_element(By.ID,'mute-audio').click()
    return driver



def convert_time(seconds):
    minutes = seconds // 60
    remaining_seconds = seconds % 60
    return minutes, remaining_seconds

def play_sc(url,chatId):

    driver=switch(chatId)
    url_input=driver.find_element(By.ID,'urlInput')
    url_input.clear()
    url_input.send_keys(url)
    driver.find_element(By.ID,'stop-audio-mixing').click()
    driver.find_element(By.ID,'local-audio-mixing').click()


# def play(song_info,chatId,custom:str ="no"):
#     driver=switch(chatId)
#     min,sec=convert_time(int(song_info["duration"]))
#     pl = pls.get_playlist(chatId)
#     index=pl.index
#     if custom =="no":
#         if str(index) !='-1':
#             if pl.playlist[index].playing==True:
#                 return "naughty hora ke bkl gana chal raha hai"
    
#     Entry = Query()
#     result = db.get(Entry.id == song_info["id"])
#     if result:
#         if os.path.exists(result["path"]):
#             absolute_path = os.path.join(current_directory, result["path"])
#             driver.find_element(By.ID,'local-file').send_keys(absolute_path)
#             driver.find_element(By.ID,'stop-audio-mixing').click()
#             driver.find_element(By.ID,'local-audio-mixing').click()
            
#             pl.add_music(absolute_path)
            
#             pl.play()
#             msg=f'''
# Now playing: {song_info["song"]}
# 01:23 ━━━━●───── {min}:{sec}
#                  ◁  ❚❚  ▷              
# '''
#             return msg
#         else:
#             print("song not")
#     else:
        
#         path=download_song(song_info)
#         song_info["path"]=path
#         db.insert(song_info)
#         if os.path.exists(song_info["path"]):
#             absolute_path = os.path.join(current_directory, song_info["path"])
#             driver.find_element(By.ID,'local-file').send_keys(absolute_path)
#             driver.find_element(By.ID,'stop-audio-mixing').click()
#             driver.find_element(By.ID,'local-audio-mixing').click()
#             pl = pls.get_playlist(chatId)
#             pl.add_music(absolute_path)
#             pl.play()
#             msg=f'''
# Now playing: {song_info["song"]}
# 01:23 ━━━━●───── {min}:{sec}
#                  ◁  ❚❚  ▷              
# '''
#             return msg
#         else:
#             return "song not found"
    







def pause(chatId):
    driver=switch(chatId)
    driver.find_element(By.ID,'pause').click()
    

def resume(chatId):
    driver=switch(chatId)
    # pl = pls.get_playlist(chatId)
    driver.find_element(By.ID,'resume').click()


def mute(chatId):
    driver=switch(chatId)
    driver.find_element(By.ID,'mute-audio').click()


def unmute(chatId):
    driver=switch(chatId)
    driver.find_element(By.ID,'unmute-audio').click()

def stop(chatId):
    driver=switch(chatId)
    # pl = pls.get_playlist(chatId)
    driver.find_element(By.ID,'stop-audio-mixing').click()
    # pl.stop()
    driver.find_element(By.ID,'mute-audio').click()

def playlist_clear(chatId):
    try:
        close_driver(chatId)
        pl = pls.get_playlist(chatId)
    except Exception as e: print(e)
    
def close_div(chatId):
    driver=switch(chatId)
    driver.close()
    drivers.remove(driver)

def volume(chatId,volume):
    driver=switch(chatId)
    driver.execute_script(f'setVolume({volume});')


def switch(chat_id):
    if chat_id in drivers:
        driver = drivers[chat_id]["driver"]
        driver.switch_to.window(driver.current_window_handle)
        return driver
    else:
        print(f"Driver for chat {chat_id} not found.")

def close_driver(chat_id):
    if chat_id in drivers:
        driver_data = drivers.pop(chat_id)
        driver = driver_data["driver"]
        driver.quit()
    else:
        print(f"Driver for chat {chat_id} not found.")

def close_old_tabs(max_duration):
    now = datetime.datetime.now()
    for chat_id, driver_data in list(drivers.items()):
        start_time = driver_data["start_time"]
        if (now - start_time).total_seconds() > max_duration:
            close_driver(chat_id)

def check_and_close_old_tabs_periodically(interval, max_duration):
    while True:
        close_old_tabs(max_duration)
        time.sleep(interval)


import threading
interval_seconds = 600 
max_tab_duration = 3600
check_thread = threading.Thread(target=check_and_close_old_tabs_periodically, args=(interval_seconds, max_tab_duration))
check_thread.start()