#!/bin/bash source /home/$USER/autopost/common.sh # Vérification et création des dossiers for dossier in "$DOSSIER_NFO" "$DOSSIER_NZB_ATTENTE" "$DOSSIER_NZB_FINAL" "$DOSSIER_LOGS" "tmp" do if [ ! -d "$dossier" ]; then echo -e "${ROUGE} Le dossier $dossier n'existe pas. Création... ${NORMAL}" mkdir -p "$dossier" fi done attente() { for ((i=$1; i>0; i--)); do echo -ne "Attente : $i secondes\r" sleep 1 done } checkusenet(){ SERVICE="nyuu" if pgrep -x "$SERVICE" >/dev/null then echo "$SERVICE EN COURS" sleep 16 else echo "$SERVICE OK" fi } cd "${DOSSIER_GLOBAL}" while true; do # Utilisation universelle autopost_json=$(curl -sf https://unfr.pw/autopost.status.json) autopost_file=$(echo "$autopost_json" | jq -r '.autopost') if [[ "$autopost_file" == "0" ]]; then verif=$(db_query "SELECT id, nom FROM \`$MYSQL_TABLE\` WHERE status = 0 LIMIT 1;") if [ -n "$verif" ]; then id=$(echo "$verif" | awk -F "|" '{print $1}' | xargs) name=$(echo "$verif" | awk -F "|" '{print $2}' | xargs) FILESANSEXT=${name%.*} LOG="${DOSSIER_LOGS}${FILESANSEXT}.log" echo -e "${VERT}DEBUT DE TRAITEMENT DE ${FILESANSEXT}${NORMAL}" | tee -a "$LOG" if [ "$dbtype" = "mysql" ]; then db_query "UPDATE \`$MYSQL_TABLE\` SET status = 4 WHERE id = ${id};" fi echo -e "${CYAN}CREATION DES PAR2${NORMAL}" | tee -a "$LOG" # Utilise CMD_PARPAR si défini, sinon valeurs par défaut PARPAR_OPTS="${CMD_PARPAR:--s10M -S -m4096M -t16 -r20%}" parpar $PARPAR_OPTS -O -o "${FILESANSEXT}.par2" "${name}" \ > >(tee -a "$LOG") 2> >(tee -a "$LOG" >&2) ret=$? if [ $ret -ne 0 ]; then echo -e "${ROUGE}Erreur parpar (code $ret). Marquage en échec.${NORMAL}" | tee -a "$LOG" db_query "UPDATE \`$MYSQL_TABLE\` SET status = 2 WHERE id = ${id};" rm -f "${FILESANSEXT}.par2" "${FILESANSEXT}.vol*" continue fi { echo -e "${VERT}UPLOAD SUR USENET${NORMAL}" files=( ${FILESANSEXT}.* ) checkusenet script -q -c \ "nyuu -h ${NG_HOST} -P ${NG_PORT} -S -u ${NG_USER} -p ${NG_PASS} -n ${NG_NBR_CONN} \ -g alt.binaries.boneless -o '${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb' \ --nzb-title '${FILESANSEXT}' \ -f '{rand(14)} {rand(14)}@{rand(5)}.{rand(3)}' \ --message-id '{rand(32)}@{rand(8)}.{rand(3)}' \ --subject '{rand(32)}' --nzb-subject '{filename}' \ --obfuscate-articles ${files[*]} \ --progress=stderr" \ /dev/null if [ -e "${DOSSIER_NFO}${FILESANSEXT}.json" ] || [ -e "${DOSSIER_NFO}${FILESANSEXT}.txt" ]; then echo -e "${JAUNE}VERIF DU NZB${NORMAL}" nzbsizebit=$(bash ${ANALYZER} "${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb" | jq '.Taillebit') echo -e "NZB_SIZE : ${nzbsizebit}" # Détermine si on est en mode "symlink" selon la conf symlink_mode=0 case "${MOVE_CMD:-}" in "cp -rs"|"ln -s") symlink_mode=1 ;; esac if [[ "${name}" =~ \.(iso)$ ]]; then if (( symlink_mode )); then # Suivre le lien symbolique pour obtenir la taille réelle jsonsizebit=$(du -Lb -c -- "${name}" | awk '/total/ {print $1}') else # Comportement inchangé jsonsizebit=$(du -b -c -- "${name}" | awk '/total/ {print $1}') fi else # Comportement inchangé jsonsizebit=$(jq -r '.media.track[] | select(."@type" == "General") | .FileSize' "${DOSSIER_NFO}${FILESANSEXT}.json") fi echo -e "MEDIAINFO_SIZE : ${jsonsizebit}" if [[ ${nzbsizebit} -le ${jsonsizebit} ]] || [[ ${nzbsizebit} = "NAN" ]]; then echo -e "${ROUGE}PROBLEME TAILLE NZB${NORMAL}" rm "${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb" "${FILESANSEXT}.par2" "${FILESANSEXT}.vol*" db_query "UPDATE \`$MYSQL_TABLE\` SET status = 2 WHERE id = ${id};" else echo -e "${CYAN}ENVOI SUR LE SITE${NORMAL}" if [[ "${name}" =~ \.(iso)$ ]]; then curl -s -k -L -m 60 --output /dev/null \ -F rlsname=${FILESANSEXT} \ -F bdinfo_full=@${DOSSIER_NFO}${FILESANSEXT}.bdinfo.txt \ -F bdinfo_mini=@${DOSSIER_NFO}${FILESANSEXT}.quicksummary.txt \ -F nzb=@${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb \ -F upload=upload "${URL_API}${APIKEY}" else curl -s -k -L -m 60 --output /dev/null \ -F rlsname=${FILESANSEXT} \ -F generated_nfo_json=@${DOSSIER_NFO}${FILESANSEXT}.json \ -F nzb=@${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb \ -F upload=upload "${URL_API}${APIKEY}" fi first_char=$(echo "${name:0:1}" | tr '[:lower:]' '[:upper:]') mkdir -p "${DOSSIER_NZB_FINAL}${first_char}" 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on \ "${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.7z" \ "${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb" > /dev/null 2>&1 mv "${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.7z" "${DOSSIER_NZB_FINAL}${first_char}/" rm -rf "${FILESANSEXT}"* rm "${DOSSIER_NZB_ATTENTE}${FILESANSEXT}.nzb" db_query "UPDATE \`$MYSQL_TABLE\` SET status = 1 WHERE id = ${id};" echo -e "${VERT}FIN DE TRAITEMENT DE ${FILESANSEXT}${NORMAL}" fi else echo -e "${ROUGE}ENVOI SUR LE SITE IMPOSSIBLE NFO MANQUANT${NORMAL}" fi } 2>&1 | tee -a "$LOG" fi else echo -e "${ROUGE}PROBLEME DE PROPAGATION POST EN PAUSE${NORMAL}" fi attente 3 done