
Recherche avancée
Autres articles (37)
-
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir -
Supporting all media types
13 avril 2011, parUnlike 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 (...)
-
Contribute to documentation
13 avril 2011Documentation is vital to the development of improved technical capabilities.
MediaSPIP welcomes documentation by users as well as developers - including : critique of existing features and functions articles contributed by developers, administrators, content producers and editors screenshots to illustrate the above translations of existing documentation into other languages
To contribute, register to the project users’ mailing (...)
Sur d’autres sites (4267)
-
Anomalie #3920 (Nouveau) : sur Sauvegarde SQLite (SPIP 3.1.3 et 3.1.4 mini)
11 mars 2017, par YannX DYXEn SPIP 3 la sauvegarde standard pose parfois des problèmes, que j’ai trop souvent vus...
Cette fois j’ai investigué sur un SPIP 3.1.4 OVH (avec prefix spécifique), toutes les tables ne sont pas sauvegardées, au contraire de la sauvegarde SQL : certes un message existe mais !
- d’une part des tables vides ou non déclarées dans un plugin activé sont omises : pourquoi ?
(encore une fois au contraire de la sauvegarde SQL encore disponible en plugin !)
=> est-il possible d’apporter un lien vers une aide plus détaillée, explicitant les causes possibles ?
(cf. http://forum.spip.net/fr_262960.html & http://forum.spip.net/fr_266342.html par exemple).
- le long libellé affiché<:dump:texte_sauvegarde:>
ne signale aucunement ces aspects et indications ; le lien vers http://www.spip.net/fr_article1489.html est-il encore pertinent (je n’ai jamais tenté une restauration d’une autre version SQLite : comment se passerait une table non déclarée ou non connue dans le SPIP cible ? ) ?
- d’autre part la lecture du message en fin des erreurs est peu explicite à la lecture (cf. ci-dessous),
il me semblerait plus significatif d’afficher :Nombre de tables non sauvegardées : 12/58
- d’ailleurs l’affichage est incorrect, car il n’indique pas le bon préfixe (en cas de préfixe non-standard !!)
(et de ce fait, je vais avouer avoir jusqu’à présent négligé ces erreurs incomprises, et... patatras !)
_ S’il est intéressant de faire une sauvegarde dé-préfixée (ce que j’ai parfois trouvé utile), peut-etre serait-il intéressant de faire apparaitre (dans un commentaire ou une meta) le préfixe d’origine, à titre de documentation !En recherchant de la documentation, je n’ai trouvé que http://www.spip.net/fr_article3418.html qui mériterait peut-etre d’etre complété avec les informations/explications ci-dessus (et leurs conséquences)...
En complément, le site exemple ayant été migré d’anciennes versions SPIP 2, montre encore les anciennes tables@ spip_mots_xx@
je ne me souviens pas d’un plugin qui éliminerait ces anciennes tables résiduelles (pour ceux qui ne savent utiliser phpMyAdmin ou Adminer)... ce qui supprimerait ensuite ces erreurs / voir par exemple sur les forums SPIP) -
How do I make my discord bot play music by using youtubedl's search function instead of url ? (Python)
28 septembre 2021, par PypypieYumI want it to search for the video and play it, how can i change the following code to achieve that ? Every time I use the ytsearch function in ytdl, I notice that it only searches for the first word of the title and download it, however, it causes error later on and do nothing.


@commands.command()
 async def play(self, ctx, url):
 if ctx.author.voice is None:
 await ctx.send("You are not in a voice channel!")
 voice_channel = ctx.author.voice.channel
 if ctx.voice_client is None:
 await voice_channel.connect()
 else:
 await ctx.voice_client.move_to(voice_channel)

 ctx.voice_client.stop()
 FFMPEG_OPTIONS = {'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', 'options': '-vn'}
 YDL_OPTIONS = {'format':"bestaudio", 'default_search':"ytsearch"}
 vc = ctx.voice_client

 with youtube_dl.YoutubeDL(YDL_OPTIONS) as ydl:
 info = ydl.extract_info(url, download=False)
 if 'entries' in info:
 url2 = info["entries"][0]["formats"][0]
 elif 'formats' in info:
 url2 = info["formats"][0]['url']
 source = await discord.FFmpegOpusAudio.from_probe(url2, **FFMPEG_OPTIONS)
 vc.play(source)



And this is the error message :


Ignoring exception in command play:
Traceback (most recent call last):
 File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 85, in wrapped
 ret = await coro(*args, **kwargs)
 File "/home/runner/HandmadeLivelyLines/music.py", line 44, in play
 source = await discord.FFmpegOpusAudio.from_probe(url2, **FFMPEG_OPTIONS)
 File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/player.py", line 387, in from_probe
 return cls(source, bitrate=bitrate, codec=codec, **kwargs)
 File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/player.py", line 324, in __init__
 super().__init__(source, executable=executable, args=args, **subprocess_kwargs)
 File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/player.py", line 138, in __init__
 self._process = self._spawn_process(args, **kwargs)
 File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/player.py", line 144, in _spawn_process
 process = subprocess.Popen(args, creationflags=CREATE_NO_WINDOW, **subprocess_kwargs)
 File "/usr/lib/python3.8/subprocess.py", line 858, in __init__
 self._execute_child(args, executable, preexec_fn, close_fds,
 File "/usr/lib/python3.8/subprocess.py", line 1639, in _execute_child
 self.pid = _posixsubprocess.fork_exec(
TypeError: expected str, bytes or os.PathLike object, not dict

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
 File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/bot.py", line 939, in invoke
 await ctx.command.invoke(ctx)
 File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 863, in invoke
 await injected(*ctx.args, **ctx.kwargs)
 File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 94, in wrapped
 raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: expected str, bytes or os.PathLike object, not dict



Thanks.


-
How do I stop ffmpeg from spamming itself when I auto restart ?
15 décembre 2019, par billy61300const fs = require("fs");
const express = require("express");
const app = express();
const path = require("path");
const ffmpeg = require("fluent-ffmpeg");
const md5 = require("md5");
const readline = require("readline");
const formidable = require("formidable");
const dir = "Custom/Dir";
const thumb = __dirname + "/thumb";
const ph = __dirname + "/placeholder";
app.use("/serve", express.static(dir));
app.use("/thumb", express.static(thumb));
app.use("/ph", express.static(ph));
const list = [];
const listThumb = [];
process.on("uncaughtException", (err) => {
console.log("Caught Exception: " + err);
});
let passwords = fs.readFileSync("passwords.txt").toString().split("\n");
app.get("/", (req, res) => {
res.sendFile(__dirname + "/index.html")
});
app.get("/upload", (req, res) => {
res.sendFile(__dirname + "/upload.html");
});
app.post("/uploadFile", (req, res) => {
let form = new formidable.IncomingForm();
form.parse(req, (err, fields, files) => {
if (passwords.includes(md5(fields.password))) {
fs.readFile(files.filetoupload.path, (err, data) => {
let newPath = dir + "/" + files.filetoupload.name;
if (!fs.existsSync(newPath)) {
fs.writeFile(newPath, data, (err) => {
res.writeHead(200, {"Content-Type": "text/html"});
res.write("<h1>File Uploaded</h1>");
res.end();
});
} else {
res.writeHead(200, {"Content-Type": "text/html"});
res.write("<h1>File already exists. Upload with a different name please.</h1>");
res.end();
}
});
}
});
});
fs.readdir(dir, (err, files) => {
if (err) {
throw err;
} else {
let i = 0;
files.forEach((file) => {
list[i] = path.basename(file);
if (!fs.existsSync(__dirname + "\\thumb\\" + list[i] + ".png")) {
console.log("Generating: " + list[i] + ".png");
let proc = new ffmpeg({source: dir + "/" + file, nolog: true});
proc.setFfmpegPath(__dirname + "\\ffmpeg.exe");
proc.screenshots({
timestamps: [0.0],
filename: list[i] + ".png",
folder: __dirname + "\\thumb\\",
size: "100x100"
});
}
i++;
});
let serveDoc = "";
for (let j = 0; j < list.length; j++) {
if (path.extname(list[j]).toLowerCase() !== ".jpg" && path.extname(list[j]).toLowerCase() !== ".jpeg" && path.extname(list[j]).toLowerCase() !== ".png") {
if (path.extname(list[j]).toLowerCase() == ".mp3" || path.extname(list[j]).toLowerCase() == ".wav") {
serveDoc += "<a href="http://stackoverflow.com/feeds/tag/address" + list[j] + "">" + "<img width='100' height='100' src="http://stackoverflow.com/feeds/tag/address" />" + "</a> ";;
}/* else if (path.extname(list[j]).toLowerCase() == ".webm") {
serveDoc += "<a href="http://stackoverflow.com/feeds/tag/address" + list[j] + "">" + "<img width='100' height='100' src="http://stackoverflow.com/feeds/tag/address" />" + "</a> ";;
}*/ else {
serveDoc += "<a href="http://stackoverflow.com/feeds/tag/address" + list[j] + "">" + "<img width='100' height='100' src="http://stackoverflow.com/feeds/tag/address" + list[j] + ".png" />" + "</a> ";
}
} else {
serveDoc += "<a href="http://stackoverflow.com/feeds/tag/address" + list[j] + "">" + "<img width='100' height='100' src="http://stackoverflow.com/feeds/tag/address" + list[j] + "" />" + "</a> ";
}
}
serveDoc += "";
fs.writeFile("index.html", serveDoc, (err) => {
if (err) throw err;
});
}
});
setTimeout(() => {
process.exit(0);
}, 1000 * 60 * 30);
app.listen(80, (err) => {
if (err) {
throw err;
} else {
console.log("Listening on port 80.");
}
});Issue is that the program needs to be restarted every X minutes so that the list of media will update on it’s own. However, upon a restart, ffmpeg goes crazy and starts to spam a batch window under it’s name repeatedly over and over again without stopping. The only way out of it is to restart my computer.
I’ve tried to use PM2, Forever, Supervisor. Nodemon afaik won’t auto restart.