from re import findall, MULTILINE

full_path = '/srv/wiki.ubuntu-it.org/www/data/pages/'

pages = [
    'ARM(2f)RootfsDaZero',
    'AmbienteGrafico(2f)Gnome(2f)AvantWindowNavigator',
    'AmbienteGrafico(2f)Gnome(2f)CairoDock',
    'AmbienteGrafico(2f)Gnome(2f)CambiareTema',
    'AmbienteGrafico(2f)Gnome(2f)GnomeDo',
    'AmbienteGrafico(2f)Gnome(2f)Installazione',
    'AmbienteGrafico(2f)Kde(2f)InstallazioneKde3',
    'AmbienteGrafico(2f)Kde(2f)InstallazioneKde4',
    'AmbienteGrafico(2f)Kde(2f)SuperKaramba',
    'AmbienteGrafico(2f)Lxde(2f)Bootsplash',
    'AmbienteGrafico(2f)Lxde(2f)Installazione',
    'AmbienteGrafico(2f)Lxde(2f)Lxlauncher',
    'AmbienteGrafico(2f)Lxde(2f)Menu',
    'AmbienteGrafico(2f)Lxde(2f)MyDocuments',
    'AmbienteGrafico(2f)Xfce(2f)AzioniThunar',
    'AmbienteGrafico(2f)Xfce(2f)Installazione',
    'AmministrazioneSistema(2f)Alien',
    'AmministrazioneSistema(2f)AptProxy',
    'AmministrazioneSistema(2f)BackupDelSistema(2f)Amanda',
    'AmministrazioneSistema(2f)BackupDelSistema(2f)BackInTime',
    'AmministrazioneSistema(2f)BackupDelSistema(2f)BackupConDar',
    'AmministrazioneSistema(2f)BackupDelSistema(2f)Duplicity',
    'AmministrazioneSistema(2f)BackupDelSistema(2f)Grsync',
    'AmministrazioneSistema(2f)BackupDelSistema(2f)Remastersys',
    'AmministrazioneSistema(2f)BackupDelSistema(2f)Rsnapshot',
    'AmministrazioneSistema(2f)BackupDelSistema(2f)Rsync',
    'AmministrazioneSistema(2f)BackupDelSistema(2f)Sbackup',
    'AmministrazioneSistema(2f)BackupDelSistema(2f)UbuntuCustomizationKit',
    'AmministrazioneSistema(2f)Bootchart',
    'AmministrazioneSistema(2f)CompilazioneKernel',
    'AmministrazioneSistema(2f)Grub(2f)InstallazioneAggiornamento',
    'AmministrazioneSistema(2f)InstallareProgrammi(2f)DaSorgenti',
    'AmministrazioneSistema(2f)PulireUbuntu',
    'AmministrazioneSistema(2f)RecuperoDati(2f)Estrazione',
    'AmministrazioneSistema(2f)RecuperoDati(2f)Immagini',
    'AmministrazioneSistema(2f)RecuperoDati(2f)Partizioni',
    'AmministrazioneSistema(2f)UbuntuItaliano',
    'AmministrazioneSistema(2f)UbuntuItaliano(2f)ElencoPacchetti',
    'AmministrazioneSistema(2f)VelocizzareBoot',
    'Architettura64Bit(2f)DomandeFrequenti',
    'Cestino(2f)Brasero',
    'Cestino(2f)HardwareVideoViaBetaUnified2',
    'Cestino(2f)IntelJaunty',
    'Cestino(2f)MultimediaAudioExaile',
    'Cestino(2f)TuxGuitar',
    'Cestino(2f)UnifiedStabile',
    'Cestino(2f)VideoNvidiaDriverLegacy',
    'CristianCozzolino(2f)Prove0',
    'CristianCozzolino(2f)Prove2',
    'Enigmail',
    'FabioMarconi(2f)Prove21',
    'FabioMarconi(2f)Prove31',
    'FabioMarconi(2f)Prove32',
    'FabioMarconi(2f)prove',
    'FabioMarconi(2f)prove2',
    'FioDos(2f)prove02',
    'FrancescoFerraro(2f)Prove0',
    'FrancescoMuriana(2f)Prove0',
    'FrancescoMuriana(2f)Prove1',
    'GPGKeyOnUSBDrive',
    'Giochi(2f)Cave9',
    'Giochi(2f)CrrcSim',
    'Giochi(2f)Dolphin',
    'Giochi(2f)DosBox',
    'Giochi(2f)Dosemu',
    'Giochi(2f)Eduke32',
    'Giochi(2f)Irrlamb',
    'Giochi(2f)Mednafen',
    'Giochi(2f)Memonix',
    'Giochi(2f)Mupen64Plus',
    'Giochi(2f)OpenTyrian',
    'Giochi(2f)Quadnut',
    'Giochi(2f)ScummVm',
    'Giochi(2f)TkHangman',
    'Giochi(2f)TransitExecutive',
    'Giochi(2f)UnrealTournament2004',
    'Giochi(2f)VbaExpress',
    'Giochi(2f)Vdrift',
    'Giochi(2f)Xbomber',
    'Giochi(2f)Zsnes',
    'GiuseppeTerrasi(2f)Prove04',
    'GiuseppeTerrasi(2f)Prove08',
    'GiuseppeTerrasi(2f)Prove09',
    'GiuseppeTerrasi(2f)Prove10',
    'GiuseppeTerrasi(2f)Prove118',
    'GiuseppeTerrasi(2f)Prove36',
    'Grafica(2f)Blender',
    'Grafica(2f)ConvertireJpgInPdf',
    'Grafica(2f)Gimp',
    'Grafica(2f)Ocr',
    'GruppoPromozione(2f)ProgettoRelatori(2f)Linuxday2009',
    'Hardware(2f)Audio(2f)MidisportUsb',
    'Hardware(2f)DispositiviPartizioni(2f)BugPosizionamentoTestina',
    'Hardware(2f)DispositiviPartizioni(2f)FakeRaid',
    'Hardware(2f)DispositiviPartizioni(2f)MontarePartizioni(2f)Ntfs',
    'Hardware(2f)DispositiviPartizioni(2f)MontareTelefonoCellulare',
    'Hardware(2f)DispositiviPartizioni(2f)PartizionamentoManuale',
    'Hardware(2f)DispositiviPartizioni(2f)RinominareDispositiviEsterni',
    'Hardware(2f)DispositiviPortatili(2f)CellulareSonyEricsson',
    'Hardware(2f)DispositiviPortatili(2f)GarminGpsMap76CSx',
    'Hardware(2f)DispositiviPortatili(2f)SamsungYpT9',
    'Hardware(2f)DispositiviPortatili(2f)WindowsMobile',
    'Hardware(2f)DispositiviSenzaFili(2f)GPS',
    'Hardware(2f)DispositiviSenzaFili(2f)GPSGarmic',
    'Hardware(2f)DispositiviSenzaFili(2f)Infrarosso',
    'Hardware(2f)DispositiviSenzaFili(2f)Navit',
    'Hardware(2f)DispositiviSenzaFili(2f)USBModeSwitch',
    'Hardware(2f)Modem(2f)Wader',
    'Hardware(2f)Notebook(2f)CompaqPresarioC765EL',
    'Hardware(2f)Notebook(2f)NetbookRemix',
    'Hardware(2f)Periferiche(2f)IdentificarePeriferiche',
    'Hardware(2f)Periferiche(2f)MouseBluetooth',
    'Hardware(2f)SchedeTv(2f)AVermediaa309',
    'Hardware(2f)SchedeTv(2f)MsiSatellitePro',
    'Hardware(2f)StampantiScanner(2f)BrotherDcp115c',
    'Hardware(2f)StampantiScanner(2f)BrotherDcp130c',
    'Hardware(2f)StampantiScanner(2f)BrotherDcp135c',
    'Hardware(2f)StampantiScanner(2f)BrotherMfc235c',
    'Hardware(2f)StampantiScanner(2f)BrotherMultifunzione',
    'Hardware(2f)StampantiScanner(2f)CanonMp150',
    'Hardware(2f)StampantiScanner(2f)CanonPixmaIP1600',
    'Hardware(2f)StampantiScanner(2f)EpsonMulti',
    'Hardware(2f)StampantiScanner(2f)EpsonRx420',
    'Hardware(2f)StampantiScanner(2f)EpsonTools',
    'Hardware(2f)StampantiScanner(2f)Hp',
    'Hardware(2f)StampantiScanner(2f)LexmarkX1250',
    'Hardware(2f)StampantiScanner(2f)SamsungClp',
    'Hardware(2f)StampantiScanner(2f)ScannerEpson',
    'Hardware(2f)StampantiScanner(2f)ScannerPlustek',
    'Hardware(2f)StampantiScanner(2f)StampanteGnome',
    'Hardware(2f)StampantiScanner(2f)StrumentiStampanti',
    'Hardware(2f)StampantiScanner(2f)TurboPrint',
    'Hardware(2f)UbuntuLtsp(2f)RisoluzioneProblemi',
    'Hardware(2f)Video(2f)Ati(2f)Catalyst(2f)RisoluzioneProblemi',
    'Hardware(2f)Video(2f)Ati(2f)Radeon',
    'Hardware(2f)Video(2f)Ati(2f)RadeonHd',
    'Hardware(2f)Video(2f)Broadcom',
    'Hardware(2f)Video(2f)DomandeFrequenti',
    'Hardware(2f)Video(2f)Intel(2f)Poulsbo',
    'Hardware(2f)Video(2f)Nvidia(2f)ModuleAssistant',
    'Hardware(2f)Video(2f)SisXgiVolari',
    'Hardware(2f)Video(2f)Via(2f)BetaUnified',
    'Hardware(2f)Video(2f)Via(2f)OpenChrome',
    'Hardware(2f)Webcam(2f)DriverGspcaV4L2',
    'Hardware(2f)Webcam(2f)DriverUvc',
    'Hardware(2f)Webcam(2f)SonyEyeToy',
    'Installazione(2f)AggiornamentoLucid',
    'Installazione(2f)AggiornamentoMaverick',
    'Installazione(2f)DaImg',
    'Installazione(2f)DaRete',
    'InterGruppi(2f)NuoviRilasci',
    'InternetRete(2f)Condivisione(2f)Amule',
    'InternetRete(2f)Condivisione(2f)Dc(2b2b)',
    'InternetRete(2f)Condivisione(2f)MlDonkey',
    'InternetRete(2f)Condivisione(2f)TorrentFlux',
    'InternetRete(2f)ConfigurazioneRete(2f)Gw6c',
    'InternetRete(2f)ConfigurazioneRete(2f)NetworkManager(2f)VPN',
    'InternetRete(2f)ConfigurazioneRete(2f)Vnc(2f)VncReverse',
    'InternetRete(2f)ConfigurazioneRete(2f)Wicd',
    'InternetRete(2f)ConfigurazioneRete(2f)Wvdial',
    'InternetRete(2f)Flash',
    'InternetRete(2f)Flash(2f)Architettura64Bit',
    'InternetRete(2f)Messaggistica(2f)Amsn',
    'InternetRete(2f)Messaggistica(2f)Emesene',
    'InternetRete(2f)Messaggistica(2f)Evolution(2f)Libero',
    'InternetRete(2f)Messaggistica(2f)Irssi',
    'InternetRete(2f)Messaggistica(2f)Pidgin',
    'InternetRete(2f)Messaggistica(2f)Pidgin(2f)NickColorati',
    'InternetRete(2f)Messaggistica(2f)Thunderbird',
    'InternetRete(2f)Messaggistica(2f)Xchat',
    'InternetRete(2f)Moonlight',
    'InternetRete(2f)Navigazione(2f)Firefox(2f)MenuUbuntuIt',
    'InternetRete(2f)Navigazione(2f)Firefox(2f)VisualizzarePdf',
    'InternetRete(2f)Navigazione(2f)GoogleEarth',
    'InternetRete(2f)Navigazione(2f)IceCat',
    'InternetRete(2f)Navigazione(2f)RicercaAutomatizzata',
    'InternetRete(2f)Telefonia(2f)MoioSms',
    'InternetRete(2f)Telefonia(2f)Skype',
    'LeandroPestoni(2f)Prove2',
    'LeoIannacone(2f)Prove100',
    'LorenzoZoffoli(2f)Prove1',
    'LucaGambardella(2f)Prove1',
    'MarcoRofei(2f)Prova1',
    'MarcoTacchini(2f)Prove2',
    'MatteoLazzari(2f)Prove15',
    'MatteoLazzari(2f)Prove6',
    'MattiaImpellizzeri(2f)Prove1',
    'MauroDelloro(2f)Prove0',
    'ModemSeriale',
    'Multimedia(2f)Audio(2f)Ardour',
    'Multimedia(2f)Audio(2f)Audacity',
    'Multimedia(2f)Audio(2f)Audacity(2f)CreareSuoneriaCellulare',
    'Multimedia(2f)Audio(2f)Banshee',
    'Multimedia(2f)Audio(2f)Jack',
    'Multimedia(2f)Audio(2f)LilyPond',
    'Multimedia(2f)Audio(2f)Listen',
    'Multimedia(2f)Audio(2f)MidiUbuntu',
    'Multimedia(2f)Audio(2f)Mpd',
    'Multimedia(2f)Audio(2f)Rosegarden',
    'Multimedia(2f)Audio(2f)SoundJuicer',
    'Multimedia(2f)FormatiProprietari',
    'Multimedia(2f)FormatiProprietari(2f)BluRayHdDvd',
    'Multimedia(2f)Masterizzazione(2f)BluRayDisc',
    'Multimedia(2f)Masterizzazione(2f)DvdShrink',
    'Multimedia(2f)Masterizzazione(2f)K3b',
    'Multimedia(2f)Masterizzazione(2f)K9Copy',
    'Multimedia(2f)Masterizzazione(2f)LightScribe',
    'Multimedia(2f)Streaming(2f)Gsopcast',
    'Multimedia(2f)Streaming(2f)Streamtuner',
    'Multimedia(2f)UbuntuStudio',
    'Multimedia(2f)Video(2f)Arista',
    'Multimedia(2f)Video(2f)CinelerraVideoEditor',
    'Multimedia(2f)Video(2f)Moovida',
    'Multimedia(2f)Video(2f)Mplayer',
    'Multimedia(2f)Video(2f)RealPlayer',
    'Multimedia(2f)Video(2f)RecordMyDesktop',
    'Multimedia(2f)Video(2f)Totem',
    'Multimedia(2f)Video(2f)Vlc',
    'Multimedia(2f)Video(2f)XboxMediaCenter',
    'NewsletterItaliana(2f)2010(2e)004',
    'NewsletterItaliana(2f)2010(2e)006',
    'NewsletterItaliana(2f)2010(2e)008',
    'NewsletterItaliana(2f)2010(2e)011',
    'NewsletterItaliana(2f)2010(2e)012',
    'NewsletterItaliana(2f)2010(2e)014',
    'NewsletterItaliana(2f)2010(2e)016',
    'NewsletterItaliana(2f)2010(2e)019',
    'NewsletterItaliana(2f)2010(2e)021',
    'NewsletterItaliana(2f)2010(2e)022',
    'NewsletterItaliana(2f)2010(2e)024',
    'PaoloRotolo(2f)Prove05',
    'PowerPCFAQ',
    'PrimaryDomainController',
    'ProblemiAudio',
    'Programmazione(2f)Chroot',
    'Programmazione(2f)Gambas',
    'Programmazione(2f)Geany',
    'Programmazione(2f)GeoGebra',
    'Programmazione(2f)Java',
    'Programmazione(2f)Java(2f)Avanzate',
    'Programmazione(2f)Python',
    'Programmazione(2f)RootCern',
    'Programmazione(2f)Ruby',
    'Radioamatori(2f)Beacon',
    'Radioamatori(2f)CalcoloShackRadio',
    'Radioamatori(2f)Faxradio',
    'Radioamatori(2f)Logbook',
    'Radioamatori(2f)Misto',
    'Radioamatori(2f)QRSS',
    'Radioamatori(2f)Satelliti',
    'Radioamatori(2f)Telegrafia',
    'Radioamatori(2f)Telescrivente',
    'RiccardoDeVitis(2f)Prove2',
    'Server(2f)DansGuardian',
    'Server(2f)DnsDinamico',
    'Server(2f)SincronizzazioneTempoNtp',
    'Server(2f)Webmin',
    'ServerMail',
    'Sicurezza(2f)Clamav',
    'Sicurezza(2f)Cryptkeeper',
    'Sicurezza(2f)Firestarter',
    'Sicurezza(2f)GestionePassword(2f)Robuste',
    'Sicurezza(2f)GnuPg',
    'Sicurezza(2f)Gufw',
    'Sicurezza(2f)PamUsb',
    'Sicurezza(2f)TrueCrypt',
    'SmsNokiaAndroid',
    'Ufficio(2f)AdobeReader',
    'Ufficio(2f)Alexandria',
    'Ufficio(2f)DidiWiki',
    'Ufficio(2f)GnuCash',
    'Ufficio(2f)LibreOffice',
    'Ufficio(2f)MoinMoinDesktopEdition',
    'Ufficio(2f)OpenOffice(2e)org',
    'Ufficio(2f)OpenOffice(2e)org(2f)Italiano',
    'Ufficio(2f)Osmo',
    'Ufficio(2f)Pdftk',
    'Ufficio(2f)SugarCrm',
    'VeonIlongamor(2f)Prove0',
    'Virtualizzazione(2f)Kvm(2f)CreazioneOspiti',
    'Virtualizzazione(2f)Kvm(2f)DomandeFrequenti',
    'Virtualizzazione(2f)Kvm(2f)GestioneDiretta',
    'Virtualizzazione(2f)Kvm(2f)Installazione',
    'Virtualizzazione(2f)Kvm(2f)Networking',
    'Virtualizzazione(2f)OpenMoko',
    'Virtualizzazione(2f)PlayOnLinux',
    'Virtualizzazione(2f)Qemu',
    'Virtualizzazione(2f)VirtualBox(2f)Installazione',
    'Virtualizzazione(2f)VmwareServer',
    'Virtualizzazione(2f)Wine',
    'Xen',
    'guida(2d)montaggio(2d)cellulari'
  ] 

# Funzione che trasforma la sintassi
def fix_apt_url_in_page(page, old_str):
  packages = old_str.split(' ')[0]
  label = old_str.replace(packages + ' ', '')
  
  old_apt = '[apt://' + old_str + ']'
  new_apt = '[[apt://' + packages + ' | ' + label + ']]'
  
  return page.replace(old_apt, new_apt)



# Funzione principale
def fix_page (page_name):
  # revisione attuale della pagina
  current = open(page_name + '/current', 'r').read()
  if not current:
    current = '00000001' # il file non ha revisioni passate
  else:
    current = current.replace('\n','')
  
  # pagina effettiva da modificare
  page_path = page_name + '/revisions/' + current
  page = open(page_path, 'r').read() 
  
  all_apt = findall('\[apt://(.*?)\]', page)
  
  for apt_url in all_apt:
    page = fix_apt_url_in_page(page, apt_url)
    
  open(page_path, 'w').write(page)
  print ("Ok: %s" % page_name)


# main
for p in pages:
  fix_page(full_path + p)




