Ce forum est en partie financé par l’affichage de publicités. Merci de désactiver votre bloqueur de publicités pour nous permettre de continuer à fournir ce service.
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

Tronquer longueur texte

Discussion dans 'AppleScript et Automator' créé par symbol, 5 Avril 2018.

  1. symbol

    symbol Membre confirmé

    Inscrit:
    13 Octobre 2004
    Messages:
    131
    J'aime reçus:
    5
    Bonjour

    Je perfectionne mon script pour envoyer par SMS, des données (voir mes posts a propos du KENO)

    Du moment que la longueur des données contenues dans mon fichier (.txt) est inférieure a 160 caracteres le SMS est bien envoyé.

    Par contre au dessus, l'api free mobile me renvoi une erreur 400.

    J'utilise la commande :

    Code (Text):

     curl -i --insecure "https://smsapi.free-mobile.fr/sendmsg?user=0123456789&pass=xxxxxxxxxxxx&msg=${RESULTATCONVERTI}"
     
    Est-il possible de "couper" la longueur du texte afin de limité l'envoi par SMS a 159 caracteres (et envoyer autant de SMS pour completer l'intégralité du texte).

    Merci
     
  2. byte_order

    byte_order Membre confirmé

    Inscrit:
    31 Juillet 2012
    Messages:
    153
    J'aime reçus:
    29
    Code (Text):
    ...&msg=${RESULTATCONVERTI::159}"
    Ah, nan, bash sous macOS est très vieux, mince, ça va pas marcher ça.

    Avant d'appeler la commande curl:
    Code (Text):
    RESULTATCONVERTI=$(echo "$RESULTATCONVERTI" | cut -c1-159)
     
    #2 byte_order, 5 Avril 2018
    Dernière édition: 5 Avril 2018
  3. symbol

    symbol Membre confirmé

    Inscrit:
    13 Octobre 2004
    Messages:
    131
    J'aime reçus:
    5
    Je vais essayer et te dire ce que ca donne.

    Merci :)
     
  4. symbol

    symbol Membre confirmé

    Inscrit:
    13 Octobre 2004
    Messages:
    131
    J'aime reçus:
    5
    Finalement, au lieu de tronquer les resultats, il serait plus pratique d'envoyer un message par SMS, pour indiquer que la liste des gagnants est trop longue pour etre envoyer par SMS, et qu'il faut aller voir les resultats via un lien.

    - les conditions : Si contenu de ${RESULTATCONVERTI} supérieur a 159 caracteres alors envoyer SMS "Veuillez consulter le résultat complet a "http://kenopronos.free.fr/RESULTATS.pdf" sinon, envoyer le SMS normal.

    Ca doit surement se faire un "IF" "ENDIF"

    Code (Text):

     curl -i --insecure "https://smsapi.free-mobile.fr/sendmsg?user=0123456789&pass=xxxxxxxxxx&msg=${RESULTATCONVERTI}"
     
    Si quelqu'un connait la syntaxe exacte. De mon coté j'essai de voir si je trouve les commandes qui correspondent.

    Merci


    MAJ : bon, pour compter les caracteres c'est
    Code (Text):

    wc -m /Users/xxx/Desktop/RESULTATSSMS2.txt
     
    mais comment "dire" que si valeur de wc - m > 159 alors envoi SMS normal :-/
     
    #4 symbol, 7 Avril 2018
    Dernière édition: 7 Avril 2018
  5. ecatomb

    ecatomb Membre émérite
    Club MacG

    Inscrit:
    21 Septembre 2016
    Messages:
    689
    J'aime reçus:
    80
    Code (Text):
    longueur=$(echo "symbol envoie des message trop long" | wc -c)
    if [ $longueur -lt 25 ]
    then
    echo "moins de 25"
    else
    echo "au moins 25"
    fi
    :D
     
  6. symbol

    symbol Membre confirmé

    Inscrit:
    13 Octobre 2004
    Messages:
    131
    J'aime reçus:
    5
    Ecatomb de nouveau a mon secours :) Merci

    Je regarde en detail, et vois ce que je peux en faire.


    MAJ :

    Je ne veux pas faire mon malin, mais c'est pas plutot ?
    wc [OPTION]... [FILE]...
    Principales options :
    -l Compter le nombre de lignes
    -w Compter le nombre de mots
    -c Compter le nombre d'octets
    -m Compter le nombre de caractères <============
    -C Identique à -m


    Sinon, je veux compter le nombre de caracteres qui se trouvent dans le fichier "/Users/xxx/Desktop/RESULTATSSMS2.txt"
     
    #6 symbol, 7 Avril 2018
    Dernière édition: 7 Avril 2018
  7. symbol

    symbol Membre confirmé

    Inscrit:
    13 Octobre 2004
    Messages:
    131
    J'aime reçus:
    5
    J'ai essayé ca :

    Code (Text):

    #!/usr/bin/env bash

    longueur = '/Users/xxx/Desktop/RESULTATSSMS2.txt' | wc -c

    if [ $longueur -lt 650 ]
    then
      curl -i --insecure "https://smsapi.free-mobile.fr/sendmsg?user=0123456789&pass=xxxxxxxxxx&msg=${RESULTATCONVERTI}"
    else
      curl -i --insecure "https://smsapi.free-mobile.fr/sendmsg?user=0123456789&pass=xxxxxxxxxx&msg=RECAP trop long par SMS, consulter l'intégralité de la liste a http://kenopronos.free-bb.eu"
    fi
     

    J'ai les erreurs :
    Code (Text):

    Last login: Sat Apr  7 19:43:01 on ttys000
    iMac-de-xxx:~ xxx$ /Users/xxx/Desktop/TEST.sh ; exit;
    /Users/xxx/Desktop/TEST.sh: line 3: longueur: command not found
           0
    /Users/xxx/Desktop/TEST.sh: line 5: [: -lt: unary operator expected
    HTTP/1.1 200 OK
    Server: nginx
    Date: Sat, 07 Apr 2018 17:47:48 GMT
    Transfer-Encoding: chunked
    Connection: keep-alive

    logout
    Saving session...
    ...copying shared history...
    ...saving history...truncating history files...
    ...completed.

    [Opération terminée]
     
     
  8. ecatomb

    ecatomb Membre émérite
    Club MacG

    Inscrit:
    21 Septembre 2016
    Messages:
    689
    J'aime reçus:
    80
    Effectivement, c'est "-m" même si c'est plutôt identique ;)
    Code (Text):
         -m      The number of characters in each input file is written to the standard output.  If the current locale does not
                support multibyte characters, this is equivalent to the -c option.  This will cancel out any prior usage of the
                -c option.
    Tu as une erreur dans ton cas. Comme ceci ce sera mieux :
    Code (Text):
    longueur = $(cat '/Users/xxx/Desktop/RESULTATSSMS2.txt' | wc -m)
     
  9. symbol

    symbol Membre confirmé

    Inscrit:
    13 Octobre 2004
    Messages:
    131
    J'aime reçus:
    5
    Code (Text):

    #!/usr/bin/env bash


    longueur = $(cat '/Users/xxx/Desktop/RESULTATSSMS2.txt' | wc -m)

    if [ $longueur -lt 650 ]
    then
      curl -i --insecure "https://smsapi.free-mobile.fr/sendmsg?user=0123456789&pass=xxxxxxxxxx&msg=${RESULTATCONVERTI}"
    else
      curl -i --insecure "https://smsapi.free-mobile.fr/sendmsg?user=0123456789&pass=xxxxxxxx&msg=RECAP trop long par SMS, consulter l'intégralité de la liste a http://kenopronos.free-bb.eu"
    fi
     
    me renvoi 2 erreurs :
    Code (Text):

    iMac-de-xxx:~ xxx$ /Users/xxx/Desktop/TEST.sh ; exit;
    /Users/xxx/Desktop/TEST.sh: line 4: longueur: command not found   <----
    /Users/xxx/Desktop/TEST.sh: line 6: [: -lt: unary operator expected   <----
    HTTP/1.1 200 OK
    Server: nginx
    Date: Sat, 07 Apr 2018 18:12:44 GMT
    Transfer-Encoding: chunked
     

    MAJ : la commande ok est
    longueur=$(cat '/Users/xxx/Desktop/RESULTATSSMS2.txt' | wc -m)
    pas d'espace avant et apres "="
     
    #9 symbol, 7 Avril 2018
    Dernière édition: 7 Avril 2018
  10. ecatomb

    ecatomb Membre émérite
    Club MacG

    Inscrit:
    21 Septembre 2016
    Messages:
    689
    J'aime reçus:
    80
    Oups je n'avais pas fait attention à ça, il reste encore les espace autour du symbole "=" qui gênent.
     
  11. byte_order

    byte_order Membre confirmé

    Inscrit:
    31 Juillet 2012
    Messages:
    153
    J'aime reçus:
    29
    Sinon en Bash ya aussi ${#nomdelavariable} qui retourne la longueur.

    Code (Text):

    # demo en ligne de commande
    test ${#RESULTATCONVERTI} -lt 160 && echo "envoi par sms" || echo "envoi par url"

    # dans un script...
    if [ ${#RESULTATCONVERTI} -lt 160 ]; then
        # envoi par sms
    else
        # envoi par url
    fi
     
     
    ecatomb aime ça.
  12. symbol

    symbol Membre confirmé

    Inscrit:
    13 Octobre 2004
    Messages:
    131
    J'aime reçus:
    5
    Screenshot_2018-04-10-20-01-49.jpg 1) pourquoi c'est ${#RESULTATCONVERTI} et pas ${RESULTATCONVERTI} ?


    2) combien comptez vous de caracteres dans le SMS ci-dessous (car etrangement celui m'arrive par SMS alors qu'ils sont normalement limité a 160 caracteres (voir photo ecran rose) ?

    Mardi 10 avril 2018 - Midi :%0D%0A--------------------------------%0D%0A01 03 04 13 15 16 19 21 25 26 27 33 35 36 41 45 52 56 61 62%0D%0A--------------------------------%0D%0A%0D%0AMAGNETICOTEST X1 : 13-14-15-27-16-68%0D%0A 4/6 2€X1 >> 2 € <<%0D%0A--------------------------------%0D%0A%0D%0AMAGNETICOTEST X1 : 15-16-17-27-68%0D%0A 3/5 2€X1 >> 2 € <<%0D%0A--------------------------------%0D%0A%0D%0AMAGNETICOTEST X1 : 19-20-21-27-16-68%0D%0A 4/6 2€X1 >> 2 € <<%0D%0A--------------------------------%0D%0A%0D%0AELSIE X1 : 01 04 07%0D%0A 2/3 2€X1 >> 2 € <<%0D%0A--------------------------------%0D%0A%0D%0AJEF X1 : 01-02-03-13-15-16-24-67-69%0D%0A 5/9 2€X1 >> 2 € <<%0D%0A--------------------------------%0D%0A%0D%0ARECAP du 10-04-2018 14:15:09%0D%0Ahttp://kenopronos.free-bb.eu © Tous droits réservés
     
    #12 symbol, 10 Avril 2018
    Dernière édition: 10 Avril 2018
  13. ecatomb

    ecatomb Membre émérite
    Club MacG

    Inscrit:
    21 Septembre 2016
    Messages:
    689
    J'aime reçus:
    80
    ${RESULTATCONVERTI} = contenu de la variable (le texte complet)
    ${#RESULTATCONVERTI} = nombre de caractère du texte stocké dans la variable

    Code (Text):
    xxx@xxx:~$ test='Mardi 10 avril 2018 - Midi :%0D%0A--------------------------------%0D%0A01 03 04 13 15 16 19 21 25 26 27 33 35 36 41 45 52 56 61 62%0D%0A--------------------------------%0D%0A%0D%0AMAGNETICOTEST X1 : 13-14-15-27-16-68%0D%0A 4/6 2€X1 >> 2 € <<%0D%0A--------------------------------%0D%0A%0D%0AMAGNETICOTEST X1 : 15-16-17-27-68%0D%0A 3/5 2€X1 >> 2 € <<%0D%0A--------------------------------%0D%0A%0D%0AMAGNETICOTEST X1 : 19-20-21-27-16-68%0D%0A 4/6 2€X1 >> 2 € <<%0D%0A--------------------------------%0D%0A%0D%0AELSIE X1 : 01 04 07%0D%0A 2/3 2€X1 >> 2 € <<%0D%0A--------------------------------%0D%0A%0D%0AJEF X1 : 01-02-03-13-15-16-24-67-69%0D%0A 5/9 2€X1 >> 2 € <<%0D%0A--------------------------------%0D%0A%0D%0ARECAP du 10-04-2018 14:15:09%0D%0Ahttp://kenopronos.free-bb.eu © Tous droits réservés'
    xxx@xxx:~$ echo ${test}
    Mardi 10 avril 2018 - Midi :%0D%0A--------------------------------%0D%0A01 03 04 13 15 16 19 21 25 26 27 33 35 36 41 45 52 56 61 62%0D%0A--------------------------------%0D%0A%0D%0AMAGNETICOTEST X1 : 13-14-15-27-16-68%0D%0A 4/6 2€X1 >> 2 € <<%0D%0A--------------------------------%0D%0A%0D%0AMAGNETICOTEST X1 : 15-16-17-27-68%0D%0A 3/5 2€X1 >> 2 € <<%0D%0A--------------------------------%0D%0A%0D%0AMAGNETICOTEST X1 : 19-20-21-27-16-68%0D%0A 4/6 2€X1 >> 2 € <<%0D%0A--------------------------------%0D%0A%0D%0AELSIE X1 : 01 04 07%0D%0A 2/3 2€X1 >> 2 € <<%0D%0A--------------------------------%0D%0A%0D%0AJEF X1 : 01-02-03-13-15-16-24-67-69%0D%0A 5/9 2€X1 >> 2 € <<%0D%0A--------------------------------%0D%0A%0D%0ARECAP du 10-04-2018 14:15:09%0D%0Ahttp://kenopronos.free-bb.eu © Tous droits réservés
    xxx@xxx:~$ echo ${#test}
    800
    xxx@xxx:~$
     
  14. symbol

    symbol Membre confirmé

    Inscrit:
    13 Octobre 2004
    Messages:
    131
    J'aime reçus:
    5

Partager cette page

Chargement...

iOccasion - Achetez un produit Apple d'occasion

refurb Apple