Recherche avancée

Médias (2)

Mot : - Tags -/media

Autres articles (62)

  • Ajouter notes et légendes aux images

    7 février 2011, par

    Pour pouvoir ajouter notes et légendes aux images, la première étape est d’installer le plugin "Légendes".
    Une fois le plugin activé, vous pouvez le configurer dans l’espace de configuration afin de modifier les droits de création / modification et de suppression des notes. Par défaut seuls les administrateurs du site peuvent ajouter des notes aux images.
    Modification lors de l’ajout d’un média
    Lors de l’ajout d’un média de type "image" un nouveau bouton apparait au dessus de la prévisualisation (...)

  • Les autorisations surchargées par les plugins

    27 avril 2010, par

    Mediaspip core
    autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs

  • Librairies et binaires spécifiques au traitement vidéo et sonore

    31 janvier 2010, par

    Les logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
    Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
    Binaires complémentaires et facultatifs flvtool2 : (...)

Sur d’autres sites (7785)

  • Faire un plugin de signalement

    24 septembre 2012

    Faire un plugin de signalement (qui sera utile à la fois pour MediaSPIP et géodiversité)

    Fonctionnement du plugin :

    Un bouton sur une page d’objet X ou Y "signaler ce contenu".

    Au click sur ce bouton, affichage d’un formulaire (configurable dans la partie privé du site) avec :

    • un sélecteur de motifs de signalement ;
    • un textarea permettant de laisser un message personnalisé ;
    • un bouton valider

    Lors d’un signalement :

    • notification aux admins qu’un signalement a été fait ;
    • notification à l’auteur de l’objet signalé pour le prévenir du signalement également ;
    • au bout d’un certain nombre de signalements sur le même contenu (5 est la valeur par défaut), le contenu est dépublié automatiquement, seul un administrateur peut le soumettre à nouveau ;

    Éléments configurables

    • les motifs de signalement qui peuvent ne pas être utilisé du tout ;
    • le motif de signalement par défaut ;
    • le textarea libre mais à ce moment là le motif est obligatoire ;
    • le statut minimum des personnes pouvant signaler un contenu ;

    Les statuts des signalements

    Les signalements ont trois statuts possibles :

    • publie (validé) ;
    • poubelle (supprimé) ;
    • refuse (invalidé) ;

    Lorsqu’un utilisateur signale un contenu, le statut est directement publie. Le signalement est considéré comme valide, l’utilisateur ne peut signale à nouveau ce contenu.

    Lorsque ce même utilisateur et uniquement lui, retire son signalement, son statut est alors poubelle, le signalement est invalidé et l’utilisateur peut signaler à nouveau le même contenu.

    Lorsqu’un administrateur modère un signalement, son statut est alors refuse, l’utilisateur l’ayant soumis le voit toujours en tant que soumis (et ne peut donc soumettre un nouveau signalement), par contre, il ne rentre plus dans le compte des signalements positifs.

    La modération des signalements par les admins

    La modération des signalements se passe dans l’espace privé.

    L’interface est sur le même modèle que celle des forums.

    A faire

    • création du plugin lui-même ;
    • insertion de sa conf et de sa modération dans mediaspip_config ;
    • insertion de son formulaire dans mediaspip_core ;
  • Evolution #4471 : singulier_ou_pluriel pour l’arabe

    1er juin 2020, par George Kandalaft

    Correction :

    1. <span class="CodeRay"><span class="comment">/**
    2.  * Afficher un message "un truc"/("deux trucs" pour l'arabe)/"N trucs"
    3.  * Les items sont à indiquer comme pour la fonction _T() sous la forme :
    4.  * "module:chaine"
    5.  *
    6.  * @param int $nb : le nombre
    7.  * @param string $chaine_un : l'item de langue si $nb vaut un (ou $nb > 10 pour l'arabe)
    8.  * @param string $chaine_plusieurs : l'item de lanque si $nb > 1 ($nb est compris entre 3 et 10 pour l'arabe)
    9.  * @param string $var : La variable à remplacer par $nb dans l'item de langue (facultatif, défaut "nb")
    10.  * @param array $vars : Les autres variables nécessaires aux chaines de langues (facultatif)
    11.  * @return string : la chaine de langue finale en utilisant la fonction _T()
    12.  */</span>
    13. <span class="keyword">function</span> <span class="function">ar_singulier_ou_pluriel</span>(<span class="local-variable">$nb</span>, <span class="local-variable">$chaine_un</span>, <span class="local-variable">$chaine_plusieurs</span>, <span class="local-variable">$var</span> = <span class="string"><span class="delimiter">'</span><span class="content">nb</span><span class="delimiter">'</span></span>, <span class="local-variable">$vars</span> = <span class="predefined">array</span>()) {
    14.     <span class="keyword">if</span> (!<span class="local-variable">$nb</span> = <span class="predefined">intval</span>(<span class="local-variable">$nb</span>)) {
    15.         <span class="keyword">return</span> <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;
    16.     }
    17.     <span class="keyword">if</span> (!<span class="predefined">is_array</span>(<span class="local-variable">$vars</span>)) {
    18.         <span class="keyword">return</span> <span class="string"><span class="delimiter">'</span><span class="delimiter">'</span></span>;
    19.     }
    20.     <span class="local-variable">$vars</span>[<span class="local-variable">$var</span>] = <span class="local-variable">$nb</span>;
    21.  
    22.     <span class="keyword">if</span> (<span class="predefined">$GLOBALS</span>[<span class="string"><span class="delimiter">'</span><span class="content">spip_lang</span><span class="delimiter">'</span></span>] == <span class="string"><span class="delimiter">'</span><span class="content">ar</span><span class="delimiter">'</span></span>) {
    23.         <span class="local-variable">$fem</span> = <span class="predefined">substr</span>(_T(<span class="local-variable">$chaine_un</span>), -<span class="integer">2</span>);
    24.         <span class="keyword">switch</span> (<span class="predefined-constant">true</span>) {
    25.             <span class="keyword">case</span> (<span class="local-variable">$nb</span> == <span class="integer">1</span>):
    26.                 <span class="keyword">if</span> (<span class="local-variable">$fem</span> == <span class="string"><span class="delimiter">'</span><span class="content">ة</span><span class="delimiter">'</span></span>) {
    27.                     <span class="local-variable">$un</span> = _T(<span class="local-variable">$chaine_un</span>) . <span class="string"><span class="delimiter">'</span><span class="content"> واحدة</span><span class="delimiter">'</span></span>;
    28.                 } <span class="keyword">else</span> {
    29.                     <span class="local-variable">$un</span> = _T(<span class="local-variable">$chaine_un</span>) . <span class="string"><span class="delimiter">'</span><span class="content"> واحد</span><span class="delimiter">'</span></span>;
    30.                 }
    31.                 <span class="keyword">return</span> <span class="local-variable">$un</span>;
    32.                 <span class="keyword">break</span>;
    33.             <span class="keyword">case</span> (<span class="local-variable">$nb</span> == <span class="integer">2</span>):
    34.                 <span class="keyword">if</span> (<span class="local-variable">$fem</span> == <span class="string"><span class="delimiter">'</span><span class="content">ة</span><span class="delimiter">'</span></span>) {
    35.                     <span class="local-variable">$deux</span> = <span class="predefined">rtrim</span>(_T(<span class="local-variable">$chaine_un</span>), <span class="local-variable">$fem</span>) . <span class="string"><span class="delimiter">'</span><span class="content">تان</span><span class="delimiter">'</span></span>;
    36.                 } <span class="keyword">else</span> {
    37.                     <span class="local-variable">$deux</span> = _T(<span class="local-variable">$chaine_un</span>) . <span class="string"><span class="delimiter">'</span><span class="content">ان</span><span class="delimiter">'</span></span>;
    38.                 }
    39.                 <span class="keyword">return</span> <span class="local-variable">$deux</span>;
    40.                 <span class="keyword">break</span>;
    41.             <span class="keyword">case</span> (<span class="local-variable">$nb</span> ><span class="integer">2</span> &#38;&#38; <span class="local-variable">$nb</span> &lt; <span class="integer">11</span>):
    42.                <span class="keyword">return</span> _T(<span class="local-variable">$chaine_plusieurs</span>, <span class="local-variable">$vars</span>);
    43.                 <span class="keyword">break</span>;
    44.             <span class="keyword">default</span>:
    45.                 <span class="local-variable">$chaine_un</span> = <span class="local-variable">$nb</span> . <span class="string"><span class="delimiter">'</span><span class="content"> </span><span class="delimiter">'</span></span> . <span class="local-variable">$chaine_un</span>;
    46.                 <span class="keyword">return</span> _T(<span class="local-variable">$chaine_un</span>, <span class="local-variable">$vars</span>);
    47.         }
    48.     } <span class="keyword">else</span> {
    49.         <span class="keyword">if</span> (<span class="local-variable">$nb</span> > <span class="integer">1</span>) {
    50.             <span class="keyword">return</span> _T(<span class="local-variable">$chaine_plusieurs</span>, <span class="local-variable">$vars</span>);
    51.         } <span class="keyword">else</span> {
    52.             <span class="keyword">return</span> _T(<span class="local-variable">$chaine_un</span>, <span class="local-variable">$vars</span>);
    53.         }
    54.     }
    55. }
    56. </span>

    Télécharger

  • python [WinError 2] the System Cannot Find the File Specified

    15 août 2024, par user26831166

    Code cant create a certain file&#xA;The thing is code isn't mine a took it from a friend and my friend get it from another person&#xA;and this 2 person can run code without any problem&#xA;but i have.

    &#xA;

    import os&#xA;import random&#xA;import shutil&#xA;import subprocess&#xA;&#xA;# Путь к папке с видео&#xA;video_folder = r&#x27;D:\bots\ttvidads\VID\Videorez&#x27;&#xA;&#xA;# Путь к папке для сохранения результатов&#xA;output_folder = r&#x27;D:\bots\ttvidads\VID\ZAGOTOVKI\Videopod1&#x27;&#xA;&#xA;# Очищаем содержимое конечной папки перед сохранением&#xA;for file in os.listdir(output_folder):&#xA;    file_path = os.path.join(output_folder, file)&#xA;    try:&#xA;        if os.path.isfile(file_path):&#xA;            os.unlink(file_path)&#xA;    except Exception as e:&#xA;        print(f"Failed to delete {file_path}. Reason: {e}")&#xA;&#xA;# Получаем список видеофайлов&#xA;video_files = [os.path.join(video_folder, file) for file in os.listdir(video_folder) if file.endswith((&#x27;.mp4&#x27;, &#x27;.avi&#x27;))]&#xA;&#xA;# Выбираем случайное видео&#xA;random_video = random.choice(video_files)&#xA;&#xA;# Получаем длительность видео в секундах&#xA;video_duration_command = f&#x27;ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "{random_video}"&#x27;&#xA;video_duration_process = subprocess.Popen(video_duration_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)&#xA;video_duration_output, _ = video_duration_process.communicate()&#xA;video_duration = float(video_duration_output)&#xA;&#xA;# Выбираем случайное начальное время для вырезания&#xA;random_start = random.randrange(0, int(video_duration) - 19, 8)&#xA;&#xA;# Получаем ширину и высоту исходного видео&#xA;video_info_command = f&#x27;ffprobe -v error -select_streams v:0 -show_entries stream=width,height -of csv=s=x:p=0 "{random_video}"&#x27;&#xA;video_info_process = subprocess.Popen(video_info_command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)&#xA;video_info_output, _ = video_info_process.communicate()&#xA;video_width, video_height = map(int, video_info_output.strip().split(b&#x27;x&#x27;))&#xA;&#xA;# Вычисляем новые координаты x1 и x2 для обрезки&#xA;max_x1 = video_width - int(video_height * 9 / 16)&#xA;random_x1 = random.randint(0, max_x1)&#xA;random_x2 = random_x1 &#x2B; int(video_height * 9 / 16)&#xA;&#xA;# Формируем команду для FFmpeg для выборки случайного отрезка видео с соотношением 9:16&#xA;ffmpeg_command = f&#x27;ffmpeg -hwaccel cuda -ss {random_start} -i "{random_video}" -t 19 -vf "crop={random_x2-random_x1}:{video_height}:{random_x1}:0" -c:v h264_nvenc -preset default -an -c:a aac -b:a 128k "{output_folder}\\temp.mp4"&#x27;&#xA;&#xA;# Выполняем команду с помощью subprocess&#xA;subprocess.run(ffmpeg_command, shell=True)&#xA;&#xA;# Изменяем яркость, контрастность и размываем видео&#xA;brightness_factor = random.uniform(-0.18, -0.12)  # Случайный коэффициент яркости&#xA;contrast_factor = random.uniform(0.95, 1.05)  # Случайный коэффициент контрастности&#xA;blur_factor = random.uniform(4, 5)  # Случайный коэффициент размытия&#xA;&#xA;# Формируем команду для FFmpeg для изменения яркости, контрастности и размытия видео&#xA;ffmpeg_modify_command = f&#x27;ffmpeg -hwaccel cuda -i "{output_folder}\\temp.mp4" -vf "eq=brightness={brightness_factor}:contrast={contrast_factor},boxblur={blur_factor}:{blur_factor}" -c:v h264_nvenc -preset default -an -c:a aac -b:a 128k "{output_folder}\\temp_modify.mp4"&#x27;&#xA;&#xA;# Выполняем команду с помощью subprocess&#xA;subprocess.run(ffmpeg_modify_command, shell=True)&#xA;&#xA;# Растягиваем видео до нужного разрешения (1080x1920)&#xA;ffmpeg_stretch_command = f&#x27;ffmpeg -hwaccel cuda -i "{output_folder}\\temp_modify.mp4" -vf "scale=1080:1920" -c:v h264_nvenc -preset default -an -c:a aac -b:a 128k -r 30 "{output_folder}\\final_output.mp4"&#x27;&#xA;&#xA;# Выполняем команду с помощью subprocess&#xA;subprocess.run(ffmpeg_stretch_command, shell=True)&#xA;&#xA;# Удаляем временные файлы&#xA;os.remove(os.path.join(output_folder, &#x27;temp.mp4&#x27;))&#xA;os.remove(os.path.join(output_folder, &#x27;temp_modify.mp4&#x27;))&#xA;&#xA;print("Видеофайл успешно обработан и сохранен.")&#xA;

    &#xA;

    Error i got after run the code

    &#xA;

    = RESTART: D:\Bots\2vidpod.py&#xA;Traceback (most recent call last):&#xA;  File "D:\Bots\2vidpod.py", line 71, in <module>&#xA;    os.remove(os.path.join(output_folder, &#x27;temp.mp4&#x27;))&#xA;FileNotFoundError: [WinError 2] Не удается найти указанный файл: &#x27;D:\\bots\\ttvidads\\VID\\ZAGOTOVKI\\Videopod1\\temp.mp4&#x27;&#xA;</module>

    &#xA;

    so things i checked is&#xA;path is right&#xA;programs is installed FFMPEG and PYTHON all additional libraries downloaded&#xA;i pretty sure error caused by regular path and i wanna know if absolute path can do the thing

    &#xA;