Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
utilisateurs:slyfox:scripts:accueil [18/08/2018 23:24] Slyfox [Introduction] |
utilisateurs:slyfox:scripts:accueil [01/04/2024 11:52] Slyfox supprimée |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Slymedia ====== | + | ====== Samsung supprimer APK constructeur ====== |
- | + | ||
- | * Objet : Script Slymedia | + | |
- | * Niveau requis : {{tag>débutant}} | + | |
- | * Commentaires : - | + | |
- | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | + | |
- | * Création par [[user>Slyfox]] 14.08.2018 | + | |
- | * Suivi : {{tag>à-placer}} | + | |
- | + | ||
- | ===== Introduction ===== | + | |
- | Slymedia est un script (amateur) qui permet de convertir les fichiers vidéo et audio. | + | |
===== Installation ===== | ===== Installation ===== | ||
- | Paquets pour le fonctionne du script: | + | <code root>apt install android-tools-adb</code> |
- | <code root>apt update | ||
- | apt upgrade | ||
- | apt install aptitude | ||
- | aptitude install ffmpeg yad flac vorbis-tools eyed3 kid3-cli</code> | ||
- | ===== Script ===== | ||
- | <note important>En cours d'écriture, peut fonctionner que partiellement.</note> | ||
- | <note tip>Version du: 17.08.2018</note> | ||
- | <code user>#! /bin/bash | + | ===== Configurer le téléphone ===== |
- | + | Pour activer le mode développeur:\\ | |
- | # Paquets à installer: ffmpeg yad flac vorbis-tools eyed3 kid3-cli | + | Paramètres \\ |
- | # Version: 20180817 | + | Paramètres système \\ |
- | + | « À propos du téléphone »\\ | |
- | #=========================================================================================================== | + | Tapoter 7 fois sur le « numéro de build »\\ |
- | function YADMAIN() | + | Le menu « options pour les développeurs » apparaît dans les paramètres système.\\ |
- | { | + | Activer le «debogage USB« |
- | yadMain=$(yad --form \ | + | |
- | --geometry="640x720" \ | + | |
- | --borders="20" \ | + | |
- | --title "SlyMedia" \ | + | |
- | --item-separator="!" \ | + | |
- | --columns=1 \ | + | |
- | --scroll \ | + | |
- | --field=" ":LBL " " \ | + | |
- | --field="<b>Profil</b>":CB "${profile}!Audio FLAC!Audio vorbis!Audio aac!Audio mp3!Vidéo mkv - x264 - vorbis!Vidéo mkv - x264 - aac!Vidéo mkv - x264 - mp3!Vidéo mkv - x265 - vorbis!Vidéo mkv - x265 - aac!Vidéo mkv - x265 - mp3" \ | + | |
- | --field=" ":LBL " " \ | + | |
- | --field="<b>Qualité</b>":CB "${quality}!Excellente!Elevée!Moyenne!Minimum!Faible" \ | + | |
- | --field=" ":LBL " " \ | + | |
- | --field="<b>Dossier destination</b>":DIR "${dirOut}" \ | + | |
- | --field=" ":LBL " " \ | + | |
- | --field="":LBL "" \ | + | |
- | --field="<b>Source</b>":LBL " " \ | + | |
- | --field=" ":LBL " " \ | + | |
- | --button="Quitter!gtk-quit!:1" \ | + | |
- | --button="Options par défaut!gtk-refresh!:3" \ | + | |
- | --button="Préférences!gtk-preferences!:2" \ | + | |
- | --button="Source!gtk-file!:4" \ | + | |
- | --button="Lancer conversion!gtk-convert!:0" \ | + | |
- | "${TabYadStream[@]}") | + | |
- | + | ||
- | # Status de sortie Yad | + | |
- | status="$?" | + | |
- | + | ||
- | # Récupération variables | + | |
- | profile=$(awk -F [\|] '{print $2}' <<< "${yadMain}") | + | |
- | quality=$(awk -F [\|] '{print $4}' <<< "${yadMain}") | + | |
- | dirOut=$(awk -F [\|] '{print $6}' <<< "${yadMain}") | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function YADPREFERENCE() | + | |
- | { | + | |
- | # Sélection du ou des fichiers source | + | |
- | yadPreference=$(yad --form \ | + | |
- | --title "SlyMedia" \ | + | |
- | --geometry="640x720" \ | + | |
- | --borders="20" \ | + | |
- | --field="<b>Préférences vidéo</b>":LBL " " \ | + | |
- | --field="Définition de la vidéo":CB "${definition}!Identique à la source!3840x2160 (UHD 16:9)!1920x1080 (FULL-HD 16:9)!1280x720 (HD 16:9)!1024x576 (16:9)!768x432 (16:9)!512x288 (16:9)!256x144 (16:9)!720x576 (SD PAL)!720x480 (SD NTSC)!640x480 (4:3)!320x240 (4:3)!1024x768 (4:3)!1280x960 (4:3)!1280x800 (16:10)!1440x900 (16:10)!1680x1050 (16:10)!1920x1200 (16:10)!2560x1600 (16:10)" \ | + | |
- | --field=" ":LBL " " \ | + | |
- | --field=" ":LBL " " \ | + | |
- | --field=" ":LBL " " \ | + | |
- | --field="<b>Préférences audio</b>":LBL " " \ | + | |
- | --field="Langue audio préférée":CB "${langAudio}!Toutes les langues!Aucune!Français!Allemand!Anglais!Arabe!Espagnol!Espéranto!Italien!Japonais!Latin!Luxembourgeois!Néerlandais!Portugais!Romanche!Russe" \ | + | |
- | --field=" ":LBL " " \ | + | |
- | --field="Débit binaire":CB "${typeRate}!VBR!CBR" \ | + | |
- | --field=" ":LBL " " \ | + | |
- | --field=" ":LBL " " \ | + | |
- | --field=" ":LBL " " \ | + | |
- | --field="<b>Préférences sous-titre</b>":LBL " " \ | + | |
- | --field="Langue sous-titre préférée":CB "${langSub}!Toutes les langues!Aucune!Français!Allemand!Anglais!Arabe!Espagnol!Espéranto!Italien!Japonais!Latin!Luxembourgeois!Néerlandais!Portugais!Romanche!Russe" \ | + | |
- | --field=" ":LBL " " \ | + | |
- | --field=" ":LBL " " \ | + | |
- | --field=" ":LBL " " \ | + | |
- | --field="<b>Options</b>":LBL " " \ | + | |
- | --field="Supprimer tous les tags et images cover":CHK "${metadata}" \ | + | |
- | --field="Ne pas encoder si même codec que l'original":CHK "${nocopy}" \ | + | |
- | --field="Dossier source":DIR "${dirIn}" \ | + | |
- | --button="gtk-quit:1" \ | + | |
- | --button="gtk-cancel:2" \ | + | |
- | --button="gtk-ok:0") | + | |
- | + | ||
- | # Status de sortie Yad | + | |
- | status="$?" | + | |
- | + | ||
- | # Récupération variables | + | |
- | definition=$(awk -F [\|] '{print $2}' <<< "${yadPreference}") | + | |
- | langAudio=$(awk -F [\|] '{print $7}' <<< "${yadPreference}") | + | |
- | typeRate=$(awk -F [\|] '{print $9}' <<< "${yadPreference}") | + | |
- | langSub=$(awk -F [\|] '{print $14}' <<< "${yadPreference}") | + | |
- | metadata=$(awk -F [\|] '{print $19}' <<< "${yadPreference}") | + | |
- | nocopy=$(awk -F [\|] '{print $20}' <<< "${yadPreference}") | + | |
- | dirIn=$(awk -F [\|] '{print $21}' <<< "${yadPreference}") | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function YADSOURCE() | + | |
- | { | + | |
- | IFS=$"|" | + | |
- | + | ||
- | yadSource=$(yad --list \ | + | |
- | --radiolist \ | + | |
- | --title="Slymedia" \ | + | |
- | --text="Choississez une source" \ | + | |
- | --print-all \ | + | |
- | --geometry="320x300" \ | + | |
- | --borders="20" \ | + | |
- | --center \ | + | |
- | --button="gtk-quit:1" \ | + | |
- | --button="gtk-cancel:2" \ | + | |
- | --button="gtk-ok:0" \ | + | |
- | --column="" \ | + | |
- | --column="Type de source" \ | + | |
- | "FALSE" "Fichier avec analyse" \ | + | |
- | "TRUE" "Fichier" \ | + | |
- | "FALSE" "DVD" \ | + | |
- | "FALSE" "CD" \ | + | |
- | "FALSE" "DDL") | + | |
- | + | ||
- | # Status de sortie Yad | + | |
- | status="$?" | + | |
- | + | ||
- | # Récupération variables | + | |
- | source=$(awk -F [\|] '/TRUE/ {print $2}' <<< "${yadSource}") | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function YADFILE() | + | |
- | { | + | |
- | # Sélection du ou des fichiers source | + | |
- | fileIn=$(yad --file \ | + | |
- | --multiple \ | + | |
- | --title "SlyMedia" \ | + | |
- | --geometry="640x720" \ | + | |
- | --borders="20" \ | + | |
- | --separator="\n" \ | + | |
- | --center \ | + | |
- | --file-filter="Fichier media | *mkv *.ogg *.mp4 *.avi *.vob *.flac *.mp3 *.m4a" \ | + | |
- | --file-filter "Tous | *" \ | + | |
- | --filename="${dirIn}" \ | + | |
- | --button="gtk-quit:1" \ | + | |
- | --button="gtk-cancel:2" \ | + | |
- | --button="gtk-ok:0") | + | |
- | + | ||
- | # Status de sortie Yad | + | |
- | status="$?" | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function YADPROGRESS() | + | |
- | { | + | |
- | yad --progress \ | + | |
- | --title "SlyEditImage ${version}" \ | + | |
- | --geometry="550x300" \ | + | |
- | --borders="25" \ | + | |
- | --auto-close \ | + | |
- | --auto-kill \ | + | |
- | --button="gtk-media-stop:1" | + | |
- | yadStatus="$?" | + | ===== Commandes ===== |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function CONFIGURATION() | + | |
- | { | + | |
- | # Création du dossier .slymedia | + | |
- | dirSylmedia="/home/$USER/.slymedia" | + | |
- | [[ ! -d "${dirSylmedia}" ]] && mkdir "${dirSylmedia}" | + | |
- | + | ||
- | # Suppression des anciens dossiers temporaires | + | |
- | rm -rf "${dirSylmedia}"/tmp* | + | |
- | + | ||
- | # Création du dossier temporaire | + | |
- | dossierTmp="$(mktemp -d "${dirSylmedia}/tmp-XXXXXXXXXXX")" | + | |
- | + | ||
- | # Création du fichier de configurations | + | |
- | fileConfig="${dirSylmedia}/config.txt" | + | |
- | + | ||
- | [[ ! -f "${fileConfig}" ]] && CONFIGDEFAUT | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function CONFIGDEFAUT() | + | |
- | { | + | |
- | # Options par défaut | + | |
- | echo -e "profile=\"Vidéo mkv - x264 - vorbis\"\nquality=\"Elevée\"\ndirOut=\"${HOME}\"\ndefinition=\"Identique à la source\"\nlangAudio=\"Toutes les langues\"\ntypeRate=\"VBR\"\nlangSub=\"Toutes les langues\"\nmetadata=\"FALSE\"\nnocopy=\"FALSE\"\ndirIn=\"${HOME}/\"" > "${fileConfig}" | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function SAVE() | + | |
- | { | + | |
- | # Sauvegarde variables dans fichier de configuaration utilisateur | + | |
- | echo -e "profile=\"${profile}\"\nquality=\"${quality}\"\ndirOut=\"${dirOut}\"\ndefinition=\"${definition}\"\nlangAudio=\"${langAudio}\"\ntypeRate=\"${typeRate}\"\nlangSub=\"${langSub}\"\nmetadata=\"${metadata}\"\nnocopy=\"${nocopy}\"\ndirIn=\"${dirIn}\"" > "${fileConfig}" | + | |
- | + | ||
- | echo "profile: ${profile}" | + | |
- | echo "quality: ${quality}" | + | |
- | echo "dirOut: ${dirOut}" | + | |
- | echo "definition: ${definition}" | + | |
- | echo "langAudio: ${langAudio}" | + | |
- | echo "typeRate: ${typeRate}" | + | |
- | echo "langSub: ${langSub}" | + | |
- | echo "metadata: ${metadata}" | + | |
- | echo "nocopy: ${nocopy}" | + | |
- | echo "dirIn: ${dirIn}" | + | |
- | echo "==============================================" | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function LANGUE() | + | |
- | { | + | |
- | if [[ "${lang}" == "fre" ]] || [[ "${lang}" == "fra" ]] || [[ "${lang}" == "fr" ]]; then | + | |
- | language="Français" | + | |
- | languageISO="fre" | + | |
- | + | ||
- | elif [[ "${lang}" == "gre" ]] || [[ "${lang}" == "deu" ]] || [[ "${lang}" == "de" ]]; then | + | |
- | language="Allemand" | + | |
- | languageISO="deu" | + | |
- | + | ||
- | elif [[ "${lang}" == "eng" ]] || [[ "${lang}" == "en" ]]; then | + | |
- | language="Anglais" | + | |
- | languageISO="eng" | + | |
- | + | ||
- | + | ||
- | elif [[ "${lang}" == "ara" ]] || [[ "${lang}" == "ar" ]]; then | + | |
- | language="Arabe" | + | |
- | languageISO="ara" | + | |
- | + | ||
- | elif [[ "${lang}" == "bre" ]] || [[ "${lang}" == "br" ]]; then | + | |
- | language="Breton" | + | |
- | languageISO="bre" | + | |
- | + | ||
- | elif [[ "${lang}" == "cat" ]] || [[ "${lang}" == "ca" ]]; then | + | |
- | language="Catalan" | + | |
- | languageISO="cat" | + | |
- | + | ||
- | elif [[ "${lang}" == "chi" ]] || [[ "${lang}" == "zho" ]] || [[ "${lang}" == "zh" ]]; then | + | |
- | language="Chinois" | + | |
- | languageISO="chi" | + | |
- | + | ||
- | elif [[ "${lang}" == "kor" ]] || [[ "${lang}" == "ko" ]]; then | + | |
- | language="Coréen" | + | |
- | languageISO="kor" | + | |
- | + | ||
- | elif [[ "${lang}" == "cos" ]] || [[ "${lang}" == "co" ]]; then | + | |
- | language="Corse" | + | |
- | languageISO="cos" | + | |
- | + | ||
- | elif [[ "${lang}" == "hat" ]] || [[ "${lang}" == "ht" ]]; then | + | |
- | language="Créole_haïtien" | + | |
- | languageISO="hat" | + | |
- | + | ||
- | elif [[ "${lang}" == "hat" ]] || [[ "${lang}" == "ht" ]]; then | + | |
- | language="Créole_haïtien" | + | |
- | languageISO="hat" | + | |
- | + | ||
- | elif [[ "${lang}" == "rcf" ]] || [[ "${lang}" == "rc" ]]; then | + | |
- | language="Créole_Réunionnais" | + | |
- | languageISO="rcf" | + | |
- | + | ||
- | elif [[ "${lang}" == "gla" ]] || [[ "${lang}" == "gd" ]]; then | + | |
- | language="Écossais" | + | |
- | languageISO="gla" | + | |
- | + | ||
- | elif [[ "${lang}" == "spa" ]] || [[ "${lang}" == "es" ]]; then | + | |
- | language="Espagnol" | + | |
- | languageISO="spa" | + | |
- | + | ||
- | elif [[ "${lang}" == "epo" ]] || [[ "${lang}" == "eo" ]]; then | + | |
- | language="Espéranto" | + | |
- | languageISO="epo" | + | |
- | + | ||
- | elif [[ "${lang}" == "fin" ]] || [[ "${lang}" == "fi" ]]; then | + | |
- | language="Finnois" | + | |
- | languageISO="fin" | + | |
- | + | ||
- | elif [[ "${lang}" == "glg" ]] || [[ "${lang}" == "gl" ]]; then | + | |
- | language="Galicien" | + | |
- | languageISO="glg" | + | |
- | + | ||
- | + | ||
- | elif [[ "${lang}" == "wel" ]] || [[ "${lang}" == "cym" ]] || [[ "${lang}" == "cy" ]]; then | + | |
- | language="Gallois" | + | |
- | languageISO="wel" | + | |
- | + | ||
- | elif [[ "${lang}" == "gre" ]] || [[ "${lang}" == "ell" ]] || [[ "${lang}" == "el" ]]; then | + | |
- | language="Grec" | + | |
- | languageISO="gre" | + | |
- | + | ||
- | elif [[ "${lang}" == "heb" ]] || [[ "${lang}" == "he" ]]; then | + | |
- | language="Hébreu" | + | |
- | languageISO="heb" | + | |
- | + | ||
- | elif [[ "${lang}" == "hin" ]] || [[ "${lang}" == "hi" ]]; then | + | |
- | language="Hindi" | + | |
- | languageISO="hin" | + | |
- | + | ||
- | elif [[ "${lang}" == "hun" ]] || [[ "${lang}" == "hu" ]]; then | + | |
- | language="Hongrois" | + | |
- | languageISO="hun" | + | |
- | + | ||
- | elif [[ "${lang}" == "gle" ]] || [[ "${lang}" == "ga" ]]; then | + | |
- | language="Irlandais" | + | |
- | languageISO="gle" | + | |
- | + | ||
- | elif [[ "${lang}" == "ice" ]] || [[ "${lang}" == "isl" ]] || [[ "${lang}" == "is" ]]; then | + | |
- | language="Islandais" | + | |
- | languageISO="ice" | + | |
- | + | ||
- | elif [[ "${lang}" == "ita" ]] || [[ "${lang}" == "it" ]]; then | + | |
- | language="Italien" | + | |
- | languageISO="ita" | + | |
- | + | ||
- | elif [[ "${lang}" == "jpn" ]] || [[ "${lang}" == "jp" ]]; then | + | |
- | language="Japonais" | + | |
- | languageISO="jpn" | + | |
- | + | ||
- | elif [[ "${lang}" == "lat" ]] || [[ "${lang}" == "la" ]]; then | + | |
- | language="Latin" | + | |
- | languageISO="lat" | + | |
- | + | ||
- | elif [[ "${lang}" == "ltz" ]] || [[ "${lang}" == "la" ]]; then | + | |
- | language="Luxembourgeois" | + | |
- | languageISO="ltz" | + | |
- | + | ||
- | elif [[ "${lang}" == "dut" ]] || [[ "${lang}" == "nld" ]] || [[ "${lang}" == "lb" ]]; then | + | |
- | language="Néerlandais" | + | |
- | languageISO="dut" | + | |
- | + | ||
- | elif [[ "${lang}" == "nor" ]] || [[ "${lang}" == "no" ]]; then | + | |
- | language="Norvégien" | + | |
- | languageISO="nor" | + | |
- | + | ||
- | elif [[ "${lang}" == "por" ]] || [[ "${lang}" == "pt" ]]; then | + | |
- | language="Portugais" | + | |
- | languageISO="por" | + | |
- | + | ||
- | elif [[ "${lang}" == "roh" ]] || [[ "${lang}" == "rm" ]]; then | + | |
- | language="Romanche" | + | |
- | languageISO="roh" | + | |
- | + | ||
- | elif [[ "${lang}" == "rus" ]] || [[ "${lang}" == "ru" ]]; then | + | |
- | language="Russe" | + | |
- | languageISO="rus" | + | |
- | + | ||
- | elif [[ "${lang}" == "swe" ]] || [[ "${lang}" == "sv" ]]; then | + | |
- | language="Suédois" | + | |
- | languageISO="swe" | + | |
- | + | ||
- | else | + | |
- | language="Inconnu" | + | |
- | languageISO="und" | + | |
- | fi | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function STREAM_SIMPLE() | + | |
- | { | + | |
- | + | ||
- | [[ -f "${dossierTmp}/stream.txt" ]] && rm "${dossierTmp}/stream.txt" | + | |
- | TabYadStream=() | + | |
- | IFS=$'\n' | + | |
- | + | ||
- | + | ||
- | # Initialisation | + | |
- | nbr="0" | + | |
- | pourcent="0" | + | |
- | timeGo="$(date +%s)" | + | |
- | # Nombre de fichier | + | Lancer adb |
- | nbrFichier=$(awk '/./ {print}' <<< "${fileIn}" | wc -l) | + | <code root>adb start-server</code> |
- | # Calcul le pourcent par fichier | + | Lister les périphériques connectés au pc |
- | pourcentFichier=$(echo "scale=15; 100/${nbrFichier}" | bc) | + | <code root>adb devices</code> |
+ | ===== Suppression APK ===== | ||
- | for i in ${fileIn}; do | + | <code user> #! /bin/bash |
- | # Titre et durée | ||
- | #streamFormat=$(ffprobe -i "${i}" -hide_banner -v quiet -show_entries format=bit_rate -of csv=s="|") | ||
- | #rateTotal=$(ffmpeg -y -i "${i}" 2>&1 | awk '/Duration:/ {printf "%s\n" ,$(NF-1)}') | ||
- | # Mise en mémoire dans tableau TabYadStream | + | ########################### |
- | TabYadStream=(${TabYadStream[@]} --field="<b>TITRE:</b> $(basename "${i}")":LBL " ") | + | # Phone apps and services # |
+ | ########################### | ||
+ | adb shell "cmd package install-existing com.android.stk" # SIM toolkit | ||
+ | adb shell "cmd package install-existing com.android.stk2" # SIM toolkit (maybe for dual-sim devices) | ||
+ | adb shell "cmd package install-existing com.sec.android.app.simsettingmgr" # SIM card manager, maybe required, contains configuration and settings for handling dual SIM (give a SIM an icon, a name, and so on) | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.smartcallprovider" # The 4th tab in the Phone app for 'local places' | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.vsim.ericssonnsds.webapp" # NSDSWebApp. The Non Sim Device Solution (NSDS) is linked to VoLTE and VoWifi (Wifi Calling). NSDS allows connecting non sim devices to IMS core: https://uk.linkedin.com/in/hemant-kumar-dewnarain-2b779679 | ||
+ | adb shell "pm uninstall -k --user 0 com.android.cts.ctsshim" # Probably linked to accessibility feature "Captioned Telephone Service. No internet access required | ||
+ | adb shell "pm uninstall -k --user 0 com.android.cts.priv.ctsshim" # Probably linked to accessibility feature "Captioned Telephone Service. No internet access required | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.crane" # Phone, with extended features: share rich data (doodles, location, text messages). Couldn't find a way to access it from an official interface | ||
+ | adb shell "pm uninstall -k --user 0 com.hiya.star" # Possibly linked to the Phone app "Caller ID and spam protection service" as well as the "Places" feature | ||
+ | adb shell "cmd package install-existing com.sec.ims" # IMS (IP Multimedia Subsystem) is linked to VoLTE, WiFi Calling and Rich Communication Services (RCS): https://en.wikipedia.org/wiki/IP_Multimedia_Subsystem | ||
+ | adb shell "cmd package install-existing com.sec.imslogger" # ImsLogger (see above for IMS) | ||
+ | adb shell "cmd package install-existing com.sec.imsservice" # IMS Service (see above for IMS) | ||
+ | adb shell "cmd package install-existing com.samsung.advp.imssettings" # Seem linked to IMS | ||
+ | adb shell "cmd package install-existing com.sec.epdg" # ePDG (evolved packet data gateway) could be linked to WiFi Calling and possible VoLTE: http://www.oracle.com/us/industries/communications/wifi-calling-epdg-wp-2874668.pdf | ||
+ | ############### | ||
+ | # System apps # | ||
+ | ############### | ||
+ | adb shell "cmd package install-existing com.samsung.accessibility" # Accessibility settings (useful for apps creating virtual buttons such as a pie-menu) | ||
+ | adb shell "cmd package install-existing com.samsung.android.app.soundpicker" # The ringtone picker provided by the system for any Alarm app | ||
+ | adb shell "cmd package install-existing com.samsung.android.allshare.service.fileshare" # Wi-Fi Direct (bluetooth-wifi sharing of files) | ||
+ | adb shell "cmd package install-existing com.samsung.android.allshare.service.mediashare" # Nearby service, maybe related to the previous wifi direct fileshare | ||
- | # Nom du fichier | + | # Ant+ wireless technology |
- | fileNameExt=$(basename "${i}") | + | adb shell "pm uninstall -k --user 0 com.dsi.ant.plugins.antplus" # ANT+ Plugins Service |
- | fileName="${fileNameExt%.*}" | + | adb shell "pm uninstall -k --user 0 com.dsi.ant.sample.acquirechannels" # ANT + DUT |
+ | adb shell "pm uninstall -k --user 0 com.dsi.ant.server" # ANT+ HAL service | ||
+ | adb shell "pm uninstall -k --user 0 com.dsi.ant.service.socket" # ANT Radio Service | ||
- | # Envoi données vers YADPROGRESS | + | ################################ |
- | pourcent=$(echo "scale=15; (${pourcent}+${pourcentFichier})" | bc) | + | # Samsung specific system apps # |
+ | ################################ | ||
+ | adb shell "cmd package install-existing com.samsung.android.lool" # The Setting entry "Device Care" with battery, storage, memory, and security | ||
+ | adb shell "cmd package install-existing com.samsung.android.app.aodservice" # Always-on-Display, handles most of the lockscreen | ||
+ | adb shell "cmd package install-existing com.samsung.android.MtpApplication" # PC connection doesn't work well without this helper utility | ||
+ | adb shell "cmd package install-existing com.wssyncmldm" # Software update: doesn't check OTA updates without | ||
+ | adb shell "cmd package install-existing com.sec.android.emergencymode.service" # EmergencyManagerService, linked to the battery's "Maximum power saving" mode | ||
+ | adb shell "cmd package install-existing com.sec.android.sdhms" # Samsung Device Health Manager Service, most likely linked to "battery habits" analysis | ||
- | ((nbr+=1)) | + | adb shell "pm uninstall -k --user 0 com.sec.android.cover.ledcover" # LED Cover Service |
- | # Calcul temps restant | + | adb shell "pm uninstall -k --user 0 com.sec.location.nsflp2" # Samsung Location SDK |
- | timeT="$(date +%s)" | + | adb shell "pm uninstall -k --user 0 com.samsung.android.location" # slocation |
- | timeRemainingS=$(echo "scale=15; ((${timeT}-${timeGo})*${nbrFichier}/${nbr})-(${timeT}-${timeGo})" | bc | awk -F"." '{print $1}') | + | |
- | timeRemainingHMS=$(date +%T -d "0000-01-01 ${timeRemainingS} seconds") | + | |
- | # Envoi données à YADPROGRESS | + | # Maybe Knox-related |
- | echo "${pourcent}" | + | adb shell "cmd package install-existing com.samsung.ucs.agent.boot" # bootagent, probably linked to "eSE UCS Plugin" below, probably required by Knox |
- | echo -e "\n#Chargement ${nbr} fichiers sur ${nbrFichier} - Temps restant environ: ${timeRemainingHMS}" | + | adb shell "cmd package install-existing com.samsung.ucs.agent.ese" # eSE UCS Plugin, eSE is for "embedded SEcurity", probably required by Knox |
+ | adb shell "cmd package install-existing com.samsung.android.smartmirroring" # Smart View, for screen mirroring and Chromecast | ||
+ | ################################################## | ||
+ | # Samsung user apps, customization, and services # | ||
+ | ################################################## | ||
+ | adb shell "cmd package install-existing com.samsung.android.contacts" # Samsung "Contacts" app | ||
+ | adb shell "cmd package install-existing com.sec.android.app.myfiles" # My Files, file browser | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.video" # Video, the default video player | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.themecenter" # Samsung Themes | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.themestore" # Galaxy Themes | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.samsungapps" # Galaxy Store | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.sbrowser" # Samsung Galaxy Browser | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.rubin.app" # Customization Service | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.daydream.customization" # Some daydream VR customization capability? | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.chromecustomizations" # Chrome browser customization | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.scloud" # Samsung Cloud | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.mateagent" # Samsung Galaxy Friends | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.mobileservice" # Samsung Experience Service, handling the Samsung account and experience | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.weather" | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.daemonapp" # Weather | ||
+ | # Samsing SmartSwitch | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.smartswitchassistant" # Samsung SmartSwitch | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.easyMover" # Related Smart Switch | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.easyMover.Agent" # Smart Switch Agent | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.shortcutbackupservice" # ShortcutBNR, linked to SmartSwitch Samsung Cloud features | ||
+ | # Equalizers | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.soundalive" # SoundAlive, responsible for Dobly Atmos and other equalizer stuff (accessible from the Settings app) | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.hearingadjust" # Adapt Sound, the sound equalizer in Accessibility services | ||
+ | # SmartThings | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.beaconmanager" # SmartThings | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.ststub" # SmartThings | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.easysetup" # SmartThings | ||
- | done | + | # Samsung Health |
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.shealth" # Samsung Health | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.service.health" # Health Service, from Samsung | ||
+ | # Widgets | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.widgetapp.easymodecontactswidget" # Favorite Contacts, probably the favourite contacts when enabling the "simple use" senior mode | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.widgetapp.samsungapps" # Galaxy Essentials Widget | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.widgetapp.webmanual" # User manual | ||
+ | ################################################ | ||
+ | # Mandatory Knox apps, and other security apps # | ||
+ | ################################################ | ||
+ | adb shell "cmd package install-existing com.samsung.android.knox.containeragent" # Knox thing that gets re-enabled at update | ||
+ | adb shell "cmd package install-existing com.samsung.android.knox.containercore" # Knox thing that gets re-enabled at update | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.knox.analytics.uploader" # Knox Analytics Uploader | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.knox.containerdesktop" # KnowContainerDesktop | ||
+ | adb shell "pm uninstall -k --user 0 com.knox.vpn.proxyhandler" # Samsung's Work profile for Entreprise proxy | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.enterprise.knox.attestation" # Knox-related | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.enterprise.knox.cloudmdm.smdms" # Knox Enrollment Service | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.knox.securefolder" # Secure Folder | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.knox.securefolder.setuppage" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.klmsagent" # KLMS Agent, most likely linked to Knox | ||
+ | adb shell "pm uninstall -k --user 0 com.trustonic.teeservice" # TeeService, for Samsung Pay? Trustronic "Trusted Execution Environment": https://www.trustonic.com/news/blog/devices-trustonic-tee/ | ||
+ | adb shell "pm uninstall -k --user 0 com.trustonic.tuiservice" # TuiService, for Samsung Pay? Trustronic "Trusted User Interfaces": https://www.trustonic.com/news/blog/devices-trustonic-tee/ | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.spay" # Samsung Pay | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.spayfw" # Samsung PaymentFramework | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.samsungpass" # Samsung Pass | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.samsungpassautofill" # Autofill with Samsung Pass | ||
+ | ############################### | ||
+ | # Samsung camera related apps # | ||
+ | ############################### | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.camera" # Samsung Camera | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.app.interactivepanoramaviewer" # Interactive panorama viewer (taken with the Samsung Camera) | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.app.motionpanoramaviewer" # Motion panorama viewer (taken with the Samsung Camera) | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.app.selfmotionpanoramaviewer" # Self-motion panorama viewer (taken with the Samsung Camera) | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.app.highlightplayer" # Useful for the Video editor | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.app.slowmotion" # Slow-motion viewer, taken with the Samsung Camera | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.gallery3d" # Samsung Gallery | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.mimage.photoretouching" # Photo editor | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.provider.stickerprovider" # If disabled, the "AR Emoji" button crashed the Camera app | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.vepreload" # Video Editor | ||
+ | # Gallery's recognition and identification of content (same "shared user id") | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.cmh" # CMHProvider (CMHProvider.apk), required by the Gallery. Responsible of face recognition in the Gallery | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.mlp" # mlp (MediaLearningPlatform.apk), has permissions linked to cmh, and visionintelligence | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.storyservice" # Gallery stories (StoryService.apk), creates stories from the user photos and videos | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.faceservice" # (FaceService.apk) | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.ipservice" # (IPService.apk) | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.app.camera.sticker.facear.preload" # Default live sticker | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.app.camera.sticker.stamp.preload" # Stamps | ||
- | for i in "${TabYadStream[@]}"; do | + | ################ |
- | echo "$i" >>"${dossierTmp}/yadStream.txt" | + | # Samsung Edge # |
- | done | + | ################ |
- | } | + | adb shell "pm uninstall -k --user 0 com.cnn.mobile.android.phone.edgepanel" # CNN edge app |
- | #=========================================================================================================== | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.appsedge" # Apps edge |
- | function STREAM() | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.clipboardedge" # Clipboard edge |
- | { | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.cocktailbarservice" # Edge screen |
- | [[ -f "${dossierTmp}/stream.txt" ]] && rm "${dossierTmp}/stream.txt" | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.sbrowseredge" # Samsung Internet panel |
- | touch "${dossierTmp}/yadStream.txt" | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.taskedge" # Tasks edge |
- | TabYadStream=() | + | adb shell "pm uninstall -k --user 0 com.samsung.android.service.peoplestripe" # People edge |
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.widgetapp.yahooedge.finance" # Finance, edge widget | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.widgetapp.yahooedge.sport" # Sport, edge widget | ||
- | # Initialisation | + | ################# |
- | nbr="0" | + | # Samsung Bixby # |
- | pourcent="0" | + | ################# |
- | timeGo="$(date +%s)" | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.spage" # Bixby Home |
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.app.settings.bixby" # SettingsBixby | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.bixby.agent" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.bixby.agent.dummy" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.bixby.es.globalaction" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.bixby.plmsync" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.bixby.service" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.bixby.voiceinput" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.bixby.wakeup" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.svoice" # SVoice | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.svoice.sync" # Voice Service, S Voice is the ancestor of Bixby | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.systemui.bixby" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.systemui.bixby2" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.visionintelligence" # Bixby Vision | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.visionprovider" # VisionProvider, maybe linked to Bixby? | ||
- | # Nombre de fichier | + | ############### |
- | nbrFichier=$(awk '/./ {print}' <<< "${fileIn}" | wc -l) | + | # Samsung DeX # |
+ | ############### | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.desktopsystemui" # Samsung DeX System UI | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.desktoplauncher" # Samsung DeX Home | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.desktopcommunity" # Samsung DeX community | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.desktopmode.uiservice" # Samsung DeX | ||
- | # Calcul le pourcent par fichier | + | ####################################### |
- | pourcentFichier=$(echo "scale=15; 100/${nbrFichier}" | bc) | + | # Hidden apps (debug and diagnostics) # |
+ | ####################################### | ||
- | IFS=$'\n' | + | # Dialable apps |
+ | adb shell "cmd package install-existing com.sec.android.app.factorykeystring" # DeviceKeyString (dial *#0283# to open audio LoopbackTest control, dial *#2663# for TSP firmware update) | ||
+ | adb shell "cmd package install-existing com.sec.android.app.hwmoduletest" # HwModuleTest, a hardware test app (dial *#0*# to open). Fun low-level stuff to see in there | ||
+ | adb shell "cmd package install-existing com.sec.android.app.servicemodeapp" # SysDump, low-level debugging and diagnostics tools (dial *#9900# to open) | ||
+ | adb shell "cmd package install-existing com.sec.android.RilServiceModeApp" # Service mode RIL, for diagnostics (dial *#0011# for modem connectivity info, *#9090# for diagnostics control) | ||
+ | adb shell "cmd package install-existing com.sec.factory.camera" # Camera Test (dial *#34971539# to open CameraFirmware Standard) | ||
+ | adb shell "cmd package install-existing com.sec.usbsettings" # USBSettings, choose from ADB, MTP, RNDIS, ACM, DM (dial *#0808# to open) | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.factory.iris.usercamera" # Camera Iris User Test, the test from the *#0*# menu | ||
- | for iFileIn in ${fileIn}; do | + | # Other apps |
- | STREAMTITLE | + | adb shell "pm uninstall -k --user 0 com.samsung.android.networkdiagnostic" # Network diagnostic |
- | STREAMVIDEO | + | adb shell "pm uninstall -k --user 0 com.sec.bcservice" # Linked to some diagnostics? It mentions TcpDump |
- | STREAMAUDIO | + | adb shell "pm uninstall -k --user 0 com.sec.android.app.bluetoothtest" # BluetoothTest, probably a priviledged diagnostics app |
- | STREAMSUBTITLE | + | adb shell "pm uninstall -k --user 0 com.sec.android.diagmonagent" # DiagMonAgent, probably diagnostics data collection from Settings > Biometrics and security > Send diagnostic data |
- | + | adb shell "pm uninstall -k --user 0 com.sec.factory" # DeviceTest | |
- | TabYadStream+=( --field=" ":LBL " ") | + | adb shell "pm uninstall -k --user 0 com.sec.android.app.wlantest" # WlanTest |
+ | adb shell "pm uninstall -k --user 0 com.sec.epdgtestapp" # EpdgTestApp, test app for ePDG functionnality? | ||
- | # Nom du fichier | + | ################ |
- | fileNameExt=$(basename "${iFileIn}") | + | # Game-related # |
- | fileName="${fileNameExt%.*}" | + | ################ |
+ | adb shell "pm uninstall -k --user 0 com.enhance.gameservice" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.game.gamehome" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.game.gametools" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.game.gos" # Samsung Game Optimizing Service | ||
- | # Envoi données vers YADPROGRESS | + | ############### |
- | pourcent=$(echo "scale=15; (${pourcent}+${pourcentFichier})" | bc) | + | # Google apps # |
+ | ############### | ||
- | ((nbr+=1)) | + | # Visible apps |
+ | adb shell "pm uninstall -k --user 0 com.google.android.apps.docs" # Google Drive | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.apps.maps" # Google Maps | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.apps.photos" # Google Photos | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.GoogleCamera" # Google Camera | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.gm" # Gmail | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.videos" # Google Movies | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.youtube" # Google's YouTube | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.music" # Google Music | ||
+ | # More hidden apps | ||
+ | adb shell "pm uninstall -k --user 0 com.google.ar.core" # Google Play Services for AR (Augmented Reality) | ||
+ | adb shell "pm uninstall -k --user 0 com.google.vr.vrcore" # Google VR (Virtual Reality) Services | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.tts" # Text-to-speech synthesis | ||
+ | adb shell "pm uninstall -k --user 0 com.android.hotwordenrollment.okgoogle" # Enroll for "OK-Google" | ||
+ | adb shell "pm uninstall -k --user 0 com.android.hotwordenrollment.xgoogle" # Enroll for something | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.apps.nexuslauncher" # Removes the Google launcher | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.apps.restore" # Restore data from the cloud or transfer it from another device | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.apps.tachyon" | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.backuptransport" | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.ext.shared" | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.feedback" # Market feedback agent | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.gms.policy_sidecar_aps" | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.googlequicksearchbox" # The super fat Google app | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.onetimeinitializer" | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.partnersetup" | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.printservice.recommendation" # Print Service Recommendation Service | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.setupwizard" # The initial setup wizard, that can pop later to "finish the setup" with recommended apps | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.syncadapters.calendar" # Google Calendar Sync | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.syncadapters.contacts" # Google Contacts Sync | ||
+ | adb shell "pm uninstall -k --user 0 com.google.android.apps.turbo" # Device Health Services | ||
- | # Calcul temps restant | + | #################### |
- | timeT="$(date +%s)" | + | # Third-party apps # |
- | timeRemainingS=$(echo "scale=15; ((${timeT}-${timeGo})*${nbrFichier}/${nbr})-(${timeT}-${timeGo})" | bc | awk -F"." '{print $1}') | + | #################### |
- | timeRemainingHMS=$(date +%T -d "0000-01-01 ${timeRemainingS} seconds") | + | #adb shell "pm uninstall -k --user 0 com.skype.raider" # Skype |
+ | adb shell "pm uninstall -k --user 0 com.linkedin.android" # LinkedIn | ||
+ | adb shell "pm uninstall -k --user 0 com.microsoft.office.excel" # Microsoft Excel | ||
+ | adb shell "pm uninstall -k --user 0 com.microsoft.office.powerpoint" # Microsoft PowerPoint | ||
+ | adb shell "pm uninstall -k --user 0 com.microsoft.office.word" # Microsoft Word | ||
+ | adb shell "pm uninstall -k --user 0 com.microsoft.skydrive" # Microsoft SkyDrive | ||
+ | adb shell "pm uninstall -k --user 0 de.axelspringer.yana.zeropage" # upday | ||
+ | adb shell "pm uninstall -k --user 0 flipboard.boxer.app" # Flipboard | ||
+ | adb shell "pm uninstall -k --user 0 com.facebook.appmanager" # Facebook | ||
+ | adb shell "pm uninstall -k --user 0 com.facebook.katana" # Facebook | ||
+ | adb shell "pm uninstall -k --user 0 com.facebook.services" # Facebook | ||
+ | adb shell "pm uninstall -k --user 0 com.facebook.system" # Facebook | ||
+ | adb shell "pm uninstall -k --user 0 com.amazon.appmanager" | ||
- | # Envoi données à YADPROGRESS | + | ################ |
- | echo "${pourcent}" | + | # Unclassified # |
- | echo -e "\n#Analyse ${nbr} fichiers sur ${nbrFichier} - Temps restant environ: ${timeRemainingHMS}" | + | ################ |
- | done | + | adb shell "pm uninstall -k --user 0 package:com.sec.android.app.fm" # Radio FM |
- | + | adb shell "cmd package install-existing com.android.keychain" | |
- | for i in "${TabYadStream[@]}"; do | + | adb shell "cmd package install-existing com.android.nfc" |
- | echo "$i" >>"${dossierTmp}/yadStream.txt" | + | adb shell "cmd package install-existing com.android.providers.blockednumber" |
- | done | + | adb shell "cmd package install-existing com.android.providers.calendar" |
- | } | + | adb shell "cmd package install-existing com.android.providers.settings" |
- | #=========================================================================================================== | + | adb shell "cmd package install-existing com.android.proxyhandler" |
- | function STREAMTITLE() | + | adb shell "cmd package install-existing com.android.settings.intelligence" |
- | { | + | adb shell "cmd package install-existing com.android.wallpaperbackup" |
- | # Titre et durée | + | adb shell "cmd package install-existing com.android.wallpapercropper" |
- | streamFormat=$(ffprobe -i "${iFileIn}" -hide_banner -v quiet -show_entries format=duration,bit_rate -of csv=s="|") | + | adb shell "cmd package install-existing com.sec.android.wallpapercropper2" # Background image and lock-screen cropping tool |
- | durationS=$(awk -F [\|] '{print $2}' <<< "${streamFormat}") | + | adb shell "cmd package install-existing com.android.wallpaper.livepicker" |
- | durationHMS=$(date +%T -d "0000-01-01 ${durationS} seconds") | + | adb shell "cmd package install-existing com.samsung.android.app.smartcapture" |
- | rateTotal=$(awk -F [\|] '{printf "%d kb/s" ,($3/1000)}' <<< "${streamFormat}") | + | adb shell "cmd package install-existing com.samsung.android.authfw" |
- | + | adb shell "cmd package install-existing com.samsung.android.bio.face.service" | |
- | # Mise en mémoire dans tableau TabYadStream | + | adb shell "cmd package install-existing com.samsung.android.mdm" |
- | TabYadStream+=( --field="<b>TITRE: $(basename "${iFileIn}") - ${durationHMS} - ${rateTotal}</b>":LBL " ") | + | adb shell "cmd package install-existing com.samsung.android.messaging" |
- | } | + | adb shell "cmd package install-existing com.samsung.android.providers.context" |
- | #=========================================================================================================== | + | adb shell "cmd package install-existing com.samsung.android.server.iris" |
- | function STREAMVIDEO() | + | adb shell "cmd package install-existing com.samsung.android.wallpaper.res" |
- | { | + | adb shell "cmd package install-existing com.samsung.sec.android.application.csc" |
- | while read line; do | + | adb shell "cmd package install-existing com.sec.android.app.clockpackage" |
- | + | adb shell "cmd package install-existing com.sec.android.emergencylauncher" | |
- | index=$(awk -F [\|] '{print $2}' <<< "${line}") | + | adb shell "cmd package install-existing com.sec.android.ofviewer" |
- | codec=$(awk -F [\|] '{print $3}' <<< "${line}") | + | adb shell "cmd package install-existing com.sec.android.provider.emergencymode" |
- | width=$(awk -F [\|] '{print $4}' <<< "${line}") | + | adb shell "cmd package install-existing com.sec.android.providers.security" |
- | height=$(awk -F [\|] '{print $5}' <<< "${line}") | + | adb shell "cmd package install-existing com.sec.modem.settings" |
- | fps1=$(awk -F [\|] '{print $6}' <<< "${line}" | awk -F [\/] '{print $1}') | + | adb shell "pm uninstall -k --user 0 android.autoinstalls.config.samsung" |
- | fps2=$(awk -F [\|] '{print $6}' <<< "${line}" | awk -F [\/] '{print $2}') | + | adb shell "pm uninstall -k --user 0 com.android.backupconfirm" |
- | + | adb shell "pm uninstall -k --user 0 com.android.bips" # Default print service | |
- | # Vérifiction si fps1 et fps2 sont des valeurs numériques | + | adb shell "pm uninstall -k --user 0 com.android.bluetoothmidiservice" |
- | + | adb shell "pm uninstall -k --user 0 com.android.bookmarkprovider" | |
- | if [[ "${fps1}" = +([0-9]) ]] && [[ "${fps2}" = +([0-9]) ]]; then | + | adb shell "pm uninstall -k --user 0 com.android.calllogbackup" |
- | fps=$(echo "${fps1} / ${fps2}" | bc -l | awk '{printf "%.3f" ,$1}') | + | adb shell "pm uninstall -k --user 0 com.android.captiveportallogin" |
- | + | adb shell "pm uninstall -k --user 0 com.android.chrome" | |
- | elif [[ "${fps1}" = +([0-9]) ]] && [[ "${fps2}" != +([0-9]) ]]; then | + | adb shell "pm uninstall -k --user 0 com.android.dreams.basic" |
- | fps=$(awk '{printf "%d" ,$1}' <<< "${fps1}") | + | adb shell "pm uninstall -k --user 0 com.android.dreams.phototable" |
- | + | adb shell "pm uninstall -k --user 0 com.android.egg" | |
- | else | + | adb shell "pm uninstall -k --user 0 com.android.htmlviewer" |
- | fps="N/A" | + | # adb shell "pm uninstall -k --user 0 com.android.inputdevices" # Input devices, only contains a receiver named "Android keyboard", possibly for an external keyboard |
- | fi | + | adb shell "pm uninstall -k --user 0 com.android.managedprovisioning" # Work profile setup |
- | + | adb shell "pm uninstall -k --user 0 com.android.mms.service" # MmsService, no activity but a service, with permissions related to carrier connectivity. For receiving MMS? | |
- | # Type d'image (Front, back, other) | + | adb shell "pm uninstall -k --user 0 com.android.pacprocessor" |
- | if [[ "${codec}" == "mjpeg" ]] || [[ "${codec}" == "png" ]]; then | + | adb shell "pm uninstall -k --user 0 com.android.printspooler" # Print spooler |
- | + | adb shell "pm uninstall -k --user 0 com.android.providers.partnerbookmarks" | |
- | # Recherche map depuis numéro id | + | # adb shell "pm uninstall -k --user 0 com.android.sharedstoragebackup" # One service (ObbBackupService), nothing else. No internet access, and might be useful |
- | id=$(awk -F [\:] '{print $2}' <<< "0:${index}") | + | adb shell "pm uninstall -k --user 0 com.android.statementservice" # Intent Filter Verification Service |
- | typeImage=$(ffprobe -i "${i}" -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=comment -of csv=s="|" | awk -F [\|] '{print $2}') | + | adb shell "pm uninstall -k --user 0 com.diotek.sec.lookup.dictionary" # Dictionary |
- | + | adb shell "pm uninstall -k --user 0 com.galaxyfirsatlari" | |
- | + | adb shell "pm uninstall -k --user 0 com.gd.mobicore.pa" | |
- | # Mise en forme piste vidéo (envoi vers fichier tmp et envoi dans tableau TabYadStream) | + | adb shell "pm uninstall -k --user 0 com.mobeam.barcodeService" |
- | if [[ "${index}" != "" ]]; then | + | adb shell "pm uninstall -k --user 0 com.monotype.android.font.chococooky" |
- | printf "|${iFileIn}|0:${index}|VIDEO|${typeImage}|${codec}|${width}|${height}\n" >> "${dossierTmp}/stream.txt" | + | adb shell "pm uninstall -k --user 0 com.monotype.android.font.cooljazz" |
- | TabYadStream+=( --field="0:${index} | VIDEO |${typeImage} ${codec} ${width}x${height}":CHK "TRUE") | + | adb shell "pm uninstall -k --user 0 com.monotype.android.font.foundation" |
- | fi | + | adb shell "pm uninstall -k --user 0 com.monotype.android.font.rosemary" |
- | + | adb shell "pm uninstall -k --user 0 com.osp.app.signin" | |
- | else | + | adb shell "pm uninstall -k --user 0 com.policydm" |
- | + | adb shell "pm uninstall -k --user 0 com.samsung.aasaservice" | |
- | # Mise en forme piste vidéo (envoi vers fichier tmp et envoi dans tableau TabYadStream) | + | adb shell "pm uninstall -k --user 0 com.samsung.accessory" |
- | if [[ "${index}" != "" ]]; then | + | adb shell "pm uninstall -k --user 0 com.samsung.accessory.beansmgr" |
- | printf "|${iFileIn}|0:${index}|VIDEO|${codec}|${width}|${height}|${fps}\n" >> "${dossierTmp}/stream.txt" | + | adb shell "pm uninstall -k --user 0 com.samsung.accessory.safiletransfer" |
- | TabYadStream+=( --field="0:${index} | VIDEO |${codec} ${width}x${height} ${fps} fps":CHK "TRUE") | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.accesscontrol" |
- | fi | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.advsounddetector" # Sound detectors |
- | fi | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.assistantmenu" # Assistant menu |
- | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.color" | |
- | done <<< $(ffprobe -i "${iFileIn}" -hide_banner -v quiet -select_streams v -show_entries stream=index,codec_name,width,height,r_frame_rate -of csv=s="|") | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.filterinstaller" |
- | } | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.galaxyfinder" # Finder, the "search in device" feature |
- | #=========================================================================================================== | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.ledcoverdream" # LEF icon editor, for LED covers |
- | function STREAMAUDIO() | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.mirrorlink" # Samsung MirrorLink 1.1, to connect the phone to a car |
- | { | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.multiwindow" |
- | while read line; do | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.notes" |
- | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.omcagent" # Configuration update, some activities are very suspicious: "Recommended apps" | |
- | index=$(awk -F [\|] '{print $2}' <<< "${line}") | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.panel.naver.v" |
- | codec=$(awk -F [\|] '{print $3}' <<< "${line}") | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.reminder" # Reminder, does regular network access |
- | rate=$(awk -F [\|] '{print $4}' <<< "${line}") | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.simplesharing" # Link sharing |
- | channelOut=$(awk -F [\|] '{print $5}' <<< "${line}") | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.social" # What's new |
- | lang=$(awk -F [\|] '{print $NF}' <<< "${line}") | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.talkback" # Voice Assistant |
- | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.watchmanager" | |
- | LANGUE | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.watchmanagerstub" # Wearable Manager Installer |
- | + | adb shell "pm uninstall -k --user 0 com.samsung.android.app.withtv" | |
- | # Affectation TRUE ou FALSE | + | adb shell "pm uninstall -k --user 0 com.samsung.android.bbc.bbcagent" # BBCAgent |
- | if [[ "${language}" == "${langAudio}" ]] || [[ "${language}" == "Inconnu" ]] || [[ "${langAudio}" == "Toutes les langues" ]]; then | + | adb shell "pm uninstall -k --user 0 com.samsung.android.calendar" # Calendar |
- | bol="TRUE" | + | adb shell "pm uninstall -k --user 0 com.samsung.android.clipboarduiservice" # ClipboardUIService |
- | + | adb shell "pm uninstall -k --user 0 com.samsung.android.coreapps" | |
- | else | + | adb shell "pm uninstall -k --user 0 com.samsung.android.da.daagent" # Dual messenger |
- | bol="FALSE" | + | adb shell "pm uninstall -k --user 0 com.samsung.android.dlp.service" |
- | fi | + | adb shell "pm uninstall -k --user 0 com.samsung.android.dqagent" # DQA (Device Quality Agent), reportedely keeps tabs on Wi-Fi quality throughout the device |
- | + | adb shell "pm uninstall -k --user 0 com.samsung.android.drivelink.stub" # CarmodeStub | |
- | # Mise en forme piste audio (envoi vers fichier tmp et envoi dans tableau TabYadStream) | + | adb shell "pm uninstall -k --user 0 com.samsung.android.email.provider" |
- | if [[ "${index}" != "" ]]; then | + | adb shell "pm uninstall -k --user 0 com.samsung.android.emojiupdater" |
- | printf "|${iFileIn}|0:${index}|AUDIO|${codec}|${language}|${languageISO}|${rate}|${channelOut}|\n" >> "${dossierTmp}/stream.txt" | + | adb shell "pm uninstall -k --user 0 com.samsung.android.fingerprint.service" |
- | TabYadStream+=( --field="0:${index}| AUDIO | ${language} ${codec} ${rate} Hz ${channelOut}":CHK "${bol}") | + | adb shell "pm uninstall -k --user 0 com.samsung.android.fmm" # Find my mobile |
- | fi | + | adb shell "pm uninstall -k --user 0 com.samsung.android.gearoplugin" |
- | + | adb shell "pm uninstall -k --user 0 com.samsung.android.hmt.vrsvc" # Gear VR Service | |
- | done <<< $(ffprobe -i "${iFileIn}" -hide_banner -v quiet -select_streams a -show_entries stream=index,codec_name,sample_rate,channel_layout,bit_rate -show_entries stream_tags=language -of csv=s="|") | + | adb shell "pm uninstall -k --user 0 com.samsung.android.keyguardwallpaperupdator" # Keyguard Wallpaper Updator, seems linked to selecting multiple lockscreen wallpapers, features removed in S8 but app stayed |
- | } | + | adb shell "pm uninstall -k --user 0 com.samsung.android.kidsinstaller" # Kids Home Installer |
- | #=========================================================================================================== | + | adb shell "pm uninstall -k --user 0 com.samsung.android.oneconnect" |
- | function STREAMSUBTITLE() | + | adb shell "pm uninstall -k --user 0 com.samsung.android.provider.shootingmodeprovider" |
- | { | + | adb shell "pm uninstall -k --user 0 com.samsung.android.samsungpositioning" # Samsung Positioning |
- | while read line; do | + | adb shell "pm uninstall -k --user 0 com.samsung.android.sdk.handwriting" # Handwriting Service |
- | + | adb shell "pm uninstall -k --user 0 com.samsung.android.sdk.professionalaudio.app.audioconnectionservice" | |
- | index=$(awk -F [\|] '{print $2}' <<< "${line}") | + | adb shell "pm uninstall -k --user 0 com.samsung.android.sdk.professionalaudio.utility.jammonitor" |
- | codec=$(awk -F [\|] '{print $3}' <<< "${line}") | + | adb shell "pm uninstall -k --user 0 com.samsung.android.securitylogagent" |
- | lang=$(awk -F [\|] '{print $NF}' <<< "${line}") | + | adb shell "pm uninstall -k --user 0 com.samsung.android.smartface" # SmartFaceService |
- | + | adb shell "pm uninstall -k --user 0 com.samsung.android.smartfitting" # SmartFittingService | |
- | LANGUE | + | |
- | + | ||
- | # Affectation TRUE ou FALSE | + | |
- | if [[ "${language}" == "${langSub}" ]] || [[ "${language}" == "Inconnu" ]] || [[ "${langSub}" == "Toutes les langues" ]]; then | + | |
- | bol="TRUE" | + | |
- | + | ||
- | else | + | |
- | bol="FALSE" | + | |
- | fi | + | |
- | + | ||
- | # Mise en forme piste audio (envoi vers fichier tmp et envoi dans tableau TabYadStream) | + | |
- | + | ||
- | if [[ "${index}" != "" ]]; then | + | |
- | printf "|${iFileIn}|0:${index}|SUBTITLE|${codec}|${language}|${languageISO}|\n" >> "${dossierTmp}/stream.txt" | + | |
- | TabYadStream+=( --field="0:${index} | SUBTITLE | ${language} ${codec}":CHK "${bol}") | + | |
- | fi | + | |
- | + | ||
- | done <<< $(ffprobe -i "${iFileIn}" -hide_banner -v quiet -select_streams s -show_entries stream=index,codec_name -show_entries stream_tags=language -of csv=s="|") | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | + | ||
- | function PROFIL() | + | |
- | { | + | |
- | if [[ "${profile}" = "Audio FLAC" ]]; then | + | |
- | FLAC | + | |
- | conteneur="flac" | + | |
- | + | ||
- | elif [[ "${profile}" = "Audio vorbis" ]]; then | + | |
- | VORBIS | + | |
- | conteneur="ogg" | + | |
- | + | ||
- | elif [[ "${profile}" = "Audio aac" ]]; then | + | |
- | AAC | + | |
- | conteneur="m4a" | + | |
- | + | ||
- | elif [[ "${profile}" = "Audio mp3" ]]; then | + | |
- | MP3 | + | |
- | conteneur="mp3" | + | |
- | + | ||
- | elif [[ "${profile}" = "Vidéo mkv - x264 - vorbis" ]]; then | + | |
- | X264 | + | |
- | VORBIS | + | |
- | conteneur="mkv" | + | |
- | + | ||
- | elif [[ "${profile}" = "Vidéo mkv - x264 - aac" ]]; then | + | |
- | X264 | + | |
- | AAC | + | |
- | conteneur="mkv" | + | |
- | + | ||
- | elif [[ "${profile}" = "Vidéo mkv - x264 - mp3" ]]; then | + | |
- | X264 | + | |
- | MP3 | + | |
- | conteneur="mkv" | + | |
- | + | ||
- | elif [[ "${profile}" = "Vidéo mkv - x265 - aac" ]]; then | + | |
- | X265 | + | |
- | AAC | + | |
- | conteneur="mkv" | + | |
- | + | ||
- | elif [[ "${profile}" = "Vidéo mkv - x265 - mp3" ]]; then | + | |
- | X265 | + | |
- | MP3 | + | |
- | conteneur="mkv" | + | |
- | fi | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function QUALITY_VIDEO() | + | |
- | { | + | |
- | # Commande selon la qualité | + | |
- | if [[ "${quality}" == "Excellente" ]]; then | + | |
- | cdeQualityVideo=(${qVideo1[@]}) | + | |
- | + | ||
- | elif [[ "${quality}" == "Elevée" ]]; then | + | |
- | cdeQualityVideo=(${qVideo2[@]}) | + | |
- | + | ||
- | elif [[ "${quality}" == "Moyenne" ]]; then | + | |
- | cdeQualityVideo=(${qVideo3[@]}) | + | |
- | + | ||
- | elif [[ "${quality}" == "Minimum" ]]; then | + | |
- | cdeQualityVideo=(${qVideo4[@]}) | + | |
- | + | ||
- | elif [[ "${quality}" == "Faible" ]]; then | + | |
- | cdeQualityVideo=(${qVideo5[@]}) | + | |
- | + | ||
- | fi | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function X265() | + | |
- | { | + | |
- | if [[ "${codecVideoIn}" = "h265" ]] && [[ "${nocopy}" = "TRUE" ]]; then | + | |
- | cVideo="copy" | + | |
- | else | + | |
- | cVideo="libx265" | + | |
- | + | ||
- | qVideo1=(-crf 18 -preset slow) | + | |
- | qVideo2=(-crf 24 -preset slow) | + | |
- | qVideo3=(-crf 30 -preset medium) | + | |
- | qVideo4=(-crf 36 -preset veryfast) | + | |
- | qVideo5=(-crf 42 -preset ultrafast) | + | |
- | fi | + | |
- | + | ||
- | + | ||
- | } | + | |
- | #=========================================================================================================== | + | |
- | function X264() | + | |
- | { | + | |
- | if [[ "${codecVideoIn}" = "h264" ]] && [[ "${nocopy}" = "TRUE" ]]; then | + | |
- | cVideo="copy" | + | |
- | else | + | |
- | cVideo="libx264" | + | |
- | + | ||
- | qVideo1=(-crf 18 -preset slow) | + | |
- | qVideo2=(-crf 24 -preset slow) | + | |
- | qVideo3=(-crf 30 -preset medium) | + | |
- | qVideo4=(-crf 36 -preset veryfast) | + | |
- | qVideo5=(-crf 42 -preset ultrafast) | + | |
- | + | ||
- | fi | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function FLAC() | + | |
- | { | + | |
- | if [[ "${codecAudioIn}" = "flac" ]] && [[ "${nocopy}" = "TRUE" ]]; then | + | |
- | cAudio="copy" | + | |
- | + | ||
- | else | + | |
- | cAudio="flac" | + | |
- | fi | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function VORBIS() | + | |
- | { | + | |
- | if [[ "${codecAudioIn}" = "vorbis" ]] && [[ "${nocopy}" = "TRUE" ]]; then | + | |
- | cAudio="copy" | + | |
- | + | ||
- | else | + | |
- | codecAudioOut="vorbis" | + | |
- | cAudio="libvorbis" | + | |
- | + | ||
- | if [[ "${typeRate}" == "VBR" ]]; then | + | |
- | qAudio1=(-qscale:a 10) | + | |
- | qAudio2=(-qscale:a 8) | + | |
- | qAudio3=(-qscale:a 5) | + | |
- | qAudio4=(-qscale:a 4) | + | |
- | qAudio5=(-qscale:a 0) | + | |
- | + | ||
- | elif [[ "${typeRate}" == "CBR" ]]; then | + | |
- | qAudio1=(-b:a 320k) | + | |
- | qAudio2=(-b:a 256k) | + | |
- | qAudio3=(-b:a 160k) | + | |
- | qAudio4=(-b:a 128k) | + | |
- | qAudio5=(-b:a 64k) | + | |
- | fi | + | |
- | + | ||
- | fi | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function AAC() | + | |
- | { | + | |
- | if [[ "${codecAudioIn}" = "aac" ]] && [[ "${nocopy}" = "TRUE" ]]; then | + | |
- | cAudio="copy" | + | |
- | + | ||
- | else | + | |
- | codecAudioOut="aac" | + | |
- | cAudio="aac" | + | |
- | + | ||
- | if [[ "${typeRate}" == "VBR" ]]; then | + | |
- | qAudio1=(-q:a 2) | + | |
- | qAudio2=(-q:a 1.5) | + | |
- | qAudio3=(-q:a 1) | + | |
- | qAudio4=(-q:a 0.7) | + | |
- | qAudio5=(-q:a 0.2) | + | |
- | + | ||
- | elif [[ "${typeRate}" == "CBR" ]]; then | + | |
- | qAudio1=(-b:a 320k) | + | |
- | qAudio2=(-b:a 256k) | + | |
- | qAudio3=(-b:a 160k) | + | |
- | qAudio4=(-b:a 128k) | + | |
- | qAudio5=(-b:a 64k) | + | |
- | fi | + | |
- | + | ||
- | fi | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function MP3() | + | |
- | { | + | |
- | if [[ "${codecAudioIn}" = "mp3" ]] && [[ "${nocopy}" = "TRUE" ]]; then | + | |
- | cAudio="copy" | + | |
- | + | ||
- | else | + | |
- | codecAudioOut="mp3" | + | |
- | cAudio="libmp3lame" | + | |
- | + | ||
- | if [[ "${typeRate}" == "VBR" ]]; then | + | |
- | qAudio1=(-q:a 0) | + | |
- | qAudio2=(-q:a 1) | + | |
- | qAudio3=(-q:a 4) | + | |
- | qAudio4=(-q:a 7) | + | |
- | qAudio5=(-q:a 9) | + | |
- | + | ||
- | elif [[ "${typeRate}" == "CBR" ]]; then | + | |
- | qAudio1=(-b:a 320k) | + | |
- | qAudio2=(-b:a 256k) | + | |
- | qAudio3=(-b:a 160k) | + | |
- | qAudio4=(-b:a 128k) | + | |
- | qAudio5=(-b:a 64k) | + | |
- | fi | + | |
- | fi | + | |
- | } | + | |
- | function FFMPEG_SIMPLE | + | |
- | { | + | |
- | + | ||
- | + | ||
- | + | ||
- | IFS=$'\n' | + | |
- | + | ||
- | for iFileIn in ${fileIn}; do | + | |
- | + | ||
- | # Initialisation commandes | + | |
- | cdeVideo=() | + | |
- | cdeAudio=() | + | |
- | cdeSub=() | + | |
- | + | ||
- | # Nom fichier source | + | |
- | fileNameExtension=$(basename "${iFileIn}") | + | |
- | fileName="${fileNameExtension%.*}" | + | |
- | extension="${fileNameExtension##*.}" | + | |
- | + | ||
- | + | ||
- | + | ||
- | STREAMAUDIO | + | |
- | + | ||
- | + | ||
- | cat "${dossierTmp}/stream.txt" | + | |
- | + | ||
- | + | ||
- | exit | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | done | + | |
- | } | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | #=========================================================================================================== | + | |
- | function FFMPEG() | + | |
- | { | + | |
- | IFS=$'\n' | + | |
- | for iFileIn in ${fileIn}; do | + | |
- | + | ||
- | # Initialisation commandes | + | |
- | cdeVideo=() | + | |
- | cdeAudio=() | + | |
- | cdeSub=() | + | |
- | + | ||
- | # Nom fichier source | + | |
- | fileNameExtension=$(basename "${iFileIn}") | + | |
- | fileName="${fileNameExtension%.*}" | + | |
- | extension="${fileNameExtension##*.}" | + | |
- | + | ||
- | # Recherche map | + | |
- | mapVideo=$(awk -v iFileIn="${iFileIn}" -v iMapAudio="${iMapAudio}" -F [\|] '{if ($4 == "VIDEO" && $2 == iFileIn) {printf "%s" ,$3}}' <<< "${stream}") | + | |
- | mapAudio=$(awk -v iFileIn="${iFileIn}" -v iMapAudio="${iMapAudio}" -F [\|] '{if ($4 == "AUDIO" && $2 == iFileIn) {printf "%s" ,$3}}' <<< "${stream}") | + | |
- | mapSub=$(awk -v iFileIn="${iFileIn}" -v iMapAudio="${iMapAudio}" -F [\|] '{if ($4 == "SUBTITLE" && $2 == iFileIn) {printf "%s" ,$3}}' <<< "${stream}") | + | |
- | + | ||
- | echo "==============================================" | + | |
- | echo " iFileIn: ${iFileIn}" | + | |
- | echo " fileName: ${fileName}" | + | |
- | echo " mapVideo: ${mapVideo}" | + | |
- | echo " mapAudio: ${mapAudio}" | + | |
- | echo " mapSub: ${mapSub}" | + | |
- | + | ||
- | # Metadonnée | + | |
- | if [[ "${metadata}" == "TRUE" ]]; then | + | |
- | cdeMetadata=(-map_metadata -1) | + | |
- | else | + | |
- | cdeMetadata=() | + | |
- | fi | + | |
- | + | ||
- | FFMPEG_VIDEO | + | |
- | FFMPEG_AUDIO | + | |
- | FFMPEG_OUT | + | |
- | + | ||
- | # Conversion fichier | + | |
- | ffmpeg -y -i "${iFileIn}" -loglevel debug "${cdeMetadata[@]}" "${cdeVideo[@]}" "${cdeAudio[@]}" -t 10 "${dirOut}/${fileName}.${conteneur}" | + | |
- | ffmpeg -i "${dirOut}/${fileName}.${conteneur}" ## TEST ## | + | |
- | + | ||
- | echo "==============================================" | + | |
- | echo "ffmpeg -y -i ${iFileIn} ${cdeMetadata[@]} ${cdeVideo[@]} ${cdeAudio[@]} -t 10 ${dirOut}/${fileName}.${conteneur} | + | |
- | rateTotal: ${rateTotal}" ## TEST ## | + | |
- | echo "==============================================" | + | |
- | + | ||
- | # Image cover fichier audio | + | |
- | for iMapVideo in ${mapVideo}; do | + | |
- | + | ||
- | numImage="1" | + | |
- | + | ||
- | # Recherche codec vidéo (image) | + | |
- | codecVideoIn=$(awk -F [\|] '{if ($4 ~ /VIDEO/ && /'${iMapVideo}'/ && /'${fileName}'/) {printf "%s" ,$5}}' <<< "${stream}") | + | |
- | + | ||
- | if [[ "${codecVideoIn}" == "mjpeg" ]] || [[ "${codecVideoIn}" == "png" ]]; then | + | |
- | + | ||
- | COVER | + | |
- | fi | + | |
- | + | ||
- | done | + | |
- | + | ||
- | done | + | |
- | + | ||
- | } | + | |
- | #=========================================================================================================== | + | |
- | function FFMPEG_VIDEO() | + | |
- | { | + | |
- | numFile="" | + | |
- | + | ||
- | for iMapVideo in ${mapVideo}; do | + | |
- | + | ||
- | codecVideoIn=$(awk -v iFileIn="${iFileIn}" -v iMapVideo="${iMapVideo}" -F [\|] '{if ($4 == "VIDEO" && $2 == iFileIn && $3 == iMapVideo){printf "%s" ,$5}}' <<< "${stream}") | + | |
- | + | ||
- | PROFIL | + | |
- | QUALITY_VIDEO | + | |
- | + | ||
- | if [[ "${profile}" = "Audio FLAC" ]] || [[ "${profile}" = "Audio vorbis" ]] || [[ "${profile}" = "Audio aac" ]] || [[ "${profile}" = "Audio mp3" ]]; then | + | |
- | cdeVideo=(-vn) | + | |
- | + | ||
- | else | + | |
- | cdeVideo=(${cdeVideo[@]} -map ${iMapVideo} -c:v ${cVideo} ${cdeQualityVideo[@]}) | + | |
- | + | ||
- | fi | + | |
- | + | ||
- | echo "cdeVideo: ${cdeVideo[@]}" | + | |
- | + | ||
- | done | + | |
- | } | + | |
- | + | ||
- | #=========================================================================================================== | + | |
- | function FFMPEG_AUDIO() | + | |
- | { | + | |
- | numAudio="0" | + | |
- | + | ||
- | + | ||
- | + | ||
- | for iMapAudio in ${mapAudio}; do | + | |
- | + | ||
- | codecAudioIn=$(awk -v iFileIn="${iFileIn}" -v iMapAudio="${iMapAudio}" -F [\|] '{ | + | |
- | + | ||
- | if ($4 == "AUDIO" && $2 == iFileIn && $3 == iMapAudio) | + | |
- | {printf "%s - %s" ,$5,iFileIn} | + | |
- | + | ||
- | }' <<< "${stream}") | + | |
- | + | ||
- | languageISO=$(awk -v iFileIn="${iFileIn}" -v iMapAudio="${iMapAudio}" -F [\|] '{ | + | |
- | + | ||
- | if ($4 == "AUDIO" && $2 == iFileIn && $3 == iMapAudio) | + | |
- | {printf "%s" ,$7} | + | |
- | + | ||
- | }' <<< "${stream}") | + | |
- | + | ||
- | PROFIL | + | |
- | QUALITY_AUDIO | + | |
- | + | ||
- | cdeAudio=(${cdeAudio[@]} -map ${iMapAudio} -metadata:s:a:${numAudio} language="${languageISO}" -c:a ${cAudio} ${cdeQualityAudio[@]} ${channel[@]} -cutoff 20000) | + | |
- | ((numAudio+=1)) | + | |
- | + | ||
- | done | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function QUALITY_AUDIO() | + | |
- | { | + | |
- | # Recherche debit total maximum du fichier source | + | |
- | rateTotal=$(ffprobe -i "${iFileIn}" -hide_banner -v quiet -show_entries format=bit_rate -of csv=s="|" | awk -F [\|] '{printf "%d\n" ,($2/1000)}') | + | |
- | + | ||
- | # Commande selon la qualité | + | |
- | if [[ "${cAudio}" = "copy" ]] || [[ "${cAudio}" == "flac" ]]; then | + | |
- | cdeQualityAudio=() | + | |
- | + | ||
- | elif [[ "${quality}" == "Excellente" ]]; then | + | |
- | + | ||
- | if [[ "${rateTotal}" -gt "320" ]]; then | + | |
- | cdeQualityAudio=(${qAudio1[@]}) | + | |
- | + | ||
- | elif [[ "${codecAudioIn}" == "${codecAudioOut}" ]]; then | + | |
- | cAudio="copy" | + | |
- | cdeQualityAudio=() | + | |
- | else | + | |
- | cdeQualityAudio=(-b:a "${rateTotal}k") | + | |
- | fi | + | |
- | + | ||
- | elif [[ "${quality}" == "Elevée" ]]; then | + | |
- | + | ||
- | if [[ "${rateTotal}" -gt "256" ]]; then | + | |
- | cdeQualityAudio=(${qAudio2[@]}) | + | |
- | + | ||
- | elif [[ "${codecAudioIn}" == "${codecAudioOut}" ]]; then | + | |
- | cAudio="copy" | + | |
- | cdeQualityAudio=() | + | |
- | else | + | |
- | cdeQualityAudio=(-b:a "${rateTotal}k") | + | |
- | fi | + | |
- | + | ||
- | elif [[ "${quality}" == "Moyenne" ]]; then | + | |
- | if [[ "${rateTotal}" -gt "192" ]]; then | + | |
- | cdeQualityAudio=(${qAudio3[@]}) | + | |
- | + | ||
- | elif [[ "${codecAudioIn}" == "${codecAudioOut}" ]]; then | + | |
- | cAudio="copy" | + | |
- | cdeQualityAudio=() | + | |
- | else | + | |
- | cdeQualityAudio=(-b:a "${rateTotal}k") | + | |
- | fi | + | |
- | + | ||
- | elif [[ "${quality}" == "Minimum" ]]; then | + | |
- | if [[ "${rateTotal}" -gt "128" ]]; then | + | |
- | cdeQualityAudio=(${qAudio4[@]}) | + | |
- | + | ||
- | elif [[ "${codecAudioIn}" == "${codecAudioOut}" ]]; then | + | |
- | cAudio="copy" | + | |
- | cdeQualityAudio=() | + | |
- | else | + | |
- | cdeQualityAudio=(-b:a "${rateTotal}k") | + | |
- | fi | + | |
- | + | ||
- | elif [[ "${quality}" == "Faible" ]]; then | + | |
- | if [[ "${rateTotal}" -gt "64" ]]; then | + | |
- | cdeQualityAudio=(${qAudio5[@]}) | + | |
- | + | ||
- | elif [[ "${codecAudioIn}" == "${codecAudioOut}" ]]; then | + | |
- | cAudio="copy" | + | |
- | cdeQualityAudio=() | + | |
- | + | ||
- | else | + | |
- | cdeQualityAudio=(-b:a "${rateTotal}k") | + | |
- | fi | + | |
- | fi | + | |
- | + | ||
- | echo "typeRate: ${typeRate}" ## TEST | + | |
- | echo "rateTotal: ${rateTotal}" ## TEST | + | |
- | echo "quality: ${quality}" ## TEST | + | |
- | echo "cdeQualityAudio: ${cdeQualityAudio[@]}" ## TEST | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function FFMPEG_OUT() | + | |
- | { | + | |
- | # Si fichier exsite déjà ajoute "copie" et numéro de la copie | + | |
- | nbrCopie="1" | + | |
- | + | ||
- | while [[ -f "${dirOut}/${fileName}.${conteneur}" ]]; do | + | |
- | fileName=$(awk '{gsub(/ - copie.*/, ""); printf "%s - copie '$nbrCopie'" ,$0}' <<< "${fileName}") | + | |
- | ((nbrCopie+=1)) | + | |
- | done | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function COVER() | + | |
- | { | + | |
- | # Si codecVideoIn = mjpeg --> jpeg | + | |
- | [[ "${codecVideoIn}" == "mjpeg" ]] && codecVideoIn="jpeg" | + | |
- | + | ||
- | # Recherche numéro id depuis la map | + | |
- | id=$(awk -F [\:] '{print $2}' <<< "${iMapVideo}") | + | |
- | + | ||
- | # Type d'image (Front, back, other) | + | |
- | typeImage=$(ffprobe -i "${i}" -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=comment -of csv=s="|" | awk -F [\|] '{print $2}') | + | |
- | + | ||
- | # Nom image cover | + | |
- | nameImage=$(ffprobe -i "${i}" -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=title -of csv=s="|" | awk -F [\|] '{print $2}') | + | |
- | + | ||
- | if [[ "${nameImage}" == "" ]]; then | + | |
- | #nameImage="cover_${typeImage}" | + | |
- | + | ||
- | + | ||
- | if [[ "${typeImage}" == "Cover (front)" ]]; then | + | |
- | nameImage="Cover front" | + | |
- | + | ||
- | elif [[ "${typeImage}" == "Cover (back)" ]]; then | + | |
- | nameImage="Cover back" | + | |
- | + | ||
- | else [[ "${typeImage}" == "Other" ]] | + | |
- | nameImage="Other" | + | |
- | + | ||
- | fi | + | |
- | + | ||
- | elif [[ "${nameImage}" == "${nameImageSave}" ]]; then | + | |
- | nameImage="${nameImage}_${numImage}" | + | |
- | + | ||
- | fi | + | |
- | + | ||
- | # Sauvegarde du nom de l'image | + | |
- | nameImageSave="${numImage}" | + | |
- | ((numImage+=1)) | + | |
- | + | ||
- | # Extraction image du fichier source | + | |
- | ffmpeg -y -i "${iFileIn}" -map ${iMapVideo} -an "${dossierTmp}/${nameImage}.${codecVideoIn}" | + | |
- | + | ||
- | # Image cover pour fichier audio flac | + | |
- | if [[ "${profile}" = "Audio FLAC" ]]; then | + | |
- | COVER_FLAC | + | |
- | + | ||
- | # Image cover pour fichier audio vorbis | + | |
- | elif [[ "${profile}" = "Audio vorbis" ]]; then | + | |
- | COVER_OGG | + | |
- | + | ||
- | # Image cover pour fichier audio mp3 | + | |
- | elif [[ "${profile}" = "Audio mp3" ]]; then | + | |
- | COVER_MP3 | + | |
- | + | ||
- | # Image cover pour fichier audio aac | + | |
- | elif [[ "${profile}" = "Audio aac" ]]; then | + | |
- | COVER_OTHER | + | |
- | fi | + | |
- | + | ||
- | + | ||
- | echo "=== COVER ===" | + | |
- | echo "id: ${id}" | + | |
- | echo "typeImage: ${typeImage}" | + | |
- | echo "nameImage: ${nameImage}" | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function COVER_FLAC() | + | |
- | { | + | |
- | + | ||
- | if [[ "${typeImage}" == "Cover (front)" ]]; then | + | |
- | typeImage="3" | + | |
- | + | ||
- | elif [[ "${typeImage}" == "Cover (back)" ]]; then | + | |
- | typeImage="4" | + | |
- | + | ||
- | + | ||
- | else [[ "${typeImage}" == "Other" ]] | + | |
- | typeImage="0" | + | |
- | fi | + | |
- | + | ||
- | # Ajout de l'image au fichier audio | + | |
- | metaflac --import-picture-from="${typeImage}||${nameImage}||${dossierTmp}/${nameImage}.${codecVideoIn}" "${dirOut}/${fileName}.${conteneur}" | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function COVER_OGG() | + | |
- | { | + | |
- | + | ||
- | # Type d'image (Front, back, other) | + | |
- | typeImage=$(ffprobe -i "${i}" -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=comment -of csv=s="|" | awk -F [\|] '{print $2}') | + | |
- | + | ||
- | if [[ "${typeImage}" == "Cover (front)" ]]; then | + | |
- | typeImage="3" | + | |
- | + | ||
- | elif [[ "${typeImage}" == "Cover (back)" ]]; then | + | |
- | typeImage="4" | + | |
- | + | ||
- | elif [[ "${typeImage}" == "Artist/performer" ]]; then | + | |
- | typeImage="8" | + | |
- | + | ||
- | elif [[ "${typeImage}" == "Other" ]]; then | + | |
- | typeImage="0" | + | |
- | + | ||
- | else | + | |
- | typeImage="3" | + | |
- | + | ||
- | fi | + | |
- | + | ||
- | # Sauvegarde données exsistantes du fichier source | + | |
- | vorbiscomment --list --raw "${dirOut}/out.${conteneur}" > "${dossierTmp}/fileSaveOgg.txt" | + | |
- | + | ||
- | #Suppression image exsistante | + | |
- | #sed -i -e '/^metadata_block_picture/d' "${dossierTmp}/fileSaveOgg.txt" | + | |
- | + | ||
- | # Metadata_block_picture format | + | |
- | #Lien: https://xiph.org/flac/format.html#metadata_block_picture | + | |
- | imageMimeType=$(file -b --mime-type "${dossierTmp}/${nameImage}.${codecVideoIn}") | + | |
- | + | ||
- | printf "0: %.8x" "${typeImage}" | xxd -r -g0 >> "${dossierTmp}/dataImage.txt" | + | |
- | printf "0: %.8x" $(echo -n "${imageMimeType}" | wc -c) | xxd -r -g0 >> "${dossierTmp}/dataImage.txt" | + | |
- | echo -n "${imageMimeType}" >> "${dossierTmp}/dataImage.txt" | + | |
- | printf "0: %.8x" $(echo -n "${nameImage}" | wc -c) | xxd -r -g0 >> "${dossierTmp}/dataImage.txt" | + | |
- | echo -n "${nameImage}" >> "${dossierTmp}/dataImage.txt" | + | |
- | printf "0: %.8x" 0 | xxd -r -g0 >> "${dossierTmp}/dataImage.txt" | + | |
- | printf "0: %.8x" 0 | xxd -r -g0 >> "${dossierTmp}/dataImage.txt" | + | |
- | printf "0: %.8x" 0 | xxd -r -g0 >> "${dossierTmp}/dataImage.txt" | + | |
- | printf "0: %.8x" 0 | xxd -r -g0 >> "${dossierTmp}/dataImage.txt" | + | |
- | printf "0: %.8x" $(wc -c "${dossierTmp}/cover.${codecVideoIn}" | cut --delimiter=' ' --fields=1) | xxd -r -g0 >> "${dossierTmp}/dataImage.txt" | + | |
- | + | ||
- | #Image file | + | |
- | cat "${dossierTmp}/cover.${codecVideoIn}" >> "${dossierTmp}/dataImage.txt" | + | |
- | + | ||
- | echo "metadata_block_picture=$(base64 --wrap=0 < "${dossierTmp}/dataImage.txt")" >> "${dossierTmp}/fileSaveOgg.txt" | + | |
- | + | ||
- | #Update vorbis file comments | + | |
- | vorbiscomment --write --raw --commentfile "${dossierTmp}/fileSaveOgg.txt" "${dirOut}/${fileName}.${conteneur}" | + | |
- | + | ||
- | #Delete temp files | + | |
- | rm "${dossierTmp}/dataImage.txt" | + | |
- | rm "${dossierTmp}/fileSaveOgg.txt" | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function COVER_MP3() | + | |
- | { | + | |
- | if [[ "${typeImage}" == "Cover (front)" ]]; then | + | |
- | typeImage="FRONT_COVER" | + | |
- | + | ||
- | elif [[ "${typeImage}" == "Cover (back)" ]]; then | + | |
- | typeImage="BACK_COVER" | + | |
- | + | ||
- | elif [[ "${typeImage}" == "Artist/performer" ]]; then | + | |
- | typeImage="ARTIST" | + | |
- | + | ||
- | elif [[ "${typeImage}" == "Other" ]]; then | + | |
- | typeImage="OTHER" | + | |
- | + | ||
- | else | + | |
- | typeImage="FRONT_COVER" | + | |
- | + | ||
- | fi | + | |
- | + | ||
- | # Ajout de l'image au fichier audio | + | |
- | eyeD3 --add-image="${dossierTmp}/${nameImage}.${codecVideoIn}":"${typeImage}":"${nameImage}" "${dirOut}/${fileName}.${conteneur}" | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | function COVER_OTHER() | + | |
- | { | + | |
- | if [[ "${typeImage}" == "Cover \(back\)" ]]; then | + | |
- | + | ||
- | # renommage image cover en "cover" | + | |
- | mv "${dossierTmp}/${nameImage}.${codecVideoIn}" "${dossierTmp}/cover.${codecVideoIn}" | + | |
- | + | ||
- | # Ajout de l'image au fichier audio | + | |
- | kid3-cli -c "set picture:"${dossierTmp}/cover.${codecVideoIn}" ''" "${dirOut}/${fileName}.${conteneur}" | + | |
- | + | ||
- | fi | + | |
- | } | + | |
- | + | ||
- | #=========================================================================================================== | + | |
- | function MAIN() | + | |
- | { | + | |
- | # Chargement fichier de configurations | + | |
- | . "${fileConfig}" | + | |
- | + | ||
- | YADMAIN | + | |
- | + | ||
- | # Si aucune source sélectionnée | + | |
- | if [[ "${status}" -eq "0" ]] && [[ "${fileIn}" == "" ]]; then | + | |
- | status="4" | + | |
- | fi | + | |
- | + | ||
- | # YADMAIN Bouton "Quitter" ou "Croix fenêtre" | + | |
- | if [[ "${status}" -eq "1" ]] || [[ "${status}" -eq "252" ]]; then | + | |
- | rm -rf "${dossierTmp}" | + | |
- | exit | + | |
- | + | ||
- | # YADMAIN Bouton "Configuration par défaut" | + | |
- | elif [[ "${status}" -eq "3" ]]; then | + | |
- | SAVE | + | |
- | CONFIGDEFAUT | + | |
- | MAIN | + | |
- | + | ||
- | # YADMAIN Bouton "Préférences" | + | |
- | elif [[ "${status}" -eq "2" ]]; then | + | |
- | SAVE | + | |
- | YADPREFERENCE | + | |
- | + | ||
- | # YADPREFERENCE Bouton "Quitter" ou "Croix fenêtre" | + | |
- | if [[ "${status}" -eq "1" ]] || [[ "${status}" -eq "252" ]]; then | + | |
- | rm -rf "${dossierTmp}" | + | |
- | exit | + | |
- | + | ||
- | # YADPREFERENCE Bouton "Annuler" | + | |
- | elif [[ "${status}" -eq "2" ]]; then | + | |
- | MAIN | + | |
- | + | ||
- | # YADPREFERENCE Bouton "Valider" | + | |
- | elif [[ "${status}" -eq "0" ]]; then | + | |
- | SAVE | + | |
- | MAIN | + | |
- | fi | + | |
- | + | ||
- | # YADMAIN Bouton "Source" ou aucune source sélectionnée | + | |
- | elif [[ "${status}" -eq "4" ]]; then | + | |
- | SAVE | + | |
- | YADSOURCE | + | |
- | + | ||
- | # YADSOURCE Bouton "Quitter" ou "Croix fenêtre" | + | |
- | if [[ "${status}" -eq "1" ]] || [[ "${status}" -eq "252" ]]; then | + | |
- | rm -rf "${dossierTmp}" | + | |
- | exit | + | |
- | + | ||
- | # YADSOURCE Bouton "Annuler" | + | |
- | elif [[ "${status}" -eq "2" ]]; then | + | |
- | MAIN | + | |
- | + | ||
- | + | ||
- | # YADSOURCE choix "Fichier avec analyse" | + | |
- | elif [[ "${source}" == "Fichier avec analyse" ]]; then | + | |
- | YADFILE | + | |
- | + | ||
- | # Si dossier selectionner, liste les fichiers contenu du dossier | + | |
- | [[ -d "${fileIn}" ]] && fileIn=$(ls "${fileIn}"/*) | + | |
- | + | ||
- | # YADFILE Bouton "Quitter" ou "Croix fenêtre" | + | |
- | if [[ "${status}" -eq "1" ]] || [[ "${status}" -eq "252" ]]; then | + | |
- | rm -rf "${dossierTmp}" | + | |
- | exit | + | |
- | + | ||
- | # YADFILE Bouton "Annuler" | + | |
- | elif [[ "${status}" -eq "2" ]]; then | + | |
- | MAIN | + | |
- | + | ||
- | # YADFILE Bouton "Valider" | + | |
- | elif [[ "${status}" -eq "0" ]]; then | + | |
- | + | ||
- | STREAM | YADPROGRESS | + | |
- | + | ||
- | IFS=$'\n' | + | |
- | TabYadStream=($(cat "${dossierTmp}/yadStream.txt")) | + | |
- | rm "${dossierTmp}/yadStream.txt" | + | |
- | + | ||
- | MAIN | + | |
- | fi | + | |
- | + | ||
- | # YADSOURCE choix "Fichier" | + | |
- | elif [[ "${source}" == "Fichier" ]]; then | + | |
- | YADFILE | + | |
- | + | ||
- | # Si dossier selectionner, liste les fichiers contenu du dossier | + | |
- | [[ -d "${fileIn}" ]] && fileIn=$(ls "${fileIn}"/*) | + | |
- | + | ||
- | # YADFILE Bouton "Quitter" ou "Croix fenêtre" | + | |
- | if [[ "${status}" -eq "1" ]] || [[ "${status}" -eq "252" ]]; then | + | |
- | rm -rf "${dossierTmp}" | + | |
- | exit | + | |
- | + | ||
- | # YADFILE Bouton "Annuler" | + | |
- | elif [[ "${status}" -eq "2" ]]; then | + | |
- | MAIN | + | |
- | + | ||
- | # YADFILE Bouton "Valider" | + | |
- | elif [[ "${status}" -eq "0" ]]; then | + | |
- | STREAM_SIMPLE | YADPROGRESS | + | |
- | + | ||
- | IFS=$'\n' | + | |
- | TabYadStream=($(cat "${dossierTmp}/yadStream.txt")) | + | |
- | rm "${dossierTmp}/yadStream.txt" | + | |
- | + | ||
- | MAIN | + | |
- | fi | + | |
- | + | ||
- | # YADSOURCE choix "DVD" | + | |
- | elif [[ "${source}" == "DVD" ]]; then | + | |
- | echo "Source DVD à finir" | + | |
- | + | ||
- | # YADSOURCE choix "CD" | + | |
- | elif [[ "${source}" == "CD" ]]; then | + | |
- | echo "Source CD à finir" | + | |
- | + | ||
- | # YADSOURCE choix "DDL" | + | |
- | elif [[ "${source}" == "DDL" ]]; then | + | |
- | echo "Source DDL à finir" | + | |
- | + | ||
- | fi | + | |
- | + | ||
- | # YADMAIN Bouton "Lancer conversion" | + | |
- | elif [[ "${status}" -eq "0" ]]; then | + | |
- | SAVE | + | |
- | + | ||
- | if [[ "${source}" == "Fichier avec analyse" ]]; then | + | |
- | # Récupération de la valeur TRUE et FALSE depuis YADMAIN et fusion avec les données du fichier stream.txt | + | |
- | IFS=$"|" | + | |
- | numLine="4" # Ligne 4 première ligne avec valeur TRUE ou FALSE | + | |
- | stream=$( | + | |
- | while read line; do | + | |
- | bol=$(awk 'NR == '${numLine}' {printf "%s" ,$1}' <<< "$(printf "%s\n" ${yadMain} | awk NF)") | + | |
- | printf "${bol}${line}\n" | + | |
- | ((numLine+=1)) | + | |
- | done <<< $(cat "${dossierTmp}/stream.txt") | awk -F [\|] '{if ($1 ~ /TRUE/) {print $0}}') | + | |
- | + | ||
- | SAVE | + | |
- | FFMPEG | + | |
- | MAIN | + | |
- | + | ||
- | elif [[ "${source}" == "Fichier" ]]; then | + | |
- | + | ||
- | SAVE | + | |
- | FFMPEG_SIMPLE | + | |
- | MAIN | + | |
- | fi | + | |
- | fi | + | |
- | } | + | |
- | #=========================================================================================================== | + | |
- | CONFIGURATION | + | |
- | + | ||
- | #fileIn="/home/$USER/Bureau/0in.m4a" ## TEST | + | |
- | #STREAM ## TEST | + | |
- | + | ||
- | MAIN | + | |
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.sm.devicesecurity" # This is the antivirus in Settings -> Device care -> Security | ||
+ | # adb shell "pm uninstall -k --user 0 com.samsung.android.sm.policy" # SCPM Client, *might* be used for power savings: https://www.reddit.com/r/GalaxyS6/comments/4cg70v/what_is_scpm_client/d2ij0ep/ but performs network requests | ||
+ | # adb shell "pm uninstall -k --user 0 com.samsung.android.spdclient" # Security policy updates, updates the SELinux policies according to Security Enhancements for Android (SE for Android) | ||
+ | # adb shell "pm uninstall -k --user 0 com.samsung.android.spdfnote" # Write on PDF | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.stickercenter" # StickerCenter, related to Samsung stickers: https://developer.samsung.com/galaxy/stickers | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.svcagent" # SVC Agent | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.timezone.autoupdate_O" | ||
+ | # adb shell "pm uninstall -k --user 0 com.samsung.android.timezone.data_P" # Samsung Time Zone Data | ||
+ | # adb shell "pm uninstall -k --user 0 com.samsung.android.timezone.updater" # Time Zone Updater | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.universalswitch" # Universal switch, accessibility feature to control the phone: https://www.samsung.com/uk/accessibility/mobile-universal-switch/ | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.visioncloudagent" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.android.voc" | ||
+ | # adb shell "pm uninstall -k --user 0 com.samsung.app.newtrim" # Video trimmer | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.clipboardsaveservice" # ClipboardSaveService, probably the clipboard history sometimes accessible | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.dcmservice" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.enhanceservice" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.hiddennetworksetting" | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.rcs" # RcsSettings (Rich Communication Services "joyn"), has permissions linked to cmh, and visionintelligence: https://en.wikipedia.org/wiki/Rich_Communication_Services | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.safetyinformation" # Some safety information, telling you not to put your phone in you eyes (I'm serious) | ||
+ | adb shell "pm uninstall -k --user 0 com.samsung.SMT" | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.apex" # Samsung ApexService, provides a Motion Photo player/viewer | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.applinker" # AppLinker, talks about firmware update and FeliCa Networks. | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.billing" # Samsung Checkout | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.DataCreate" # | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.magnifier" # Magnifier, uses the phone's camera | ||
+ | # adb shell "pm uninstall -k --user 0 com.sec.android.app.parser" # DRParser Mode, maybe linked to IME (Input Method Engine?) Secret Codes | ||
+ | # adb shell "pm uninstall -k --user 0 com.sec.android.app.personalization" # Perso, related to read/write phone state according to the app's permissions | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.popupcalculator" | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.quicktool" # Quick tools | ||
+ | # adb shell "pm uninstall -k --user 0 com.sec.android.app.ringtoneBR" # ringtonebackup | ||
+ | # adb shell "pm uninstall -k --user 0 com.sec.android.app.safetyassurance" # Safety assistance, related to phone-based emergency services. Keep for safety | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.SecSetupWizard" | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.setupwizardlegalprovider" # SetupWizardLegalProvider | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.suwscriptplayer" # SuwScriptPlayer | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.sysscope" | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.app.voicenote" | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.AutoPreconfig" | ||
+ | # adb shell "pm uninstall -k --user 0 com.sec.android.easyonehand" # Probably the shrinked display for a 1-hand use feature | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.mimage.gear360editor" # 360° Photo Editor, the photo editor for the Samsung Gear 360 device | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.preloadinstaller" # Application Installer, the Internet says it's responsible of (re-)installing junk on your mobile | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.provider.badge" # BadgeProvider | ||
+ | # adb shell "pm uninstall -k --user 0 com.sec.android.soagent" # Software update, works along com.wssyncmldm? | ||
+ | # adb shell "pm uninstall -k --user 0 com.sec.android.splitsound" # SplitSoundService, probably the capability to play different music on the local device and on a bluetooth speaker | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.android.uibcvirtualsoftkey" # UIBCVirtualSoftkey, probably the service to get a software button for accessibility | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.app.RilErrorNotifier" # RilNotifier | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.automation" # TetheringAutomation, linked to an "always on tethering" option | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.downloadablekeystore" | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.enterprise.mdm.services.simpin" # Entreprise Sim Pin Service | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.enterprise.mdm.vpn" | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.mldapchecker" # MLDAPlog | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.smartcard.manager" | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.spp.push" # Samsung Push Service | ||
+ | adb shell "pm uninstall -k --user 0 com.sec.sve" # SecVideoEngineService | ||
+ | adb shell "pm uninstall -k --user 0 com.sem.factoryapp" # SEMFactoryApp | ||
+ | adb shell "pm uninstall -k --user 0 com.setk.widget" | ||
+ | adb shell "pm uninstall -k --user 0 com.skms.android.agent" # SKMSAgentService, Samsung KMS (Key Managment Service?) talks with the eSE device (embedded SEcurity): https://android-apk.org/com.skms.android.agent/ | ||
+ | # adb shell "pm uninstall -k --user 0 com.wsomacp" # Configuration message, linked to OMA (Open Mobile Alliance) CP (Client Provisioning) messages: carrier related, but can cause problems: https://gbhackers.com/single-sms-wap-crap-can-break-samsung-galaxy/ | ||
+ | adb shell "pm uninstall -k --user 0 com.wssnps" | ||
+ | adb shell "pm uninstall -k --user 0 org.simalliance.openmobileapi.service" | ||
</code> | </code> | ||
- |