Przeniesienie rozmaitych skryptów z katalogu głównego do scripts.
authorMarek Stępniowski <marek@stepniowski.com>
Sun, 11 Oct 2009 17:49:00 +0000 (19:49 +0200)
committerMarek Stępniowski <marek@stepniowski.com>
Sun, 11 Oct 2009 17:49:00 +0000 (19:49 +0200)
12 files changed:
conv_genre_families.py [deleted file]
genre_families.xml [deleted file]
irename.py [deleted file]
remove_duplicates.py [deleted file]
scripts/conv_genre_families.py [new file with mode: 0644]
scripts/genre_families.xml [new file with mode: 0644]
scripts/irename.py [new file with mode: 0755]
scripts/remove_duplicates.py [new file with mode: 0755]
scripts/setmainpage.py [new file with mode: 0755]
scripts/setpythonpath.sh [new file with mode: 0755]
setmainpage.py [deleted file]
setpythonpath.sh [deleted file]

diff --git a/conv_genre_families.py b/conv_genre_families.py
deleted file mode 100644 (file)
index 6114713..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- coding: utf-8 -*-
-from lxml import etree
-from slughifi import slughifi
-from django.core.management import setup_environ
-from wolnelektury import settings
-
-setup_environ(settings)
-
-from catalogue.models import Tag
-
-
-doc = etree.parse('rodziny.xml')
-
-for element in doc.findall('//span'):
-    themes = [s.strip() for s in element.text.split(',')]
-    
-    element.text = u''
-    
-    for theme in themes:
-        try:
-            Tag.objects.get(slug=slughifi(theme))
-        
-            link = etree.SubElement(element, 'a', href=u'/katalog/%s' % slughifi(theme))
-            link.text = theme
-            link.tail = ', '
-            last_link = link
-        except:
-            print "Pomijam %s" % slughifi(theme)
-
-    last_link.tail = ''
-
-
-doc.write('ok.xml', xml_declaration=False, pretty_print=True, encoding='utf-8')
diff --git a/genre_families.xml b/genre_families.xml
deleted file mode 100644 (file)
index 771dd9c..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-<div>
-<li>cielesność
-<span class="subcategories">Ciało,Krew,Zdrowie,Choroba,Kaleka</span></li>
-
-<li>dom
-<span class="subcategories">Dom,Salon,Piwnica,Kuchnia,Ogród,Przestrzeń,Gospodarz,Gospodyni,Sąsiad,Gość,Bezdomność,Bezpieczeństwo,Niebezpieczeństwo</span></li>
-
-<li>działania nieczyste
-<span class="subcategories">Szantaż,Zazdrość,Zdrada,Zemsta,Postęp,Kłamstwo,Fałsz,Pozory,Tajemnica,Szpieg</span></li>
-
-<li>dziedzictwo
-<span class="subcategories">Dziedzictwo,Obyczaje,Pamięć,Historia,Naród,Krew,Państwo,Obowiązek,Patriota,Ruiny,Dom,Przywódca</span></li>
-
-<li>dźwięk
-<span class="subcategories">Cisza,Dźwięk,Muzyka,Śpiew,Poezja</span></li>
-
-<li>edukacja
-<span class="subcategories">Uczeń,Szkoła,Nauczyciel,Nauczycielka,Nauka,Wiedza,Dzieciństwo,Młodość,Dorosłość</span></li>
-
-<li>egzystencja ludzka
-<span class="subcategories">Kondycja ludzka,Los,Błądzenie,Bunt,Buntownik,Pielgrzym,Theatrum mundi,Życie jako wędrówka,Życie snem</span></li>
-
-<li>etapy życia
-<span class="subcategories">Dzieciństwo,Młodość,Dorosłość,Panna młoda,Żona,Mąż,Wdowa,Wdowiec,Starość,Czas,Przemijanie,Przemiana,Kondycja ludzka</span></li>
-
-<li>fauna
-<span class="subcategories">Zwierzęta,Kot,Koń,Motyl,Pająk,Pies,Ptak,Robak,Wąż</span></li>
-
-<li>flora
-<span class="subcategories">Rośliny,Kwiaty,Ogród,Drzewo,Las</span></li>
-
-<li>historie miłosne
-<span class="subcategories">Miłość,Miłość niespełniona,Miłość platoniczna,Miłość romantyczna,Miłość silniejsza niż śmierć,Miłość spełniona,Miłość tragiczna,Kochanek,Kochanek romantyczny,Flirt,Pocałunek,Pożądanie,List,Serce,Łzy,Przysięga,Rozstanie,Tęsknota,Wspomnienia,Marzenia,Zdrada,Rozczarowanie,Rozpacz,Małżeństwo,Ślub,Panna młoda,Przyjaźń</span></li>
-
-<li>jedzenie i picie
-<span class="subcategories">Głód,Bieda,Chleb,Jedzenie,Uczta,Wino,Alkohol,Pijaństwo</span></li>
-
-<li>konflikty
-<span class="subcategories">Kłótnia,Bijatyka,Siła,Przemoc,Krew,Konflikt,Pojedynek,Walka,Wojna,Powstanie,Bunt,Rewolucja</span></li>
-
-<li>momenty graniczne
-<span class="subcategories">Narodziny,Śmierć,Przemiana,Odrodzenie przez grób,Zmartwychwstanie</span></li>
-
-<li>nadużycie władzy
-<span class="subcategories">Władza,Przemoc,Strach,Kara</span></li>
-
-<li>nacjonalizm
-<span class="subcategories">Polak,Niemiec,Rosjanin,Rosja,Car,Żyd,Naród,Obcy,Wróg,Niebezpieczeństwo</span></li>
-
-<li>nastroje melancholijne
-<span class="subcategories">Nuda,Melancholia,Ruiny,Wspomnienia,Marzenie,Przemijanie,Tęsknota,Rozpacz,Śmierć,Los,Kondycja ludzka</span></li>
-
-<li>nastroje rewolucyjne
-<span class="subcategories">Rewolucja,Walka klas,Robotnik,Chłop,Pozycja społeczna,Władza,Przemoc,Sprawiedliwość</span></li>
-
-<li>podporządkowanie
-<span class="subcategories">Sługa,Pan,Praca,Władza,Obyczaje</span></li>
-
-<li>pokrewieństwo
-<span class="subcategories">Rodzina,Ojciec,Matka,Dziecko,Syn,Córka,Brat,Siostra,Sierota,Dziedzictwo,Obowiązek,Wojna pokoleń,Zdrada</span></li>
-
-<li>polityczny obraz świata
-<span class="subcategories">Państwo,Obowiązek,Cnota,Obywatel,Patriota,Ojczyzna,Naród,Przywódca,Władza,Urzędnik,Król,Rycerz,Żołnierz,Wojna,Wróg,Zwycięstwo,Walka,Siła,Historia,Powstanie,Powstaniec,Śmierć bohaterska,Sława,Rewolucja,Sąd,Zdrada</span></li>
-
-<li>pory roku
-<span class="subcategories">Wiosna,Lato,Jesień,Zima,Czas,Przemijanie</span></li>
-
-<li>posiadanie
-<span class="subcategories">Pieniądz,Handel,Korzyść,Chciwość,Kradzież,Bieda,Bogactwo,Skąpiec,Własność,Złodziej,Żebrak</span></li>
-
-<li>poświęcenie
-<span class="subcategories">Poświęcenie,Ofiara,Prometeusz,Miłosierdzie,Chrystus,Zbawienie,Odrodzenie przez grób</span></li>
-
-<li>poznanie
-<span class="subcategories">Filozof,Mądrość,Mędrzec,Głupiec,Głupota,Rozum,Wiedza,Prawda,Fałsz</span></li>
-
-<li>poznanie alternatywne
-<span class="subcategories">Szaleniec,Szaleństwo,Prawda,Pozory,Obraz świata,Serce,Wiedza,Mądrość,Dusza,Duch,Ciało</span></li>
-
-<li>praca
-<span class="subcategories">Praca,Współpraca,Lenistwo,Sługa,Pan Robotnik Praca u podstaw Praca organiczna Idealista Społecznik</span></li>
-
-<li>przyroda
-<span class="subcategories">Natura,Żywioły,Ogień,Ziemia,Wiatr,Woda,Wiosna,Lato,Jesień,Zima,Przemijanie,Słońce,Księżyc,Gwiazda,Obłok,Noc,Świt,Światło,Góra,Rzeka,Morze,Burza,Deszcz,Błoto,Pustynia,Przyroda nieożywiona,Rośliny,Kwiaty,Ogród,Arkadia,Sielanka,Raj,Jabłko,Drzewo,Las,Obraz,Świata,Zwierzęta,Ptak,Motyl,Kot,Koń,Pająk,Pies,Wąż,Robak,Potwór,Organizm,Maszyna</span></li>
-
-<li>regulacja postępowania
-<span class="subcategories">Sumienie,Cnota,Sprawiedliwość,Obowiązek</span></li>
-
-<li>role społeczne
-<span class="subcategories">Kobieta,Mężczyzna,Mąż,Żona,Matka,Ojciec,Dziecko,Syn,Córka,Brat,Siostra,Wdowa,Wdowiec,Nauczyciel,Nauczycielka,Uczeń,Poeta,Literat,Lekarz,Sędzia,Król,Przywódca,Żołnierz,Urzędnik,Filozof,Prorok,Ksiądz</span></li>
-
-<li>rycerskie czasy
-<span class="subcategories">Zamek,Ruiny,Rycerz,Pojedynek,Honor,Wierność,Obowiązek,Walka,Król,Dama</span></li>
-
-<li>rzeczywistość nadprzyrodzona
-<span class="subcategories">Bóg,Chrystus,Matka Boska,Anioł,Szatan,Diabeł,Duch,Dusza,Wampir,Upiór,Czary,Czarownica</span></li>
-
-<li>struktura społeczna
-<span class="subcategories">Chłop,Mieszczanin,Żyd,Szlachcic,Ksiądz,Robotnik,Król,Przywódca,Pozycja społeczna,Dworek,Obyczaje</span></li>
-
-<li>sarmatyzm
-<span class="subcategories">Polak,Sarmata,Szlachcic,Przedmurze chrześcijaństwa,Matka Boska,Religia</span></li>
-
-<li>sprawowanie władzy
-<span class="subcategories">Urzędnik,Państwo,Władza,Przemoc,Sąd,Kara,Więzienie</span></li>
-
-<li>śmierć
-<span class="subcategories">Śmierć,Danse macabre,Gotycyzm,Grób,Otchłań,Pogrzeb,Samobójstwo,Krew,Trup,Morderstwo,Żałoba,Zmartwychwstanie,Melancholia,Cmentarz,Vanitas,Los,Kondycja ludzka</span></li>
-
-<li>środowisko miejskie i wiejskie
-<span class="subcategories">Miasto,Warszawa,Mieszczanin,Handel,Robotnik,Żyd,Wieś,Sielanka,Chłop,Ogród,Arkadia,Organizm,Maszyna,Natura,Przestrzeń</span></li>
-
-<li>świat w perspektywie etycznej
-<span class="subcategories">Dobro,Zło,Sumienie,Kuszenie,Zwątpienie,Wyrzuty sumienia,Wina,Grzech,Kara,Piętno,Los,Sąd ostateczny,Egzorcyzm,Koniec świata,Wieża Babel,Odrodzenie przez grób,Zbawienie,Potępienie,Zaświaty,Piekło,Czyściec,Raj,Nieśmiertelność,Przysięga,Przekleństwo,Religia,Obrzędy,Modlitwa,Niedziela,Przedmurze chrześcijaństwa,Ksiądz,Pobożność,Świętoszek,Święty,Cud,Wierzenia,Zabobony</span></li>
-
-<li>świętowanie
-<span class="subcategories">Wesele,Uczta,Jedzenie,Pijaństwo,Zabawa,Taniec,Muzyka,Śmiech,Śpiew,Bijatyka,Obyczaje,Wierzenia,Zabobony</span></li>
-
-<li>tożsamość pozorna i podwójna
-<span class="subcategories">Portret,Lustro,Cień,Sobowtór,Maska,Przebranie,Strój,Przemiana</span></li>
-
-<li>trunki
-<span class="subcategories">Alkohol,Wino,Carpe diem,Pijaństwo,Karczma,Obyczaje</span></li>
-
-<li>typy bohaterów
-<span class="subcategories">Samotnik,Buntownik,Pielgrzym,Szaleniec,Filozof,Mędrzec,Prorok,Obcy,Przywódca,Realista,Idealista,Społecznik,Syzyf,Prometeusz,Sługa,Uczeń</span></li>
-
-<li>ukrywanie/ujawnianie
-<span class="subcategories">Tajemnica,Przysięga,Zdrada,Szpieg,Kłamstwo,Fałsz</span></li>
-
-<li>upływ czasu
-<span class="subcategories">Wspomnienia,Marzenie,Pamięć,Przemijanie,Czas,Śmierć</span></li>
-
-<li>widzenie
-<span class="subcategories">Oko,Wzrok,Sen,Marzenie,Wizja,Przeczucie,Duch,Dusza,Proroctwo</span></li>
-
-<li>wina i przebaczenie
-<span class="subcategories">Grzech,Wina,Wyrzuty sumienia,Syn marnotrawny,Pokora,Przemiana,Miłosierdzie,Zbawienie</span></li>
-
-<li>wizerunki kobiety
-<span class="subcategories">Kobieta,Kobieta demoniczna,Kobieta „upadła”,Czarownica,Dama,Próżność,Uroda,Mizoginia,Ciało,Córka,Siostra,Żona,Matka</span></li>
-
-<li>w kręgu sztuki
-<span class="subcategories">Artysta,Sztuka,Literat,Poeta,Poetka,Poezja,Muzyka,Taniec,Śpiew,Teatr,Książka,Słowo,Sława,Nieśmiertelność</span></li>
-
-<li>wychodźstwo i uwięzienie
-<span class="subcategories">Emigrant,Tęsknota,Obcy,Więzienie,Przemiana,Więzień,Wolność,Niewola,Wygnanie,Zesłaniec,Syberia,Zbrodnia,Zbrodniarz</span></li>
-
-<li>zagrożenie
-<span class="subcategories">Niebezpieczeństwo,Trucizna,Fałsz,Zdrada,Choroba,Śmierć</span></li>
-
-<li>zajęcia i zawody
-<span class="subcategories">Lekarz,Prawnik,Sędzia,Nauczyciel,Nauczycielka,Literat,Poeta,Poetka,Artysta,Żołnierz,Urzędnik,Sługa,Rycerz</span></li>
-
-<li>życie dworskie
-<span class="subcategories">Dworzanin,Dwór,Elita,Dama,Fircyk,Salon,Błazen,Król,Urzędnik,Sługa,Grzeczność,Obyczaje,Służalczość,Pochlebstwo</span></li>
-
-<li>żywioły
-<span class="subcategories">Żywioły,Ogień,Ziemia,Wiatr,Woda,Przestrzeń</span></li>
-</div>
\ No newline at end of file
diff --git a/irename.py b/irename.py
deleted file mode 100755 (executable)
index 3ac4192..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-from django.core.management import setup_environ
-from wolnelektury import settings
-import sys
-from os.path import abspath, join, dirname, splitext
-import os
-
-# Add apps and lib directories to PYTHONPATH
-sys.path.insert(0, abspath(join(dirname(__file__), 'apps')))
-sys.path.insert(0, abspath(join(dirname(__file__), 'lib')))
-
-setup_environ(settings)
-
-from catalogue.models import Book
-from mutagen import easyid3
-from slughifi import slughifi
-
-chosen_book_slugs = set()
-
-for file_name in os.listdir('mp3'):
-    base_name, ext = splitext(file_name)
-    if ext != '.mp3':
-        continue
-    
-    audio = easyid3.EasyID3(join('mp3', file_name))
-    title = audio['title'][0]
-    artist = title.split(',', 1)[0].strip()
-    artist_slug = slughifi(artist)
-    title_part = slughifi(title.rsplit(',', 1)[1].strip())
-    
-    print "--------------------"
-    print "File: %s" % file_name
-    print "Title: %s" % title
-    print
-    print "Matching books:"
-    
-    matching_books = [book for book in Book.tagged.with_all(artist_slug) if book.slug not in chosen_book_slugs]
-    matching_books = [book for book in matching_books if title_part in book.slug]
-
-    if len(matching_books) > 1:
-        for i, book in enumerate(matching_books):
-            print "%d: %s (%s)" % (i, book.title, ', '.join(tag.slug for tag in book.tags))
-        print
-        i = int(input("Choose which book is read in this file:"))
-    elif len(matching_books) == 1:
-        i = 0
-    else:
-        print "Skipping %s: No matching book found" % file_name
-        continue
-    
-    print "You chose %d (%s)" % (i, matching_books[i].slug)
-    
-    chosen_book_slugs.add(matching_books[i].slug)
-    os.rename(join('mp3', file_name), join('new_mp3', matching_books[i].slug + '.mp3'))
-    os.rename(join('oggvorbis', base_name + '.ogg'), join('new_ogg', matching_books[i].slug + '.ogg'))
-    
-    
\ No newline at end of file
diff --git a/remove_duplicates.py b/remove_duplicates.py
deleted file mode 100755 (executable)
index e72512b..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env python
-import sys
-
-from django.core.management import setup_environ
-from wolnelektury import settings
-try:
-    set
-except AttributeError:
-    from set import Set as set
-
-setup_environ(settings)
-
-from catalogue import models
-
-fragment_identifiers = set()
-
-print
-print 'Before: %d fragments' % models.Fragment.objects.count()
-print
-
-for fragment in models.Fragment.objects.all():
-    if (fragment.book_id, fragment.anchor) in fragment_identifiers:
-        fragment.delete()
-        sys.stderr.write('X')
-    else:
-        fragment_identifiers.add((fragment.book_id, fragment.anchor))
-        sys.stderr.write('.')
-
-print
-print 'After: %d fragments' % models.Fragment.objects.count()
-print
\ No newline at end of file
diff --git a/scripts/conv_genre_families.py b/scripts/conv_genre_families.py
new file mode 100644 (file)
index 0000000..6114713
--- /dev/null
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+from lxml import etree
+from slughifi import slughifi
+from django.core.management import setup_environ
+from wolnelektury import settings
+
+setup_environ(settings)
+
+from catalogue.models import Tag
+
+
+doc = etree.parse('rodziny.xml')
+
+for element in doc.findall('//span'):
+    themes = [s.strip() for s in element.text.split(',')]
+    
+    element.text = u''
+    
+    for theme in themes:
+        try:
+            Tag.objects.get(slug=slughifi(theme))
+        
+            link = etree.SubElement(element, 'a', href=u'/katalog/%s' % slughifi(theme))
+            link.text = theme
+            link.tail = ', '
+            last_link = link
+        except:
+            print "Pomijam %s" % slughifi(theme)
+
+    last_link.tail = ''
+
+
+doc.write('ok.xml', xml_declaration=False, pretty_print=True, encoding='utf-8')
diff --git a/scripts/genre_families.xml b/scripts/genre_families.xml
new file mode 100644 (file)
index 0000000..771dd9c
--- /dev/null
@@ -0,0 +1,160 @@
+<div>
+<li>cielesność
+<span class="subcategories">Ciało,Krew,Zdrowie,Choroba,Kaleka</span></li>
+
+<li>dom
+<span class="subcategories">Dom,Salon,Piwnica,Kuchnia,Ogród,Przestrzeń,Gospodarz,Gospodyni,Sąsiad,Gość,Bezdomność,Bezpieczeństwo,Niebezpieczeństwo</span></li>
+
+<li>działania nieczyste
+<span class="subcategories">Szantaż,Zazdrość,Zdrada,Zemsta,Postęp,Kłamstwo,Fałsz,Pozory,Tajemnica,Szpieg</span></li>
+
+<li>dziedzictwo
+<span class="subcategories">Dziedzictwo,Obyczaje,Pamięć,Historia,Naród,Krew,Państwo,Obowiązek,Patriota,Ruiny,Dom,Przywódca</span></li>
+
+<li>dźwięk
+<span class="subcategories">Cisza,Dźwięk,Muzyka,Śpiew,Poezja</span></li>
+
+<li>edukacja
+<span class="subcategories">Uczeń,Szkoła,Nauczyciel,Nauczycielka,Nauka,Wiedza,Dzieciństwo,Młodość,Dorosłość</span></li>
+
+<li>egzystencja ludzka
+<span class="subcategories">Kondycja ludzka,Los,Błądzenie,Bunt,Buntownik,Pielgrzym,Theatrum mundi,Życie jako wędrówka,Życie snem</span></li>
+
+<li>etapy życia
+<span class="subcategories">Dzieciństwo,Młodość,Dorosłość,Panna młoda,Żona,Mąż,Wdowa,Wdowiec,Starość,Czas,Przemijanie,Przemiana,Kondycja ludzka</span></li>
+
+<li>fauna
+<span class="subcategories">Zwierzęta,Kot,Koń,Motyl,Pająk,Pies,Ptak,Robak,Wąż</span></li>
+
+<li>flora
+<span class="subcategories">Rośliny,Kwiaty,Ogród,Drzewo,Las</span></li>
+
+<li>historie miłosne
+<span class="subcategories">Miłość,Miłość niespełniona,Miłość platoniczna,Miłość romantyczna,Miłość silniejsza niż śmierć,Miłość spełniona,Miłość tragiczna,Kochanek,Kochanek romantyczny,Flirt,Pocałunek,Pożądanie,List,Serce,Łzy,Przysięga,Rozstanie,Tęsknota,Wspomnienia,Marzenia,Zdrada,Rozczarowanie,Rozpacz,Małżeństwo,Ślub,Panna młoda,Przyjaźń</span></li>
+
+<li>jedzenie i picie
+<span class="subcategories">Głód,Bieda,Chleb,Jedzenie,Uczta,Wino,Alkohol,Pijaństwo</span></li>
+
+<li>konflikty
+<span class="subcategories">Kłótnia,Bijatyka,Siła,Przemoc,Krew,Konflikt,Pojedynek,Walka,Wojna,Powstanie,Bunt,Rewolucja</span></li>
+
+<li>momenty graniczne
+<span class="subcategories">Narodziny,Śmierć,Przemiana,Odrodzenie przez grób,Zmartwychwstanie</span></li>
+
+<li>nadużycie władzy
+<span class="subcategories">Władza,Przemoc,Strach,Kara</span></li>
+
+<li>nacjonalizm
+<span class="subcategories">Polak,Niemiec,Rosjanin,Rosja,Car,Żyd,Naród,Obcy,Wróg,Niebezpieczeństwo</span></li>
+
+<li>nastroje melancholijne
+<span class="subcategories">Nuda,Melancholia,Ruiny,Wspomnienia,Marzenie,Przemijanie,Tęsknota,Rozpacz,Śmierć,Los,Kondycja ludzka</span></li>
+
+<li>nastroje rewolucyjne
+<span class="subcategories">Rewolucja,Walka klas,Robotnik,Chłop,Pozycja społeczna,Władza,Przemoc,Sprawiedliwość</span></li>
+
+<li>podporządkowanie
+<span class="subcategories">Sługa,Pan,Praca,Władza,Obyczaje</span></li>
+
+<li>pokrewieństwo
+<span class="subcategories">Rodzina,Ojciec,Matka,Dziecko,Syn,Córka,Brat,Siostra,Sierota,Dziedzictwo,Obowiązek,Wojna pokoleń,Zdrada</span></li>
+
+<li>polityczny obraz świata
+<span class="subcategories">Państwo,Obowiązek,Cnota,Obywatel,Patriota,Ojczyzna,Naród,Przywódca,Władza,Urzędnik,Król,Rycerz,Żołnierz,Wojna,Wróg,Zwycięstwo,Walka,Siła,Historia,Powstanie,Powstaniec,Śmierć bohaterska,Sława,Rewolucja,Sąd,Zdrada</span></li>
+
+<li>pory roku
+<span class="subcategories">Wiosna,Lato,Jesień,Zima,Czas,Przemijanie</span></li>
+
+<li>posiadanie
+<span class="subcategories">Pieniądz,Handel,Korzyść,Chciwość,Kradzież,Bieda,Bogactwo,Skąpiec,Własność,Złodziej,Żebrak</span></li>
+
+<li>poświęcenie
+<span class="subcategories">Poświęcenie,Ofiara,Prometeusz,Miłosierdzie,Chrystus,Zbawienie,Odrodzenie przez grób</span></li>
+
+<li>poznanie
+<span class="subcategories">Filozof,Mądrość,Mędrzec,Głupiec,Głupota,Rozum,Wiedza,Prawda,Fałsz</span></li>
+
+<li>poznanie alternatywne
+<span class="subcategories">Szaleniec,Szaleństwo,Prawda,Pozory,Obraz świata,Serce,Wiedza,Mądrość,Dusza,Duch,Ciało</span></li>
+
+<li>praca
+<span class="subcategories">Praca,Współpraca,Lenistwo,Sługa,Pan Robotnik Praca u podstaw Praca organiczna Idealista Społecznik</span></li>
+
+<li>przyroda
+<span class="subcategories">Natura,Żywioły,Ogień,Ziemia,Wiatr,Woda,Wiosna,Lato,Jesień,Zima,Przemijanie,Słońce,Księżyc,Gwiazda,Obłok,Noc,Świt,Światło,Góra,Rzeka,Morze,Burza,Deszcz,Błoto,Pustynia,Przyroda nieożywiona,Rośliny,Kwiaty,Ogród,Arkadia,Sielanka,Raj,Jabłko,Drzewo,Las,Obraz,Świata,Zwierzęta,Ptak,Motyl,Kot,Koń,Pająk,Pies,Wąż,Robak,Potwór,Organizm,Maszyna</span></li>
+
+<li>regulacja postępowania
+<span class="subcategories">Sumienie,Cnota,Sprawiedliwość,Obowiązek</span></li>
+
+<li>role społeczne
+<span class="subcategories">Kobieta,Mężczyzna,Mąż,Żona,Matka,Ojciec,Dziecko,Syn,Córka,Brat,Siostra,Wdowa,Wdowiec,Nauczyciel,Nauczycielka,Uczeń,Poeta,Literat,Lekarz,Sędzia,Król,Przywódca,Żołnierz,Urzędnik,Filozof,Prorok,Ksiądz</span></li>
+
+<li>rycerskie czasy
+<span class="subcategories">Zamek,Ruiny,Rycerz,Pojedynek,Honor,Wierność,Obowiązek,Walka,Król,Dama</span></li>
+
+<li>rzeczywistość nadprzyrodzona
+<span class="subcategories">Bóg,Chrystus,Matka Boska,Anioł,Szatan,Diabeł,Duch,Dusza,Wampir,Upiór,Czary,Czarownica</span></li>
+
+<li>struktura społeczna
+<span class="subcategories">Chłop,Mieszczanin,Żyd,Szlachcic,Ksiądz,Robotnik,Król,Przywódca,Pozycja społeczna,Dworek,Obyczaje</span></li>
+
+<li>sarmatyzm
+<span class="subcategories">Polak,Sarmata,Szlachcic,Przedmurze chrześcijaństwa,Matka Boska,Religia</span></li>
+
+<li>sprawowanie władzy
+<span class="subcategories">Urzędnik,Państwo,Władza,Przemoc,Sąd,Kara,Więzienie</span></li>
+
+<li>śmierć
+<span class="subcategories">Śmierć,Danse macabre,Gotycyzm,Grób,Otchłań,Pogrzeb,Samobójstwo,Krew,Trup,Morderstwo,Żałoba,Zmartwychwstanie,Melancholia,Cmentarz,Vanitas,Los,Kondycja ludzka</span></li>
+
+<li>środowisko miejskie i wiejskie
+<span class="subcategories">Miasto,Warszawa,Mieszczanin,Handel,Robotnik,Żyd,Wieś,Sielanka,Chłop,Ogród,Arkadia,Organizm,Maszyna,Natura,Przestrzeń</span></li>
+
+<li>świat w perspektywie etycznej
+<span class="subcategories">Dobro,Zło,Sumienie,Kuszenie,Zwątpienie,Wyrzuty sumienia,Wina,Grzech,Kara,Piętno,Los,Sąd ostateczny,Egzorcyzm,Koniec świata,Wieża Babel,Odrodzenie przez grób,Zbawienie,Potępienie,Zaświaty,Piekło,Czyściec,Raj,Nieśmiertelność,Przysięga,Przekleństwo,Religia,Obrzędy,Modlitwa,Niedziela,Przedmurze chrześcijaństwa,Ksiądz,Pobożność,Świętoszek,Święty,Cud,Wierzenia,Zabobony</span></li>
+
+<li>świętowanie
+<span class="subcategories">Wesele,Uczta,Jedzenie,Pijaństwo,Zabawa,Taniec,Muzyka,Śmiech,Śpiew,Bijatyka,Obyczaje,Wierzenia,Zabobony</span></li>
+
+<li>tożsamość pozorna i podwójna
+<span class="subcategories">Portret,Lustro,Cień,Sobowtór,Maska,Przebranie,Strój,Przemiana</span></li>
+
+<li>trunki
+<span class="subcategories">Alkohol,Wino,Carpe diem,Pijaństwo,Karczma,Obyczaje</span></li>
+
+<li>typy bohaterów
+<span class="subcategories">Samotnik,Buntownik,Pielgrzym,Szaleniec,Filozof,Mędrzec,Prorok,Obcy,Przywódca,Realista,Idealista,Społecznik,Syzyf,Prometeusz,Sługa,Uczeń</span></li>
+
+<li>ukrywanie/ujawnianie
+<span class="subcategories">Tajemnica,Przysięga,Zdrada,Szpieg,Kłamstwo,Fałsz</span></li>
+
+<li>upływ czasu
+<span class="subcategories">Wspomnienia,Marzenie,Pamięć,Przemijanie,Czas,Śmierć</span></li>
+
+<li>widzenie
+<span class="subcategories">Oko,Wzrok,Sen,Marzenie,Wizja,Przeczucie,Duch,Dusza,Proroctwo</span></li>
+
+<li>wina i przebaczenie
+<span class="subcategories">Grzech,Wina,Wyrzuty sumienia,Syn marnotrawny,Pokora,Przemiana,Miłosierdzie,Zbawienie</span></li>
+
+<li>wizerunki kobiety
+<span class="subcategories">Kobieta,Kobieta demoniczna,Kobieta „upadła”,Czarownica,Dama,Próżność,Uroda,Mizoginia,Ciało,Córka,Siostra,Żona,Matka</span></li>
+
+<li>w kręgu sztuki
+<span class="subcategories">Artysta,Sztuka,Literat,Poeta,Poetka,Poezja,Muzyka,Taniec,Śpiew,Teatr,Książka,Słowo,Sława,Nieśmiertelność</span></li>
+
+<li>wychodźstwo i uwięzienie
+<span class="subcategories">Emigrant,Tęsknota,Obcy,Więzienie,Przemiana,Więzień,Wolność,Niewola,Wygnanie,Zesłaniec,Syberia,Zbrodnia,Zbrodniarz</span></li>
+
+<li>zagrożenie
+<span class="subcategories">Niebezpieczeństwo,Trucizna,Fałsz,Zdrada,Choroba,Śmierć</span></li>
+
+<li>zajęcia i zawody
+<span class="subcategories">Lekarz,Prawnik,Sędzia,Nauczyciel,Nauczycielka,Literat,Poeta,Poetka,Artysta,Żołnierz,Urzędnik,Sługa,Rycerz</span></li>
+
+<li>życie dworskie
+<span class="subcategories">Dworzanin,Dwór,Elita,Dama,Fircyk,Salon,Błazen,Król,Urzędnik,Sługa,Grzeczność,Obyczaje,Służalczość,Pochlebstwo</span></li>
+
+<li>żywioły
+<span class="subcategories">Żywioły,Ogień,Ziemia,Wiatr,Woda,Przestrzeń</span></li>
+</div>
\ No newline at end of file
diff --git a/scripts/irename.py b/scripts/irename.py
new file mode 100755 (executable)
index 0000000..3ac4192
--- /dev/null
@@ -0,0 +1,58 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+from django.core.management import setup_environ
+from wolnelektury import settings
+import sys
+from os.path import abspath, join, dirname, splitext
+import os
+
+# Add apps and lib directories to PYTHONPATH
+sys.path.insert(0, abspath(join(dirname(__file__), 'apps')))
+sys.path.insert(0, abspath(join(dirname(__file__), 'lib')))
+
+setup_environ(settings)
+
+from catalogue.models import Book
+from mutagen import easyid3
+from slughifi import slughifi
+
+chosen_book_slugs = set()
+
+for file_name in os.listdir('mp3'):
+    base_name, ext = splitext(file_name)
+    if ext != '.mp3':
+        continue
+    
+    audio = easyid3.EasyID3(join('mp3', file_name))
+    title = audio['title'][0]
+    artist = title.split(',', 1)[0].strip()
+    artist_slug = slughifi(artist)
+    title_part = slughifi(title.rsplit(',', 1)[1].strip())
+    
+    print "--------------------"
+    print "File: %s" % file_name
+    print "Title: %s" % title
+    print
+    print "Matching books:"
+    
+    matching_books = [book for book in Book.tagged.with_all(artist_slug) if book.slug not in chosen_book_slugs]
+    matching_books = [book for book in matching_books if title_part in book.slug]
+
+    if len(matching_books) > 1:
+        for i, book in enumerate(matching_books):
+            print "%d: %s (%s)" % (i, book.title, ', '.join(tag.slug for tag in book.tags))
+        print
+        i = int(input("Choose which book is read in this file:"))
+    elif len(matching_books) == 1:
+        i = 0
+    else:
+        print "Skipping %s: No matching book found" % file_name
+        continue
+    
+    print "You chose %d (%s)" % (i, matching_books[i].slug)
+    
+    chosen_book_slugs.add(matching_books[i].slug)
+    os.rename(join('mp3', file_name), join('new_mp3', matching_books[i].slug + '.mp3'))
+    os.rename(join('oggvorbis', base_name + '.ogg'), join('new_ogg', matching_books[i].slug + '.ogg'))
+    
+    
\ No newline at end of file
diff --git a/scripts/remove_duplicates.py b/scripts/remove_duplicates.py
new file mode 100755 (executable)
index 0000000..e72512b
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/env python
+import sys
+
+from django.core.management import setup_environ
+from wolnelektury import settings
+try:
+    set
+except AttributeError:
+    from set import Set as set
+
+setup_environ(settings)
+
+from catalogue import models
+
+fragment_identifiers = set()
+
+print
+print 'Before: %d fragments' % models.Fragment.objects.count()
+print
+
+for fragment in models.Fragment.objects.all():
+    if (fragment.book_id, fragment.anchor) in fragment_identifiers:
+        fragment.delete()
+        sys.stderr.write('X')
+    else:
+        fragment_identifiers.add((fragment.book_id, fragment.anchor))
+        sys.stderr.write('.')
+
+print
+print 'After: %d fragments' % models.Fragment.objects.count()
+print
\ No newline at end of file
diff --git a/scripts/setmainpage.py b/scripts/setmainpage.py
new file mode 100755 (executable)
index 0000000..245ed1d
--- /dev/null
@@ -0,0 +1,35 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+from django.core.management import setup_environ
+from wolnelektury import settings
+import sys
+
+setup_environ(settings)
+
+from catalogue.models import Tag
+
+
+MAIN_PAGE_THEMES = [
+    u'Obywatel',
+    u'Car',
+    u'Błoto',
+    u'Krew',
+    u'Danse macabre',
+    u'Obcy',
+    u'Matka',
+    u'Gotycyzm',
+]
+
+
+for tag in Tag.objects.all():
+    if tag.category in ('epoch', 'genre', 'author', 'kind'):
+        tag.main_page = True
+    elif tag.category == 'theme' and tag.name in MAIN_PAGE_THEMES:
+        tag.main_page = True
+    else:
+        tag.main_page = False
+    
+    tag.save()
+    sys.stderr.write('.')
+
+
diff --git a/scripts/setpythonpath.sh b/scripts/setpythonpath.sh
new file mode 100755 (executable)
index 0000000..0b4b184
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+export PYTHONPATH=`pwd`/lib:`pwd`/apps:`pwd`/wolnelektury:$PYTHONPATH
\ No newline at end of file
diff --git a/setmainpage.py b/setmainpage.py
deleted file mode 100755 (executable)
index 245ed1d..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-from django.core.management import setup_environ
-from wolnelektury import settings
-import sys
-
-setup_environ(settings)
-
-from catalogue.models import Tag
-
-
-MAIN_PAGE_THEMES = [
-    u'Obywatel',
-    u'Car',
-    u'Błoto',
-    u'Krew',
-    u'Danse macabre',
-    u'Obcy',
-    u'Matka',
-    u'Gotycyzm',
-]
-
-
-for tag in Tag.objects.all():
-    if tag.category in ('epoch', 'genre', 'author', 'kind'):
-        tag.main_page = True
-    elif tag.category == 'theme' and tag.name in MAIN_PAGE_THEMES:
-        tag.main_page = True
-    else:
-        tag.main_page = False
-    
-    tag.save()
-    sys.stderr.write('.')
-
-
diff --git a/setpythonpath.sh b/setpythonpath.sh
deleted file mode 100755 (executable)
index 0b4b184..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/sh
-export PYTHONPATH=`pwd`/lib:`pwd`/apps:`pwd`/wolnelektury:$PYTHONPATH
\ No newline at end of file