MAC_LAN_MSG=("macOS no deja a PS5 Directo usar la red local. Ve a Ajustes del Sistema → Privacidad y seguridad → Red local, activa «PS5 Directo» (o «python3») y vuelve a abrir el programa.")
defmac_lan_blocked(host=None):
"""En macOS 15+ hace falta el permiso «Red local». Si no lo tiene, conectar con la consola falla al
instantecon"No route to host"(errno65),aunquelaPS5esteencendida."""
<key>NSLocalNetworkUsageDescription</key><string>PS5 Directo se conecta a tu PS5 por la red local (FTP, BFpilot y Payload Manager). / PS5 Directo connects to your PS5 over the local network (FTP, BFpilot and Payload Manager).</string>
<pclass="hint">Envíos y bajadas que se quedaron a medias, carpetas temporales y copias que ya no hacen falta, en la consola y en el PC. Te enseño lo que ocupa cada cosa y no se borra nada sin que lo confirmes.</p>
<divid="rsdOut"></div>
</section>
<sectionclass="card"id="mrCard">
<divclass="fm-head"><h2>Hacer sitio</h2></div>
<pclass="hint">Di cuánto necesitas liberar y te propongo qué borrar: primero restos y envíos a medias, luego copias repetidas de lo mismo y luego instaladores .pkg. Las aplicaciones solo salen como opción, sin marcar. Nada se borra sin que lo confirmes.</p>
<pclass="hint">Las capturas de pantalla y los vídeos guardados en la consola. Pulsa una para verla grande; marca las que quieras y «Bajar al PC» las guarda en Descargas › PS5 Directo.</p>
<pclass="hint">Busca en /data/ps5directo restos que ya no usa ninguna transferencia de la cola (partes de trabajos quitados, descompresiones a medias...). Te enseña cuánto ocupa cada cosa antes de borrar.</p>
<pclass="hint">Busca envíos y bajadas a medias y restos que ya no usa ninguna transferencia de la cola, en la consola y en el PC. Te enseña cuánto ocupa cada cosa antes de borrar. También está en Espacio.</p>
@@ -1066,7 +1086,12 @@ I18N_RX.push(['^No hay conexión con la consola\\. Comprueba que la PS5 está en
Object.assign(I18N_EXACT,{"Estado de la consola": "Console status", "Volver a mirar": "Check again", "Al abrir PS5 Directo, iniciar solos con Payload Manager los que falten": "When PS5 Directo opens, start any missing ones automatically with Payload Manager", "Mirando la consola…": "Checking the console…", "No encuentro la consola en {0}. ¿Está encendida y con el jailbreak hecho? Revisa la IP en Ajustes.": "I can't find the console at {0}. Is it on and jailbroken? Check the IP in Settings.", "Payload Manager está abierto en la consola: PS5 Directo puede iniciar, instalar y reiniciar los payloads desde aquí.": "Payload Manager is open on the console: PS5 Directo can start, install and restart the payloads from here.", "Payload Manager no está abierto en la consola. Ábrelo (es la aplicación «Payload Manager» del menú de inicio de la PS5) y pulsa «Volver a mirar»: así PS5 Directo puede iniciar los payloads desde aquí. Mientras tanto, cárgalos desde Payload Manager en la consola.": "Payload Manager isn't open on the console. Open it (it's the \"Payload Manager\" app on the PS5 home screen) and click \"Check again\": then PS5 Directo can start the payloads from here. Meanwhile, load them from Payload Manager on the console.", "Funciona": "Working", "No está iniciado": "Not started", "En marcha, pero no responde": "Running, but not responding", "Reiniciar": "Restart", "Iniciar": "Start", "Instalar e iniciar": "Install and start", "Está en marcha pero no contesta: se ha colgado o está cargado dos veces. «Reiniciar» lo cierra y lo vuelve a iniciar.": "It's running but not answering: it hung or was loaded twice. \"Restart\" closes it and starts it again.", "No está instalado en Payload Manager: «Instalar e iniciar» baja la última versión de GitHub, la instala allí y la inicia.": "It isn't installed in Payload Manager: \"Install and start\" downloads the latest version from GitHub, installs it there and starts it.", "Sin el FTP no funciona casi nada: enviar, Biblioteca, Archivos de la consola, Copia de seguridad ni Capturas.": "Without FTP almost nothing works: sending, Library, Console files, Backup or Captures.", "Sin BFpilot no se puede descomprimir en la consola, ver lo que ocupa cada carpeta, la pestaña Espacio ni copiar o mover rápido dentro de la consola. Sí se puede enviar descomprimiendo en el PC.": "Without BFpilot you can't extract on the console, see each folder's size, use the Space tab or copy/move quickly inside the console. You can still send by extracting on the PC.", "ftpsrv y BFpilot se cargan solos cada vez que se abre Payload Manager.": "ftpsrv and BFpilot load automatically every time Payload Manager opens.", "¿Quieres que ftpsrv y BFpilot se carguen solos cada vez que enciendas la consola (al abrirse Payload Manager)? Se añaden a su lista de carga automática, sin quitar lo que ya tengas.": "Do you want ftpsrv and BFpilot to load automatically every time you turn on the console (when Payload Manager opens)? They're added to its autoload list, without removing what you already have.", "Cargarlos solos al encender": "Load them automatically at startup", "Iniciando… (unos segundos)": "Starting… (a few seconds)", "Bajando de GitHub, instalando en Payload Manager e iniciando…": "Downloading from GitHub, installing in Payload Manager and starting…", "Cerrando el que estaba colgado y volviendo a iniciarlo…": "Closing the hung one and starting it again…", "Guardando en Payload Manager…": "Saving in Payload Manager…", "Listo: se cargarán solos al encender la consola.": "Done: they'll load automatically when the console starts.", "Estado de la consola y payloads…": "Console status and payloads…", "Pulsa para ver el estado de la consola y arreglar lo que falte": "Click to see the console status and fix what's missing", "Abre Payload Manager en la consola (es una aplicación del menú de inicio de la PS5) y vuelve a intentarlo: PS5 Directo lo usa para cargar los payloads.": "Open Payload Manager on the console (it's an app on the PS5 home screen) and try again: PS5 Directo uses it to load the payloads.", "Primero instala ftpsrv y BFpilot en Payload Manager": "First install ftpsrv and BFpilot in Payload Manager", "Enviar a la PS5": "Send to the PS5"});
I18N_RX.push(...[["^([\\s\\S]*?) iniciado, pero todavía no responde\\. Espera unos segundos y pulsa «Volver a mirar»\\.$", "{0} started, but it isn't responding yet. Wait a few seconds and click \"Check again\"."], ["^([\\s\\S]*?) funcionando\\.$", "{0} working."], ["^([\\s\\S]*?) ya está en marcha pero no responde: pulsa «Reiniciar»$", "{0} is already running but not responding: click \"Restart\""], ["^Iniciado desde Payload Manager: ([\\s\\S]*?)$", "Started from Payload Manager: {0}"]]);
I18N_RX.push(...[["^No encuentro el proceso de ([\\s\\S]*?) en Payload Manager para cerrarlo\\. Ciérralo desde Payload Manager en la consola \\(Procesos activos\\) o reinicia la consola, y luego pulsa «Iniciar»\\.$", "I can't find {0}'s process in Payload Manager to close it. Close it from Payload Manager on the console (Active processes) or restart the console, then click \"Start\"."]]);
Object.assign(I18N_EXACT,{"🎬 Tus clips están en WEBM: Telegram, WhatsApp y muchas webs no los reproducen directamente. Para que los nuevos se graben en MP4, en la PS5 ve a Ajustes → Capturas y emisiones → Capturas → Formato de los videoclips → Tipo de archivo y elige «Más compatible (MP4)» (con la resolución de grabación en 1920 × 1080; en 4K solo hay WebM).": "🎬 Your clips are WEBM: Telegram, WhatsApp and many websites don't play them directly. To record new ones as MP4, on the PS5 go to Settings → Captures and Broadcasts → Captures → Video Clip Format → File Type and choose \"Most Compatible (MP4)\" (with the recording resolution at 1920 × 1080; 4K only offers WebM).", "🌗 ¿Se ven lavados (sin contraste) al compartirlos? Pasa con las capturas y clips grabados en HDR, que el móvil, Telegram o las webs no saben mostrar. Para que se vean bien en todas partes, en la PS5 ve a Ajustes → Capturas y emisiones → Capturas y desactiva «HDR» en el formato de las capturas de pantalla y de los videoclips.": "🌗 Do they look washed out (no contrast) when you share them? It happens with screenshots and clips recorded in HDR, which phones, Telegram and websites can't display properly. To make them look right everywhere, on the PS5 go to Settings → Captures and Broadcasts → Captures and turn off \"HDR\" in the screenshot and video clip formats.", "Entendido": "Got it"});
Object.assign(I18N_EXACT,{"🎬 Tus clips están en WEBM: Telegram, WhatsApp y muchas webs no los reproducen directamente. Para que los nuevos se graben en MP4, en la PS5 ve a Ajustes → Capturas y emisiones → Capturas → Formato de los videoclips → Tipo de archivo y elige «Más compatible (MP4)» (con la resolución de grabación en 1920 × 1080; en 4K solo hay WebM). Para los que ya tienes, márcalos y pulsa «Convertir a MP4».": "🎬 Your clips are WEBM: Telegram, WhatsApp and many websites don't play them directly. To record new ones as MP4, on the PS5 go to Settings → Captures and Broadcasts → Captures → Video Clip Format → File Type and choose \"Most Compatible (MP4)\" (with the recording resolution at 1920 × 1080; 4K only offers WebM). For the ones you already have, tick them and click \"Convert to MP4\".", "🌗 ¿Se ven lavados (sin contraste) al compartirlos? Pasa con las capturas y clips grabados en HDR, que el móvil, Telegram o las webs no saben mostrar. Para que se vean bien en todas partes, en la PS5 ve a Ajustes → Capturas y emisiones → Capturas y desactiva «HDR» en el formato de las capturas de pantalla y de los videoclips. Los vídeos que ya tienes en HDR, «Convertir a MP4» los deja con colores normales.": "🌗 Do they look washed out (no contrast) when you share them? It happens with screenshots and clips recorded in HDR, which phones, Telegram and websites can't display properly. To make them look right everywhere, on the PS5 go to Settings → Captures and Broadcasts → Captures and turn off \"HDR\" in the screenshot and video clip formats. For HDR videos you already have, \"Convert to MP4\" gives them normal colours.", "Entendido": "Got it"});
Object.assign(I18N_EXACT,{"Lo que ocupa en la consola": "Size on the console"});
Object.assign(I18N_EXACT,{"Busca envíos y bajadas a medias y restos que ya no usa ninguna transferencia de la cola, en la consola y en el PC. Te enseña cuánto ocupa cada cosa antes de borrar. También está en Espacio.": "Finds half-finished sends and downloads and leftovers no transfer in the queue uses anymore, on the console and on the PC. It shows how much each one takes before deleting. It's also in Space.", "Vídeos a MP4, y sin HDR para que no se vean lavados": "Videos to MP4, without HDR so they don't look washed out", "🎬 Convertir a MP4": "🎬 Convert to MP4", "Convertir a MP4": "Convert to MP4", "Convertir a MP4 ({0})": "Convert to MP4 ({0})", "Marca algún vídeo": "Tick a video first", "Elige algún vídeo": "Choose a video", "Para convertir hace falta FFmpeg, un programa gratuito de vídeo. Se descarga una sola vez (33 MB, de GitHub) y se guarda en la carpeta de PS5 Directo. ¿Instalarlo y convertir?": "Converting needs FFmpeg, a free video program. It's downloaded only once (33 MB, from GitHub) and kept in the PS5 Directo folder. Install it and convert?", "Para convertir hace falta FFmpeg. Instálalo con Homebrew (brew.sh): brew install ffmpeg": "Converting needs FFmpeg. Install it with Homebrew (brew.sh): brew install ffmpeg", "Para convertir hace falta FFmpeg. Instálalo (por ejemplo: sudo apt install ffmpeg) y vuelve a probar.": "Converting needs FFmpeg. Install it (for example: sudo apt install ffmpeg) and try again.", "Convirtiendo {0} de {1}": "Converting {0} of {1}", "Bajando de la consola": "Downloading from the console", "Convirtiendo a MP4": "Converting to MP4", "Convirtiendo a MP4 y quitando el HDR (tarda un poco más)": "Converting to MP4 and removing HDR (takes a bit longer)", "Instalando el convertidor (FFmpeg, 33 MB, solo la primera vez)": "Installing the converter (FFmpeg, 33 MB, first time only)", "Conversión cancelada": "Conversion cancelled", "{0} vídeos en MP4 en Descargas › PS5 Directo › Capturas, listos para compartir.": "{0} videos as MP4 in Downloads › PS5 Directo › Capturas, ready to share.", "No se pudo convertir": "Couldn't convert", "Ya se está convirtiendo": "Already converting", "🧹 Limpiar restos": "🧹 Clean up leftovers", "Buscar restos": "Find leftovers", "Envíos y bajadas que se quedaron a medias, carpetas temporales y copias que ya no hacen falta, en la consola y en el PC. Te enseño lo que ocupa cada cosa y no se borra nada sin que lo confirmes.": "Sends and downloads that were left half-finished, temporary folders and copies that aren't needed anymore, on the console and on the PC. I show you how much each one takes and nothing is deleted without your confirmation.", "Buscando restos en la consola y en el PC… (puede tardar unos segundos)": "Looking for leftovers on the console and on the PC… (may take a few seconds)", "No hay restos: todo limpio.": "No leftovers: all clean.", "En la consola": "On the console", "En el PC": "On the PC", "No se puede borrar ahora: {0}": "Can't delete it now: {0}", "Borrar marcados ({0})": "Delete ticked ({0})", "¿Borrar {0} elementos ({1})? No se puede deshacer.": "Delete {0} items ({1})? This can't be undone.", "Borrando…": "Deleting…", "Liberados {0}": "{0} freed", "algo se está bajando ahora": "something is downloading right now", "Copias guardadas para ver las capturas (se vuelven a bajar al abrirlas)": "Copies kept to view captures (downloaded again when you open them)", "BFpilot no responde: en la consola solo miro los archivos a medias, no la carpeta de trabajo.": "BFpilot isn't responding: on the console I only check half-sent files, not the work folder.", "No es una aplicación completa. Márcala solo si sabes que es un envío que se cortó.": "It isn't a complete app. Tick it only if you know it's a send that got cut off."});
I18N_RX.push(...[["^Bajada a medias \\(Bajado de la Biblioteca\\): ([\\s\\S]*?)$", "Half-finished download (from the Library): {0}"], ["^Bajada a medias \\(Descargas\\): ([\\s\\S]*?)$", "Half-finished download (Downloads): {0}"], ["^Bajada a medias \\(Capturas\\): ([\\s\\S]*?)$", "Half-finished file (Captures): {0}"], ["^Temporal de transferencias por el PC: ([\\s\\S]*?)$", "Temporary files of transfers through the PC: {0}"], ["^Descompresión a medias en el PC: ([\\s\\S]*?)$", "Half-finished extraction on the PC: {0}"], ["^Envío a medias: ([\\s\\S]*?)$", "Half-sent: {0}"], ["^Carpeta sin sce_sys \\(¿envío cortado\\?\\): ([\\s\\S]*?)$", "Folder without sce_sys (send cut off?): {0}"], ["^puede que lo use «([\\s\\S]*?)» de la cola$", "\"{0}\" in the queue may be using it"], ["^lo usa «([\\s\\S]*?)» de la cola$", "used by \"{0}\" in the queue"], ["^No pude revisar la consola: ([\\s\\S]*?)$", "Couldn't check the console: {0}"], ["^FFmpeg falló: ([\\s\\S]*?)$", "FFmpeg failed: {0}"], ["^No pude instalar FFmpeg \\(([\\s\\S]*?)\\)\\. Puedes bajarlo de gyan\\.dev\\/ffmpeg y copiar ffmpeg\\.exe en ([\\s\\S]*?)$", "Couldn't install FFmpeg ({0}). You can download it from gyan.dev/ffmpeg and copy ffmpeg.exe into {1}"]]);
Object.assign(I18N_EXACT,{"macOS no deja a PS5 Directo usar la red local. Ve a Ajustes del Sistema → Privacidad y seguridad → Red local, activa «PS5 Directo» (o «python3») y vuelve a abrir el programa.": "macOS isn't letting PS5 Directo use the local network. Go to System Settings → Privacy & Security → Local Network, turn on \"PS5 Directo\" (or \"python3\") and open the program again."});
I18N_RX.push(...[["^macOS\\ no\\ deja\\ a\\ PS5\\ Directo\\ usar\\ la\\ red\\ local\\.\\ Ve\\ a\\ Ajustes\\ del\\ Sistema\\ →\\ Privacidad\\ y\\ seguridad\\ →\\ Red\\ local,\\ activa\\ «PS5\\ Directo»\\ \\(o\\ «python3»\\)\\ y\\ vuelve\\ a\\ abrir\\ el\\ programa\\. \\(([\\s\\S]*?)\\)$", "macOS isn't letting PS5 Directo use the local network. Go to System Settings → Privacy & Security → Local Network, turn on \"PS5 Directo\" (or \"python3\") and open the program again. ({0})"]]);
// --- idioma: español (original) o inglés. Traduce el texto de la página y los mensajes del programa.
`${esc(x.path)}: ${x.changed?`<b>arreglados ${x.changed}</b> de ${x.seen}${x.eboot.length?` (eboot.bin tenía ${esc(x.eboot[0])})`:''}`:'ya estaba bien'}`).join('<br>');
}catch(e){o.textContent=e.message}
};
// --- limpieza
let cleanItems=[];
$('btnScan').onclick=async()=>{
const o=$('cleanOut'); o.textContent='Buscando… (puede tardar unos segundos)';
if(!cleanItems.length){o.textContent='No hay nada que limpiar.';return}
o.innerHTML=cleanItems.map((it,i)=>`<labelclass="chk"><inputtype="checkbox"data-i="${i}"${it.in_use?'':'checked'}><div>${esc(it.label)} — <b>${human(it.size)}</b>${it.in_use?`<divclass="hint">Lo usa "${esc(it.in_use)}" de la cola: si lo borras, esa transferencia tendrá que enviarse otra vez.</div>`:''}</div></label>`).join('')
async function loadDests(){try{const r=await api('/api/places',{});$('destList').innerHTML=r.dests.map(d=>`<optionvalue="${esc(d)}">`).join('')}catch(e){}}
if(webm&&!hid.mp4) tips.push(['mp4','🎬 '+tr('Tus clips están en WEBM: Telegram, WhatsApp y muchas webs no los reproducen directamente. Para que los nuevos se graben en MP4, en la PS5 ve a Ajustes → Capturas y emisiones → Capturas → Formato de los videoclips → Tipo de archivo y elige «Más compatible (MP4)» (con la resolución de grabación en 1920 × 1080; en 4K solo hay WebM).')]);
if(any&&!hid.hdr) tips.push(['hdr','🌗 '+tr('¿Se ven lavados (sin contraste) al compartirlos? Pasa con las capturas y clips grabados en HDR, que el móvil, Telegram o las webs no saben mostrar. Para que se vean bien en todas partes, en la PS5 ve a Ajustes → Capturas y emisiones → Capturas y desactiva «HDR» en el formato de las capturas de pantalla y de los videoclips.')]);
if(webm&&!hid.mp4) tips.push(['mp4','🎬 '+tr('Tus clips están en WEBM: Telegram, WhatsApp y muchas webs no los reproducen directamente. Para que los nuevos se graben en MP4, en la PS5 ve a Ajustes → Capturas y emisiones → Capturas → Formato de los videoclips → Tipo de archivo y elige «Más compatible (MP4)» (con la resolución de grabación en 1920 × 1080; en 4K solo hay WebM). Para los que ya tienes, márcalos y pulsa «Convertir a MP4».')]);
if(any&&!hid.hdr) tips.push(['hdr','🌗 '+tr('¿Se ven lavados (sin contraste) al compartirlos? Pasa con las capturas y clips grabados en HDR, que el móvil, Telegram o las webs no saben mostrar. Para que se vean bien en todas partes, en la PS5 ve a Ajustes → Capturas y emisiones → Capturas y desactiva «HDR» en el formato de las capturas de pantalla y de los videoclips. Los vídeos que ya tienes en HDR, «Convertir a MP4» los deja con colores normales.')]);
if(e.target.tagName==='INPUT'){ e.target.checked?md.sel.add(i):md.sel.delete(i); t.classList.toggle('on',e.target.checked); $('mdDown').disabled=!md.sel.size; $('mdDown').textContent=md.sel.size?tr('Bajar al PC ({0})').replace('{0}',md.sel.size):tr('Bajar al PC'); return }
try{const r=await api('/api/fm/download',{paths}); if(!r.ok) throw new Error(r.error); toast(tr('Bajando {0} archivos a Descargas › PS5 Directo. El progreso sale en «Archivos de la consola».').replace('{0}',paths.length))}catch(e){toast(e.message)} };
// --- convertir a MP4 para compartir
let mdConv={poll:null};
function mdSelVideos(){ return [...md.sel].map(i=>md.items[i]).filter(x=>x&&x.video) }
function mdBtns(){ const n=md.sel.size, v=mdSelVideos().length;
$('mdDown').disabled=!n; $('mdDown').textContent=n?tr('Bajar al PC ({0})').replace('{0}',n):tr('Bajar al PC');
$('mdConv').disabled=!v||mdConv.poll!=null; $('mdConv').textContent='🎬 '+(v?tr('Convertir a MP4 ({0})').replace('{0}',v):tr('Convertir a MP4')); }
if(!confirm(tr('Para convertir hace falta FFmpeg, un programa gratuito de vídeo. Se descarga una sola vez (33 MB, de GitHub) y se guarda en la carpeta de PS5 Directo. ¿Instalarlo y convertir?'))) return }
try{const r=await api('/api/media/convert',{paths:vids.map(x=>x.path)}); if(!r.ok) throw new Error(r.error); mdConvWatch()}catch(e){toast(e.message)} };
function mdConvWatch(){ if(mdConv.poll) return; mdConv.poll=setInterval(mdConvPoll,700); mdConvPoll(); mdBtns() }
async function mdConvPoll(){
let r; try{r=await api('/api/media/convstate',{})}catch(e){return} const c=r.conv, box=$('mdConvBox'); if(!c) return;
const o=$('rsdOut'); o.innerHTML=`<divclass="hint">${esc(tr('Buscando restos en la consola y en el PC… (puede tardar unos segundos)'))}</div>`; $('rsdScan').disabled=true;
try{const r=await api('/api/residue/scan',{}); if(!r.ok) throw new Error(r.error); rsd.items=r.items; rsdPaint(r.warn||[])}catch(e){o.innerHTML=`<divclass="jderr">${esc(tr(e.message))}</div>`}
if(!it.length){ o.innerHTML=w+`<divclass="hint">✔ ${esc(tr('No hay restos: todo limpio.'))}</div>`; return }
const row=(x,i)=>`<labelclass="rsd-row ${x.in_use?'off':''}"><inputtype="checkbox"data-i="${i}"${x.checked?'checked':''}${x.in_use?'disabled':''}><div>${esc(tr(x.label))}<divclass="hint mono"data-noi18n>${esc(x.path)}</div>${x.in_use?`<divclass="hint">${esc(tr('No se puede borrar ahora: {0}').replace('{0}',tr(x.in_use)))}</div>`:''}${x.note?`<divclass="hint">${esc(tr(x.note))}</div>`:''}</div><spanclass="num">${x.size?esc(human(x.size)):'—'}</span></label>`;
o.innerHTML=w+grp('ps5','En la consola')+grp('pc','En el PC')+`<divclass="rsd-foot"><buttonclass="danger small"id="rsdDel"></button><spanclass="hint"id="rsdSum"></span></div>`;
@@ -2607,7 +2671,7 @@ async function openPayloads(highlight){
function plPaint(highlight){
const r=plSt, pm=r.pm||{};
$('plPm').innerHTML=!r.reachable
?`<divclass="pl-box">✖ ${esc(tr('No encuentro la consola en {0}. ¿Está encendida y con el jailbreak hecho? Revisa la IP en Ajustes.').replace('{0}',r.ip||'?'))}</div>`
?(r.mac_lan?`<divclass="pl-box">✖ ${esc(tr(r.mac_lan))}</div>`:`<divclass="pl-box">✖ ${esc(tr('No encuentro la consola en {0}. ¿Está encendida y con el jailbreak hecho? Revisa la IP en Ajustes.').replace('{0}',r.ip||'?'))}</div>`)
:pm.present?`<divclass="pl-box">✔ ${esc(tr('Payload Manager está abierto en la consola: PS5 Directo puede iniciar, instalar y reiniciar los payloads desde aquí.'))}</div>`
:`<divclass="pl-box">⚠ ${esc(tr('Payload Manager no está abierto en la consola. Ábrelo (es la aplicación «Payload Manager» del menú de inicio de la PS5) y pulsa «Volver a mirar»: así PS5 Directo puede iniciar los payloads desde aquí. Mientras tanto, cárgalos desde Payload Manager en la consola.'))}</div>`;
<divclass="gcov">${cov?`<imgloading="lazy"src="${cov}"alt=""data-ph="${ph}"onerror="libImgErr(this)">`:`<divclass="ph">${ph}</div>`}<spanclass="fmtb">${esc(fmt)}</span>${it.size?`<spanclass="sizeb"title="${esc(tr('Lo que ocupa en la consola'))}">${esc(human(it.size))}</span>`:''}</div>
<divclass="gact">${it.kind!=='installed'&&!it.incomplete?`<buttondata-g="check"title="${esc(tr('Si no abre o se cierra al arrancar: revisa la carpeta y busca registros y capturas'))}">${esc(tr('Comprobar'))}</button>`:''}${it.kind==='installed'&&!/^\/user\/app\//.test(it.path)?'':`<buttondata-g="open">${esc(tr('Abrir'))}</button>`}${(it.kind==='folder'||it.kind==='image')&&!it.incomplete&&/^\/(data|mnt)\//.test(it.path)?`<buttondata-g="dl"title="${esc(tr('Copia este título a la carpeta de PS5 Directo en tu PC (sale luego en «En tu PC»)'))}">${esc(tr('Bajar al PC'))}</button>`:''}${it.kind==='folder'&&!it.incomplete?`<buttondata-g="perm"title="${esc(tr('Permisos 777 (si da CE-107750-0)'))}">${esc(tr('Permisos'))}</button>`:''}${it.kind==='installed'?`<spanclass="hint"title="${esc(tr('Instalado por la consola: se desinstala desde su menú, no desde aquí.'))}">${esc(tr('Se gestiona desde la consola'))}</span>`:`<buttonclass="danger"data-g="del">${esc(tr('Borrar'))}</button>`}</div></div></div>`;
:`<span>✔ ${esc(tr('Bajado al PC:'))} <bdata-noi18n>${esc(libDl.name)}</b>. ${esc(tr('Lo tienes en «En tu PC».'))}</span><divclass="spacer"></div><buttonclass="small"id="libDlFolder">${esc(tr('Abrir carpeta'))}</button><buttonclass="small"id="libDlOk">${esc(tr('Cerrar'))}</button>`;
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.