
Recherche avancée
Médias (9)
-
Stereo master soundtrack
17 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Audio
-
Elephants Dream - Cover of the soundtrack
17 octobre 2011, par
Mis à jour : Octobre 2011
Langue : English
Type : Image
-
#7 Ambience
16 octobre 2011, par
Mis à jour : Juin 2015
Langue : English
Type : Audio
-
#6 Teaser Music
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#5 End Title
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
-
#3 The Safest Place
16 octobre 2011, par
Mis à jour : Février 2013
Langue : English
Type : Audio
Autres articles (97)
-
Installation en mode ferme
4 février 2011, parLe mode ferme permet d’héberger plusieurs sites de type MediaSPIP en n’installant qu’une seule fois son noyau fonctionnel.
C’est la méthode que nous utilisons sur cette même plateforme.
L’utilisation en mode ferme nécessite de connaïtre un peu le mécanisme de SPIP contrairement à la version standalone qui ne nécessite pas réellement de connaissances spécifique puisque l’espace privé habituel de SPIP n’est plus utilisé.
Dans un premier temps, vous devez avoir installé les mêmes fichiers que l’installation (...) -
Websites made with MediaSPIP
2 mai 2011, parThis page lists some websites based on MediaSPIP.
-
Possibilité de déploiement en ferme
12 avril 2011, parMediaSPIP peut être installé comme une ferme, avec un seul "noyau" hébergé sur un serveur dédié et utilisé par une multitude de sites différents.
Cela permet, par exemple : de pouvoir partager les frais de mise en œuvre entre plusieurs projets / individus ; de pouvoir déployer rapidement une multitude de sites uniques ; d’éviter d’avoir à mettre l’ensemble des créations dans un fourre-tout numérique comme c’est le cas pour les grandes plate-formes tout public disséminées sur le (...)
Sur d’autres sites (9299)
-
Anomalie #2985 (Nouveau) : Les docs attachés à un auteur ne sont pas visibles pour les rédacs dans...
26 avril 2013, par Suske -Voir http://forum.spip.net/fr_251736.html
Je confirme.
Par contre ils s’afficheraient dans le public, ce que je veux bien croire mais pas testé.
Une question d’autorisation j’imagine.
-
"FFmpeg : Error not transitioning to the next song in Discord Bot's queue."
1er avril 2024, par nooberI have 3 modules, but I'm sure the error occurs within this module, and here is the entire code within that module :


import asyncio
import discord
from discord import FFmpegOpusAudio, Embed
import os

async def handle_help(message):
 embed = discord.Embed(
 title="Danh sách lệnh cho Bé Mèo",
 description="Dưới đây là các lệnh mà chủ nhân có thể bắt Bé Mèo phục vụ:",
 color=discord.Color.blue()
 )
 embed.add_field(name="!play", value="Phát một bài hát từ YouTube.", inline=False)
 embed.add_field(name="!pause", value="Tạm dừng bài hát đang phát.", inline=False)
 embed.add_field(name="!resume", value="Tiếp tục bài hát đang bị tạm dừng.", inline=False)
 embed.add_field(name="!skip", value="Chuyển đến bài hát tiếp theo trong danh sách chờ.", inline=False)
 embed.add_field(name="!stop", value="Dừng phát nhạc và cho phép Bé Mèo đi ngủ tiếp.", inline=False)
 # Thêm các lệnh khác theo cùng mẫu trên
 await message.channel.send(embed=embed)

class Song:
 def __init__(self, title, player):
 self.title = title # Lưu trữ tiêu đề bài hát ở đây
 self.player = player

# Thêm đối tượng Song vào hàng đợi
def add_song_to_queue(guild_id, queues, song):
 queues.setdefault(guild_id, []).append(song)

async def handle_list(message, queues):
 log_file_path = "C:\\Bot Music 2\\song_log.txt"
 if os.path.exists(log_file_path):
 with open(log_file_path, "r", encoding="utf-8") as f:
 song_list = f.readlines()

 if song_list:
 embed = discord.Embed(
 title="Danh sách bài hát",
 description="Danh sách các bài hát đã phát:",
 color=discord.Color.blue()
 )

 for i, song in enumerate(song_list, start=1):
 if i == 1:
 song = "- Đang phát: " + song.strip()
 embed.add_field(name=f"Bài hát {i}", value=song, inline=False)

 await message.channel.send(embed=embed)
 else:
 await message.channel.send("Hiện không có dữ liệu trong file log.")
 else:
 await message.channel.send("File log không tồn tại.")

async def handle_commands(message, client, queues, voice_clients, yt_dl_options, ytdl, ffmpeg_options=None, guild_id=None, data=None):
 # Nếu không có ffmpeg_options, sử dụng các thiết lập mặc định
 if ffmpeg_options is None:
 ffmpeg_options = {
 'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5',
 'options': '-vn -filter:a "volume=0.25"'
 }
 
 # Khởi tạo voice_client
 if guild_id is None:
 guild_id = message.guild.id

 if guild_id in voice_clients:
 voice_client = voice_clients[guild_id]
 else:
 voice_client = None

 # Xử lý lệnh !play
 if message.content.startswith("!play"):
 try:
 # Kiểm tra xem người gửi tin nhắn có đang ở trong kênh voice không
 voice_channel = message.author.voice.channel
 # Kiểm tra xem bot có đang ở trong kênh voice của guild không
 if voice_client and voice_client.is_connected():
 await voice_client.move_to(voice_channel)
 else:
 voice_client = await voice_channel.connect()
 voice_clients[guild_id] = voice_client
 except Exception as e:
 print(e)

 try:
 query = ' '.join(message.content.split()[1:])
 if query.startswith('http'):
 url = query
 else:
 query = 'ytsearch:' + query
 loop = asyncio.get_event_loop()
 data = await loop.run_in_executor(None, lambda: ytdl.extract_info(query, download=False))
 if not data:
 raise ValueError("Không có dữ liệu trả về từ YouTube.")
 url = data['entries'][0]['url']

 player = FFmpegOpusAudio(url, **ffmpeg_options)
 # Lấy thông tin của bài hát mới đang được yêu cầu
 title = data['entries'][0]['title']
 duration = data['entries'][0]['duration']
 creator = data['entries'][0]['creator'] if 'creator' in data['entries'][0] else "Unknown"
 requester = message.author.nick if message.author.nick else message.author.name
 
 # Tạo embed để thông báo thông tin bài hát mới
 embed = discord.Embed(
 title="Thông tin bài hát mới",
 description=f"**Bài hát:** *{title}*\n**Thời lượng:** *{duration}*\n**Tác giả:** *{creator}*\n**Người yêu cầu:** *{requester}*",
 color=discord.Color.green()
 )
 await message.channel.send(embed=embed)
 
 # Sau khi lấy thông tin của bài hát diễn ra, gọi hàm log_song_title với title của bài hát
 # Ví dụ:
 title = data['entries'][0]['title']
 await log_song_title(title)

 # Thêm vào danh sách chờ nếu có bài hát đang phát
 if voice_client.is_playing():
 queues.setdefault(guild_id, []).append(player)
 else:
 voice_client.play(player)
 
 except Exception as e:
 print(e)
 
 if message.content.startswith("!link"):
 try:
 voice_client = await message.author.voice.channel.connect()
 voice_clients[voice_client.guild.id] = voice_client
 except Exception as e:
 print(e)

 try:
 url = message.content.split()[1]

 loop = asyncio.get_event_loop()
 data = await loop.run_in_executor(None, lambda: ytdl.extract_info(url, download=False))

 song = data['url']
 player = discord.FFmpegOpusAudio(song, **ffmpeg_options)

 voice_clients[message.guild.id].play(player)
 except Exception as e:
 print(e)

 # Xử lý lệnh !queue
 elif message.content.startswith("!queue"):
 queue = queues.get(guild_id, [])
 if queue:
 await message.channel.send("Danh sách chờ:")
 for index, item in enumerate(queue, 1):
 await message.channel.send(f"{index}. {item.title}")
 else:
 await message.channel.send("Không có bài hát nào trong danh sách chờ.")

 # Xử lý lệnh !skip
 elif message.content.startswith("!skip"):
 try:
 if voice_client and voice_client.is_playing():
 voice_client.stop()
 await play_next_song(guild_id, queues, voice_client, skip=True)
 await remove_first_line_from_log()
 except Exception as e:
 print(e)

 # Xử lý các lệnh như !pause, !resume, !stop
 elif message.content.startswith("!pause"):
 try:
 if voice_client and voice_client.is_playing():
 voice_client.pause()
 except Exception as e:
 print(e)

 elif message.content.startswith("!resume"):
 try:
 if voice_client and not voice_client.is_playing():
 voice_client.resume()
 except Exception as e:
 print(e)

 elif message.content.startswith("!stop"):
 try:
 if voice_client:
 voice_client.stop()
 await voice_client.disconnect()
 del voice_clients[guild_id] # Xóa voice_client sau khi dừng
 except Exception as e:
 print(e)

async def log_song_title(title):
 log_file_path = "C:\\Bot Music 2\\song_log.txt"
 try:
 # Kiểm tra xem tệp tin log đã tồn tại chưa
 if not os.path.exists(log_file_path):
 # Nếu chưa tồn tại, tạo tệp tin mới và ghi title vào tệp tin đó
 with open(log_file_path, 'w', encoding='utf-8') as file:
 file.write(title + '\n')
 else:
 # Nếu tệp tin log đã tồn tại, mở tệp tin và chèn title vào cuối tệp tin
 with open(log_file_path, 'a', encoding='utf-8') as file:
 file.write(title + '\n')
 except Exception as e:
 print(f"Error logging song title: {e}")

async def remove_first_line_from_log():
 log_file_path = "C:\\Bot Music 2\\song_log.txt"
 try:
 with open(log_file_path, "r", encoding="utf-8") as f:
 lines = f.readlines()
 # Xóa dòng đầu tiên trong list lines
 lines = lines[1:]
 with open(log_file_path, "w", encoding="utf-8") as f:
 for line in lines:
 f.write(line)
 except Exception as e:
 print(f"Error removing first line from log: {e}")
 
async def clear_log_file():
 log_file_path = "C:\\Bot Music 2\\song_log.txt"
 try:
 with open(log_file_path, "w", encoding="utf-8") as f:
 f.truncate(0)
 except Exception as e:
 print(f"Error clearing log file: {e}")


async def play_next_song(guild_id, queues, voice_client, skip=False):
 queue = queues.get(guild_id, [])
 if queue:
 player = queue.pop(0)
 voice_client.play(player, after=lambda e: asyncio.run_coroutine_threadsafe(play_next_song(guild_id, queues, voice_client, skip=False), voice_client.loop))
 if skip:
 return
 else:
 await remove_first_line_from_log() # Xóa dòng đầu tiên trong file log
 elif skip:
 await remove_first_line_from_log() # Xóa dòng đầu tiên trong file log
 await voice_client.disconnect()
 del voice_client[guild_id] # Xóa voice_client sau khi dừng
 else:
 await clear_log_file() # Xóa dòng đầu tiên trong file log
 await voice_client.disconnect()
 del voice_client[guild_id] # Xóa voice_client sau khi dừng



I have tried asking ChatGPT, Gemini, or Bing, and they always lead me into a loop of errors that cannot be resolved. This error only occurs when the song naturally finishes playing due to its duration. If the song is playing and I use the command !skip, the next song in the queue will play and function normally. I noticed that it seems like if a song ends naturally, the song queue is also cleared immediately. I hope someone can help me with this


-
I detected an error downloading a twitch tv stream. I use ffmpeg. That error stops the download, how can I fix it ? [closed]
9 juin, par sort35ofnI wanted to perform a download via ffmpeg of a video streamed live on the Twitch tv platform. I have windows 10 and I use cmd to run ffmpeg.


The command I use to download the concert is :


ffmpeg.exe -i "m3u8-link" -c copy name.ts



I once downloaded with yt-dlp, but noticed that the quality was noticeably lower, at least using the following command :
yt-dlp.exe -f (bestvideo+bestaudio/best) "amazon-channel-link"


That's why I prefer to download with ffmpeg. Normally I haven't had any problems with downloads. But this is already the third time (not continuously/consecutively) that I get this error. That error causes the download of the stream to terminate. It is not like in other occasions that sometimes a .ts fragment (of 3 seconds, for example) has already expired (and is not included in the download) but the download continues.


[https @ 000001edada180c0] Opening 'https://sae12.playlist.ttvnw.net/v1/playlist/Cr4GlKuutNM7CxfM9Sq0mdUFxA8uA3F2oluPaJOmOPaBjmTkdiv4RxnkTtt_tEV8t2CyuH6D1E0HB3Erpbjq3mCfV5KqO4GfOMNOElmyYe2AKZcyQJHNeavrFfVBPB_pbDS5PYWTzUHoS0iTLfmn2cx-wHMHXa5MO-IdGPRixWDvezKNhOebWYscoIWvYwstshPSFvem1EN1UES7QfIDHSlBcZF3lGeVpg2yl05dhVwAX8YI9rnBtXYbwAUwcjEmPiqk_wm6oEX-2LRsw_05dznnVv6BbyYsLvyZu810xt9BNQU6rNCSzuoZhVx8gFxoyEdUt-VV3L_xj78-5CFibrvnO4uCafCZ5-wE_bEtUQeuHsLmm9Qf9Pj5BIGB2BHWm2LqlGTHcDG-8Z0u1-3_FB_h7fN7-uuyN-6-lreZYHDPviM8hKHFMU3zwNY29elgKRPgVMJ-4ysLWGuOPdwrylJpLFJSzsXhZaEE4p_4Zg6gfDuozYYttmPI2G1LErd5p1lT9DkQncFZibymap5Fiv-x21-jeNbrZo92PfW7lIo6NPdlnPWyoUTOb2KjgU9R0fm1UJt1kQJmQMVyDN2OHZ4t7dcAfyGMTwU26O7DdaYZhhv8mPMteBZcyjnLKH7e5AMtHUEVO2r9QIOiH0wDLNh-f9WS2kmRdJENBvl5mMGdyVHhBc9K9G5SuxBesi6F_9P_8agwpPo51m8ikJvSVJKduoIfVLSuto2SIe4DFI7hMxbplWfxBb1PNEoMWyeQd0iHUwDqQwVCFHq8OhGBp1EJtx1CNVtBhztLIqNXBbxR1Cdy8tx5rdJjq4EKlFKU3eh3_aRkhe7gulUKx2cZYNg4bGHpNBU1DP-std8xG1ckPdTpig-h_1okYPd7sXnynBFnhMHkVipsIJC4fkoT2MXHo3ItgMgTUBh1-oWD6qaD00VDM9TyDcCawJt-kI8-KnwlUkh7pq2cUv9ODqSjm5xcLoxPUxutCoZ9aKq9cnV0kqKPXxmLOekmgWK8G8MjFZ6Es5n46NeKREgQEBUTf2TZkUTOHZAiElyPy0ZdyOxFkdFZ06yqq8zUWG_dnhpgbrS1SueCOx5rGInRIdg94TIaDLMJTUvkLrqDdcS2jiABKgl1cy1lYXN0LTIwuAw.m3u8' for reading
[https @ 000001edad715600] HTTP error 500 Internal Server Errortrate=4480.2kbits/s speed=1.01x elapsed=0:17:30.76
[hls @ 000001edab89e500] keepalive request failed for 'https://sae12.playlist.ttvnw.net/v1/playlist/Cr4GlKuutNM7CxfM9Sq0mdUFxA8uA3F2oluPaJOmOPaBjmTkdiv4RxnkTtt_tEV8t2CyuH6D1E0HB3Erpbjq3mCfV5KqO4GfOMNOElmyYe2AKZcyQJHNeavrFfVBPB_pbDS5PYWTzUHoS0iTLfmn2cx-wHMHXa5MO-IdGPRixWDvezKNhOebWYscoIWvYwstshPSFvem1EN1UES7QfIDHSlBcZF3lGeVpg2yl05dhVwAX8YI9rnBtXYbwAUwcjEmPiqk_wm6oEX-2LRsw_05dznnVv6BbyYsLvyZu810xt9BNQU6rNCSzuoZhVx8gFxoyEdUt-VV3L_xj78-5CFibrvnO4uCafCZ5-wE_bEtUQeuHsLmm9Qf9Pj5BIGB2BHWm2LqlGTHcDG-8Z0u1-3_FB_h7fN7-uuyN-6-lreZYHDPviM8hKHFMU3zwNY29elgKRPgVMJ-4ysLWGuOPdwrylJpLFJSzsXhZaEE4p_4Zg6gfDuozYYttmPI2G1LErd5p1lT9DkQncFZibymap5Fiv-x21-jeNbrZo92PfW7lIo6NPdlnPWyoUTOb2KjgU9R0fm1UJt1kQJmQMVyDN2OHZ4t7dcAfyGMTwU26O7DdaYZhhv8mPMteBZcyjnLKH7e5AMtHUEVO2r9QIOiH0wDLNh-f9WS2kmRdJENBvl5mMGdyVHhBc9K9G5SuxBesi6F_9P_8agwpPo51m8ikJvSVJKduoIfVLSuto2SIe4DFI7hMxbplWfxBb1PNEoMWyeQd0iHUwDqQwVCFHq8OhGBp1EJtx1CNVtBhztLIqNXBbxR1Cdy8tx5rdJjq4EKlFKU3eh3_aRkhe7gulUKx2cZYNg4bGHpNBU1DP-std8xG1ckPdTpig-h_1okYPd7sXnynBFnhMHkVipsIJC4fkoT2MXHo3ItgMgTUBh1-oWD6qaD00VDM9TyDcCawJt-kI8-KnwlUkh7pq2cUv9ODqSjm5xcLoxPUxutCoZ9aKq9cnV0kqKPXxmLOekmgWK8G8MjFZ6Es5n46NeKREgQEBUTf2TZkUTOHZAiElyPy0ZdyOxFkdFZ06yqq8zUWG_dnhpgbrS1SueCOx5rGInRIdg94TIaDLMJTUvkLrqDdcS2jiABKgl1cy1lYXN0LTIwuAw.m3u8' with error: 'Server returned 5XX Server Error reply' when parsing playlist
[https @ 000001edad714900] HTTP error 500 Internal Server Errortrate=4480.2kbits/s speed= 1x elapsed=0:17:32.82
[hls @ 000001edab89e500] Failed to reload playlist 0
[https @ 000001edab8a4dc0] Opening 'https://c513a515af41.chantenay.akamai.hls.ttvnw.net/v1/segment/CvUCxQ8TAK7dXfVU_OB77Tl0jy4jVuXiNgXG_97z6zGC4vXLrJNkgegJgVTcnrjyxZuL37UAeKJ9nhR48Yq2YRy_r8EnJ3PyAX407Gj21HDw3AG1KFXL-Z1ysn7DFTvOb434uA_farXGB276wYH-n0dFr7TzD7G2sCLcYSZeyadGEwJbq3wvb7AglP8UEU0JxwZRVKWx0zX9Vd4I3EiSdAUP7w96T75UBwreFKwxvq16-od59YpbneYRYUYkgKEZSLTgrmCkm_nN4FWxOCSOhFHqHmjCenSREMJMdSHbhcqgvU5pdIxSm0ITMAxY4jX6cUTFKsqYGeKwCMHjy0gptCuPGVvEJCffxq00YNmF194USBRWumBZCp0TuRtI4LzjyPB1LARLdzJ56bCibI6lRE4hDn53zAV5ZUcWlkUIuUJ52D4vH3fRl85AQHV8UiWl8MEfyjJ4B8XxThp7lZ8nhAX42pUJ_8YgaK6BO51syG2Rkm9icm8ddRoM8pDl2Pkp8FgFncdIIAEqCXVzLWVhc3QtMjC4DA.ts?dna=CnWfUp8FT0O95nMtHpmzX-0LudnQmJLc-YARNX594okBXpxNtNQOAoOFUhTgI3_AReiOPiW_1e2e3oeoXJfoJbH4KZniEQhFhSWU7wMaSzM8CkZomzvn1Gig5l71lY9wSw8DV-QRh6LK7zfRqp5yy547EAFTbcwaDDnujf_TZXo1TVET8CABKgl1cy1lYXN0LTIwuAw' for reading
[https @ 000001edad4be180] Opening 'https://c513a515af41.chantenay.akamai.hls.ttvnw.net/v1/segment/CvUCvDoClU0qVRu8zB4Vm0gdhBMUSkOd9X-6zOlmLSLjAZDs-Oxj_mW5vBJWinuwpM4xU4bDToC8hfj7Xv80h6Rc93voJNaNiUxYWszEFu1AJh-_LsqxEJA-3nW8MBNo9YeaecC_EX8TF0VTaVBGiLI1SQNREb-1B5pAkYXfVcO_OSI2QqrssKXbBzkNwsx6dW38ir7CNT9qTZACJGzDZkxXYrSlArubviw_wXxSKXQKn0YcF3yXeKO4iXHRjkyrX0rnaSM3PRDJhr1xGT47u9J5jymTL55O9QRLS-9Z8ZN1LhqpXLxBFJbFi-4v_yJZWponNmS3F6b3rMhW3WCv5qw96B4UHF7NjFJWk0LmyLTkNcBAPC2yyARDZ02MoIXPzMSEq9Z1O4jrASPj34HXA_8BdxqZdVtyzjEekR2ThJkueLyFshQ3HIGkeFH49xpQmDNgE93VovfMACG9RTUCIPP9cZuOhTkoFBpT7JSrOx_p2oS3q4QiYxoMQNuunEN7QhQW4OPMIAEqCXVzLWVhc3QtMjC4DA.ts?dna=CnWfUp8FT0O95nMtHpmzX-0LudnQmJLc-YARNX594okBXpxNtNQOAoOFUhTgI3_AReiOPiW_1e2e3oeoXJfoJbH4KZniEQhFhSWU7wMaSzM8CkZomzvn1Gig5l71lY9wSw8DV-QRh6LK7zfRqp5yy547EAFTbcwaDDnujf_TZXo1TVET8CABKgl1cy1lYXN0LTIwuAw' for reading
[in#0/hls @ 000001edab89e3c0] Error during demuxing: Server returned 5XX Server Error reply 1x elapsed=0:17:33.34
[out#0/mpegts @ 000001edab92e880] video:547017KiB audio:12398KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 3.451806%
frame=26450 fps= 25 q=-1.0 Lsize= 578726KiB time=00:17:37.96 bitrate=4481.2kbits/s speed= 1x elapsed=0:17:33.35

yt-dlp>



Is there any way to prevent this error ? Or can I do something so that the download does not stop because of this error ?


And excuse me but I forgot to take a screenshot of the cmd screen, so I don't remember the colors of the letters (it certainly changed the colors of the letters when the error appeared). So I proceed to indicate that the error starts when it says : “ [hls @ 000001edab89e500] keepalive request failed for ”.