In [1]:
import requests
import json
import os

In [2]:
default_navitia_url = "https://api.navitia.io/v1"
default_navitia_api_key = ""

navitia_url = os.getenv('navitia_url', default_navitia_url)
navitia_api_key = os.getenv('navitia_api_key', default_navitia_api_key)

In [3]:
network_id_in_navitia = "network:0:642"

In [4]:
operator_mapping_list = {
    "MARNE ET MORIN" : "Marne et Morin",
    "DARCHE GROS": "Transdev Darche-Gros",
    "CIF": "Keolis CIF",
    "SAVAC": "SAVAC",
    "Transdev Ile-de-France Rambouillet": "Transdev Île-de-France Rambouillet",
    "Transdev Ile-de-France St-Fargeau-Ponthierry" : "Transdev Île-de-France Saint-Fargeau-Ponthierry"
}

network_mapping_list = {
    "Pays Fertois" : "Pays Fertois",
    "Pays de l'Ourcq" : "Pays de l'Ourcq",
    "Pays Créçois" : "Pays Créçois",
    "CIF": "Les Courriers de l'Île-de-France",
    'Goëlys' :'Goëlys',
    "SAVAC": "SAVAC",
    "Réseau du Canton de Perthes" :"Canton de Perthes en Gâtinais",
    "Rambouillet Interurbain" : "Réseau Interurbain de Rambouillet"
}

In [5]:
lines_url = "{}/coverage/fr-idf/networks/{}/lines/".format(navitia_url, network_id_in_navitia) 
#TODO, il peut y avoir plusieurs pages !!
lines_call = requests.get(lines_url, headers={'Authorization': navitia_api_key})
lines_result_json = lines_call.json()
if not 'lines' in lines_result_json:
    print('KO navitia')
    all_lines = []
else :
    all_lines=lines_result_json['lines']

In [6]:
text_result = ""

for a_line in all_lines:
    text_result += """
# Ligne {}    
    """.format(a_line['code'])
    
    line_interop_codes = {elem['type']: elem['value'] for elem in a_line['codes']}
    if 'osm_line_id' in line_interop_codes:
        text_result += """
http://openstreetmap.org/relation/{}
        """.format(line_interop_codes['osm_line_id'].split(':')[-1])
        continue
    
    # on récupère la bonne valeur pour le tag operator
    company_url = "{}/coverage/fr-idf/lines/{}/companies".format(navitia_url, a_line['id'])
    company_call = requests.get(company_url, headers={'Authorization': navitia_api_key})
    company = company_call.json()['companies'][0]['name']
    operator = operator_mapping_list[company]
    
    # on essaye de deviner la destination
    if len(a_line['routes']) != 2:
        text_result += """
Attention, la ligne a {} trajet(s)        
        """.format(len(a_line['routes']))
        dest = "TODO"
    else :
        dest = a_line['routes'][1]['direction']['name']
    
    #on crée le template pour la ligne à créer
    init_template = """
{{{{User:Singing-Poppy/Template:InitPTRelations
|ref = {ref}
|from = {from_}
|to = {to}
|operator = {operator}
|network = {network}
|pt_mode = bus
}}}}
    """.format(
        ref=a_line['code'],
        from_=a_line['routes'][0]['direction']['name'],
        to=dest, 
        operator=operator,
        network=network_mapping_list[a_line['network']['name']],
    )
    
    text_result += """
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```{}
```
    """.format(init_template)
    
    #on crée le template pour la ligne une fois créée
    wiki_line = """
|-
|style="background-color:#{color}; text-align: center; color: #000000" rowspan="{nb_routes}"| {ref} 
|colspan="3"| {{{{browseLine|0||ref={ref}|style=paris}}}} '''TODO''' ||
|-""".format(
        ref=a_line['code'],
        color=a_line['color'],
        nb_routes=len(a_line['routes']) +1,
    )
    for a_route in a_line['routes']:
        wiki_line+= """
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- """
        
    text_result += """
Template à ajouter sur le wiki une fois la ligne créée :
```{}
```
    """.format(wiki_line)
    
print(text_result)


# Ligne 01    
    
Attention, la ligne a 1 trajet(s)        
        
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```
{{User:Singing-Poppy/Template:InitPTRelations
|ref = 01
|from = Gare de Ponthierry Pringy (Saint-Fargeau-Ponthierry)
|to = TODO
|operator = Transdev Île-de-France Saint-Fargeau-Ponthierry
|network = Canton de Perthes en Gâtinais
|pt_mode = bus
}}
    
```
    
Template à ajouter sur le wiki une fois la ligne créée :
```
|-
|style="background-color:#799C13; text-align: center; color: #000000" rowspan="2"| 01 
|colspan="3"| {{browseLine|0||ref=01|style=paris}} '''TODO''' ||
|-
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
```
    
# Ligne 09    
    
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```
{{User:Singing-Poppy/Template:InitPTRelations
|ref = 09
|from = Gare de Melun (Melun)
|to = Cornebiche (Arbonne-la-Forêt)
|operator = Transdev Île-de-France Saint-Fargeau-Ponthierry
|network = Canton de Perthes en Gâtinais
|pt_mode = bus
}}
    
```
    
Template à ajouter sur le wiki une fois la ligne créée :
```
|-
|style="background-color:#7F1518; text-align: center; color: #000000" rowspan="3"| 09 
|colspan="3"| {{browseLine|0||ref=09|style=paris}} '''TODO''' ||
|-
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
```
    
# Ligne 9CC    
    
Attention, la ligne a 4 trajet(s)        
        
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```
{{User:Singing-Poppy/Template:InitPTRelations
|ref = 9CC
|from = Centre Commercial (Villiers-en-Bière)
|to = TODO
|operator = Transdev Île-de-France Saint-Fargeau-Ponthierry
|network = Canton de Perthes en Gâtinais
|pt_mode = bus
}}
    
```
    
Template à ajouter sur le wiki une fois la ligne créée :
```
|-
|style="background-color:#FCC300; text-align: center; color: #000000" rowspan="5"| 9CC 
|colspan="3"| {{browseLine|0||ref=9CC|style=paris}} '''TODO''' ||
|-
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
```
    
# Ligne 9M    
    
Attention, la ligne a 6 trajet(s)        
        
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```
{{User:Singing-Poppy/Template:InitPTRelations
|ref = 9M
|from = Mairie Beaufils (Saint-Fargeau-Ponthierry)
|to = TODO
|operator = Transdev Île-de-France Saint-Fargeau-Ponthierry
|network = Canton de Perthes en Gâtinais
|pt_mode = bus
}}
    
```
    
Template à ajouter sur le wiki une fois la ligne créée :
```
|-
|style="background-color:#FCC300; text-align: center; color: #000000" rowspan="7"| 9M 
|colspan="3"| {{browseLine|0||ref=9M|style=paris}} '''TODO''' ||
|-
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
```
    
# Ligne 11 GARE    
    
Attention, la ligne a 4 trajet(s)        
        
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```
{{User:Singing-Poppy/Template:InitPTRelations
|ref = 11 GARE
|from = Gare de Ponthierry Pringy (Saint-Fargeau-Ponthierry)
|to = TODO
|operator = Transdev Île-de-France Saint-Fargeau-Ponthierry
|network = Canton de Perthes en Gâtinais
|pt_mode = bus
}}
    
```
    
Template à ajouter sur le wiki une fois la ligne créée :
```
|-
|style="background-color:#799C13; text-align: center; color: #000000" rowspan="5"| 11 GARE 
|colspan="3"| {{browseLine|0||ref=11 GARE|style=paris}} '''TODO''' ||
|-
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
```
    
# Ligne 11A    
    
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```
{{User:Singing-Poppy/Template:InitPTRelations
|ref = 11A
|from = Puits Beau (Saint-Fargeau-Ponthierry)
|to = Trois Horloges (Melun)
|operator = Transdev Île-de-France Saint-Fargeau-Ponthierry
|network = Canton de Perthes en Gâtinais
|pt_mode = bus
}}
    
```
    
Template à ajouter sur le wiki une fois la ligne créée :
```
|-
|style="background-color:#E95D0F; text-align: center; color: #000000" rowspan="3"| 11A 
|colspan="3"| {{browseLine|0||ref=11A|style=paris}} '''TODO''' ||
|-
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
```
    
# Ligne 11B    
    
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```
{{User:Singing-Poppy/Template:InitPTRelations
|ref = 11B
|from = Lycée Joliot Curie (Dammarie-les-Lys)
|to = Florélites (Saint-Fargeau-Ponthierry)
|operator = Transdev Île-de-France Saint-Fargeau-Ponthierry
|network = Canton de Perthes en Gâtinais
|pt_mode = bus
}}
    
```
    
Template à ajouter sur le wiki une fois la ligne créée :
```
|-
|style="background-color:#E95D0F; text-align: center; color: #000000" rowspan="3"| 11B 
|colspan="3"| {{browseLine|0||ref=11B|style=paris}} '''TODO''' ||
|-
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
```
    
# Ligne 11C    
    
Attention, la ligne a 3 trajet(s)        
        
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```
{{User:Singing-Poppy/Template:InitPTRelations
|ref = 11C
|from = Florélites (Saint-Fargeau-Ponthierry)
|to = TODO
|operator = Transdev Île-de-France Saint-Fargeau-Ponthierry
|network = Canton de Perthes en Gâtinais
|pt_mode = bus
}}
    
```
    
Template à ajouter sur le wiki une fois la ligne créée :
```
|-
|style="background-color:#E95D0F; text-align: center; color: #000000" rowspan="4"| 11C 
|colspan="3"| {{browseLine|0||ref=11C|style=paris}} '''TODO''' ||
|-
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
```
    
# Ligne 11CC    
    
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```
{{User:Singing-Poppy/Template:InitPTRelations
|ref = 11CC
|from = Centre Commercial (Villiers-en-Bière)
|to = Puits Beau (Saint-Fargeau-Ponthierry)
|operator = Transdev Île-de-France Saint-Fargeau-Ponthierry
|network = Canton de Perthes en Gâtinais
|pt_mode = bus
}}
    
```
    
Template à ajouter sur le wiki une fois la ligne créée :
```
|-
|style="background-color:#FCC300; text-align: center; color: #000000" rowspan="3"| 11CC 
|colspan="3"| {{browseLine|0||ref=11CC|style=paris}} '''TODO''' ||
|-
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
```
    
# Ligne 21    
    
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```
{{User:Singing-Poppy/Template:InitPTRelations
|ref = 21
|from = Puits Beau (Saint-Fargeau-Ponthierry)
|to = Collège la Vallée (Avon)
|operator = Transdev Île-de-France Saint-Fargeau-Ponthierry
|network = Canton de Perthes en Gâtinais
|pt_mode = bus
}}
    
```
    
Template à ajouter sur le wiki une fois la ligne créée :
```
|-
|style="background-color:#004A99; text-align: center; color: #000000" rowspan="3"| 21 
|colspan="3"| {{browseLine|0||ref=21|style=paris}} '''TODO''' ||
|-
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
```
    
# Ligne 21CC    
    
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```
{{User:Singing-Poppy/Template:InitPTRelations
|ref = 21CC
|from = Centre Commercial (Villiers-en-Bière)
|to = Jacques Durand (Avon)
|operator = Transdev Île-de-France Saint-Fargeau-Ponthierry
|network = Canton de Perthes en Gâtinais
|pt_mode = bus
}}
    
```
    
Template à ajouter sur le wiki une fois la ligne créée :
```
|-
|style="background-color:#FCC300; text-align: center; color: #000000" rowspan="3"| 21CC 
|colspan="3"| {{browseLine|0||ref=21CC|style=paris}} '''TODO''' ||
|-
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
```
    
# Ligne 22A    
    
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```
{{User:Singing-Poppy/Template:InitPTRelations
|ref = 22A
|from = Baticop (Saint-Fargeau-Ponthierry)
|to = Collège la Vallée (Avon)
|operator = Transdev Île-de-France Saint-Fargeau-Ponthierry
|network = Canton de Perthes en Gâtinais
|pt_mode = bus
}}
    
```
    
Template à ajouter sur le wiki une fois la ligne créée :
```
|-
|style="background-color:#0084A8; text-align: center; color: #000000" rowspan="3"| 22A 
|colspan="3"| {{browseLine|0||ref=22A|style=paris}} '''TODO''' ||
|-
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
```
    
# Ligne 22B    
    
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```
{{User:Singing-Poppy/Template:InitPTRelations
|ref = 22B
|from = Valbois (Boissise-le-Roi)
|to = La Fourche Saint-Aspais (Fontainebleau)
|operator = Transdev Île-de-France Saint-Fargeau-Ponthierry
|network = Canton de Perthes en Gâtinais
|pt_mode = bus
}}
    
```
    
Template à ajouter sur le wiki une fois la ligne créée :
```
|-
|style="background-color:#0084A8; text-align: center; color: #000000" rowspan="3"| 22B 
|colspan="3"| {{browseLine|0||ref=22B|style=paris}} '''TODO''' ||
|-
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
```
    
# Ligne 101    
    
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```
{{User:Singing-Poppy/Template:InitPTRelations
|ref = 101
|from = Collège F. Villon (Saint-Fargeau-Ponthierry)
|to = Jonville (Saint-Fargeau-Ponthierry)
|operator = Transdev Île-de-France Saint-Fargeau-Ponthierry
|network = Canton de Perthes en Gâtinais
|pt_mode = bus
}}
    
```
    
Template à ajouter sur le wiki une fois la ligne créée :
```
|-
|style="background-color:#BD1220; text-align: center; color: #000000" rowspan="3"| 101 
|colspan="3"| {{browseLine|0||ref=101|style=paris}} '''TODO''' ||
|-
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
```
    
# Ligne 109    
    
Template à ajouter sur le wiki si la ligne n'existe pas encore dans OSM :
```
{{User:Singing-Poppy/Template:InitPTRelations
|ref = 109
|from = Collège de Perthes (Perthes)
|to = Foret (Fleury-en-Bière)
|operator = Transdev Île-de-France Saint-Fargeau-Ponthierry
|network = Canton de Perthes en Gâtinais
|pt_mode = bus
}}
    
```
    
Template à ajouter sur le wiki une fois la ligne créée :
```
|-
|style="background-color:#BD1220; text-align: center; color: #000000" rowspan="3"| 109 
|colspan="3"| {{browseLine|0||ref=109|style=paris}} '''TODO''' ||
|-
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
|| {{Relation|0| TODO |tools=no}} ||  || {{State Route|r=NA|h=NA}} ||
|- 
```
    

In [7]:
with open('wiki.md', 'w') as out_md_file:
    out_md_file.write(text_result)