Recherche avancée

Médias (91)

Autres articles (65)

  • Le profil des utilisateurs

    12 avril 2011, par

    Chaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
    L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)

  • Configurer la prise en compte des langues

    15 novembre 2010, par

    Accéder à la configuration et ajouter des langues prises en compte
    Afin de configurer la prise en compte de nouvelles langues, il est nécessaire de se rendre dans la partie "Administrer" du site.
    De là, dans le menu de navigation, vous pouvez accéder à une partie "Gestion des langues" permettant d’activer la prise en compte de nouvelles langues.
    Chaque nouvelle langue ajoutée reste désactivable tant qu’aucun objet n’est créé dans cette langue. Dans ce cas, elle devient grisée dans la configuration et (...)

  • XMP PHP

    13 mai 2011, par

    Dixit Wikipedia, XMP signifie :
    Extensible Metadata Platform ou XMP est un format de métadonnées basé sur XML utilisé dans les applications PDF, de photographie et de graphisme. Il a été lancé par Adobe Systems en avril 2001 en étant intégré à la version 5.0 d’Adobe Acrobat.
    Étant basé sur XML, il gère un ensemble de tags dynamiques pour l’utilisation dans le cadre du Web sémantique.
    XMP permet d’enregistrer sous forme d’un document XML des informations relatives à un fichier : titre, auteur, historique (...)

Sur d’autres sites (5233)

  • How do i properly setup ffmpeg and fix this "Permission Denied" error im getting ?

    8 décembre 2020, par ExaNori

    Error im getting
C:/Users/Motzumoto/Desktop/AGB/ffmpeg/bin: Permission denied

    


    I already have ffmpeg installed to path on my windows 10 machine, but that didnt fix it, so i just tried to put ffmpeg in my bots directory, that didnt do it either.
Heres my music code if anyone can help
It uses a mixture of youtube-dl and ffmpeg
If there are also any errors that would stop this from working at all it'd be nice if you could show me them, im quite tired of this as of now and im honestly just about to scrap this idea and forget about it

    


    I've tried linking the path to the ffmpeg.exe, that still didnt work, i got the same error, i have no idea what to do

    


    import asyncio
import logging
import math
from urllib import request

import discord
from discord.ext import commands
import youtube_dl
from utils.guilds import Guilds
import ffmpeg
from asyncio import run_coroutine_threadsafe as coroutine

DOWNLOAD_PATH = "audio" # download path of the file
STREAM_INDICATOR_PREFIX = "${STREAM}:"




# options
ytdl_options = {
    "quiet": True,
    "forceipv4": True,
    "noplaylist": True,
    "no_warnings": True,
    "ignoreerrors": True,
    "nooverwrites": True,
    "restrictfilenames": True,
    "nocheckcertificate": True,
    "default_search": "auto",
    "format": "bestaudio/best",
}
ffmpeg_options = {
    "options": "-vn" # indicates that we have disabled video recording in the output file
}

ytdl = youtube_dl.YoutubeDL(ytdl_options) # youtube_dl object

# checks functions
def is_connected(ctx):
    """Check if the bot is connected to a voice channel."""
    
    if ctx.voice_client:
        return True
    
    return False
def is_same_channel(ctx):
    """Check if the bot and the user is in the same channel."""
    
    # try to get their voice channel id if there's any
    try:
        bot_channel_id = ctx.voice_client.channel.id
        user_channel_id = ctx.author.voice.channel.id
    # if one of them is not connected to a voice channel then they're not together
    except AttributeError:
        return False
    
    # check if their voice channel id is the same
    if bot_channel_id == user_channel_id:
        return True
    
    return False
async def checks(ctx):
    """Do some checking."""
    
    # check if the user and the bot is in the same channel
    if not is_same_channel(ctx):
        await ctx.send("I am not with you. How dare you to command me like that.")
        return False
    
    return True

# other function
async def create_source(ctx, query):
    """Creates youtube_dl audio source for discord.py voice client."""
    
    try:
        async with ctx.typing(): # shows that the bot is typing in chat while searching for an audio source
            source = await YTDLSource.from_url(query, ctx.bot.loop) # creates a youtube_dl source
    except IndexError: # if found nothing
        await ctx.send("I found nothing with the given query..")
        return None
    
    return source

class Music(commands.Cog, name="music"):
    def __init__(self, bot):
        self.bot = bot
        self.guilds = Guilds() # collection of some guilds that this bot is currently in
    
    async def cog_command_error(self, ctx, error):
        """Catch all errors of this cog."""
        
        # a check on a command has failed
        if isinstance(error, commands.CheckFailure):
            await ctx.send("I'm not connected to any voice channel.")
        # ignore this error because it is already handled at the command itself
        elif isinstance(error, commands.errors.BadArgument):
            pass
        # otherwise, log all the other errors
        else:
            music_logger.exception(error)
            await ctx.send(error)
    
    @commands.command()
    async def join(self, ctx):
        """Invite me to your voice channel."""
        
        try:
            async with ctx.typing(): # shows that the bot is typing in chat while joining the voice channel
                await ctx.author.voice.channel.connect()
                await ctx.send("Alright, I joined your voice channel.")
        # user is not yet connected to a voice channel
        except AttributeError:
            await ctx.send(f"You must be connected to a voice channel first {ctx.author.name}.")
        # bot is already connected to a voice channel
        except discord.ClientException:
            if is_same_channel(ctx):
                await ctx.send("I'm already with you.")
            else:
                await ctx.send("I'm already with somebody else.")
    
    @commands.command()
    @commands.check(is_connected)
    async def leave(self, ctx):
        """Kick me out of your voice channel."""
        
        # do some checking before executing this command
        if not await checks(ctx):
            return
        
        # reset some bot's states
        self.guilds(ctx).has_played_voice = False # reset 'has_played_voice' state
        self.guilds(ctx).queue.clear() # reset the queue
        
        # finally, stop and disconnect the bot
        ctx.voice_client.stop() # stop the bot's voice
        await ctx.voice_client.disconnect() # disconnect the bot from voice channel
        await ctx.send("Ah, alright, cya.")
    
    async def play_source(self, ctx, vc, source):
        """Play an audio to a voice channel."""
        
        def play_next(error):
            """Executes when the voice client is done playing."""
            
            # log the errors if there is any
            if error:
                music_logger.exception(error)
                coroutine(ctx.send(error), self.bot.loop)
            
            # ensure that there is a song in queue
            if self.guilds(ctx).queue.queue:
                coroutine(ctx.invoke(self.bot.get_command("next")), self.bot.loop) # go to the next song
        
        vc.play(source, after=play_next) # play the voice to the voice channel
        await ctx.send(f"Now playing '{source.title}'.")
    
    @commands.command(aliases=("p", "stream"))
    async def play(self, ctx, *, query=""):
        """Play a song for you."""
        
        # check if the query argument is empty
        if not query:
            # if yes, cancel this command
            await ctx.send("What should I play?")
            return
        
        # check if this command is invoked using 'stream' alias
        if ctx.invoked_with == "stream":
            SIP = STREAM_INDICATOR_PREFIX # put prefix to the title of the source that indicates that it must be streamed
        else:
            SIP = ""
        
        # ensure that the bot is connected a voice channel
        try:
            # connect the bot to the user voice channel
            await ctx.author.voice.channel.connect()
        except AttributeError:
            # user is not yet connected to a voice channel
            await ctx.send(f"You must be connected to a voice channel first {ctx.author.name}.")
            return
        except discord.ClientException:
            pass # just ignore if bot is already connected to the voice channel
        
        # do some other checking before executing this command
        if not await checks(ctx):
            return
        
        # create the audio source
        source = await create_source(ctx, SIP + query)
        
        # ensure that there is actually a source
        if source:
            # initialize bot's states if the the queue is still empty
            if not self.guilds(ctx).queue.queue:
                self.guilds(ctx).has_played_voice = True # this means that the bot has played in the voice at least once
                self.guilds(ctx).queue.enqueue(SIP + source.title)
            
            # play the audio
            try:
                await self.play_source(ctx, ctx.voice_client, source)
            # enqueue the source if audio is already playing
            except discord.ClientException:
                self.guilds(ctx).queue.enqueue(SIP + source.title)
                await ctx.send(f"'{source.title}' is added to the queue.")
    
    @commands.command()
    @commands.check(is_connected)
    async def volume(self, ctx, *, vol=None):
        """Adjust my voice volume."""
        
        # do some checking before executing this command
        if not await checks(ctx):
            return
        
        vc = ctx.voice_client # get the voice client
        
        # ensure that the bot is playing voice in order to change the volume
        if not self.guilds(ctx).has_played_voice:
            await ctx.send("I haven't even started yet.")
            return
        elif vc.source is None:
            await ctx.send("I am not playing anything.")
            return
        
        # check if user has passed an argument
        if vol is None:
            await ctx.send("I expect an argument from 0 to 100.")
            return
        
        # cast string argument 'vol' into a float
        try:
            vol = float(vol)
        # except if the argument is not a number
        except ValueError:
            await ctx.send("The argument must only be a number.")
            return
        
        # set the volume
        if vol >= 0 and vol <= 100: # bound the volume from 0 to 100
            vc.source.volume = vol / 100
        else:
            await ctx.send("I expect a value from 0 to 100.")
    
    @commands.command()
    @commands.check(is_connected)
    async def pause(self, ctx):
        """Pause the song."""
        
        # do some checking before executing this command
        if not await checks(ctx):
            return
        
        vc = ctx.voice_client # get the voice client
        
        # ensure that the bot's voice is playing in order to pause
        if vc.is_playing():
            vc.pause()
            await ctx.send("Alright, paused.")
        # the bot haven't played yet
        elif not self.guilds(ctx).has_played_voice:
            await ctx.send("I haven't even started yet.")
        # there is no song in queue
        elif not self.guilds(ctx).queue.queue:
            await ctx.send("I am not playing anything.")
        else:
            await ctx.send("I already paused.")
    
    @commands.command()
    @commands.check(is_connected)
    async def resume(self, ctx):
        """Resume the song."""
        
        # do some checking before executing this command
        if not await checks(ctx):
            return
        
        vc = ctx.voice_client # get the voice client
        
        # ensure that the bot's voice is paused in order to resume
        if vc.is_paused():
            vc.resume()
            await ctx.send("Alright, song resumed")
        # the bot haven't played yet
        elif not self.guilds(ctx).has_played_voice:
            await ctx.send("I haven't even started yet.")
        # there is no song in queue
        elif not self.guilds(ctx).queue.queue:
            await ctx.send("I am not playing anything.")
        else:
            await ctx.send("I am not paused.")
    
    async def update_song(self, ctx):
        """Change the currently playing song."""
        
        vc = ctx.voice_client # get the voice client
        current = self.guilds(ctx).queue.current # get the current song in queue if there's any
        
        # ensure that the queue is not empty
        if current:
            source = await create_source(ctx, current) # create the audio source
        # the bot haven't played yet
        elif not self.guilds(ctx).has_played_voice:
            await ctx.send("I haven't even started yet.")
            return
        else:
            vc.stop() # stop the voice just to be sure
            await ctx.send("No more songs unfortunately.")
            return
        
        # if voice client is already playing, just change the source
        if vc.is_playing():
            vc.source = source
            await ctx.send(f"Now playing '{source.title}'.")
        # otherwise, play the source
        else:
            await self.play_source(ctx, vc, source)
    
    @commands.command()
    @commands.check(is_connected)
    async def next(self, ctx):
        """Skip the current song."""
        
        # do some checking before executing this command
        if not await checks(ctx):
            return
        
        self.guilds(ctx).queue.shift(1) # shift the queue to the left
        await self.update_song(ctx) # change the current song
    
    @commands.command()
    @commands.check(is_connected)
    async def prev(self, ctx):
        """Go back to the previous song."""
        
        # do some checking before executing this command
        if not await checks(ctx):
            return
        
        self.guilds(ctx).queue.shift(-1) # shift the queue to the right
        await self.update_song(ctx) # change the current song
    
    @commands.command()
    @commands.check(is_connected)
    async def removesong(self, ctx, *, index=1):
        """Remove a song in the queue."""
        
        # do some checking before executing this command
        if not await checks(ctx):
            return
        
        index -= 1 # decrement the 'index' to match the zero-based index of Python
        
        # if index is equal to 0, that means remove the currently playing song
        # do some extra stuff before removing the current song
        if index == 0:
            # try to remove a song in queue
            try:
                self.guilds(ctx).queue.dequeue() # dequeue a song in the queue
                self.guilds(ctx).queue.shift(-1) # shift the queue to the right so that the next song will be played instead of the next next song
                await ctx.invoke(self.bot.get_command("next")) # finally, play the next song
            # except when the queue is empty
            except IndexError:
                await ctx.send("I haven't even started yet.")
        # otherwise, just remove a song in queue
        else:
            # try to remove the song in queue
            try:
                self.guilds(ctx).queue.pop(index)
                await ctx.send("Song removed")
            # except if the song is not in the queue
            except IndexError:
                # check if the bot has not started playing yet
                if not self.guilds(ctx).has_played_voice:
                    await ctx.send("I haven't even started yet...")
                else:
                    await ctx.send(f"I can't remove that {ctx.author.name} because it doesn't exist.")
    @removesong.error
    async def remove_error(self, ctx, error):
        """Error handler for the 'remove' command."""
        
        # check if the argument is bad
        if isinstance(error, commands.errors.BadArgument):
            await ctx.send(f"I can't remove that {ctx.author.name}.")
            await ctx.send("The argument must only be a number or leave it none.")
    
    @commands.command()
    @commands.check(is_connected)
    async def stop(self, ctx):
        """Stop all the songs."""
        
        # do some checking before executing this command
        if not await checks(ctx):
            return
        
        vc = ctx.voice_client # get the voice client
        
        # ensure that the bot is connected to the voice client
        if vc.is_playing() or vc.is_paused():
            self.guilds(ctx).queue.clear() # reset the queue
            ctx.voice_client.stop() # stop the bot's voice
            await ctx.send("Playback stopped")
        # the bot haven't played yet
        elif not self.guilds(ctx).has_played_voice:
            await ctx.send("I haven't even started yet.")
        else:
            await ctx.send("I already stopped.")
    
    @commands.command()
    @commands.check(is_connected)
    async def queue(self, ctx):
        """Show the queue of songs."""
        
        SIP = STREAM_INDICATOR_PREFIX # shorten the variable name
        
        # do some checking before executing this command
        if not await checks(ctx):
            return
        
        # try to send the songs in the queue
        try:
            # format the queue to make it readable
            queue = [
                f"{i}." + (" (STREAM) " if q.startswith(SIP) else " ") + q.split(SIP)[-1]
                for i, q in enumerate(self.guilds(ctx).queue.queue, 1)
            ]
            
            await ctx.send("\n".join(queue))
        # except if it is empty
        except HTTPException:
            await ctx.send("No songs in queue.")

class YTDLSource(discord.PCMVolumeTransformer):
    """Creates a youtube_dl audio source with volume control."""
    
    def __init__(self, source, *, data, volume=1):
        super().__init__(source, volume)
        self.data = data
        self.title = data.get("title")
        self.url = data.get("url")
    
    @classmethod
    async def from_url(cls, url, loop):
        """Get source by URL."""
        
        # check if the URL is must be streamed
        if url.startswith(STREAM_INDICATOR_PREFIX):
            stream = True
        else:
            stream = False
        
        # get data from the given URL
        data = await loop.run_in_executor(
            None,
            (lambda:
                ytdl.extract_info(
                    url.split(STREAM_INDICATOR_PREFIX)[-1], # remove the prefix from the URL
                    download=not stream
                ))
        )
        ##$$$$ fix error somtimes
        # take the first item from the entries if there's any
        if "entries" in data:
            try:
                data = data["entries"][0]
            except Exception as e:
                music_logger.exception(e)
                return None
        
        filepath = data["url"] if stream else ytdl.prepare_filename(data) # source url or download path of the file, depends on the 'stream' parameter
        return cls(discord.FFmpegPCMAudio("C:/Users/Motzumoto/Desktop/AGB/ffmpeg/bin", **ffmpeg_options), data=data) # create and return the source

def setup(bot):
    bot.add_cog(Music(bot))



    


  • FFMPEG Output File is Empty Nothing was Encoded (for a Picture) ?

    4 mars 2023, par Sarah Szabo

    I have a strange issue effecting one of my programs that does bulk media conversions using ffmpeg from the command line, however this effects me using it directly from the shell as well :

    


    ffmpeg -i INPUT.mkv -ss 0:30 -y -qscale:v 2 -frames:v 1 -f image2 -huffman optimal "OUTPUT.png"
fails every run with the error message :
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)

    


    This only happens with very specific videos, and seemingly no other videos. File type is usually .webm. These files have been downloaded properly (usually from yt-dlp), and I have tried re-downloading them just to verify their integrity.

    


    One such file from a colleague was : https://www.dropbox.com/s/xkucr2z5ra1p2oh/Triggerheart%20Execlica%20OST%20%28Arrange%29%20-%20Crueltear%20Ending.mkv?dl=0

    


    Is there a subtle issue with the command string ?

    


    Notes :

    


    removing -huffman optimal had no effect

    


    moving -ss to before -i had no effect

    


    removing -f image2 had no effect

    


    Full Log :

    


    sarah@MidnightStarSign:~/Music/Playlists/Indexing/Indexing Temp$ ffmpeg -i Triggerheart\ Execlica\ OST\ \(Arrange\)\ -\ Crueltear\ Ending.mkv -ss 0:30 -y -qscale:v 2 -frames:v 1 -f image2 -huffman optimal "TEST.png"
ffmpeg version n5.1.2 Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 12.2.0 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-version3 --enable-vulkan
  libavutil      57. 28.100 / 57. 28.100
  libavcodec     59. 37.100 / 59. 37.100
  libavformat    59. 27.100 / 59. 27.100
  libavdevice    59.  7.100 / 59.  7.100
  libavfilter     8. 44.100 /  8. 44.100
  libswscale      6.  7.100 /  6.  7.100
  libswresample   4.  7.100 /  4.  7.100
  libpostproc    56.  6.100 / 56.  6.100
[matroska,webm @ 0x55927f484740] Could not find codec parameters for stream 2 (Attachment: none): unknown codec
Consider increasing the value for the 'analyzeduration' (0) and 'probesize' (5000000) options
Input #0, matroska,webm, from 'Triggerheart Execlica OST (Arrange) - Crueltear Ending.mkv':
  Metadata:
    title           : TriggerHeart Exelica PS2 & 360 Arrange ー 16 - Crueltear Ending
    PURL            : https://www.youtube.com/watch?v=zJ0bEa_8xEg
    COMMENT         : https://www.youtube.com/watch?v=zJ0bEa_8xEg
    ARTIST          : VinnyVynce
    DATE            : 20170905
    ENCODER         : Lavf59.27.100
  Duration: 00:00:30.00, start: -0.007000, bitrate: 430 kb/s
  Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709), 720x720, SAR 1:1 DAR 1:1, 25 fps, 25 tbr, 1k tbn (default)
    Metadata:
      DURATION        : 00:00:29.934000000
  Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
    Metadata:
      DURATION        : 00:00:30.001000000
  Stream #0:2: Attachment: none
    Metadata:
      filename        : cover.webp
      mimetype        : image/webp
Codec AVOption huffman (Huffman table strategy) specified for output file #0 (TEST.png) has not been used for any stream. The most likely reason is either wrong type (e.g. a video option with no video streams) or that it is a private option of some encoder which was not actually used for any stream.
Stream mapping:
  Stream #0:0 -> #0:0 (vp9 (native) -> png (native))
Press [q] to stop, [?] for help
Output #0, image2, to 'TEST.png':
  Metadata:
    title           : TriggerHeart Exelica PS2 & 360 Arrange ー 16 - Crueltear Ending
    PURL            : https://www.youtube.com/watch?v=zJ0bEa_8xEg
    COMMENT         : https://www.youtube.com/watch?v=zJ0bEa_8xEg
    ARTIST          : VinnyVynce
    DATE            : 20170905
    encoder         : Lavf59.27.100
  Stream #0:0(eng): Video: png, rgb24, 720x720 [SAR 1:1 DAR 1:1], q=2-31, 200 kb/s, 25 fps, 25 tbn (default)
    Metadata:
      DURATION        : 00:00:29.934000000
      encoder         : Lavc59.37.100 png
frame=    0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A speed=   0x    
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)


    


    Manjaro OS System Specs :

    


    System:&#xA;  Kernel: 6.1.12-1-MANJARO arch: x86_64 bits: 64 compiler: gcc v: 12.2.1&#xA;    parameters: BOOT_IMAGE=/@/boot/vmlinuz-6.1-x86_64&#xA;    root=UUID=f11386cf-342d-47ac-84e6-484b7b2f377d rw rootflags=subvol=@&#xA;    radeon.modeset=1 nvdia-drm.modeset=1 quiet&#xA;    cryptdevice=UUID=059df4b4-5be4-44d6-a23a-de81135eb5b4:luks-disk&#xA;    root=/dev/mapper/luks-disk apparmor=1 security=apparmor&#xA;    resume=/dev/mapper/luks-swap udev.log_priority=3&#xA;  Desktop: KDE Plasma v: 5.26.5 tk: Qt v: 5.15.8 wm: kwin_x11 vt: 1 dm: SDDM&#xA;    Distro: Manjaro Linux base: Arch Linux&#xA;Machine:&#xA;  Type: Desktop Mobo: ASUSTeK model: PRIME X570-PRO v: Rev X.0x&#xA;    serial: <superuser required="required"> UEFI: American Megatrends v: 4408&#xA;    date: 10/27/2022&#xA;Battery:&#xA;  Message: No system battery data found. Is one present?&#xA;Memory:&#xA;  RAM: total: 62.71 GiB used: 27.76 GiB (44.3%)&#xA;  RAM Report: permissions: Unable to run dmidecode. Root privileges required.&#xA;CPU:&#xA;  Info: model: AMD Ryzen 9 5950X bits: 64 type: MT MCP arch: Zen 3&#x2B; gen: 4&#xA;    level: v3 note: check built: 2022 process: TSMC n6 (7nm) family: 0x19 (25)&#xA;    model-id: 0x21 (33) stepping: 0 microcode: 0xA201016&#xA;  Topology: cpus: 1x cores: 16 tpc: 2 threads: 32 smt: enabled cache:&#xA;    L1: 1024 KiB desc: d-16x32 KiB; i-16x32 KiB L2: 8 MiB desc: 16x512 KiB&#xA;    L3: 64 MiB desc: 2x32 MiB&#xA;  Speed (MHz): avg: 4099 high: 4111 min/max: 2200/6358 boost: disabled&#xA;    scaling: driver: acpi-cpufreq governor: schedutil cores: 1: 4099 2: 4095&#xA;    3: 4102 4: 4100 5: 4097 6: 4100 7: 4110 8: 4111 9: 4083 10: 4099 11: 4100&#xA;    12: 4094 13: 4097 14: 4101 15: 4100 16: 4099 17: 4100 18: 4097 19: 4098&#xA;    20: 4095 21: 4100 22: 4099 23: 4099 24: 4105 25: 4098 26: 4100 27: 4100&#xA;    28: 4092 29: 4103 30: 4101 31: 4100 32: 4099 bogomips: 262520&#xA;  Flags: 3dnowprefetch abm adx aes aperfmperf apic arat avic avx avx2 bmi1&#xA;    bmi2 bpext cat_l3 cdp_l3 clflush clflushopt clwb clzero cmov cmp_legacy&#xA;    constant_tsc cpb cpuid cqm cqm_llc cqm_mbm_local cqm_mbm_total&#xA;    cqm_occup_llc cr8_legacy cx16 cx8 de decodeassists erms extapic&#xA;    extd_apicid f16c flushbyasid fma fpu fsgsbase fsrm fxsr fxsr_opt ht&#xA;    hw_pstate ibpb ibrs ibs invpcid irperf lahf_lm lbrv lm mba mca mce&#xA;    misalignsse mmx mmxext monitor movbe msr mtrr mwaitx nonstop_tsc nopl npt&#xA;    nrip_save nx ospke osvw overflow_recov pae pat pausefilter pclmulqdq&#xA;    pdpe1gb perfctr_core perfctr_llc perfctr_nb pfthreshold pge pku pni popcnt&#xA;    pse pse36 rapl rdpid rdpru rdrand rdseed rdt_a rdtscp rep_good sep sha_ni&#xA;    skinit smap smca smep ssbd sse sse2 sse4_1 sse4_2 sse4a ssse3 stibp succor&#xA;    svm svm_lock syscall tce topoext tsc tsc_scale umip v_spec_ctrl&#xA;    v_vmsave_vmload vaes vgif vmcb_clean vme vmmcall vpclmulqdq wbnoinvd wdt&#xA;    x2apic xgetbv1 xsave xsavec xsaveerptr xsaveopt xsaves&#xA;  Vulnerabilities:&#xA;  Type: itlb_multihit status: Not affected&#xA;  Type: l1tf status: Not affected&#xA;  Type: mds status: Not affected&#xA;  Type: meltdown status: Not affected&#xA;  Type: mmio_stale_data status: Not affected&#xA;  Type: retbleed status: Not affected&#xA;  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via&#xA;    prctl&#xA;  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer&#xA;    sanitization&#xA;  Type: spectre_v2 mitigation: Retpolines, IBPB: conditional, IBRS_FW,&#xA;    STIBP: always-on, RSB filling, PBRSB-eIBRS: Not affected&#xA;  Type: srbds status: Not affected&#xA;  Type: tsx_async_abort status: Not affected&#xA;Graphics:&#xA;  Device-1: NVIDIA GA104 [GeForce RTX 3070] vendor: ASUSTeK driver: nvidia&#xA;    v: 525.89.02 alternate: nouveau,nvidia_drm non-free: 525.xx&#x2B;&#xA;    status: current (as of 2023-02) arch: Ampere code: GAxxx&#xA;    process: TSMC n7 (7nm) built: 2020-22 pcie: gen: 4 speed: 16 GT/s lanes: 8&#xA;    link-max: lanes: 16 bus-ID: 0b:00.0 chip-ID: 10de:2484 class-ID: 0300&#xA;  Device-2: AMD Cape Verde PRO [Radeon HD 7750/8740 / R7 250E]&#xA;    vendor: VISIONTEK driver: radeon v: kernel alternate: amdgpu arch: GCN-1&#xA;    code: Southern Islands process: TSMC 28nm built: 2011-20 pcie: gen: 3&#xA;    speed: 8 GT/s lanes: 8 link-max: lanes: 16 ports: active: DP-3,DP-4&#xA;    empty: DP-1, DP-2, DP-5, DP-6 bus-ID: 0c:00.0 chip-ID: 1002:683f&#xA;    class-ID: 0300 temp: 54.0 C&#xA;  Device-3: Microdia USB 2.0 Camera type: USB driver: snd-usb-audio,uvcvideo&#xA;    bus-ID: 9-2:3 chip-ID: 0c45:6367 class-ID: 0102 serial: <filter>&#xA;  Display: x11 server: X.Org v: 21.1.7 with: Xwayland v: 22.1.8&#xA;    compositor: kwin_x11 driver: X: loaded: modesetting,nvidia dri: radeonsi&#xA;    gpu: radeon display-ID: :0 screens: 1&#xA;  Screen-1: 0 s-res: 5760x2160 s-dpi: 80 s-size: 1829x686mm (72.01x27.01")&#xA;    s-diag: 1953mm (76.91")&#xA;  Monitor-1: DP-1 pos: 1-2 res: 1920x1080 dpi: 93&#xA;    size: 527x296mm (20.75x11.65") diag: 604mm (23.8") modes: N/A&#xA;  Monitor-2: DP-1-3 pos: 2-1 res: 1920x1080 dpi: 82&#xA;    size: 598x336mm (23.54x13.23") diag: 686mm (27.01") modes: N/A&#xA;  Monitor-3: DP-1-4 pos: 1-1 res: 1920x1080 dpi: 93&#xA;    size: 527x296mm (20.75x11.65") diag: 604mm (23.8") modes: N/A&#xA;  Monitor-4: DP-3 pos: primary,2-2 res: 1920x1080 dpi: 82&#xA;    size: 598x336mm (23.54x13.23") diag: 686mm (27.01") modes: N/A&#xA;  Monitor-5: DP-4 pos: 2-4 res: 1920x1080 dpi: 82&#xA;    size: 598x336mm (23.54x13.23") diag: 686mm (27.01") modes: N/A&#xA;  Monitor-6: HDMI-0 pos: 1-3 res: 1920x1080 dpi: 93&#xA;    size: 527x296mm (20.75x11.65") diag: 604mm (23.8") modes: N/A&#xA;  API: OpenGL v: 4.6.0 NVIDIA 525.89.02 renderer: NVIDIA GeForce RTX&#xA;    3070/PCIe/SSE2 direct-render: Yes&#xA;Audio:&#xA;  Device-1: NVIDIA GA104 High Definition Audio vendor: ASUSTeK&#xA;    driver: snd_hda_intel bus-ID: 5-1:2 v: kernel chip-ID: 30be:1019 pcie:&#xA;    class-ID: 0102 gen: 4 speed: 16 GT/s lanes: 8 link-max: lanes: 16&#xA;    bus-ID: 0b:00.1 chip-ID: 10de:228b class-ID: 0403&#xA;  Device-2: AMD Oland/Hainan/Cape Verde/Pitcairn HDMI Audio [Radeon HD 7000&#xA;    Series] vendor: VISIONTEK driver: snd_hda_intel v: kernel pcie: gen: 3&#xA;    speed: 8 GT/s lanes: 8 link-max: lanes: 16 bus-ID: 0c:00.1&#xA;    chip-ID: 1002:aab0 class-ID: 0403&#xA;  Device-3: AMD Starship/Matisse HD Audio vendor: ASUSTeK&#xA;    driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16&#xA;    bus-ID: 0e:00.4 chip-ID: 1022:1487 class-ID: 0403&#xA;  Device-4: Schiit Audio Unison Universal Dac type: USB driver: snd-usb-audio&#xA;  Device-5: JMTek LLC. Plugable USB Audio Device type: USB&#xA;    driver: hid-generic,snd-usb-audio,usbhid bus-ID: 5-2:3 chip-ID: 0c76:120b&#xA;    class-ID: 0300 serial: <filter>&#xA;  Device-6: ASUSTek ASUS AI Noise-Cancelling Mic Adapter type: USB&#xA;    driver: hid-generic,snd-usb-audio,usbhid bus-ID: 5-4:4 chip-ID: 0b05:194e&#xA;    class-ID: 0300 serial: <filter>&#xA;  Device-7: Microdia USB 2.0 Camera type: USB driver: snd-usb-audio,uvcvideo&#xA;    bus-ID: 9-2:3 chip-ID: 0c45:6367 class-ID: 0102 serial: <filter>&#xA;  Sound API: ALSA v: k6.1.12-1-MANJARO running: yes&#xA;  Sound Interface: sndio v: N/A running: no&#xA;  Sound Server-1: PulseAudio v: 16.1 running: no&#xA;  Sound Server-2: PipeWire v: 0.3.65 running: yes&#xA;Network:&#xA;  Device-1: Intel I211 Gigabit Network vendor: ASUSTeK driver: igb v: kernel&#xA;    pcie: gen: 1 speed: 2.5 GT/s lanes: 1 port: f000 bus-ID: 07:00.0&#xA;    chip-ID: 8086:1539 class-ID: 0200&#xA;  IF: enp7s0 state: up speed: 1000 Mbps duplex: full mac: <filter>&#xA;  IP v4: <filter> type: dynamic noprefixroute scope: global&#xA;    broadcast: <filter>&#xA;  IP v6: <filter> type: noprefixroute scope: link&#xA;  IF-ID-1: docker0 state: down mac: <filter>&#xA;  IP v4: <filter> scope: global broadcast: <filter>&#xA;  WAN IP: <filter>&#xA;Bluetooth:&#xA;  Device-1: Cambridge Silicon Radio Bluetooth Dongle (HCI mode) type: USB&#xA;    driver: btusb v: 0.8 bus-ID: 5-5.3:7 chip-ID: 0a12:0001 class-ID: e001&#xA;  Report: rfkill ID: hci0 rfk-id: 0 state: up address: see --recommends&#xA;Logical:&#xA;  Message: No logical block device data found.&#xA;  Device-1: luks-c847cf9f-c6b5-4624-a25e-4531e318851a maj-min: 254:2&#xA;    type: LUKS dm: dm-2 size: 3.64 TiB&#xA;  Components:&#xA;  p-1: sda1 maj-min: 8:1 size: 3.64 TiB&#xA;  Device-2: luks-swap maj-min: 254:1 type: LUKS dm: dm-1 size: 12 GiB&#xA;  Components:&#xA;  p-1: nvme0n1p2 maj-min: 259:2 size: 12 GiB&#xA;  Device-3: luks-disk maj-min: 254:0 type: LUKS dm: dm-0 size: 919.01 GiB&#xA;  Components:&#xA;  p-1: nvme0n1p3 maj-min: 259:3 size: 919.01 GiB&#xA;RAID:&#xA;  Message: No RAID data found.&#xA;Drives:&#xA;  Local Storage: total: 9.1 TiB used: 2.79 TiB (30.6%)&#xA;  SMART Message: Unable to run smartctl. Root privileges required.&#xA;  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Western Digital&#xA;    model: WDS100T3X0C-00SJG0 size: 931.51 GiB block-size: physical: 512 B&#xA;    logical: 512 B speed: 31.6 Gb/s lanes: 4 type: SSD serial: <filter>&#xA;    rev: 111110WD temp: 53.9 C scheme: GPT&#xA;  ID-2: /dev/nvme1n1 maj-min: 259:4 vendor: Western Digital&#xA;    model: WDS100T2B0C-00PXH0 size: 931.51 GiB block-size: physical: 512 B&#xA;    logical: 512 B speed: 31.6 Gb/s lanes: 4 type: SSD serial: <filter>&#xA;    rev: 211070WD temp: 46.9 C scheme: GPT&#xA;  ID-3: /dev/sda maj-min: 8:0 vendor: Western Digital&#xA;    model: WD4005FZBX-00K5WB0 size: 3.64 TiB block-size: physical: 4096 B&#xA;    logical: 512 B speed: 6.0 Gb/s type: HDD rpm: 7200 serial: <filter>&#xA;    rev: 1A01 scheme: GPT&#xA;  ID-4: /dev/sdb maj-min: 8:16 vendor: Western Digital&#xA;    model: WD4005FZBX-00K5WB0 size: 3.64 TiB block-size: physical: 4096 B&#xA;    logical: 512 B speed: 6.0 Gb/s type: HDD rpm: 7200 serial: <filter>&#xA;    rev: 1A01 scheme: GPT&#xA;  ID-5: /dev/sdc maj-min: 8:32 type: USB vendor: SanDisk&#xA;    model: Gaming Xbox 360 size: 7.48 GiB block-size: physical: 512 B&#xA;    logical: 512 B type: N/A serial: <filter> rev: 8.02 scheme: MBR&#xA;  SMART Message: Unknown USB bridge. Flash drive/Unsupported enclosure?&#xA;  Message: No optical or floppy data found.&#xA;Partition:&#xA;  ID-1: / raw-size: 919.01 GiB size: 919.01 GiB (100.00%)&#xA;    used: 611.14 GiB (66.5%) fs: btrfs dev: /dev/dm-0 maj-min: 254:0&#xA;    mapped: luks-disk label: N/A uuid: N/A&#xA;  ID-2: /boot/efi raw-size: 512 MiB size: 511 MiB (99.80%)&#xA;    used: 40.2 MiB (7.9%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1 label: EFI&#xA;    uuid: 8922-E04D&#xA;  ID-3: /home raw-size: 919.01 GiB size: 919.01 GiB (100.00%)&#xA;    used: 611.14 GiB (66.5%) fs: btrfs dev: /dev/dm-0 maj-min: 254:0&#xA;    mapped: luks-disk label: N/A uuid: N/A&#xA;  ID-4: /run/media/sarah/ConvergentRefuge raw-size: 3.64 TiB&#xA;    size: 3.64 TiB (100.00%) used: 2.19 TiB (60.1%) fs: btrfs dev: /dev/dm-2&#xA;    maj-min: 254:2 mapped: luks-c847cf9f-c6b5-4624-a25e-4531e318851a&#xA;    label: ConvergentRefuge uuid: 7d295e73-4143-4eb1-9d22-75a06b1d2984&#xA;  ID-5: /run/media/sarah/MSS_EXtended raw-size: 475.51 GiB&#xA;    size: 475.51 GiB (100.00%) used: 1.48 GiB (0.3%) fs: btrfs&#xA;    dev: /dev/nvme1n1p1 maj-min: 259:5 label: MSS EXtended&#xA;    uuid: f98b3a12-e0e4-48c7-91c2-6e3aa6dcd32c&#xA;Swap:&#xA;  Kernel: swappiness: 60 (default) cache-pressure: 100 (default)&#xA;  ID-1: swap-1 type: partition size: 12 GiB used: 6.86 GiB (57.2%)&#xA;    priority: -2 dev: /dev/dm-1 maj-min: 254:1 mapped: luks-swap label: SWAP&#xA;    uuid: c8991364-85a7-4e6c-8380-49cd5bd7a873&#xA;Unmounted:&#xA;  ID-1: /dev/nvme1n1p2 maj-min: 259:6 size: 456 GiB fs: ntfs label: N/A&#xA;    uuid: 5ECA358FCA356485&#xA;  ID-2: /dev/sdb1 maj-min: 8:17 size: 3.64 TiB fs: ntfs&#xA;    label: JerichoVariance uuid: 1AB22D5664889CBD&#xA;  ID-3: /dev/sdc1 maj-min: 8:33 size: 3.57 GiB fs: iso9660&#xA;  ID-4: /dev/sdc2 maj-min: 8:34 size: 4 MiB fs: vfat label: MISO_EFI&#xA;    uuid: 5C67-4BF8&#xA;USB:&#xA;  Hub-1: 1-0:1 info: Hi-speed hub with single TT ports: 4 rev: 2.0&#xA;    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900&#xA;  Hub-2: 1-2:2 info: Hitachi ports: 4 rev: 2.1 speed: 480 Mb/s&#xA;    chip-ID: 045b:0209 class-ID: 0900&#xA;  Device-1: 1-2.4:3 info: Microsoft Xbox One Controller (Firmware 2015)&#xA;    type: <vendor specific="specific"> driver: xpad interfaces: 3 rev: 2.0 speed: 12 Mb/s&#xA;    power: 500mA chip-ID: 045e:02dd class-ID: ff00 serial: <filter>&#xA;  Hub-3: 2-0:1 info: Super-speed hub ports: 4 rev: 3.0 speed: 5 Gb/s&#xA;    chip-ID: 1d6b:0003 class-ID: 0900&#xA;  Hub-4: 2-2:2 info: Hitachi ports: 4 rev: 3.0 speed: 5 Gb/s&#xA;    chip-ID: 045b:0210 class-ID: 0900&#xA;  Hub-5: 3-0:1 info: Hi-speed hub with single TT ports: 1 rev: 2.0&#xA;    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900&#xA;  Hub-6: 3-1:2 info: VIA Labs Hub ports: 4 rev: 2.1 speed: 480 Mb/s&#xA;    power: 100mA chip-ID: 2109:3431 class-ID: 0900&#xA;  Hub-7: 3-1.2:3 info: VIA Labs VL813 Hub ports: 4 rev: 2.1 speed: 480 Mb/s&#xA;    chip-ID: 2109:2813 class-ID: 0900&#xA;  Hub-8: 4-0:1 info: Super-speed hub ports: 4 rev: 3.0 speed: 5 Gb/s&#xA;    chip-ID: 1d6b:0003 class-ID: 0900&#xA;  Hub-9: 4-2:2 info: VIA Labs VL813 Hub ports: 4 rev: 3.0 speed: 5 Gb/s&#xA;    chip-ID: 2109:0813 class-ID: 0900&#xA;  Hub-10: 5-0:1 info: Hi-speed hub with single TT ports: 6 rev: 2.0&#xA;    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900&#xA;  Device-1: 5-1:2 info: Schiit Audio Unison Universal Dac type: Audio&#xA;    driver: snd-usb-audio interfaces: 2 rev: 2.0 speed: 480 Mb/s power: 500mA&#xA;    chip-ID: 30be:1019 class-ID: 0102&#xA;  Device-2: 5-2:3 info: JMTek LLC. Plugable USB Audio Device type: Audio,HID&#xA;    driver: hid-generic,snd-usb-audio,usbhid interfaces: 4 rev: 1.1&#xA;    speed: 12 Mb/s power: 100mA chip-ID: 0c76:120b class-ID: 0300&#xA;    serial: <filter>&#xA;  Device-3: 5-4:4 info: ASUSTek ASUS AI Noise-Cancelling Mic Adapter&#xA;    type: Audio,HID driver: hid-generic,snd-usb-audio,usbhid interfaces: 4&#xA;    rev: 1.1 speed: 12 Mb/s power: 100mA chip-ID: 0b05:194e class-ID: 0300&#xA;    serial: <filter>&#xA;  Hub-11: 5-5:5 info: Genesys Logic Hub ports: 4 rev: 2.0 speed: 480 Mb/s&#xA;    power: 100mA chip-ID: 05e3:0608 class-ID: 0900&#xA;  Device-1: 5-5.3:7 info: Cambridge Silicon Radio Bluetooth Dongle (HCI mode)&#xA;    type: Bluetooth driver: btusb interfaces: 2 rev: 2.0 speed: 12 Mb/s&#xA;    power: 100mA chip-ID: 0a12:0001 class-ID: e001&#xA;  Hub-12: 5-6:6 info: Genesys Logic Hub ports: 4 rev: 2.0 speed: 480 Mb/s&#xA;    power: 100mA chip-ID: 05e3:0608 class-ID: 0900&#xA;  Hub-13: 6-0:1 info: Super-speed hub ports: 4 rev: 3.1 speed: 10 Gb/s&#xA;    chip-ID: 1d6b:0003 class-ID: 0900&#xA;  Hub-14: 7-0:1 info: Hi-speed hub with single TT ports: 6 rev: 2.0&#xA;    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900&#xA;  Device-1: 7-2:2 info: SanDisk Cruzer Micro Flash Drive type: Mass Storage&#xA;    driver: usb-storage interfaces: 1 rev: 2.0 speed: 480 Mb/s power: 200mA&#xA;    chip-ID: 0781:5151 class-ID: 0806 serial: <filter>&#xA;  Device-2: 7-4:3 info: ASUSTek AURA LED Controller type: HID&#xA;    driver: hid-generic,usbhid interfaces: 2 rev: 2.0 speed: 12 Mb/s power: 16mA&#xA;    chip-ID: 0b05:18f3 class-ID: 0300 serial: <filter>&#xA;  Hub-15: 8-0:1 info: Super-speed hub ports: 4 rev: 3.1 speed: 10 Gb/s&#xA;    chip-ID: 1d6b:0003 class-ID: 0900&#xA;  Hub-16: 9-0:1 info: Hi-speed hub with single TT ports: 4 rev: 2.0&#xA;    speed: 480 Mb/s chip-ID: 1d6b:0002 class-ID: 0900&#xA;  Hub-17: 9-1:2 info: Terminus FE 2.1 7-port Hub ports: 7 rev: 2.0&#xA;    speed: 480 Mb/s power: 100mA chip-ID: 1a40:0201 class-ID: 0900&#xA;  Device-1: 9-1.1:4 info: Sunplus Innovation Gaming mouse [Philips SPK9304]&#xA;    type: Mouse driver: hid-generic,usbhid interfaces: 1 rev: 2.0 speed: 1.5 Mb/s&#xA;    power: 98mA chip-ID: 1bcf:08a0 class-ID: 0301&#xA;  Device-2: 9-1.5:6 info: Microdia Backlit Gaming Keyboard&#xA;    type: Keyboard,Mouse driver: hid-generic,usbhid interfaces: 2 rev: 2.0&#xA;    speed: 12 Mb/s power: 400mA chip-ID: 0c45:652f class-ID: 0301&#xA;  Device-3: 9-1.6:7 info: HUION H420 type: Mouse,HID driver: uclogic,usbhid&#xA;    interfaces: 3 rev: 1.1 speed: 12 Mb/s power: 100mA chip-ID: 256c:006e&#xA;    class-ID: 0300&#xA;  Hub-18: 9-1.7:8 info: Terminus Hub ports: 4 rev: 2.0 speed: 480 Mb/s&#xA;    power: 100mA chip-ID: 1a40:0101 class-ID: 0900&#xA;  Device-1: 9-2:3 info: Microdia USB 2.0 Camera type: Video,Audio&#xA;    driver: snd-usb-audio,uvcvideo interfaces: 4 rev: 2.0 speed: 480 Mb/s&#xA;    power: 500mA chip-ID: 0c45:6367 class-ID: 0102 serial: <filter>&#xA;  Device-2: 9-4:11 info: VKB-Sim &#xA9; Alex Oz 2021 VKBsim Gladiator EVO L&#xA;    type: HID driver: hid-generic,usbhid interfaces: 1 rev: 2.0 speed: 12 Mb/s&#xA;    power: 500mA chip-ID: 231d:0201 class-ID: 0300&#xA;  Hub-19: 10-0:1 info: Super-speed hub ports: 4 rev: 3.1 speed: 10 Gb/s&#xA;    chip-ID: 1d6b:0003 class-ID: 0900&#xA;Sensors:&#xA;  System Temperatures: cpu: 38.0 C mobo: 41.0 C&#xA;  Fan Speeds (RPM): fan-1: 702 fan-2: 747 fan-3: 938 fan-4: 889 fan-5: 3132&#xA;    fan-6: 0 fan-7: 0&#xA;  GPU: device: nvidia screen: :0.0 temp: 49 C fan: 0% device: radeon&#xA;    temp: 53.0 C&#xA;Info:&#xA;  Processes: 842 Uptime: 3h 11m wakeups: 0 Init: systemd v: 252&#xA;  default: graphical tool: systemctl Compilers: gcc: 12.2.1 alt: 10/11&#xA;  clang: 15.0.7 Packages: 2158 pm: pacman pkgs: 2110 libs: 495 tools: pamac,yay&#xA;  pm: flatpak pkgs: 31 pm: snap pkgs: 17 Shell: Bash v: 5.1.16&#xA;  running-in: yakuake inxi: 3.3.25&#xA;</filter></filter></filter></filter></filter></filter></vendor></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></filter></superuser>

    &#xA;

  • Revision 30149 : On ajoute un champs "extension" dans la table spip_spipmotion_attentes ...

    24 juillet 2009, par kent1@… — Log

    On ajoute un champs "extension" dans la table spip_spipmotion_attentes pour gérer l’encodage multiple
    On nécessite spip-bonux dorénavant