Conversor de Board Record CSV a PM Wiki

Esta apliación nace de la experimentación de jugar con Python. Aprovechando que la app que utilizo para guardar las partidas de los juegos de mesa tiene la posibilidad de exportar a fichero csv, ¿ por qué no leer los datos y crear diferentes páginas estáticas para su directa publicación dentro de PmWiki ? Experimentar, jugar, aprender y porque no, llenar de contenido.

  1.  
  2. # Abrir el archivo CSV
  3. import csv
  4. import os
  5.  
  6. fout = open('salida.txt','w',encoding='utf-8')
  7. with open('20250414.BGG.Export.csv', newline='', encoding='utf-8') as archivo:
  8.     lector = csv.reader(archivo)  # Crear un objeto lector
  9.     ax = 0
  10.     for fila in lector:
  11.         ax = ax + 1
  12.         if ax == 1:
  13.             cabecera = fila
  14.             continue
  15.         if fila[ cabecera.index('own')] == '1':
  16.  
  17.  
  18. # objectname,objectid,rating,numplays,weight,own,fortrade,want,wanttobuy,wanttoplay,prevowned,
  19. # preordered,wishlist,wishlistpriority,wishlistcomment,comment,conditiontext,haspartslist,
  20. # wantpartslist,collid,baverage,average,avgweight,rank,numowned,objecttype,originalname,minplayers,
  21. # maxplayers,playingtime,maxplaytime,minplaytime,yearpublished,bggrecplayers,bggbestplayers,
  22. # bggrecagerange,bgglanguagedependence,publisherid,imageid,year,language,other,itemtype,barcode,
  23. # pricepaid,pp_currency,currvalue,cv_currency,acquisitiondate,acquiredfrom,quantity,privatecomment,
  24. # invlocation,invdate,version_publishers,version_languages,version_yearpublished,version_nickname            
  25.  
  26.             fila_nombre = fila[ cabecera.index( 'objectname')]
  27.             fila_id     = fila[ cabecera.index( 'objectid')]
  28.             fila_comment = fila[ cabecera.index( 'comment')]
  29.             fila_rank = fila[ cabecera.index( 'rank')]
  30.             fila_image = fila[ cabecera.index( 'imageid')]
  31.             fila_numplays = fila[ cabecera.index( 'numplays')]
  32.             fila_players = fila[ cabecera.index( 'minplayers')]+'-'+fila[ cabecera.index( 'maxplayers')]
  33.             if fila[ cabecera.index( 'minplaytime')] != fila[ cabecera.index( 'maxplaytime')]:
  34.                 fila_tiempo = fila[ cabecera.index( 'minplaytime')]+'-'+fila[ cabecera.index( 'maxplaytime')]
  35.             else:
  36.                 fila_tiempo = fila[ cabecera.index( 'minplaytime')]
  37.             fila_dureza = fila[ cabecera.index( 'avgweight')][:4]
  38.  
  39.  
  40.             cadena = '[[https://boardgamegeek.com/boardgame/'+fila_id+'|'+fila_nombre+']]'+os.linesep
  41.             fout.write(cadena)
  42.             fout.write('---> PAX [ '+fila_players+' ]'+os.linesep)
  43.             fout.write('---> Peso [ '+fila_dureza+'/5 ]'+os.linesep)
  44.             if fila_tiempo != "0":
  45.                 fout.write('---> Minutos [ '+fila_tiempo+' ]'+os.linesep)
  46.             if fila_numplays != "0":
  47.                 fout.write('---> Partidas [ '+fila_numplays+' ]'+os.linesep)
  48.             if fila[ cabecera.index( 'acquisitiondate')] != '':
  49.                 fout.write('---> Desde ['+fila[ cabecera.index( 'acquisitiondate')]+'] '+fila[ cabecera.index( 'acquiredfrom')]+os.linesep)
  50.  
  51.             if fila_comment != '':
  52.                 cadena = '---> Comentario: '+fila_comment+os.linesep
  53.                 fout.write(cadena)
  54.             fout.write(os.linesep)
  55.  
  56. fout.close()
  57.  
  58.  
  59.