OPL Manager para Linux em SHELL
Publicado por José Lucas (última atualização em 09/09/2020)
[ Hits: 6.000 ]
Homepage: https://github.com/NIDObr
Olá, fiz este script para ser usado em conjunto com o OPL, maiores informações sobre o OPL:
https://www.ps2-home.com/forum/app.php/portal
Ele altera/formata o nome dos jogos para ser usado com o OPL e gerencia as arts dos jogos, funciona com ISOs de PS2 e VCDs de PS1, ainda falta muita coisa.
Poderiam avaliar como o script está? Valeu VOL!
GitHub: https://github.com/NIDObr/Nido_oplmanager
#!/bin/bash #------------------------------------------------------------------ # Author: nido # More: < https://github.com/NIDObr > # Version: 0.1.6-beta 06/09/2020 # Tested on: # GNU bash, versão 4.4.20(1)-release (x86_64-pc-linux-gnu) # Info: OPL MANAGER for linux # License: GPLv3+ #------------------------------------------------------------------ #----------------------------Vars---------------------------------- [ -e "$1" ] && { opl_path="$1" # OPL Path } || { opl_path='/media/hd2_160/samba/opl' # OPL Path #opl_path='/media/sd64/ps2opl' # OPL Path } arts_path='/media/hd2_160/samba/opl/ART/PS2/' # ARTS Path tmp_list="/tmp/${RANDOM}" # TMP file #----------------------------Functions----------------------------- game_manager(){ if $(echo "$1" | egrep -q "([A-Z]{4}\_[0-9]{3}\.[0-9]{2}\.([A-Z|a-z|0-9| |\-]|[\(\)\.\!\'\,]){1,}\.[a-z|A-Z]{3})");then # Check if the name is already formatted return 2 else local id=$(cat "$1" | egrep -a -o -m 1 "([A-Z]{4}\_[0-9]{3}\.[0-9]{2})") # Extract the game ID [ -z "$id" ] && return 3 # Check if you have a valid ID. fi local id_data=$(printf '%s\n' "${id}" | awk -F "_" '{print $2}' | awk -F "." '{print $1$2}') # convert the format used in the database (from: 213.12 to: 21312) local url_db='https://psxdatacenter.com/' # main "database" url local pal_2='psx2/plist2.html' local ntsc_e2='psx2/jlist2.html' local ntsc_u2='psx2/ulist2.html' local pal_1='plist.html' local ntsc_u1='ulist.html' local ntsc_j1='jlist.html' local disc="$3" local cont='1' local pre='0' case "${disc}" in "/DVD/"|"/CD/") for db_region in "${ntsc_u2}" "${ntsc_e2}" "${pal_2}";do local info=$(curl "${url_db}${db_region}" 2>&1 | grep -a -m 1 "${id_data}") # check if the game is in the database if $(printf '%s\n' "$info" | grep -q "INFO");then local info_url=$(printf '%s\n' "${info}" | awk -F "\"" '{print $10}') local name=$(curl "${url_db}/psx2/${info_url}" 2>&1 | grep -A 2 "OFFICIAL TITLE" | grep "nbsp;" | awk -F ";" '{print $2}' | awk -F "<" '{print $1}') echo "$name" break fi local name=$(curl "${url_db}${db_region}" 2>&1 | grep -a -A 1 "${id_data}" | grep "nbsp" | awk -F ";" '{print $2}' | awk -F "<" '{print $1}') # get the name of the database break done ;; "/POPS/") for db_region in "${ntsc_u1}" "${ntsc_j1}" "${pal_1}";do local info=$(curl "${url_db}${db_region}" 2>&1 | grep -a -m 1 "${id_data}") # check if the game is in the database if $(printf '%s\n' "${info}" | grep -q "INFO");then local info_url=$(printf '%s\n' "${info}" | awk -F "\"" '{print $10}') local info_page=$(curl -s "${url_db}${info_url}" 2>&1) local name=$(printf '%s\n' "${info_page}" | grep -A 2 "Official Title" | grep "nbsp;" | awk -F ";" '{print $2}' | awk -F '<' '{print $1}') break fi local name=$(curl "${url_db}${db_region}" 2>&1 | grep -a -A 1 "${id_data}" | grep "nbsp" | awk -F ";" '{print $2}' | awk -F "<" '{print $1}') # get the name of the database break done ;; esac if [ -z "${name}" ];then # If the game is not in the database, just add the ID. printf '%s\n' "Jogo não encontrado no banco de dados: " new_name="${id}.$(echo "${1}" | awk -F "${disc}" '{print $2}' | awk -F "." '{print $1}')" else new_name="${id}.${name}" fi if [ "${disc}" = "/POPS/" ];then # Change the extension. local format="VCD" mkdir "${2}${disc}${new_name}/" else local format="iso" fi printf '%s\n' "After: ` printf "${1}" | awk -F "\/" '{print $7}'`" printf '%s\n' "Before: ${new_name}.${format}" printf '%s\n\n' "ID: ${id}" mv "${1}" "${2}${disc}${new_name}.${format}" # Rename the game. art_manager "${4}" "${2}" "${id}" } art_manager(){ cp "${1}${3}/"* "${2}/ART/" for prefix in "BG" "SCR" "COV" "ICO" "LAB" "LGO";do for artname in $(ls "${2}/ART/" | egrep "${prefix}(\_[0-9]{2})");do pre=$(printf '%s\n' "$artname" | egrep -o "(\_[0-9]{2}\.)") case "${pre}" in "_00.") new_art=$(printf '%s\n' $artname | sed -r s/_00././g) mv ${2}/ART/$artname ${2}/ART/$new_art ;; "_01.") if [ "$prefix" = "BG" ];then rm "${2}/ART/${artname}" else new_art=$(printf '%s\n' $artname | sed -r s/_01./1./g) mv ${2}/ART/$artname ${2}/ART/$new_art fi ;; *)rm "${2}/ART/${artname}";; esac done done } #----------------------------Header-------------------------------- > "${tmp_list}" for disc_type in "/DVD/" "/CD/" "/POPS/";do # Check the directories for games if [ "${disc_type}" = "/POPS/" ];then # If it is PS1 run: for pops in $(ls "${opl_path}${disc_type}"*.VCD | sed -r 's/ /+_/g');do old_name=$(printf '%s\n' "${pops}" | sed -r 's/\+\_/ /g') # Old name game_manager "$old_name" "${opl_path}" "${disc_type}" "${arts_path}" # Call main function done else for dvd in $(ls "${opl_path}${disc_type}"*.iso | sed -r 's/ /+_/g');do # If it is PS2 run: old_name=$(printf '%s\n' "${dvd}" | sed -r 's/\+\_/ /g') # Old name game_manager "$old_name" "${opl_path}" "${disc_type}" "${arts_path}" # Call main function done fi done rm "${tmp_list}"
Sed: Numero Par ou Impar de Linhas
Instalar Mplayer e todos os Codecs Facilmente
Organização de pastas para trabalhos topográficos.
Um jogo "jokenpo" usando shell script
Atualizar o macOS no Mac - Opencore Legacy Patcher
Crie alias para as tarefas que possuam longas linhas de comando - bash e zsh
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Instalando Zoom Client no Ubuntu 24.04 LTS
Instalando Zoom Client no Fedora 40
Instalando Navegador Firefox no Debian 12
Bloqueando propagandas no Youtube e outros sites com o uBlocker Origin
Servidor Samba 4.15.13 AD-DC (3)
Não consigo atualizar minha GPU (0)
Sistema da Coréia do Norte - Red Star OS (56)