Skip to content

Librairie adapté en Python de communication avec passerelle MiniPavi et exemples de services

License

Notifications You must be signed in to change notification settings

renaudgweb/MiniPaviPy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📟 MiniPavi Applications en Python

MiniPavi logo

Bienvenue dans le dépôt des applications MiniPavi ! Ce dépôt contient trois applications Minitel modernisées grâce à la passerelle MiniPavi. Chaque application exploite les capacités de MiniPavi pour offrir une expérience Minitel enrichie et interactive.

🪙 3615 CRYPTO

3615 CRYPTO est une application dédiée aux cryptomonnaies. Elle permet aux utilisateurs de suivre les cours des principales cryptomonnaies en temps réel, directement sur leur Minitel.

  • Fonctionnalités :
    • Suivi des cours des cryptomonnaies.
    • Mises à jour en temps réel.
    • Navigation fluide entre les différentes cryptomonnaies.

🚀 Utilisation de la Passerelle MiniPavi

Ces applications utilisent la passerelle MiniPavi pour communiquer avec les services Minitel. MiniPavi permet de moderniser les services Minitel en utilisant des technologies web comme les websockets et HTTP.

  • Avantages de MiniPavi :
    • Compatibilité avec les émulateurs Minitel modernes.
    • Facilité de développement grâce à l'utilisation de langages web.
    • Support pour le contenu multimédia via l'interface WebMedia.

🛠️ Installation et Configuration

Pour installer et configurer ces applications, suivez les instructions ci-dessous :

  1. Cloner le dépôt :

    git clone https://github.com/renaudgweb/MiniPaviPy.git
    cd MiniPaviPy
  2. Configurer les applications :

    • Assurez-vous d'avoir un serveur web configuré pour exécuter les scripts PHP.
    • Configurez les fichiers de configuration pour chaque application selon vos besoins.
  3. Lancer les applications :

    • Accédez aux applications via un émulateur Minitel ou un véritable terminal Minitel connecté à MiniPavi.

🚀 Exemple de code

DisplayPaginatedText.py

elif context.get('step') == 10:
            if MiniPaviCli.MiniPaviCli.fctn == 'SOMMAIRE':
                context['step'] = 0  # Retour au sommaire
            else:
                # Récupération de l'éventuel objet existant dans le contexte utilisateur
                obj_display_paginated_text = context.get('objDisplayPaginatedText')
                if not isinstance(obj_display_paginated_text, DisplayPaginatedText):
                    # L'utilisateur n'a pas l'objet dans son contexte : il vient d'arriver sur cette rubrique
                    # Fond de page
                    vdt_start = MiniPaviCli.MiniPaviCli.clear_screen()
                    with open('fond-de-page.vdt', 'r') as file:
                        vdt_start += file.read()
                    # Effacement du texte affiché
                    vdt_clear_page = MiniPaviCli.MiniPaviCli.set_pos(3, 23)
                    vdt_clear_page += MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.VDT_FDNORM + MiniPaviCli.MiniPaviCli.repeat_char(' ', 33)
                    for i in range(18):
                        vdt_clear_page += MiniPaviCli.MiniPaviCli.set_pos(1, 21 - i)
                        vdt_clear_page += MiniPaviCli.VDT_BGBLUE + MiniPaviCli.MiniPaviCli.repeat_char(' ', 33)
                    # fichier contenant le texte
                    text_filename = 'le-texte.txt'
                    # titre Cyan , double hauteur
                    vdt_pre_title = MiniPaviCli.VDT_TXTCYAN + MiniPaviCli.VDT_SZDBLH
                    # Position du titre
                    l_title = 2
                    c_title = 11
                    # Position du compteur de page
                    l_counter = 21
                    c_counter = 35
                    # Compteur de page couleur Cyan
                    vdt_pre_counter = MiniPaviCli.VDT_TXTCYAN
                    # Position début du texte
                    l_text = 5
                    c_text = 2
                    # Longueur maximum d'une ligne
                    max_length_text = 38
                    # Couleur normale : jaune
                    normal_color = MiniPaviCli.VDT_TXTYELLOW
                    # Couleur spéciale : blanc
                    special_color = MiniPaviCli.VDT_TXTWHITE
                    # Rien de particulier à afficher avant chaque ligne
                    vdt_pre_text = ''
                    # Bas de page si ni Suite ni Retour acceptés (Sommaire n'est pas gérée par l'objet, mais directement par le script)
                    vdt_none = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.VDT_FDINV + " Sommaire "
                    # Bas de page si uniquement Suite accepté
                    vdt_suite = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.VDT_FDINV + " Suite " + MiniPaviCli.VDT_FDNORM + " ou " + MiniPaviCli.VDT_FDINV + " Sommaire "
                    # Bas de page si uniquement Retour accepté
                    vdt_retour = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.VDT_FDINV + " Retour " + MiniPaviCli.VDT_FDNORM + " ou " + MiniPaviCli.VDT_FDINV + " Sommaire "
                    # Bas de page si Suite et Retour acceptés
                    vdt_suite_retour = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.VDT_FDINV + " Suite " + MiniPaviCli.VDT_FDNORM + " " + MiniPaviCli.VDT_FDINV + " Retour " + MiniPaviCli.VDT_FDNORM + " ou " + MiniPaviCli.VDT_FDINV + " Sommaire "
                    # Message d'erreur si première page atteinte et appui sur Retour
                    vdt_err_no_prev = MiniPaviCli.MiniPaviCli.to_g2("Première page !")
                    # Message d'erreur si dernière page atteinte et appui sur Suite
                    vdt_err_no_next = MiniPaviCli.MiniPaviCli.to_g2("Dernière page !")
                    # 16 lignes maximum par page
                    lines = 16
                    # initialisation
                    obj_display_paginated_text = DisplayPaginatedText(
                        vdt_start, vdt_clear_page, text_filename, l_title, c_title, vdt_pre_title,
                        l_counter, c_counter, vdt_pre_counter, l_text, c_text,
                        max_length_text, normal_color, special_color, vdt_pre_text, vdt_none, vdt_suite, vdt_retour,
                        vdt_suite_retour, vdt_err_no_prev, vdt_err_no_next, lines
                    )
                    # Execution
                    r = obj_display_paginated_text.process('', vdt)
                else:
                    # L'utilisateur a déjà l'objet dans son contexte, execution
                    r = obj_display_paginated_text.process(MiniPaviCli.MiniPaviCli.fctn, vdt)

                # A ce stade, $vdt contient le code videotex à envoyer à l'utilisateur
                # On conserve l'objet dans le contexte utilisateur pour le récupérer lors de sa prochaine action
                context['objDisplayPaginatedText'] = obj_display_paginated_text
                # On ne change pas la valeur de $step car à la prochaine action on exécute de nouveau cette partie du script

DisplayList.py

if context.get('step') == 20:
            if MiniPaviCli.MiniPaviCli.fctn == 'SOMMAIRE':
                context['step'] = 10  # Retour au sommaire
            else:
                # Liste des éléments
                list_items = [
                    '1er choix',
                    '2ème choix',
                    '3ème choix',
                    '4ème choix'
                ]

                # Récupération de l'éventuel objet existant dans le contexte utilisateur
                obj_display_list = context.get('objDisplayList')
                if not isinstance(obj_display_list, DisplayList):
                    # L'utilisateur n'a pas l'objet dans son contexte : il vient d'arriver sur cette rubrique
                    vdt_start = MiniPaviCli.MiniPaviCli.clear_screen()
                    with open('fond-de-page.vdt', 'r') as file:
                        vdt_start += file.read()

                    # Effacement du texte affiché
                    vdt_clear_page = MiniPaviCli.MiniPaviCli.set_pos(3, 23)
                    vdt_clear_page += MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.VDT_FDNORM + MiniPaviCli.MiniPaviCli.repeat_char(' ', 33)
                    for i in range(18):
                        vdt_clear_page += MiniPaviCli.MiniPaviCli.set_pos(1, 21 - i)
                        vdt_clear_page += MiniPaviCli.VDT_BGBLUE + MiniPaviCli.MiniPaviCli.repeat_char(' ', 33)

                    # Position du compteur de page
                    l_counter = 21
                    c_counter = 35

                    # Compteur de page couleur Cyan
                    vdt_pre_counter = MiniPaviCli.VDT_TXTCYAN

                    # Position début du texte
                    l_text = 5
                    c_text = 2

                    # On affiche rien de spécial avant chaque élément
                    vdt_pre_text = ''

                    # Bas de page si ni Suite ni Retour acceptés (Sommaire n'est pas géré par l'objet, mais directement par le script)
                    vdt_none = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.MiniPaviCli.to_g2("N°+ ") + MiniPaviCli.VDT_FDINV + " Envoi " + MiniPaviCli.VDT_FDNORM + " ou " + MiniPaviCli.VDT_FDINV + " Sommaire "

                    # Bas de page si uniquement Suite accepté
                    vdt_suite = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.MiniPaviCli.to_g2("N°+ ") + MiniPaviCli.VDT_FDINV + " Envoi " + MiniPaviCli.VDT_FDNORM + " " + MiniPaviCli.VDT_FDINV + " Suite " + MiniPaviCli.VDT_FDNORM + " ou " + MiniPaviCli.VDT_FDINV + " Somm. "

                    # Bas de page si uniquement Retour accepté
                    vdt_retour = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.MiniPaviCli.to_g2("N°+ ") + MiniPaviCli.VDT_FDINV + " Envoi " + MiniPaviCli.VDT_FDNORM + " " + MiniPaviCli.VDT_FDINV + " Retour " + MiniPaviCli.VDT_FDNORM + " ou " + MiniPaviCli.VDT_FDINV + " Somm. "

                    # Bas de page si Suite et Retour acceptés
                    vdt_suite_retour = MiniPaviCli.MiniPaviCli.set_pos(3, 23) + MiniPaviCli.VDT_TXTBLACK + MiniPaviCli.MiniPaviCli.to_g2("N°+ ") + MiniPaviCli.VDT_FDINV + " Envoi " + MiniPaviCli.VDT_FDNORM + " " + MiniPaviCli.VDT_FDINV + " Suite " + MiniPaviCli.VDT_FDNORM + " " + MiniPaviCli.VDT_FDINV + " Retour " + MiniPaviCli.VDT_FDNORM

                    # Message d'erreur si première page atteinte et appui sur Retour
                    vdt_err_no_prev = MiniPaviCli.MiniPaviCli.to_g2("Première page !")

                    # Message d'erreur si dernière page atteinte et appui sur Suite
                    vdt_err_no_next = MiniPaviCli.MiniPaviCli.to_g2("Dernière page !")

                    # Message d'erreur si choix incorrect saisi
                    vdt_err_choice = MiniPaviCli.MiniPaviCli.to_g2("Choix incorrect !")

                    # 8 éléments maximum par page
                    lines = 8

                    # 1 ligne vide entre chaque élément
                    space_lines = 1

                    # Le numéro de l'élément sera sur fond bleu, texte vert, inversé.
                    # Le signe # représente le numéro de l'élément et est modifié à la volée
                    vdt_item_num = MiniPaviCli.VDT_BGBLUE + MiniPaviCli.VDT_TXTGREEN + MiniPaviCli.VDT_FDINV + ' # ' + MiniPaviCli.VDT_FDNORM + MiniPaviCli.VDT_TXTYELLOW

                    # Initialisation
                    obj_display_list = DisplayList(
                        vdt_start,
                        vdt_clear_page,
                        list_items,
                        l_counter,
                        c_counter,
                        vdt_pre_counter,
                        vdt_item_num,
                        l_text,
                        c_text,
                        vdt_pre_text,
                        vdt_none,
                        vdt_suite,
                        vdt_retour,
                        vdt_suite_retour,
                        vdt_err_no_prev,
                        vdt_err_no_next,
                        vdt_err_choice,
                        lines,
                        space_lines
                    )

                    # Exécution
                    r, vdt = obj_display_list.process('', '', vdt)
                else:
                    # L'utilisateur a déjà l'objet dans son contexte, exécution
                    r, vdt = obj_display_list.process(MiniPaviCli.MiniPaviCli.fctn, MiniPaviCli.MiniPaviCli.content[0], vdt)

                # On conserve l'objet dans le contexte utilisateur pour le récupérer lors de sa prochaine action
                context['objDisplayList'] = obj_display_list

                # Attente d'une saisie
                cmd = MiniPaviCli.MiniPaviCli.create_input_txt_cmd(34, 23, 2, MiniPaviCli.MSK_ENVOI | MiniPaviCli.MSK_SOMMAIRE | MiniPaviCli.MSK_REPETITION | MiniPaviCli.MSK_SUITE | MiniPaviCli.MSK_RETOUR, True, ' ', '')

                if r == -1 or r is False:
                    # L'utilisateur n'a pas saisi de choix (ou choix invalide)
                    break

                # Un choix valide a été saisi, $r représente l’index du choix dans $list
                # On traite le choix saisi
                vdt += MiniPaviCli.MiniPaviCli.write_line_0('Choix = ' + list_items[r])
                break

📚 ressources

🔗 Import Miedit

🔗 MiEdit

🔗 minipaviCli

📬 Contact

Pour toute question ou suggestion, n'hésitez pas à ouvrir une issue ou à me contacter directement.

About

Librairie adapté en Python de communication avec passerelle MiniPavi et exemples de services

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages