Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不协调机器人youtube url python_Python_Python Requests - Fatal编程技术网

不协调机器人youtube url python

不协调机器人youtube url python,python,python-requests,Python,Python Requests,我制作了一个机器人,可以通过discord播放音频,但我现在想做的是让他在聊天中说出url @bot.command(pass_context = True) async def play(ctx,*,query : str): opts = {'default_search': 'auto','quiet': True,} #options pour youtube-dl que je comprends pas if voice == None: #si le

我制作了一个机器人,可以通过discord播放音频,但我现在想做的是让他在聊天中说出url

@bot.command(pass_context = True)
async def play(ctx,*,query : str):


    opts = {'default_search': 'auto','quiet': True,}    #options pour youtube-dl que je comprends pas
    if voice == None:   #si le bot n'a pas encore été connecté à un channel
        await bot.say('Summon me in your channel first (!summon)')

    elif query[:3] == 'url':
        try:
            n = int(query[4])       
            await bot.say(videos[n][0])
        except Exception as e:
            await bot.say (e)


    elif len(query) != 1: #si le joueur essaie de taper !play recherche et non !play 1/2/3/4
        videos = yt.recherche(query,4)  #on charge les informations des vidéos avec le module yt
        for i in range(4): #on affiche les 4 résultas avec un emebed contenant un apercu de chaque vidéo
            em = discord.Embed(title=videos[i][1], colour=0xff0000, type = 'rich')
            em.set_thumbnail(url='https://i.ytimg.com/vi/'+videos[i][0][32:]+'/hqdefault.jpg?sqp=-oaymwEXCNACELwBSFryq4qpAwkIARUAAIhCGAE=&rs=AOn4CLDBtpHoodvOvDCPjzg9t7PzSljI3A')
            await bot.send_message(ctx.message.channel,None,embed=em)
        await bot.say('Make your choice! (!play 1/2/3/4)')

    else:   #si le joueur essaie de choisir une video avec !play 1/2/3/4
        try:
            if player != None:  #si le bot joue déjà une chanson, on stoppe la précédente avant de commencer la suivante (sinon ca plante)
                player.stop()
            query = int(query)  #on convertit en entier : str -> int
            player = await voice.create_ytdl_player(videos[query-1][0],ytdl_options=opts) #on initialise le player audio dans la varialble globale
            player.volume = 0.2     #on fixe le volume
            player.start()          #on démarre la lecture

        except Exception as e:     #exception atteinte en général si on a pas réussi à faire query = int(query), c'est à dire que le joueur à fait une faute de frappe
            await bot.say(e)
我的问题是,当我想将elif查询:3改为其他内容,以缩短我想输入的“url”时,比如。play-u。。。。但我不能让它工作

import requests  #librairie de base permettant d'ouvrir une page web dans la console en gros
def记录(查询,nb):

query=query.replace('''+'))
url='1〕https://www.youtube.com/results?search_query=“+查询
r=请求.get(url).text
应答器='data context item id=“'#应答器信号器l'eleément manquant dans le代码源
liste_视频=[]
对于射程内的e(注意):#在Ajute les url de chaque视频上
liste_videos.append([])
i=r.索引(应答器)#应答器位置和代码
liste_视频[-1]。追加('https://www.youtube.com/watch?v=“+r[i+22:i+22+11])
r=r[i+100:]#在双门双门轿跑车上,但在套房和便利设施上
对于范围内的视频(nb):#puis-leurs滴度
url=liste_videos[vid][0]#在prend l'url d'une视频上
r=请求.get(url).text#在ouvre la页面上对应
title=r[r.index('')+7:r.index('')#等
播放视频[vid]。附加(标题)#在met le titre dans le tableau视频上播放
u=liste_视频[vid][0]
基于Relaye CE表的返回Li视频

哈奇:假设你用“play u1”调用机器人

查询本质上是字符串,可以像列表一样访问。请看这里:


谢谢你的回答!但如果我这样更改,机器人会将其视为一个新的查询,因此只会弹出4个关于你的视频。1)我认为有2个不同的问题。1)解析u选项,看看你是否使用
等待机器人降落。说('我在这里')
2)这取决于
视频中的内容以及url的位置抱歉,我不明白你说的解析u选项是什么意思?我已经添加了视频来源的代码位!感谢你的帮助,非常感谢你可能应该发出seprate命令:。此外,这完全取决于你如何调用你的方法您无法将url更改为,因为recherche希望url字符串查询youtube,而且视频是在elif==url之后定义的,这将中断。这就是为什么如果我保留elif query:3,并且当我更改那些它不再工作的url时,该命令会工作的地方。
query = query.replace(' ','+')
url = 'https://www.youtube.com/results?search_query='+query
r = requests.get(url).text

balise = 'data-context-item-id="'   #balise signalant l'élément manquant dans le code source

liste_videos = []

for e in range(nb): #on ajoute les url de chaque video

    liste_videos.append([])
    i = r.index(balise)     #renvoie la position de la balise dans le code
    liste_videos[-1].append('https://www.youtube.com/watch?v='+r[i+22:i+22+11])
    r = r[i+100:]   #on coupe le début du code pour aller chercher dans la suite plus facilement


for vid in range(nb): #puis leurs titre

    url = liste_videos[vid][0]  #on prend l'url d'une video
    r = requests.get(url).text  #on ouvre la page correspondante
    title = r[r.index('<title>')+7:r.index('</title>')]     #et on cherche le titre dedans
    liste_videos[vid].append(title) #puis on met le titre dans le tableau video
    u = liste_videos[vid][0]  

return liste_videos     #on finit par renvoyer ce tableau
 elif query[0] == 'u':
    try:
        n = int(query[1])  
        await bot.say(videos[n][0])