Recherche avancée

Médias (91)

Autres articles (11)

  • Supporting all media types

    13 avril 2011, par

    Unlike most software and media-sharing platforms, MediaSPIP aims to manage as many different media types as possible. The following are just a few examples from an ever-expanding list of supported formats : images : png, gif, jpg, bmp and more audio : MP3, Ogg, Wav and more video : AVI, MP4, OGV, mpg, mov, wmv and more text, code and other data : OpenOffice, Microsoft Office (Word, PowerPoint, Excel), web (html, CSS), LaTeX, Google Earth and (...)

  • Organiser par catégorie

    17 mai 2013, par

    Dans MédiaSPIP, une rubrique a 2 noms : catégorie et rubrique.
    Les différents documents stockés dans MédiaSPIP peuvent être rangés dans différentes catégories. On peut créer une catégorie en cliquant sur "publier une catégorie" dans le menu publier en haut à droite ( après authentification ). Une catégorie peut être rangée dans une autre catégorie aussi ce qui fait qu’on peut construire une arborescence de catégories.
    Lors de la publication prochaine d’un document, la nouvelle catégorie créée sera proposée (...)

  • Les thèmes de MediaSpip

    4 juin 2013

    3 thèmes sont proposés à l’origine par MédiaSPIP. L’utilisateur MédiaSPIP peut rajouter des thèmes selon ses besoins.
    Thèmes MediaSPIP
    3 thèmes ont été développés au départ pour MediaSPIP : * SPIPeo : thème par défaut de MédiaSPIP. Il met en avant la présentation du site et les documents média les plus récents ( le type de tri peut être modifié - titre, popularité, date) . * Arscenic : il s’agit du thème utilisé sur le site officiel du projet, constitué notamment d’un bandeau rouge en début de page. La structure (...)

Sur d’autres sites (3762)

  • My discord music bot is not playing the entire music

    21 décembre 2024, par james12

    My discord music bot based on discord.py, yt_dlp and ffmpeg is not working.
I downloaded every module that is required and added environmental variables.
But, my discord bot is not working properly.
The bot plays the music properly at first, but the music ends before the song finishes.

    


    Full code below :

    


    import discord
from discord.ext import commands
import yt_dlp

app = commands.Bot(command_prefix='!', intents=discord.Intents.all())
ydl_opts = {
    'format': 'bestaudio/best',
    'extractaudio': True,
    'audioformat': 'mp3',
    'outtmpl': 'downloads/%(title)s.%(ext)s',
    'quiet': True,
}

@app.event
async def on_ready():
    print('Done')
    await app.change_presence(status=discord.Status.online, activity=None)

@app.command()
async def play(ctx, *, search: str):
    channel = ctx.author.voice.channel
    voice_client = discord.utils.get(app.voice_clients, guild=ctx.guild)

    if not voice_client:
        voice_client = await channel.connect()

    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        info = ydl.extract_info(f"ytsearch:{search}", download=False)['entries'][0]
        url = info['url']
        title = info['title']

    # 음악 재생
    voice_client.play(discord.FFmpegPCMAudio(url, executable="ffmpeg"), after=lambda e: print("재생 완료"))
    await ctx.send(f"{ctx.author.mention}님이 요청하신 {title} 노래 재생 중")

@app.command()
async def stop(ctx):
    voice_client = discord.utils.get(app.voice_clients, guild=ctx.guild)
    if voice_client and voice_client.is_playing():
        voice_client.stop()
        await voice_client.disconnect()
    
app.run('token')


    


    I tried to add options in FFmpeg like this : options="-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5"
but it doesn't work.
I also added extra yt-dlp options.
I hope the bot properly plays the full version of music from youtube in discord.

    


  • apply ffmpeg to many files

    30 juillet 2015, par puchu

    I have written simple script :

    #!/bin/bash
    find . -name "*.m4a" | while read filename;
    do
       new_filename=$(echo "$filename" | sed "s/^\(.*\)m4a$/\1flac/g");
       if [ ! -f "$new_filename" ]
       then
               #ffmpeg -i "$filename" -acodec flac "$new_filename" > /dev/null 2>&1;
               #wait $!;
               echo "$filename";
               echo "$new_filename";
       fi
    done

    it outputs correct result :

    ./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/04 - Met.m4a
    ./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/04 - Met.flac
    ./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/02 - Nach Dem Winter.m4a
    ./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/02 - Nach Dem Winter.flac

    if uncomment ffmpeg and wait :

    ./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/04 - Met.m4a
    ./Equilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/04 - Met.flac
    uilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/02 - Nach Dem Winter.m4a
    uilibrium, ALAC [GER] viking.folk/2003 - Demo 2003, ALAC/02 - Nach Dem Winter.flac

    And no flacs has been done !

    PS

    #!/bin/bash
    find . -name "*.m4a" | while read filename;
    do
       new_filename=$(echo "$filename" | sed "s/^\(.*\)m4a$/\1flac/g");
       if [ ! -f "$new_filename" ]
       then
               ffmpeg -i "$filename" -acodec flac "$new_filename";
               echo "$filename";
               echo "$new_filename";
       fi
       sleep 5;
    done

    1) encode start but suddenly stop with no error messages

    2) encode couldn’t start because of "uilibrium" instead of "./Equilibrium"

    3) = 1)

    4) = 2)

    ...

    last) correctly

  • Anomalie #3248 (Nouveau) : Les fonctions parametre_url (js et php) n’insèrent pas correctement les...

    26 juillet 2014, par Michel Bystranowski

    L’appel

    parametre_url(’http://domaine/spip.php?t[]=1’,’t’,array(0,2)) ;
    


    retourne

    http://domaine/spip.php?t[]=1&t[]=0&t[]=2
    


    au lieu de

    http://domaine/spip.php?t[]=0&t[]=2
    

    Ce problème est présent à la fois dans la version javascript et la version php. Je n’ai testé que sur SPIP 3.0.16.

    J’ai un patch qui corrige ça dans les deux cas.

    Pour le javascript, il y a une regexp mal échappée, et un appel à la fonction substring avec un index négatif, ce qui n’est pas permis, seule la fonction substr le permet… (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring)

    Et dans les deux cas, il faut bien vider les valeurs initiale du tableau dans l’url avant d’ajouter les nouvelles valeurs.

    Je joins des fichiers corrigés, et voici un patch :

    2 files changed, 9 insertions(+), 3 deletions(-)
     2014/ecrire/inc/utils.php             | 5 +++++
     2014/prive/javascript/ajaxCallback.js | 7 ++++---
    

    Modified 2014/ecrire/inc/utils.php
    diff —git a/2014/ecrire/inc/utils.php b/2014/ecrire/inc/utils.php
    index b875aa2..01a7f53 100644
    — - a/2014/ecrire/inc/utils.php
    +++ b/2014/ecrire/inc/utils.php
    @@ -333,6 +333,11 @@ function parametre_url($url, $c, $v=NULL, $sep=’&amp ;’)
    $url[$n] = $r[1].’=’.$u ;
    unset($ajouts[$r[1]]) ;

    + // Pour les tableaux on laisse tomber les valeurs de
    + // départ, on remplira à l’étape suivante
    + else
    + unset($url[$n]) ;
    +


    Modified 2014/prive/javascript/ajaxCallback.js
    diff —git a/2014/prive/javascript/ajaxCallback.js b/2014/prive/javascript/ajaxCallback.js
    index 118fc31..de434c4 100644
    — - a/2014/prive/javascript/ajaxCallback.js
    +++ b/2014/prive/javascript/ajaxCallback.js
    @@ -809,7 +809,7 @@ function parametre_url(url,c,v,sep,force_vide)

    else
    a=url ;
    - var regexp = new RegExp(’^(’ + c.replace(’[]’,’[]’) + ’[?] ?)(=.*) ?$’) ;
    + var regexp = new RegExp(’^(’ + c.replace(’[]’,’[]’) + ’[?] ?)(=.*) ?$’) ;
    var ajouts = [] ;
    var u = (typeof(v) !==’object’) ?encodeURIComponent(v):v ;
    var na = [] ;
    @@ -829,11 +829,12 @@ function parametre_url(url,c,v,sep,force_vide)

    // Ajout. Pour une variable, remplacer au meme endroit,
    // pour un tableau ce sera fait dans la prochaine boucle
    - else if (r[1].substring(-2) != ’[]’)
    + else if (r[1].substr(-2) != ’[]’)
    na.push(r[1]+’=’+u) ;
    ajouts.push(r[1]) ;

    - else na.push(args[n]) ;
    + /* Pour les tableaux ont laisse tomber les valeurs de départ, on
    + remplira à l’étape suivante */

    else
    na.push(args[n]) ;