Untitled

 avatar
unknown
python
2 years ago
5.1 kB
7
Indexable
import requests
from threading import Thread
from time import sleep as slp
from time import time as getTime
from json import loads
from hashlib import sha1
from uuid import uuid4
import hmac
import names
import hashlib
from time import sleep 
import base64
from contextlib import suppress
#from BotAmino import *

import agorartc
import sys
from flask import Flask, request
current=[1]

class MyRtcEngineEventHandler(agorartc.RtcEngineEventHandlerBase):

    def __init__(self, rtc):
        super().__init__()
        self.rtc = rtc

    def onWarning(self, warn, msg):
        if warn != 1031:
            print(f"warn: {warn}")

    def onError(self, err, msg):
        print(f"err: {err}")

    def onJoinChannelSuccess(self, channel, uid, elapsed):
        print("onJoinChannelSuccess")
        rtc.muteLocalAudioStream(True)
        

    def onRejoinChannelSuccess(self, channel, uid, elapsed):
        print("onRejoinChannelSuccess")

    def onLeaveChannel(self, stats):
        print("onLeaveChannel")
    def onAudioMixingStateChanged(self,state,reason):
        print(state)
        if int(state)==710:
            rtc.muteLocalAudioStream(False)
            current.clear()
            current.append(0)

        if int(state)==713:
            rtc.muteLocalAudioStream(True)
            current.clear()
            current.append(1)
        print("compleated")



rtc = agorartc.createRtcEngineBridge()
eventHandler = MyRtcEngineEventHandler(rtc)
rtc.initEventHandler(eventHandler)

rtc.initialize("d544b053e3e94dd2a8f51c6668522372", None, agorartc.AREA_CODE_GLOB & 0xFFFFFFFF)
rtc.enableAudio()
rtc.setAudioProfile(6, 2)
from pprint import pprint
import time
sid="AnsiMSI6IG51bGwsICIwIjogMiwgIjMiOiAwLCAiMiI6ICI4ZDY1YzBkNS1iYWQzLTQwYTUtYmEwYS00YmQ0MTJkMWM1ZGUiLCAiNSI6IDE2NjYyODczMTQsICI0IjogIjEwMy4yMDEuMTM0Ljk5IiwgIjYiOiAxMDB9SuMX2S9TZdFuTlNL9ZRzQDPLW-Q"
import threading
appp = Flask(__name__)
#run_with_ngrok(app)
from yt_dlp import YoutubeDL
import os
import signal
port=sys.argv[-1]
name=names.get_first_name()
#rtc.joinChannel(token['channelKey'], token['channelName'], '', int(token['channelUid']))
#rtc.muteLocalAudioStream(True)
def telecharger(url):
    location="C:\\Users\\Administrator\\Desktop\\sss\\Agora-Python-SDK\\audio\\"
    file=f'{name}.mp3'
    
    
    music = None
    if ("=" in url and "/" in url and " " not in url) or ("/" in url and " " not in url):
        if "=" in url and "/" in url:
            music = url.rsplit("=", 1)[-1]
        elif "/" in url:
            music = url.rsplit("/")[-1]

        rtc.stopAudioMixing()
        try:
            path = os.path.join(location, file)
            os.remove(path)
        
        except Exception as e:
            print(e)
        ydl_opts = {
            'format': 'bestaudio/best',
            'postprocessors': [{
                'key': 'FFmpegExtractAudio',
                'preferredcodec': 'mp3',
                'preferredquality': '192',
                }],
            'extract-audio': True,
            'outtmpl': f"audio/{name}.mp3",
            }

        with YoutubeDL(ydl_opts) as ydl:
            video_length = ydl.extract_info(url,download=False).get('duration')
            print(video_length)
            if int(video_length)<420:
                ydl.extract_info(url,download=True)
                ydl.cache.remove()
                return "done"
            else:
                return "song length exceeded"

        
        

        
    #return "done"

@appp.route("/")
def lo():
    return "Hello Geeks!! from Google Colab"

@appp.route(f'/join', methods=['POST'])
def queon():
    token=loads(request.form.get('data'))
    print(token)
    rtc.joinChannel(token['channelKey'], token['channelName'], '', int(token['channelUid']))
    
    return "yo"

def stop(v):
    try:
        sig = getattr(signal, "SIGKILL", signal.SIGTERM)
        os.kill(os.getpid(), sig)
    except: pass

@appp.route('/type', methods=['POST'])
def leave():
    data=request.form.get("type")
    print(data)
    if data=="pause":
        rtc.pauseAudioMixing()
    if data=="resume":
        rtc.resumeAudioMixing()
    if data=="mute":
        rtc.muteLocalAudioStream(True)
    if data=="unmute":
        rtc.muteLocalAudioStream(False)
    if data=="leave":
        rtc.leaveChannel()
        Thread(target=stop,args=[""]).start()
    return "ill"

@appp.route('/volume', methods=['POST'])
def volume():
    data=request.form.get("volume")
    rtc.adjustAudioMixingVolume(int(data))
    return "tt"


@appp.route('/play', methods=['POST'])
def question():
    
    if current[0]==1:
        url=request.form.get("url")
        
        res=telecharger(url)
        if res=="done":
            rtc.startAudioMixing(f"audio/{name}.mp3", False, True, 1)
            return "done"
        else:
            return "song length exceeded"
    else:
        return "song currently playing"


if __name__ == "__main__":
  appp.run(port=port)
Editor is loading...