<classpathentry kind="src" path="src"/>
<classpathentry kind="src" path="gen"/>
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
- <classpathentry kind="lib" path="libs/phonegap.0.9.4.jar"/>
+ <classpathentry kind="lib" path="libs/phonegap-1.0.0.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>
<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="pl.org.nowoczesnapolska.wlmobi"
- android:versionCode="1"
- android:versionName="1.0">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:windowSoftInputMode="adjustPan"
+ package="pl.org.nowoczesnapolska.wlmobi" android:versionName="1.0" android:versionCode="2">
+ <supports-screens
+ android:largeScreens="true"
+ android:normalScreens="true"
+ android:smallScreens="true"
+ android:resizeable="true"
+ android:anyDensity="true"
+ />
-<supports-screens
-android:largeScreens="true"
-android:normalScreens="true"
-android:smallScreens="true"
-android:resizeable="true"
-android:anyDensity="true"
-/>
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+ <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+ <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
-<uses-permission android:name="android.permission.INTERNET" />
-<!--
-<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
-<uses-permission android:name="android.permission.CAMERA" />
-<uses-permission android:name="android.permission.VIBRATE" />
-<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
-<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
-<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
-<uses-permission android:name="android.permission.READ_PHONE_STATE" />
-<uses-permission android:name="android.permission.RECEIVE_SMS" />
-<uses-permission android:name="android.permission.RECORD_AUDIO" />
-<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
-<uses-permission android:name="android.permission.READ_CONTACTS" />
-<uses-permission android:name="android.permission.WRITE_CONTACTS" />
--->
-
- <application android:icon="@drawable/icon" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden" android:debuggable="true">
+ <application android:icon="@drawable/icon" android:label="@string/app_name"
+ android:debuggable="true">
<activity android:name=".Catalogue"
- android:label="@string/app_name"
- android:configChanges="orientation|keyboardHidden">
+ android:label="@string/app_name" android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
-
</application>
-</manifest>
\ No newline at end of file
+
+ <uses-sdk android:minSdkVersion="7" />
+
+</manifest>
\ No newline at end of file
#book-text blockquote {
font-size: 0.875em;
+ margin: 0 0 0 1em;
}
/* ============= */
body {
padding: 0;
margin: 0;
- font-size: 12px;
+ /*font-size: 13px;*/
font-family: verdana, arial, helvetica, sans-serif;
}
.spinner {
- padding: 5em;
+ margin-top: 4em;
+ text-align: center;
+}
+#spinnertext {
+ margin-top: 2em;
+ font-size: .7em;
+}
+
+#cover {
+ width: 100%;
}
#searchbox {
- font-size: 1.5em;
+ font-size: 1.25em;
background: #84bf2a;
padding: 5px;
display: none;
width:80px;
float:right;
}
-#logo {
- padding: 1em;
- text-align:center;
-}
#content {
padding: 10px;
}
-.buttons a {
+.button {
display: block;
- background: #b6e372;
- font-size: 20px;
- padding: 1em;
+ background: #ddd;
+ font-size: 1.25em;
+ padding: .5em;
+ margin-bottom: .5em;
border-radius: 8px;
-webkit-border-radius: 8px;
- /*margin: 0.5em;*/
- text-align:center;
color: #295158;
- text-decoration: none;
}
-
-.book-list a {
- display: block;
- background: #eee;
- font-size: 16px;
- padding: 15px;
- margin: 5px;
- border-radius: 8px;
- -webkit-border-radius: 8px;
- text-align:center;
- color: #295158;
- text-decoration: none;
+.button img {
+ margin-right: .5em;
+ vertical-align: middle;
+}
+.button .sub {
+ font-size: .7em;
+}
+.button .note {
+ font-size: .5em;
+ text-align: right;
+}
+.button img {
+ float:left;
+}
+.button .label {
+ margin-left: 32px;
}
-a.Book {
+.button-Book {
+ background: #ccc;
+}
+.button-BookText {
background: #ccc;
}
+.delete {
+ float: right;
+ width: 24px;
+
+ background: #464646;
+ font-size: 1.25em;
+ padding: .5em;
+ margin-bottom: .5em;
+ border-radius: 8px;
+ -webkit-border-radius: 8px;
+ color: white;
+ text-align: center;
+}
h1 .subheader {
display:block;
.footer {
- color: #888;
- border-top: 1px solid #888;
- margin-top: 2em;
- font-size: 0.9em;
+ font-size: 0.75em;
+ text-align: center;
+}
+
+.clr {
+ clear: both;
+}
+
+
+.info dt {
+ display: inline;
+ font-weight: bold;
+}
+
+.info dd {
+ display: inline;
+ margin: 0;
}
-.footer a {
- color: #888;
+.info img {
+ max-width: 100%;
}
\ No newline at end of file
<head>
<title>Wolne Lektury</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <script type="text/javascript" charset="utf-8" src="js/phonegap.0.9.4.js"></script>
- <script type="text/javascript" charset="utf-8" src="js/assetcopy.js"></script>
+
+ <script type="text/javascript" charset="utf-8" src="js/phonegap-1.0.0.js"></script>
+
+ <script type="text/javascript" charset="utf-8" src="js/dbput.js"></script>
<script type="text/javascript" charset="utf-8" src="js/downloader.js"></script>
+ <script type="text/javascript" charset="utf-8" src="js/menuinterface.js"></script>
+
+ <script type="text/javascript" charset="utf-8" src="js/main.js"></script>
<script type="text/javascript" charset="utf-8" src="js/catalogue.js"></script>
+ <script type="text/javascript" charset="utf-8" src="js/filerepo.js"></script>
+ <script type="text/javascript" charset="utf-8" src="js/history.js"></script>
+ <script type="text/javascript" charset="utf-8" src="js/links.js"></script>
+ <script type="text/javascript" charset="utf-8" src="js/menu.js"></script>
+ <script type="text/javascript" charset="utf-8" src="js/view.js"></script>
+
<link rel="stylesheet" type="style/css" href="css/style.css" />
<link rel="stylesheet" type="style/css" href="css/book_text.css" />
</head>
</form>
</div>
+<img id="cover" src="img/cover.jpg" />
<div id="content">
-
-<div class="spinner">
-<img src="img/spinner.gif" /><br/>
-<span id="spinnertext">Ładowanie</span
+<p class='footer'>Uruchamianie…</p>
</div>
</div>
-<div class="footer">Wersja testowa (0.1 beta). Kontakt: <a href='mailto:wolnelektury@nowoczesnapolska.org.pl'>wolnelektury@nowoczesnapolska.org.pl</a></div>
-
+<div id='nothing'></div>
</body>
</html>
\ No newline at end of file
+++ /dev/null
-function AssetCopy() {
-
-}
-
-AssetCopy.prototype.copy = function(asset, target, overwrite, win, fail) {
- if(overwrite==false) overwrite="false";
- else overwrite="true";
- PhoneGap.exec(win, fail, "AssetCopy", "copy", [asset, target, overwrite]);
-};
-
-PhoneGap.addConstructor(function() {
- PhoneGap.addPlugin("assetcopy", new AssetCopy());
- PluginManager.addService("AssetCopy","pl.org.nowoczesnapolska.wlmobi.AssetCopy");
-});
\ No newline at end of file
-// FIXME: htmlescape strings!
-
-var VERSION = '0.1';
-
-
-var FileRepo = new function() {
- /* API for files repository */
- var self = this;
- const WL_URL = 'http://www.wolnelektury.pl';
- this.root = null;
-
- this.init = function(success, error) {
- self.initRoot(success);
- };
-
- this.initRoot = function(success) {
- // fs size is irrelevant, PERSISTENT is futile (on Android, at least)
- window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function(fs) {
- console.log('local fs found: ' + fs.root.fullPath);
- self.root = fs.root;
- success && success();
- }, function() {
- console.log('local fs not found');
- success && success();
- });
- };
-
-
- this.withLocalHtml = function(book_id, success, error) {
- console.log('info:withLocalHtml: id:' + book_id);
- View.spinner('Otwieranie treści utworu');
- if (!self.root)
- error && error('info:withLocalHtml: no local html: no usable filesystem');
-
- var url = "file://" + self.root.fullPath + "/html/" + book_id;
- console.log('info:withLocalHtml: local ajax: ' + url);
- var xhr = new XMLHttpRequest();
- xhr.open('GET', url, true);
- xhr.onload = function() {
- console.log('info:withLocalHtml: fetched by local ajax: ' + url);
- success && success(xhr.responseText);
- }
- xhr.onerror = error;
- xhr.send();
- };
-
-
- // downloads HTML file from server, saves it in cache and calls success with file contents
- this.withHtmlFromServer = function(book_id, success, error) {
- console.log('info:withHtmlFromServer: id:' + book_id);
- // read file from WL
- Catalogue.withBook(book_id, function(book) {
- var url = WL_URL + book.html_file;
- console.log('info:withHtmlFromServer: fetching url: ' + url);
-
- View.spinner("Pobieranie treści utworu z sieci");
-
- if (self.root) {
- window.plugins.downloader.downloadFile(url, self.root.fullPath + "/html/", ""+book_id, true,
- function(data){
- console.log('info:withHtmlFromServer: loaded file from WL');
- self.withLocalHtml(book_id, success, error);
- }, function(data) {
- console.log('error downloading file!')
- error && error("error: "+data);
- });
- }
- else {
- // there's no big fs, so we'll just get the text from AJAX
- console.log('info:withHtmlFromServer: ajax: ' + url);
- var xhr = new XMLHttpRequest();
- xhr.open(url);
- xhr.onload = function() {
- console.log('info:withHtmlFromServer: fetched by ajax: ' + url);
- success && success(xhr.responseText);
- }
- xhr.send();
- }
- });
- };
-
- // calls the callback with contents of the HTML file for a given book,
- // loaded from the server and cached locally
- this.withHtml = function(id, success, error) {
- console.log('info:withHtml: id:' + id);
- self.withLocalHtml(id, success, function() {
- self.withHtmlFromServer(id, success, error);
- });
- };
-};
-
-
-var View = new function() {
- var self = this;
- self.minOffset = 1000;
- //self.element
- self.categories = {
- autor: 'Autorzy',
- rodzaj: 'Rodzaje',
- gatunek: 'Gatunki',
- epoka: 'Epoki'
- };
-
-
- self.init = function() {
- console.log('View.init');
-
- self.viewStack = [];
- self.current;
- navigator.app.overrideBackbutton();
- document.addEventListener("backbutton", View.goBack, true);
-
- self._searchbox = document.getElementById("searchbox");
- self._searchinput = document.getElementById("search");
- self._content = document.getElementById("content");
-
- self.enter(location.href);
- };
-
-
- this.sanitize = function(text) {
- return text.replace(/&/g, "&").replace(/</g, "<");
- };
-
- this.showSearch = function() {
- self._searchbox.style.display = "block";
- };
-
- this.hideSearch = function() {
- self._searchbox.style.display = "none";
- };
-
- this.spinner = function(text) {
- if (!text)
- text = "Ładowanie";
- self._content.innerHTML = "<div class='spinner'><img src='img/spinner.gif' /><br/><span id='spinnertext'>" + text +"</span></div>";
- scroll(0, 0);
- };
+var DB_VER = '0.9.15';
- this.content = function(text) {
- console.log('content');
+var WL_INITIAL = WL + '/media/api/mobile/initial/initial.db';
+var WL_UPDATE = WL + '/api/changes/SINCE.json?book_fields=author,html,parent,parent_number,sort_key,title' +
+ '&tag_fields=books,category,name,sort_key' +
+ '&tag_categories=author,epoch,genre,kind';
- self._content.innerHTML = '';
- self._content.innerHTML = text;
- scroll(0, 0);
- }
-
- this.enter = function(url) {
- console.log('View.enter: ' + url);
-
- self.current = url;
- var view = 'Index';
- var arg = null;
-
- var query_start = url.indexOf('?');
- if (query_start != -1) {
- var slash_index = url.indexOf('/', query_start + 1);
- if (slash_index != -1) {
- view = url.substr(query_start + 1, slash_index - query_start - 1);
- arg = url.substr(slash_index + 1);
- }
- else {
- view = url.substr(query_start + 1);
- }
- }
- console.log('View.enter: ' + view + ' ' + arg);
- self['enter' + view](arg);
- }
-
- this.enterIndex = function(arg) {
- console.log('enterIndex');
- self.showSearch();
- var html = "<div class='book-list'>";
- for (category in self.categories)
- html += self.a('Category', category) + self.categories[category] + "</a>\n";
- html += "</div>" +
- "<p id='logo'><img src='img/wl-logo.png' alt='Wolne Lektury' /><br/>\n" +
- "szkolna biblioteka internetowa" +
- //"<br/>v. " + VERSION +
- "</p>";
- self.content(html);
- };
-
- this.enterBook = function(id) {
- id = parseInt(id);
- console.log('enterBook: ' + id);
- self.showSearch();
-
- Catalogue.withBook(id, function(book) {
- Catalogue.withChildren(id, function(children) {
- Catalogue.withAuthors(id, function(authors) {
- var html = "<h1><span class='subheader'>";
- var auths = [];
- for (a in authors) auths.push(authors[a].name);
- html += auths.join(", ");
- html += "</span>" + book.title + "</h1>\n";
- if (book.html_file) {
- html += "<p class='buttons'>" + self.a('BookText', id) + "Czytaj tekst</a></p>";
- }
- if (children.length) {
- html += "<div class='book-list'>";
- for (c in children) {
- child = children[c];
- html += self.a('Book', child.id) + child.title + "</a>\n";
- }
- html += "</div>";
- }
- self.content(html);
- });
- });
- });
- }
-
- this.enterBookText = function(id) {
- id = parseInt(id);
- self.spinner("Otwieranie utworu");
- console.log('enterBookText: ' + id);
- self.hideSearch();
-
- FileRepo.withHtml(id, function(data) {
- self.content(data);
- });
- }
-
- this.enterTag = function(id) {
- id = parseInt(id);
- console.log('enterTag: ' + id);
- self.showSearch();
-
- self.spinner("Otwieranie listy utworów");
-
- Catalogue.withTag(id, function(tag) {
- var html = "<h1><span class='subheader upper'>" + tag.category + ': </span>' + tag.name + "</h1>\n";
- html += "<div class='book-list'>";
- if (tag._books) {
- Catalogue.withBooks(tag._books, function(books) {
- for (var i in books) {
- var book = books[i];
- html += self.a('Book', book.id) + book.title + "</a>\n";
- }
- html += "</div>";
- self.content(html);
- });
- }
- });
- };
-
-
- this.enterCategory = function(category) {
- console.log('enterCategory: ' + category);
- self.spinner("Otwieranie katalogu");
- self.showSearch();
-
- Catalogue.withCategory(category, function(tags) {
- var html = "<h1>" + self.categories[category] + "</h1>\n";
- html += "<div class='book-list'>";
- for (i in tags) {
- tag = tags[i];
- html += self.a('Tag', tag.id) + tag.name + "</a>\n";
- }
- html += "</div>";
- self.content(html);
- });
- };
-
-
-
- this.enterSearch = function(query) {
- console.log('enterTag: ' + query);
- self.showSearch();
-
- var html = "<h1><span class='subheader'>Szukana fraza:</span>" + View.sanitize(query) + "</h1>\n";
- if (query.length < 2) {
- html += "<p>Szukana fraza musi mieć co najmniej dwa znaki</p>";
- self.content(html);
- return;
- }
-
- Catalogue.withSearch(query, function(results) {
- if (results.length == 1) {
- self.enter(self.href(results[0].view, results[0].id));
- return;
- }
- if (results.length == 0) {
- html += "<p>Brak wyników wyszukiwania</p>";
- }
- else {
- html += "<div class='book-list'>";
- for (var i in results) {
- var result = results[i];
- html += self.a(result.view, result.id) + result.label + "</a>\n";
- }
- html += "</div>";
- }
- self.content(html);
- });
- };
+var categories = {'author': 'autor',
+ 'epoch': 'epoka',
+ 'genre': 'gatunek',
+ 'kind': 'rodzaj',
+ 'theme': 'motyw'
+ }
- /* search form submit callback */
- this.search = function() {
- self.goTo('?Search/' + self._searchinput.value);
- return false;
- }
-
-
- this.href = function(view, par) {
- return "?"+view+"/"+par;
- };
-
- this.a = function(view, par) {
- return "<a class='"+view+"' onclick='View.goTo(\"" +
- self.href(view, par).replace(/["']/g, "\\$&") + "\");'>";
- };
-
- this.goTo = function(url) {
- self.viewStack.push(self.current);
- console.log('goTo: ' + url);
- self.enter(url);
- };
-
- this.goBack = function() {
- if (self.viewStack.length > 0) {
- var url = self.viewStack.pop();
- console.log('goBack: ' + url);
- self.enter(url);
- }
- else {
- console.log('exiting');
- navigator.app.exitApp();
- }
- };
-}
+// FIXME: htmlescape strings!
-/*
// for preparing sql statements
// use like:
// var s = new Sql("INSERT ... '{0}', '{1}' ...";
self.prepare = function() {
var args = arguments;
return self.text.replace(/{(\d+)}/g, function(match, number) {
- return self.sql_escape(args[number]);
+ return self.sql_escape(args[parseInt(number)]);
});
}
-};*/
+};
var Catalogue = new function() {
/* check if DB needs updating and upload a fresh copy, if so */
this.updateDB = function(success, error) {
- var db_ver = '0.1.4';
- if (window.localStorage.getItem('db_ver') == db_ver) {
+ var has_ver = window.localStorage.getItem('db_ver');
+ if (has_ver == DB_VER) {
console.log('db ok, skipping')
success && success();
return;
}
var done = function() {
- window.localStorage.setItem('db_ver', db_ver);
+ FileRepo.clear();
+ window.localStorage.setItem('db_ver', DB_VER);
console.log('db updated');
success && success();
};
// db initialize
// this is Android-specific for now
- var version = device.version.split('.')[0];
- switch(version) {
- case '1':
- self.upload_db_android1(done, error);
- break;
- case '2':
- self.upload_db_android2(done, error);
- break;
- case '3':
- default:
- error && error('Błąd migracji: ' + err);
+ var android = device.version.split('.')[0];
+ if (android > 1) {
+ self.upload_db_android(done, error);
+ } else {
+ error && error("Nieobsługiwana wersja systemu. Wymagany Android>=2.0.");
};
};
- this.upload_db_android1 = function(success, error) {
- console.log('upload db for Android 1.x');
- window.requestFileSystem(LocalFileSystem.APPLICATION, 0, function(fs) {
- window.plugins.assetcopy.copy("initial/wolnelektury.db",
- fs.root.fullPath + "/databases/wolnelektury.db", true,
- function(data) {
- console.log('db upload successful');
- success && success();
- }, function(data) {
- error && error("database upload error: " + data);
- });
- }, error);
+ this.upload_db_android = function(success, error) {
+ // TODO: this should be downloaded from teh net, not stored in res
+
+ console.log('upload db for Android 2.x+');
+ // upload databases description file
+
+ var dbname = "wolnelektury";
+ var db = window.openDatabase(dbname, "1.0", "WL Catalogue", 500000);
+ if (db) {
+ console.log('db created successfully');
+ DBPut.fetch(WL_INITIAL, function(data) {
+ console.log('db fetch successful');
+ success && success();
+ }, function(data) {
+ error && error('Błąd podczas pobierania bazy danych: ' + data);
+ });
+ } else {
+ error && error('Błąd podczas inicjowania bazy danych: ' + data);
+ }
};
- this.upload_db_android2 = function(success, error) {
- console.log('upload db for Android 2.x');
- window.requestFileSystem(LocalFileSystem.APPLICATION, 0, function(fs) {
-
- // upload databases description file
- window.plugins.assetcopy.copy("initial/Databases.db",
- fs.root.fullPath + "/app_database/Databases.db", true,
- function(data) {
- console.log('db descriptior upload successful');
-
- // upload the database file
- window.plugins.assetcopy.copy("initial/0000000000000001.db",
- fs.root.fullPath + "/app_database/file__0/0000000000000001.db", true,
- function(data) {
- console.log('db upload successful');
- success && success();
- }, function(data) {
- error && error("database upload error: " + data);
- });
-
-
- }, function(data) {
- error && error("database descriptor upload error: " + data);
+ this.withState = function(callback) {
+ self.db.transaction(function(tx) {
+ tx.executeSql("SELECT * FROM state", [],
+ function(tx, results) {
+ if (results.rows.length) {
+ callback(results.rows.item(0));
+ }
+ else {
+ callback({last_checked: 0});
+ }
});
-
- }, error);
+ });
};
- this.withBook = function(id, callback) {
+ this.withBook = function(id, callback, error) {
console.log('withBook '+id)
self.db.transaction(function(tx) {
tx.executeSql("SELECT * FROM book WHERE id="+id, [],
function(tx, results) {
- callback(results.rows.item(0));
+ if (results.rows.length) {
+ callback(results.rows.item(0));
+ }
+ else {
+ error && error();
+ }
});
});
};
this.withBooks = function(ids, callback) {
console.log('withBooks ' + ids)
self.db.transaction(function(tx) {
- tx.executeSql("SELECT * FROM book WHERE id IN ("+ids+") ORDER BY title", [],
+ tx.executeSql("SELECT * FROM book WHERE id IN ("+ids+") ORDER BY sort_key", [],
function(tx, results) {
var items = [];
var count = results.rows.length;
});
};
- this.withAuthors = function(id, callback) {
- console.log('withAuthors ' + id);
- self.db.transaction(function(tx) {
- tx.executeSql("SELECT t.name " +
- "FROM book_tag bt LEFT JOIN tag t ON t.id=bt.tag " +
- "WHERE bt.book="+id+" AND t.category='autor' " +
- "ORDER BY t.sort_key", [],
- function(tx, results) {
- var tags = [];
- var count = results.rows.length;
- for (var i=0; i<count; ++i) {
- tags.push(results.rows.item(i));
- }
- callback(tags);
- });
- });
- };
-
this.withChildren = function(id, callback) {
console.log('withChildren ' + id)
self.db.transaction(function(tx) {
- tx.executeSql("SELECT * FROM book WHERE parent="+id+" ORDER BY parent_number", [],
+ tx.executeSql("SELECT * FROM book WHERE parent="+id+" ORDER BY parent_number, sort_key", [],
function(tx, results) {
var books = [];
var count = results.rows.length;
});
};
- this.withTag = function(id, callback) {
+ this.withTag = function(id, callback, error) {
console.log('withTag '+id)
self.db.transaction(function(tx) {
tx.executeSql("SELECT * FROM tag WHERE id="+id, [],
function(tx, results) {
- callback(results.rows.item(0));
+ if (results.rows.length) {
+ callback(results.rows.item(0));
+ }
+ else {
+ error && error();
+ }
});
});
};
this.withCategory = function(category, callback) {
console.log('withCategory ' + category)
self.db.transaction(function(tx) {
- tx.executeSql("SELECT * FROM tag WHERE category='"+category+"'", [],
+ tx.executeSql("SELECT * FROM tag WHERE category='"+category+"' ORDER BY sort_key", [],
function(tx, results) {
var items = [];
var count = results.rows.length;
};
-/* this.withUnrelatedBooks = function(books, success) {
- if (books.length == 0) return books;
-
- var book_ids = {};
- for (i in books) {
- book_ids[books[i].id] = true;
- }
- var new_books = [];
-
- var addIfUnrelated = function(book) {
- var addIfUnrelated_wrapped = function(b) {
- if (b.parent) {
- if (b.parent in book_ids) {
- // go to next book
- filterBooks();
- }
- else self.withBook(b.parent, addIfUnrelated_wrapped);
- }
- else {
- new_books.push(book);
- // go to next book
- filterBooks();
- }
- };
- addIfUnrelated_wrapped(book);
- };
-
-
- var filterBooks = function() {
- console.log('filterBooks: ' + books.length);
- if (books.length) {
- addIfUnrelated(books.shift());
- }
- else {
- success && success(new_books);
- }
- };
-
- filterBooks();
- };
-
-
- this.withBooksTagged = function(tag, callback, withChildren) {
- self.db.transaction(function(tx) {
- tx.executeSql("SELECT book.* " +
- "FROM book LEFT JOIN book_tag ON book_tag.book=book.id " +
- "WHERE book_tag.tag="+tag+" ORDER BY book.title", [],
- function(tx, results) {
- var books = [];
- var count = results.rows.length;
- console.log('withBooksTagged('+tag+'): '+count);
- for (var i=0; i<count; ++i) {
- books.push(results.rows.item(i));
- }
- if (withChildren)
- callback(books);
- else self.withUnrelatedBooks(books, callback);
- });
- });
- };
-*/
-
/* takes a query, returns a list of {view,id,label} objects to a callback */
this.withSearch = function(term, callback) {
console.log('searching...');
+ term = term.replace(/^\s+|\s+$/g, '') ;
var found = [];
function booksFound(tx, results) {
var item = results.rows.item(i);
found.push({
view: "Book",
- id: item.id,
- label: item.title
+ item: item
});
}
};
var item = results.rows.item(i);
found.push({
view: "Tag",
- id: item.id,
- label: item.name + ' (' + item.category + ')'
+ item: item
});
}
// TODO error handling
// TODO pliterki, start of the word match
self.db.transaction(function(tx) {
sql_term = self.sqlSanitize(term); // this is still insane, % and _
- tx.executeSql("SELECT id, title FROM book WHERE title LIKE '%"+sql_term+"%' ORDER BY title LIMIT 10", [],
- //tx.executeSql("SELECT id, title FROM book WHERE title REGEXP '.*"+sql_term+".*' ORDER BY title", [],
+ tx.executeSql("SELECT * FROM book WHERE title LIKE '%"+sql_term+"%' ORDER BY sort_key LIMIT 10", [],
+ //tx.executeSql("SELECT * FROM book WHERE title REGEXP '.*"+sql_term+".*' ORDER BY sort_key", [],
function(tx, results) {
// save the books
booksFound(tx, results);
// and proceed to tags
- tx.executeSql("SELECT id, name, category FROM tag WHERE name LIKE '%"+sql_term+"%' ORDER BY name LIMIT 10",
+ tx.executeSql("SELECT * FROM tag WHERE name LIKE '%"+sql_term+"%' ORDER BY sort_key LIMIT 10",
[], tagsFound);
},
function(err) {
});
};
-/*
- // each book and tag in its own transaction
- // TODO: error handling
- self.parse = function(json, success, error) {
- console.log('parsing');
+ self.chainSqls = function(sqls, success, error) {
+ self.db.transaction(function(tx) {
+ var do_next = function() {
+ if (sqls.length) {
+ var sql = sqls.shift();
+ console.log(sql);
+ tx.executeSql(sql, [], do_next, error);
+ }
+ else {
+ success && success();
+ }
+ }
+ do_next();
+ });
+ };
+
+
+ self.update = function(data, success, error) {
+ var addBookSql = new Sql("\
+ INSERT OR REPLACE INTO book \
+ (id, title, html_file, html_file_size, parent, parent_number, sort_key, pretty_size, authors) \
+ VALUES \
+ ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}')");
+ var addTagSql = new Sql("INSERT OR REPLACE INTO tag (id, category, name, sort_key, books) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}')");
+
var sqls = [];
- var addBookSql = new Sql("INSERT INTO book (id, title, html_file, html_file_size) VALUES ('{0}', '{1}', '{2}', '{3}')");
- var addBookTagSql = new Sql("INSERT INTO book_tag (book, tag) VALUES ('{0}', '{1}')");
- var addTagSql = new Sql("INSERT INTO tag (id, category, name) VALUES ('{0}', '{1}', '{2}')");
-
- var bookValues = [];
- var books = json.added.books;
- while (books.length) {
- var book = books.shift();
- if (!book.html) book.html = '';
- if (!book.html_size) book.html_size = '';
- sqls.push(addBookSql.prepare(book.id, book.title, book.html, book.html_size));
- for (var t in book.tags) {
- sqls.push(addBookTagSql.prepare(book.id, book.tags[t]));
+
+ if (data.deleted) {
+ for (i in data.deleted.books) {
+ var book_id = data.deleted.books[i];
+ sqls.push("DELETE FROM book WHERE id=" + book_id);
+ FileRepo.deleteIfExists(book_id);
+ }
+
+ for (i in data.deleted.tags) {
+ var tag_id = data.deleted.tags[i];
+ sqls.push("DELETE FROM tag WHERE id=" + tag_id);
}
}
- console.log('ASSERT json.added.books.length=0: ' + json.added.books.length);
- var categories = {author: 'autor', epoch: 'epoch', genre: 'genre', kind: 'kind', theme: 'motyw'};
- var tags = json.added.tags;
- while (tags.length) {
- var tag = tags.shift();
- sqls.push(addTagSql.prepare(tag.id, categories[tag.category], tag.name));
+ if (data.updated) {
+ for (i in data.updated.books) {
+ var book = data.updated.books[i];
+ if (!book.html) book.html = {};
+ if (!book.html.url) book.html.url = '';
+ if (!book.html.size) book.html.size = '';
+ if (!book.parent) book.parent = '';
+ if (!book.parent_number) book.parent_number = '';
+ var pretty_size = prettySize(book.html.size);
+ sqls.push(addBookSql.prepare(
+ book.id, book.title, book.html.url, book.html.size,
+ book.parent, book.parent_number, book.sort_key, pretty_size, book.author
+ ));
+ FileRepo.deleteIfExists(book.id);
+ }
+
+ for (i in data.updated.tags) {
+ var tag = data.updated.tags[i];
+ var category = categories[tag.category];
+ var books = tag.books.join(',');
+ sqls.push(addTagSql.prepare(tag.id, category, tag.name, tag.sort_key, books));
+ }
}
- self.chainSql(sqls, success, error);
- }; */
-}
+ sqls.push("UPDATE state SET last_checked=" + data.time_checked);
+ self.chainSqls(sqls, success, error);
+ };
-function onLoad() {
- console.log('onLoad');
- document.addEventListener("deviceready", onDeviceReady, false);
-}
+ this.sync = function(success, error) {
+ self.withState(function(state) {
+ var url = WL_UPDATE.replace("SINCE", state.last_checked);
+ console.log('sync: ' + url);
+ var xhr = new XMLHttpRequest();
+ xhr.open("GET", url);
+ xhr.onload = function() {
+ console.log('sync: fetched by ajax: ' + url);
+ self.update(JSON.parse(xhr.responseText), success, error);
+ }
+ xhr.onerror = function(e) {
+ error && error("Błąd aktualizacji bazy danych." + e);
+ }
+ xhr.send();
+ });
+ };
-function onDeviceReady() {
- console.log('onDeviceReady');
- var error = function(err) { alert(err); };
- Catalogue.init(
- function() {
- console.log('after catalogue.init');
- FileRepo.init(
- function() {
- console.log('after FileRepo.init');
- View.init();
- },
- error);
- }, error);
+ this.updateLocal = function() {
+ FileRepo.withLocal(function(local) {
+ self.db.transaction(function(tx) {
+ tx.executeSql("UPDATE book SET _local=0", [], function(tx, results) {
+ ll = local.length;
+ var ids = [];
+ for (var i = 0; i < ll; i ++) {
+ ids.push(local[i].name);
+ }
+ ids = ids.join(',');
+ tx.executeSql("UPDATE book SET _local=1 where id in ("+ids+")");
+ });
+ });
+ }, function() {
+ self.db.transaction(function(tx) {
+ tx.executeSql("UPDATE book SET _local=0");
+ });
+ });
+ };
}
--- /dev/null
+/**
+ *
+ * @return Object literal singleton instance of DBPut
+ */
+var DBPut = {
+ /**
+ * @param asset Path to the asset (relative to assets dir)
+ * @param target Path to DB file (relative to app db files dir)
+ * @param overwrite
+ * @param win Success callback
+ * @param fail Error callback
+ */
+ put: function(asset, target, overwrite, win, fail) {
+ if (overwrite==false) overwrite="false";
+ else overwrite="true";
+ return PhoneGap.exec(
+ win,
+ fail,
+ "DBPut",
+ "put",
+ [asset, target, overwrite]
+ );
+ },
+ fetch: function(url, win, fail) {
+ return PhoneGap.exec(
+ win,
+ fail,
+ "DBPut",
+ "fetch",
+ [url]
+ );
+ }
+};
+
-function Downloader() {
-
-}
-
-Downloader.prototype.downloadFile = function(fileUrl,dirName,fileName,overwrite,win,fail) {
- if(overwrite==false) overwrite="false";
- else overwrite="true";
- PhoneGap.exec(win, fail, "Downloader", "downloadFile", [fileUrl,dirName,fileName,overwrite]);
-
+/**
+ *
+ * @return Object literal singleton instance of Downloader
+ */
+var Downloader = {
+ /**
+ * @param fileUrl
+ * @param dirName
+ * @param fileName
+ * @param overwrite
+ * @param win
+ * @param fail
+ */
+ downloadFile: function(fileUrl,dirName,fileName,overwrite,win,fail) {
+ if(overwrite==false) overwrite="false";
+ else overwrite="true";
+ return PhoneGap.exec(win, fail, "Downloader", "downloadFile", [fileUrl,dirName,fileName,overwrite]);
+ }
};
-
-PhoneGap.addConstructor(function() {
- PhoneGap.addPlugin("downloader", new Downloader());
- PluginManager.addService("Downloader","pl.org.nowoczesnapolska.wlmobi.Downloader");
-});
\ No newline at end of file
--- /dev/null
+var FileRepo = new function() {
+ /* API for files repository */
+ var self = this;
+ this.root = null;
+
+ this.init = function(success, error) {
+ self.initRoot(success);
+ };
+
+ this.initRoot = function(success) {
+ // fs size is irrelevant, PERSISTENT is futile (on Android, at least)
+ window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function(fs) {
+ console.log('local fs found: ' + fs.root.fullPath);
+ self.root = fs.root;
+ success && success();
+ }, function() {
+ console.log('local fs not found');
+ success && success();
+ });
+ };
+
+
+ this.withLocalHtml = function(book_id, success, error) {
+ console.log('info:withLocalHtml: id:' + book_id);
+ View.spinner('Otwieranie treści utworu');
+ if (!self.root)
+ error && error('info:withLocalHtml: no local html: no usable filesystem');
+
+ var url = "file://" + self.root.fullPath + "/html/" + book_id;
+ console.log('info:withLocalHtml: local ajax: ' + url);
+ var xhr = new XMLHttpRequest();
+ xhr.open('GET', url, true);
+ xhr.onload = function() {
+ console.log('info:withLocalHtml: fetched by local ajax: ' + url);
+ success && success(xhr.responseText);
+ }
+ xhr.onerror = error;
+ xhr.send();
+ };
+
+
+ this.withLocal = function(win, fail) {
+ if (self.root) {
+ self.root.getDirectory('html', {}, function(dir) {
+ var reader = dir.createReader();
+ reader.readEntries(win, fail);
+ });
+ }
+ else {
+ win && win([]);
+ }
+ }
+
+
+ // downloads HTML file from server, saves it in cache and calls success with file contents
+ this.withHtmlFromServer = function(book_id, success, error) {
+ console.log('info:withHtmlFromServer: id:' + book_id);
+ // read file from WL
+ Catalogue.withBook(book_id, function(book) {
+ var url = WL + book.html_file;
+ console.log('info:withHtmlFromServer: fetching url: ' + url);
+
+ View.spinner("Pobieranie treści utworu z sieci");
+
+ if (self.root) {
+ Downloader.downloadFile(url, self.root.fullPath + "/html/", ""+book_id, true,
+ function(data){
+ console.log('info:withHtmlFromServer: loaded file from WL');
+ self.withLocalHtml(book_id, success, error);
+ }, function(data) {
+ console.log('error downloading file!')
+ error && error("error: " + data);
+ });
+ }
+ else {
+ // there's no big fs, so we'll just get the text from AJAX
+ console.log('info:withHtmlFromServer: ajax: ' + url);
+ var xhr = new XMLHttpRequest();
+ xhr.open("GET", url);
+ xhr.onload = function() {
+ console.log('info:withHtmlFromServer: fetched by ajax: ' + url);
+ success && success(xhr.responseText);
+ }
+ xhr.onerror = function() {
+ console.log('error downloading file!')
+ error && error("error: " + data);
+ }
+ xhr.send();
+ }
+ });
+ };
+
+ // calls the callback with contents of the HTML file for a given book,
+ // loaded from the server and cached locally
+ this.withHtml = function(id, success, error) {
+ console.log('info:withHtml: id:' + id);
+ self.withLocalHtml(id, success, function() {
+ self.withHtmlFromServer(id, success, error);
+ });
+ };
+
+
+ this.clear = function() {
+ FileRepo.withLocal(function(local) {
+ for (i in local) {
+ local[i].remove();
+ }
+ });
+ };
+
+
+ this.deleteIfExists = function(id) {
+ if (self.root) {
+ self.root.getFile('html/' + id, {create: false}, function(f) {
+ f.remove();
+ });
+ }
+ }
+};
--- /dev/null
+
+var History = new function() {
+ var self = this;
+
+ self.init = function(success, error) {
+ console.log('History.init');
+
+ self.viewStack = [];
+ navigator.app.overrideBackbutton();
+ document.addEventListener("backbutton", History.goBack, true);
+
+ success && success();
+ };
+
+ self.visit = function(url, offset) {
+ offset = offset || 0;
+ self.viewStack.push(View.current);
+ console.log('History.visit: ' + url);
+ View.enter(url, offset);
+ };
+
+ self.goBack = function() {
+ if (self.viewStack.length > 0) {
+ var url = self.viewStack.pop();
+ console.log('History.goBack: ' + url);
+ View.enter(url);
+ }
+ else {
+ console.log('History: exiting');
+ navigator.app.exitApp();
+ }
+ };
+
+
+ self.lastRead = function() {
+ var last_read = window.localStorage.getItem('History.last_ids');
+ try {
+ return last_read.split(';');
+ } catch (err) {
+ return [];
+ }
+ };
+
+ self.addRead = function(id, offset) {
+ id = "" + id; // this should check if int
+ console.log("History.addRead: " + id);
+ var last_read = self.lastRead();
+ var lastly = last_read.indexOf(id);
+ if (lastly != -1) {
+ last_read.splice(lastly, 1);
+ }
+ while (last_read.length >= 10) {
+ last_read.pop();
+ }
+ last_read.unshift(id);
+ window.localStorage.setItem('History.last_ids', last_read.join(';'));
+ }
+
+
+ self.bookmarks = function() {
+ var bookmarks = window.localStorage.getItem('History.bookmarks');
+ try {
+ return JSON.parse(bookmarks) || [];
+ } catch (err) {
+ return [];
+ }
+ };
+
+ self.addBookmark = function(name) {
+ var id=(new Date).getTime();
+ console.log("History.addBookmark: " + id);
+
+ var bms = self.bookmarks();
+ bms.unshift({
+ id: id,
+ name: name,
+ title: View.currentTitle,
+ view: View.currentView,
+ par: View.currentPar,
+ offset: currentOffset()
+ });
+ window.localStorage.setItem('History.bookmarks', JSON.stringify(bms));
+ }
+
+ self.deleteBookmark = function(id) {
+ console.log("History.deleteBookmark: " + id);
+ var bms = self.bookmarks();
+ for (b in bms) {
+ if (bms[b].id == id) {
+ bms.splice(b, 1);
+ }
+ }
+ window.localStorage.setItem('History.bookmarks', JSON.stringify(bms));
+ View.onBookmarkChange();
+ }
+}
--- /dev/null
+
+var Links = new function() {
+ var self = this;
+
+ self.href = function(view, par) {
+ return view+"/"+par;
+ };
+
+ self.button = function(view, par, text, offset) {
+ offset = offset || 0;
+ var html = "<div class='button button-"+view+"' onclick='History.visit(\"" +
+ self.href(view, par).replace(/["']/g, "\\$&") + "\", "+offset+");'>";
+ icon = view;
+ if (icon != 'Book' && icon != 'Bookmarks' && icon != 'BookText' &&
+ icon != 'Last' && icon != 'Tag') {
+ icon = 'Tag';
+ }
+ html += "<img src='img/icon-" + icon + ".png' />";
+ html += "<div class='label'>" + text + "</div>";
+ html += "<div class='clr'></div>";
+ html += "</div>\n";
+ return html;
+ };
+
+ self.bookLink = function(book) {
+ var target = 'Book';
+ var note = '';
+
+ if (book.html_file) {
+ // this assumes that either book has a html XOR it has children
+ target = 'BookText';
+ note = "<div class='note'>";
+ if (book._local)
+ note += 'Pobrane';
+ else {
+ note += book.pretty_size;
+ }
+ note += "</div>";
+ }
+
+ return self.button(target, book.id,
+ "<div class='sub'>" + book.authors + "</div>" +
+ book.title + note);
+ };
+
+ self.deleteButton = function(id) {
+ return "<div class='delete' onClick='History.deleteBookmark(\""+id+"\");'>x</div>";
+ };
+}
--- /dev/null
+var VERSION = '1.0';
+var WL = 'http://www.wolnelektury.pl';
+
+
+function onLoad() {
+ console.log('onLoad');
+ document.addEventListener("deviceready", onDeviceReady, false);
+}
+
+function onDeviceReady() {
+ console.log('onDeviceReady');
+ var error = function(err) { alert(err); };
+
+ FileRepo.init(function() {
+ console.log('after FileRepo.init');
+ Catalogue.init(function() {
+ console.log('after catalogue.init');
+ History.init(function() {
+ console.log('after history.init');
+ View.init(function() {
+ Catalogue.sync(function() {
+ Catalogue.updateLocal();
+ }, error);
+ }, error);
+ }, error);
+ }, error);
+ });
+}
+
+
+var currentOffset = function() {
+ var scr = document.body.scrollTop;
+ var h = document.getElementById('nothing').offsetTop;
+ return scr/h;document.getElementById('nothing')
+};
+
+var setOffset = function(offset) {
+ var h = document.getElementById('nothing').offsetTop;
+ scroll(0, h*offset);
+};
+
+
+var prettySize = function(size) {
+ if (!size) return "";
+ var units = ['B', 'KiB', 'MiB', 'GiB'];
+ size = size;
+ var unit = units.shift();
+ while (size > 1000 && units.length) {
+ size /= 1024;
+ unit = units.shift();
+ }
+ if (size < 10) {
+ return Math.round(size*10)/10 + ' ' + unit;
+ }
+ return Math.round(size) + ' ' + unit;
+}
--- /dev/null
+
+var Menu = new function() {
+ var self = this;
+ var infoView = "ProjectInfo";
+
+ self.start = function() {
+ History.visit('');
+ };
+
+ self.info = function() {
+ History.visit(self.infoView + '/' + View.currentPar);
+ };
+
+ self.bookmark = function() {
+ var name = prompt('Nazwa zakładki');
+ if (name != null)
+ History.addBookmark(name);
+ };
+
+ self.setInfoButton = function(view, label, enabled) {
+ self.infoView = view;
+ window.MenuInterface.setInfoButton(label, enabled);
+ };
+}
--- /dev/null
+/**
+ *
+ * @return Object literal singleton instance of MenuInterface
+ */
+var MenuInterface = {
+ /**
+ * @param asset Path to the asset (relative to assets dir)
+ * @param target Path to DB file (relative to app db files dir)
+ * @param overwrite
+ * @param win Success callback
+ * @param fail Error callback
+ */
+ setInfoButton: function(label, enabled, win, fail) {
+ if (enabled == false) enabled = "false";
+ else enabled = "true";
+ return PhoneGap.exec(
+ win,
+ fail,
+ "MenuInterface",
+ "setInfoButton",
+ [label, enabled]
+ );
+ },
+};
+
--- /dev/null
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (typeof PhoneGap === "undefined") {
+
+/**
+ * The order of events during page load and PhoneGap startup is as follows:
+ *
+ * onDOMContentLoaded Internal event that is received when the web page is loaded and parsed.
+ * window.onload Body onload event.
+ * onNativeReady Internal event that indicates the PhoneGap native side is ready.
+ * onPhoneGapInit Internal event that kicks off creation of all PhoneGap JavaScript objects (runs constructors).
+ * onPhoneGapReady Internal event fired when all PhoneGap JavaScript objects have been created
+ * onPhoneGapInfoReady Internal event fired when device properties are available
+ * onDeviceReady User event fired to indicate that PhoneGap is ready
+ * onResume User event fired to indicate a start/resume lifecycle event
+ * onPause User event fired to indicate a pause lifecycle event
+ * onDestroy Internal event fired when app is being destroyed (User should use window.onunload event, not this one).
+ *
+ * The only PhoneGap events that user code should register for are:
+ * onDeviceReady
+ * onResume
+ *
+ * Listeners can be registered as:
+ * document.addEventListener("deviceready", myDeviceReadyListener, false);
+ * document.addEventListener("resume", myResumeListener, false);
+ * document.addEventListener("pause", myPauseListener, false);
+ */
+
+if (typeof(DeviceInfo) !== 'object') {
+ var DeviceInfo = {};
+}
+
+/**
+ * This represents the PhoneGap API itself, and provides a global namespace for accessing
+ * information about the state of PhoneGap.
+ * @class
+ */
+var PhoneGap = {
+ queue: {
+ ready: true,
+ commands: [],
+ timer: null
+ }
+};
+
+/**
+ * List of resource files loaded by PhoneGap.
+ * This is used to ensure JS and other files are loaded only once.
+ */
+PhoneGap.resources = {base: true};
+
+/**
+ * Determine if resource has been loaded by PhoneGap
+ *
+ * @param name
+ * @return
+ */
+PhoneGap.hasResource = function(name) {
+ return PhoneGap.resources[name];
+};
+
+/**
+ * Add a resource to list of loaded resources by PhoneGap
+ *
+ * @param name
+ */
+PhoneGap.addResource = function(name) {
+ PhoneGap.resources[name] = true;
+};
+
+/**
+ * Custom pub-sub channel that can have functions subscribed to it
+ * @constructor
+ */
+PhoneGap.Channel = function (type)
+{
+ this.type = type;
+ this.handlers = {};
+ this.guid = 0;
+ this.fired = false;
+ this.enabled = true;
+};
+
+/**
+ * Subscribes the given function to the channel. Any time that
+ * Channel.fire is called so too will the function.
+ * Optionally specify an execution context for the function
+ * and a guid that can be used to stop subscribing to the channel.
+ * Returns the guid.
+ */
+PhoneGap.Channel.prototype.subscribe = function(f, c, g) {
+ // need a function to call
+ if (f === null) { return; }
+
+ var func = f;
+ if (typeof c === "object" && typeof f === "function") { func = PhoneGap.close(c, f); }
+
+ g = g || func.observer_guid || f.observer_guid || this.guid++;
+ func.observer_guid = g;
+ f.observer_guid = g;
+ this.handlers[g] = func;
+ return g;
+};
+
+/**
+ * Like subscribe but the function is only called once and then it
+ * auto-unsubscribes itself.
+ */
+PhoneGap.Channel.prototype.subscribeOnce = function(f, c) {
+ var g = null;
+ var _this = this;
+ var m = function() {
+ f.apply(c || null, arguments);
+ _this.unsubscribe(g);
+ };
+ if (this.fired) {
+ if (typeof c === "object" && typeof f === "function") { f = PhoneGap.close(c, f); }
+ f.apply(this, this.fireArgs);
+ } else {
+ g = this.subscribe(m);
+ }
+ return g;
+};
+
+/**
+ * Unsubscribes the function with the given guid from the channel.
+ */
+PhoneGap.Channel.prototype.unsubscribe = function(g) {
+ if (typeof g === "function") { g = g.observer_guid; }
+ this.handlers[g] = null;
+ delete this.handlers[g];
+};
+
+/**
+ * Calls all functions subscribed to this channel.
+ */
+PhoneGap.Channel.prototype.fire = function(e) {
+ if (this.enabled) {
+ var fail = false;
+ var item, handler, rv;
+ for (item in this.handlers) {
+ if (this.handlers.hasOwnProperty(item)) {
+ handler = this.handlers[item];
+ if (typeof handler === "function") {
+ rv = (handler.apply(this, arguments) === false);
+ fail = fail || rv;
+ }
+ }
+ }
+ this.fired = true;
+ this.fireArgs = arguments;
+ return !fail;
+ }
+ return true;
+};
+
+/**
+ * Calls the provided function only after all of the channels specified
+ * have been fired.
+ */
+PhoneGap.Channel.join = function(h, c) {
+ var i = c.length;
+ var f = function() {
+ if (!(--i)) {
+ h();
+ }
+ };
+ var len = i;
+ var j;
+ for (j=0; j<len; j++) {
+ if (!c[j].fired) {
+ c[j].subscribeOnce(f);
+ }
+ else {
+ i--;
+ }
+ }
+ if (!i) {
+ h();
+ }
+};
+
+/**
+ * Boolean flag indicating if the PhoneGap API is available and initialized.
+ */ // TODO: Remove this, it is unused here ... -jm
+PhoneGap.available = DeviceInfo.uuid !== undefined;
+
+/**
+ * Add an initialization function to a queue that ensures it will run and initialize
+ * application constructors only once PhoneGap has been initialized.
+ * @param {Function} func The function callback you want run once PhoneGap is initialized
+ */
+PhoneGap.addConstructor = function(func) {
+ PhoneGap.onPhoneGapInit.subscribeOnce(function() {
+ try {
+ func();
+ } catch(e) {
+ console.log("Failed to run constructor: " + e);
+ }
+ });
+};
+
+/**
+ * Plugins object
+ */
+if (!window.plugins) {
+ window.plugins = {};
+}
+
+/**
+ * Adds a plugin object to window.plugins.
+ * The plugin is accessed using window.plugins.<name>
+ *
+ * @param name The plugin name
+ * @param obj The plugin object
+ */
+PhoneGap.addPlugin = function(name, obj) {
+ if (!window.plugins[name]) {
+ window.plugins[name] = obj;
+ }
+ else {
+ console.log("Error: Plugin "+name+" already exists.");
+ }
+};
+
+/**
+ * onDOMContentLoaded channel is fired when the DOM content
+ * of the page has been parsed.
+ */
+PhoneGap.onDOMContentLoaded = new PhoneGap.Channel('onDOMContentLoaded');
+
+/**
+ * onNativeReady channel is fired when the PhoneGap native code
+ * has been initialized.
+ */
+PhoneGap.onNativeReady = new PhoneGap.Channel('onNativeReady');
+
+/**
+ * onPhoneGapInit channel is fired when the web page is fully loaded and
+ * PhoneGap native code has been initialized.
+ */
+PhoneGap.onPhoneGapInit = new PhoneGap.Channel('onPhoneGapInit');
+
+/**
+ * onPhoneGapReady channel is fired when the JS PhoneGap objects have been created.
+ */
+PhoneGap.onPhoneGapReady = new PhoneGap.Channel('onPhoneGapReady');
+
+/**
+ * onPhoneGapInfoReady channel is fired when the PhoneGap device properties
+ * has been set.
+ */
+PhoneGap.onPhoneGapInfoReady = new PhoneGap.Channel('onPhoneGapInfoReady');
+
+/**
+ * onPhoneGapConnectionReady channel is fired when the PhoneGap connection properties
+ * has been set.
+ */
+PhoneGap.onPhoneGapConnectionReady = new PhoneGap.Channel('onPhoneGapConnectionReady');
+
+/**
+ * onResume channel is fired when the PhoneGap native code
+ * resumes.
+ */
+PhoneGap.onResume = new PhoneGap.Channel('onResume');
+
+/**
+ * onPause channel is fired when the PhoneGap native code
+ * pauses.
+ */
+PhoneGap.onPause = new PhoneGap.Channel('onPause');
+
+/**
+ * onDestroy channel is fired when the PhoneGap native code
+ * is destroyed. It is used internally.
+ * Window.onunload should be used by the user.
+ */
+PhoneGap.onDestroy = new PhoneGap.Channel('onDestroy');
+PhoneGap.onDestroy.subscribeOnce(function() {
+ PhoneGap.shuttingDown = true;
+});
+PhoneGap.shuttingDown = false;
+
+// _nativeReady is global variable that the native side can set
+// to signify that the native code is ready. It is a global since
+// it may be called before any PhoneGap JS is ready.
+if (typeof _nativeReady !== 'undefined') { PhoneGap.onNativeReady.fire(); }
+
+/**
+ * onDeviceReady is fired only after all PhoneGap objects are created and
+ * the device properties are set.
+ */
+PhoneGap.onDeviceReady = new PhoneGap.Channel('onDeviceReady');
+
+
+// Array of channels that must fire before "deviceready" is fired
+PhoneGap.deviceReadyChannelsArray = [ PhoneGap.onPhoneGapReady, PhoneGap.onPhoneGapInfoReady, PhoneGap.onPhoneGapConnectionReady];
+
+// Hashtable of user defined channels that must also fire before "deviceready" is fired
+PhoneGap.deviceReadyChannelsMap = {};
+
+/**
+ * Indicate that a feature needs to be initialized before it is ready to be used.
+ * This holds up PhoneGap's "deviceready" event until the feature has been initialized
+ * and PhoneGap.initComplete(feature) is called.
+ *
+ * @param feature {String} The unique feature name
+ */
+PhoneGap.waitForInitialization = function(feature) {
+ if (feature) {
+ var channel = new PhoneGap.Channel(feature);
+ PhoneGap.deviceReadyChannelsMap[feature] = channel;
+ PhoneGap.deviceReadyChannelsArray.push(channel);
+ }
+};
+
+/**
+ * Indicate that initialization code has completed and the feature is ready to be used.
+ *
+ * @param feature {String} The unique feature name
+ */
+PhoneGap.initializationComplete = function(feature) {
+ var channel = PhoneGap.deviceReadyChannelsMap[feature];
+ if (channel) {
+ channel.fire();
+ }
+};
+
+/**
+ * Create all PhoneGap objects once page has fully loaded and native side is ready.
+ */
+PhoneGap.Channel.join(function() {
+
+ // Start listening for XHR callbacks
+ setTimeout(function() {
+ if (PhoneGap.UsePolling) {
+ PhoneGap.JSCallbackPolling();
+ }
+ else {
+ var polling = prompt("usePolling", "gap_callbackServer:");
+ PhoneGap.UsePolling = polling;
+ if (polling == "true") {
+ PhoneGap.UsePolling = true;
+ PhoneGap.JSCallbackPolling();
+ }
+ else {
+ PhoneGap.UsePolling = false;
+ PhoneGap.JSCallback();
+ }
+ }
+ }, 1);
+
+ // Run PhoneGap constructors
+ PhoneGap.onPhoneGapInit.fire();
+
+ // Fire event to notify that all objects are created
+ PhoneGap.onPhoneGapReady.fire();
+
+ // Fire onDeviceReady event once all constructors have run and PhoneGap info has been
+ // received from native side, and any user defined initialization channels.
+ PhoneGap.Channel.join(function() {
+ PhoneGap.onDeviceReady.fire();
+
+ // Fire the onresume event, since first one happens before JavaScript is loaded
+ PhoneGap.onResume.fire();
+ }, PhoneGap.deviceReadyChannelsArray);
+
+}, [ PhoneGap.onDOMContentLoaded, PhoneGap.onNativeReady ]);
+
+// Listen for DOMContentLoaded and notify our channel subscribers
+document.addEventListener('DOMContentLoaded', function() {
+ PhoneGap.onDOMContentLoaded.fire();
+}, false);
+
+// Intercept calls to document.addEventListener and watch for deviceready
+PhoneGap.m_document_addEventListener = document.addEventListener;
+
+document.addEventListener = function(evt, handler, capture) {
+ var e = evt.toLowerCase();
+ if (e === 'deviceready') {
+ PhoneGap.onDeviceReady.subscribeOnce(handler);
+ } else if (e === 'resume') {
+ PhoneGap.onResume.subscribe(handler);
+ if (PhoneGap.onDeviceReady.fired) {
+ PhoneGap.onResume.fire();
+ }
+ } else if (e === 'pause') {
+ PhoneGap.onPause.subscribe(handler);
+ }
+ else {
+ // If subscribing to Android backbutton
+ if (e === 'backbutton') {
+ PhoneGap.exec(null, null, "App", "overrideBackbutton", [true]);
+ }
+
+ PhoneGap.m_document_addEventListener.call(document, evt, handler, capture);
+ }
+};
+
+// Intercept calls to document.removeEventListener and watch for events that
+// are generated by PhoneGap native code
+PhoneGap.m_document_removeEventListener = document.removeEventListener;
+
+document.removeEventListener = function(evt, handler, capture) {
+ var e = evt.toLowerCase();
+
+ // If unsubscribing to Android backbutton
+ if (e === 'backbutton') {
+ PhoneGap.exec(null, null, "App", "overrideBackbutton", [false]);
+ }
+
+ PhoneGap.m_document_removeEventListener.call(document, evt, handler, capture);
+};
+
+/**
+ * Method to fire event from native code
+ */
+PhoneGap.fireEvent = function(type) {
+ var e = document.createEvent('Events');
+ e.initEvent(type);
+ document.dispatchEvent(e);
+};
+
+/**
+ * If JSON not included, use our own stringify. (Android 1.6)
+ * The restriction on ours is that it must be an array of simple types.
+ *
+ * @param args
+ * @return {String}
+ */
+PhoneGap.stringify = function(args) {
+ if (typeof JSON === "undefined") {
+ var s = "[";
+ var i, type, start, name, nameType, a;
+ for (i = 0; i < args.length; i++) {
+ if (args[i] !== null) {
+ if (i > 0) {
+ s = s + ",";
+ }
+ type = typeof args[i];
+ if ((type === "number") || (type === "boolean")) {
+ s = s + args[i];
+ } else if (args[i] instanceof Array) {
+ s = s + "[" + args[i] + "]";
+ } else if (args[i] instanceof Object) {
+ start = true;
+ s = s + '{';
+ for (name in args[i]) {
+ if (args[i][name] !== null) {
+ if (!start) {
+ s = s + ',';
+ }
+ s = s + '"' + name + '":';
+ nameType = typeof args[i][name];
+ if ((nameType === "number") || (nameType === "boolean")) {
+ s = s + args[i][name];
+ } else if ((typeof args[i][name]) === 'function') {
+ // don't copy the functions
+ s = s + '""';
+ } else if (args[i][name] instanceof Object) {
+ s = s + PhoneGap.stringify(args[i][name]);
+ } else {
+ s = s + '"' + args[i][name] + '"';
+ }
+ start = false;
+ }
+ }
+ s = s + '}';
+ } else {
+ a = args[i].replace(/\\/g, '\\\\');
+ a = a.replace(/"/g, '\\"');
+ s = s + '"' + a + '"';
+ }
+ }
+ }
+ s = s + "]";
+ return s;
+ } else {
+ return JSON.stringify(args);
+ }
+};
+
+/**
+ * Does a deep clone of the object.
+ *
+ * @param obj
+ * @return {Object}
+ */
+PhoneGap.clone = function(obj) {
+ var i, retVal;
+ if(!obj) {
+ return obj;
+ }
+
+ if(obj instanceof Array){
+ retVal = [];
+ for(i = 0; i < obj.length; ++i){
+ retVal.push(PhoneGap.clone(obj[i]));
+ }
+ return retVal;
+ }
+
+ if (typeof obj === "function") {
+ return obj;
+ }
+
+ if(!(obj instanceof Object)){
+ return obj;
+ }
+
+ if (obj instanceof Date) {
+ return obj;
+ }
+
+ retVal = {};
+ for(i in obj){
+ if(!(i in retVal) || retVal[i] !== obj[i]) {
+ retVal[i] = PhoneGap.clone(obj[i]);
+ }
+ }
+ return retVal;
+};
+
+PhoneGap.callbackId = 0;
+PhoneGap.callbacks = {};
+PhoneGap.callbackStatus = {
+ NO_RESULT: 0,
+ OK: 1,
+ CLASS_NOT_FOUND_EXCEPTION: 2,
+ ILLEGAL_ACCESS_EXCEPTION: 3,
+ INSTANTIATION_EXCEPTION: 4,
+ MALFORMED_URL_EXCEPTION: 5,
+ IO_EXCEPTION: 6,
+ INVALID_ACTION: 7,
+ JSON_EXCEPTION: 8,
+ ERROR: 9
+ };
+
+
+/**
+ * Execute a PhoneGap command. It is up to the native side whether this action is synch or async.
+ * The native side can return:
+ * Synchronous: PluginResult object as a JSON string
+ * Asynchrounous: Empty string ""
+ * If async, the native side will PhoneGap.callbackSuccess or PhoneGap.callbackError,
+ * depending upon the result of the action.
+ *
+ * @param {Function} success The success callback
+ * @param {Function} fail The fail callback
+ * @param {String} service The name of the service to use
+ * @param {String} action Action to be run in PhoneGap
+ * @param {Array.<String>} [args] Zero or more arguments to pass to the method
+ */
+PhoneGap.exec = function(success, fail, service, action, args) {
+ try {
+ var callbackId = service + PhoneGap.callbackId++;
+ if (success || fail) {
+ PhoneGap.callbacks[callbackId] = {success:success, fail:fail};
+ }
+
+ var r = prompt(PhoneGap.stringify(args), "gap:"+PhoneGap.stringify([service, action, callbackId, true]));
+
+ // If a result was returned
+ if (r.length > 0) {
+ eval("var v="+r+";");
+
+ // If status is OK, then return value back to caller
+ if (v.status === PhoneGap.callbackStatus.OK) {
+
+ // If there is a success callback, then call it now with
+ // returned value
+ if (success) {
+ try {
+ success(v.message);
+ } catch (e) {
+ console.log("Error in success callback: " + callbackId + " = " + e);
+ }
+
+ // Clear callback if not expecting any more results
+ if (!v.keepCallback) {
+ delete PhoneGap.callbacks[callbackId];
+ }
+ }
+ return v.message;
+ }
+
+ // If no result
+ else if (v.status === PhoneGap.callbackStatus.NO_RESULT) {
+
+ // Clear callback if not expecting any more results
+ if (!v.keepCallback) {
+ delete PhoneGap.callbacks[callbackId];
+ }
+ }
+
+ // If error, then display error
+ else {
+ console.log("Error: Status="+v.status+" Message="+v.message);
+
+ // If there is a fail callback, then call it now with returned value
+ if (fail) {
+ try {
+ fail(v.message);
+ }
+ catch (e1) {
+ console.log("Error in error callback: "+callbackId+" = "+e1);
+ }
+
+ // Clear callback if not expecting any more results
+ if (!v.keepCallback) {
+ delete PhoneGap.callbacks[callbackId];
+ }
+ }
+ return null;
+ }
+ }
+ } catch (e2) {
+ console.log("Error: "+e2);
+ }
+};
+
+/**
+ * Called by native code when returning successful result from an action.
+ *
+ * @param callbackId
+ * @param args
+ */
+PhoneGap.callbackSuccess = function(callbackId, args) {
+ if (PhoneGap.callbacks[callbackId]) {
+
+ // If result is to be sent to callback
+ if (args.status === PhoneGap.callbackStatus.OK) {
+ try {
+ if (PhoneGap.callbacks[callbackId].success) {
+ PhoneGap.callbacks[callbackId].success(args.message);
+ }
+ }
+ catch (e) {
+ console.log("Error in success callback: "+callbackId+" = "+e);
+ }
+ }
+
+ // Clear callback if not expecting any more results
+ if (!args.keepCallback) {
+ delete PhoneGap.callbacks[callbackId];
+ }
+ }
+};
+
+/**
+ * Called by native code when returning error result from an action.
+ *
+ * @param callbackId
+ * @param args
+ */
+PhoneGap.callbackError = function(callbackId, args) {
+ if (PhoneGap.callbacks[callbackId]) {
+ try {
+ if (PhoneGap.callbacks[callbackId].fail) {
+ PhoneGap.callbacks[callbackId].fail(args.message);
+ }
+ }
+ catch (e) {
+ console.log("Error in error callback: "+callbackId+" = "+e);
+ }
+
+ // Clear callback if not expecting any more results
+ if (!args.keepCallback) {
+ delete PhoneGap.callbacks[callbackId];
+ }
+ }
+};
+
+
+/**
+ * Internal function used to dispatch the request to PhoneGap. It processes the
+ * command queue and executes the next command on the list. If one of the
+ * arguments is a JavaScript object, it will be passed on the QueryString of the
+ * url, which will be turned into a dictionary on the other end.
+ * @private
+ */
+// TODO: Is this used?
+PhoneGap.run_command = function() {
+ if (!PhoneGap.available || !PhoneGap.queue.ready) {
+ return;
+ }
+ PhoneGap.queue.ready = false;
+
+ var args = PhoneGap.queue.commands.shift();
+ if (PhoneGap.queue.commands.length === 0) {
+ clearInterval(PhoneGap.queue.timer);
+ PhoneGap.queue.timer = null;
+ }
+
+ var uri = [];
+ var dict = null;
+ var i;
+ for (i = 1; i < args.length; i++) {
+ var arg = args[i];
+ if (arg === undefined || arg === null) {
+ arg = '';
+ }
+ if (typeof(arg) === 'object') {
+ dict = arg;
+ } else {
+ uri.push(encodeURIComponent(arg));
+ }
+ }
+ var url = "gap://" + args[0] + "/" + uri.join("/");
+ if (dict !== null) {
+ var name;
+ var query_args = [];
+ for (name in dict) {
+ if (dict.hasOwnProperty(name) && (typeof (name) === 'string')) {
+ query_args.push(encodeURIComponent(name) + "=" + encodeURIComponent(dict[name]));
+ }
+ }
+ if (query_args.length > 0) {
+ url += "?" + query_args.join("&");
+ }
+ }
+ document.location = url;
+
+};
+
+PhoneGap.JSCallbackPort = null;
+PhoneGap.JSCallbackToken = null;
+
+/**
+ * This is only for Android.
+ *
+ * Internal function that uses XHR to call into PhoneGap Java code and retrieve
+ * any JavaScript code that needs to be run. This is used for callbacks from
+ * Java to JavaScript.
+ */
+PhoneGap.JSCallback = function() {
+
+ // Exit if shutting down app
+ if (PhoneGap.shuttingDown) {
+ return;
+ }
+
+ // If polling flag was changed, start using polling from now on
+ if (PhoneGap.UsePolling) {
+ PhoneGap.JSCallbackPolling();
+ return;
+ }
+
+ var xmlhttp = new XMLHttpRequest();
+
+ // Callback function when XMLHttpRequest is ready
+ xmlhttp.onreadystatechange=function(){
+ if(xmlhttp.readyState === 4){
+
+ // Exit if shutting down app
+ if (PhoneGap.shuttingDown) {
+ return;
+ }
+
+ // If callback has JavaScript statement to execute
+ if (xmlhttp.status === 200) {
+
+ // Need to url decode the response
+ var msg = decodeURIComponent(xmlhttp.responseText);
+ setTimeout(function() {
+ try {
+ var t = eval(msg);
+ }
+ catch (e) {
+ // If we're getting an error here, seeing the message will help in debugging
+ console.log("JSCallback: Message from Server: " + msg);
+ console.log("JSCallback Error: "+e);
+ }
+ }, 1);
+ setTimeout(PhoneGap.JSCallback, 1);
+ }
+
+ // If callback ping (used to keep XHR request from timing out)
+ else if (xmlhttp.status === 404) {
+ setTimeout(PhoneGap.JSCallback, 10);
+ }
+
+ // If security error
+ else if (xmlhttp.status === 403) {
+ console.log("JSCallback Error: Invalid token. Stopping callbacks.");
+ }
+
+ // If server is stopping
+ else if (xmlhttp.status === 503) {
+ console.log("JSCallback Error: Service unavailable. Stopping callbacks.");
+ }
+
+ // If request wasn't GET
+ else if (xmlhttp.status === 400) {
+ console.log("JSCallback Error: Bad request. Stopping callbacks.");
+ }
+
+ // If error, revert to polling
+ else {
+ console.log("JSCallback Error: Request failed.");
+ PhoneGap.UsePolling = true;
+ PhoneGap.JSCallbackPolling();
+ }
+ }
+ };
+
+ if (PhoneGap.JSCallbackPort === null) {
+ PhoneGap.JSCallbackPort = prompt("getPort", "gap_callbackServer:");
+ }
+ if (PhoneGap.JSCallbackToken === null) {
+ PhoneGap.JSCallbackToken = prompt("getToken", "gap_callbackServer:");
+ }
+ xmlhttp.open("GET", "http://127.0.0.1:"+PhoneGap.JSCallbackPort+"/"+PhoneGap.JSCallbackToken , true);
+ xmlhttp.send();
+};
+
+/**
+ * The polling period to use with JSCallbackPolling.
+ * This can be changed by the application. The default is 50ms.
+ */
+PhoneGap.JSCallbackPollingPeriod = 50;
+
+/**
+ * Flag that can be set by the user to force polling to be used or force XHR to be used.
+ */
+PhoneGap.UsePolling = false; // T=use polling, F=use XHR
+
+/**
+ * This is only for Android.
+ *
+ * Internal function that uses polling to call into PhoneGap Java code and retrieve
+ * any JavaScript code that needs to be run. This is used for callbacks from
+ * Java to JavaScript.
+ */
+PhoneGap.JSCallbackPolling = function() {
+
+ // Exit if shutting down app
+ if (PhoneGap.shuttingDown) {
+ return;
+ }
+
+ // If polling flag was changed, stop using polling from now on
+ if (!PhoneGap.UsePolling) {
+ PhoneGap.JSCallback();
+ return;
+ }
+
+ var msg = prompt("", "gap_poll:");
+ if (msg) {
+ setTimeout(function() {
+ try {
+ var t = eval(""+msg);
+ }
+ catch (e) {
+ console.log("JSCallbackPolling: Message from Server: " + msg);
+ console.log("JSCallbackPolling Error: "+e);
+ }
+ }, 1);
+ setTimeout(PhoneGap.JSCallbackPolling, 1);
+ }
+ else {
+ setTimeout(PhoneGap.JSCallbackPolling, PhoneGap.JSCallbackPollingPeriod);
+ }
+};
+
+/**
+ * Create a UUID
+ *
+ * @return {String}
+ */
+PhoneGap.createUUID = function() {
+ return PhoneGap.UUIDcreatePart(4) + '-' +
+ PhoneGap.UUIDcreatePart(2) + '-' +
+ PhoneGap.UUIDcreatePart(2) + '-' +
+ PhoneGap.UUIDcreatePart(2) + '-' +
+ PhoneGap.UUIDcreatePart(6);
+};
+
+PhoneGap.UUIDcreatePart = function(length) {
+ var uuidpart = "";
+ var i, uuidchar;
+ for (i=0; i<length; i++) {
+ uuidchar = parseInt((Math.random() * 256),0).toString(16);
+ if (uuidchar.length === 1) {
+ uuidchar = "0" + uuidchar;
+ }
+ uuidpart += uuidchar;
+ }
+ return uuidpart;
+};
+
+PhoneGap.close = function(context, func, params) {
+ if (typeof params === 'undefined') {
+ return function() {
+ return func.apply(context, arguments);
+ };
+ } else {
+ return function() {
+ return func.apply(context, params);
+ };
+ }
+};
+
+/**
+ * Load a JavaScript file after page has loaded.
+ *
+ * @param {String} jsfile The url of the JavaScript file to load.
+ * @param {Function} successCallback The callback to call when the file has been loaded.
+ */
+PhoneGap.includeJavascript = function(jsfile, successCallback) {
+ var id = document.getElementsByTagName("head")[0];
+ var el = document.createElement('script');
+ el.type = 'text/javascript';
+ if (typeof successCallback === 'function') {
+ el.onload = successCallback;
+ }
+ el.src = jsfile;
+ id.appendChild(el);
+};
+
+}
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("accelerometer")) {
+PhoneGap.addResource("accelerometer");
+
+/** @constructor */
+var Acceleration = function(x, y, z) {
+ this.x = x;
+ this.y = y;
+ this.z = z;
+ this.timestamp = new Date().getTime();
+};
+
+/**
+ * This class provides access to device accelerometer data.
+ * @constructor
+ */
+var Accelerometer = function() {
+
+ /**
+ * The last known acceleration. type=Acceleration()
+ */
+ this.lastAcceleration = null;
+
+ /**
+ * List of accelerometer watch timers
+ */
+ this.timers = {};
+};
+
+Accelerometer.ERROR_MSG = ["Not running", "Starting", "", "Failed to start"];
+
+/**
+ * Asynchronously aquires the current acceleration.
+ *
+ * @param {Function} successCallback The function to call when the acceleration data is available
+ * @param {Function} errorCallback The function to call when there is an error getting the acceleration data. (OPTIONAL)
+ * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL)
+ */
+Accelerometer.prototype.getCurrentAcceleration = function(successCallback, errorCallback, options) {
+
+ // successCallback required
+ if (typeof successCallback !== "function") {
+ console.log("Accelerometer Error: successCallback is not a function");
+ return;
+ }
+
+ // errorCallback optional
+ if (errorCallback && (typeof errorCallback !== "function")) {
+ console.log("Accelerometer Error: errorCallback is not a function");
+ return;
+ }
+
+ // Get acceleration
+ PhoneGap.exec(successCallback, errorCallback, "Accelerometer", "getAcceleration", []);
+};
+
+/**
+ * Asynchronously aquires the acceleration repeatedly at a given interval.
+ *
+ * @param {Function} successCallback The function to call each time the acceleration data is available
+ * @param {Function} errorCallback The function to call when there is an error getting the acceleration data. (OPTIONAL)
+ * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL)
+ * @return String The watch id that must be passed to #clearWatch to stop watching.
+ */
+Accelerometer.prototype.watchAcceleration = function(successCallback, errorCallback, options) {
+
+ // Default interval (10 sec)
+ var frequency = (options !== undefined)? options.frequency : 10000;
+
+ // successCallback required
+ if (typeof successCallback !== "function") {
+ console.log("Accelerometer Error: successCallback is not a function");
+ return;
+ }
+
+ // errorCallback optional
+ if (errorCallback && (typeof errorCallback !== "function")) {
+ console.log("Accelerometer Error: errorCallback is not a function");
+ return;
+ }
+
+ // Make sure accelerometer timeout > frequency + 10 sec
+ PhoneGap.exec(
+ function(timeout) {
+ if (timeout < (frequency + 10000)) {
+ PhoneGap.exec(null, null, "Accelerometer", "setTimeout", [frequency + 10000]);
+ }
+ },
+ function(e) { }, "Accelerometer", "getTimeout", []);
+
+ // Start watch timer
+ var id = PhoneGap.createUUID();
+ navigator.accelerometer.timers[id] = setInterval(function() {
+ PhoneGap.exec(successCallback, errorCallback, "Accelerometer", "getAcceleration", []);
+ }, (frequency ? frequency : 1));
+
+ return id;
+};
+
+/**
+ * Clears the specified accelerometer watch.
+ *
+ * @param {String} id The id of the watch returned from #watchAcceleration.
+ */
+Accelerometer.prototype.clearWatch = function(id) {
+
+ // Stop javascript timer & remove from timer list
+ if (id && navigator.accelerometer.timers[id] !== undefined) {
+ clearInterval(navigator.accelerometer.timers[id]);
+ delete navigator.accelerometer.timers[id];
+ }
+};
+
+PhoneGap.addConstructor(function() {
+ if (typeof navigator.accelerometer === "undefined") {
+ navigator.accelerometer = new Accelerometer();
+ }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("app")) {
+PhoneGap.addResource("app");
+(function() {
+
+/**
+ * Constructor
+ * @constructor
+ */
+var App = function() {};
+
+/**
+ * Clear the resource cache.
+ */
+App.prototype.clearCache = function() {
+ PhoneGap.exec(null, null, "App", "clearCache", []);
+};
+
+/**
+ * Load the url into the webview.
+ *
+ * @param url The URL to load
+ * @param props Properties that can be passed in to the activity:
+ * wait: int => wait msec before loading URL
+ * loadingDialog: "Title,Message" => display a native loading dialog
+ * hideLoadingDialogOnPage: boolean => hide loadingDialog when page loaded instead of when deviceready event occurs.
+ * loadInWebView: boolean => cause all links on web page to be loaded into existing web view, instead of being loaded into new browser.
+ * loadUrlTimeoutValue: int => time in msec to wait before triggering a timeout error
+ * errorUrl: URL => URL to load if there's an error loading specified URL with loadUrl(). Should be a local URL such as file:///android_asset/www/error.html");
+ * keepRunning: boolean => enable app to keep running in background
+ *
+ * Example:
+ * App app = new App();
+ * app.loadUrl("http://server/myapp/index.html", {wait:2000, loadingDialog:"Wait,Loading App", loadUrlTimeoutValue: 60000});
+ */
+App.prototype.loadUrl = function(url, props) {
+ PhoneGap.exec(null, null, "App", "loadUrl", [url, props]);
+};
+
+/**
+ * Cancel loadUrl that is waiting to be loaded.
+ */
+App.prototype.cancelLoadUrl = function() {
+ PhoneGap.exec(null, null, "App", "cancelLoadUrl", []);
+};
+
+/**
+ * Clear web history in this web view.
+ * Instead of BACK button loading the previous web page, it will exit the app.
+ */
+App.prototype.clearHistory = function() {
+ PhoneGap.exec(null, null, "App", "clearHistory", []);
+};
+
+/**
+ * Override the default behavior of the Android back button.
+ * If overridden, when the back button is pressed, the "backKeyDown" JavaScript event will be fired.
+ *
+ * Note: The user should not have to call this method. Instead, when the user
+ * registers for the "backbutton" event, this is automatically done.
+ *
+ * @param override T=override, F=cancel override
+ */
+App.prototype.overrideBackbutton = function(override) {
+ PhoneGap.exec(null, null, "App", "overrideBackbutton", [override]);
+};
+
+/**
+ * Exit and terminate the application.
+ */
+App.prototype.exitApp = function() {
+ return PhoneGap.exec(null, null, "App", "exitApp", []);
+};
+
+PhoneGap.addConstructor(function() {
+ navigator.app = new App();
+});
+}());
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("camera")) {
+PhoneGap.addResource("camera");
+
+/**
+ * This class provides access to the device camera.
+ *
+ * @constructor
+ */
+var Camera = function() {
+ this.successCallback = null;
+ this.errorCallback = null;
+ this.options = null;
+};
+
+/**
+ * Format of image that returned from getPicture.
+ *
+ * Example: navigator.camera.getPicture(success, fail,
+ * { quality: 80,
+ * destinationType: Camera.DestinationType.DATA_URL,
+ * sourceType: Camera.PictureSourceType.PHOTOLIBRARY})
+ */
+Camera.DestinationType = {
+ DATA_URL: 0, // Return base64 encoded string
+ FILE_URI: 1 // Return file uri (content://media/external/images/media/2 for Android)
+};
+Camera.prototype.DestinationType = Camera.DestinationType;
+
+/**
+ * Encoding of image returned from getPicture.
+ *
+ * Example: navigator.camera.getPicture(success, fail,
+ * { quality: 80,
+ * destinationType: Camera.DestinationType.DATA_URL,
+ * sourceType: Camera.PictureSourceType.CAMERA,
+ * encodingType: Camera.EncodingType.PNG})
+*/
+Camera.EncodingType = {
+ JPEG: 0, // Return JPEG encoded image
+ PNG: 1 // Return PNG encoded image
+};
+Camera.prototype.EncodingType = Camera.EncodingType;
+
+/**
+ * Source to getPicture from.
+ *
+ * Example: navigator.camera.getPicture(success, fail,
+ * { quality: 80,
+ * destinationType: Camera.DestinationType.DATA_URL,
+ * sourceType: Camera.PictureSourceType.PHOTOLIBRARY})
+ */
+Camera.PictureSourceType = {
+ PHOTOLIBRARY : 0, // Choose image from picture library (same as SAVEDPHOTOALBUM for Android)
+ CAMERA : 1, // Take picture from camera
+ SAVEDPHOTOALBUM : 2 // Choose image from picture library (same as PHOTOLIBRARY for Android)
+};
+Camera.prototype.PictureSourceType = Camera.PictureSourceType;
+
+/**
+ * Gets a picture from source defined by "options.sourceType", and returns the
+ * image as defined by the "options.destinationType" option.
+
+ * The defaults are sourceType=CAMERA and destinationType=DATA_URL.
+ *
+ * @param {Function} successCallback
+ * @param {Function} errorCallback
+ * @param {Object} options
+ */
+Camera.prototype.getPicture = function(successCallback, errorCallback, options) {
+
+ // successCallback required
+ if (typeof successCallback !== "function") {
+ console.log("Camera Error: successCallback is not a function");
+ return;
+ }
+
+ // errorCallback optional
+ if (errorCallback && (typeof errorCallback !== "function")) {
+ console.log("Camera Error: errorCallback is not a function");
+ return;
+ }
+
+ this.options = options;
+ var quality = 80;
+ if (options.quality) {
+ quality = this.options.quality;
+ }
+
+ var maxResolution = 0;
+ if (options.maxResolution) {
+ maxResolution = this.options.maxResolution;
+ }
+
+ var destinationType = Camera.DestinationType.DATA_URL;
+ if (this.options.destinationType) {
+ destinationType = this.options.destinationType;
+ }
+ var sourceType = Camera.PictureSourceType.CAMERA;
+ if (typeof this.options.sourceType === "number") {
+ sourceType = this.options.sourceType;
+ }
+ var encodingType = Camera.EncodingType.JPEG;
+ if (typeof options.encodingType == "number") {
+ encodingType = this.options.encodingType;
+ }
+
+ var targetWidth = -1;
+ if (typeof options.targetWidth == "number") {
+ targetWidth = options.targetWidth;
+ } else if (typeof options.targetWidth == "string") {
+ var width = new Number(options.targetWidth);
+ if (isNaN(width) === false) {
+ targetWidth = width.valueOf();
+ }
+ }
+
+ var targetHeight = -1;
+ if (typeof options.targetHeight == "number") {
+ targetHeight = options.targetHeight;
+ } else if (typeof options.targetHeight == "string") {
+ var height = new Number(options.targetHeight);
+ if (isNaN(height) === false) {
+ targetHeight = height.valueOf();
+ }
+ }
+
+ PhoneGap.exec(successCallback, errorCallback, "Camera", "takePicture", [quality, destinationType, sourceType, targetWidth, targetHeight, encodingType]);
+};
+
+PhoneGap.addConstructor(function() {
+ if (typeof navigator.camera === "undefined") {
+ navigator.camera = new Camera();
+ }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("capture")) {
+PhoneGap.addResource("capture");
+
+/**
+ * Represents a single file.
+ *
+ * name {DOMString} name of the file, without path information
+ * fullPath {DOMString} the full path of the file, including the name
+ * type {DOMString} mime type
+ * lastModifiedDate {Date} last modified date
+ * size {Number} size of the file in bytes
+ */
+var MediaFile = function(name, fullPath, type, lastModifiedDate, size){
+ this.name = name || null;
+ this.fullPath = fullPath || null;
+ this.type = type || null;
+ this.lastModifiedDate = lastModifiedDate || null;
+ this.size = size || 0;
+};
+
+/**
+ * Launch device camera application for recording video(s).
+ *
+ * @param {Function} successCB
+ * @param {Function} errorCB
+ */
+MediaFile.prototype.getFormatData = function(successCallback, errorCallback){
+ PhoneGap.exec(successCallback, errorCallback, "Capture", "getFormatData", [this.fullPath, this.type]);
+};
+
+/**
+ * MediaFileData encapsulates format information of a media file.
+ *
+ * @param {DOMString} codecs
+ * @param {long} bitrate
+ * @param {long} height
+ * @param {long} width
+ * @param {float} duration
+ */
+var MediaFileData = function(codecs, bitrate, height, width, duration){
+ this.codecs = codecs || null;
+ this.bitrate = bitrate || 0;
+ this.height = height || 0;
+ this.width = width || 0;
+ this.duration = duration || 0;
+};
+
+/**
+ * The CaptureError interface encapsulates all errors in the Capture API.
+ */
+var CaptureError = function(){
+ this.code = null;
+};
+
+// Capture error codes
+CaptureError.CAPTURE_INTERNAL_ERR = 0;
+CaptureError.CAPTURE_APPLICATION_BUSY = 1;
+CaptureError.CAPTURE_INVALID_ARGUMENT = 2;
+CaptureError.CAPTURE_NO_MEDIA_FILES = 3;
+CaptureError.CAPTURE_NOT_SUPPORTED = 20;
+
+/**
+ * The Capture interface exposes an interface to the camera and microphone of the hosting device.
+ */
+var Capture = function(){
+ this.supportedAudioModes = [];
+ this.supportedImageModes = [];
+ this.supportedVideoModes = [];
+};
+
+/**
+ * Launch audio recorder application for recording audio clip(s).
+ *
+ * @param {Function} successCB
+ * @param {Function} errorCB
+ * @param {CaptureAudioOptions} options
+ */
+Capture.prototype.captureAudio = function(successCallback, errorCallback, options){
+ PhoneGap.exec(successCallback, errorCallback, "Capture", "captureAudio", [options]);
+};
+
+/**
+ * Launch camera application for taking image(s).
+ *
+ * @param {Function} successCB
+ * @param {Function} errorCB
+ * @param {CaptureImageOptions} options
+ */
+Capture.prototype.captureImage = function(successCallback, errorCallback, options){
+ PhoneGap.exec(successCallback, errorCallback, "Capture", "captureImage", [options]);
+};
+
+/**
+ * Launch camera application for taking image(s).
+ *
+ * @param {Function} successCB
+ * @param {Function} errorCB
+ * @param {CaptureImageOptions} options
+ */
+Capture.prototype._castMediaFile = function(pluginResult){
+ var mediaFiles = [];
+ var i;
+ for (i = 0; i < pluginResult.message.length; i++) {
+ var mediaFile = new MediaFile();
+ mediaFile.name = pluginResult.message[i].name;
+ mediaFile.fullPath = pluginResult.message[i].fullPath;
+ mediaFile.type = pluginResult.message[i].type;
+ mediaFile.lastModifiedDate = pluginResult.message[i].lastModifiedDate;
+ mediaFile.size = pluginResult.message[i].size;
+ mediaFiles.push(mediaFile);
+ }
+ pluginResult.message = mediaFiles;
+ return pluginResult;
+};
+
+/**
+ * Launch device camera application for recording video(s).
+ *
+ * @param {Function} successCB
+ * @param {Function} errorCB
+ * @param {CaptureVideoOptions} options
+ */
+Capture.prototype.captureVideo = function(successCallback, errorCallback, options){
+ PhoneGap.exec(successCallback, errorCallback, "Capture", "captureVideo", [options]);
+};
+
+/**
+ * Encapsulates a set of parameters that the capture device supports.
+ */
+var ConfigurationData = function(){
+ // The ASCII-encoded string in lower case representing the media type.
+ this.type = null;
+ // The height attribute represents height of the image or video in pixels.
+ // In the case of a sound clip this attribute has value 0.
+ this.height = 0;
+ // The width attribute represents width of the image or video in pixels.
+ // In the case of a sound clip this attribute has value 0
+ this.width = 0;
+};
+
+/**
+ * Encapsulates all image capture operation configuration options.
+ */
+var CaptureImageOptions = function(){
+ // Upper limit of images user can take. Value must be equal or greater than 1.
+ this.limit = 1;
+ // The selected image mode. Must match with one of the elements in supportedImageModes array.
+ this.mode = null;
+};
+
+/**
+ * Encapsulates all video capture operation configuration options.
+ */
+var CaptureVideoOptions = function(){
+ // Upper limit of videos user can record. Value must be equal or greater than 1.
+ this.limit = 1;
+ // Maximum duration of a single video clip in seconds.
+ this.duration = 0;
+ // The selected video mode. Must match with one of the elements in supportedVideoModes array.
+ this.mode = null;
+};
+
+/**
+ * Encapsulates all audio capture operation configuration options.
+ */
+var CaptureAudioOptions = function(){
+ // Upper limit of sound clips user can record. Value must be equal or greater than 1.
+ this.limit = 1;
+ // Maximum duration of a single sound clip in seconds.
+ this.duration = 0;
+ // The selected audio mode. Must match with one of the elements in supportedAudioModes array.
+ this.mode = null;
+};
+
+PhoneGap.addConstructor(function(){
+ if (typeof navigator.device === "undefined") {
+ navigator.device = window.device = new Device();
+ }
+ if (typeof navigator.device.capture === "undefined") {
+ navigator.device.capture = window.device.capture = new Capture();
+ }
+});
+}
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("compass")) {
+PhoneGap.addResource("compass");
+
+/**
+ * This class provides access to device Compass data.
+ * @constructor
+ */
+var Compass = function() {
+ /**
+ * The last known Compass position.
+ */
+ this.lastHeading = null;
+
+ /**
+ * List of compass watch timers
+ */
+ this.timers = {};
+};
+
+Compass.ERROR_MSG = ["Not running", "Starting", "", "Failed to start"];
+
+/**
+ * Asynchronously aquires the current heading.
+ *
+ * @param {Function} successCallback The function to call when the heading data is available
+ * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL)
+ * @param {PositionOptions} options The options for getting the heading data such as timeout. (OPTIONAL)
+ */
+Compass.prototype.getCurrentHeading = function(successCallback, errorCallback, options) {
+
+ // successCallback required
+ if (typeof successCallback !== "function") {
+ console.log("Compass Error: successCallback is not a function");
+ return;
+ }
+
+ // errorCallback optional
+ if (errorCallback && (typeof errorCallback !== "function")) {
+ console.log("Compass Error: errorCallback is not a function");
+ return;
+ }
+
+ // Get heading
+ PhoneGap.exec(successCallback, errorCallback, "Compass", "getHeading", []);
+};
+
+/**
+ * Asynchronously aquires the heading repeatedly at a given interval.
+ *
+ * @param {Function} successCallback The function to call each time the heading data is available
+ * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL)
+ * @param {HeadingOptions} options The options for getting the heading data such as timeout and the frequency of the watch. (OPTIONAL)
+ * @return String The watch id that must be passed to #clearWatch to stop watching.
+ */
+Compass.prototype.watchHeading= function(successCallback, errorCallback, options) {
+
+ // Default interval (100 msec)
+ var frequency = (options !== undefined) ? options.frequency : 100;
+
+ // successCallback required
+ if (typeof successCallback !== "function") {
+ console.log("Compass Error: successCallback is not a function");
+ return;
+ }
+
+ // errorCallback optional
+ if (errorCallback && (typeof errorCallback !== "function")) {
+ console.log("Compass Error: errorCallback is not a function");
+ return;
+ }
+
+ // Make sure compass timeout > frequency + 10 sec
+ PhoneGap.exec(
+ function(timeout) {
+ if (timeout < (frequency + 10000)) {
+ PhoneGap.exec(null, null, "Compass", "setTimeout", [frequency + 10000]);
+ }
+ },
+ function(e) { }, "Compass", "getTimeout", []);
+
+ // Start watch timer to get headings
+ var id = PhoneGap.createUUID();
+ navigator.compass.timers[id] = setInterval(
+ function() {
+ PhoneGap.exec(successCallback, errorCallback, "Compass", "getHeading", []);
+ }, (frequency ? frequency : 1));
+
+ return id;
+};
+
+
+/**
+ * Clears the specified heading watch.
+ *
+ * @param {String} id The ID of the watch returned from #watchHeading.
+ */
+Compass.prototype.clearWatch = function(id) {
+
+ // Stop javascript timer & remove from timer list
+ if (id && navigator.compass.timers[id]) {
+ clearInterval(navigator.compass.timers[id]);
+ delete navigator.compass.timers[id];
+ }
+};
+
+PhoneGap.addConstructor(function() {
+ if (typeof navigator.compass === "undefined") {
+ navigator.compass = new Compass();
+ }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("contact")) {
+PhoneGap.addResource("contact");
+
+/**
+* Contains information about a single contact.
+* @constructor
+* @param {DOMString} id unique identifier
+* @param {DOMString} displayName
+* @param {ContactName} name
+* @param {DOMString} nickname
+* @param {Array.<ContactField>} phoneNumbers array of phone numbers
+* @param {Array.<ContactField>} emails array of email addresses
+* @param {Array.<ContactAddress>} addresses array of addresses
+* @param {Array.<ContactField>} ims instant messaging user ids
+* @param {Array.<ContactOrganization>} organizations
+* @param {DOMString} birthday contact's birthday
+* @param {DOMString} note user notes about contact
+* @param {Array.<ContactField>} photos
+* @param {Array.<ContactField>} categories
+* @param {Array.<ContactField>} urls contact's web sites
+*/
+var Contact = function (id, displayName, name, nickname, phoneNumbers, emails, addresses,
+ ims, organizations, birthday, note, photos, categories, urls) {
+ this.id = id || null;
+ this.rawId = null;
+ this.displayName = displayName || null;
+ this.name = name || null; // ContactName
+ this.nickname = nickname || null;
+ this.phoneNumbers = phoneNumbers || null; // ContactField[]
+ this.emails = emails || null; // ContactField[]
+ this.addresses = addresses || null; // ContactAddress[]
+ this.ims = ims || null; // ContactField[]
+ this.organizations = organizations || null; // ContactOrganization[]
+ this.birthday = birthday || null;
+ this.note = note || null;
+ this.photos = photos || null; // ContactField[]
+ this.categories = categories || null; // ContactField[]
+ this.urls = urls || null; // ContactField[]
+};
+
+/**
+ * ContactError.
+ * An error code assigned by an implementation when an error has occurreds
+ * @constructor
+ */
+var ContactError = function() {
+ this.code=null;
+};
+
+/**
+ * Error codes
+ */
+ContactError.UNKNOWN_ERROR = 0;
+ContactError.INVALID_ARGUMENT_ERROR = 1;
+ContactError.TIMEOUT_ERROR = 2;
+ContactError.PENDING_OPERATION_ERROR = 3;
+ContactError.IO_ERROR = 4;
+ContactError.NOT_SUPPORTED_ERROR = 5;
+ContactError.PERMISSION_DENIED_ERROR = 20;
+
+/**
+* Removes contact from device storage.
+* @param successCB success callback
+* @param errorCB error callback
+*/
+Contact.prototype.remove = function(successCB, errorCB) {
+ if (this.id === null) {
+ var errorObj = new ContactError();
+ errorObj.code = ContactError.UNKNOWN_ERROR;
+ errorCB(errorObj);
+ }
+ else {
+ PhoneGap.exec(successCB, errorCB, "Contacts", "remove", [this.id]);
+ }
+};
+
+/**
+* Creates a deep copy of this Contact.
+* With the contact ID set to null.
+* @return copy of this Contact
+*/
+Contact.prototype.clone = function() {
+ var clonedContact = PhoneGap.clone(this);
+ var i;
+ clonedContact.id = null;
+ clonedContact.rawId = null;
+ // Loop through and clear out any id's in phones, emails, etc.
+ if (clonedContact.phoneNumbers) {
+ for (i = 0; i < clonedContact.phoneNumbers.length; i++) {
+ clonedContact.phoneNumbers[i].id = null;
+ }
+ }
+ if (clonedContact.emails) {
+ for (i = 0; i < clonedContact.emails.length; i++) {
+ clonedContact.emails[i].id = null;
+ }
+ }
+ if (clonedContact.addresses) {
+ for (i = 0; i < clonedContact.addresses.length; i++) {
+ clonedContact.addresses[i].id = null;
+ }
+ }
+ if (clonedContact.ims) {
+ for (i = 0; i < clonedContact.ims.length; i++) {
+ clonedContact.ims[i].id = null;
+ }
+ }
+ if (clonedContact.organizations) {
+ for (i = 0; i < clonedContact.organizations.length; i++) {
+ clonedContact.organizations[i].id = null;
+ }
+ }
+ if (clonedContact.tags) {
+ for (i = 0; i < clonedContact.tags.length; i++) {
+ clonedContact.tags[i].id = null;
+ }
+ }
+ if (clonedContact.photos) {
+ for (i = 0; i < clonedContact.photos.length; i++) {
+ clonedContact.photos[i].id = null;
+ }
+ }
+ if (clonedContact.urls) {
+ for (i = 0; i < clonedContact.urls.length; i++) {
+ clonedContact.urls[i].id = null;
+ }
+ }
+ return clonedContact;
+};
+
+/**
+* Persists contact to device storage.
+* @param successCB success callback
+* @param errorCB error callback
+*/
+Contact.prototype.save = function(successCB, errorCB) {
+ PhoneGap.exec(successCB, errorCB, "Contacts", "save", [this]);
+};
+
+/**
+* Contact name.
+* @constructor
+* @param formatted
+* @param familyName
+* @param givenName
+* @param middle
+* @param prefix
+* @param suffix
+*/
+var ContactName = function(formatted, familyName, givenName, middle, prefix, suffix) {
+ this.formatted = formatted || null;
+ this.familyName = familyName || null;
+ this.givenName = givenName || null;
+ this.middleName = middle || null;
+ this.honorificPrefix = prefix || null;
+ this.honorificSuffix = suffix || null;
+};
+
+/**
+* Generic contact field.
+* @constructor
+* @param {DOMString} id unique identifier, should only be set by native code
+* @param type
+* @param value
+* @param pref
+*/
+var ContactField = function(type, value, pref) {
+ this.id = null;
+ this.type = type || null;
+ this.value = value || null;
+ this.pref = pref || null;
+};
+
+/**
+* Contact address.
+* @constructor
+* @param {DOMString} id unique identifier, should only be set by native code
+* @param formatted
+* @param streetAddress
+* @param locality
+* @param region
+* @param postalCode
+* @param country
+*/
+var ContactAddress = function(pref, type, formatted, streetAddress, locality, region, postalCode, country) {
+ this.id = null;
+ this.pref = pref || null;
+ this.type = type || null;
+ this.formatted = formatted || null;
+ this.streetAddress = streetAddress || null;
+ this.locality = locality || null;
+ this.region = region || null;
+ this.postalCode = postalCode || null;
+ this.country = country || null;
+};
+
+/**
+* Contact organization.
+* @constructor
+* @param {DOMString} id unique identifier, should only be set by native code
+* @param name
+* @param dept
+* @param title
+* @param startDate
+* @param endDate
+* @param location
+* @param desc
+*/
+var ContactOrganization = function(pref, type, name, dept, title) {
+ this.id = null;
+ this.pref = pref || null;
+ this.type = type || null;
+ this.name = name || null;
+ this.department = dept || null;
+ this.title = title || null;
+};
+
+/**
+* Represents a group of Contacts.
+* @constructor
+*/
+var Contacts = function() {
+ this.inProgress = false;
+ this.records = [];
+};
+/**
+* Returns an array of Contacts matching the search criteria.
+* @param fields that should be searched
+* @param successCB success callback
+* @param errorCB error callback
+* @param {ContactFindOptions} options that can be applied to contact searching
+* @return array of Contacts matching search criteria
+*/
+Contacts.prototype.find = function(fields, successCB, errorCB, options) {
+ if (successCB === null) {
+ throw new TypeError("You must specify a success callback for the find command.");
+ }
+ if (fields === null || fields === "undefined" || fields.length === "undefined" || fields.length <= 0) {
+ if (typeof errorCB === "function") {
+ errorCB({"code": ContactError.INVALID_ARGUMENT_ERROR});
+ }
+ } else {
+ PhoneGap.exec(successCB, errorCB, "Contacts", "search", [fields, options]);
+ }
+};
+
+/**
+* This function creates a new contact, but it does not persist the contact
+* to device storage. To persist the contact to device storage, invoke
+* contact.save().
+* @param properties an object who's properties will be examined to create a new Contact
+* @returns new Contact object
+*/
+Contacts.prototype.create = function(properties) {
+ var i;
+ var contact = new Contact();
+ for (i in properties) {
+ if (contact[i] !== 'undefined') {
+ contact[i] = properties[i];
+ }
+ }
+ return contact;
+};
+
+/**
+* This function returns and array of contacts. It is required as we need to convert raw
+* JSON objects into concrete Contact objects. Currently this method is called after
+* navigator.contacts.find but before the find methods success call back.
+*
+* @param jsonArray an array of JSON Objects that need to be converted to Contact objects.
+* @returns an array of Contact objects
+*/
+Contacts.prototype.cast = function(pluginResult) {
+ var contacts = [];
+ var i;
+ for (i=0; i<pluginResult.message.length; i++) {
+ contacts.push(navigator.contacts.create(pluginResult.message[i]));
+ }
+ pluginResult.message = contacts;
+ return pluginResult;
+};
+
+/**
+ * ContactFindOptions.
+ * @constructor
+ * @param filter used to match contacts against
+ * @param multiple boolean used to determine if more than one contact should be returned
+ */
+var ContactFindOptions = function(filter, multiple) {
+ this.filter = filter || '';
+ this.multiple = multiple || false;
+};
+
+/**
+ * Add the contact interface into the browser.
+ */
+PhoneGap.addConstructor(function() {
+ if(typeof navigator.contacts === "undefined") {
+ navigator.contacts = new Contacts();
+ }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+// TODO: Needs to be commented
+
+if (!PhoneGap.hasResource("crypto")) {
+PhoneGap.addResource("crypto");
+
+/**
+* @constructor
+*/
+var Crypto = function() {
+};
+
+Crypto.prototype.encrypt = function(seed, string, callback) {
+ this.encryptWin = callback;
+ PhoneGap.exec(null, null, "Crypto", "encrypt", [seed, string]);
+};
+
+Crypto.prototype.decrypt = function(seed, string, callback) {
+ this.decryptWin = callback;
+ PhoneGap.exec(null, null, "Crypto", "decrypt", [seed, string]);
+};
+
+Crypto.prototype.gotCryptedString = function(string) {
+ this.encryptWin(string);
+};
+
+Crypto.prototype.getPlainString = function(string) {
+ this.decryptWin(string);
+};
+
+PhoneGap.addConstructor(function() {
+ if (typeof navigator.Crypto === "undefined") {
+ navigator.Crypto = new Crypto();
+ }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("device")) {
+PhoneGap.addResource("device");
+
+/**
+ * This represents the mobile device, and provides properties for inspecting the model, version, UUID of the
+ * phone, etc.
+ * @constructor
+ */
+var Device = function() {
+ this.available = PhoneGap.available;
+ this.platform = null;
+ this.version = null;
+ this.name = null;
+ this.uuid = null;
+ this.phonegap = null;
+
+ var me = this;
+ this.getInfo(
+ function(info) {
+ me.available = true;
+ me.platform = info.platform;
+ me.version = info.version;
+ me.name = info.name;
+ me.uuid = info.uuid;
+ me.phonegap = info.phonegap;
+ PhoneGap.onPhoneGapInfoReady.fire();
+ },
+ function(e) {
+ me.available = false;
+ console.log("Error initializing PhoneGap: " + e);
+ alert("Error initializing PhoneGap: "+e);
+ });
+};
+
+/**
+ * Get device info
+ *
+ * @param {Function} successCallback The function to call when the heading data is available
+ * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL)
+ */
+Device.prototype.getInfo = function(successCallback, errorCallback) {
+
+ // successCallback required
+ if (typeof successCallback !== "function") {
+ console.log("Device Error: successCallback is not a function");
+ return;
+ }
+
+ // errorCallback optional
+ if (errorCallback && (typeof errorCallback !== "function")) {
+ console.log("Device Error: errorCallback is not a function");
+ return;
+ }
+
+ // Get info
+ PhoneGap.exec(successCallback, errorCallback, "Device", "getDeviceInfo", []);
+};
+
+/*
+ * DEPRECATED
+ * This is only for Android.
+ *
+ * You must explicitly override the back button.
+ */
+Device.prototype.overrideBackButton = function() {
+ console.log("Device.overrideBackButton() is deprecated. Use App.overrideBackbutton(true).");
+ navigator.app.overrideBackbutton(true);
+};
+
+/*
+ * DEPRECATED
+ * This is only for Android.
+ *
+ * This resets the back button to the default behaviour
+ */
+Device.prototype.resetBackButton = function() {
+ console.log("Device.resetBackButton() is deprecated. Use App.overrideBackbutton(false).");
+ navigator.app.overrideBackbutton(false);
+};
+
+/*
+ * DEPRECATED
+ * This is only for Android.
+ *
+ * This terminates the activity!
+ */
+Device.prototype.exitApp = function() {
+ console.log("Device.exitApp() is deprecated. Use App.exitApp().");
+ navigator.app.exitApp();
+};
+
+PhoneGap.addConstructor(function() {
+ if (typeof navigator.device === "undefined") {
+ navigator.device = window.device = new Device();
+ }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("file")) {
+PhoneGap.addResource("file");
+
+/**
+ * This class provides some useful information about a file.
+ * This is the fields returned when navigator.fileMgr.getFileProperties()
+ * is called.
+ * @constructor
+ */
+var FileProperties = function(filePath) {
+ this.filePath = filePath;
+ this.size = 0;
+ this.lastModifiedDate = null;
+};
+
+/**
+ * Represents a single file.
+ *
+ * @constructor
+ * @param name {DOMString} name of the file, without path information
+ * @param fullPath {DOMString} the full path of the file, including the name
+ * @param type {DOMString} mime type
+ * @param lastModifiedDate {Date} last modified date
+ * @param size {Number} size of the file in bytes
+ */
+var File = function(name, fullPath, type, lastModifiedDate, size) {
+ this.name = name || null;
+ this.fullPath = fullPath || null;
+ this.type = type || null;
+ this.lastModifiedDate = lastModifiedDate || null;
+ this.size = size || 0;
+};
+
+/** @constructor */
+var FileError = function() {
+ this.code = null;
+};
+
+// File error codes
+// Found in DOMException
+FileError.NOT_FOUND_ERR = 1;
+FileError.SECURITY_ERR = 2;
+FileError.ABORT_ERR = 3;
+
+// Added by this specification
+FileError.NOT_READABLE_ERR = 4;
+FileError.ENCODING_ERR = 5;
+FileError.NO_MODIFICATION_ALLOWED_ERR = 6;
+FileError.INVALID_STATE_ERR = 7;
+FileError.SYNTAX_ERR = 8;
+FileError.INVALID_MODIFICATION_ERR = 9;
+FileError.QUOTA_EXCEEDED_ERR = 10;
+FileError.TYPE_MISMATCH_ERR = 11;
+FileError.PATH_EXISTS_ERR = 12;
+
+//-----------------------------------------------------------------------------
+// File manager
+//-----------------------------------------------------------------------------
+
+/** @constructor */
+var FileMgr = function() {
+};
+
+FileMgr.prototype.getFileProperties = function(filePath) {
+ return PhoneGap.exec(null, null, "File", "getFileProperties", [filePath]);
+};
+
+FileMgr.prototype.getFileBasePaths = function() {
+};
+
+FileMgr.prototype.testSaveLocationExists = function(successCallback, errorCallback) {
+ return PhoneGap.exec(successCallback, errorCallback, "File", "testSaveLocationExists", []);
+};
+
+FileMgr.prototype.testFileExists = function(fileName, successCallback, errorCallback) {
+ return PhoneGap.exec(successCallback, errorCallback, "File", "testFileExists", [fileName]);
+};
+
+FileMgr.prototype.testDirectoryExists = function(dirName, successCallback, errorCallback) {
+ return PhoneGap.exec(successCallback, errorCallback, "File", "testDirectoryExists", [dirName]);
+};
+
+FileMgr.prototype.getFreeDiskSpace = function(successCallback, errorCallback) {
+ return PhoneGap.exec(successCallback, errorCallback, "File", "getFreeDiskSpace", []);
+};
+
+FileMgr.prototype.write = function(fileName, data, position, successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "write", [fileName, data, position]);
+};
+
+FileMgr.prototype.truncate = function(fileName, size, successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "truncate", [fileName, size]);
+};
+
+FileMgr.prototype.readAsText = function(fileName, encoding, successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "readAsText", [fileName, encoding]);
+};
+
+FileMgr.prototype.readAsDataURL = function(fileName, successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "readAsDataURL", [fileName]);
+};
+
+PhoneGap.addConstructor(function() {
+ if (typeof navigator.fileMgr === "undefined") {
+ navigator.fileMgr = new FileMgr();
+ }
+});
+
+//-----------------------------------------------------------------------------
+// File Reader
+//-----------------------------------------------------------------------------
+// TODO: All other FileMgr function operate on the SD card as root. However,
+// for FileReader & FileWriter the root is not SD card. Should this be changed?
+
+/**
+ * This class reads the mobile device file system.
+ *
+ * For Android:
+ * The root directory is the root of the file system.
+ * To read from the SD card, the file name is "sdcard/my_file.txt"
+ * @constructor
+ */
+var FileReader = function() {
+ this.fileName = "";
+
+ this.readyState = 0;
+
+ // File data
+ this.result = null;
+
+ // Error
+ this.error = null;
+
+ // Event handlers
+ this.onloadstart = null; // When the read starts.
+ this.onprogress = null; // While reading (and decoding) file or fileBlob data, and reporting partial file data (progess.loaded/progress.total)
+ this.onload = null; // When the read has successfully completed.
+ this.onerror = null; // When the read has failed (see errors).
+ this.onloadend = null; // When the request has completed (either in success or failure).
+ this.onabort = null; // When the read has been aborted. For instance, by invoking the abort() method.
+};
+
+// States
+FileReader.EMPTY = 0;
+FileReader.LOADING = 1;
+FileReader.DONE = 2;
+
+/**
+ * Abort reading file.
+ */
+FileReader.prototype.abort = function() {
+ var evt;
+ this.readyState = FileReader.DONE;
+ this.result = null;
+
+ // set error
+ var error = new FileError();
+ error.code = error.ABORT_ERR;
+ this.error = error;
+
+ // If error callback
+ if (typeof this.onerror === "function") {
+ this.onerror({"type":"error", "target":this});
+ }
+ // If abort callback
+ if (typeof this.onabort === "function") {
+ this.onabort({"type":"abort", "target":this});
+ }
+ // If load end callback
+ if (typeof this.onloadend === "function") {
+ this.onloadend({"type":"loadend", "target":this});
+ }
+};
+
+/**
+ * Read text file.
+ *
+ * @param file {File} File object containing file properties
+ * @param encoding [Optional] (see http://www.iana.org/assignments/character-sets)
+ */
+FileReader.prototype.readAsText = function(file, encoding) {
+ this.fileName = "";
+ if (typeof file.fullPath === "undefined") {
+ this.fileName = file;
+ } else {
+ this.fileName = file.fullPath;
+ }
+
+ // LOADING state
+ this.readyState = FileReader.LOADING;
+
+ // If loadstart callback
+ if (typeof this.onloadstart === "function") {
+ this.onloadstart({"type":"loadstart", "target":this});
+ }
+
+ // Default encoding is UTF-8
+ var enc = encoding ? encoding : "UTF-8";
+
+ var me = this;
+
+ // Read file
+ navigator.fileMgr.readAsText(this.fileName, enc,
+
+ // Success callback
+ function(r) {
+ var evt;
+
+ // If DONE (cancelled), then don't do anything
+ if (me.readyState === FileReader.DONE) {
+ return;
+ }
+
+ // Save result
+ me.result = r;
+
+ // If onload callback
+ if (typeof me.onload === "function") {
+ me.onload({"type":"load", "target":me});
+ }
+
+ // DONE state
+ me.readyState = FileReader.DONE;
+
+ // If onloadend callback
+ if (typeof me.onloadend === "function") {
+ me.onloadend({"type":"loadend", "target":me});
+ }
+ },
+
+ // Error callback
+ function(e) {
+ var evt;
+ // If DONE (cancelled), then don't do anything
+ if (me.readyState === FileReader.DONE) {
+ return;
+ }
+
+ // Save error
+ me.error = e;
+
+ // If onerror callback
+ if (typeof me.onerror === "function") {
+ me.onerror({"type":"error", "target":me});
+ }
+
+ // DONE state
+ me.readyState = FileReader.DONE;
+
+ // If onloadend callback
+ if (typeof me.onloadend === "function") {
+ me.onloadend({"type":"loadend", "target":me});
+ }
+ }
+ );
+};
+
+
+/**
+ * Read file and return data as a base64 encoded data url.
+ * A data url is of the form:
+ * data:[<mediatype>][;base64],<data>
+ *
+ * @param file {File} File object containing file properties
+ */
+FileReader.prototype.readAsDataURL = function(file) {
+ this.fileName = "";
+ if (typeof file.fullPath === "undefined") {
+ this.fileName = file;
+ } else {
+ this.fileName = file.fullPath;
+ }
+
+ // LOADING state
+ this.readyState = FileReader.LOADING;
+
+ // If loadstart callback
+ if (typeof this.onloadstart === "function") {
+ this.onloadstart({"type":"loadstart", "target":this});
+ }
+
+ var me = this;
+
+ // Read file
+ navigator.fileMgr.readAsDataURL(this.fileName,
+
+ // Success callback
+ function(r) {
+ var evt;
+
+ // If DONE (cancelled), then don't do anything
+ if (me.readyState === FileReader.DONE) {
+ return;
+ }
+
+ // Save result
+ me.result = r;
+
+ // If onload callback
+ if (typeof me.onload === "function") {
+ me.onload({"type":"load", "target":me});
+ }
+
+ // DONE state
+ me.readyState = FileReader.DONE;
+
+ // If onloadend callback
+ if (typeof me.onloadend === "function") {
+ me.onloadend({"type":"loadend", "target":me});
+ }
+ },
+
+ // Error callback
+ function(e) {
+ var evt;
+ // If DONE (cancelled), then don't do anything
+ if (me.readyState === FileReader.DONE) {
+ return;
+ }
+
+ // Save error
+ me.error = e;
+
+ // If onerror callback
+ if (typeof me.onerror === "function") {
+ me.onerror({"type":"error", "target":me});
+ }
+
+ // DONE state
+ me.readyState = FileReader.DONE;
+
+ // If onloadend callback
+ if (typeof me.onloadend === "function") {
+ me.onloadend({"type":"loadend", "target":me});
+ }
+ }
+ );
+};
+
+/**
+ * Read file and return data as a binary data.
+ *
+ * @param file {File} File object containing file properties
+ */
+FileReader.prototype.readAsBinaryString = function(file) {
+ // TODO - Can't return binary data to browser.
+ this.fileName = file;
+};
+
+/**
+ * Read file and return data as a binary data.
+ *
+ * @param file {File} File object containing file properties
+ */
+FileReader.prototype.readAsArrayBuffer = function(file) {
+ // TODO - Can't return binary data to browser.
+ this.fileName = file;
+};
+
+//-----------------------------------------------------------------------------
+// File Writer
+//-----------------------------------------------------------------------------
+
+/**
+ * This class writes to the mobile device file system.
+ *
+ * For Android:
+ * The root directory is the root of the file system.
+ * To write to the SD card, the file name is "sdcard/my_file.txt"
+ *
+ * @constructor
+ * @param file {File} File object containing file properties
+ * @param append if true write to the end of the file, otherwise overwrite the file
+ */
+var FileWriter = function(file) {
+ this.fileName = "";
+ this.length = 0;
+ if (file) {
+ this.fileName = file.fullPath || file;
+ this.length = file.size || 0;
+ }
+ // default is to write at the beginning of the file
+ this.position = 0;
+
+ this.readyState = 0; // EMPTY
+
+ this.result = null;
+
+ // Error
+ this.error = null;
+
+ // Event handlers
+ this.onwritestart = null; // When writing starts
+ this.onprogress = null; // While writing the file, and reporting partial file data
+ this.onwrite = null; // When the write has successfully completed.
+ this.onwriteend = null; // When the request has completed (either in success or failure).
+ this.onabort = null; // When the write has been aborted. For instance, by invoking the abort() method.
+ this.onerror = null; // When the write has failed (see errors).
+};
+
+// States
+FileWriter.INIT = 0;
+FileWriter.WRITING = 1;
+FileWriter.DONE = 2;
+
+/**
+ * Abort writing file.
+ */
+FileWriter.prototype.abort = function() {
+ // check for invalid state
+ if (this.readyState === FileWriter.DONE || this.readyState === FileWriter.INIT) {
+ throw FileError.INVALID_STATE_ERR;
+ }
+
+ // set error
+ var error = new FileError(), evt;
+ error.code = error.ABORT_ERR;
+ this.error = error;
+
+ // If error callback
+ if (typeof this.onerror === "function") {
+ this.onerror({"type":"error", "target":this});
+ }
+ // If abort callback
+ if (typeof this.onabort === "function") {
+ this.onabort({"type":"abort", "target":this});
+ }
+
+ this.readyState = FileWriter.DONE;
+
+ // If write end callback
+ if (typeof this.onwriteend == "function") {
+ this.onwriteend({"type":"writeend", "target":this});
+ }
+};
+
+/**
+ * Writes data to the file
+ *
+ * @param text to be written
+ */
+FileWriter.prototype.write = function(text) {
+ // Throw an exception if we are already writing a file
+ if (this.readyState === FileWriter.WRITING) {
+ throw FileError.INVALID_STATE_ERR;
+ }
+
+ // WRITING state
+ this.readyState = FileWriter.WRITING;
+
+ var me = this;
+
+ // If onwritestart callback
+ if (typeof me.onwritestart === "function") {
+ me.onwritestart({"type":"writestart", "target":me});
+ }
+
+ // Write file
+ navigator.fileMgr.write(this.fileName, text, this.position,
+
+ // Success callback
+ function(r) {
+ var evt;
+ // If DONE (cancelled), then don't do anything
+ if (me.readyState === FileWriter.DONE) {
+ return;
+ }
+
+ // position always increases by bytes written because file would be extended
+ me.position += r;
+ // The length of the file is now where we are done writing.
+ me.length = me.position;
+
+ // If onwrite callback
+ if (typeof me.onwrite === "function") {
+ me.onwrite({"type":"write", "target":me});
+ }
+
+ // DONE state
+ me.readyState = FileWriter.DONE;
+
+ // If onwriteend callback
+ if (typeof me.onwriteend === "function") {
+ me.onwriteend({"type":"writeend", "target":me});
+ }
+ },
+
+ // Error callback
+ function(e) {
+ var evt;
+
+ // If DONE (cancelled), then don't do anything
+ if (me.readyState === FileWriter.DONE) {
+ return;
+ }
+
+ // Save error
+ me.error = e;
+
+ // If onerror callback
+ if (typeof me.onerror === "function") {
+ me.onerror({"type":"error", "target":me});
+ }
+
+ // DONE state
+ me.readyState = FileWriter.DONE;
+
+ // If onwriteend callback
+ if (typeof me.onwriteend === "function") {
+ me.onwriteend({"type":"writeend", "target":me});
+ }
+ }
+ );
+
+};
+
+/**
+ * Moves the file pointer to the location specified.
+ *
+ * If the offset is a negative number the position of the file
+ * pointer is rewound. If the offset is greater than the file
+ * size the position is set to the end of the file.
+ *
+ * @param offset is the location to move the file pointer to.
+ */
+FileWriter.prototype.seek = function(offset) {
+ // Throw an exception if we are already writing a file
+ if (this.readyState === FileWriter.WRITING) {
+ throw FileError.INVALID_STATE_ERR;
+ }
+
+ if (!offset) {
+ return;
+ }
+
+ // See back from end of file.
+ if (offset < 0) {
+ this.position = Math.max(offset + this.length, 0);
+ }
+ // Offset is bigger then file size so set position
+ // to the end of the file.
+ else if (offset > this.length) {
+ this.position = this.length;
+ }
+ // Offset is between 0 and file size so set the position
+ // to start writing.
+ else {
+ this.position = offset;
+ }
+};
+
+/**
+ * Truncates the file to the size specified.
+ *
+ * @param size to chop the file at.
+ */
+FileWriter.prototype.truncate = function(size) {
+ // Throw an exception if we are already writing a file
+ if (this.readyState === FileWriter.WRITING) {
+ throw FileError.INVALID_STATE_ERR;
+ }
+
+ // WRITING state
+ this.readyState = FileWriter.WRITING;
+
+ var me = this;
+
+ // If onwritestart callback
+ if (typeof me.onwritestart === "function") {
+ me.onwritestart({"type":"writestart", "target":this});
+ }
+
+ // Write file
+ navigator.fileMgr.truncate(this.fileName, size,
+
+ // Success callback
+ function(r) {
+ var evt;
+ // If DONE (cancelled), then don't do anything
+ if (me.readyState === FileWriter.DONE) {
+ return;
+ }
+
+ // Update the length of the file
+ me.length = r;
+ me.position = Math.min(me.position, r);
+
+ // If onwrite callback
+ if (typeof me.onwrite === "function") {
+ me.onwrite({"type":"write", "target":me});
+ }
+
+ // DONE state
+ me.readyState = FileWriter.DONE;
+
+ // If onwriteend callback
+ if (typeof me.onwriteend === "function") {
+ me.onwriteend({"type":"writeend", "target":me});
+ }
+ },
+
+ // Error callback
+ function(e) {
+ var evt;
+ // If DONE (cancelled), then don't do anything
+ if (me.readyState === FileWriter.DONE) {
+ return;
+ }
+
+ // Save error
+ me.error = e;
+
+ // If onerror callback
+ if (typeof me.onerror === "function") {
+ me.onerror({"type":"error", "target":me});
+ }
+
+ // DONE state
+ me.readyState = FileWriter.DONE;
+
+ // If onwriteend callback
+ if (typeof me.onwriteend === "function") {
+ me.onwriteend({"type":"writeend", "target":me});
+ }
+ }
+ );
+};
+
+/**
+ * Information about the state of the file or directory
+ *
+ * @constructor
+ * {Date} modificationTime (readonly)
+ */
+var Metadata = function() {
+ this.modificationTime=null;
+};
+
+/**
+ * Supplies arguments to methods that lookup or create files and directories
+ *
+ * @constructor
+ * @param {boolean} create file or directory if it doesn't exist
+ * @param {boolean} exclusive if true the command will fail if the file or directory exists
+ */
+var Flags = function(create, exclusive) {
+ this.create = create || false;
+ this.exclusive = exclusive || false;
+};
+
+/**
+ * An interface representing a file system
+ *
+ * @constructor
+ * {DOMString} name the unique name of the file system (readonly)
+ * {DirectoryEntry} root directory of the file system (readonly)
+ */
+var FileSystem = function() {
+ this.name = null;
+ this.root = null;
+};
+
+/**
+ * An interface that lists the files and directories in a directory.
+ * @constructor
+ */
+var DirectoryReader = function(fullPath){
+ this.fullPath = fullPath || null;
+};
+
+/**
+ * Returns a list of entries from a directory.
+ *
+ * @param {Function} successCallback is called with a list of entries
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryReader.prototype.readEntries = function(successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "readEntries", [this.fullPath]);
+};
+
+/**
+ * An interface representing a directory on the file system.
+ *
+ * @constructor
+ * {boolean} isFile always false (readonly)
+ * {boolean} isDirectory always true (readonly)
+ * {DOMString} name of the directory, excluding the path leading to it (readonly)
+ * {DOMString} fullPath the absolute full path to the directory (readonly)
+ * {FileSystem} filesystem on which the directory resides (readonly)
+ */
+var DirectoryEntry = function() {
+ this.isFile = false;
+ this.isDirectory = true;
+ this.name = null;
+ this.fullPath = null;
+ this.filesystem = null;
+};
+
+/**
+ * Copies a directory to a new location
+ *
+ * @param {DirectoryEntry} parent the directory to which to copy the entry
+ * @param {DOMString} newName the new name of the entry, defaults to the current name
+ * @param {Function} successCallback is called with the new entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "copyTo", [this.fullPath, parent, newName]);
+};
+
+/**
+ * Looks up the metadata of the entry
+ *
+ * @param {Function} successCallback is called with a Metadata object
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.getMetadata = function(successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "getMetadata", [this.fullPath]);
+};
+
+/**
+ * Gets the parent of the entry
+ *
+ * @param {Function} successCallback is called with a parent entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.getParent = function(successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "getParent", [this.fullPath]);
+};
+
+/**
+ * Moves a directory to a new location
+ *
+ * @param {DirectoryEntry} parent the directory to which to move the entry
+ * @param {DOMString} newName the new name of the entry, defaults to the current name
+ * @param {Function} successCallback is called with the new entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "moveTo", [this.fullPath, parent, newName]);
+};
+
+/**
+ * Removes the entry
+ *
+ * @param {Function} successCallback is called with no parameters
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.remove = function(successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "remove", [this.fullPath]);
+};
+
+/**
+ * Returns a URI that can be used to identify this entry.
+ *
+ * @param {DOMString} mimeType for a FileEntry, the mime type to be used to interpret the file, when loaded through this URI.
+ * @return uri
+ */
+DirectoryEntry.prototype.toURI = function(mimeType) {
+ return "file://" + this.fullPath;
+};
+
+/**
+ * Creates a new DirectoryReader to read entries from this directory
+ */
+DirectoryEntry.prototype.createReader = function(successCallback, errorCallback) {
+ return new DirectoryReader(this.fullPath);
+};
+
+/**
+ * Creates or looks up a directory
+ *
+ * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a directory
+ * @param {Flags} options to create or excluively create the directory
+ * @param {Function} successCallback is called with the new entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "getDirectory", [this.fullPath, path, options]);
+};
+
+/**
+ * Creates or looks up a file
+ *
+ * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a file
+ * @param {Flags} options to create or excluively create the file
+ * @param {Function} successCallback is called with the new entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "getFile", [this.fullPath, path, options]);
+};
+
+/**
+ * Deletes a directory and all of it's contents
+ *
+ * @param {Function} successCallback is called with no parameters
+ * @param {Function} errorCallback is called with a FileError
+ */
+DirectoryEntry.prototype.removeRecursively = function(successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "removeRecursively", [this.fullPath]);
+};
+
+/**
+ * An interface representing a directory on the file system.
+ *
+ * @constructor
+ * {boolean} isFile always true (readonly)
+ * {boolean} isDirectory always false (readonly)
+ * {DOMString} name of the file, excluding the path leading to it (readonly)
+ * {DOMString} fullPath the absolute full path to the file (readonly)
+ * {FileSystem} filesystem on which the directory resides (readonly)
+ */
+var FileEntry = function() {
+ this.isFile = true;
+ this.isDirectory = false;
+ this.name = null;
+ this.fullPath = null;
+ this.filesystem = null;
+};
+
+/**
+ * Copies a file to a new location
+ *
+ * @param {DirectoryEntry} parent the directory to which to copy the entry
+ * @param {DOMString} newName the new name of the entry, defaults to the current name
+ * @param {Function} successCallback is called with the new entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+FileEntry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "copyTo", [this.fullPath, parent, newName]);
+};
+
+/**
+ * Looks up the metadata of the entry
+ *
+ * @param {Function} successCallback is called with a Metadata object
+ * @param {Function} errorCallback is called with a FileError
+ */
+FileEntry.prototype.getMetadata = function(successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "getMetadata", [this.fullPath]);
+};
+
+/**
+ * Gets the parent of the entry
+ *
+ * @param {Function} successCallback is called with a parent entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+FileEntry.prototype.getParent = function(successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "getParent", [this.fullPath]);
+};
+
+/**
+ * Moves a directory to a new location
+ *
+ * @param {DirectoryEntry} parent the directory to which to move the entry
+ * @param {DOMString} newName the new name of the entry, defaults to the current name
+ * @param {Function} successCallback is called with the new entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+FileEntry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "moveTo", [this.fullPath, parent, newName]);
+};
+
+/**
+ * Removes the entry
+ *
+ * @param {Function} successCallback is called with no parameters
+ * @param {Function} errorCallback is called with a FileError
+ */
+FileEntry.prototype.remove = function(successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "remove", [this.fullPath]);
+};
+
+/**
+ * Returns a URI that can be used to identify this entry.
+ *
+ * @param {DOMString} mimeType for a FileEntry, the mime type to be used to interpret the file, when loaded through this URI.
+ * @return uri
+ */
+FileEntry.prototype.toURI = function(mimeType) {
+ return "file://" + this.fullPath;
+};
+
+/**
+ * Creates a new FileWriter associated with the file that this FileEntry represents.
+ *
+ * @param {Function} successCallback is called with the new FileWriter
+ * @param {Function} errorCallback is called with a FileError
+ */
+FileEntry.prototype.createWriter = function(successCallback, errorCallback) {
+ this.file(function(filePointer) {
+ var writer = new FileWriter(filePointer);
+
+ if (writer.fileName === null || writer.fileName === "") {
+ if (typeof errorCallback == "function") {
+ errorCallback({
+ "code": FileError.INVALID_STATE_ERR
+ });
+ }
+ }
+
+ if (typeof successCallback == "function") {
+ successCallback(writer);
+ }
+ }, errorCallback);
+};
+
+/**
+ * Returns a File that represents the current state of the file that this FileEntry represents.
+ *
+ * @param {Function} successCallback is called with the new File object
+ * @param {Function} errorCallback is called with a FileError
+ */
+FileEntry.prototype.file = function(successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "getFileMetadata", [this.fullPath]);
+};
+
+/** @constructor */
+var LocalFileSystem = function() {
+};
+
+// File error codes
+LocalFileSystem.TEMPORARY = 0;
+LocalFileSystem.PERSISTENT = 1;
+LocalFileSystem.RESOURCE = 2;
+LocalFileSystem.APPLICATION = 3;
+
+/**
+ * Requests a filesystem in which to store application data.
+ *
+ * @param {int} type of file system being requested
+ * @param {Function} successCallback is called with the new FileSystem
+ * @param {Function} errorCallback is called with a FileError
+ */
+LocalFileSystem.prototype.requestFileSystem = function(type, size, successCallback, errorCallback) {
+ if (type < 0 || type > 3) {
+ if (typeof errorCallback == "function") {
+ errorCallback({
+ "code": FileError.SYNTAX_ERR
+ });
+ }
+ }
+ else {
+ PhoneGap.exec(successCallback, errorCallback, "File", "requestFileSystem", [type, size]);
+ }
+};
+
+/**
+ *
+ * @param {DOMString} uri referring to a local file in a filesystem
+ * @param {Function} successCallback is called with the new entry
+ * @param {Function} errorCallback is called with a FileError
+ */
+LocalFileSystem.prototype.resolveLocalFileSystemURI = function(uri, successCallback, errorCallback) {
+ PhoneGap.exec(successCallback, errorCallback, "File", "resolveLocalFileSystemURI", [uri]);
+};
+
+/**
+* This function returns and array of contacts. It is required as we need to convert raw
+* JSON objects into concrete Contact objects. Currently this method is called after
+* navigator.service.contacts.find but before the find methods success call back.
+*
+* @param a JSON Objects that need to be converted to DirectoryEntry or FileEntry objects.
+* @returns an entry
+*/
+LocalFileSystem.prototype._castFS = function(pluginResult) {
+ var entry = null;
+ entry = new DirectoryEntry();
+ entry.isDirectory = pluginResult.message.root.isDirectory;
+ entry.isFile = pluginResult.message.root.isFile;
+ entry.name = pluginResult.message.root.name;
+ entry.fullPath = pluginResult.message.root.fullPath;
+ pluginResult.message.root = entry;
+ return pluginResult;
+};
+
+LocalFileSystem.prototype._castEntry = function(pluginResult) {
+ var entry = null;
+ if (pluginResult.message.isDirectory) {
+ console.log("This is a dir");
+ entry = new DirectoryEntry();
+ }
+ else if (pluginResult.message.isFile) {
+ console.log("This is a file");
+ entry = new FileEntry();
+ }
+ entry.isDirectory = pluginResult.message.isDirectory;
+ entry.isFile = pluginResult.message.isFile;
+ entry.name = pluginResult.message.name;
+ entry.fullPath = pluginResult.message.fullPath;
+ pluginResult.message = entry;
+ return pluginResult;
+};
+
+LocalFileSystem.prototype._castEntries = function(pluginResult) {
+ var entries = pluginResult.message;
+ var retVal = [];
+ for (var i=0; i<entries.length; i++) {
+ retVal.push(window.localFileSystem._createEntry(entries[i]));
+ }
+ pluginResult.message = retVal;
+ return pluginResult;
+};
+
+LocalFileSystem.prototype._createEntry = function(castMe) {
+ var entry = null;
+ if (castMe.isDirectory) {
+ console.log("This is a dir");
+ entry = new DirectoryEntry();
+ }
+ else if (castMe.isFile) {
+ console.log("This is a file");
+ entry = new FileEntry();
+ }
+ entry.isDirectory = castMe.isDirectory;
+ entry.isFile = castMe.isFile;
+ entry.name = castMe.name;
+ entry.fullPath = castMe.fullPath;
+ return entry;
+};
+
+LocalFileSystem.prototype._castDate = function(pluginResult) {
+ if (pluginResult.message.modificationTime) {
+ var modTime = new Date(pluginResult.message.modificationTime);
+ pluginResult.message.modificationTime = modTime;
+ }
+ else if (pluginResult.message.lastModifiedDate) {
+ var file = new File();
+ file.size = pluginResult.message.size;
+ file.type = pluginResult.message.type;
+ file.name = pluginResult.message.name;
+ file.fullPath = pluginResult.message.fullPath;
+ file.lastModifiedDate = new Date(pluginResult.message.lastModifiedDate);
+ pluginResult.message = file;
+ }
+ return pluginResult;
+};
+
+/**
+ * Add the FileSystem interface into the browser.
+ */
+PhoneGap.addConstructor(function() {
+ var pgLocalFileSystem = new LocalFileSystem();
+ // Needed for cast methods
+ if(typeof window.localFileSystem == "undefined") window.localFileSystem = pgLocalFileSystem;
+ if(typeof window.requestFileSystem == "undefined") window.requestFileSystem = pgLocalFileSystem.requestFileSystem;
+ if(typeof window.resolveLocalFileSystemURI == "undefined") window.resolveLocalFileSystemURI = pgLocalFileSystem.resolveLocalFileSystemURI;
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("filetransfer")) {
+PhoneGap.addResource("filetransfer");
+
+/**
+ * FileTransfer uploads a file to a remote server.
+ * @constructor
+ */
+var FileTransfer = function() {};
+
+/**
+ * FileUploadResult
+ * @constructor
+ */
+var FileUploadResult = function() {
+ this.bytesSent = 0;
+ this.responseCode = null;
+ this.response = null;
+};
+
+/**
+ * FileTransferError
+ * @constructor
+ */
+var FileTransferError = function() {
+ this.code = null;
+};
+
+FileTransferError.FILE_NOT_FOUND_ERR = 1;
+FileTransferError.INVALID_URL_ERR = 2;
+FileTransferError.CONNECTION_ERR = 3;
+
+/**
+* Given an absolute file path, uploads a file on the device to a remote server
+* using a multipart HTTP request.
+* @param filePath {String} Full path of the file on the device
+* @param server {String} URL of the server to receive the file
+* @param successCallback (Function} Callback to be invoked when upload has completed
+* @param errorCallback {Function} Callback to be invoked upon error
+* @param options {FileUploadOptions} Optional parameters such as file name and mimetype
+*/
+FileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options, debug) {
+
+ // check for options
+ var fileKey = null;
+ var fileName = null;
+ var mimeType = null;
+ var params = null;
+ if (options) {
+ fileKey = options.fileKey;
+ fileName = options.fileName;
+ mimeType = options.mimeType;
+ if (options.params) {
+ params = options.params;
+ }
+ else {
+ params = {};
+ }
+ }
+
+ PhoneGap.exec(successCallback, errorCallback, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, debug]);
+};
+
+/**
+ * Options to customize the HTTP request used to upload files.
+ * @constructor
+ * @param fileKey {String} Name of file request parameter.
+ * @param fileName {String} Filename to be used by the server. Defaults to image.jpg.
+ * @param mimeType {String} Mimetype of the uploaded file. Defaults to image/jpeg.
+ * @param params {Object} Object with key: value params to send to the server.
+ */
+var FileUploadOptions = function(fileKey, fileName, mimeType, params) {
+ this.fileKey = fileKey || null;
+ this.fileName = fileName || null;
+ this.mimeType = mimeType || null;
+ this.params = params || null;
+};
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("geolocation")) {
+PhoneGap.addResource("geolocation");
+
+/**
+ * This class provides access to device GPS data.
+ * @constructor
+ */
+var Geolocation = function() {
+
+ // The last known GPS position.
+ this.lastPosition = null;
+
+ // Geolocation listeners
+ this.listeners = {};
+};
+
+/**
+ * Position error object
+ *
+ * @constructor
+ * @param code
+ * @param message
+ */
+var PositionError = function(code, message) {
+ this.code = code;
+ this.message = message;
+};
+
+PositionError.PERMISSION_DENIED = 1;
+PositionError.POSITION_UNAVAILABLE = 2;
+PositionError.TIMEOUT = 3;
+
+/**
+ * Asynchronously aquires the current position.
+ *
+ * @param {Function} successCallback The function to call when the position data is available
+ * @param {Function} errorCallback The function to call when there is an error getting the heading position. (OPTIONAL)
+ * @param {PositionOptions} options The options for getting the position data. (OPTIONAL)
+ */
+Geolocation.prototype.getCurrentPosition = function(successCallback, errorCallback, options) {
+ if (navigator._geo.listeners.global) {
+ console.log("Geolocation Error: Still waiting for previous getCurrentPosition() request.");
+ try {
+ errorCallback(new PositionError(PositionError.TIMEOUT, "Geolocation Error: Still waiting for previous getCurrentPosition() request."));
+ } catch (e) {
+ }
+ return;
+ }
+ var maximumAge = 10000;
+ var enableHighAccuracy = false;
+ var timeout = 10000;
+ if (typeof options !== "undefined") {
+ if (typeof options.maximumAge !== "undefined") {
+ maximumAge = options.maximumAge;
+ }
+ if (typeof options.enableHighAccuracy !== "undefined") {
+ enableHighAccuracy = options.enableHighAccuracy;
+ }
+ if (typeof options.timeout !== "undefined") {
+ timeout = options.timeout;
+ }
+ }
+ navigator._geo.listeners.global = {"success" : successCallback, "fail" : errorCallback };
+ PhoneGap.exec(null, null, "Geolocation", "getCurrentLocation", [enableHighAccuracy, timeout, maximumAge]);
+};
+
+/**
+ * Asynchronously watches the geolocation for changes to geolocation. When a change occurs,
+ * the successCallback is called with the new location.
+ *
+ * @param {Function} successCallback The function to call each time the location data is available
+ * @param {Function} errorCallback The function to call when there is an error getting the location data. (OPTIONAL)
+ * @param {PositionOptions} options The options for getting the location data such as frequency. (OPTIONAL)
+ * @return String The watch id that must be passed to #clearWatch to stop watching.
+ */
+Geolocation.prototype.watchPosition = function(successCallback, errorCallback, options) {
+ var maximumAge = 10000;
+ var enableHighAccuracy = false;
+ var timeout = 10000;
+ if (typeof options !== "undefined") {
+ if (typeof options.frequency !== "undefined") {
+ maximumAge = options.frequency;
+ }
+ if (typeof options.maximumAge !== "undefined") {
+ maximumAge = options.maximumAge;
+ }
+ if (typeof options.enableHighAccuracy !== "undefined") {
+ enableHighAccuracy = options.enableHighAccuracy;
+ }
+ if (typeof options.timeout !== "undefined") {
+ timeout = options.timeout;
+ }
+ }
+ var id = PhoneGap.createUUID();
+ navigator._geo.listeners[id] = {"success" : successCallback, "fail" : errorCallback };
+ PhoneGap.exec(null, null, "Geolocation", "start", [id, enableHighAccuracy, timeout, maximumAge]);
+ return id;
+};
+
+/*
+ * Native callback when watch position has a new position.
+ * PRIVATE METHOD
+ *
+ * @param {String} id
+ * @param {Number} lat
+ * @param {Number} lng
+ * @param {Number} alt
+ * @param {Number} altacc
+ * @param {Number} head
+ * @param {Number} vel
+ * @param {Number} stamp
+ */
+Geolocation.prototype.success = function(id, lat, lng, alt, altacc, head, vel, stamp) {
+ var coords = new Coordinates(lat, lng, alt, altacc, head, vel);
+ var loc = new Position(coords, stamp);
+ try {
+ if (lat === "undefined" || lng === "undefined") {
+ navigator._geo.listeners[id].fail(new PositionError(PositionError.POSITION_UNAVAILABLE, "Lat/Lng are undefined."));
+ }
+ else {
+ navigator._geo.lastPosition = loc;
+ navigator._geo.listeners[id].success(loc);
+ }
+ }
+ catch (e) {
+ console.log("Geolocation Error: Error calling success callback function.");
+ }
+
+ if (id === "global") {
+ delete navigator._geo.listeners.global;
+ }
+};
+
+/**
+ * Native callback when watch position has an error.
+ * PRIVATE METHOD
+ *
+ * @param {String} id The ID of the watch
+ * @param {Number} code The error code
+ * @param {String} msg The error message
+ */
+Geolocation.prototype.fail = function(id, code, msg) {
+ try {
+ navigator._geo.listeners[id].fail(new PositionError(code, msg));
+ }
+ catch (e) {
+ console.log("Geolocation Error: Error calling error callback function.");
+ }
+};
+
+/**
+ * Clears the specified heading watch.
+ *
+ * @param {String} id The ID of the watch returned from #watchPosition
+ */
+Geolocation.prototype.clearWatch = function(id) {
+ PhoneGap.exec(null, null, "Geolocation", "stop", [id]);
+ delete navigator._geo.listeners[id];
+};
+
+/**
+ * Force the PhoneGap geolocation to be used instead of built-in.
+ */
+Geolocation.usingPhoneGap = false;
+Geolocation.usePhoneGap = function() {
+ if (Geolocation.usingPhoneGap) {
+ return;
+ }
+ Geolocation.usingPhoneGap = true;
+
+ // Set built-in geolocation methods to our own implementations
+ // (Cannot replace entire geolocation, but can replace individual methods)
+ navigator.geolocation.setLocation = navigator._geo.setLocation;
+ navigator.geolocation.getCurrentPosition = navigator._geo.getCurrentPosition;
+ navigator.geolocation.watchPosition = navigator._geo.watchPosition;
+ navigator.geolocation.clearWatch = navigator._geo.clearWatch;
+ navigator.geolocation.start = navigator._geo.start;
+ navigator.geolocation.stop = navigator._geo.stop;
+};
+
+PhoneGap.addConstructor(function() {
+ navigator._geo = new Geolocation();
+
+ // No native geolocation object for Android 1.x, so use PhoneGap geolocation
+ if (typeof navigator.geolocation === 'undefined') {
+ navigator.geolocation = navigator._geo;
+ Geolocation.usingPhoneGap = true;
+ }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010, IBM Corporation
+ */
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("media")) {
+PhoneGap.addResource("media");
+
+/**
+ * This class provides access to the device media, interfaces to both sound and video
+ *
+ * @constructor
+ * @param src The file name or url to play
+ * @param successCallback The callback to be called when the file is done playing or recording.
+ * successCallback() - OPTIONAL
+ * @param errorCallback The callback to be called if there is an error.
+ * errorCallback(int errorCode) - OPTIONAL
+ * @param statusCallback The callback to be called when media status has changed.
+ * statusCallback(int statusCode) - OPTIONAL
+ * @param positionCallback The callback to be called when media position has changed.
+ * positionCallback(long position) - OPTIONAL
+ */
+var Media = function(src, successCallback, errorCallback, statusCallback, positionCallback) {
+
+ // successCallback optional
+ if (successCallback && (typeof successCallback !== "function")) {
+ console.log("Media Error: successCallback is not a function");
+ return;
+ }
+
+ // errorCallback optional
+ if (errorCallback && (typeof errorCallback !== "function")) {
+ console.log("Media Error: errorCallback is not a function");
+ return;
+ }
+
+ // statusCallback optional
+ if (statusCallback && (typeof statusCallback !== "function")) {
+ console.log("Media Error: statusCallback is not a function");
+ return;
+ }
+
+ // statusCallback optional
+ if (positionCallback && (typeof positionCallback !== "function")) {
+ console.log("Media Error: positionCallback is not a function");
+ return;
+ }
+
+ this.id = PhoneGap.createUUID();
+ PhoneGap.mediaObjects[this.id] = this;
+ this.src = src;
+ this.successCallback = successCallback;
+ this.errorCallback = errorCallback;
+ this.statusCallback = statusCallback;
+ this.positionCallback = positionCallback;
+ this._duration = -1;
+ this._position = -1;
+};
+
+// Media messages
+Media.MEDIA_STATE = 1;
+Media.MEDIA_DURATION = 2;
+Media.MEDIA_POSITION = 3;
+Media.MEDIA_ERROR = 9;
+
+// Media states
+Media.MEDIA_NONE = 0;
+Media.MEDIA_STARTING = 1;
+Media.MEDIA_RUNNING = 2;
+Media.MEDIA_PAUSED = 3;
+Media.MEDIA_STOPPED = 4;
+Media.MEDIA_MSG = ["None", "Starting", "Running", "Paused", "Stopped"];
+
+// TODO: Will MediaError be used?
+/**
+ * This class contains information about any Media errors.
+ * @constructor
+ */
+var MediaError = function() {
+ this.code = null;
+ this.message = "";
+};
+
+MediaError.MEDIA_ERR_ABORTED = 1;
+MediaError.MEDIA_ERR_NETWORK = 2;
+MediaError.MEDIA_ERR_DECODE = 3;
+MediaError.MEDIA_ERR_NONE_SUPPORTED = 4;
+
+/**
+ * Start or resume playing audio file.
+ */
+Media.prototype.play = function() {
+ PhoneGap.exec(null, null, "Media", "startPlayingAudio", [this.id, this.src]);
+};
+
+/**
+ * Stop playing audio file.
+ */
+Media.prototype.stop = function() {
+ return PhoneGap.exec(null, null, "Media", "stopPlayingAudio", [this.id]);
+};
+
+/**
+ * Seek or jump to a new time in the track..
+ */
+Media.prototype.seekTo = function(milliseconds) {
+ PhoneGap.exec(null, null, "Media", "seekToAudio", [this.id, milliseconds]);
+};
+
+/**
+ * Pause playing audio file.
+ */
+Media.prototype.pause = function() {
+ PhoneGap.exec(null, null, "Media", "pausePlayingAudio", [this.id]);
+};
+
+/**
+ * Get duration of an audio file.
+ * The duration is only set for audio that is playing, paused or stopped.
+ *
+ * @return duration or -1 if not known.
+ */
+Media.prototype.getDuration = function() {
+ return this._duration;
+};
+
+/**
+ * Get position of audio.
+ */
+Media.prototype.getCurrentPosition = function(success, fail) {
+ PhoneGap.exec(success, fail, "Media", "getCurrentPositionAudio", [this.id]);
+};
+
+/**
+ * Start recording audio file.
+ */
+Media.prototype.startRecord = function() {
+ PhoneGap.exec(null, null, "Media", "startRecordingAudio", [this.id, this.src]);
+};
+
+/**
+ * Stop recording audio file.
+ */
+Media.prototype.stopRecord = function() {
+ PhoneGap.exec(null, null, "Media", "stopRecordingAudio", [this.id]);
+};
+
+/**
+ * Release the resources.
+ */
+Media.prototype.release = function() {
+ PhoneGap.exec(null, null, "Media", "release", [this.id]);
+};
+
+/**
+ * List of media objects.
+ * PRIVATE
+ */
+PhoneGap.mediaObjects = {};
+
+/**
+ * Object that receives native callbacks.
+ * PRIVATE
+ * @constructor
+ */
+PhoneGap.Media = function() {};
+
+/**
+ * Get the media object.
+ * PRIVATE
+ *
+ * @param id The media object id (string)
+ */
+PhoneGap.Media.getMediaObject = function(id) {
+ return PhoneGap.mediaObjects[id];
+};
+
+/**
+ * Audio has status update.
+ * PRIVATE
+ *
+ * @param id The media object id (string)
+ * @param status The status code (int)
+ * @param msg The status message (string)
+ */
+PhoneGap.Media.onStatus = function(id, msg, value) {
+ var media = PhoneGap.mediaObjects[id];
+ // If state update
+ if (msg === Media.MEDIA_STATE) {
+ if (value === Media.MEDIA_STOPPED) {
+ if (media.successCallback) {
+ media.successCallback();
+ }
+ }
+ if (media.statusCallback) {
+ media.statusCallback(value);
+ }
+ }
+ else if (msg === Media.MEDIA_DURATION) {
+ media._duration = value;
+ }
+ else if (msg === Media.MEDIA_ERROR) {
+ if (media.errorCallback) {
+ media.errorCallback(value);
+ }
+ }
+ else if (msg == Media.MEDIA_POSITION) {
+ media._position = value;
+ }
+};
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("network")) {
+PhoneGap.addResource("network");
+
+/**
+ * This class contains information about the current network Connection.
+ * @constructor
+ */
+var Connection = function() {
+ this.type = null;
+ this._firstRun = true;
+ this._timer = null;
+ this.timeout = 500;
+
+ var me = this;
+ this.getInfo(
+ function(type) {
+ // Need to send events if we are on or offline
+ if (type == "none") {
+ // set a timer if still offline at the end of timer send the offline event
+ me._timer = setTimeout(function(){
+ me.type = type;
+ PhoneGap.fireEvent('offline');
+ me._timer = null;
+ }, me.timeout);
+ } else {
+ // If there is a current offline event pending clear it
+ if (me._timer != null) {
+ clearTimeout(me._timer);
+ me._timer = null;
+ }
+ me.type = type;
+ PhoneGap.fireEvent('online');
+ }
+
+ // should only fire this once
+ if (me._firstRun) {
+ me._firstRun = false;
+ PhoneGap.onPhoneGapConnectionReady.fire();
+ }
+ },
+ function(e) {
+ console.log("Error initializing Network Connection: " + e);
+ });
+};
+
+Connection.UNKNOWN = "unknown";
+Connection.ETHERNET = "ethernet";
+Connection.WIFI = "wifi";
+Connection.CELL_2G = "2g";
+Connection.CELL_3G = "3g";
+Connection.CELL_4G = "4g";
+Connection.NONE = "none";
+
+/**
+ * Get connection info
+ *
+ * @param {Function} successCallback The function to call when the Connection data is available
+ * @param {Function} errorCallback The function to call when there is an error getting the Connection data. (OPTIONAL)
+ */
+Connection.prototype.getInfo = function(successCallback, errorCallback) {
+ // Get info
+ PhoneGap.exec(successCallback, errorCallback, "Network Status", "getConnectionInfo", []);
+};
+
+
+PhoneGap.addConstructor(function() {
+ if (typeof navigator.network === "undefined") {
+ navigator.network = new Object();
+ }
+ if (typeof navigator.network.connection === "undefined") {
+ navigator.network.connection = new Connection();
+ }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("notification")) {
+PhoneGap.addResource("notification");
+
+/**
+ * This class provides access to notifications on the device.
+ * @constructor
+ */
+var Notification = function() {
+};
+
+/**
+ * Open a native alert dialog, with a customizable title and button text.
+ *
+ * @param {String} message Message to print in the body of the alert
+ * @param {Function} completeCallback The callback that is called when user clicks on a button.
+ * @param {String} title Title of the alert dialog (default: Alert)
+ * @param {String} buttonLabel Label of the close button (default: OK)
+ */
+Notification.prototype.alert = function(message, completeCallback, title, buttonLabel) {
+ var _title = (title || "Alert");
+ var _buttonLabel = (buttonLabel || "OK");
+ PhoneGap.exec(completeCallback, null, "Notification", "alert", [message,_title,_buttonLabel]);
+};
+
+/**
+ * Open a native confirm dialog, with a customizable title and button text.
+ * The result that the user selects is returned to the result callback.
+ *
+ * @param {String} message Message to print in the body of the alert
+ * @param {Function} resultCallback The callback that is called when user clicks on a button.
+ * @param {String} title Title of the alert dialog (default: Confirm)
+ * @param {String} buttonLabels Comma separated list of the labels of the buttons (default: 'OK,Cancel')
+ */
+Notification.prototype.confirm = function(message, resultCallback, title, buttonLabels) {
+ var _title = (title || "Confirm");
+ var _buttonLabels = (buttonLabels || "OK,Cancel");
+ PhoneGap.exec(resultCallback, null, "Notification", "confirm", [message,_title,_buttonLabels]);
+};
+
+/**
+ * Start spinning the activity indicator on the statusbar
+ */
+Notification.prototype.activityStart = function() {
+ PhoneGap.exec(null, null, "Notification", "activityStart", ["Busy","Please wait..."]);
+};
+
+/**
+ * Stop spinning the activity indicator on the statusbar, if it's currently spinning
+ */
+Notification.prototype.activityStop = function() {
+ PhoneGap.exec(null, null, "Notification", "activityStop", []);
+};
+
+/**
+ * Display a progress dialog with progress bar that goes from 0 to 100.
+ *
+ * @param {String} title Title of the progress dialog.
+ * @param {String} message Message to display in the dialog.
+ */
+Notification.prototype.progressStart = function(title, message) {
+ PhoneGap.exec(null, null, "Notification", "progressStart", [title, message]);
+};
+
+/**
+ * Set the progress dialog value.
+ *
+ * @param {Number} value 0-100
+ */
+Notification.prototype.progressValue = function(value) {
+ PhoneGap.exec(null, null, "Notification", "progressValue", [value]);
+};
+
+/**
+ * Close the progress dialog.
+ */
+Notification.prototype.progressStop = function() {
+ PhoneGap.exec(null, null, "Notification", "progressStop", []);
+};
+
+/**
+ * Causes the device to blink a status LED.
+ *
+ * @param {Integer} count The number of blinks.
+ * @param {String} colour The colour of the light.
+ */
+Notification.prototype.blink = function(count, colour) {
+ // NOT IMPLEMENTED
+};
+
+/**
+ * Causes the device to vibrate.
+ *
+ * @param {Integer} mills The number of milliseconds to vibrate for.
+ */
+Notification.prototype.vibrate = function(mills) {
+ PhoneGap.exec(null, null, "Notification", "vibrate", [mills]);
+};
+
+/**
+ * Causes the device to beep.
+ * On Android, the default notification ringtone is played "count" times.
+ *
+ * @param {Integer} count The number of beeps.
+ */
+Notification.prototype.beep = function(count) {
+ PhoneGap.exec(null, null, "Notification", "beep", [count]);
+};
+
+PhoneGap.addConstructor(function() {
+ if (typeof navigator.notification === "undefined") {
+ navigator.notification = new Notification();
+ }
+});
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+if (!PhoneGap.hasResource("position")) {
+PhoneGap.addResource("position");
+
+/**
+ * This class contains position information.
+ * @param {Object} lat
+ * @param {Object} lng
+ * @param {Object} acc
+ * @param {Object} alt
+ * @param {Object} altacc
+ * @param {Object} head
+ * @param {Object} vel
+ * @constructor
+ */
+var Position = function(coords, timestamp) {
+ this.coords = coords;
+ this.timestamp = (timestamp !== 'undefined') ? timestamp : new Date().getTime();
+};
+
+/** @constructor */
+var Coordinates = function(lat, lng, alt, acc, head, vel, altacc) {
+ /**
+ * The latitude of the position.
+ */
+ this.latitude = lat;
+ /**
+ * The longitude of the position,
+ */
+ this.longitude = lng;
+ /**
+ * The accuracy of the position.
+ */
+ this.accuracy = acc;
+ /**
+ * The altitude of the position.
+ */
+ this.altitude = alt;
+ /**
+ * The direction the device is moving at the position.
+ */
+ this.heading = head;
+ /**
+ * The velocity with which the device is moving at the position.
+ */
+ this.speed = vel;
+ /**
+ * The altitude accuracy of the position.
+ */
+ this.altitudeAccuracy = (altacc !== 'undefined') ? altacc : null;
+};
+
+/**
+ * This class specifies the options for requesting position data.
+ * @constructor
+ */
+var PositionOptions = function() {
+ /**
+ * Specifies the desired position accuracy.
+ */
+ this.enableHighAccuracy = true;
+ /**
+ * The timeout after which if position data cannot be obtained the errorCallback
+ * is called.
+ */
+ this.timeout = 10000;
+};
+
+/**
+ * This class contains information about any GSP errors.
+ * @constructor
+ */
+var PositionError = function() {
+ this.code = null;
+ this.message = "";
+};
+
+PositionError.UNKNOWN_ERROR = 0;
+PositionError.PERMISSION_DENIED = 1;
+PositionError.POSITION_UNAVAILABLE = 2;
+PositionError.TIMEOUT = 3;
+}
+
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+/*
+ * This is purely for the Android 1.5/1.6 HTML 5 Storage
+ * I was hoping that Android 2.0 would deprecate this, but given the fact that
+ * most manufacturers ship with Android 1.5 and do not do OTA Updates, this is required
+ */
+
+if (!PhoneGap.hasResource("storage")) {
+PhoneGap.addResource("storage");
+
+/**
+ * SQL result set object
+ * PRIVATE METHOD
+ * @constructor
+ */
+var DroidDB_Rows = function() {
+ this.resultSet = []; // results array
+ this.length = 0; // number of rows
+};
+
+/**
+ * Get item from SQL result set
+ *
+ * @param row The row number to return
+ * @return The row object
+ */
+DroidDB_Rows.prototype.item = function(row) {
+ return this.resultSet[row];
+};
+
+/**
+ * SQL result set that is returned to user.
+ * PRIVATE METHOD
+ * @constructor
+ */
+var DroidDB_Result = function() {
+ this.rows = new DroidDB_Rows();
+};
+
+/**
+ * Storage object that is called by native code when performing queries.
+ * PRIVATE METHOD
+ * @constructor
+ */
+var DroidDB = function() {
+ this.queryQueue = {};
+};
+
+/**
+ * Callback from native code when query is complete.
+ * PRIVATE METHOD
+ *
+ * @param id Query id
+ */
+DroidDB.prototype.completeQuery = function(id, data) {
+ var query = this.queryQueue[id];
+ if (query) {
+ try {
+ delete this.queryQueue[id];
+
+ // Get transaction
+ var tx = query.tx;
+
+ // If transaction hasn't failed
+ // Note: We ignore all query results if previous query
+ // in the same transaction failed.
+ if (tx && tx.queryList[id]) {
+
+ // Save query results
+ var r = new DroidDB_Result();
+ r.rows.resultSet = data;
+ r.rows.length = data.length;
+ try {
+ if (typeof query.successCallback === 'function') {
+ query.successCallback(query.tx, r);
+ }
+ } catch (ex) {
+ console.log("executeSql error calling user success callback: "+ex);
+ }
+
+ tx.queryComplete(id);
+ }
+ } catch (e) {
+ console.log("executeSql error: "+e);
+ }
+ }
+};
+
+/**
+ * Callback from native code when query fails
+ * PRIVATE METHOD
+ *
+ * @param reason Error message
+ * @param id Query id
+ */
+DroidDB.prototype.fail = function(reason, id) {
+ var query = this.queryQueue[id];
+ if (query) {
+ try {
+ delete this.queryQueue[id];
+
+ // Get transaction
+ var tx = query.tx;
+
+ // If transaction hasn't failed
+ // Note: We ignore all query results if previous query
+ // in the same transaction failed.
+ if (tx && tx.queryList[id]) {
+ tx.queryList = {};
+
+ try {
+ if (typeof query.errorCallback === 'function') {
+ query.errorCallback(query.tx, reason);
+ }
+ } catch (ex) {
+ console.log("executeSql error calling user error callback: "+ex);
+ }
+
+ tx.queryFailed(id, reason);
+ }
+
+ } catch (e) {
+ console.log("executeSql error: "+e);
+ }
+ }
+};
+
+/**
+ * SQL query object
+ * PRIVATE METHOD
+ *
+ * @constructor
+ * @param tx The transaction object that this query belongs to
+ */
+var DroidDB_Query = function(tx) {
+
+ // Set the id of the query
+ this.id = PhoneGap.createUUID();
+
+ // Add this query to the queue
+ droiddb.queryQueue[this.id] = this;
+
+ // Init result
+ this.resultSet = [];
+
+ // Set transaction that this query belongs to
+ this.tx = tx;
+
+ // Add this query to transaction list
+ this.tx.queryList[this.id] = this;
+
+ // Callbacks
+ this.successCallback = null;
+ this.errorCallback = null;
+
+};
+
+/**
+ * Transaction object
+ * PRIVATE METHOD
+ * @constructor
+ */
+var DroidDB_Tx = function() {
+
+ // Set the id of the transaction
+ this.id = PhoneGap.createUUID();
+
+ // Callbacks
+ this.successCallback = null;
+ this.errorCallback = null;
+
+ // Query list
+ this.queryList = {};
+};
+
+/**
+ * Mark query in transaction as complete.
+ * If all queries are complete, call the user's transaction success callback.
+ *
+ * @param id Query id
+ */
+DroidDB_Tx.prototype.queryComplete = function(id) {
+ delete this.queryList[id];
+
+ // If no more outstanding queries, then fire transaction success
+ if (this.successCallback) {
+ var count = 0;
+ var i;
+ for (i in this.queryList) {
+ if (this.queryList.hasOwnProperty(i)) {
+ count++;
+ }
+ }
+ if (count === 0) {
+ try {
+ this.successCallback();
+ } catch(e) {
+ console.log("Transaction error calling user success callback: " + e);
+ }
+ }
+ }
+};
+
+/**
+ * Mark query in transaction as failed.
+ *
+ * @param id Query id
+ * @param reason Error message
+ */
+DroidDB_Tx.prototype.queryFailed = function(id, reason) {
+
+ // The sql queries in this transaction have already been run, since
+ // we really don't have a real transaction implemented in native code.
+ // However, the user callbacks for the remaining sql queries in transaction
+ // will not be called.
+ this.queryList = {};
+
+ if (this.errorCallback) {
+ try {
+ this.errorCallback(reason);
+ } catch(e) {
+ console.log("Transaction error calling user error callback: " + e);
+ }
+ }
+};
+
+/**
+ * Execute SQL statement
+ *
+ * @param sql SQL statement to execute
+ * @param params Statement parameters
+ * @param successCallback Success callback
+ * @param errorCallback Error callback
+ */
+DroidDB_Tx.prototype.executeSql = function(sql, params, successCallback, errorCallback) {
+
+ // Init params array
+ if (typeof params === 'undefined') {
+ params = [];
+ }
+
+ // Create query and add to queue
+ var query = new DroidDB_Query(this);
+ droiddb.queryQueue[query.id] = query;
+
+ // Save callbacks
+ query.successCallback = successCallback;
+ query.errorCallback = errorCallback;
+
+ // Call native code
+ PhoneGap.exec(null, null, "Storage", "executeSql", [sql, params, query.id]);
+};
+
+var DatabaseShell = function() {
+};
+
+/**
+ * Start a transaction.
+ * Does not support rollback in event of failure.
+ *
+ * @param process {Function} The transaction function
+ * @param successCallback {Function}
+ * @param errorCallback {Function}
+ */
+DatabaseShell.prototype.transaction = function(process, errorCallback, successCallback) {
+ var tx = new DroidDB_Tx();
+ tx.successCallback = successCallback;
+ tx.errorCallback = errorCallback;
+ try {
+ process(tx);
+ } catch (e) {
+ console.log("Transaction error: "+e);
+ if (tx.errorCallback) {
+ try {
+ tx.errorCallback(e);
+ } catch (ex) {
+ console.log("Transaction error calling user error callback: "+e);
+ }
+ }
+ }
+};
+
+/**
+ * Open database
+ *
+ * @param name Database name
+ * @param version Database version
+ * @param display_name Database display name
+ * @param size Database size in bytes
+ * @return Database object
+ */
+var DroidDB_openDatabase = function(name, version, display_name, size) {
+ PhoneGap.exec(null, null, "Storage", "openDatabase", [name, version, display_name, size]);
+ var db = new DatabaseShell();
+ return db;
+};
+
+/**
+ * For browsers with no localStorage we emulate it with SQLite. Follows the w3c api.
+ * TODO: Do similar for sessionStorage.
+ */
+
+/**
+ * @constructor
+ */
+var CupcakeLocalStorage = function() {
+ try {
+
+ this.db = openDatabase('localStorage', '1.0', 'localStorage', 2621440);
+ var storage = {};
+ this.length = 0;
+ function setLength (length) {
+ this.length = length;
+ localStorage.length = length;
+ }
+ this.db.transaction(
+ function (transaction) {
+ var i;
+ transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
+ transaction.executeSql('SELECT * FROM storage', [], function(tx, result) {
+ for(var i = 0; i < result.rows.length; i++) {
+ storage[result.rows.item(i)['id']] = result.rows.item(i)['body'];
+ }
+ setLength(result.rows.length);
+ PhoneGap.initializationComplete("cupcakeStorage");
+ });
+
+ },
+ function (err) {
+ alert(err.message);
+ }
+ );
+ this.setItem = function(key, val) {
+ if (typeof(storage[key])=='undefined') {
+ this.length++;
+ }
+ storage[key] = val;
+ this.db.transaction(
+ function (transaction) {
+ transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
+ transaction.executeSql('REPLACE INTO storage (id, body) values(?,?)', [key,val]);
+ }
+ );
+ };
+ this.getItem = function(key) {
+ return storage[key];
+ };
+ this.removeItem = function(key) {
+ delete storage[key];
+ this.length--;
+ this.db.transaction(
+ function (transaction) {
+ transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
+ transaction.executeSql('DELETE FROM storage where id=?', [key]);
+ }
+ );
+ };
+ this.clear = function() {
+ storage = {};
+ this.length = 0;
+ this.db.transaction(
+ function (transaction) {
+ transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
+ transaction.executeSql('DELETE FROM storage', []);
+ }
+ );
+ };
+ this.key = function(index) {
+ var i = 0;
+ for (var j in storage) {
+ if (i==index) {
+ return j;
+ } else {
+ i++;
+ }
+ }
+ return null;
+ };
+
+ } catch(e) {
+ alert("Database error "+e+".");
+ return;
+ }
+};
+
+PhoneGap.addConstructor(function() {
+ var setupDroidDB = function() {
+ navigator.openDatabase = window.openDatabase = DroidDB_openDatabase;
+ window.droiddb = new DroidDB();
+ }
+ if (typeof window.openDatabase === "undefined") {
+ setupDroidDB();
+ } else {
+ window.openDatabase_orig = window.openDatabase;
+ window.openDatabase = function(name, version, desc, size){
+ // Some versions of Android will throw a SECURITY_ERR so we need
+ // to catch the exception and seutp our own DB handling.
+ var db = null;
+ try {
+ db = window.openDatabase_orig(name, version, desc, size);
+ }
+ catch (ex) {
+ db = null;
+ }
+
+ if (db == null) {
+ setupDroidDB();
+ return DroidDB_openDatabase(name, version, desc, size);
+ }
+ else {
+ return db;
+ }
+ }
+ }
+
+ if (typeof window.localStorage === "undefined") {
+ navigator.localStorage = window.localStorage = new CupcakeLocalStorage();
+ PhoneGap.waitForInitialization("cupcakeStorage");
+ }
+});
+}
+
+
+++ /dev/null
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010-2011, IBM Corporation
- */
-
-if (typeof PhoneGap === "undefined") {
-
-/**
- * The order of events during page load and PhoneGap startup is as follows:
- *
- * onDOMContentLoaded Internal event that is received when the web page is loaded and parsed.
- * window.onload Body onload event.
- * onNativeReady Internal event that indicates the PhoneGap native side is ready.
- * onPhoneGapInit Internal event that kicks off creation of all PhoneGap JavaScript objects (runs constructors).
- * onPhoneGapReady Internal event fired when all PhoneGap JavaScript objects have been created
- * onPhoneGapInfoReady Internal event fired when device properties are available
- * onDeviceReady User event fired to indicate that PhoneGap is ready
- * onResume User event fired to indicate a start/resume lifecycle event
- * onPause User event fired to indicate a pause lifecycle event
- * onDestroy Internal event fired when app is being destroyed (User should use window.onunload event, not this one).
- *
- * The only PhoneGap events that user code should register for are:
- * onDeviceReady
- * onResume
- *
- * Listeners can be registered as:
- * document.addEventListener("deviceready", myDeviceReadyListener, false);
- * document.addEventListener("resume", myResumeListener, false);
- * document.addEventListener("pause", myPauseListener, false);
- */
-
-if (typeof(DeviceInfo) !== 'object') {
- DeviceInfo = {};
-}
-
-/**
- * This represents the PhoneGap API itself, and provides a global namespace for accessing
- * information about the state of PhoneGap.
- * @class
- */
-var PhoneGap = {
- queue: {
- ready: true,
- commands: [],
- timer: null
- }
-};
-
-/**
- * List of resource files loaded by PhoneGap.
- * This is used to ensure JS and other files are loaded only once.
- */
-PhoneGap.resources = {base: true};
-
-/**
- * Determine if resource has been loaded by PhoneGap
- *
- * @param name
- * @return
- */
-PhoneGap.hasResource = function(name) {
- return PhoneGap.resources[name];
-};
-
-/**
- * Add a resource to list of loaded resources by PhoneGap
- *
- * @param name
- */
-PhoneGap.addResource = function(name) {
- PhoneGap.resources[name] = true;
-};
-
-/**
- * Custom pub-sub channel that can have functions subscribed to it
- */
-PhoneGap.Channel = function (type)
-{
- this.type = type;
- this.handlers = {};
- this.guid = 0;
- this.fired = false;
- this.enabled = true;
-};
-
-/**
- * Subscribes the given function to the channel. Any time that
- * Channel.fire is called so too will the function.
- * Optionally specify an execution context for the function
- * and a guid that can be used to stop subscribing to the channel.
- * Returns the guid.
- */
-PhoneGap.Channel.prototype.subscribe = function(f, c, g) {
- // need a function to call
- if (f === null) { return; }
-
- var func = f;
- if (typeof c === "object" && f instanceof Function) { func = PhoneGap.close(c, f); }
-
- g = g || func.observer_guid || f.observer_guid || this.guid++;
- func.observer_guid = g;
- f.observer_guid = g;
- this.handlers[g] = func;
- return g;
-};
-
-/**
- * Like subscribe but the function is only called once and then it
- * auto-unsubscribes itself.
- */
-PhoneGap.Channel.prototype.subscribeOnce = function(f, c) {
- var g = null;
- var _this = this;
- var m = function() {
- f.apply(c || null, arguments);
- _this.unsubscribe(g);
- };
- if (this.fired) {
- if (typeof c === "object" && f instanceof Function) { f = PhoneGap.close(c, f); }
- f.apply(this, this.fireArgs);
- } else {
- g = this.subscribe(m);
- }
- return g;
-};
-
-/**
- * Unsubscribes the function with the given guid from the channel.
- */
-PhoneGap.Channel.prototype.unsubscribe = function(g) {
- if (g instanceof Function) { g = g.observer_guid; }
- this.handlers[g] = null;
- delete this.handlers[g];
-};
-
-/**
- * Calls all functions subscribed to this channel.
- */
-PhoneGap.Channel.prototype.fire = function(e) {
- if (this.enabled) {
- var fail = false;
- var item, handler, rv;
- for (item in this.handlers) {
- if (this.handlers.hasOwnProperty(item)) {
- handler = this.handlers[item];
- if (handler instanceof Function) {
- rv = (handler.apply(this, arguments) === false);
- fail = fail || rv;
- }
- }
- }
- this.fired = true;
- this.fireArgs = arguments;
- return !fail;
- }
- return true;
-};
-
-/**
- * Calls the provided function only after all of the channels specified
- * have been fired.
- */
-PhoneGap.Channel.join = function(h, c) {
- var i = c.length;
- var f = function() {
- if (!(--i)) {
- h();
- }
- };
- var len = i;
- var j;
- for (j=0; j<len; j++) {
- if (!c[j].fired) {
- c[j].subscribeOnce(f);
- }
- else {
- i--;
- }
- }
- if (!i) {
- h();
- }
-};
-
-/**
- * Boolean flag indicating if the PhoneGap API is available and initialized.
- */ // TODO: Remove this, it is unused here ... -jm
-PhoneGap.available = DeviceInfo.uuid !== undefined;
-
-/**
- * Add an initialization function to a queue that ensures it will run and initialize
- * application constructors only once PhoneGap has been initialized.
- * @param {Function} func The function callback you want run once PhoneGap is initialized
- */
-PhoneGap.addConstructor = function(func) {
- PhoneGap.onPhoneGapInit.subscribeOnce(function() {
- try {
- func();
- } catch(e) {
- console.log("Failed to run constructor: " + e);
- }
- });
-};
-
-/**
- * Plugins object
- */
-if (!window.plugins) {
- window.plugins = {};
-}
-
-/**
- * Adds a plugin object to window.plugins.
- * The plugin is accessed using window.plugins.<name>
- *
- * @param name The plugin name
- * @param obj The plugin object
- */
-PhoneGap.addPlugin = function(name, obj) {
- if (!window.plugins[name]) {
- window.plugins[name] = obj;
- }
- else {
- console.log("Error: Plugin "+name+" already exists.");
- }
-};
-
-/**
- * onDOMContentLoaded channel is fired when the DOM content
- * of the page has been parsed.
- */
-PhoneGap.onDOMContentLoaded = new PhoneGap.Channel('onDOMContentLoaded');
-
-/**
- * onNativeReady channel is fired when the PhoneGap native code
- * has been initialized.
- */
-PhoneGap.onNativeReady = new PhoneGap.Channel('onNativeReady');
-
-/**
- * onPhoneGapInit channel is fired when the web page is fully loaded and
- * PhoneGap native code has been initialized.
- */
-PhoneGap.onPhoneGapInit = new PhoneGap.Channel('onPhoneGapInit');
-
-/**
- * onPhoneGapReady channel is fired when the JS PhoneGap objects have been created.
- */
-PhoneGap.onPhoneGapReady = new PhoneGap.Channel('onPhoneGapReady');
-
-/**
- * onPhoneGapInfoReady channel is fired when the PhoneGap device properties
- * has been set.
- */
-PhoneGap.onPhoneGapInfoReady = new PhoneGap.Channel('onPhoneGapInfoReady');
-
-/**
- * onResume channel is fired when the PhoneGap native code
- * resumes.
- */
-PhoneGap.onResume = new PhoneGap.Channel('onResume');
-
-/**
- * onPause channel is fired when the PhoneGap native code
- * pauses.
- */
-PhoneGap.onPause = new PhoneGap.Channel('onPause');
-
-/**
- * onDestroy channel is fired when the PhoneGap native code
- * is destroyed. It is used internally.
- * Window.onunload should be used by the user.
- */
-PhoneGap.onDestroy = new PhoneGap.Channel('onDestroy');
-PhoneGap.onDestroy.subscribeOnce(function() {
- PhoneGap.shuttingDown = true;
-});
-PhoneGap.shuttingDown = false;
-
-// _nativeReady is global variable that the native side can set
-// to signify that the native code is ready. It is a global since
-// it may be called before any PhoneGap JS is ready.
-if (typeof _nativeReady !== 'undefined') { PhoneGap.onNativeReady.fire(); }
-
-/**
- * onDeviceReady is fired only after all PhoneGap objects are created and
- * the device properties are set.
- */
-PhoneGap.onDeviceReady = new PhoneGap.Channel('onDeviceReady');
-
-
-// Array of channels that must fire before "deviceready" is fired
-PhoneGap.deviceReadyChannelsArray = [ PhoneGap.onPhoneGapReady, PhoneGap.onPhoneGapInfoReady];
-
-// Hashtable of user defined channels that must also fire before "deviceready" is fired
-PhoneGap.deviceReadyChannelsMap = {};
-
-/**
- * Indicate that a feature needs to be initialized before it is ready to be used.
- * This holds up PhoneGap's "deviceready" event until the feature has been initialized
- * and PhoneGap.initComplete(feature) is called.
- *
- * @param feature {String} The unique feature name
- */
-PhoneGap.waitForInitialization = function(feature) {
- if (feature) {
- var channel = new PhoneGap.Channel(feature);
- PhoneGap.deviceReadyChannelsMap[feature] = channel;
- PhoneGap.deviceReadyChannelsArray.push(channel);
- }
-};
-
-/**
- * Indicate that initialization code has completed and the feature is ready to be used.
- *
- * @param feature {String} The unique feature name
- */
-PhoneGap.initializationComplete = function(feature) {
- var channel = PhoneGap.deviceReadyChannelsMap[feature];
- if (channel) {
- channel.fire();
- }
-};
-
-/**
- * Create all PhoneGap objects once page has fully loaded and native side is ready.
- */
-PhoneGap.Channel.join(function() {
-
- // Start listening for XHR callbacks
- setTimeout(function() {
- if (PhoneGap.UsePolling) {
- PhoneGap.JSCallbackPolling();
- }
- else {
- var polling = prompt("usePolling", "gap_callbackServer:");
- if (polling == "true") {
- PhoneGap.JSCallbackPolling();
- }
- else {
- PhoneGap.JSCallback();
- }
- }
- }, 1);
-
- // Run PhoneGap constructors
- PhoneGap.onPhoneGapInit.fire();
-
- // Fire event to notify that all objects are created
- PhoneGap.onPhoneGapReady.fire();
-
- // Fire onDeviceReady event once all constructors have run and PhoneGap info has been
- // received from native side, and any user defined initialization channels.
- PhoneGap.Channel.join(function() {
-
- // Turn off app loading dialog
- navigator.notification.activityStop();
-
- PhoneGap.onDeviceReady.fire();
-
- // Fire the onresume event, since first one happens before JavaScript is loaded
- PhoneGap.onResume.fire();
- }, PhoneGap.deviceReadyChannelsArray);
-
-}, [ PhoneGap.onDOMContentLoaded, PhoneGap.onNativeReady ]);
-
-// Listen for DOMContentLoaded and notify our channel subscribers
-document.addEventListener('DOMContentLoaded', function() {
- PhoneGap.onDOMContentLoaded.fire();
-}, false);
-
-// Intercept calls to document.addEventListener and watch for deviceready
-PhoneGap.m_document_addEventListener = document.addEventListener;
-
-document.addEventListener = function(evt, handler, capture) {
- var e = evt.toLowerCase();
- if (e === 'deviceready') {
- PhoneGap.onDeviceReady.subscribeOnce(handler);
- } else if (e === 'resume') {
- PhoneGap.onResume.subscribe(handler);
- if (PhoneGap.onDeviceReady.fired) {
- PhoneGap.onResume.fire();
- }
- } else if (e === 'pause') {
- PhoneGap.onPause.subscribe(handler);
- }
- else {
- // If subscribing to Android backbutton
- if (e === 'backbutton') {
- PhoneGap.exec(null, null, "App", "overrideBackbutton", [true]);
- }
-
- PhoneGap.m_document_addEventListener.call(document, evt, handler, capture);
- }
-};
-
-// Intercept calls to document.removeEventListener and watch for events that
-// are generated by PhoneGap native code
-PhoneGap.m_document_removeEventListener = document.removeEventListener;
-
-document.removeEventListener = function(evt, handler, capture) {
- var e = evt.toLowerCase();
-
- // If unsubscribing to Android backbutton
- if (e === 'backbutton') {
- PhoneGap.exec(null, null, "App", "overrideBackbutton", [false]);
- }
-
- PhoneGap.m_document_removeEventListener.call(document, evt, handler, capture);
-};
-
-/**
- * Method to fire event from native code
- */
-PhoneGap.fireEvent = function(type) {
- var e = document.createEvent('Events');
- e.initEvent(type);
- document.dispatchEvent(e);
-};
-
-/**
- * If JSON not included, use our own stringify. (Android 1.6)
- * The restriction on ours is that it must be an array of simple types.
- *
- * @param args
- * @return
- */
-PhoneGap.stringify = function(args) {
- if (typeof JSON === "undefined") {
- var s = "[";
- var i, type, start, name, nameType, a;
- for (i = 0; i < args.length; i++) {
- if (args[i] != null) {
- if (i > 0) {
- s = s + ",";
- }
- type = typeof args[i];
- if ((type === "number") || (type === "boolean")) {
- s = s + args[i];
- } else if (args[i] instanceof Array) {
- s = s + "[" + args[i] + "]";
- } else if (args[i] instanceof Object) {
- start = true;
- s = s + '{';
- for (name in args[i]) {
- if (args[i][name] !== null) {
- if (!start) {
- s = s + ',';
- }
- s = s + '"' + name + '":';
- nameType = typeof args[i][name];
- if ((nameType === "number") || (nameType === "boolean")) {
- s = s + args[i][name];
- } else if ((typeof args[i][name]) === 'function') {
- // don't copy the functions
- s = s + '""';
- } else if (args[i][name] instanceof Object) {
- s = s + this.stringify(args[i][name]);
- } else {
- s = s + '"' + args[i][name] + '"';
- }
- start = false;
- }
- }
- s = s + '}';
- } else {
- a = args[i].replace(/\\/g, '\\\\');
- a = encodeURIComponent(a).replace(/%([0-9A-F]{2})/g, "\\x$1");
- //a = a.replace(/\n/g, '\\n');
- //a = a.replace(/"/g, '\\"');
- s = s + '"' + a + '"';
- }
- }
- }
- s = s + "]";
- return s;
- } else {
- return JSON.stringify(args);
- }
-};
-
-/**
- * Does a deep clone of the object.
- *
- * @param obj
- * @return
- */
-PhoneGap.clone = function(obj) {
- var i, retVal;
- if(!obj) {
- return obj;
- }
-
- if(obj instanceof Array){
- retVal = [];
- for(i = 0; i < obj.length; ++i){
- retVal.push(PhoneGap.clone(obj[i]));
- }
- return retVal;
- }
-
- if (obj instanceof Function) {
- return obj;
- }
-
- if(!(obj instanceof Object)){
- return obj;
- }
-
- if (obj instanceof Date) {
- return obj;
- }
-
- retVal = {};
- for(i in obj){
- if(!(i in retVal) || retVal[i] !== obj[i]) {
- retVal[i] = PhoneGap.clone(obj[i]);
- }
- }
- return retVal;
-};
-
-PhoneGap.callbackId = 0;
-PhoneGap.callbacks = {};
-PhoneGap.callbackStatus = {
- NO_RESULT: 0,
- OK: 1,
- CLASS_NOT_FOUND_EXCEPTION: 2,
- ILLEGAL_ACCESS_EXCEPTION: 3,
- INSTANTIATION_EXCEPTION: 4,
- MALFORMED_URL_EXCEPTION: 5,
- IO_EXCEPTION: 6,
- INVALID_ACTION: 7,
- JSON_EXCEPTION: 8,
- ERROR: 9
- };
-
-
-/**
- * Execute a PhoneGap command. It is up to the native side whether this action is synch or async.
- * The native side can return:
- * Synchronous: PluginResult object as a JSON string
- * Asynchrounous: Empty string ""
- * If async, the native side will PhoneGap.callbackSuccess or PhoneGap.callbackError,
- * depending upon the result of the action.
- *
- * @param {Function} success The success callback
- * @param {Function} fail The fail callback
- * @param {String} service The name of the service to use
- * @param {String} action Action to be run in PhoneGap
- * @param {String[]} [args] Zero or more arguments to pass to the method
- */
-PhoneGap.exec = function(success, fail, service, action, args) {
- try {
- var callbackId = service + PhoneGap.callbackId++;
- if (success || fail) {
- PhoneGap.callbacks[callbackId] = {success:success, fail:fail};
- }
-
- var r = prompt(this.stringify(args), "gap:"+this.stringify([service, action, callbackId, true]));
-
- // If a result was returned
- if (r.length > 0) {
- eval("var v="+r+";");
-
- // If status is OK, then return value back to caller
- if (v.status === PhoneGap.callbackStatus.OK) {
-
- // If there is a success callback, then call it now with
- // returned value
- if (success) {
- try {
- success(v.message);
- } catch (e) {
- console.log("Error in success callback: " + callbackId + " = " + e);
- }
-
- // Clear callback if not expecting any more results
- if (!v.keepCallback) {
- delete PhoneGap.callbacks[callbackId];
- }
- }
- return v.message;
- }
-
- // If no result
- else if (v.status === PhoneGap.callbackStatus.NO_RESULT) {
-
- // Clear callback if not expecting any more results
- if (!v.keepCallback) {
- delete PhoneGap.callbacks[callbackId];
- }
- }
-
- // If error, then display error
- else {
- console.log("Error: Status="+v.status+" Message="+v.message);
-
- // If there is a fail callback, then call it now with returned value
- if (fail) {
- try {
- fail(v.message);
- }
- catch (e1) {
- console.log("Error in error callback: "+callbackId+" = "+e1);
- }
-
- // Clear callback if not expecting any more results
- if (!v.keepCallback) {
- delete PhoneGap.callbacks[callbackId];
- }
- }
- return null;
- }
- }
- } catch (e2) {
- console.log("Error: "+e2);
- }
-};
-
-/**
- * Called by native code when returning successful result from an action.
- *
- * @param callbackId
- * @param args
- */
-PhoneGap.callbackSuccess = function(callbackId, args) {
- if (PhoneGap.callbacks[callbackId]) {
-
- // If result is to be sent to callback
- if (args.status === PhoneGap.callbackStatus.OK) {
- try {
- if (PhoneGap.callbacks[callbackId].success) {
- PhoneGap.callbacks[callbackId].success(args.message);
- }
- }
- catch (e) {
- console.log("Error in success callback: "+callbackId+" = "+e);
- }
- }
-
- // Clear callback if not expecting any more results
- if (!args.keepCallback) {
- delete PhoneGap.callbacks[callbackId];
- }
- }
-};
-
-/**
- * Called by native code when returning error result from an action.
- *
- * @param callbackId
- * @param args
- */
-PhoneGap.callbackError = function(callbackId, args) {
- if (PhoneGap.callbacks[callbackId]) {
- try {
- if (PhoneGap.callbacks[callbackId].fail) {
- PhoneGap.callbacks[callbackId].fail(args.message);
- }
- }
- catch (e) {
- console.log("Error in error callback: "+callbackId+" = "+e);
- }
-
- // Clear callback if not expecting any more results
- if (!args.keepCallback) {
- delete PhoneGap.callbacks[callbackId];
- }
- }
-};
-
-
-/**
- * Internal function used to dispatch the request to PhoneGap. It processes the
- * command queue and executes the next command on the list. If one of the
- * arguments is a JavaScript object, it will be passed on the QueryString of the
- * url, which will be turned into a dictionary on the other end.
- * @private
- */
-// TODO: Is this used?
-PhoneGap.run_command = function() {
- if (!PhoneGap.available || !PhoneGap.queue.ready) {
- return;
- }
- PhoneGap.queue.ready = false;
-
- var args = PhoneGap.queue.commands.shift();
- if (PhoneGap.queue.commands.length === 0) {
- clearInterval(PhoneGap.queue.timer);
- PhoneGap.queue.timer = null;
- }
-
- var uri = [];
- var dict = null;
- var i;
- for (i = 1; i < args.length; i++) {
- var arg = args[i];
- if (arg === undefined || arg === null) {
- arg = '';
- }
- if (typeof(arg) === 'object') {
- dict = arg;
- } else {
- uri.push(encodeURIComponent(arg));
- }
- }
- var url = "gap://" + args[0] + "/" + uri.join("/");
- if (dict !== null) {
- var name;
- var query_args = [];
- for (name in dict) {
- if (dict.hasOwnProperty(name) && (typeof (name) === 'string')) {
- query_args.push(encodeURIComponent(name) + "=" + encodeURIComponent(dict[name]));
- }
- }
- if (query_args.length > 0) {
- url += "?" + query_args.join("&");
- }
- }
- document.location = url;
-
-};
-
-PhoneGap.JSCallbackPort = null;
-PhoneGap.JSCallbackToken = null;
-
-/**
- * This is only for Android.
- *
- * Internal function that uses XHR to call into PhoneGap Java code and retrieve
- * any JavaScript code that needs to be run. This is used for callbacks from
- * Java to JavaScript.
- */
-PhoneGap.JSCallback = function() {
-
- // Exit if shutting down app
- if (PhoneGap.shuttingDown) {
- return;
- }
-
- // If polling flag was changed, start using polling from now on
- if (PhoneGap.UsePolling) {
- PhoneGap.JSCallbackPolling();
- return;
- }
-
- var xmlhttp = new XMLHttpRequest();
-
- // Callback function when XMLHttpRequest is ready
- xmlhttp.onreadystatechange=function(){
- if(xmlhttp.readyState === 4){
-
- // Exit if shutting down app
- if (PhoneGap.shuttingDown) {
- return;
- }
-
- // If callback has JavaScript statement to execute
- if (xmlhttp.status === 200) {
-
- var msg = xmlhttp.responseText;
- setTimeout(function() {
- try {
- var t = eval(msg);
- }
- catch (e) {
- // If we're getting an error here, seeing the message will help in debugging
- console.log("JSCallback: Message from Server: " + msg);
- console.log("JSCallback Error: "+e);
- }
- }, 1);
- setTimeout(PhoneGap.JSCallback, 1);
- }
-
- // If callback ping (used to keep XHR request from timing out)
- else if (xmlhttp.status === 404) {
- setTimeout(PhoneGap.JSCallback, 10);
- }
-
- // If security error
- else if (xmlhttp.status === 403) {
- console.log("JSCallback Error: Invalid token. Stopping callbacks.");
- }
-
- // If server is stopping
- else if (xmlhttp.status === 503) {
- console.log("JSCallback Error: Service unavailable. Stopping callbacks.");
- }
-
- // If request wasn't GET
- else if (xmlhttp.status === 400) {
- console.log("JSCallback Error: Bad request. Stopping callbacks.");
- }
-
- // If error, restart callback server
- else {
- console.log("JSCallback Error: Request failed.");
- prompt("restartServer", "gap_callbackServer:");
- PhoneGap.JSCallbackPort = null;
- PhoneGap.JSCallbackToken = null;
- setTimeout(PhoneGap.JSCallback, 100);
- }
- }
- };
-
- if (PhoneGap.JSCallbackPort === null) {
- PhoneGap.JSCallbackPort = prompt("getPort", "gap_callbackServer:");
- }
- if (PhoneGap.JSCallbackToken === null) {
- PhoneGap.JSCallbackToken = prompt("getToken", "gap_callbackServer:");
- }
- xmlhttp.open("GET", "http://127.0.0.1:"+PhoneGap.JSCallbackPort+"/"+PhoneGap.JSCallbackToken , true);
- xmlhttp.send();
-};
-
-/**
- * The polling period to use with JSCallbackPolling.
- * This can be changed by the application. The default is 50ms.
- */
-PhoneGap.JSCallbackPollingPeriod = 50;
-
-/**
- * Flag that can be set by the user to force polling to be used or force XHR to be used.
- */
-PhoneGap.UsePolling = false; // T=use polling, F=use XHR
-
-/**
- * This is only for Android.
- *
- * Internal function that uses polling to call into PhoneGap Java code and retrieve
- * any JavaScript code that needs to be run. This is used for callbacks from
- * Java to JavaScript.
- */
-PhoneGap.JSCallbackPolling = function() {
-
- // Exit if shutting down app
- if (PhoneGap.shuttingDown) {
- return;
- }
-
- // If polling flag was changed, stop using polling from now on
- if (!PhoneGap.UsePolling) {
- PhoneGap.JSCallback();
- return;
- }
-
- var msg = prompt("", "gap_poll:");
- if (msg) {
- setTimeout(function() {
- try {
- var t = eval(""+msg);
- }
- catch (e) {
- console.log("JSCallbackPolling: Message from Server: " + msg);
- console.log("JSCallbackPolling Error: "+e);
- }
- }, 1);
- setTimeout(PhoneGap.JSCallbackPolling, 1);
- }
- else {
- setTimeout(PhoneGap.JSCallbackPolling, PhoneGap.JSCallbackPollingPeriod);
- }
-};
-
-/**
- * Create a UUID
- *
- * @return
- */
-PhoneGap.createUUID = function() {
- return PhoneGap.UUIDcreatePart(4) + '-' +
- PhoneGap.UUIDcreatePart(2) + '-' +
- PhoneGap.UUIDcreatePart(2) + '-' +
- PhoneGap.UUIDcreatePart(2) + '-' +
- PhoneGap.UUIDcreatePart(6);
-};
-
-PhoneGap.UUIDcreatePart = function(length) {
- var uuidpart = "";
- var i, uuidchar;
- for (i=0; i<length; i++) {
- uuidchar = parseInt((Math.random() * 256),0).toString(16);
- if (uuidchar.length === 1) {
- uuidchar = "0" + uuidchar;
- }
- uuidpart += uuidchar;
- }
- return uuidpart;
-};
-
-PhoneGap.close = function(context, func, params) {
- if (typeof params === 'undefined') {
- return function() {
- return func.apply(context, arguments);
- };
- } else {
- return function() {
- return func.apply(context, params);
- };
- }
-};
-
-/**
- * Load a JavaScript file after page has loaded.
- *
- * @param {String} jsfile The url of the JavaScript file to load.
- * @param {Function} successCallback The callback to call when the file has been loaded.
- */
-PhoneGap.includeJavascript = function(jsfile, successCallback) {
- var id = document.getElementsByTagName("head")[0];
- var el = document.createElement('script');
- el.type = 'text/javascript';
- if (typeof successCallback === 'function') {
- el.onload = successCallback;
- }
- el.src = jsfile;
- id.appendChild(el);
-};
-
-
-/**
- * This class is provided to bridge the gap between the way plugins were setup in 0.9.3 and 0.9.4.
- * Users should be calling navigator.add.addService() instead of PluginManager.addService().
- * @class
- * @deprecated
- */
-var PluginManager = {
- addService: function(serviceType, className) {
- navigator.app.addService(serviceType, className);
- }
-};
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("accelerometer")) {
-PhoneGap.addResource("accelerometer");
-
-Acceleration = function(x, y, z) {
- this.x = x;
- this.y = y;
- this.z = z;
- this.timestamp = new Date().getTime();
-}
-
-/**
- * This class provides access to device accelerometer data.
- * @constructor
- */
-Accelerometer = function() {
-
- /**
- * The last known acceleration. type=Acceleration()
- */
- this.lastAcceleration = null;
-
- /**
- * List of accelerometer watch timers
- */
- this.timers = {};
-}
-
-Accelerometer.ERROR_MSG = ["Not running", "Starting", "", "Failed to start"];
-
-/**
- * Asynchronously aquires the current acceleration.
- *
- * @param {Function} successCallback The function to call when the acceleration data is available
- * @param {Function} errorCallback The function to call when there is an error getting the acceleration data. (OPTIONAL)
- * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL)
- */
-Accelerometer.prototype.getCurrentAcceleration = function(successCallback, errorCallback, options) {
-
- // successCallback required
- if (typeof successCallback !== "function") {
- console.log("Accelerometer Error: successCallback is not a function");
- return;
- }
-
- // errorCallback optional
- if (errorCallback && (typeof errorCallback !== "function")) {
- console.log("Accelerometer Error: errorCallback is not a function");
- return;
- }
-
- // Get acceleration
- PhoneGap.exec(successCallback, errorCallback, "Accelerometer", "getAcceleration", []);
-};
-
-/**
- * Asynchronously aquires the acceleration repeatedly at a given interval.
- *
- * @param {Function} successCallback The function to call each time the acceleration data is available
- * @param {Function} errorCallback The function to call when there is an error getting the acceleration data. (OPTIONAL)
- * @param {AccelerationOptions} options The options for getting the accelerometer data such as timeout. (OPTIONAL)
- * @return String The watch id that must be passed to #clearWatch to stop watching.
- */
-Accelerometer.prototype.watchAcceleration = function(successCallback, errorCallback, options) {
-
- // Default interval (10 sec)
- var frequency = (options !== undefined)? options.frequency : 10000;
-
- // successCallback required
- if (typeof successCallback !== "function") {
- console.log("Accelerometer Error: successCallback is not a function");
- return;
- }
-
- // errorCallback optional
- if (errorCallback && (typeof errorCallback !== "function")) {
- console.log("Accelerometer Error: errorCallback is not a function");
- return;
- }
-
- // Make sure accelerometer timeout > frequency + 10 sec
- PhoneGap.exec(
- function(timeout) {
- if (timeout < (frequency + 10000)) {
- PhoneGap.exec(null, null, "Accelerometer", "setTimeout", [frequency + 10000]);
- }
- },
- function(e) { }, "Accelerometer", "getTimeout", []);
-
- // Start watch timer
- var id = PhoneGap.createUUID();
- navigator.accelerometer.timers[id] = setInterval(function() {
- PhoneGap.exec(successCallback, errorCallback, "Accelerometer", "getAcceleration", []);
- }, (frequency ? frequency : 1));
-
- return id;
-};
-
-/**
- * Clears the specified accelerometer watch.
- *
- * @param {String} id The id of the watch returned from #watchAcceleration.
- */
-Accelerometer.prototype.clearWatch = function(id) {
-
- // Stop javascript timer & remove from timer list
- if (id && navigator.accelerometer.timers[id] !== undefined) {
- clearInterval(navigator.accelerometer.timers[id]);
- delete navigator.accelerometer.timers[id];
- }
-};
-
-PhoneGap.addConstructor(function() {
- if (typeof navigator.accelerometer === "undefined") {
- navigator.accelerometer = new Accelerometer();
- }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010-2011, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("app")) {
-PhoneGap.addResource("app");
-
-/**
- * Constructor
- */
-App = function() {};
-
-/**
- * Clear the resource cache.
- */
-App.prototype.clearCache = function() {
- PhoneGap.exec(null, null, "App", "clearCache", []);
-};
-
-/**
- * Load the url into the webview.
- *
- * @param url The URL to load
- * @param props Properties that can be passed in to the activity:
- * wait: int => wait msec before loading URL
- * loadingDialog: "Title,Message" => display a native loading dialog
- * hideLoadingDialogOnPage: boolean => hide loadingDialog when page loaded instead of when deviceready event occurs.
- * loadInWebView: boolean => cause all links on web page to be loaded into existing web view, instead of being loaded into new browser.
- * loadUrlTimeoutValue: int => time in msec to wait before triggering a timeout error
- * errorUrl: URL => URL to load if there's an error loading specified URL with loadUrl(). Should be a local URL such as file:///android_asset/www/error.html");
- * keepRunning: boolean => enable app to keep running in background
- *
- * Example:
- * App app = new App();
- * app.loadUrl("http://server/myapp/index.html", {wait:2000, loadingDialog:"Wait,Loading App", loadUrlTimeoutValue: 60000});
- */
-App.prototype.loadUrl = function(url, props) {
- PhoneGap.exec(null, null, "App", "loadUrl", [url, props]);
-};
-
-/**
- * Cancel loadUrl that is waiting to be loaded.
- */
-App.prototype.cancelLoadUrl = function() {
- PhoneGap.exec(null, null, "App", "cancelLoadUrl", []);
-};
-
-/**
- * Clear web history in this web view.
- * Instead of BACK button loading the previous web page, it will exit the app.
- */
-App.prototype.clearHistory = function() {
- PhoneGap.exec(null, null, "App", "clearHistory", []);
-};
-
-/**
- * Add a class that implements a service.
- *
- * @param serviceType
- * @param className
- */
-App.prototype.addService = function(serviceType, className) {
- PhoneGap.exec(null, null, "App", "addService", [serviceType, className]);
-};
-
-/**
- * Override the default behavior of the Android back button.
- * If overridden, when the back button is pressed, the "backKeyDown" JavaScript event will be fired.
- *
- * Note: The user should not have to call this method. Instead, when the user
- * registers for the "backbutton" event, this is automatically done.
- *
- * @param override T=override, F=cancel override
- */
-App.prototype.overrideBackbutton = function(override) {
- PhoneGap.exec(null, null, "App", "overrideBackbutton", [override]);
-};
-
-/**
- * Exit and terminate the application.
- */
-App.prototype.exitApp = function() {
- return PhoneGap.exec(null, null, "App", "exitApp", []);
-};
-
-PhoneGap.addConstructor(function() {
- navigator.app = window.app = new App();
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("camera")) {
-PhoneGap.addResource("camera");
-
-/**
- * This class provides access to the device camera.
- *
- * @constructor
- */
-Camera = function() {
- this.successCallback = null;
- this.errorCallback = null;
- this.options = null;
-};
-
-/**
- * Format of image that returned from getPicture.
- *
- * Example: navigator.camera.getPicture(success, fail,
- * { quality: 80,
- * destinationType: Camera.DestinationType.DATA_URL,
- * sourceType: Camera.PictureSourceType.PHOTOLIBRARY})
- */
-Camera.DestinationType = {
- DATA_URL: 0, // Return base64 encoded string
- FILE_URI: 1 // Return file uri (content://media/external/images/media/2 for Android)
-};
-Camera.prototype.DestinationType = Camera.DestinationType;
-
-/**
- * Source to getPicture from.
- *
- * Example: navigator.camera.getPicture(success, fail,
- * { quality: 80,
- * destinationType: Camera.DestinationType.DATA_URL,
- * sourceType: Camera.PictureSourceType.PHOTOLIBRARY})
- */
-Camera.PictureSourceType = {
- PHOTOLIBRARY : 0, // Choose image from picture library (same as SAVEDPHOTOALBUM for Android)
- CAMERA : 1, // Take picture from camera
- SAVEDPHOTOALBUM : 2 // Choose image from picture library (same as PHOTOLIBRARY for Android)
-};
-Camera.prototype.PictureSourceType = Camera.PictureSourceType;
-
-/**
- * Gets a picture from source defined by "options.sourceType", and returns the
- * image as defined by the "options.destinationType" option.
-
- * The defaults are sourceType=CAMERA and destinationType=DATA_URL.
- *
- * @param {Function} successCallback
- * @param {Function} errorCallback
- * @param {Object} options
- */
-Camera.prototype.getPicture = function(successCallback, errorCallback, options) {
-
- // successCallback required
- if (typeof successCallback !== "function") {
- console.log("Camera Error: successCallback is not a function");
- return;
- }
-
- // errorCallback optional
- if (errorCallback && (typeof errorCallback !== "function")) {
- console.log("Camera Error: errorCallback is not a function");
- return;
- }
-
- this.options = options;
- var quality = 80;
- if (options.quality) {
- quality = this.options.quality;
- }
- var destinationType = Camera.DestinationType.DATA_URL;
- if (this.options.destinationType) {
- destinationType = this.options.destinationType;
- }
- var sourceType = Camera.PictureSourceType.CAMERA;
- if (typeof this.options.sourceType === "number") {
- sourceType = this.options.sourceType;
- }
- PhoneGap.exec(successCallback, errorCallback, "Camera", "takePicture", [quality, destinationType, sourceType]);
-};
-
-PhoneGap.addConstructor(function() {
- if (typeof navigator.camera === "undefined") {
- navigator.camera = new Camera();
- }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010-2011, IBM Corporation
- */
-
-/**
- * The CaptureError interface encapsulates all errors in the Capture API.
- */
-function CaptureError() {
- this.code = null;
-};
-
-// Capture error codes
-CaptureError.CAPTURE_INTERNAL_ERR = 0;
-CaptureError.CAPTURE_APPLICATION_BUSY = 1;
-CaptureError.CAPTURE_INVALID_ARGUMENT = 2;
-CaptureError.CAPTURE_NO_MEDIA_FILES = 3;
-CaptureError.CAPTURE_NOT_SUPPORTED = 20;
-
-/**
- * The Capture interface exposes an interface to the camera and microphone of the hosting device.
- */
-function Capture() {
- this.supportedAudioFormats = [];
- this.supportedImageFormats = [];
- this.supportedVideoFormats = [];
-};
-
-/**
- * Launch audio recorder application for recording audio clip(s).
- *
- * @param {Function} successCB
- * @param {Function} errorCB
- * @param {CaptureAudioOptions} options
- */
-Capture.prototype.captureAudio = function(successCallback, errorCallback, options) {
- PhoneGap.exec(successCallback, errorCallback, "Capture", "captureAudio", [options]);
-};
-
-/**
- * Launch camera application for taking image(s).
- *
- * @param {Function} successCB
- * @param {Function} errorCB
- * @param {CaptureImageOptions} options
- */
-Capture.prototype.captureImage = function(successCallback, errorCallback, options) {
- PhoneGap.exec(successCallback, errorCallback, "Capture", "captureImage", [options]);
-};
-
-/**
- * Launch camera application for taking image(s).
- *
- * @param {Function} successCB
- * @param {Function} errorCB
- * @param {CaptureImageOptions} options
- */
-Capture.prototype._castMediaFile = function(pluginResult) {
- var mediaFiles = [];
- var i;
- for (i=0; i<pluginResult.message.length; i++) {
- var mediaFile = new MediaFile();
- mediaFile.name = pluginResult.message[i].name;
- mediaFile.fullPath = pluginResult.message[i].fullPath;
- mediaFile.type = pluginResult.message[i].type;
- mediaFile.lastModifiedDate = pluginResult.message[i].lastModifiedDate;
- mediaFile.size = pluginResult.message[i].size;
- mediaFiles.push(mediaFile);
- }
- pluginResult.message = mediaFiles;
- return pluginResult;
-};
-
-/**
- * Launch device camera application for recording video(s).
- *
- * @param {Function} successCB
- * @param {Function} errorCB
- * @param {CaptureVideoOptions} options
- */
-Capture.prototype.captureVideo = function(successCallback, errorCallback, options) {
- PhoneGap.exec(successCallback, errorCallback, "Capture", "captureVideo", [options]);
-};
-
-/**
- * Encapsulates a set of parameters that the capture device supports.
- */
-function ConfigurationData() {
- // The ASCII-encoded string in lower case representing the media type.
- this.type;
- // The height attribute represents height of the image or video in pixels.
- // In the case of a sound clip this attribute has value 0.
- this.height = 0;
- // The width attribute represents width of the image or video in pixels.
- // In the case of a sound clip this attribute has value 0
- this.width = 0;
-};
-
-/**
- * Encapsulates all image capture operation configuration options.
- */
-function CaptureImageOptions() {
- // Upper limit of images user can take. Value must be equal or greater than 1.
- this.limit = 1;
- // The selected image mode. Must match with one of the elements in supportedImageModes array.
- this.mode;
-};
-
-/**
- * Encapsulates all video capture operation configuration options.
- */
-function CaptureVideoOptions() {
- // Upper limit of videos user can record. Value must be equal or greater than 1.
- this.limit;
- // Maximum duration of a single video clip in seconds.
- this.duration;
- // The selected video mode. Must match with one of the elements in supportedVideoModes array.
- this.mode;
-};
-
-/**
- * Encapsulates all audio capture operation configuration options.
- */
-function CaptureAudioOptions() {
- // Upper limit of sound clips user can record. Value must be equal or greater than 1.
- this.limit;
- // Maximum duration of a single sound clip in seconds.
- this.duration;
- // The selected audio mode. Must match with one of the elements in supportedAudioModes array.
- this.mode;
-};
-
-/**
- * Represents a single file.
- *
- * name {DOMString} name of the file, without path information
- * fullPath {DOMString} the full path of the file, including the name
- * type {DOMString} mime type
- * lastModifiedDate {Date} last modified date
- * size {Number} size of the file in bytes
- */
-function MediaFile(name, fullPath, type, lastModifiedDate, size) {
- this.name = name || null;
- this.fullPath = fullPath || null;
- this.type = type || null;
- this.lastModifiedDate = lastModifiedDate || null;
- this.size = size || 0;
-}
-
-/**
- * Launch device camera application for recording video(s).
- *
- * @param {Function} successCB
- * @param {Function} errorCB
- */
-MediaFile.prototype.getFormatData = function(successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "Capture", "getFormatData", [this.fullPath, this.type]);
-};
-
-/**
- * MediaFileData encapsulates format information of a media file.
- *
- * @param {DOMString} codecs
- * @param {long} bitrate
- * @param {long} height
- * @param {long} width
- * @param {float} duration
- */
-function MediaFileData(codecs, bitrate, height, width, duration) {
- this.codecs = codecs || null;
- this.bitrate = bitrate || 0;
- this.height = height || 0;
- this.width = width || 0;
- this.duration = duration || 0;
-}
-
-PhoneGap.addConstructor(function() {
- if (typeof navigator.device === "undefined") {
- navigator.device = window.device = new Device();
- }
- if (typeof navigator.device.capture === "undefined") {
- navigator.device.capture = window.device.capture = new Capture();
- }
-});
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("compass")) {
-PhoneGap.addResource("compass");
-
-/**
- * This class provides access to device Compass data.
- * @constructor
- */
-Compass = function() {
- /**
- * The last known Compass position.
- */
- this.lastHeading = null;
-
- /**
- * List of compass watch timers
- */
- this.timers = {};
-};
-
-Compass.ERROR_MSG = ["Not running", "Starting", "", "Failed to start"];
-
-/**
- * Asynchronously aquires the current heading.
- *
- * @param {Function} successCallback The function to call when the heading data is available
- * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL)
- * @param {PositionOptions} options The options for getting the heading data such as timeout. (OPTIONAL)
- */
-Compass.prototype.getCurrentHeading = function(successCallback, errorCallback, options) {
-
- // successCallback required
- if (typeof successCallback !== "function") {
- console.log("Compass Error: successCallback is not a function");
- return;
- }
-
- // errorCallback optional
- if (errorCallback && (typeof errorCallback !== "function")) {
- console.log("Compass Error: errorCallback is not a function");
- return;
- }
-
- // Get heading
- PhoneGap.exec(successCallback, errorCallback, "Compass", "getHeading", []);
-};
-
-/**
- * Asynchronously aquires the heading repeatedly at a given interval.
- *
- * @param {Function} successCallback The function to call each time the heading data is available
- * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL)
- * @param {HeadingOptions} options The options for getting the heading data such as timeout and the frequency of the watch. (OPTIONAL)
- * @return String The watch id that must be passed to #clearWatch to stop watching.
- */
-Compass.prototype.watchHeading= function(successCallback, errorCallback, options) {
-
- // Default interval (100 msec)
- var frequency = (options !== undefined) ? options.frequency : 100;
-
- // successCallback required
- if (typeof successCallback !== "function") {
- console.log("Compass Error: successCallback is not a function");
- return;
- }
-
- // errorCallback optional
- if (errorCallback && (typeof errorCallback !== "function")) {
- console.log("Compass Error: errorCallback is not a function");
- return;
- }
-
- // Make sure compass timeout > frequency + 10 sec
- PhoneGap.exec(
- function(timeout) {
- if (timeout < (frequency + 10000)) {
- PhoneGap.exec(null, null, "Compass", "setTimeout", [frequency + 10000]);
- }
- },
- function(e) { }, "Compass", "getTimeout", []);
-
- // Start watch timer to get headings
- var id = PhoneGap.createUUID();
- navigator.compass.timers[id] = setInterval(
- function() {
- PhoneGap.exec(successCallback, errorCallback, "Compass", "getHeading", []);
- }, (frequency ? frequency : 1));
-
- return id;
-};
-
-
-/**
- * Clears the specified heading watch.
- *
- * @param {String} id The ID of the watch returned from #watchHeading.
- */
-Compass.prototype.clearWatch = function(id) {
-
- // Stop javascript timer & remove from timer list
- if (id && navigator.compass.timers[id]) {
- clearInterval(navigator.compass.timers[id]);
- delete navigator.compass.timers[id];
- }
-};
-
-PhoneGap.addConstructor(function() {
- if (typeof navigator.compass === "undefined") {
- navigator.compass = new Compass();
- }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("contact")) {
-PhoneGap.addResource("contact");
-
-/**
-* Contains information about a single contact.
-* @param {DOMString} id unique identifier
-* @param {DOMString} displayName
-* @param {ContactName} name
-* @param {DOMString} nickname
-* @param {ContactField[]} phoneNumbers array of phone numbers
-* @param {ContactField[]} emails array of email addresses
-* @param {ContactAddress[]} addresses array of addresses
-* @param {ContactField[]} ims instant messaging user ids
-* @param {ContactOrganization[]} organizations
-* @param {DOMString} revision date contact was last updated
-* @param {DOMString} birthday contact's birthday
-* @param {DOMString} gender contact's gender
-* @param {DOMString} note user notes about contact
-* @param {ContactField[]} photos
-* @param {ContactField[]} categories
-* @param {ContactField[]} urls contact's web sites
-* @param {DOMString} timezone the contacts time zone
-*/
-var Contact = function (id, displayName, name, nickname, phoneNumbers, emails, addresses,
- ims, organizations, revision, birthday, gender, note, photos, categories, urls, timezone) {
- this.id = id || null;
- this.rawId = null;
- this.displayName = displayName || null;
- this.name = name || null; // ContactName
- this.nickname = nickname || null;
- this.phoneNumbers = phoneNumbers || null; // ContactField[]
- this.emails = emails || null; // ContactField[]
- this.addresses = addresses || null; // ContactAddress[]
- this.ims = ims || null; // ContactField[]
- this.organizations = organizations || null; // ContactOrganization[]
- this.revision = revision || null;
- this.birthday = birthday || null;
- this.gender = gender || null;
- this.note = note || null;
- this.photos = photos || null; // ContactField[]
- this.categories = categories || null; // ContactField[]
- this.urls = urls || null; // ContactField[]
- this.timezone = timezone || null;
-};
-
-/**
- * ContactError.
- * An error code assigned by an implementation when an error has occurred
- */
-var ContactError = function() {
- this.code=null;
-};
-
-/**
- * Error codes
- */
-ContactError.UNKNOWN_ERROR = 0;
-ContactError.INVALID_ARGUMENT_ERROR = 1;
-ContactError.NOT_FOUND_ERROR = 2;
-ContactError.TIMEOUT_ERROR = 3;
-ContactError.PENDING_OPERATION_ERROR = 4;
-ContactError.IO_ERROR = 5;
-ContactError.NOT_SUPPORTED_ERROR = 6;
-ContactError.PERMISSION_DENIED_ERROR = 20;
-
-/**
-* Removes contact from device storage.
-* @param successCB success callback
-* @param errorCB error callback
-*/
-Contact.prototype.remove = function(successCB, errorCB) {
- if (this.id === null) {
- var errorObj = new ContactError();
- errorObj.code = ContactError.NOT_FOUND_ERROR;
- errorCB(errorObj);
- }
- else {
- PhoneGap.exec(successCB, errorCB, "Contacts", "remove", [this.id]);
- }
-};
-
-/**
-* Creates a deep copy of this Contact.
-* With the contact ID set to null.
-* @return copy of this Contact
-*/
-Contact.prototype.clone = function() {
- var clonedContact = PhoneGap.clone(this);
- var i;
- clonedContact.id = null;
- clonedContact.rawId = null;
- // Loop through and clear out any id's in phones, emails, etc.
- if (clonedContact.phoneNumbers) {
- for (i = 0; i < clonedContact.phoneNumbers.length; i++) {
- clonedContact.phoneNumbers[i].id = null;
- }
- }
- if (clonedContact.emails) {
- for (i = 0; i < clonedContact.emails.length; i++) {
- clonedContact.emails[i].id = null;
- }
- }
- if (clonedContact.addresses) {
- for (i = 0; i < clonedContact.addresses.length; i++) {
- clonedContact.addresses[i].id = null;
- }
- }
- if (clonedContact.ims) {
- for (i = 0; i < clonedContact.ims.length; i++) {
- clonedContact.ims[i].id = null;
- }
- }
- if (clonedContact.organizations) {
- for (i = 0; i < clonedContact.organizations.length; i++) {
- clonedContact.organizations[i].id = null;
- }
- }
- if (clonedContact.tags) {
- for (i = 0; i < clonedContact.tags.length; i++) {
- clonedContact.tags[i].id = null;
- }
- }
- if (clonedContact.photos) {
- for (i = 0; i < clonedContact.photos.length; i++) {
- clonedContact.photos[i].id = null;
- }
- }
- if (clonedContact.urls) {
- for (i = 0; i < clonedContact.urls.length; i++) {
- clonedContact.urls[i].id = null;
- }
- }
- return clonedContact;
-};
-
-/**
-* Persists contact to device storage.
-* @param successCB success callback
-* @param errorCB error callback
-*/
-Contact.prototype.save = function(successCB, errorCB) {
- PhoneGap.exec(successCB, errorCB, "Contacts", "save", [this]);
-};
-
-/**
-* Contact name.
-* @param formatted
-* @param familyName
-* @param givenName
-* @param middle
-* @param prefix
-* @param suffix
-*/
-var ContactName = function(formatted, familyName, givenName, middle, prefix, suffix) {
- this.formatted = formatted || null;
- this.familyName = familyName || null;
- this.givenName = givenName || null;
- this.middleName = middle || null;
- this.honorificPrefix = prefix || null;
- this.honorificSuffix = suffix || null;
-};
-
-/**
-* Generic contact field.
-* @param {DOMString} id unique identifier, should only be set by native code
-* @param type
-* @param value
-* @param pref
-*/
-var ContactField = function(type, value, pref) {
- this.id = null;
- this.type = type || null;
- this.value = value || null;
- this.pref = pref || null;
-};
-
-/**
-* Contact address.
-* @param {DOMString} id unique identifier, should only be set by native code
-* @param formatted
-* @param streetAddress
-* @param locality
-* @param region
-* @param postalCode
-* @param country
-*/
-var ContactAddress = function(formatted, streetAddress, locality, region, postalCode, country) {
- this.id = null;
- this.formatted = formatted || null;
- this.streetAddress = streetAddress || null;
- this.locality = locality || null;
- this.region = region || null;
- this.postalCode = postalCode || null;
- this.country = country || null;
-};
-
-/**
-* Contact organization.
-* @param {DOMString} id unique identifier, should only be set by native code
-* @param name
-* @param dept
-* @param title
-* @param startDate
-* @param endDate
-* @param location
-* @param desc
-*/
-var ContactOrganization = function(name, dept, title) {
- this.id = null;
- this.name = name || null;
- this.department = dept || null;
- this.title = title || null;
-};
-
-/**
-* Represents a group of Contacts.
-*/
-var Contacts = function() {
- this.inProgress = false;
- this.records = [];
-};
-/**
-* Returns an array of Contacts matching the search criteria.
-* @param fields that should be searched
-* @param successCB success callback
-* @param errorCB error callback
-* @param {ContactFindOptions} options that can be applied to contact searching
-* @return array of Contacts matching search criteria
-*/
-Contacts.prototype.find = function(fields, successCB, errorCB, options) {
- PhoneGap.exec(successCB, errorCB, "Contacts", "search", [fields, options]);
-};
-
-/**
-* This function creates a new contact, but it does not persist the contact
-* to device storage. To persist the contact to device storage, invoke
-* contact.save().
-* @param properties an object who's properties will be examined to create a new Contact
-* @returns new Contact object
-*/
-Contacts.prototype.create = function(properties) {
- var i;
- var contact = new Contact();
- for (i in properties) {
- if (contact[i] !== 'undefined') {
- contact[i] = properties[i];
- }
- }
- return contact;
-};
-
-/**
-* This function returns and array of contacts. It is required as we need to convert raw
-* JSON objects into concrete Contact objects. Currently this method is called after
-* navigator.service.contacts.find but before the find methods success call back.
-*
-* @param jsonArray an array of JSON Objects that need to be converted to Contact objects.
-* @returns an array of Contact objects
-*/
-Contacts.prototype.cast = function(pluginResult) {
- var contacts = [];
- var i;
- for (i=0; i<pluginResult.message.length; i++) {
- contacts.push(navigator.service.contacts.create(pluginResult.message[i]));
- }
- pluginResult.message = contacts;
- return pluginResult;
-};
-
-/**
- * ContactFindOptions.
- * @param filter used to match contacts against
- * @param multiple boolean used to determine if more than one contact should be returned
- * @param updatedSince return only contact records that have been updated on or after the given time
- */
-var ContactFindOptions = function(filter, multiple, updatedSince) {
- this.filter = filter || '';
- this.multiple = multiple || true;
- this.updatedSince = updatedSince || '';
-};
-
-/**
- * Add the contact interface into the browser.
- */
-PhoneGap.addConstructor(function() {
- if(typeof navigator.service === "undefined") {
- navigator.service = {};
- }
- if(typeof navigator.service.contacts === "undefined") {
- navigator.service.contacts = new Contacts();
- }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-// TODO: Needs to be commented
-
-if (!PhoneGap.hasResource("crypto")) {
-PhoneGap.addResource("crypto");
-
-var Crypto = function() {
-};
-
-Crypto.prototype.encrypt = function(seed, string, callback) {
- this.encryptWin = callback;
- PhoneGap.exec(null, null, "Crypto", "encrypt", [seed, string]);
-};
-
-Crypto.prototype.decrypt = function(seed, string, callback) {
- this.decryptWin = callback;
- PhoneGap.exec(null, null, "Crypto", "decrypt", [seed, string]);
-};
-
-Crypto.prototype.gotCryptedString = function(string) {
- this.encryptWin(string);
-};
-
-Crypto.prototype.getPlainString = function(string) {
- this.decryptWin(string);
-};
-
-PhoneGap.addConstructor(function() {
- if (typeof navigator.Crypto === "undefined") {
- navigator.Crypto = new Crypto();
- }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010-2011, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("device")) {
-PhoneGap.addResource("device");
-
-/**
- * This represents the mobile device, and provides properties for inspecting the model, version, UUID of the
- * phone, etc.
- * @constructor
- */
-Device = function() {
- this.available = PhoneGap.available;
- this.platform = null;
- this.version = null;
- this.name = null;
- this.uuid = null;
- this.phonegap = null;
-
- var me = this;
- this.getInfo(
- function(info) {
- me.available = true;
- me.platform = info.platform;
- me.version = info.version;
- me.name = info.name;
- me.uuid = info.uuid;
- me.phonegap = info.phonegap;
- PhoneGap.onPhoneGapInfoReady.fire();
- },
- function(e) {
- me.available = false;
- console.log("Error initializing PhoneGap: " + e);
- alert("Error initializing PhoneGap: "+e);
- });
-};
-
-/**
- * Get device info
- *
- * @param {Function} successCallback The function to call when the heading data is available
- * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL)
- */
-Device.prototype.getInfo = function(successCallback, errorCallback) {
-
- // successCallback required
- if (typeof successCallback !== "function") {
- console.log("Device Error: successCallback is not a function");
- return;
- }
-
- // errorCallback optional
- if (errorCallback && (typeof errorCallback !== "function")) {
- console.log("Device Error: errorCallback is not a function");
- return;
- }
-
- // Get info
- PhoneGap.exec(successCallback, errorCallback, "Device", "getDeviceInfo", []);
-};
-
-/*
- * DEPRECATED
- * This is only for Android.
- *
- * You must explicitly override the back button.
- */
-Device.prototype.overrideBackButton = function() {
- console.log("Device.overrideBackButton() is deprecated. Use App.overrideBackbutton(true).");
- app.overrideBackbutton(true);
-};
-
-/*
- * DEPRECATED
- * This is only for Android.
- *
- * This resets the back button to the default behaviour
- */
-Device.prototype.resetBackButton = function() {
- console.log("Device.resetBackButton() is deprecated. Use App.overrideBackbutton(false).");
- app.overrideBackbutton(false);
-};
-
-/*
- * DEPRECATED
- * This is only for Android.
- *
- * This terminates the activity!
- */
-Device.prototype.exitApp = function() {
- console.log("Device.exitApp() is deprecated. Use App.exitApp().");
- app.exitApp();
-};
-
-PhoneGap.addConstructor(function() {
- if (typeof navigator.device === "undefined") {
- navigator.device = window.device = new Device();
- }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("file")) {
-PhoneGap.addResource("file");
-
-/**
- * This class provides some useful information about a file.
- * This is the fields returned when navigator.fileMgr.getFileProperties()
- * is called.
- */
-FileProperties = function(filePath) {
- this.filePath = filePath;
- this.size = 0;
- this.lastModifiedDate = null;
-};
-
-/**
- * Represents a single file.
- *
- * name {DOMString} name of the file, without path information
- * fullPath {DOMString} the full path of the file, including the name
- * type {DOMString} mime type
- * lastModifiedDate {Date} last modified date
- * size {Number} size of the file in bytes
- */
-File = function(name, fullPath, type, lastModifiedDate, size) {
- this.name = name || null;
- this.fullPath = fullPath || null;
- this.type = type || null;
- this.lastModifiedDate = lastModifiedDate || null;
- this.size = size || 0;
-};
-
-FileError = function() {
- this.code = null;
-};
-
-// File error codes
-// Found in DOMException
-FileError.NOT_FOUND_ERR = 1;
-FileError.SECURITY_ERR = 2;
-FileError.ABORT_ERR = 3;
-
-// Added by this specification
-FileError.NOT_READABLE_ERR = 4;
-FileError.ENCODING_ERR = 5;
-FileError.NO_MODIFICATION_ALLOWED_ERR = 6;
-FileError.INVALID_STATE_ERR = 7;
-FileError.SYNTAX_ERR = 8;
-FileError.INVALID_MODIFICATION_ERR = 9;
-FileError.QUOTA_EXCEEDED_ERR = 10;
-FileError.TYPE_MISMATCH_ERR = 11;
-FileError.PATH_EXISTS_ERR = 12;
-
-//-----------------------------------------------------------------------------
-// File manager
-//-----------------------------------------------------------------------------
-
-FileMgr = function() {
-};
-
-FileMgr.prototype.getFileProperties = function(filePath) {
- return PhoneGap.exec(null, null, "File", "getFileProperties", [filePath]);
-};
-
-FileMgr.prototype.getFileBasePaths = function() {
-};
-
-FileMgr.prototype.testSaveLocationExists = function(successCallback, errorCallback) {
- return PhoneGap.exec(successCallback, errorCallback, "File", "testSaveLocationExists", []);
-};
-
-FileMgr.prototype.testFileExists = function(fileName, successCallback, errorCallback) {
- return PhoneGap.exec(successCallback, errorCallback, "File", "testFileExists", [fileName]);
-};
-
-FileMgr.prototype.testDirectoryExists = function(dirName, successCallback, errorCallback) {
- return PhoneGap.exec(successCallback, errorCallback, "File", "testDirectoryExists", [dirName]);
-};
-
-FileMgr.prototype.getFreeDiskSpace = function(successCallback, errorCallback) {
- return PhoneGap.exec(successCallback, errorCallback, "File", "getFreeDiskSpace", []);
-};
-
-FileMgr.prototype.writeAsText = function(fileName, data, append, successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "writeAsText", [fileName, data, append]);
-};
-
-FileMgr.prototype.write = function(fileName, data, position, successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "write", [fileName, data, position]);
-};
-
-FileMgr.prototype.truncate = function(fileName, size, successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "truncate", [fileName, size]);
-};
-
-FileMgr.prototype.readAsText = function(fileName, encoding, successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "readAsText", [fileName, encoding]);
-};
-
-FileMgr.prototype.readAsDataURL = function(fileName, successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "readAsDataURL", [fileName]);
-};
-
-PhoneGap.addConstructor(function() {
- if (typeof navigator.fileMgr === "undefined") {
- navigator.fileMgr = new FileMgr();
- }
-});
-
-//-----------------------------------------------------------------------------
-// File Reader
-//-----------------------------------------------------------------------------
-// TODO: All other FileMgr function operate on the SD card as root. However,
-// for FileReader & FileWriter the root is not SD card. Should this be changed?
-
-/**
- * This class reads the mobile device file system.
- *
- * For Android:
- * The root directory is the root of the file system.
- * To read from the SD card, the file name is "sdcard/my_file.txt"
- */
-FileReader = function() {
- this.fileName = "";
-
- this.readyState = 0;
-
- // File data
- this.result = null;
-
- // Error
- this.error = null;
-
- // Event handlers
- this.onloadstart = null; // When the read starts.
- this.onprogress = null; // While reading (and decoding) file or fileBlob data, and reporting partial file data (progess.loaded/progress.total)
- this.onload = null; // When the read has successfully completed.
- this.onerror = null; // When the read has failed (see errors).
- this.onloadend = null; // When the request has completed (either in success or failure).
- this.onabort = null; // When the read has been aborted. For instance, by invoking the abort() method.
-};
-
-// States
-FileReader.EMPTY = 0;
-FileReader.LOADING = 1;
-FileReader.DONE = 2;
-
-/**
- * Abort reading file.
- */
-FileReader.prototype.abort = function() {
- var evt;
- this.readyState = FileReader.DONE;
- this.result = null;
-
- // set error
- var error = new FileError();
- error.code = error.ABORT_ERR;
- this.error = error;
-
- // If error callback
- if (typeof this.onerror === "function") {
- this.onerror({"type":"error", "target":this});
- }
- // If abort callback
- if (typeof this.onabort === "function") {
- this.oneabort({"type":"abort", "target":this});
- }
- // If load end callback
- if (typeof this.onloadend === "function") {
- this.onloadend({"type":"loadend", "target":this});
- }
-};
-
-/**
- * Read text file.
- *
- * @param file {File} File object containing file properties
- * @param encoding [Optional] (see http://www.iana.org/assignments/character-sets)
- */
-FileReader.prototype.readAsText = function(file, encoding) {
- this.fileName = "";
- if (typeof file.fullPath === "undefined") {
- this.fileName = file;
- } else {
- this.fileName = file.fullPath;
- }
-
- // LOADING state
- this.readyState = FileReader.LOADING;
-
- // If loadstart callback
- if (typeof this.onloadstart === "function") {
- this.onloadstart({"type":"loadstart", "target":this});
- }
-
- // Default encoding is UTF-8
- var enc = encoding ? encoding : "UTF-8";
-
- var me = this;
-
- // Read file
- navigator.fileMgr.readAsText(this.fileName, enc,
-
- // Success callback
- function(r) {
- var evt;
-
- // If DONE (cancelled), then don't do anything
- if (me.readyState === FileReader.DONE) {
- return;
- }
-
- // Save result
- me.result = r;
-
- // If onload callback
- if (typeof me.onload === "function") {
- me.onload({"type":"load", "target":me});
- }
-
- // DONE state
- me.readyState = FileReader.DONE;
-
- // If onloadend callback
- if (typeof me.onloadend === "function") {
- me.onloadend({"type":"loadend", "target":me});
- }
- },
-
- // Error callback
- function(e) {
- var evt;
- // If DONE (cancelled), then don't do anything
- if (me.readyState === FileReader.DONE) {
- return;
- }
-
- // Save error
- var fileError = new FileError();
- fileError.code = e;
- me.error = fileError;
-
- // If onerror callback
- if (typeof me.onerror === "function") {
- me.onerror({"type":"error", "target":me});
- }
-
- // DONE state
- me.readyState = FileReader.DONE;
-
- // If onloadend callback
- if (typeof me.onloadend === "function") {
- me.onloadend({"type":"loadend", "target":me});
- }
- }
- );
-};
-
-
-/**
- * Read file and return data as a base64 encoded data url.
- * A data url is of the form:
- * data:[<mediatype>][;base64],<data>
- *
- * @param file {File} File object containing file properties
- */
-FileReader.prototype.readAsDataURL = function(file) {
- this.fileName = "";
- if (typeof file.fullPath === "undefined") {
- this.fileName = file;
- } else {
- this.fileName = file.fullPath;
- }
-
- // LOADING state
- this.readyState = FileReader.LOADING;
-
- // If loadstart callback
- if (typeof this.onloadstart === "function") {
- this.onloadstart({"type":"loadstart", "target":this});
- }
-
- var me = this;
-
- // Read file
- navigator.fileMgr.readAsDataURL(this.fileName,
-
- // Success callback
- function(r) {
- var evt;
-
- // If DONE (cancelled), then don't do anything
- if (me.readyState === FileReader.DONE) {
- return;
- }
-
- // Save result
- me.result = r;
-
- // If onload callback
- if (typeof me.onload === "function") {
- me.onload({"type":"load", "target":me});
- }
-
- // DONE state
- me.readyState = FileReader.DONE;
-
- // If onloadend callback
- if (typeof me.onloadend === "function") {
- me.onloadend({"type":"loadend", "target":me});
- }
- },
-
- // Error callback
- function(e) {
- var evt;
- // If DONE (cancelled), then don't do anything
- if (me.readyState === FileReader.DONE) {
- return;
- }
-
- // Save error
- var fileError = new FileError();
- fileError.code = e;
- me.error = fileError;
-
- // If onerror callback
- if (typeof me.onerror === "function") {
- me.onerror({"type":"error", "target":me});
- }
-
- // DONE state
- me.readyState = FileReader.DONE;
-
- // If onloadend callback
- if (typeof me.onloadend === "function") {
- me.onloadend({"type":"loadend", "target":me});
- }
- }
- );
-};
-
-/**
- * Read file and return data as a binary data.
- *
- * @param file {File} File object containing file properties
- */
-FileReader.prototype.readAsBinaryString = function(file) {
- // TODO - Can't return binary data to browser.
- this.fileName = file;
-};
-
-/**
- * Read file and return data as a binary data.
- *
- * @param file {File} File object containing file properties
- */
-FileReader.prototype.readAsArrayBuffer = function(file) {
- // TODO - Can't return binary data to browser.
- this.fileName = file;
-};
-
-//-----------------------------------------------------------------------------
-// File Writer
-//-----------------------------------------------------------------------------
-
-/**
- * This class writes to the mobile device file system.
- *
- * For Android:
- * The root directory is the root of the file system.
- * To write to the SD card, the file name is "sdcard/my_file.txt"
- *
- * @param file {File} File object containing file properties
- * @param append if true write to the end of the file, otherwise overwrite the file
- */
-FileWriter = function(file) {
- this.fileName = "";
- this.length = 0;
- if (file) {
- this.fileName = file.fullPath || file;
- this.length = file.size || 0;
- }
- // default is to write at the beginning of the file
- this.position = 0;
-
- this.readyState = 0; // EMPTY
-
- this.result = null;
-
- // Error
- this.error = null;
-
- // Event handlers
- this.onwritestart = null; // When writing starts
- this.onprogress = null; // While writing the file, and reporting partial file data
- this.onwrite = null; // When the write has successfully completed.
- this.onwriteend = null; // When the request has completed (either in success or failure).
- this.onabort = null; // When the write has been aborted. For instance, by invoking the abort() method.
- this.onerror = null; // When the write has failed (see errors).
-};
-
-// States
-FileWriter.INIT = 0;
-FileWriter.WRITING = 1;
-FileWriter.DONE = 2;
-
-/**
- * Abort writing file.
- */
-FileWriter.prototype.abort = function() {
- // check for invalid state
- if (this.readyState === FileWriter.DONE || this.readyState === FileWriter.INIT) {
- throw FileError.INVALID_STATE_ERR;
- }
-
- // set error
- var error = new FileError(), evt;
- error.code = error.ABORT_ERR;
- this.error = error;
-
- // If error callback
- if (typeof this.onerror === "function") {
- this.onerror({"type":"error", "target":this});
- }
- // If abort callback
- if (typeof this.onabort === "function") {
- this.oneabort({"type":"abort", "target":this});
- }
-
- this.readyState = FileWriter.DONE;
-
- // If write end callback
- if (typeof this.onwriteend == "function") {
- this.onwriteend({"type":"writeend", "target":this});
- }
-};
-
-/**
- * Writes data to the file
- *
- * @param text to be written
- */
-FileWriter.prototype.write = function(text) {
- // Throw an exception if we are already writing a file
- if (this.readyState === FileWriter.WRITING) {
- throw FileError.INVALID_STATE_ERR;
- }
-
- // WRITING state
- this.readyState = FileWriter.WRITING;
-
- var me = this;
-
- // If onwritestart callback
- if (typeof me.onwritestart === "function") {
- me.onwritestart({"type":"writestart", "target":me});
- }
-
- // Write file
- navigator.fileMgr.write(this.fileName, text, this.position,
-
- // Success callback
- function(r) {
- var evt;
- // If DONE (cancelled), then don't do anything
- if (me.readyState === FileWriter.DONE) {
- return;
- }
-
- // So if the user wants to keep appending to the file
- me.length = Math.max(me.length, me.position + r);
- // position always increases by bytes written because file would be extended
- me.position += r;
-
- // If onwrite callback
- if (typeof me.onwrite === "function") {
- me.onwrite({"type":"write", "target":me});
- }
-
- // DONE state
- me.readyState = FileWriter.DONE;
-
- // If onwriteend callback
- if (typeof me.onwriteend === "function") {
- me.onwriteend({"type":"writeend", "target":me});
- }
- },
-
- // Error callback
- function(e) {
- var evt;
-
- // If DONE (cancelled), then don't do anything
- if (me.readyState === FileWriter.DONE) {
- return;
- }
-
- // Save error
- var fileError = new FileError();
- fileError.code = e;
- me.error = fileError;
-
- // If onerror callback
- if (typeof me.onerror === "function") {
- me.onerror({"type":"error", "target":me});
- }
-
- // DONE state
- me.readyState = FileWriter.DONE;
-
- // If onwriteend callback
- if (typeof me.onwriteend === "function") {
- me.onwriteend({"type":"writeend", "target":me});
- }
- }
- );
-
-};
-
-/**
- * Moves the file pointer to the location specified.
- *
- * If the offset is a negative number the position of the file
- * pointer is rewound. If the offset is greater than the file
- * size the position is set to the end of the file.
- *
- * @param offset is the location to move the file pointer to.
- */
-FileWriter.prototype.seek = function(offset) {
- // Throw an exception if we are already writing a file
- if (this.readyState === FileWriter.WRITING) {
- throw FileError.INVALID_STATE_ERR;
- }
-
- if (!offset) {
- return;
- }
-
- // See back from end of file.
- if (offset < 0) {
- this.position = Math.max(offset + this.length, 0);
- }
- // Offset is bigger then file size so set position
- // to the end of the file.
- else if (offset > this.length) {
- this.position = this.length;
- }
- // Offset is between 0 and file size so set the position
- // to start writing.
- else {
- this.position = offset;
- }
-};
-
-/**
- * Truncates the file to the size specified.
- *
- * @param size to chop the file at.
- */
-FileWriter.prototype.truncate = function(size) {
- // Throw an exception if we are already writing a file
- if (this.readyState === FileWriter.WRITING) {
- throw FileError.INVALID_STATE_ERR;
- }
-
- // WRITING state
- this.readyState = FileWriter.WRITING;
-
- var me = this;
-
- // If onwritestart callback
- if (typeof me.onwritestart === "function") {
- me.onwritestart({"type":"writestart", "target":this});
- }
-
- // Write file
- navigator.fileMgr.truncate(this.fileName, size,
-
- // Success callback
- function(r) {
- var evt;
- // If DONE (cancelled), then don't do anything
- if (me.readyState === FileWriter.DONE) {
- return;
- }
-
- // Update the length of the file
- me.length = r;
- me.position = Math.min(me.position, r);
-
- // If onwrite callback
- if (typeof me.onwrite === "function") {
- me.onwrite({"type":"write", "target":me});
- }
-
- // DONE state
- me.readyState = FileWriter.DONE;
-
- // If onwriteend callback
- if (typeof me.onwriteend === "function") {
- me.onwriteend({"type":"writeend", "target":me});
- }
- },
-
- // Error callback
- function(e) {
- var evt;
- // If DONE (cancelled), then don't do anything
- if (me.readyState === FileWriter.DONE) {
- return;
- }
-
- // Save error
- var fileError = new FileError();
- fileError.code = e;
- me.error = fileError;
-
- // If onerror callback
- if (typeof me.onerror === "function") {
- me.onerror({"type":"error", "target":me});
- }
-
- // DONE state
- me.readyState = FileWriter.DONE;
-
- // If onwriteend callback
- if (typeof me.onwriteend === "function") {
- me.onwriteend({"type":"writeend", "target":me});
- }
- }
- );
-};
-
-LocalFileSystem = function() {
-};
-
-// File error codes
-LocalFileSystem.TEMPORARY = 0;
-LocalFileSystem.PERSISTENT = 1;
-LocalFileSystem.RESOURCE = 2;
-LocalFileSystem.APPLICATION = 3;
-
-/**
- * Requests a filesystem in which to store application data.
- *
- * @param {int} type of file system being requested
- * @param {Function} successCallback is called with the new FileSystem
- * @param {Function} errorCallback is called with a FileError
- */
-LocalFileSystem.prototype.requestFileSystem = function(type, size, successCallback, errorCallback) {
- if (type < 0 || type > 3) {
- if (typeof errorCallback == "function") {
- errorCallback({
- "code": FileError.SYNTAX_ERR
- });
- }
- }
- else {
- PhoneGap.exec(successCallback, errorCallback, "File", "requestFileSystem", [type, size]);
- }
-};
-
-/**
- *
- * @param {DOMString} uri referring to a local file in a filesystem
- * @param {Function} successCallback is called with the new entry
- * @param {Function} errorCallback is called with a FileError
- */
-LocalFileSystem.prototype.resolveLocalFileSystemURI = function(uri, successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "resolveLocalFileSystemURI", [uri]);
-};
-
-/**
-* This function returns and array of contacts. It is required as we need to convert raw
-* JSON objects into concrete Contact objects. Currently this method is called after
-* navigator.service.contacts.find but before the find methods success call back.
-*
-* @param a JSON Objects that need to be converted to DirectoryEntry or FileEntry objects.
-* @returns an entry
-*/
-LocalFileSystem.prototype._castFS = function(pluginResult) {
- var entry = null;
- entry = new DirectoryEntry();
- entry.isDirectory = pluginResult.message.root.isDirectory;
- entry.isFile = pluginResult.message.root.isFile;
- entry.name = pluginResult.message.root.name;
- entry.fullPath = pluginResult.message.root.fullPath;
- pluginResult.message.root = entry;
- return pluginResult;
-}
-
-LocalFileSystem.prototype._castEntry = function(pluginResult) {
- var entry = null;
- if (pluginResult.message.isDirectory) {
- console.log("This is a dir");
- entry = new DirectoryEntry();
- }
- else if (pluginResult.message.isFile) {
- console.log("This is a file");
- entry = new FileEntry();
- }
- entry.isDirectory = pluginResult.message.isDirectory;
- entry.isFile = pluginResult.message.isFile;
- entry.name = pluginResult.message.name;
- entry.fullPath = pluginResult.message.fullPath;
- pluginResult.message = entry;
- return pluginResult;
-}
-
-LocalFileSystem.prototype._castEntries = function(pluginResult) {
- var entries = pluginResult.message;
- var retVal = [];
- for (i=0; i<entries.length; i++) {
- retVal.push(window.localFileSystem._createEntry(entries[i]));
- }
- pluginResult.message = retVal;
- return pluginResult;
-}
-
-LocalFileSystem.prototype._createEntry = function(castMe) {
- var entry = null;
- if (castMe.isDirectory) {
- console.log("This is a dir");
- entry = new DirectoryEntry();
- }
- else if (castMe.isFile) {
- console.log("This is a file");
- entry = new FileEntry();
- }
- entry.isDirectory = castMe.isDirectory;
- entry.isFile = castMe.isFile;
- entry.name = castMe.name;
- entry.fullPath = castMe.fullPath;
- return entry;
-
-}
-
-LocalFileSystem.prototype._castDate = function(pluginResult) {
- if (pluginResult.message.modificationTime) {
- var modTime = new Date(pluginResult.message.modificationTime);
- pluginResult.message.modificationTime = modTime;
- }
- else if (pluginResult.message.lastModifiedDate) {
- var file = new File();
- file.size = pluginResult.message.size;
- file.type = pluginResult.message.type;
- file.name = pluginResult.message.name;
- file.fullPath = pluginResult.message.fullPath;
- file.lastModifedDate = new Date(pluginResult.message.lastModifiedDate);
- pluginResult.message = file;
- }
-
- return pluginResult;
-}
-
-/**
- * Information about the state of the file or directory
- *
- * {Date} modificationTime (readonly)
- */
-Metadata = function() {
- this.modificationTime=null;
-};
-
-/**
- * Supplies arguments to methods that lookup or create files and directories
- *
- * @param {boolean} create file or directory if it doesn't exist
- * @param {boolean} exclusive if true the command will fail if the file or directory exists
- */
-Flags = function(create, exclusive) {
- this.create = create || false;
- this.exclusive = exclusive || false;
-};
-
-/**
- * An interface representing a file system
- *
- * {DOMString} name the unique name of the file system (readonly)
- * {DirectoryEntry} root directory of the file system (readonly)
- */
-FileSystem = function() {
- this.name = null;
- this.root = null;
-};
-
-/**
- * An interface representing a directory on the file system.
- *
- * {boolean} isFile always false (readonly)
- * {boolean} isDirectory always true (readonly)
- * {DOMString} name of the directory, excluding the path leading to it (readonly)
- * {DOMString} fullPath the absolute full path to the directory (readonly)
- * {FileSystem} filesystem on which the directory resides (readonly)
- */
-DirectoryEntry = function() {
- this.isFile = false;
- this.isDirectory = true;
- this.name = null;
- this.fullPath = null;
- this.filesystem = null;
-};
-
-/**
- * Copies a directory to a new location
- *
- * @param {DirectoryEntry} parent the directory to which to copy the entry
- * @param {DOMString} newName the new name of the entry, defaults to the current name
- * @param {Function} successCallback is called with the new entry
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "copyTo", [this.fullPath, parent, newName]);
-};
-
-/**
- * Looks up the metadata of the entry
- *
- * @param {Function} successCallback is called with a Metadata object
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.getMetadata = function(successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "getMetadata", [this.fullPath]);
-};
-
-/**
- * Gets the parent of the entry
- *
- * @param {Function} successCallback is called with a parent entry
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.getParent = function(successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "getParent", [this.fullPath]);
-};
-
-/**
- * Moves a directory to a new location
- *
- * @param {DirectoryEntry} parent the directory to which to move the entry
- * @param {DOMString} newName the new name of the entry, defaults to the current name
- * @param {Function} successCallback is called with the new entry
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "moveTo", [this.fullPath, parent, newName]);
-};
-
-/**
- * Removes the entry
- *
- * @param {Function} successCallback is called with no parameters
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.remove = function(successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "remove", [this.fullPath]);
-};
-
-/**
- * Returns a URI that can be used to identify this entry.
- *
- * @param {DOMString} mimeType for a FileEntry, the mime type to be used to interpret the file, when loaded through this URI.
- * @return uri
- */
-DirectoryEntry.prototype.toURI = function(mimeType) {
- return "file://" + this.fullPath;
-};
-
-/**
- * Creates a new DirectoryReader to read entries from this directory
- */
-DirectoryEntry.prototype.createReader = function(successCallback, errorCallback) {
- return new DirectoryReader(this.fullPath);
-};
-
-/**
- * Creates or looks up a directory
- *
- * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a directory
- * @param {Flags} options to create or excluively create the directory
- * @param {Function} successCallback is called with the new entry
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.getDirectory = function(path, options, successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "getDirectory", [this.fullPath, path, options]);
-};
-
-/**
- * Creates or looks up a file
- *
- * @param {DOMString} path either a relative or absolute path from this directory in which to look up or create a file
- * @param {Flags} options to create or excluively create the file
- * @param {Function} successCallback is called with the new entry
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.getFile = function(path, options, successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "getFile", [this.fullPath, path, options]);
-};
-
-/**
- * Deletes a directory and all of it's contents
- *
- * @param {Function} successCallback is called with no parameters
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryEntry.prototype.removeRecursively = function(successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "removeRecursively", [this.fullPath]);
-};
-
-/**
- * An interface that lists the files and directories in a directory.
- */
-DirectoryReader = function(fullPath){
- this.fullPath = fullPath || null;
-};
-
-/**
- * Returns a list of entries from a directory.
- *
- * @param {Function} successCallback is called with a list of entries
- * @param {Function} errorCallback is called with a FileError
- */
-DirectoryReader.prototype.readEntries = function(successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "readEntries", [this.fullPath]);
-}
-
-/**
- * An interface representing a directory on the file system.
- *
- * {boolean} isFile always true (readonly)
- * {boolean} isDirectory always false (readonly)
- * {DOMString} name of the file, excluding the path leading to it (readonly)
- * {DOMString} fullPath the absolute full path to the file (readonly)
- * {FileSystem} filesystem on which the directory resides (readonly)
- */
-FileEntry = function() {
- this.isFile = true;
- this.isDirectory = false;
- this.name = null;
- this.fullPath = null;
- this.filesystem = null;
-};
-
-/**
- * Copies a file to a new location
- *
- * @param {DirectoryEntry} parent the directory to which to copy the entry
- * @param {DOMString} newName the new name of the entry, defaults to the current name
- * @param {Function} successCallback is called with the new entry
- * @param {Function} errorCallback is called with a FileError
- */
-FileEntry.prototype.copyTo = function(parent, newName, successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "copyTo", [this.fullPath, parent, newName]);
-};
-
-/**
- * Looks up the metadata of the entry
- *
- * @param {Function} successCallback is called with a Metadata object
- * @param {Function} errorCallback is called with a FileError
- */
-FileEntry.prototype.getMetadata = function(successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "getMetadata", [this.fullPath]);
-};
-
-/**
- * Gets the parent of the entry
- *
- * @param {Function} successCallback is called with a parent entry
- * @param {Function} errorCallback is called with a FileError
- */
-FileEntry.prototype.getParent = function(successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "getParent", [this.fullPath]);
-};
-
-/**
- * Moves a directory to a new location
- *
- * @param {DirectoryEntry} parent the directory to which to move the entry
- * @param {DOMString} newName the new name of the entry, defaults to the current name
- * @param {Function} successCallback is called with the new entry
- * @param {Function} errorCallback is called with a FileError
- */
-FileEntry.prototype.moveTo = function(parent, newName, successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "moveTo", [this.fullPath, parent, newName]);
-};
-
-/**
- * Removes the entry
- *
- * @param {Function} successCallback is called with no parameters
- * @param {Function} errorCallback is called with a FileError
- */
-FileEntry.prototype.remove = function(successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "remove", [this.fullPath]);
-};
-
-/**
- * Returns a URI that can be used to identify this entry.
- *
- * @param {DOMString} mimeType for a FileEntry, the mime type to be used to interpret the file, when loaded through this URI.
- * @return uri
- */
-FileEntry.prototype.toURI = function(mimeType) {
- return "file://" + this.fullPath;
-};
-
-/**
- * Creates a new FileWriter associated with the file that this FileEntry represents.
- *
- * @param {Function} successCallback is called with the new FileWriter
- * @param {Function} errorCallback is called with a FileError
- */
-FileEntry.prototype.createWriter = function(successCallback, errorCallback) {
- var writer = new FileWriter(this.fullPath);
-
- if (writer.fileName == null || writer.fileName == "") {
- if (typeof errorCallback == "function") {
- errorCallback({
- "code": FileError.INVALID_STATE_ERR
- });
- }
- }
-
- if (typeof successCallback == "function") {
- successCallback(writer);
- }
-};
-
-/**
- * Returns a File that represents the current state of the file that this FileEntry represents.
- *
- * @param {Function} successCallback is called with the new File object
- * @param {Function} errorCallback is called with a FileError
- */
-FileEntry.prototype.file = function(successCallback, errorCallback) {
- PhoneGap.exec(successCallback, errorCallback, "File", "getFileMetadata", [this.fullPath]);
-};
-
-/**
- * Add the FileSystem interface into the browser.
- */
-PhoneGap.addConstructor(function() {
- var pgLocalFileSystem = new LocalFileSystem();
- // Needed for cast methods
- if(typeof window.localFileSystem == "undefined") window.localFileSystem = pgLocalFileSystem;
- if(typeof window.requestFileSystem == "undefined") window.requestFileSystem = pgLocalFileSystem.requestFileSystem;
- if(typeof window.resolveLocalFileSystemURI == "undefined") window.resolveLocalFileSystemURI = pgLocalFileSystem.resolveLocalFileSystemURI;
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("filetransfer")) {
-PhoneGap.addResource("filetransfer");
-
-/**
- * FileTransfer uploads a file to a remote server.
- */
-FileTransfer = function() {};
-
-/**
- * FileUploadResult
- */
-FileUploadResult = function() {
- this.bytesSent = 0;
- this.responseCode = null;
- this.response = null;
-};
-
-/**
- * FileTransferError
- */
-FileTransferError = function() {
- this.code = null;
-};
-
-FileTransferError.FILE_NOT_FOUND_ERR = 1;
-FileTransferError.INVALID_URL_ERR = 2;
-FileTransferError.CONNECTION_ERR = 3;
-
-/**
-* Given an absolute file path, uploads a file on the device to a remote server
-* using a multipart HTTP request.
-* @param filePath {String} Full path of the file on the device
-* @param server {String} URL of the server to receive the file
-* @param successCallback (Function} Callback to be invoked when upload has completed
-* @param errorCallback {Function} Callback to be invoked upon error
-* @param options {FileUploadOptions} Optional parameters such as file name and mimetype
-*/
-FileTransfer.prototype.upload = function(filePath, server, successCallback, errorCallback, options, debug) {
-
- // check for options
- var fileKey = null;
- var fileName = null;
- var mimeType = null;
- var params = null;
- if (options) {
- fileKey = options.fileKey;
- fileName = options.fileName;
- mimeType = options.mimeType;
- if (options.params) {
- params = options.params;
- }
- else {
- params = {};
- }
- }
-
- PhoneGap.exec(successCallback, errorCallback, 'FileTransfer', 'upload', [filePath, server, fileKey, fileName, mimeType, params, debug]);
-};
-
-/**
- * Options to customize the HTTP request used to upload files.
- * @param fileKey {String} Name of file request parameter.
- * @param fileName {String} Filename to be used by the server. Defaults to image.jpg.
- * @param mimeType {String} Mimetype of the uploaded file. Defaults to image/jpeg.
- * @param params {Object} Object with key: value params to send to the server.
- */
-FileUploadOptions = function(fileKey, fileName, mimeType, params) {
- this.fileKey = fileKey || null;
- this.fileName = fileName || null;
- this.mimeType = mimeType || null;
- this.params = params || null;
-};
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("geolocation")) {
-PhoneGap.addResource("geolocation");
-
-/**
- * This class provides access to device GPS data.
- * @constructor
- */
-Geolocation = function() {
-
- // The last known GPS position.
- this.lastPosition = null;
-
- // Geolocation listeners
- this.listeners = {};
-};
-
-/**
- * Position error object
- *
- * @param code
- * @param message
- */
-PositionError = function(code, message) {
- this.code = code;
- this.message = message;
-};
-
-PositionError.PERMISSION_DENIED = 1;
-PositionError.POSITION_UNAVAILABLE = 2;
-PositionError.TIMEOUT = 3;
-
-/**
- * Asynchronously aquires the current position.
- *
- * @param {Function} successCallback The function to call when the position data is available
- * @param {Function} errorCallback The function to call when there is an error getting the heading position. (OPTIONAL)
- * @param {PositionOptions} options The options for getting the position data. (OPTIONAL)
- */
-Geolocation.prototype.getCurrentPosition = function(successCallback, errorCallback, options) {
- if (navigator._geo.listeners.global) {
- console.log("Geolocation Error: Still waiting for previous getCurrentPosition() request.");
- try {
- errorCallback(new PositionError(PositionError.TIMEOUT, "Geolocation Error: Still waiting for previous getCurrentPosition() request."));
- } catch (e) {
- }
- return;
- }
- var maximumAge = 10000;
- var enableHighAccuracy = false;
- var timeout = 10000;
- if (typeof options !== "undefined") {
- if (typeof options.maximumAge !== "undefined") {
- maximumAge = options.maximumAge;
- }
- if (typeof options.enableHighAccuracy !== "undefined") {
- enableHighAccuracy = options.enableHighAccuracy;
- }
- if (typeof options.timeout !== "undefined") {
- timeout = options.timeout;
- }
- }
- navigator._geo.listeners.global = {"success" : successCallback, "fail" : errorCallback };
- PhoneGap.exec(null, null, "Geolocation", "getCurrentLocation", [enableHighAccuracy, timeout, maximumAge]);
-};
-
-/**
- * Asynchronously watches the geolocation for changes to geolocation. When a change occurs,
- * the successCallback is called with the new location.
- *
- * @param {Function} successCallback The function to call each time the location data is available
- * @param {Function} errorCallback The function to call when there is an error getting the location data. (OPTIONAL)
- * @param {PositionOptions} options The options for getting the location data such as frequency. (OPTIONAL)
- * @return String The watch id that must be passed to #clearWatch to stop watching.
- */
-Geolocation.prototype.watchPosition = function(successCallback, errorCallback, options) {
- var maximumAge = 10000;
- var enableHighAccuracy = false;
- var timeout = 10000;
- if (typeof options !== "undefined") {
- if (typeof options.frequency !== "undefined") {
- maximumAge = options.frequency;
- }
- if (typeof options.maximumAge !== "undefined") {
- maximumAge = options.maximumAge;
- }
- if (typeof options.enableHighAccuracy !== "undefined") {
- enableHighAccuracy = options.enableHighAccuracy;
- }
- if (typeof options.timeout !== "undefined") {
- timeout = options.timeout;
- }
- }
- var id = PhoneGap.createUUID();
- navigator._geo.listeners[id] = {"success" : successCallback, "fail" : errorCallback };
- PhoneGap.exec(null, null, "Geolocation", "start", [id, enableHighAccuracy, timeout, maximumAge]);
- return id;
-};
-
-/*
- * Native callback when watch position has a new position.
- * PRIVATE METHOD
- *
- * @param {String} id
- * @param {Number} lat
- * @param {Number} lng
- * @param {Number} alt
- * @param {Number} altacc
- * @param {Number} head
- * @param {Number} vel
- * @param {Number} stamp
- */
-Geolocation.prototype.success = function(id, lat, lng, alt, altacc, head, vel, stamp) {
- var coords = new Coordinates(lat, lng, alt, altacc, head, vel);
- var loc = new Position(coords, stamp);
- try {
- if (lat === "undefined" || lng === "undefined") {
- navigator._geo.listeners[id].fail(new PositionError(PositionError.POSITION_UNAVAILABLE, "Lat/Lng are undefined."));
- }
- else {
- navigator._geo.lastPosition = loc;
- navigator._geo.listeners[id].success(loc);
- }
- }
- catch (e) {
- console.log("Geolocation Error: Error calling success callback function.");
- }
-
- if (id === "global") {
- delete navigator._geo.listeners.global;
- }
-};
-
-/**
- * Native callback when watch position has an error.
- * PRIVATE METHOD
- *
- * @param {String} id The ID of the watch
- * @param {Number} code The error code
- * @param {String} msg The error message
- */
-Geolocation.prototype.fail = function(id, code, msg) {
- try {
- navigator._geo.listeners[id].fail(new PositionError(code, msg));
- }
- catch (e) {
- console.log("Geolocation Error: Error calling error callback function.");
- }
-};
-
-/**
- * Clears the specified heading watch.
- *
- * @param {String} id The ID of the watch returned from #watchPosition
- */
-Geolocation.prototype.clearWatch = function(id) {
- PhoneGap.exec(null, null, "Geolocation", "stop", [id]);
- delete navigator._geo.listeners[id];
-};
-
-/**
- * Force the PhoneGap geolocation to be used instead of built-in.
- */
-Geolocation.usingPhoneGap = false;
-Geolocation.usePhoneGap = function() {
- if (Geolocation.usingPhoneGap) {
- return;
- }
- Geolocation.usingPhoneGap = true;
-
- // Set built-in geolocation methods to our own implementations
- // (Cannot replace entire geolocation, but can replace individual methods)
- navigator.geolocation.setLocation = navigator._geo.setLocation;
- navigator.geolocation.getCurrentPosition = navigator._geo.getCurrentPosition;
- navigator.geolocation.watchPosition = navigator._geo.watchPosition;
- navigator.geolocation.clearWatch = navigator._geo.clearWatch;
- navigator.geolocation.start = navigator._geo.start;
- navigator.geolocation.stop = navigator._geo.stop;
-};
-
-PhoneGap.addConstructor(function() {
- navigator._geo = new Geolocation();
-
- // No native geolocation object for Android 1.x, so use PhoneGap geolocation
- if (typeof navigator.geolocation === 'undefined') {
- navigator.geolocation = navigator._geo;
- Geolocation.usingPhoneGap = true;
- }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("media")) {
-PhoneGap.addResource("media");
-
-/**
- * List of media objects.
- * PRIVATE
- */
-PhoneGap.mediaObjects = {};
-
-/**
- * Object that receives native callbacks.
- * PRIVATE
- */
-PhoneGap.Media = function() {};
-
-/**
- * Get the media object.
- * PRIVATE
- *
- * @param id The media object id (string)
- */
-PhoneGap.Media.getMediaObject = function(id) {
- return PhoneGap.mediaObjects[id];
-};
-
-/**
- * Audio has status update.
- * PRIVATE
- *
- * @param id The media object id (string)
- * @param status The status code (int)
- * @param msg The status message (string)
- */
-PhoneGap.Media.onStatus = function(id, msg, value) {
- var media = PhoneGap.mediaObjects[id];
-
- // If state update
- if (msg === Media.MEDIA_STATE) {
- if (value === Media.MEDIA_STOPPED) {
- if (media.successCallback) {
- media.successCallback();
- }
- }
- if (media.statusCallback) {
- media.statusCallback(value);
- }
- }
- else if (msg === Media.MEDIA_DURATION) {
- media._duration = value;
- }
- else if (msg === Media.MEDIA_ERROR) {
- if (media.errorCallback) {
- media.errorCallback(value);
- }
- }
-};
-
-/**
- * This class provides access to the device media, interfaces to both sound and video
- *
- * @param src The file name or url to play
- * @param successCallback The callback to be called when the file is done playing or recording.
- * successCallback() - OPTIONAL
- * @param errorCallback The callback to be called if there is an error.
- * errorCallback(int errorCode) - OPTIONAL
- * @param statusCallback The callback to be called when media status has changed.
- * statusCallback(int statusCode) - OPTIONAL
- * @param positionCallback The callback to be called when media position has changed.
- * positionCallback(long position) - OPTIONAL
- */
-Media = function(src, successCallback, errorCallback, statusCallback, positionCallback) {
-
- // successCallback optional
- if (successCallback && (typeof successCallback !== "function")) {
- console.log("Media Error: successCallback is not a function");
- return;
- }
-
- // errorCallback optional
- if (errorCallback && (typeof errorCallback !== "function")) {
- console.log("Media Error: errorCallback is not a function");
- return;
- }
-
- // statusCallback optional
- if (statusCallback && (typeof statusCallback !== "function")) {
- console.log("Media Error: statusCallback is not a function");
- return;
- }
-
- // statusCallback optional
- if (positionCallback && (typeof positionCallback !== "function")) {
- console.log("Media Error: positionCallback is not a function");
- return;
- }
-
- this.id = PhoneGap.createUUID();
- PhoneGap.mediaObjects[this.id] = this;
- this.src = src;
- this.successCallback = successCallback;
- this.errorCallback = errorCallback;
- this.statusCallback = statusCallback;
- this.positionCallback = positionCallback;
- this._duration = -1;
- this._position = -1;
-};
-
-// Media messages
-Media.MEDIA_STATE = 1;
-Media.MEDIA_DURATION = 2;
-Media.MEDIA_ERROR = 9;
-
-// Media states
-Media.MEDIA_NONE = 0;
-Media.MEDIA_STARTING = 1;
-Media.MEDIA_RUNNING = 2;
-Media.MEDIA_PAUSED = 3;
-Media.MEDIA_STOPPED = 4;
-Media.MEDIA_MSG = ["None", "Starting", "Running", "Paused", "Stopped"];
-
-// TODO: Will MediaError be used?
-/**
- * This class contains information about any Media errors.
- * @constructor
- */
-MediaError = function() {
- this.code = null;
- this.message = "";
-};
-
-MediaError.MEDIA_ERR_ABORTED = 1;
-MediaError.MEDIA_ERR_NETWORK = 2;
-MediaError.MEDIA_ERR_DECODE = 3;
-MediaError.MEDIA_ERR_NONE_SUPPORTED = 4;
-
-/**
- * Start or resume playing audio file.
- */
-Media.prototype.play = function() {
- PhoneGap.exec(null, null, "Media", "startPlayingAudio", [this.id, this.src]);
-};
-
-/**
- * Stop playing audio file.
- */
-Media.prototype.stop = function() {
- return PhoneGap.exec(null, null, "Media", "stopPlayingAudio", [this.id]);
-};
-
-/**
- * Pause playing audio file.
- */
-Media.prototype.pause = function() {
- PhoneGap.exec(null, null, "Media", "pausePlayingAudio", [this.id]);
-};
-
-/**
- * Get duration of an audio file.
- * The duration is only set for audio that is playing, paused or stopped.
- *
- * @return duration or -1 if not known.
- */
-Media.prototype.getDuration = function() {
- return this._duration;
-};
-
-/**
- * Get position of audio.
- *
- * @return
- */
-Media.prototype.getCurrentPosition = function(success, fail) {
- PhoneGap.exec(success, fail, "Media", "getCurrentPositionAudio", [this.id]);
-};
-
-/**
- * Start recording audio file.
- */
-Media.prototype.startRecord = function() {
- PhoneGap.exec(null, null, "Media", "startRecordingAudio", [this.id, this.src]);
-};
-
-/**
- * Stop recording audio file.
- */
-Media.prototype.stopRecord = function() {
- PhoneGap.exec(null, null, "Media", "stopRecordingAudio", [this.id]);
-};
-
-/**
- * Release the resources.
- */
-Media.prototype.release = function() {
- PhoneGap.exec(null, null, "Media", "release", [this.id]);
-};
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("network")) {
-PhoneGap.addResource("network");
-
-/**
- * This class contains information about any NetworkStatus.
- * @constructor
- */
-NetworkStatus = function() {
- //this.code = null;
- //this.message = "";
-};
-
-NetworkStatus.NOT_REACHABLE = 0;
-NetworkStatus.REACHABLE_VIA_CARRIER_DATA_NETWORK = 1;
-NetworkStatus.REACHABLE_VIA_WIFI_NETWORK = 2;
-
-/**
- * This class provides access to device Network data (reachability).
- * @constructor
- */
-Network = function() {
- /**
- * The last known Network status.
- * { hostName: string, ipAddress: string,
- remoteHostStatus: int(0/1/2), internetConnectionStatus: int(0/1/2), localWiFiConnectionStatus: int (0/2) }
- */
- this.lastReachability = null;
-};
-
-/**
- * Called by the geolocation framework when the reachability status has changed.
- * @param {Reachibility} reachability The current reachability status.
- */
-// TODO: Callback from native code not implemented for Android
-Network.prototype.updateReachability = function(reachability) {
- this.lastReachability = reachability;
-};
-
-/**
- * Determine if a URI is reachable over the network.
-
- * @param {Object} uri
- * @param {Function} callback
- * @param {Object} options (isIpAddress:boolean)
- */
-Network.prototype.isReachable = function(uri, callback, options) {
- var isIpAddress = false;
- if (options && options.isIpAddress) {
- isIpAddress = options.isIpAddress;
- }
- PhoneGap.exec(callback, null, "Network Status", "isReachable", [uri, isIpAddress]);
-};
-
-PhoneGap.addConstructor(function() {
- if (typeof navigator.network === "undefined") {
- navigator.network = new Network();
- }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("notification")) {
-PhoneGap.addResource("notification");
-
-/**
- * This class provides access to notifications on the device.
- */
-Notification = function() {
-};
-
-/**
- * Open a native alert dialog, with a customizable title and button text.
- *
- * @param {String} message Message to print in the body of the alert
- * @param {Function} completeCallback The callback that is called when user clicks on a button.
- * @param {String} title Title of the alert dialog (default: Alert)
- * @param {String} buttonLabel Label of the close button (default: OK)
- */
-Notification.prototype.alert = function(message, completeCallback, title, buttonLabel) {
- var _title = (title || "Alert");
- var _buttonLabel = (buttonLabel || "OK");
- PhoneGap.exec(completeCallback, null, "Notification", "alert", [message,_title,_buttonLabel]);
-};
-
-/**
- * Open a native confirm dialog, with a customizable title and button text.
- * The result that the user selects is returned to the result callback.
- *
- * @param {String} message Message to print in the body of the alert
- * @param {Function} resultCallback The callback that is called when user clicks on a button.
- * @param {String} title Title of the alert dialog (default: Confirm)
- * @param {String} buttonLabels Comma separated list of the labels of the buttons (default: 'OK,Cancel')
- */
-Notification.prototype.confirm = function(message, resultCallback, title, buttonLabels) {
- var _title = (title || "Confirm");
- var _buttonLabels = (buttonLabels || "OK,Cancel");
- PhoneGap.exec(resultCallback, null, "Notification", "confirm", [message,_title,_buttonLabels]);
-};
-
-/**
- * Start spinning the activity indicator on the statusbar
- */
-Notification.prototype.activityStart = function() {
- PhoneGap.exec(null, null, "Notification", "activityStart", ["Busy","Please wait..."]);
-};
-
-/**
- * Stop spinning the activity indicator on the statusbar, if it's currently spinning
- */
-Notification.prototype.activityStop = function() {
- PhoneGap.exec(null, null, "Notification", "activityStop", []);
-};
-
-/**
- * Display a progress dialog with progress bar that goes from 0 to 100.
- *
- * @param {String} title Title of the progress dialog.
- * @param {String} message Message to display in the dialog.
- */
-Notification.prototype.progressStart = function(title, message) {
- PhoneGap.exec(null, null, "Notification", "progressStart", [title, message]);
-};
-
-/**
- * Set the progress dialog value.
- *
- * @param {Number} value 0-100
- */
-Notification.prototype.progressValue = function(value) {
- PhoneGap.exec(null, null, "Notification", "progressValue", [value]);
-};
-
-/**
- * Close the progress dialog.
- */
-Notification.prototype.progressStop = function() {
- PhoneGap.exec(null, null, "Notification", "progressStop", []);
-};
-
-/**
- * Causes the device to blink a status LED.
- *
- * @param {Integer} count The number of blinks.
- * @param {String} colour The colour of the light.
- */
-Notification.prototype.blink = function(count, colour) {
- // NOT IMPLEMENTED
-};
-
-/**
- * Causes the device to vibrate.
- *
- * @param {Integer} mills The number of milliseconds to vibrate for.
- */
-Notification.prototype.vibrate = function(mills) {
- PhoneGap.exec(null, null, "Notification", "vibrate", [mills]);
-};
-
-/**
- * Causes the device to beep.
- * On Android, the default notification ringtone is played "count" times.
- *
- * @param {Integer} count The number of beeps.
- */
-Notification.prototype.beep = function(count) {
- PhoneGap.exec(null, null, "Notification", "beep", [count]);
-};
-
-PhoneGap.addConstructor(function() {
- if (typeof navigator.notification === "undefined") {
- navigator.notification = new Notification();
- }
-});
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-if (!PhoneGap.hasResource("position")) {
-PhoneGap.addResource("position");
-
-/**
- * This class contains position information.
- * @param {Object} lat
- * @param {Object} lng
- * @param {Object} acc
- * @param {Object} alt
- * @param {Object} altacc
- * @param {Object} head
- * @param {Object} vel
- * @constructor
- */
-Position = function(coords, timestamp) {
- this.coords = coords;
- this.timestamp = (timestamp !== 'undefined') ? timestamp : new Date().getTime();
-};
-
-Coordinates = function(lat, lng, alt, acc, head, vel, altacc) {
- /**
- * The latitude of the position.
- */
- this.latitude = lat;
- /**
- * The longitude of the position,
- */
- this.longitude = lng;
- /**
- * The accuracy of the position.
- */
- this.accuracy = acc;
- /**
- * The altitude of the position.
- */
- this.altitude = alt;
- /**
- * The direction the device is moving at the position.
- */
- this.heading = head;
- /**
- * The velocity with which the device is moving at the position.
- */
- this.speed = vel;
- /**
- * The altitude accuracy of the position.
- */
- this.altitudeAccuracy = (altacc !== 'undefined') ? altacc : null;
-};
-
-/**
- * This class specifies the options for requesting position data.
- * @constructor
- */
-PositionOptions = function() {
- /**
- * Specifies the desired position accuracy.
- */
- this.enableHighAccuracy = true;
- /**
- * The timeout after which if position data cannot be obtained the errorCallback
- * is called.
- */
- this.timeout = 10000;
-};
-
-/**
- * This class contains information about any GSP errors.
- * @constructor
- */
-PositionError = function() {
- this.code = null;
- this.message = "";
-};
-
-PositionError.UNKNOWN_ERROR = 0;
-PositionError.PERMISSION_DENIED = 1;
-PositionError.POSITION_UNAVAILABLE = 2;
-PositionError.TIMEOUT = 3;
-};
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010, IBM Corporation
- */
-
-/*
- * This is purely for the Android 1.5/1.6 HTML 5 Storage
- * I was hoping that Android 2.0 would deprecate this, but given the fact that
- * most manufacturers ship with Android 1.5 and do not do OTA Updates, this is required
- */
-
-if (!PhoneGap.hasResource("storage")) {
-PhoneGap.addResource("storage");
-
-/**
- * Storage object that is called by native code when performing queries.
- * PRIVATE METHOD
- */
-var DroidDB = function() {
- this.queryQueue = {};
-};
-
-/**
- * Callback from native code when query is complete.
- * PRIVATE METHOD
- *
- * @param id Query id
- */
-DroidDB.prototype.completeQuery = function(id, data) {
- var query = this.queryQueue[id];
- if (query) {
- try {
- delete this.queryQueue[id];
-
- // Get transaction
- var tx = query.tx;
-
- // If transaction hasn't failed
- // Note: We ignore all query results if previous query
- // in the same transaction failed.
- if (tx && tx.queryList[id]) {
-
- // Save query results
- var r = new DroidDB_Result();
- r.rows.resultSet = data;
- r.rows.length = data.length;
- try {
- if (typeof query.successCallback === 'function') {
- query.successCallback(query.tx, r);
- }
- } catch (ex) {
- console.log("executeSql error calling user success callback: "+ex);
- }
-
- tx.queryComplete(id);
- }
- } catch (e) {
- console.log("executeSql error: "+e);
- }
- }
-};
-
-/**
- * Callback from native code when query fails
- * PRIVATE METHOD
- *
- * @param reason Error message
- * @param id Query id
- */
-DroidDB.prototype.fail = function(reason, id) {
- var query = this.queryQueue[id];
- if (query) {
- try {
- delete this.queryQueue[id];
-
- // Get transaction
- var tx = query.tx;
-
- // If transaction hasn't failed
- // Note: We ignore all query results if previous query
- // in the same transaction failed.
- if (tx && tx.queryList[id]) {
- tx.queryList = {};
-
- try {
- if (typeof query.errorCallback === 'function') {
- query.errorCallback(query.tx, reason);
- }
- } catch (ex) {
- console.log("executeSql error calling user error callback: "+ex);
- }
-
- tx.queryFailed(id, reason);
- }
-
- } catch (e) {
- console.log("executeSql error: "+e);
- }
- }
-};
-
-/**
- * Transaction object
- * PRIVATE METHOD
- */
-var DroidDB_Tx = function() {
-
- // Set the id of the transaction
- this.id = PhoneGap.createUUID();
-
- // Callbacks
- this.successCallback = null;
- this.errorCallback = null;
-
- // Query list
- this.queryList = {};
-};
-
-
-var DatabaseShell = function() {
-};
-
-/**
- * Start a transaction.
- * Does not support rollback in event of failure.
- *
- * @param process {Function} The transaction function
- * @param successCallback {Function}
- * @param errorCallback {Function}
- */
-DatabaseShell.prototype.transaction = function(process, errorCallback, successCallback) {
- var tx = new DroidDB_Tx();
- tx.successCallback = successCallback;
- tx.errorCallback = errorCallback;
- try {
- process(tx);
- } catch (e) {
- console.log("Transaction error: "+e);
- if (tx.errorCallback) {
- try {
- tx.errorCallback(e);
- } catch (ex) {
- console.log("Transaction error calling user error callback: "+e);
- }
- }
- }
-};
-
-
-/**
- * Mark query in transaction as complete.
- * If all queries are complete, call the user's transaction success callback.
- *
- * @param id Query id
- */
-DroidDB_Tx.prototype.queryComplete = function(id) {
- delete this.queryList[id];
-
- // If no more outstanding queries, then fire transaction success
- if (this.successCallback) {
- var count = 0;
- var i;
- for (i in this.queryList) {
- if (this.queryList.hasOwnProperty(i)) {
- count++;
- }
- }
- if (count === 0) {
- try {
- this.successCallback();
- } catch(e) {
- console.log("Transaction error calling user success callback: " + e);
- }
- }
- }
-};
-
-/**
- * Mark query in transaction as failed.
- *
- * @param id Query id
- * @param reason Error message
- */
-DroidDB_Tx.prototype.queryFailed = function(id, reason) {
-
- // The sql queries in this transaction have already been run, since
- // we really don't have a real transaction implemented in native code.
- // However, the user callbacks for the remaining sql queries in transaction
- // will not be called.
- this.queryList = {};
-
- if (this.errorCallback) {
- try {
- this.errorCallback(reason);
- } catch(e) {
- console.log("Transaction error calling user error callback: " + e);
- }
- }
-};
-
-/**
- * SQL query object
- * PRIVATE METHOD
- *
- * @param tx The transaction object that this query belongs to
- */
-var DroidDB_Query = function(tx) {
-
- // Set the id of the query
- this.id = PhoneGap.createUUID();
-
- // Add this query to the queue
- droiddb.queryQueue[this.id] = this;
-
- // Init result
- this.resultSet = [];
-
- // Set transaction that this query belongs to
- this.tx = tx;
-
- // Add this query to transaction list
- this.tx.queryList[this.id] = this;
-
- // Callbacks
- this.successCallback = null;
- this.errorCallback = null;
-
-};
-
-/**
- * Execute SQL statement
- *
- * @param sql SQL statement to execute
- * @param params Statement parameters
- * @param successCallback Success callback
- * @param errorCallback Error callback
- */
-DroidDB_Tx.prototype.executeSql = function(sql, params, successCallback, errorCallback) {
-
- // Init params array
- if (typeof params === 'undefined') {
- params = [];
- }
-
- // Create query and add to queue
- var query = new DroidDB_Query(this);
- droiddb.queryQueue[query.id] = query;
-
- // Save callbacks
- query.successCallback = successCallback;
- query.errorCallback = errorCallback;
-
- // Call native code
- PhoneGap.exec(null, null, "Storage", "executeSql", [sql, params, query.id]);
-};
-
-/**
- * SQL result set that is returned to user.
- * PRIVATE METHOD
- */
-DroidDB_Result = function() {
- this.rows = new DroidDB_Rows();
-};
-
-/**
- * SQL result set object
- * PRIVATE METHOD
- */
-DroidDB_Rows = function() {
- this.resultSet = []; // results array
- this.length = 0; // number of rows
-};
-
-/**
- * Get item from SQL result set
- *
- * @param row The row number to return
- * @return The row object
- */
-DroidDB_Rows.prototype.item = function(row) {
- return this.resultSet[row];
-};
-
-/**
- * Open database
- *
- * @param name Database name
- * @param version Database version
- * @param display_name Database display name
- * @param size Database size in bytes
- * @return Database object
- */
-DroidDB_openDatabase = function(name, version, display_name, size) {
- PhoneGap.exec(null, null, "Storage", "openDatabase", [name, version, display_name, size]);
- var db = new DatabaseShell();
- return db;
-};
-
-
-/**
- * For browsers with no localStorage we emulate it with SQLite. Follows the w3c api.
- * TODO: Do similar for sessionStorage.
- */
-
-var CupcakeLocalStorage = function() {
- try {
-
- this.db = openDatabase('localStorage', '1.0', 'localStorage', 2621440);
- var storage = {};
- this.length = 0;
- function setLength (length) {
- this.length = length;
- localStorage.length = length;
- }
- this.db.transaction(
- function (transaction) {
- var i;
- transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
- transaction.executeSql('SELECT * FROM storage', [], function(tx, result) {
- for(var i = 0; i < result.rows.length; i++) {
- storage[result.rows.item(i)['id']] = result.rows.item(i)['body'];
- }
- setLength(result.rows.length);
- PhoneGap.initializationComplete("cupcakeStorage");
- });
-
- },
- function (err) {
- alert(err.message);
- }
- );
- this.setItem = function(key, val) {
- if (typeof(storage[key])=='undefined') {
- this.length++;
- }
- storage[key] = val;
- this.db.transaction(
- function (transaction) {
- transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
- transaction.executeSql('REPLACE INTO storage (id, body) values(?,?)', [key,val]);
- }
- );
- };
- this.getItem = function(key) {
- return storage[key];
- };
- this.removeItem = function(key) {
- delete storage[key];
- this.length--;
- this.db.transaction(
- function (transaction) {
- transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
- transaction.executeSql('DELETE FROM storage where id=?', [key]);
- }
- );
- };
- this.clear = function() {
- storage = {};
- this.length = 0;
- this.db.transaction(
- function (transaction) {
- transaction.executeSql('CREATE TABLE IF NOT EXISTS storage (id NVARCHAR(40) PRIMARY KEY, body NVARCHAR(255))');
- transaction.executeSql('DELETE FROM storage', []);
- }
- );
- };
- this.key = function(index) {
- var i = 0;
- for (var j in storage) {
- if (i==index) {
- return j;
- } else {
- i++;
- }
- }
- return null;
- }
-
- } catch(e) {
- alert("Database error "+e+".");
- return;
- }
-};
-PhoneGap.addConstructor(function() {
- var setupDroidDB = function() {
- navigator.openDatabase = window.openDatabase = DroidDB_openDatabase;
- window.droiddb = new DroidDB();
- }
- if ((typeof window.openDatabase === "undefined") || (navigator.userAgent.indexOf("Android 3.0") != -1)) {
- setupDroidDB();
- } else {
- window.openDatabase_orig = window.openDatabase;
- window.openDatabase = function(name, version, desc, size) {
- var db = window.openDatabase_orig(name, version, desc, size);
- if (db == null) {
- setupDroidDB();
- return DroidDB_openDatabase(name, version, desc, size);
- } else return db;
- }
- }
-
- if (typeof window.localStorage === "undefined") {
- navigator.localStorage = window.localStorage = new CupcakeLocalStorage();
- PhoneGap.waitForInitialization("cupcakeStorage");
- }
-});
-};
--- /dev/null
+var View = new function() {
+ var self = this;
+ //self.minOffset = 1000;
+ self.categories = {
+ autor: 'Autorzy',
+ rodzaj: 'Rodzaje',
+ gatunek: 'Gatunki',
+ epoka: 'Epoki'
+ };
+ self.category_msc = {
+ autor: 'autorze',
+ rodzaj: 'rodzaju',
+ gatunek: 'gatunku',
+ epoka: 'epoce'
+ };
+
+
+ self.init = function(success, error) {
+ console.log('View.init');
+
+ self._searchbox = document.getElementById("searchbox");
+ self._searchinput = document.getElementById("search");
+ self._content = document.getElementById("content");
+
+ self.current = '';
+ self.currentView = '';
+ self.currentPar = '';
+ self.currentTitle = '';
+
+ document.getElementById("cover").style.display = 'none';
+ self.enter('');
+
+ success && success();
+ };
+
+
+ this.sanitize = function(text) {
+ return text.replace(/&/g, "&").replace(/</g, "<");
+ };
+
+ this.showSearch = function() {
+ self._searchbox.style.display = "block";
+ };
+
+ this.hideSearch = function() {
+ self._searchbox.style.display = "none";
+ };
+
+ this.spinner = function(text) {
+ if (!text)
+ text = "Ładowanie";
+ self._content.innerHTML = "<div class='spinner'><img src='img/spinner.gif' /><div id='spinnertext'>" + text +"</div></div>";
+ setOffset(0);
+ };
+
+ this.content = function(text, offset) {
+ console.log('content');
+
+ self._content.innerHTML = '';
+ self._content.innerHTML = text;
+ setOffset(offset);
+ }
+
+ this.enter = function(url, offset) {
+ console.log('View.enter: ' + url);
+
+ var view = 'Index';
+ var arg = null;
+
+ if (url.length) {
+ var slash_index = url.indexOf('/');
+ if (slash_index != -1) {
+ view = url.substr(0, slash_index);
+ arg = url.substr(slash_index + 1);
+ }
+ else {
+ view = url;
+ }
+ }
+ console.log('View.enter: ' + view + ' ' + arg);
+ self.current = url;
+ self.currentView = view;
+ self.currentPar = arg;
+ self['enter' + view](arg, offset);
+ }
+
+ this.enterIndex = function(arg, offset) {
+ console.log('enterIndex');
+ Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", true);
+ self.showSearch();
+ self.currentTitle = "Początek";
+ var html = "";
+
+ html += "<div class='buttons'>";
+ html += Links.button('Last', '', 'Ostatnio czytane');
+ html += Links.button('Bookmarks', '', 'Zakładki');
+
+ for (category in self.categories)
+ html += Links.button('Category', category, self.categories[category], 0);
+ html += "</div>";
+
+ html += "</div>" +"";
+ /*"<p id='logo'><img src='img/logo-wl-nq8.png' alt='Wolne Lektury' /><br/>\n" +
+ "szkolna biblioteka internetowa" +
+ "</p>";*/
+ self.content(html, offset);
+ };
+
+ this.enterBook = function(id, offset) {
+ id = parseInt(id);
+ console.log('enterBook: ' + id);
+ Menu.setInfoButton("BookInfo", "Informacje o utworze", true);
+ self.showSearch();
+
+ Catalogue.withBook(id, function(book) {
+ self.currentTitle = book.authors + ', ' + book.title;
+
+ Catalogue.withChildren(id, function(children) {
+ var html = "<h1><span class='subheader'>";
+ html += book.authors;
+ html += "</span>" + book.title + "</h1>\n";
+ if (book.html_file) {
+ html += "<div class='buttons'>" + Links.button('BookText', id, "Czytaj tekst") + "</div>";
+ }
+ if (children.length) {
+ html += "<div class='buttons'>";
+ for (c in children) {
+ child = children[c];
+ html += Links.bookLink(child);
+ }
+ html += "</div>";
+ }
+ self.content(html, offset);
+ });
+ }, function() {
+ History.goBack();
+ });
+ };
+
+ this.enterBookText = function(id, offset) {
+ self.hideSearch();
+ self.spinner("Otwieranie utworu");
+ console.log('enterBookText: ' + id);
+ Menu.setInfoButton("BookInfo", "Informacje o utworze", true);
+ id = parseInt(id);
+
+ setTimeout("History.addRead("+id+");", 0);
+
+ FileRepo.withHtml(id, function(data) {
+ self.content(data, offset);
+ }, function(err) {
+ alert("Błąd pobierania: nie udało się pobrać treści utworu.");
+ History.goBack();
+ });
+ Catalogue.withBook(id, function(book) {
+ self.currentTitle = book.authors + ', ' + book.title;
+ });
+ };
+
+
+ this.enterLast = function(ignored, offset) {
+ console.log("enterLast");
+ self.showSearch();
+ Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", true);
+ self.currentTitle = 'Ostatnio czytane';
+ var html = "<h1><span class='subheader'>Ostatnio czytane</h1>\n";
+
+ var last_read = History.lastRead();
+ var some_books = false;
+
+ html += "<div class='buttons'>";
+ var add_books = function() {
+ if (last_read.length) {
+ var id = last_read.shift();
+ Catalogue.withBook(id, function(book) {
+ html += Links.bookLink(book);
+ some_books = true;
+ add_books();
+ }, function() {
+ add_books();
+ });
+ }
+ else {
+ if (!some_books) {
+ html += "<p>Nie przeczytano żadnych utworów.</p>";
+ }
+ html += "</div>";
+ self.content(html, offset);
+ }
+ };
+ add_books();
+ };
+
+
+ this.enterBookmarks = function(ignored, offset) {
+ console.log("enterBookmarks");
+ self.showSearch();
+ Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", true);
+ self.currentTitle = 'Zakładki';
+ var html = "<h1><span class='subheader'>Zakładki</h1>\n";
+
+ var bookmarks = History.bookmarks();
+ if (!bookmarks.length) {
+ html += "<p>Nie utworzono żadnych zakładek.</p>";
+ self.content(html, offset);
+ return;
+ }
+
+ html += "<div class='buttons bookmarks'>";
+ for (i in bookmarks) {
+ var bm = bookmarks[i];
+
+ var text = bm.name;
+ text += "<div class='sub'>" + bm.title + "</div>";
+ html += Links.deleteButton(bm.id);
+ html += Links.button(bm.view, bm.par, text, bm.offset);
+ }
+ html += "</div>";
+ self.content(html, offset);
+ };
+
+ this.onBookmarkChange = function() {
+ // TODO: preserve offset
+ if (self.currentView == 'Bookmarks') {
+ self.enterBookmarks();
+ }
+ };
+
+ this.enterTag = function(id, offset) {
+ id = parseInt(id);
+ console.log('enterTag: ' + id);
+ Menu.setInfoButton("TagInfo", "Informacje o...", true);
+ self.showSearch();
+
+ self.spinner("Otwieranie listy utworów");
+
+ Catalogue.withTag(id, function(tag) {
+ Menu.setInfoButton("TagInfo", "Informacje o " + self.category_msc[tag.category], true);
+ self.currentTitle = tag.category + ': ' + tag.name;
+ var html = "<h1><span class='subheader upper'>" + tag.category + ': </span>' + tag.name + "</h1>\n";
+ html += "<div class='buttons'>";
+ if (tag.books) {
+ Catalogue.withBooks(tag.books, function(books) {
+ for (var i in books) {
+ var book = books[i];
+ html += Links.bookLink(book);
+ }
+ html += "</div>";
+ self.content(html, offset);
+ });
+ }
+ }, function() {
+ History.goBack();
+ });
+ };
+
+
+ this.enterCategory = function(category, offset) {
+ console.log('enterCategory: ' + category);
+ Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", true);
+ self.spinner("Otwieranie katalogu");
+ self.showSearch();
+ self.currentTitle = self.categories[category];
+
+ Catalogue.withCategory(category, function(tags) {
+ var html = "<h1>" + self.categories[category] + "</h1>\n";
+ html += "<div class='buttons'>";
+ for (i in tags) {
+ tag = tags[i];
+ html += Links.button('Tag', tag.id, tag.name);
+ }
+ html += "</div>";
+ self.content(html, offset);
+ });
+ };
+
+
+ this.enterSearch = function(query, offset) {
+ console.log('enterSearch: ' + query);
+ Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", true);
+ self.currentTitle = 'Szukaj: ' + query;
+ self.showSearch();
+
+ var html = "<h1><span class='subheader'>Szukana fraza:</span>" + View.sanitize(query) + "</h1>\n";
+
+ if (query.length < 2) {
+ html += "<p>Szukana fraza musi mieć co najmniej dwa znaki</p>";
+ self.content(html, offset);
+ return;
+ }
+
+ Catalogue.withSearch(query, function(results) {
+ if (results.length == 1) {
+ var result = results[0];
+ if (result.view == 'Book' && result.item.html_file) {
+ self.enter(Links.href('BookText', result.item.id));
+ }
+ else {
+ self.enter(Links.href(result.view, result.item.id));
+ }
+ return;
+ }
+ if (results.length == 0) {
+ html += "<p>Brak wyników wyszukiwania</p>";
+ }
+ else {
+ html += "<div class='buttons'>";
+ for (var i in results) {
+ var result = results[i];
+ if (result.view == 'Book')
+ html += Links.bookLink(result.item)
+ else
+ html += Links.button(result.view, result.item.id, result.item.name+"<div class='sub'>"+result.item.category+"</div>");
+ }
+ html += "</div>";
+ }
+ self.content(html, offset);
+ });
+ };
+
+
+ /* info */
+
+ this.enterProjectInfo = function(arg, offset) {
+ console.log('enterProjectInfo');
+ Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", false);
+ self.hideSearch();
+ self.currentTitle = "Informacje o projekcie";
+
+ var html = "";
+
+ html += '<div class="info">';
+
+
+ html += "<p style='text-align:center'><img src='img/logo-wl.png' /></p>";
+ html += "<p>Biblioteka internetowa Wolne Lektury "+
+" udostępnia w swoich zbiorach lektury szkolne zalecane do użytku przez" +
+" Ministerstwo Edukacji Narodowej i inne dzieła literatury.</p>";
+
+ html += "<p style='text-align:center'><img src='img/logo-fnp.png' /></p>";
+
+ html += "<img style='float:left;' src='img/procent.png' />" +
+ "<p style='margin-left: 50px'>" +
+ "Przekaż 1% podatku na rozwój Wolnych Lektur.<br/>" +
+ "Fundacja Nowoczesna Polska<br/>" +
+ "KRS 0000070056</p>";
+
+ html += "<p>Większość pozycji w bibliotece należy do domeny publicznej "+
+ "co oznacza, że nie są już chronione majatkowym prawem autorskim, "+
+ "a więc można je swobodnie wykorzystywać, publikować i rozpowszechniać. "+
+ "Publikujemy również kilka utworów, które autorzy udostępnili na wolnej licencji "+
+ "<a href='http://creativecommons.org/licenses/by-sa/3.0/deed.pl'>"+
+ "Creative Commons Uznanie Autorstwa - Na Tych Samych Warunkach 3.0.PL</a>.</p>";
+
+ html += "<p style='text-align:center'><img src='img/cc-by-sa.png' /></p>";
+
+ html += "<p>Więcej informacji o projekcie znajduje sie na stronie <a href='http://www.wolnelektury.pl'>http://www.wolnelektury.pl</a>.</p>";
+
+ html += '</div>';
+
+
+ self.content(html, offset);
+ };
+
+
+ this.enterBookInfo = function(id, offset) {
+ id = parseInt(id);
+ console.log('enterBookInfo: ' + id);
+ Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", true);
+ self.hideSearch();
+
+ Catalogue.withBook(id, function(book) {
+ self.currentTitle = "Informacje o: " + book.title;
+
+ var html = '<h2>' + book.authors + ', ' + book.title + '</h2>';
+
+ var url = WL + '/api/book/' + id + '/info.html';
+
+ var xhr = new XMLHttpRequest();
+ xhr.open("GET", url);
+ xhr.onload = function() {
+ console.log('BookInfo: fetched by ajax: ' + url);
+
+ html += '<div class="info">';
+ html += xhr.responseText;
+ html += '</div>';
+
+ self.content(html, offset);
+ }
+ xhr.onerror = function(e) {
+ self.content("Brak informacji.", offset);
+ }
+ xhr.send();
+ }, function() {
+ History.goBack();
+ });
+ };
+
+
+ this.enterTagInfo = function(id, offset) {
+ id = parseInt(id);
+ console.log('enterTagInfo: ' + id);
+ Menu.setInfoButton("ProjectInfo", "Informacje o projekcie", true);
+ self.hideSearch();
+
+ Catalogue.withTag(id, function(tag) {
+ self.currentTitle = "Informacje o " + tag.name;
+ var html = '<h2>' + tag.name + '</h2>';
+
+ var url = WL + '/api/tag/' + id + '/info.html';
+
+ var xhr = new XMLHttpRequest();
+ xhr.open("GET", url);
+ xhr.onload = function() {
+ console.log('TagInfo: fetched by ajax: ' + url);
+
+ html += '<div class="info">';
+ html += xhr.responseText;
+ html += '</div>';
+
+ self.content(html, offset);
+ }
+ xhr.onerror = function(e) {
+ self.content("Brak informacji.", offset);
+ }
+ xhr.send();
+ }, function() {
+ History.goBack();
+ });
+ };
+
+
+ /* search form submit callback */
+ this.search = function() {
+ History.visit('Search/' + self._searchinput.value);
+ return false;
+ }
+
+
+
+}
# project structure.
# Project target.
-target=android-4
+target=android-7
public static final int main=0x7f030000;
}
public static final class string {
- public static final int app_name=0x7f040001;
- public static final int hello=0x7f040000;
+ public static final int app_name=0x7f050001;
+ public static final int hello=0x7f050000;
+ }
+ public static final class xml {
+ public static final int plugins=0x7f040000;
}
}
+++ /dev/null
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-import sqlite3
-import simplejson as j
-
-add_book = "INSERT INTO book (id, title, html_file, html_file_size, parent, parent_number) VALUES (:id, :title, :html, :html_size, :parent, :parent_number);"
-add_book_tag = "INSERT INTO book_tag (book, tag) VALUES (:book, :tag);"
-add_tag = "INSERT INTO tag (id, category, name, sort_key, _books) VALUES (:id, :category, :name, :sort_key, :_books);"
-
-
-
-dbs = sqlite3.connect('Databases.db')
-dbs.executescript("""
-CREATE TABLE Databases (guid INTEGER PRIMARY KEY AUTOINCREMENT, origin TEXT, name TEXT, displayName TEXT, estimatedSize INTEGER, path TEXT);
-CREATE TABLE Origins (origin TEXT UNIQUE ON CONFLICT REPLACE, quota INTEGER NOT NULL ON CONFLICT FAIL);
-INSERT INTO Databases VALUES (1, 'file__0', 'wolnelektury', 'Wolne Lektury', 500000, '0000000000000001.db');
-INSERT INTO Origins Values ('file__0', 1000000);
-""")
-dbs.commit()
-dbs.close()
-
-
-
-db1 = sqlite3.connect('wolnelektury.db')
-db2 = sqlite3.connect('0000000000000001.db')
-
-categories = {'author': 'autor',
- 'epoch': 'epoka',
- 'genre': 'gatunek',
- 'kind': 'rodzaj',
- 'theme': 'motyw'
- }
-
-schema = """
-CREATE TABLE book (
- id INTEGER PRIMARY KEY,
- title VARCHAR,
- html_file VARCHAR,
- html_file_size INTEGER,
- parent INTEGER,
- parent_number INTEGER
- );
-CREATE INDEX IF NOT EXISTS book_title_index ON book (title);
-CREATE INDEX IF NOT EXISTS book_parent_index ON book (parent);
-
-CREATE TABLE tag (
- id INTEGER PRIMARY KEY,
- name VARCHAR,
- category VARCHAR,
- sort_key VARCHAR,
- _books VARCHAR);
-CREATE INDEX IF NOT EXISTS tag_name_index ON tag (name);
-CREATE INDEX IF NOT EXISTS tag_category_index ON tag (category);
-CREATE INDEX IF NOT EXISTS tag_sort_key_index ON tag (sort_key);
-
-CREATE TABLE book_tag (book INTEGER, tag INTEGER);
-CREATE INDEX IF NOT EXISTS book_tag_book ON book_tag (book);
-CREATE INDEX IF NOT EXISTS book_tag_tag_index ON book_tag (tag);
-"""
-
-db1.executescript(schema)
-db2.executescript(schema)
-
-
-def utf8ize(d):
- """ Convert every unicode field of d to unicode consisting
- of its utf-8 representation bytes as characters.
- Yes, this is weird and stupid, but it's what Android does."""
-
- for f in d:
- if isinstance(d[f], unicode):
- d[f] = d[f].encode('utf-8').decode('latin1')
-
-with open('initial.json') as f:
- data = j.load(f)
-
-books_by_id = {}
-tagged = {}
-
-for book in data['added']['books']:
- books_by_id[book['id']] = book
-
-for book in data['added']['books']:
- # gather parents' tags
- parental = []
- b = book
- while 'parent' in b:
- b = books_by_id[b['parent']]
- parental += b['tags']
- parental = set(parental)
-
- for tag in book['tags']:
- if tag not in parental:
- tagged.setdefault(tag, []).append(book)
-
-del books_by_id
-
-
-for book in data['added']['books']:
- if 'html' not in book:
- book['html'] = None
- if 'html_size' not in book:
- book['html_size'] = None
- if 'parent' not in book:
- book['parent'] = None
- if 'parent_number' not in book:
- book['parent_number'] = None
- for t in book['tags']:
- db1.execute(add_book_tag, {"book": book['id'], "tag": t})
- db2.execute(add_book_tag, {"book": book['id'], "tag": t})
-
- db2.execute(add_book, book)
- utf8ize(book)
- db1.execute(add_book, book)
-
-for tag in data['added']['tags']:
- tag['category'] = categories[tag['category']]
- tag['_books'] = ",".join(str(book['id']) for book in sorted(tagged.get(tag['id'], []), key=lambda b: b['title']))
-
- if tag['category'] == 'theme':
- continue
-
- db2.execute(add_tag, tag)
- utf8ize(tag)
- db1.execute(add_tag, tag)
-
-
-db1.commit()
-db1.close()
-db2.commit()
-db2.close()
+++ /dev/null
-{
- "added": {
- "books": [
- {
- "title": "[B\u00f3g mnie opu\u015bci\u0142...]",
- "html": "/media/lektura/napoj-cienisty-bog-mnie-opuscil.html",
- "html_size": 2113,
- "id": 1749,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "[Co\u015b tam mign\u0119\u0142o dalekiego...]",
- "html": "/media/lektura/napoj-cienisty-cos-tam-mignelo-dalekiego.html",
- "html_size": 1531,
- "id": 1753,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1383,
- "title": "[Dedykacja]",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 709,
- "html": "/media/lektura/but-w-butonierce-dedykacja_.html",
- "parent_number": 0,
- "id": 1357
- },
- {
- "parent": 1459,
- "title": "[Dedykacja]",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 1599,
- "html": "/media/lektura/piesni-dedykacja_______.html",
- "parent_number": 1,
- "id": 1454
- },
- {
- "parent": 1383,
- "title": "[Intermezzo (Czy widzieli\u015bcie...)]",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 593,
- "html": "/media/lektura/but-w-butonierce-intermezzo-czy-widzieliscie.html",
- "parent_number": 12,
- "id": 1360
- },
- {
- "parent": 1383,
- "title": "[Intermezzo (Zielone s\u0105 r\u0119ce moje...)]",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 936,
- "html": "/media/lektura/but-w-butonierce-intermezzo-zielone-sa-rece-moje.html",
- "parent_number": 20,
- "id": 1382
- },
- {
- "parent": 1383,
- "title": "[Jak introdukcja]",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 1227,
- "html": "/media/lektura/but-w-butonierce-jak-introdukcja.html",
- "parent_number": 1,
- "id": 1362
- },
- {
- "parent": 2230,
- "title": "[Motto]",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 854,
- "html": "/media/lektura/motto.html",
- "parent_number": 0,
- "id": 2212
- },
- {
- "title": "[M\u00f3dlmy si\u0119 \u015br\u00f3d drzew...]",
- "html": "/media/lektura/napoj-cienisty-modlmy-sie-srod-drzew.html",
- "html_size": 1155,
- "id": 1756,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1383,
- "title": "[Na bis]",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 3869,
- "html": "/media/lektura/but-w-butonierce-na-bis_.html",
- "parent_number": 26,
- "id": 1368
- },
- {
- "parent": 1459,
- "title": "[Pie\u015bni - nota edytorska]",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 7155,
- "html": "/media/lektura/piesni-nota-edytorska.html",
- "parent_number": 0,
- "id": 1456
- },
- {
- "parent": 1481,
- "title": "[Treny - Motto i dedykacja]",
- "tags": [
- 1991,
- 3,
- 1,
- 4
- ],
- "html_size": 6983,
- "html": "/media/lektura/treny-motto-i-dedykacja_______.html",
- "parent_number": 1,
- "id": 1479
- },
- {
- "parent": 1481,
- "title": "[Treny - nota edytorska]",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 2404,
- "html": "/media/lektura/treny-nota-edytorska.html",
- "parent_number": 0,
- "id": 1480
- },
- {
- "title": "[Uwi\u0119d\u0142y sad...]",
- "html": "/media/lektura/napoj-cienisty-uwiedly-sad.html",
- "html_size": 1167,
- "id": 1645,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "*** (Dobry wiecz\u00f3r, nazywam si\u0119 Mickiewicz...)",
- "html": "/media/lektura/dobry-wieczor-nazywam-sie-mickiewicz__.html",
- "html_size": 3649,
- "id": 969,
- "tags": [
- 2137,
- 1,
- 121,
- 2138
- ]
- },
- {
- "title": "A c\u00f3\u017c z t\u0105 Dziecin\u0105...",
- "html": "/media/lektura/a-coz-z-ta-dziecina.html",
- "html_size": 9282,
- "id": 2014,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "title": "A jednak ja nie w\u0105tpi\u0119 - bo si\u0119 pora zbli\u017ca",
- "html": "/media/lektura/a-jednak-ja-nie-watpie-bo-sie-pora-zbliza.html",
- "html_size": 2858,
- "id": 1111,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "A kiedy b\u0119dziesz...",
- "html": "/media/lektura/a-kiedy-bedziesz.html",
- "html_size": 4317,
- "id": 2053,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Abuzei i Tair",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1112,
- "html": "/media/lektura/abuzei-i-tair_.html",
- "parent_number": 0,
- "id": 1239
- },
- {
- "parent": 1875,
- "title": "Ach, ju\u017c i w rodzicielskim domu...",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 1786,
- "html": "/media/lektura/ach-juz-i-w-rodzicielskim-domu.html",
- "parent_number": 0,
- "id": 1862
- },
- {
- "parent": 1798,
- "title": "Ajudah",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 3056,
- "html": "/media/lektura/sonety-krymskie-ajudah_______.html",
- "parent_number": 18,
- "id": 1797
- },
- {
- "title": "Akordy jesienne",
- "html": "/media/lektura/akordy-jesienne___.html",
- "html_size": 66171,
- "id": 1721,
- "tags": [
- 339,
- 128,
- 121
- ]
- },
- {
- "title": "Akslop",
- "html": "/media/lektura/akslop__.html",
- "html_size": 1417,
- "id": 971,
- "tags": [
- 2137,
- 1,
- 121,
- 2138
- ]
- },
- {
- "title": "Akteon",
- "html": "/media/lektura/napoj-cienisty-akteon.html",
- "html_size": 4874,
- "id": 1745,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Albatros",
- "html": "/media/lektura/albatros.html",
- "html_size": 2129,
- "id": 2127,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Alcabon",
- "html": "/media/lektura/napoj-cienisty-alcabon.html",
- "html_size": 6666,
- "id": 1737,
- "tags": [
- 210,
- 337,
- 1,
- 128
- ]
- },
- {
- "parent": 1333,
- "title": "Alegoria",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2778,
- "html": "/media/lektura/alegoria-bajki-nowe_.html",
- "parent_number": 0,
- "id": 1279
- },
- {
- "parent": 1798,
- "title": "A\u0142uszta w dzie\u0144",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 5310,
- "html": "/media/lektura/sonety-krymskie-aluszta-w-dzien_______.html",
- "parent_number": 11,
- "id": 1791
- },
- {
- "parent": 1798,
- "title": "A\u0142uszta w nocy",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 2741,
- "html": "/media/lektura/sonety-krymskie-aluszta-w-nocy_______.html",
- "parent_number": 12,
- "id": 1779
- },
- {
- "title": "Amor i czaszka",
- "html": "/media/lektura/amor-i-czaszka.html",
- "html_size": 2779,
- "id": 2128,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Ampu\u0142ki",
- "html": "/media/lektura/kamien-ampulki.html",
- "html_size": 4240,
- "id": 1683,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Anio\u0142",
- "html": "/media/lektura/aniol.html",
- "html_size": 9773,
- "id": 1571,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Anio\u0142",
- "html": "/media/lektura/napoj-cienisty-aniol.html",
- "html_size": 2619,
- "id": 1746,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Anio\u0142 ognisty - m\u00f3j anio\u0142 lewy",
- "html": "/media/lektura/aniol-ognisty-moj-aniol-lewy.html",
- "html_size": 2302,
- "id": 1068,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Anio\u0142y stoj\u0105 na rodzinnych polach",
- "html": "/media/lektura/anioly-stoja-na-rodzinnych-polach.html",
- "html_size": 2111,
- "id": 1617,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Antek",
- "html": "/media/lektura/antek.html",
- "html_size": 83986,
- "id": 959,
- "tags": [
- 31,
- 54,
- 56,
- 1462
- ]
- },
- {
- "title": "Antygona",
- "html": "/media/lektura/antygona________.html",
- "html_size": 148913,
- "id": 26,
- "tags": [
- 152,
- 176,
- 177,
- 175
- ]
- },
- {
- "title": "Antymonachomachia",
- "html": "/media/lektura/antymonachomachia_1.html",
- "html_size": 225640,
- "id": 2126,
- "tags": [
- 31,
- 33,
- 34,
- 4653
- ]
- },
- {
- "title": "Aptekarzowa",
- "html": "/media/lektura/aptekarzowa.html",
- "html_size": 16939,
- "id": 853,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "parent": 1237,
- "title": "At\u0142as i kitaj",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2117,
- "html": "/media/lektura/atlas-i-kitaj_.html",
- "parent_number": 1,
- "id": 1240
- },
- {
- "parent": 1798,
- "title": "Bajdary",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 2959,
- "html": "/media/lektura/sonety-krymskie-bajdary_______.html",
- "parent_number": 10,
- "id": 1790
- },
- {
- "title": "Bajki i przypowie\u015bci",
- "id": 1237,
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ]
- },
- {
- "title": "Bajki nowe",
- "id": 1333,
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ]
- },
- {
- "parent": 1798,
- "title": "Bakczysaraj",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 5697,
- "html": "/media/lektura/sonety-krymskie-bakczysaraj_______.html",
- "parent_number": 6,
- "id": 1786
- },
- {
- "parent": 1798,
- "title": "Bakczysaraj w nocy",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 4634,
- "html": "/media/lektura/sonety-krymskie-bakczysaraj-w-nocy_______.html",
- "parent_number": 7,
- "id": 1787
- },
- {
- "title": "Ballada z tamtej strony",
- "html": "/media/lektura/ballada-z-tamtej-strony-ballada-z-tamtej-strony.html",
- "html_size": 3007,
- "id": 1671,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Ballady i romanse",
- "id": 291,
- "tags": [
- 210,
- 1,
- 23,
- 24
- ]
- },
- {
- "title": "Balladyna",
- "html": "/media/lektura/balladyna__.html",
- "html_size": 571999,
- "id": 1724,
- "tags": [
- 152,
- 24,
- 189,
- 175
- ]
- },
- {
- "title": "Ba\u0142wan ze \u015bniegu",
- "html": "/media/lektura/napoj-cienisty-balwan-ze-sniegu.html",
- "html_size": 3104,
- "id": 1747,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Baran dany na ofiar\u0119",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1844,
- "html": "/media/lektura/baran-dany-na-ofiare.html",
- "parent_number": 3,
- "id": 1337
- },
- {
- "title": "Baranki moje...",
- "html": "/media/lektura/baranki-moje.html",
- "html_size": 1545,
- "id": 1110,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Bartek zwyci\u0119zca",
- "html": "/media/lektura/bartek-zwyciezca.html",
- "html_size": 165197,
- "id": 1093,
- "tags": [
- 31,
- 1517,
- 56,
- 350
- ]
- },
- {
- "title": "Ba\u015b\u0144 o rumaku zakl\u0119tym",
- "html": "/media/lektura/klechdy-sezamowe-basn-o-rumaku-zakletym.html",
- "html_size": 105098,
- "id": 1898,
- "tags": [
- 312,
- 31,
- 337,
- 128
- ]
- },
- {
- "parent": 295,
- "title": "Bazyliszek",
- "tags": [
- 31,
- 126,
- 128,
- 127
- ],
- "html_size": 44931,
- "html": "/media/lektura/bazyliszek.html",
- "parent_number": 3,
- "id": 1602
- },
- {
- "title": "B\u0105k i pi\u0142ka",
- "html": "/media/lektura/bak-i-pilka.html",
- "html_size": 9202,
- "id": 1572,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Beczka Amontillada",
- "html": "/media/lektura/beczka-amontillada.html",
- "html_size": 28197,
- "id": 1704,
- "tags": [
- 31,
- 1517,
- 4365,
- 24
- ]
- },
- {
- "title": "Bema pami\u0119ci \u017ca\u0142obny rapsod",
- "html": "/media/lektura/bema-pamieci-zalobny-rapsod.html",
- "html_size": 5893,
- "id": 1619,
- "tags": [
- 1,
- 2308,
- 24,
- 121
- ]
- },
- {
- "title": "Beniowski",
- "id": 2194,
- "tags": [
- 31,
- 5544,
- 24,
- 189
- ]
- },
- {
- "parent": 2194,
- "title": "Beniowski. Dalsze pie\u015bni",
- "tags": [
- 31,
- 5544,
- 24,
- 189
- ],
- "html_size": 658644,
- "html": "/media/lektura/beniowski-dalsze-piesni.html",
- "parent_number": 1,
- "id": 2193
- },
- {
- "parent": 2194,
- "title": "Beniowski. Pi\u0119\u0107 pierwszych pie\u015bni",
- "tags": [
- 31,
- 5544,
- 24,
- 189
- ],
- "html_size": 548128,
- "html": "/media/lektura/beniowski-piec-pierwszych-piesni_1.html",
- "parent_number": 0,
- "id": 2190
- },
- {
- "title": "Berenice",
- "html": "/media/lektura/berenice.html",
- "html_size": 36922,
- "id": 1766,
- "tags": [
- 31,
- 1517,
- 4365,
- 24
- ]
- },
- {
- "title": "Betleem",
- "html": "/media/lektura/napoj-cienisty-betleem.html",
- "html_size": 4143,
- "id": 1748,
- "tags": [
- 337,
- 1,
- 3035,
- 121
- ]
- },
- {
- "title": "Bez nut",
- "html": "/media/lektura/ballada-z-tamtej-strony-bez-nut.html",
- "html_size": 2871,
- "id": 1896,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Bezbronna istota",
- "html": "/media/lektura/bezbronna-istota.html",
- "html_size": 15631,
- "id": 854,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "parent": 295,
- "title": "Bia\u0142a Dama",
- "tags": [
- 31,
- 126,
- 128,
- 127
- ],
- "html_size": 12586,
- "html": "/media/lektura/legendy-warszawskie-biala-dama_______.html",
- "parent_number": 6,
- "id": 1605
- },
- {
- "title": "Bia\u0142o\u015bnie\u017cka i R\u00f3\u017canka",
- "html": "/media/lektura/biaosniezka-i-rozanka.html",
- "html_size": 23374,
- "id": 2158,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "Biedny m\u0142ynarczyk i kotek",
- "html": "/media/lektura/biedny-mynarczyk-i-kotek.html",
- "html_size": 20207,
- "id": 2159,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "B\u0142ogos\u0142awie\u0144stwo",
- "html": "/media/lektura/bogosawienstwo.html",
- "html_size": 9547,
- "id": 2129,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 2230,
- "title": "B\u0142ogos\u0142awie\u0144stwo (z Petrarki)",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2475,
- "html": "/media/lektura/blogoslawienstwo-z-petrarki.html",
- "parent_number": 1,
- "id": 2224
- },
- {
- "title": "Bo mi\u0119 matka moja mi\u0142a",
- "html": "/media/lektura/bo-mie-matka-moja-mila.html",
- "html_size": 966,
- "id": 1108,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Bo to jest wieszcza najja\u015bniejsza chwa\u0142a",
- "html": "/media/lektura/bo-to-jest-wieszcza-najjasniejsza-chwala.html",
- "html_size": 1259,
- "id": 1113,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Bocian i jele\u0144",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1223,
- "html": "/media/lektura/bocian-i-jelen-bajki-nowe.html",
- "parent_number": 1,
- "id": 1334
- },
- {
- "parent": 1237,
- "title": "Bogacz i \u017cebrak",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1749,
- "html": "/media/lektura/bogacz-i-zebrak_.html",
- "parent_number": 4,
- "id": 1212
- },
- {
- "title": "Bogurodzica",
- "html": "/media/lektura/bogurodzica_2.html",
- "html_size": 21461,
- "id": 2013,
- "tags": [
- 5148,
- 332,
- 1,
- 334
- ]
- },
- {
- "title": "Bo\u017ce, co\u015b Polsk\u0119...",
- "html": "/media/lektura/boze-cos-polske.html",
- "html_size": 17265,
- "id": 2107,
- "tags": [
- 5279,
- 332,
- 1,
- 24
- ]
- },
- {
- "parent": 1614,
- "title": "B\u00f3g wie kto",
- "tags": [
- 31,
- 54,
- 2294,
- 56
- ],
- "html_size": 77728,
- "html": "/media/lektura/gloria-victis-bog-wie-kto.html",
- "parent_number": 3,
- "id": 1606
- },
- {
- "title": "Bracia, patrzcie jeno...",
- "html": "/media/lektura/bracia-patrzcie-jeno.html",
- "html_size": 5486,
- "id": 2032,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "title": "Brat",
- "html": "/media/lektura/napoj-cienisty-brat.html",
- "html_size": 2032,
- "id": 1738,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1875,
- "title": "Bro\u0144 mnie przed sob\u0105 samym...",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 3629,
- "html": "/media/lektura/bron-mnie-przed-soba-samym.html",
- "parent_number": 1,
- "id": 1863
- },
- {
- "parent": 1237,
- "title": "Bry\u0142a lodu i kryszta\u0142",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1578,
- "html": "/media/lektura/bryla-lodu-i-krysztal_.html",
- "parent_number": 4,
- "id": 1226
- },
- {
- "parent": 1237,
- "title": "Brytan w obro\u017cy",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1461,
- "html": "/media/lektura/brytan-w-obrozy_.html",
- "parent_number": 5,
- "id": 1168
- },
- {
- "title": "Brzydkie kacz\u0105tko",
- "html": "/media/lektura/brzydkie-kaczatko________.html",
- "html_size": 40407,
- "id": 82,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "parent": 1798,
- "title": "Burza",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 2255,
- "html": "/media/lektura/sonety-krymskie-burza_______.html",
- "parent_number": 4,
- "id": 1784
- },
- {
- "parent": 1383,
- "title": "But w butonierce",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 2726,
- "html": "/media/lektura/but-w-butonierce-but-w-butonierce.html",
- "parent_number": 25,
- "id": 1356
- },
- {
- "title": "But w butonierce (tomik)",
- "id": 1383,
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ]
- },
- {
- "title": "By\u0142bym ci\u0119 odda\u0142...",
- "html": "/media/lektura/bylbym-cie-oddal_1.html",
- "html_size": 1912,
- "id": 2054,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Bywaj dziewcz\u0119 zdrowe...",
- "html": "/media/lektura/bywaj-dziewcze-zdrowe.html",
- "html_size": 2922,
- "id": 2104,
- "tags": [
- 5148,
- 1,
- 2,
- 24
- ]
- },
- {
- "parent": 1383,
- "title": "Cafe",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 2738,
- "html": "/media/lektura/but-w-butonierce-cafe.html",
- "parent_number": 5,
- "id": 1358
- },
- {
- "title": "Calineczka",
- "html": "/media/lektura/calineczka.html",
- "html_size": 36656,
- "id": 1044,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Ca\u0142y \u015bwiat by\u015b \u015bci\u0105gn\u0119\u0142a...",
- "html": "/media/lektura/cay-swiat-bys-sciagnea.html",
- "html_size": 2981,
- "id": 2130,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Cesarz chi\u0144ski i syn jego",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2705,
- "html": "/media/lektura/cesarz-chinski-i-syn-jego-bajki-nowe_.html",
- "parent_number": 3,
- "id": 1335
- },
- {
- "title": "Cha\u0142upa",
- "html": "/media/lektura/napoj-cienisty-chalupa.html",
- "html_size": 3039,
- "id": 1750,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Chart i kotka",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 877,
- "html": "/media/lektura/chart-i-kotka_.html",
- "parent_number": 6,
- "id": 1130
- },
- {
- "title": "Chata w lesie",
- "html": "/media/lektura/chata-w-lesie.html",
- "html_size": 21288,
- "id": 2160,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "parent": 1237,
- "title": "Chleb i szabla",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1454,
- "html": "/media/lektura/chleb-i-szabla_.html",
- "parent_number": 7,
- "id": 1207
- },
- {
- "parent": 1333,
- "title": "Ch\u0142op i ciel\u0119",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1487,
- "html": "/media/lektura/chlop-i-ciele-bajki-nowe_.html",
- "parent_number": 3,
- "id": 1330
- },
- {
- "parent": 1333,
- "title": "Ch\u0142op i Jowisz",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3477,
- "html": "/media/lektura/chlop-i-jowisz-bajki-nowe_.html",
- "parent_number": 4,
- "id": 1251
- },
- {
- "title": "Ch\u0142opi",
- "id": 288,
- "tags": [
- 31,
- 128,
- 242,
- 243
- ]
- },
- {
- "parent": 1333,
- "title": "Chmiel",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2527,
- "html": "/media/lektura/chmiel-bajki-nowe_.html",
- "parent_number": 5,
- "id": 1270
- },
- {
- "title": "Choinka",
- "html": "/media/lektura/choinka_.html",
- "html_size": 31713,
- "id": 1045,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Ch\u00f3r duch\u00f3w izraelskich",
- "html": "/media/lektura/chor-duchow-izraelskich.html",
- "html_size": 2580,
- "id": 1106,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 295,
- "title": "Chrystus Cudowny u Fary",
- "tags": [
- 31,
- 126,
- 128,
- 127
- ],
- "html_size": 20812,
- "html": "/media/lektura/legendy-warszawskie-chrystus-cudowny-u-fary_______.html",
- "parent_number": 4,
- "id": 1604
- },
- {
- "title": "Cie\u0144",
- "html": "/media/lektura/cien.html",
- "html_size": 40777,
- "id": 1570,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Cierpienia m\u0142odego Wertera",
- "html": "/media/lektura/cierpienia-mlodego-wertera_________.html",
- "html_size": 420558,
- "id": 836,
- "tags": [
- 31,
- 384,
- 383,
- 24
- ]
- },
- {
- "parent": 1798,
- "title": "Cisza morska",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 5219,
- "html": "/media/lektura/sonety-krymskie-cisza-morska_______.html",
- "parent_number": 2,
- "id": 1782
- },
- {
- "parent": 287,
- "title": "Cisza wieczorna",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 10513,
- "html": "/media/lektura/z-wichrow-i-hal-z-tatr-cisza-wieczorna___.html",
- "parent_number": 4,
- "id": 765
- },
- {
- "title": "Cmentarz",
- "html": "/media/lektura/napoj-cienisty-cmentarz.html",
- "html_size": 3050,
- "id": 1751,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1846,
- "title": "Cnoty kardynalne",
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ],
- "html_size": 2148,
- "html": "/media/lektura/katechizm-polskiego-dziecka-cnoty-kardynalne_.html",
- "parent_number": 3,
- "id": 1831
- },
- {
- "parent": 1846,
- "title": "Co kocha\u0107?",
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ],
- "html_size": 2375,
- "html": "/media/lektura/katechizm-polskiego-dziecka-co-kochac_.html",
- "parent_number": 4,
- "id": 1832
- },
- {
- "title": "Coda",
- "html": "/media/lektura/dzien-jak-co-dzien-coda__.html",
- "html_size": 2879,
- "id": 1549,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Co\u015b",
- "html": "/media/lektura/cos.html",
- "html_size": 23405,
- "id": 1573,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Co\u015b ty Atenom zrobi\u0142, Sokratesie",
- "html": "/media/lektura/cos-ty-atenom-zrobil-sokratesie.html",
- "html_size": 9717,
- "id": 1084,
- "tags": [
- 1,
- 2308,
- 24,
- 121
- ]
- },
- {
- "title": "C\u00f3ra Albionu",
- "html": "/media/lektura/cora-albionu.html",
- "html_size": 11904,
- "id": 855,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "C\u00f3rka Cerery",
- "html": "/media/lektura/corka-cerery_.html",
- "html_size": 3686,
- "id": 1105,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Cuda mi\u0142o\u015bci (Karmi\u0119 frasunkiem mi\u0142o\u015b\u0107 i my\u015bleniem...)",
- "html": "/media/lektura/cuda-milosci-karmie-frasunkiem-milosc-i-mysleniem_______.html",
- "html_size": 4292,
- "id": 94,
- "tags": [
- 123,
- 1,
- 122,
- 22
- ]
- },
- {
- "title": "Cuda mi\u0142o\u015bci (Przeb\u00f3g! Jak \u017cyj\u0119, serca ju\u017c nie maj\u0105c?)",
- "html": "/media/lektura/cuda-milosci-przebog-jak-zyje-serca-juz-nie-majac_______.html",
- "html_size": 2662,
- "id": 228,
- "tags": [
- 123,
- 1,
- 122,
- 22
- ]
- },
- {
- "title": "Cyganie w podr\u00f3\u017cy",
- "html": "/media/lektura/cyganie-w-podrozy.html",
- "html_size": 2565,
- "id": 2131,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Czapla, ryby i rak",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 4963,
- "html": "/media/lektura/czapla-ryby-i-rak-bajki-nowe_.html",
- "parent_number": 6,
- "id": 1294
- },
- {
- "title": "Czarny kot",
- "html": "/media/lektura/czarny-kot.html",
- "html_size": 35756,
- "id": 1629,
- "tags": [
- 31,
- 1517,
- 4365,
- 24
- ]
- },
- {
- "parent": 1798,
- "title": "Czatyrdah",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 3835,
- "html": "/media/lektura/sonety-krymskie-czatyrdah_______.html",
- "parent_number": 13,
- "id": 1792
- },
- {
- "title": "Czerwone buciki",
- "html": "/media/lektura/czerowne-buciki.html",
- "html_size": 19567,
- "id": 1048,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "id": 294,
- "title": "Cz\u0119\u015b\u0107 druga",
- "parent_number": 1,
- "parent": 300,
- "tags": [
- 31,
- 33,
- 34,
- 32
- ]
- },
- {
- "id": 289,
- "title": "Cz\u0119\u015b\u0107 pierwsza",
- "parent_number": 0,
- "parent": 300,
- "tags": [
- 31,
- 33,
- 34,
- 32
- ]
- },
- {
- "parent": 288,
- "title": "Cz\u0119\u015b\u0107 pierwsza - Jesie\u0144",
- "tags": [
- 31,
- 128,
- 242,
- 243
- ],
- "html_size": 842762,
- "html": "/media/lektura/chlopi-czesc-pierwsza-jesien_______.html",
- "parent_number": 0,
- "id": 1615
- },
- {
- "parent": 710,
- "title": "Cz\u0142owiek bo\u017ce igrzysko",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1598,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-czlowiek-boze-igrzysko____.html",
- "parent_number": 0,
- "id": 640
- },
- {
- "parent": 1333,
- "title": "Cz\u0142owiek i go\u0142\u0119bie",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2208,
- "html": "/media/lektura/czlowiek-i-golebie-bajki-nowe_.html",
- "parent_number": 7,
- "id": 1298
- },
- {
- "title": "Cz\u0142owiek i kamie\u0144",
- "html": "/media/lektura/czlowiek-i-kamien.html",
- "html_size": 1030,
- "id": 837,
- "tags": [
- 1888,
- 31,
- 1889,
- 34
- ]
- },
- {
- "parent": 1237,
- "title": "Cz\u0142owiek i suknia",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1892,
- "html": "/media/lektura/czlowiek-i-suknia_.html",
- "parent_number": 8,
- "id": 1194
- },
- {
- "parent": 1237,
- "title": "Cz\u0142owiek i wilk",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1234,
- "html": "/media/lektura/czlowiek-i-wilk_.html",
- "parent_number": 9,
- "id": 1219
- },
- {
- "parent": 1237,
- "title": "Cz\u0142owiek i zdrowie",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2063,
- "html": "/media/lektura/czlowiek-i-zdrowie_.html",
- "parent_number": 10,
- "id": 1188
- },
- {
- "parent": 1237,
- "title": "Cz\u0142owiek i zwierciad\u0142a",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2796,
- "html": "/media/lektura/czlowiek-i-zwierciadla_.html",
- "parent_number": 11,
- "id": 1145
- },
- {
- "parent": 294,
- "title": "Cz\u0142owiek i zwierz",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 16449,
- "html": "/media/lektura/satyry-czesc-druga-czlowiek-i-zwierz_______.html",
- "parent_number": 4,
- "id": 40
- },
- {
- "parent": 1846,
- "title": "Czym b\u0119d\u0119?",
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ],
- "html_size": 2714,
- "html": "/media/lektura/katechizm-polskiego-dziecka-czym-bede_.html",
- "parent_number": 1,
- "id": 1833
- },
- {
- "title": "\u0106my",
- "html": "/media/lektura/napoj-cienisty-cmy.html",
- "html_size": 1789,
- "id": 1752,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Dajcie mi tylko jedne ziemi mil\u0119",
- "html": "/media/lektura/dajcie-mi-tylko-jedne-ziemi-mile.html",
- "html_size": 3178,
- "id": 1112,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Daleko",
- "html": "/media/lektura/dzien-jak-co-dzien-daleko.html",
- "html_size": 2225,
- "id": 1526,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Damy",
- "html": "/media/lektura/damy.html",
- "html_size": 12286,
- "id": 856,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "parent": 2230,
- "title": "Danaidy",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2401,
- "html": "/media/lektura/danaidy.html",
- "parent_number": 2,
- "id": 2223
- },
- {
- "parent": 1237,
- "title": "Daremna praca",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2384,
- "html": "/media/lektura/daremna-praca_.html",
- "parent_number": 12,
- "id": 1221
- },
- {
- "title": "Daremne \u017cale",
- "html": "/media/lektura/daremne-zale_______.html",
- "html_size": 1874,
- "id": 147,
- "tags": [
- 329,
- 1,
- 56,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "D\u0105b i dynia",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1770,
- "html": "/media/lektura/dab-i-dynia_.html",
- "parent_number": 13,
- "id": 1191
- },
- {
- "parent": 1237,
- "title": "D\u0105b i ma\u0142e drzewka",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2262,
- "html": "/media/lektura/dab-i-male-drzewka_.html",
- "parent_number": 14,
- "id": 1216
- },
- {
- "parent": 712,
- "title": "Dedykacja",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 519,
- "html": "/media/lektura/fraszki-dedykacja____.html",
- "parent_number": 0,
- "id": 628
- },
- {
- "parent": 1234,
- "title": "Dedykacja",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1355,
- "html": "/media/lektura/dedykacja.html",
- "parent_number": 1,
- "id": 1243
- },
- {
- "parent": 1237,
- "title": "Derwisz i ucze\u0144",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2303,
- "html": "/media/lektura/derwisz-i-uczen_.html",
- "parent_number": 15,
- "id": 1220
- },
- {
- "parent": 1383,
- "title": "Deszcz",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 1867,
- "html": "/media/lektura/but-w-butonierce-deszcz.html",
- "parent_number": 10,
- "id": 1359
- },
- {
- "title": "Deszcz w Concarneau",
- "html": "/media/lektura/ballada-z-tamtej-strony-deszcz-w-concarneau.html",
- "html_size": 2439,
- "id": 1655,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Dewotka",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1097,
- "html": "/media/lektura/dewotka_.html",
- "parent_number": 16,
- "id": 1136
- },
- {
- "title": "Diabe\u0142 na wie\u017cy",
- "html": "/media/lektura/diabel-na-wiezy.html",
- "html_size": 39698,
- "id": 1755,
- "tags": [
- 31,
- 1517,
- 4365,
- 24
- ]
- },
- {
- "parent": 1333,
- "title": "Dialog",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2769,
- "html": "/media/lektura/dialog-bajki-nowe_.html",
- "parent_number": 8,
- "id": 1296
- },
- {
- "parent": 1237,
- "title": "Diament i kryszta\u0142",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2492,
- "html": "/media/lektura/diament-i-krysztal_.html",
- "parent_number": 17,
- "id": 1159
- },
- {
- "parent": 293,
- "title": "Dies Irae",
- "tags": [
- 332,
- 339,
- 1,
- 128
- ],
- "html_size": 43028,
- "html": "/media/lektura/hymny-dies-irae_______.html",
- "parent_number": 0,
- "id": 252
- },
- {
- "parent": 1846,
- "title": "Disce puer",
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ],
- "html_size": 5810,
- "html": "/media/lektura/katechizm-polskiego-dziecka-disce-puer_.html",
- "parent_number": 5,
- "id": 1834
- },
- {
- "title": "D\u0142ugi j\u0119zyk",
- "html": "/media/lektura/dlugi-jezyk__.html",
- "html_size": 9607,
- "id": 857,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "Dno",
- "html": "/media/lektura/dzien-jak-co-dzien-dno.html",
- "html_size": 5453,
- "id": 1527,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 2230,
- "title": "Do *** (Patrzysz mi w oczy)",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2128,
- "html": "/media/lektura/do-patrzysz-mi-w-oczy.html",
- "parent_number": 3,
- "id": 2222
- },
- {
- "parent": 711,
- "title": "Do Anakreonta",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1255,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-anakreonta____.html",
- "parent_number": 0,
- "id": 632
- },
- {
- "parent": 711,
- "title": "Do Andrzeja Trzecieskiego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1837,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-andrzeja-trzecieskiego____.html",
- "parent_number": 1,
- "id": 536
- },
- {
- "parent": 711,
- "title": "Do Anny (Kr\u00f3lowi r\u00f3wien, a je\u015bli si\u0119 godzi...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1478,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-anny-krolowi-rowien-a-jesli-sie-godz____.html",
- "parent_number": 2,
- "id": 565
- },
- {
- "parent": 711,
- "title": "Do Anny (Wczora, czekaj\u0105c na twe obietnice...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1799,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-anny-wczora-czekajac-na-twe-obietnic____.html",
- "parent_number": 3,
- "id": 415
- },
- {
- "title": "Do Anusie (Anusiu! by\u015b mie tem chcia\u0142a darowa\u0107...)",
- "html": "/media/lektura/do-anusie-anusiu-bys-mie-tem-chciala-darowac.html",
- "html_size": 3694,
- "id": 775,
- "tags": [
- 123,
- 1564,
- 1,
- 1565
- ]
- },
- {
- "title": "Do Anusie (Moja nadobna dzieweczko, moje kochanie!)",
- "html": "/media/lektura/do-anusie-moja-nadobna-dzieweczko-moje-kochanie.html",
- "html_size": 2947,
- "id": 776,
- "tags": [
- 123,
- 11,
- 1,
- 1565
- ]
- },
- {
- "title": "Do Anusie (Siebie musz\u0119, nie ciebie, w tej mierze winowa\u0107...)",
- "html": "/media/lektura/do-anusie-siebie-musze-nie-ciebie-w-tej-mierze-winowac.html",
- "html_size": 4386,
- "id": 777,
- "tags": [
- 123,
- 11,
- 1,
- 1565
- ]
- },
- {
- "parent": 1875,
- "title": "Do B. Z.",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 3253,
- "html": "/media/lektura/do-b-z.html",
- "parent_number": 2,
- "id": 1864
- },
- {
- "parent": 708,
- "title": "Do Baltazera",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 673,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-baltazera_____.html",
- "parent_number": 0,
- "id": 515
- },
- {
- "parent": 711,
- "title": "Do Bartosza",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 846,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-bartosza____.html",
- "parent_number": 4,
- "id": 663
- },
- {
- "parent": 711,
- "title": "Do boginiej",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1802,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-boginiej____.html",
- "parent_number": 5,
- "id": 482
- },
- {
- "parent": 708,
- "title": "Do Chmury",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1036,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-chmury_____.html",
- "parent_number": 1,
- "id": 494
- },
- {
- "title": "Do czytelnika",
- "html": "/media/lektura/kwiaty-zla-do-czytelnika.html",
- "html_size": 6533,
- "id": 1883,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 2230,
- "title": "Do D. D. (Wizyta)",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 3398,
- "html": "/media/lektura/do-d-d-wizyta.html",
- "parent_number": 11,
- "id": 2219
- },
- {
- "parent": 2230,
- "title": "Do D. D. Elegia",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 6987,
- "html": "/media/lektura/do-d-d-elegia.html",
- "parent_number": 4,
- "id": 2229
- },
- {
- "parent": 711,
- "title": "Do doktora (Arcydoktorem ci\u0119 zwa\u0107 ka\u017cdy mo\u017ce \u015bmiele...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 803,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-doktora-arcydoktorem-cie-zwac-kazdy-____.html",
- "parent_number": 6,
- "id": 426
- },
- {
- "parent": 710,
- "title": "Do doktora (Fraszka a doktor \u2014 to s\u0105 dwie rzeczy przeciwne...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1426,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-doktora-fraszka-a-doktor-to-sa-dwi____.html",
- "parent_number": 1,
- "id": 586
- },
- {
- "parent": 711,
- "title": "Do doktora (M\u00f3wi\u0142em ci, nie no\u015b mi tych fraszek, doktorze...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 695,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-doktora-mowilem-ci-nie-nos-mi-tych-f____.html",
- "parent_number": 7,
- "id": 670
- },
- {
- "parent": 711,
- "title": "Do doktora (Nie mam ci zacz dzi\u0119kowa\u0107, m\u00f3j mi\u0142y doktorze...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1251,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-doktora-nie-mam-ci-zacz-dziekowac-mo____.html",
- "parent_number": 8,
- "id": 610
- },
- {
- "parent": 711,
- "title": "Do doktora (Nie trzeba mi si\u0119 wiele dowiadowa\u0107...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1592,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-doktora-nie-trzeba-mi-sie-wiele-dowi____.html",
- "parent_number": 9,
- "id": 573
- },
- {
- "parent": 711,
- "title": "Do doktora (Nie wiem, podobno li to co ku rozumowi...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 897,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-doktora-nie-wiem-podobno-li-to-co-ku____.html",
- "parent_number": 10,
- "id": 468
- },
- {
- "parent": 711,
- "title": "Do doktora Montana",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1241,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-doktora-montana____.html",
- "parent_number": 11,
- "id": 576
- },
- {
- "parent": 711,
- "title": "Do dru\u017cby",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 4164,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-druzby____.html",
- "parent_number": 12,
- "id": 445
- },
- {
- "parent": 1234,
- "title": "Do dzieci",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2916,
- "html": "/media/lektura/do-dzieci.html",
- "parent_number": 0,
- "id": 1244
- },
- {
- "parent": 711,
- "title": "Do dziewki (A co wiedzie\u0107, gdzie chodzisz, moja dziewko \u015bliczna...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 823,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-dziewki-a-co-wiedziec-gdzie-chodzisz____.html",
- "parent_number": 13,
- "id": 551
- },
- {
- "parent": 711,
- "title": "Do dziewki (Daj, czego\u0107 nie ub\u0119dzie, by\u015b nawi\u0119cej da\u0142a...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1661,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-dziewki-daj-czegoc-nie-ubedzie-bys-n____.html",
- "parent_number": 14,
- "id": 604
- },
- {
- "parent": 710,
- "title": "Do dziewki (Je\u015bli to rada widzisz, a \u017cyczysz mi tego...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2450,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-dziewki-jesli-to-rada-widzisz-a-zy____.html",
- "parent_number": 2,
- "id": 512
- },
- {
- "parent": 710,
- "title": "Do dziewki (Nie uciekaj przede mn\u0105, dziewko urodziwa...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2558,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-dziewki-nie-uciekaj-przede-mna-dzi____.html",
- "parent_number": 4,
- "id": 1717
- },
- {
- "parent": 711,
- "title": "Do Franciszka",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 3476,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-franciszka____.html",
- "parent_number": 15,
- "id": 697
- },
- {
- "title": "Do Franciszka Szemiotha",
- "html": "/media/lektura/do-franciszka-szemiotha.html",
- "html_size": 3279,
- "id": 1103,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 711,
- "title": "Do fraszek (Fraszki moje, co\u015bcie mi dot\u0105d zachowa\u0142y...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1423,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-fraszek-fraszki-moje-coscie-mi-dotad____.html",
- "parent_number": 16,
- "id": 627
- },
- {
- "parent": 710,
- "title": "Do fraszek (Fraszki nieprzep\u0142acone, wdzi\u0119czne fraszki moje...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2973,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-fraszek-fraszki-nieprzeplacone-wdz____.html",
- "parent_number": 4,
- "id": 412
- },
- {
- "parent": 711,
- "title": "Do fraszek (Fraszki, za wszeteczne was ludzie poczytaj\u0105...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1297,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-fraszek-fraszki-za-wszeteczne-was-lu____.html",
- "parent_number": 17,
- "id": 498
- },
- {
- "parent": 710,
- "title": "Do gospodarza (Nie b\u0105d\u017a go\u015bciem u siebie, wiedz, co si\u0119 w ci\u0119 wleje...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 679,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-gospodarza-nie-badz-gosciem-u-sieb____.html",
- "parent_number": 5,
- "id": 420
- },
- {
- "parent": 711,
- "title": "Do gospodarza (Rad si\u0119 widz\u0119 u ciebie, gospodarzu mi\u0142y!)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 822,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-gospodarza-rad-sie-widze-u-ciebie-go____.html",
- "parent_number": 18,
- "id": 590
- },
- {
- "parent": 708,
- "title": "Do gospodyniej",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1493,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-gospodyniej_____.html",
- "parent_number": 0,
- "id": 1590
- },
- {
- "parent": 711,
- "title": "Do go\u015bcia (B\u0105d\u017a ptaka, b\u0105d\u017a zaj\u0105ca szukasz po tym boru...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 695,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-goscia-badz-ptaka-badz-zajaca-szukas____.html",
- "parent_number": 19,
- "id": 706
- },
- {
- "parent": 710,
- "title": "Do go\u015bcia (Go\u015bciu, tak jako\u015b pocz\u0105\u0142, ju\u017c do ko\u0144ca czytaj...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 818,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-goscia-gosciu-tak-jakos-poczal-juz____.html",
- "parent_number": 6,
- "id": 428
- },
- {
- "parent": 710,
- "title": "Do go\u015bcia (Go\u015bciu, w\u0142asn\u0105 twarz widzisz przewa\u017cnej Dydony...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2093,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-goscia-gosciu-wlasna-twarz-widzisz____.html",
- "parent_number": 7,
- "id": 666
- },
- {
- "parent": 708,
- "title": "Do go\u015bcia (Je\u015bli darmo masz te ksi\u0105\u017cki...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1694,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-goscia-jesli-darmo-masz-te-ksiazk_____.html",
- "parent_number": 4,
- "id": 548
- },
- {
- "parent": 708,
- "title": "Do go\u015bcia (Nie pie\u015b\u0107 si\u0119 d\u0142ugo z mymi ksi\u0105\u017ceczkami...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 549,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-goscia-nie-piesc-sie-dlugo-z-mymi_____.html",
- "parent_number": 5,
- "id": 559
- },
- {
- "parent": 710,
- "title": "Do g\u00f3r i las\u00f3w",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 5719,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-gor-i-lasow____.html",
- "parent_number": 8,
- "id": 675
- },
- {
- "parent": 708,
- "title": "Do Hanny (Chybaby nie wiedzia\u0142a, co znaczy twarz blada...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 815,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-hanny-chybaby-nie-wiedziala-co-zn____.html",
- "parent_number": 6,
- "id": 679
- },
- {
- "parent": 711,
- "title": "Do Hanny (Na palcu masz dyjament, w sercu twardy krzemie\u0144...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 685,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-hanny-na-palcu-masz-dyjament-w-sercu____.html",
- "parent_number": 20,
- "id": 474
- },
- {
- "title": "Do Hr. Gustawa Ol(izara) podzi\u0119kowanie za wystrzy\u017cynk\u0119 z gwiazdeczk\u0105 i Krzemie\u0144cem",
- "html": "/media/lektura/do-hr-gustawa-olizara-podziekowanie-za-wystrzyzynke-z-gwiazdeczka-i-krzemiencem.html",
- "html_size": 2092,
- "id": 1114,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 710,
- "title": "Do Jadama Konarskiego biskupa pozna\u0144skiego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 3251,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-jadama-konarskiego-biskupa-poznans____.html",
- "parent_number": 9,
- "id": 662
- },
- {
- "parent": 711,
- "title": "Do Jadwigi",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1150,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-jadwigi____.html",
- "parent_number": 21,
- "id": 643
- },
- {
- "parent": 708,
- "title": "Do Jakuba",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 550,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-jakuba_____.html",
- "parent_number": 7,
- "id": 699
- },
- {
- "parent": 710,
- "title": "Do Jana (Janie, cierp', jako mo\u017cesz! Przyjdzie ta godzina...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2675,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-jana-janie-cierp-jako-mozesz-przyj____.html",
- "parent_number": 10,
- "id": 514
- },
- {
- "parent": 711,
- "title": "Do Jana (Janie, m\u00f3j dru\u017cba...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 3268,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-jana-janie-moj-druzba____.html",
- "parent_number": 22,
- "id": 477
- },
- {
- "parent": 710,
- "title": "Do Jana (Je\u015bli st\u0105d jak\u0105 rozkosz ma cz\u0142owiek cnotliwy...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 3296,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-jana-jesli-stad-jaka-rozkosz-ma-cz____.html",
- "parent_number": 11,
- "id": 537
- },
- {
- "parent": 708,
- "title": "Do Jana (Radz\u0119, Janie, daj pok\u00f3j przedsi\u0119wzi\u0119ciu swemu...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2030,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-jana-radze-janie-daj-pokoj-przeds____.html",
- "parent_number": 8,
- "id": 561
- },
- {
- "parent": 711,
- "title": "Do J\u0119drzeja (A c\u00f3\u017c radzisz, J\u0119drzeju? Wszak mog\u0119 w twe uszy...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2865,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-jedrzeja-a-coz-radzisz-jedrzeju-wsza____.html",
- "parent_number": 23,
- "id": 478
- },
- {
- "parent": 711,
- "title": "Do J\u0119drzeja (Kt\u00f3ry m\u00f3j nieprzyjaciel i cz\u0142owiek tak srogi...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2299,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-jedrzeja-ktory-moj-nieprzyjaciel-i-c____.html",
- "parent_number": 24,
- "id": 607
- },
- {
- "parent": 711,
- "title": "Do J\u0119drzeja Patrycego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 894,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-jedrzeja-patrycego____.html",
- "parent_number": 25,
- "id": 577
- },
- {
- "parent": 711,
- "title": "Do J\u00f3sta (Tw\u00f3j mi brat, J\u00f3stcie, powiada o tobie...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1980,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-josta-twoj-mi-brat-jostcie-powiada-o____.html",
- "parent_number": 26,
- "id": 513
- },
- {
- "parent": 708,
- "title": "Do J\u00f3sta (Wiesz, co\u015b mi winien; miej\u017ce si\u0119 do taszki...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1092,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-josta-wiesz-cos-mi-winien-miejze-____.html",
- "parent_number": 9,
- "id": 452
- },
- {
- "title": "Do Justyny",
- "html": "/media/lektura/do-justyny.html",
- "html_size": 2789,
- "id": 838,
- "tags": [
- 1889,
- 1,
- 34
- ]
- },
- {
- "title": "Do Justyny (O wdzi\u0119czno\u015bci)",
- "html": "/media/lektura/do-justyny-o-wdziecznosci.html",
- "html_size": 2955,
- "id": 839,
- "tags": [
- 1889,
- 1,
- 34
- ]
- },
- {
- "parent": 710,
- "title": "Do Kachny (Cho\u0107 znasz uczynno\u015b\u0107 moj\u0119 i ch\u0119\u0107 praw\u0105 czujesz...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 688,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-kachny-choc-znasz-uczynnosc-moje-i____.html",
- "parent_number": 12,
- "id": 492
- },
- {
- "parent": 708,
- "title": "Do Kachny (Pewnie ci\u0119 moje zwierciad\u0142o zawstydzi...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 536,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-kachny-pewnie-cie-moje-zwierciadl____.html",
- "parent_number": 10,
- "id": 449
- },
- {
- "parent": 710,
- "title": "Do Kachny (Po sukni znam \u017ca\u0142ob\u0119, znam i po podwice...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1316,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-kachny-po-sukni-znam-zalobe-znam-i____.html",
- "parent_number": 13,
- "id": 528
- },
- {
- "title": "Do Kasie (Im pilniej na twoje oblicze nadobne...)",
- "html": "/media/lektura/do-kasie-im-pilniej-na-twoje-oblicze-nadobne.html",
- "html_size": 4007,
- "id": 778,
- "tags": [
- 123,
- 1564,
- 1,
- 1565
- ]
- },
- {
- "title": "Do Kasie (Jako l\u00f3d taje przezroczysty z lekka...)",
- "html": "/media/lektura/do-kasie-jako-lod-taje-przezroczysty-z-lekka.html",
- "html_size": 11927,
- "id": 779,
- "tags": [
- 123,
- 1564,
- 1,
- 1565
- ]
- },
- {
- "title": "Do Kasie (Je\u015bli w\u0142adn\u0105 co nami b\u0142\u0105dz\u0105cych gwiazd si\u0142y...)",
- "html": "/media/lektura/do-kasie-jesli-wladna-co-nami-bladzacych-gwiazd-sily.html",
- "html_size": 3804,
- "id": 780,
- "tags": [
- 123,
- 11,
- 1,
- 1565
- ]
- },
- {
- "title": "Do Kasie (Mam nadziej\u0119, \u017ce si\u0119 nade mn\u0105 zlitujesz...)",
- "html": "/media/lektura/do-kasie-mam-nadzieje-ze-sie-nade-mna-zlitujesz_.html",
- "html_size": 3263,
- "id": 781,
- "tags": [
- 123,
- 11,
- 1,
- 1565
- ]
- },
- {
- "parent": 710,
- "title": "Do kaznodzieja",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1194,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-kaznodzieja____.html",
- "parent_number": 14,
- "id": 405
- },
- {
- "parent": 710,
- "title": "Do kogo\u015b",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 848,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-kogos____.html",
- "parent_number": 15,
- "id": 564
- },
- {
- "title": "Do Kreolki",
- "html": "/media/lektura/do-kreolki.html",
- "html_size": 2234,
- "id": 2132,
- "tags": [
- 4373,
- 1,
- 24,
- 22
- ]
- },
- {
- "parent": 289,
- "title": "Do kr\u00f3la",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 27925,
- "html": "/media/lektura/satyry-czesc-pierwsza-do-krola_______.html",
- "parent_number": 0,
- "id": 181
- },
- {
- "parent": 2230,
- "title": "Do Laury",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2482,
- "html": "/media/lektura/do-laury.html",
- "parent_number": 12,
- "id": 2218
- },
- {
- "parent": 710,
- "title": "Do Lubomira",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2079,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-lubomira____.html",
- "parent_number": 16,
- "id": 533
- },
- {
- "title": "Do Ludwiki Bobr\u00f3wny",
- "html": "/media/lektura/do-ludwiki-bobrowny.html",
- "html_size": 2849,
- "id": 1101,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 710,
- "title": "Do \u0141ask",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1018,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-lask____.html",
- "parent_number": 17,
- "id": 541
- },
- {
- "parent": 2230,
- "title": "Do M***",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 5033,
- "html": "/media/lektura/do-m.html",
- "parent_number": 7,
- "id": 2217
- },
- {
- "parent": 710,
- "title": "Do Magdaleny",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1848,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-magdaleny____.html",
- "parent_number": 18,
- "id": 681
- },
- {
- "title": "Do Malabarki",
- "html": "/media/lektura/do-malabarki.html",
- "html_size": 4289,
- "id": 2133,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 708,
- "title": "Do Marcina (A wi\u0119c by ty, Marcinie, przed tym nie ugoni\u0142...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 694,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-marcina-a-wiec-by-ty-marcinie-prz____.html",
- "parent_number": 11,
- "id": 517
- },
- {
- "parent": 711,
- "title": "Do Marcina (Filozofi, co nad nas uszy lepsze maj\u0105...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1399,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-marcina-filozofi-co-nad-nas-uszy-lep____.html",
- "parent_number": 27,
- "id": 438
- },
- {
- "parent": 2230,
- "title": "Do Marii P...",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 1465,
- "html": "/media/lektura/do-marii-p.html",
- "parent_number": 8,
- "id": 2228
- },
- {
- "title": "Do matki",
- "html": "/media/lektura/do-matki_______.html",
- "html_size": 2240,
- "id": 91,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Do Matki (\"W ciemno\u015bciach posta\u0107 mi stoi matczyna\")",
- "html": "/media/lektura/do-matki-w-ciemnosciach-postac-mi-stoi-matczyna.html",
- "html_size": 738,
- "id": 1100,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 2230,
- "title": "Do matki Polki",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 7839,
- "html": "/media/lektura/do-matki-polki.html",
- "parent_number": 9,
- "id": 2227
- },
- {
- "parent": 708,
- "title": "Do Miko\u0142aja Firleja (Jesliby w moich ksi\u0105\u017ckach co takiego by\u0142o...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 844,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-mikolaja-firleja-jesliby-w-moich-____.html",
- "parent_number": 12,
- "id": 617
- },
- {
- "parent": 710,
- "title": "Do Miko\u0142aja Firleja (Ma\u0142o na tym, \u017ce moje fraszki masz pisane...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1631,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-mikolaja-firleja-malo-na-tym-ze-mo____.html",
- "parent_number": 19,
- "id": 694
- },
- {
- "parent": 711,
- "title": "Do Miko\u0142aja Mieleckiego (Na swe z\u0142e\u015b mi\u0119 upoi\u0142, m\u00f3j dobry starosta...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2343,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-mikolaja-mieleckiego-na-swe-zles-mie____.html",
- "parent_number": 28,
- "id": 545
- },
- {
- "parent": 708,
- "title": "Do Miko\u0142aja Mieleckiego (Nie dar jaki kosztowny, ale co przemog\u0119...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1322,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-mikolaja-mieleckiego-nie-dar-jaki____.html",
- "parent_number": 13,
- "id": 439
- },
- {
- "parent": 710,
- "title": "Do Miko\u0142aja Wolskiego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 3985,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-mikolaja-wolskiego____.html",
- "parent_number": 20,
- "id": 530
- },
- {
- "parent": 708,
- "title": "Do mi\u0142o\u015bci (Chyba w serce, Mi\u0142o\u015bci, prosz\u0119, nie uderzaj...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 679,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-milosci-chyba-w-serce-milosci-pro____.html",
- "parent_number": 14,
- "id": 703
- },
- {
- "parent": 710,
- "title": "Do mi\u0142o\u015bci (D\u0142ugo\u017c masz, o Mi\u0142o\u015bci, frasowa\u0107 me lata?)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2607,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-milosci-dlugoz-masz-o-milosci-fras____.html",
- "parent_number": 21,
- "id": 463
- },
- {
- "parent": 710,
- "title": "Do mi\u0142o\u015bci (Gdzie teraz ono jab\u0142ko i on klinot drogi...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2610,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-milosci-gdzie-teraz-ono-jablko-i-o____.html",
- "parent_number": 22,
- "id": 557
- },
- {
- "parent": 710,
- "title": "Do mi\u0142o\u015bci (Jam przegra\u0142, ja, Mi\u0142o\u015bci! \u2014 Ty\u015b plac otrzyma\u0142a...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 4676,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-milosci-jam-przegral-ja-milosci-ty____.html",
- "parent_number": 23,
- "id": 659
- },
- {
- "parent": 710,
- "title": "Do mi\u0142o\u015bci (Matko skrzydlatych Mi\u0142o\u015bci...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 3823,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-milosci-matko-skrzydlatych-milosci____.html",
- "parent_number": 24,
- "id": 422
- },
- {
- "title": "Do m\u0142odych",
- "html": "/media/lektura/do-mlodych.html",
- "html_size": 2571,
- "id": 852,
- "tags": [
- 329,
- 1,
- 56,
- 121
- ]
- },
- {
- "parent": 711,
- "title": "Do Montana",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 685,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-montana____.html",
- "parent_number": 29,
- "id": 416
- },
- {
- "title": "Do motyla",
- "html": "/media/lektura/do-motyla_______.html",
- "html_size": 2959,
- "id": 285,
- "tags": [
- 123,
- 1,
- 122,
- 22
- ]
- },
- {
- "parent": 2230,
- "title": "Do Niemna",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 3782,
- "html": "/media/lektura/do-niemna.html",
- "parent_number": 10,
- "id": 2226
- },
- {
- "parent": 711,
- "title": "Do nieznajomego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 715,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-nieznajomego____.html",
- "parent_number": 30,
- "id": 410
- },
- {
- "title": "Do Nieznajomej",
- "html": "/media/lektura/do-nieznajomej_1.html",
- "html_size": 4091,
- "id": 2055,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 710,
- "title": "Do opata",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1695,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-opata____.html",
- "parent_number": 25,
- "id": 453
- },
- {
- "parent": 710,
- "title": "Do pana (B\u00f3g tylko ludzkie my\u015bli wiedzie\u0107 mo\u017ce...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 986,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-pana-bog-tylko-ludzkie-mysli-wiedz____.html",
- "parent_number": 26,
- "id": 501
- },
- {
- "parent": 710,
- "title": "Do pana (Panie, co dobrze, raczy da\u0107 z swej strony...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 659,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-pana-panie-co-dobrze-raczy-dac-z-s____.html",
- "parent_number": 27,
- "id": 639
- },
- {
- "title": "Do pani Joanny Bobrowej",
- "html": "/media/lektura/do-pani-joanny-bobrowej.html",
- "html_size": 5686,
- "id": 1099,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 708,
- "title": "Do paniej (Co usty m\u00f3wisz, by\u015b w sercu my\u015bli\u0142a...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 797,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-paniej-co-usty-mowisz-bys-w-sercu_____.html",
- "parent_number": 15,
- "id": 622
- },
- {
- "parent": 708,
- "title": "Do paniej (Imi\u0119 twe, pani, kt\u00f3re rad mianuj\u0119...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2709,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-paniej-imie-twe-pani-ktore-rad-mi_____.html",
- "parent_number": 16,
- "id": 479
- },
- {
- "parent": 708,
- "title": "Do paniej (Pani jako nadobna, tak te\u017c i uczciwa!)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 828,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-paniej-pani-jako-nadobna-tak-tez-_____.html",
- "parent_number": 17,
- "id": 682
- },
- {
- "parent": 711,
- "title": "Do paniej (S\u0142yszcie, pani! Te fraszki, co teraz czytacie...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 690,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-paniej-slyszcie-pani-te-fraszki-co-t____.html",
- "parent_number": 31,
- "id": 591
- },
- {
- "title": "Do pastereczki siedz\u0105cej na druid\u00f3w kamieniach w Pornic nad oceanem",
- "html": "/media/lektura/do-pastereczki-siedzacej-na-druidow-kamieniach-w-pornic-nad-oceanem.html",
- "html_size": 6329,
- "id": 1941,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 708,
- "title": "Do Pawe\u0142ka",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1326,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-pawelka_____.html",
- "parent_number": 18,
- "id": 519
- },
- {
- "parent": 710,
- "title": "Do Paw\u0142a (Chcia\u0142em ci \u201epomagab\u00f3g\u201d kilkakro\u0107 powiedzie\u0107...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1204,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-pawla-chcialem-ci-pomagabog-kilkak____.html",
- "parent_number": 28,
- "id": 470
- },
- {
- "parent": 708,
- "title": "Do Paw\u0142a (Dobra to, Pawle, mo\u017cesz wierzy\u0107, szko\u0142a...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1013,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-pawla-dobra-to-pawle-mozesz-wierz_____.html",
- "parent_number": 19,
- "id": 520
- },
- {
- "parent": 710,
- "title": "Do Paw\u0142a (Pawle, nie b\u0105d\u017a tak wielkim panem do swej \u015bmierci...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1574,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-pawla-pawle-nie-badz-tak-wielkim-p____.html",
- "parent_number": 29,
- "id": 532
- },
- {
- "parent": 708,
- "title": "Do Paw\u0142a (Pawle, rzecz pewna, u twego s\u0105siada...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1758,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-pawla-pawle-rzecz-pewna-u-twego-s_____.html",
- "parent_number": 20,
- "id": 524
- },
- {
- "parent": 708,
- "title": "Do Paw\u0142a St\u0119powskiego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1659,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-pawla-stepowskiego_____.html",
- "parent_number": 0,
- "id": 1585
- },
- {
- "parent": 711,
- "title": "Do Petry\u0142a",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2397,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-petryla____.html",
- "parent_number": 32,
- "id": 1580
- },
- {
- "parent": 711,
- "title": "Do Piotra K\u0142oczowskiego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 4225,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-piotra-kloczowskiego____.html",
- "parent_number": 33,
- "id": 555
- },
- {
- "parent": 711,
- "title": "Do Pluta",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1120,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-pluta____.html",
- "parent_number": 34,
- "id": 602
- },
- {
- "parent": 710,
- "title": "Do poet\u00f3w",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2934,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-poetow____.html",
- "parent_number": 30,
- "id": 408
- },
- {
- "parent": 1846,
- "title": "Do polskiego ch\u0142opi\u0119cia",
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ],
- "html_size": 8145,
- "html": "/media/lektura/katechizm-polskiego-dziecka-do-polskiego-chlopiecia_.html",
- "parent_number": 10,
- "id": 1835
- },
- {
- "parent": 1846,
- "title": "Do polskiej dzieweczki",
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ],
- "html_size": 6416,
- "html": "/media/lektura/katechizm-polskiego-dziecka-do-polskiej-dzieweczki_.html",
- "parent_number": 11,
- "id": 1836
- },
- {
- "parent": 710,
- "title": "Do Pryszki",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1496,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-pryszki____.html",
- "parent_number": 31,
- "id": 409
- },
- {
- "parent": 711,
- "title": "Do przyjaciela (Jednego chcie\u0107 i nie chcie\u0107 to spo\u0142eczno\u015b\u0107 prawa...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 708,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-przyjaciela-jednego-chciec-i-nie-chc____.html",
- "parent_number": 35,
- "id": 558
- },
- {
- "parent": 711,
- "title": "Do przyjaciela (Nie frasuj sobie, przyjacielu, g\u0142owy...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1308,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-przyjaciela-nie-frasuj-sobie-przyjac____.html",
- "parent_number": 36,
- "id": 702
- },
- {
- "parent": 829,
- "title": "Do przyjaci\u00f3\u0142 Moskali",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 5197,
- "html": "/media/lektura/dziady-dziadow-czesci-iii-ustep-do-przyjaciol-moskali.html",
- "parent_number": 6,
- "id": 820
- },
- {
- "parent": 711,
- "title": "Do pszcz\u00f3\u0142",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 667,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-pszczol____.html",
- "parent_number": 38,
- "id": 454
- },
- {
- "parent": 710,
- "title": "Do Reiny",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2272,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-reiny____.html",
- "parent_number": 32,
- "id": 611
- },
- {
- "parent": 710,
- "title": "Do s\u0105siada",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 911,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-sasiada____.html",
- "parent_number": 33,
- "id": 658
- },
- {
- "title": "Do siostry",
- "html": "/media/lektura/napoj-cienisty-do-siostry.html",
- "html_size": 8919,
- "id": 1739,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 711,
- "title": "Do snu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2716,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-snu____.html",
- "parent_number": 39,
- "id": 526
- },
- {
- "parent": 708,
- "title": "Do Stanis\u0142awa (Co mi Sybilla prorokuje ninie?)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1125,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-stanislawa-co-mi-sybilla-prorokuj____.html",
- "parent_number": 22,
- "id": 688
- },
- {
- "parent": 710,
- "title": "Do Stanis\u0142awa (Kto pija do p\u00f3\u0142nocy, bracie Stanis\u0142awie...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1692,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-stanislawa-kto-pija-do-polnocy-bra____.html",
- "parent_number": 34,
- "id": 460
- },
- {
- "parent": 711,
- "title": "Do Stanis\u0142awa (Powiedz mi, gdzie si\u0119 chowasz, bracie Stanis\u0142awie...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1194,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-stanislawa-powiedz-mi-gdzie-sie-chow____.html",
- "parent_number": 40,
- "id": 522
- },
- {
- "parent": 711,
- "title": "Do Stanis\u0142awa Meglewskiego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1444,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-stanislawa-meglewskiego____.html",
- "parent_number": 41,
- "id": 599
- },
- {
- "parent": 711,
- "title": "Do Stanis\u0142awa Por\u0119bskiego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1538,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-stanislawa-porebskiego____.html",
- "parent_number": 42,
- "id": 633
- },
- {
- "parent": 710,
- "title": "Do Stanis\u0142awa Wapowskiego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 3596,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-stanislawa-wapowskiego____.html",
- "parent_number": 35,
- "id": 601
- },
- {
- "parent": 710,
- "title": "Do starosty",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1124,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-starosty____.html",
- "parent_number": 36,
- "id": 641
- },
- {
- "parent": 710,
- "title": "Do starosty muszy\u0144skiego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 3464,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-starosty-muszynskiego____.html",
- "parent_number": 37,
- "id": 487
- },
- {
- "title": "Do swoich ksi\u0105\u017cek (Dok\u0105d si\u0119, moja lutni, napierasz skwapliwie?)",
- "html": "/media/lektura/do-swoich-ksiazek-dokad-sie-moja-lutni-napierasz-skwapliwie_______.html",
- "html_size": 6048,
- "id": 155,
- "tags": [
- 123,
- 1,
- 122,
- 121
- ]
- },
- {
- "title": "Do swoich ksi\u0105\u017cek (Hola! Ju\u017c dosy\u0107, dosy\u0107, moja ksi\u0119go!)",
- "html": "/media/lektura/do-swoich-ksiazek-hola-juz-dosyc-dosyc-moja-ksiego_______.html",
- "html_size": 4382,
- "id": 14,
- "tags": [
- 123,
- 1,
- 122,
- 121
- ]
- },
- {
- "parent": 711,
- "title": "Do swych rym\u00f3w",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1292,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-swych-rymow____.html",
- "parent_number": 43,
- "id": 529
- },
- {
- "parent": 711,
- "title": "Do teg\u00f3\u017c (Albo z nas szydzisz, albo sam wi\u0142ujesz...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1228,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-tegoz-albo-z-nas-szydzisz-albo-sam-w____.html",
- "parent_number": 37,
- "id": 584
- },
- {
- "title": "Do Teodora De Banville",
- "html": "/media/lektura/do-teodora-de-banville.html",
- "html_size": 2862,
- "id": 2135,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Do Teofila Januszewskiego",
- "html": "/media/lektura/do-teofila-januszewskiego.html",
- "html_size": 17051,
- "id": 1942,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Do Tereski z Lisieux",
- "html": "/media/lektura/dzien-jak-co-dzien-do-tereski-z-lisieux.html",
- "html_size": 3586,
- "id": 1528,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Do trupa",
- "html": "/media/lektura/do-trupa_______.html",
- "html_size": 3820,
- "id": 267,
- "tags": [
- 123,
- 1,
- 122,
- 22
- ]
- },
- {
- "parent": 710,
- "title": "Do Wac\u0142awa Ostroroga",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1889,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-waclawa-ostroroga____.html",
- "parent_number": 38,
- "id": 431
- },
- {
- "parent": 708,
- "title": "Do Walka",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 678,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-do-walka_____.html",
- "parent_number": 23,
- "id": 612
- },
- {
- "parent": 711,
- "title": "Do Wenery",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1284,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-wenery____.html",
- "parent_number": 44,
- "id": 595
- },
- {
- "parent": 711,
- "title": "Do W\u0119dy",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 900,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-wedy____.html",
- "parent_number": 45,
- "id": 653
- },
- {
- "parent": 2230,
- "title": "Do wizytuj\u0105cych",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2776,
- "html": "/media/lektura/do-wizytujacych.html",
- "parent_number": 13,
- "id": 2216
- },
- {
- "parent": 711,
- "title": "Do wojewody (Nie s\u0105, wojewodo zacny, czasy po temu...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2106,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-wojewody-nie-sa-wojewodo-zacny-czasy____.html",
- "parent_number": 46,
- "id": 497
- },
- {
- "parent": 710,
- "title": "Do wojewody (Zamieszka\u0142em do sto\u0142u twego, wojewoda...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 829,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-wojewody-zamieszkalem-do-stolu-twe____.html",
- "parent_number": 39,
- "id": 647
- },
- {
- "parent": 711,
- "title": "Do Wojtka (I owszem, mi\u0142y Wojtku, zjednaj si\u0119 z t\u0105 pani\u0105...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 913,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-wojtka-i-owszem-mily-wojtku-zjednaj-____.html",
- "parent_number": 47,
- "id": 597
- },
- {
- "parent": 711,
- "title": "Do Wojtka (Pytasz, nie teszno li mi\u0119 tak samego siedzie\u0107?)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 559,
- "html": "/media/lektura/fraszki-ksiegi-wtore-do-wojtka-pytasz-nie-teszno-li-mie-tak-____.html",
- "parent_number": 48,
- "id": 443
- },
- {
- "parent": 710,
- "title": "Do Zofijej",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2436,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-do-zofijej____.html",
- "parent_number": 40,
- "id": 434
- },
- {
- "title": "Do Zosie (B\u0119d\u0119 si\u0119 zawsze dziwowa\u0142 twojej pikno\u015bci...)",
- "html": "/media/lektura/do-zosie-bede-sie-zawsze-dziwowal-twojej-piknosci.html",
- "html_size": 1802,
- "id": 782,
- "tags": [
- 123,
- 1564,
- 1,
- 1565
- ]
- },
- {
- "title": "Do Zosie (Nie psuj niepotrzebnemi \u0142zami wdzi\u0119cznych oczy!)",
- "html": "/media/lektura/do-zosie-nie-psuj-niepotrzebnemi-lzami-wdziecznych-oczy.html",
- "html_size": 4961,
- "id": 783,
- "tags": [
- 123,
- 1564,
- 1,
- 1565
- ]
- },
- {
- "title": "Do Zygmunta",
- "html": "/media/lektura/do-zygmunta.html",
- "html_size": 2950,
- "id": 1943,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 2230,
- "title": "Dobranoc",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2431,
- "html": "/media/lektura/dobranoc.html",
- "parent_number": 5,
- "id": 2221
- },
- {
- "parent": 1237,
- "title": "Dobroczynno\u015b\u0107",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1609,
- "html": "/media/lektura/dobroczynnosc_.html",
- "parent_number": 18,
- "id": 1214
- },
- {
- "parent": 2230,
- "title": "Dobry wiecz\u00f3r",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 1997,
- "html": "/media/lektura/dobry-wieczor.html",
- "parent_number": 6,
- "id": 2220
- },
- {
- "title": "Doko\u0142a klombu",
- "html": "/media/lektura/napoj-cienisty-dokola-klombu.html",
- "html_size": 2591,
- "id": 1754,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Doktor",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 858,
- "html": "/media/lektura/doktor_.html",
- "parent_number": 19,
- "id": 1186
- },
- {
- "parent": 1237,
- "title": "Doktor i zdrowie",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1448,
- "html": "/media/lektura/doktor-i-zdrowie_.html",
- "parent_number": 20,
- "id": 1150
- },
- {
- "title": "Doktor Piotr",
- "html": "/media/lektura/doktor-piotr_______.html",
- "html_size": 103844,
- "id": 133,
- "tags": [
- 31,
- 128,
- 54,
- 293
- ]
- },
- {
- "title": "Dom \u015bwi\u0119tego Kazimierza",
- "html": "/media/lektura/nic-wiecej-dom-swietego-kazimierza.html",
- "html_size": 12427,
- "id": 1689,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Don Juan w piekle",
- "html": "/media/lektura/don-juan-w-piekle.html",
- "html_size": 4247,
- "id": 2134,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 711,
- "title": "Dorocie z Michowa, \u017cenie jego (Nie chcia\u0142am ci\u0119, m\u0119\u017cu m\u00f3j, zosta\u0107, twoja \u017cona...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1352,
- "html": "/media/lektura/fraszki-ksiegi-wtore-dorocie-z-michowa-zenie-jego-nie-chcial____.html",
- "parent_number": 63,
- "id": 510
- },
- {
- "title": "Dramat",
- "html": "/media/lektura/dramat.html",
- "html_size": 16244,
- "id": 858,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "parent": 829,
- "title": "Droga do Rosji",
- "tags": [
- 31,
- 23,
- 1660,
- 24
- ],
- "html_size": 18742,
- "html": "/media/lektura/dziady-dziadow-czesci-iii-ustep-droga-do-rosji.html",
- "parent_number": 0,
- "id": 821
- },
- {
- "parent": 1798,
- "title": "Droga nad przepa\u015bci\u0105 w Czufut-Kale",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 4637,
- "html": "/media/lektura/sonety-krymskie-droga-nad-przepascia-w-czufut-kale_______.html",
- "parent_number": 15,
- "id": 1794
- },
- {
- "parent": 710,
- "title": "Drugi (M\u0119\u017cu m\u00f3j, o m\u00f3j m\u0119\u017cu, \u015bmier\u0107 nieluto\u015bciwa)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1255,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-drugi-mezu-moj-o-moj-mezu-smierc-niel____.html",
- "parent_number": 54,
- "id": 417
- },
- {
- "parent": 708,
- "title": "Drugie Temu\u017c (Hiszpany, W\u0142ochy i Niemce zwiedziwszy...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1440,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-drugie-temuz-hiszpany-wlochy-i-niemc____.html",
- "parent_number": 31,
- "id": 484
- },
- {
- "parent": 1237,
- "title": "Drzewo",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 716,
- "html": "/media/lektura/drzewo_.html",
- "parent_number": 21,
- "id": 1225
- },
- {
- "title": "Duch we flaszce",
- "html": "/media/lektura/duch-we-flaszce.html",
- "html_size": 20454,
- "id": 2161,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "Dudarz",
- "html": "/media/lektura/dudarz_1.html",
- "html_size": 21033,
- "id": 2189,
- "tags": [
- 1,
- 23,
- 24,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Dudek",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2249,
- "html": "/media/lektura/dudek-bajki-nowe_.html",
- "parent_number": 9,
- "id": 1250
- },
- {
- "title": "Duma o Wac\u0142awie Rzewuskim",
- "html": "/media/lektura/duma-o-waclawie-rzewuskim_1.html",
- "html_size": 27325,
- "id": 1987,
- "tags": [
- 210,
- 1,
- 24,
- 189
- ]
- },
- {
- "title": "Dusio\u0142ek",
- "html": "/media/lektura/dusiolek________.html",
- "html_size": 7070,
- "id": 1384,
- "tags": [
- 210,
- 31,
- 337,
- 3035
- ]
- },
- {
- "title": "Dusza si\u0119 moja zamy\u015bla g\u0142\u0119boko...",
- "html": "/media/lektura/dusza-sie-moja-zamysla-gleboko.html",
- "html_size": 2117,
- "id": 1945,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Dusza wina",
- "html": "/media/lektura/kwiaty-zla-dusza-wina.html",
- "html_size": 2918,
- "id": 1884,
- "tags": [
- 4373,
- 1,
- 24,
- 22
- ]
- },
- {
- "parent": 1237,
- "title": "Dwa psy",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1523,
- "html": "/media/lektura/dwa-psy_.html",
- "parent_number": 22,
- "id": 1233
- },
- {
- "parent": 1237,
- "title": "Dwa \u017c\u00f3\u0142wie",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1585,
- "html": "/media/lektura/bajki-i-przypowiesci-dwa-zolwie__.html",
- "parent_number": 23,
- "id": 1277
- },
- {
- "title": "Dym",
- "html": "/media/lektura/dym.html",
- "html_size": 33131,
- "id": 850,
- "tags": [
- 31,
- 55,
- 54,
- 56
- ]
- },
- {
- "title": "Dyrektor pod kanap\u0105",
- "html": "/media/lektura/dyrektor-pod-kanapa.html",
- "html_size": 9516,
- "id": 859,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "Dyskobol",
- "html": "/media/lektura/dyskobol_1.html",
- "html_size": 4322,
- "id": 2056,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "id": 829,
- "title": "Dziad\u00f3w cz\u0119\u015bci III Ust\u0119p",
- "parent_number": 2,
- "parent": 830,
- "tags": [
- 31,
- 23,
- 1660,
- 24
- ]
- },
- {
- "title": "Dziady",
- "id": 830,
- "tags": [
- 152,
- 372,
- 23,
- 24
- ]
- },
- {
- "parent": 828,
- "title": "Dziady, cz\u0119\u015b\u0107 II",
- "tags": [
- 152,
- 372,
- 23,
- 24
- ],
- "html_size": 76299,
- "html": "/media/lektura/dziady-dziady-poema-dziady-czesc-ii.html",
- "parent_number": 0,
- "id": 1355
- },
- {
- "parent": 828,
- "title": "Dziady, cz\u0119\u015b\u0107 III",
- "tags": [
- 152,
- 372,
- 23,
- 24
- ],
- "html_size": 451133,
- "html": "/media/lektura/dziady-dziady-poema-dziady-czesc-iii.html",
- "parent_number": 3,
- "id": 833
- },
- {
- "parent": 828,
- "title": "Dziady, cz\u0119\u015b\u0107 IV",
- "tags": [
- 152,
- 372,
- 23,
- 24
- ],
- "html_size": 183350,
- "html": "/media/lektura/dziady-dziady-poema-dziady-czesc-iv.html",
- "parent_number": 2,
- "id": 818
- },
- {
- "id": 828,
- "title": "Dziady. Poema",
- "parent_number": 0,
- "parent": 830,
- "tags": [
- 152,
- 372,
- 23,
- 24
- ]
- },
- {
- "parent": 830,
- "title": "Dziady. Widowisko, cz\u0119\u015b\u0107 I",
- "tags": [
- 152,
- 372,
- 23,
- 24
- ],
- "html_size": 61905,
- "html": "/media/lektura/dziady-dziady-widowisko-czesc-i.html",
- "parent_number": 1,
- "id": 827
- },
- {
- "parent": 1333,
- "title": "Dzieci i \u017caby",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2113,
- "html": "/media/lektura/dzieci-i-zaby-bajki-nowe_.html",
- "parent_number": 10,
- "id": 1264
- },
- {
- "parent": 1237,
- "title": "Dzieci\u0119 i ojciec",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 905,
- "html": "/media/lektura/dziecie-i-ojciec_.html",
- "parent_number": 24,
- "id": 1166
- },
- {
- "title": "Dzie\u0142o sztuki",
- "html": "/media/lektura/dzielo-sztuki.html",
- "html_size": 11625,
- "id": 860,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "Dzie\u0144",
- "html": "/media/lektura/dzien-jak-co-dzien-dzien.html",
- "html_size": 3460,
- "id": 1529,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 2230,
- "title": "Dzie\u0144 dobry",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2174,
- "html": "/media/lektura/dzien-dobry.html",
- "parent_number": 14,
- "id": 2215
- },
- {
- "title": "Dziewczyna",
- "html": "/media/lektura/dziewczyna________.html",
- "html_size": 6407,
- "id": 1385,
- "tags": [
- 210,
- 31,
- 337,
- 3035
- ]
- },
- {
- "title": "Dziewczynka i lalka",
- "html": "/media/lektura/dziewczynka-i-lalka.html",
- "html_size": 14425,
- "id": 2162,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "Dziewczynka z zapa\u0142kami",
- "html": "/media/lektura/dziewczynka-z-zapalkami.html",
- "html_size": 7979,
- "id": 1049,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Dzisiaj Verdun",
- "html": "/media/lektura/dzien-jak-co-dzien-dzisiaj-verdun.html",
- "html_size": 3399,
- "id": 1530,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Dzisiaj w Betlejem",
- "html": "/media/lektura/dzisiaj-w-betlejem_1.html",
- "html_size": 5491,
- "id": 2016,
- "tags": [
- 5148,
- 123,
- 1,
- 2
- ]
- },
- {
- "parent": 1614,
- "title": "Dziwna historia",
- "tags": [
- 31,
- 54,
- 2294,
- 56
- ],
- "html_size": 86480,
- "html": "/media/lektura/gloria-victis-dziwna-historia_.html",
- "parent_number": 5,
- "id": 1607
- },
- {
- "parent": 1237,
- "title": "Dzwon",
- "tags": [
- 1888,
- 31,
- 33,
- 34,
- 1407
- ],
- "html_size": 845,
- "html": "/media/lektura/dzwon_1.html",
- "parent_number": 25,
- "id": 1195
- },
- {
- "title": "Dzwon",
- "html": "/media/lektura/dzwon_3.html",
- "html_size": 6526,
- "id": 2195,
- "tags": [
- 1,
- 2,
- 5290,
- 24
- ]
- },
- {
- "title": "Dzwony",
- "html": "/media/lektura/dzwony_.html",
- "html_size": 18587,
- "id": 1574,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Echa le\u015bne",
- "html": "/media/lektura/echa-lesne.html",
- "html_size": 42452,
- "id": 2188,
- "tags": [
- 31,
- 54,
- 56,
- 293
- ]
- },
- {
- "parent": 2230,
- "title": "Ekskuza",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 3536,
- "html": "/media/lektura/ekskuza.html",
- "parent_number": 15,
- "id": 2214
- },
- {
- "title": "Ekstaza",
- "html": "/media/lektura/ekstaza_1.html",
- "html_size": 3538,
- "id": 2057,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Elegia na \u015bmier\u0107 Czarnego Zawiszy",
- "html": "/media/lektura/elegia-na-smierc-czarnego-zawiszy.html",
- "html_size": 37305,
- "id": 2058,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Elegia niemocy",
- "html": "/media/lektura/ballada-z-tamtej-strony-elegia-niemocy.html",
- "html_size": 4200,
- "id": 1672,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Elegia u\u015bpienia",
- "html": "/media/lektura/ballada-z-tamtej-strony-elegia-uspienia.html",
- "html_size": 4721,
- "id": 1673,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Elegia \u017calu",
- "html": "/media/lektura/ballada-z-tamtej-strony-elegia-zalu.html",
- "html_size": 4177,
- "id": 1674,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Epigraf na pot\u0119pion\u0105 ksi\u0105\u017ck\u0119",
- "html": "/media/lektura/epigraf-na-potepiona-ksiazke.html",
- "html_size": 2186,
- "id": 2136,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 711,
- "title": "Epitafium Andrzejowi Bzickiemu, kasztelanowi che\u0142mskiemu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2522,
- "html": "/media/lektura/fraszki-ksiegi-wtore-epitafium-andrzejowi-bzickiemu-kasztela____.html",
- "parent_number": 49,
- "id": 448
- },
- {
- "parent": 708,
- "title": "Epitafium dzieci\u0119ciu (By\u0142em ojcem niedawno, dzi\u015b nie mam nikogo...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 868,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-epitafium-dziecieciu-bylem-ojcem-nie_____.html",
- "parent_number": 24,
- "id": 687
- },
- {
- "parent": 708,
- "title": "Epitafium dzieci\u0119ciu (Ojcze, nade mn\u0105 p\u0142aka\u0107 nie potrzeba...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 813,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-epitafium-dziecieciu-ojcze-nade-mna-_____.html",
- "parent_number": 25,
- "id": 566
- },
- {
- "parent": 710,
- "title": "Epitafium Erazmowi Kroczewskiemu kuchmistrzowi",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1565,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-epitafium-erazmowi-kroczewskiemu-kuch____.html",
- "parent_number": 41,
- "id": 668
- },
- {
- "parent": 710,
- "title": "Epitafium Grzegorzowi Podlodowskiemu, staro\u015bcie radomskiemu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1445,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-epitafium-grzegorzowi-podlodowskiemu-____.html",
- "parent_number": 42,
- "id": 493
- },
- {
- "title": "Epitafium Hannie Kochanowskiej",
- "html": "/media/lektura/treny-epitafium-hannie-kochanowskiej_______.html",
- "html_size": 1289,
- "id": 1563,
- "tags": [
- 3,
- 1,
- 4,
- 52
- ]
- },
- {
- "parent": 708,
- "title": "Epitafium J\u0119drzejowi \u017belis\u0142awskiemu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 815,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-epitafium-jedrzejowi-zelislawskiemu_____.html",
- "parent_number": 26,
- "id": 654
- },
- {
- "parent": 710,
- "title": "Epitafium J\u00f3stowi Glacowi",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1743,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-epitafium-jostowi-glacowi____.html",
- "parent_number": 43,
- "id": 605
- },
- {
- "parent": 708,
- "title": "Epitafium Kosowi",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1790,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-epitafium-kosowi_____.html",
- "parent_number": 27,
- "id": 516
- },
- {
- "parent": 708,
- "title": "Epitafium Krysztofowi Sienie\u0144skiemu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 870,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-epitafium-krysztofowi-sienienskiemu_____.html",
- "parent_number": 29,
- "id": 476
- },
- {
- "parent": 711,
- "title": "Epitafium Sobiechowi",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1337,
- "html": "/media/lektura/fraszki-ksiegi-wtore-epitafium-sobiechowi____.html",
- "parent_number": 51,
- "id": 616
- },
- {
- "parent": 708,
- "title": "Epitafium Wojciechowi Kryskiemu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1284,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-epitafium-wojciechowi-kryskiemu_____.html",
- "parent_number": 30,
- "id": 579
- },
- {
- "parent": 708,
- "title": "Epitafium Wysockiemu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1191,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-epitafium-wysockiemu_____.html",
- "parent_number": 32,
- "id": 692
- },
- {
- "title": "Erotyk",
- "html": "/media/lektura/ballada-z-tamtej-strony-erotyk.html",
- "html_size": 2131,
- "id": 1656,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Eviva l'arte!",
- "html": "/media/lektura/eviva-larte.html",
- "html_size": 4505,
- "id": 2059,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Fejerwerk",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2627,
- "html": "/media/lektura/fejerwerk-bajki-nowe_.html",
- "parent_number": 11,
- "id": 1332
- },
- {
- "parent": 1237,
- "title": "Fia\u0142ek i trawa",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1461,
- "html": "/media/lektura/fialek-i-trawa_.html",
- "parent_number": 28,
- "id": 1213
- },
- {
- "parent": 1333,
- "title": "Fia\u0142ki",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2524,
- "html": "/media/lektura/fialki-bajki-nowe_.html",
- "parent_number": 12,
- "id": 1722
- },
- {
- "parent": 1237,
- "title": "Filozof",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1699,
- "html": "/media/lektura/filozof_.html",
- "parent_number": 26,
- "id": 1122
- },
- {
- "parent": 1333,
- "title": "Filozof",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3428,
- "html": "/media/lektura/filozof-bajki-nowe_.html",
- "parent_number": 13,
- "id": 1268
- },
- {
- "parent": 1333,
- "title": "Filozof i ch\u0142op",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2457,
- "html": "/media/lektura/filozof-i-chlop-bajki-nowe_.html",
- "parent_number": 14,
- "id": 1295
- },
- {
- "parent": 1237,
- "title": "Filozof i orator",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2424,
- "html": "/media/lektura/filozof-i-orator_.html",
- "parent_number": 27,
- "id": 1140
- },
- {
- "title": "Fortepian Chopina",
- "html": "/media/lektura/fortepian-chopina.html",
- "html_size": 18352,
- "id": 1085,
- "tags": [
- 1,
- 2308,
- 24,
- 121
- ]
- },
- {
- "title": "Fragment z \u00abFantazji\u00bb",
- "html": "/media/lektura/fragment-z-fantazji.html",
- "html_size": 2591,
- "id": 2060,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Fragmenta albo pozosta\u0142e pisma",
- "id": 1402,
- "tags": [
- 3,
- 1,
- 2,
- 4
- ]
- },
- {
- "title": "Frasunk do Kasie",
- "html": "/media/lektura/frasunk-do-kasie.html",
- "html_size": 3179,
- "id": 784,
- "tags": [
- 123,
- 11,
- 1,
- 1565
- ]
- },
- {
- "title": "Fraszka do Anusie",
- "html": "/media/lektura/fraszka-do-anusie.html",
- "html_size": 1736,
- "id": 785,
- "tags": [
- 123,
- 11,
- 1,
- 1565
- ]
- },
- {
- "title": "Fraszka do Kasie",
- "html": "/media/lektura/fraszka-do-kasie.html",
- "html_size": 2296,
- "id": 786,
- "tags": [
- 123,
- 11,
- 1,
- 1565
- ]
- },
- {
- "title": "Fraszka do Zosie (B\u0105d\u017a mi oczkami pozwalasz \u0142askawemi...)",
- "html": "/media/lektura/fraszka-do-zosie-badz-mi-oczkami-pozwalasz-laskawemi.html",
- "html_size": 3048,
- "id": 787,
- "tags": [
- 123,
- 11,
- 1,
- 1565
- ]
- },
- {
- "title": "Fraszka do Zosie (S\u0142uchaj, gdy nie chcesz baczy\u0107, co si\u0119 ze mn\u0105 dzieje...)",
- "html": "/media/lektura/fraszka-do-zosie-sluchaj-gdy-nie-chcesz-baczyc-co-sie-ze-mna-dzieje.html",
- "html_size": 3205,
- "id": 788,
- "tags": [
- 123,
- 1564,
- 1,
- 1565
- ]
- },
- {
- "title": "Fraszka o Anusi i o Kasi",
- "html": "/media/lektura/fraszka-o-anusi-i-o-kasi.html",
- "html_size": 1546,
- "id": 789,
- "tags": [
- 123,
- 1564,
- 1,
- 1565
- ]
- },
- {
- "title": "Fraszki",
- "id": 712,
- "tags": [
- 11,
- 3,
- 1,
- 4
- ]
- },
- {
- "id": 709,
- "title": "Fraszki dodane",
- "parent_number": 4,
- "parent": 712,
- "tags": [
- 11,
- 3,
- 1,
- 4
- ]
- },
- {
- "title": "Front",
- "html": "/media/lektura/kamien-front.html",
- "html_size": 2670,
- "id": 1684,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Furman i motyl",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1112,
- "html": "/media/lektura/furman-i-motyl_.html",
- "parent_number": 29,
- "id": 1184
- },
- {
- "parent": 710,
- "title": "Gadka",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1607,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-gadka____.html",
- "parent_number": 44,
- "id": 450
- },
- {
- "title": "Gdy noc g\u0142\u0119boka wszystko u\u015bpi i oniemi...",
- "html": "/media/lektura/gdy-noc-gleboka-wszystko-uspi-i-oniemi.html",
- "html_size": 2863,
- "id": 1946,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Gdy si\u0119 Chrystus rodzi...",
- "html": "/media/lektura/gdy-sie-chrystus-rodzi_1.html",
- "html_size": 5656,
- "id": 2033,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "title": "Gdy \u015bliczna Panna...",
- "html": "/media/lektura/gdy-sliczna-panna.html",
- "html_size": 4421,
- "id": 2034,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "parent": 1875,
- "title": "Gdy tu m\u00f3j trup...",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2161,
- "html": "/media/lektura/gdy-tu-moj-trup.html",
- "parent_number": 3,
- "id": 1865
- },
- {
- "title": "Geniusze",
- "html": "/media/lektura/geniusze_2.html",
- "html_size": 1446,
- "id": 2061,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "G\u0119si",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2640,
- "html": "/media/lektura/gesi-bajki-nowe_.html",
- "parent_number": 15,
- "id": 1248
- },
- {
- "title": "Giaur",
- "html": "/media/lektura/giaur.html",
- "html_size": 158614,
- "id": 834,
- "tags": [
- 1757,
- 31,
- 1756,
- 24
- ]
- },
- {
- "parent": 1614,
- "title": "Gloria victis",
- "tags": [
- 31,
- 54,
- 2294,
- 56
- ],
- "html_size": 83383,
- "html": "/media/lektura/gloria-victis-gloria-victis.html",
- "parent_number": 4,
- "id": 1608
- },
- {
- "title": "Gloria victis (tom opowiada\u0144)",
- "id": 1614,
- "tags": [
- 31,
- 54,
- 2294,
- 56
- ]
- },
- {
- "title": "G\u0142os",
- "html": "/media/lektura/gos.html",
- "html_size": 5395,
- "id": 2137,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Godzina my\u015bli",
- "html": "/media/lektura/godzina-mysli.html",
- "html_size": 41725,
- "id": 1552,
- "tags": [
- 1,
- 1756,
- 24,
- 189
- ]
- },
- {
- "parent": 1333,
- "title": "Go\u0142\u0119bie",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 10916,
- "html": "/media/lektura/golebie-bajki-nowe_.html",
- "parent_number": 16,
- "id": 1276
- },
- {
- "parent": 1237,
- "title": "Gospodarz i drzewa",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1628,
- "html": "/media/lektura/gospodarz-i-drzewa_.html",
- "parent_number": 30,
- "id": 1712
- },
- {
- "parent": 1333,
- "title": "G\u00f3ra i dolina",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2658,
- "html": "/media/lektura/gora-i-dolina-bajki-nowe_.html",
- "parent_number": 17,
- "id": 1284
- },
- {
- "parent": 1798,
- "title": "G\u00f3ra Kikineis",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 3693,
- "html": "/media/lektura/sonety-krymskie-gora-kikineis_______.html",
- "parent_number": 16,
- "id": 1795
- },
- {
- "parent": 289,
- "title": "Gracz",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 26431,
- "html": "/media/lektura/satyry-czesc-pierwsza-gracz_______.html",
- "parent_number": 11,
- "id": 85
- },
- {
- "parent": 1237,
- "title": "Groch przy drodze",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3380,
- "html": "/media/lektura/groch-przy-drodze_.html",
- "parent_number": 31,
- "id": 1222
- },
- {
- "title": "Gr\u00f3b Agamemnona",
- "html": "/media/lektura/grob-agamemnona_______.html",
- "html_size": 30122,
- "id": 32,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Gr\u00f3b poety",
- "html": "/media/lektura/grob-poety_1.html",
- "html_size": 14070,
- "id": 2062,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 1798,
- "title": "Gr\u00f3b Potocki\u00e9j",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 3344,
- "html": "/media/lektura/sonety-krymskie-grob-potockiej_______.html",
- "parent_number": 8,
- "id": 1788
- },
- {
- "title": "Hamlet",
- "html": "/media/lektura/hamlet__.html",
- "html_size": 602558,
- "id": 1716,
- "tags": [
- 152,
- 4293,
- 4,
- 226
- ]
- },
- {
- "title": "Harmonia wieczorna",
- "html": "/media/lektura/harmonia-wieczorna.html",
- "html_size": 2588,
- "id": 2138,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Heautontimoroumenos",
- "html": "/media/lektura/heautontimoroumenos.html",
- "html_size": 4514,
- "id": 2139,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Hej w dzie\u0144 narodzenia...",
- "html": "/media/lektura/hej-w-dzien-narodzenia.html",
- "html_size": 6823,
- "id": 2035,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "parent": 1614,
- "title": "Hekuba",
- "tags": [
- 31,
- 54,
- 2294,
- 56
- ],
- "html_size": 362939,
- "html": "/media/lektura/gloria-victis-hekuba.html",
- "parent_number": 2,
- "id": 1609
- },
- {
- "parent": 1237,
- "title": "Hipokryt",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1400,
- "html": "/media/lektura/hipokryt_.html",
- "parent_number": 32,
- "id": 1208
- },
- {
- "title": "Historia roku",
- "html": "/media/lektura/historia-roku.html",
- "html_size": 30183,
- "id": 1576,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Historia \u017c\u00f3\u0142tej ci\u017cemki",
- "html": "/media/lektura/historia-zoltej-cizemki_1.html",
- "html_size": 845444,
- "id": 1935,
- "tags": [
- 4926,
- 338,
- 31,
- 242
- ]
- },
- {
- "title": "Ho\u0142d (Dwa sonety)",
- "html": "/media/lektura/hold-dwa-sonety.html",
- "html_size": 3266,
- "id": 970,
- "tags": [
- 2137,
- 1,
- 22,
- 2138
- ]
- },
- {
- "title": "Hop-frog",
- "html": "/media/lektura/hop-frog.html",
- "html_size": 36182,
- "id": 1767,
- "tags": [
- 31,
- 1517,
- 4365,
- 24
- ]
- },
- {
- "title": "Hymn (,,Bogarodzico, Dziewico!\")",
- "html": "/media/lektura/hymn-bogarodzico-dziewico.html",
- "html_size": 8355,
- "id": 1947,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Hymn do mi\u0142o\u015bci",
- "html": "/media/lektura/hymn-do-milosci_1.html",
- "html_size": 8938,
- "id": 2063,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Hymn do Nirwany",
- "html": "/media/lektura/hymn-do-nirwany_1.html",
- "html_size": 5045,
- "id": 2064,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Hymn do pi\u0119kna",
- "html": "/media/lektura/hymn-do-piekna.html",
- "html_size": 4373,
- "id": 2140,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 293,
- "title": "Hymn Marii Egipcjanki",
- "tags": [
- 332,
- 339,
- 1,
- 128
- ],
- "html_size": 39892,
- "html": "/media/lektura/hymny-hymn-marii-egipcjanki.html",
- "parent_number": 7,
- "id": 732
- },
- {
- "title": "Hymn o zachodzie s\u0142o\u0144ca na morzu",
- "html": "/media/lektura/hymn-o-zachodzie-slonca-na-morzu_______.html",
- "html_size": 5051,
- "id": 120,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 293,
- "title": "Hymn \u015bw. Franciszka z Asy\u017cu",
- "tags": [
- 332,
- 339,
- 1,
- 128
- ],
- "html_size": 44280,
- "html": "/media/lektura/hymny-hymn-sw-franciszka-z-asyzu__.html",
- "parent_number": 5,
- "id": 728
- },
- {
- "title": "Hymny",
- "id": 293,
- "tags": [
- 332,
- 339,
- 1,
- 128
- ]
- },
- {
- "parent": 742,
- "title": "I (Miriamowi)",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 41397,
- "html": "/media/lektura/nad-przepasciami-i-miriamowi.html",
- "parent_number": 0,
- "id": 739
- },
- {
- "parent": 754,
- "title": "I (Wierzy\u0142em zawsze w \u015bwiat\u0142a moc...)",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 1922,
- "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-i-wierzylem-zawsze-w-swiatla-moc_.html",
- "parent_number": 0,
- "id": 743
- },
- {
- "title": "I wsta\u0142 Anhelli z grobu - za nim wszystkie duchy...",
- "html": "/media/lektura/i-wstal-anhelli-z-grobu-za-nim-wszystkie-duchy.html",
- "html_size": 3649,
- "id": 2004,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Idea\u0142",
- "html": "/media/lektura/idea.html",
- "html_size": 3573,
- "id": 2141,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 754,
- "title": "II (W ciemno\u015bci schodzi moja dusza...)",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 2595,
- "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-ii-w-ciemnosci-schodzi-moja-dusza_.html",
- "parent_number": 1,
- "id": 744
- },
- {
- "parent": 742,
- "title": "II (Z motyw\u00f3w wedyckich)",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 10851,
- "html": "/media/lektura/nad-przepasciami-ii-z-motywow-wedyckich.html",
- "parent_number": 1,
- "id": 740
- },
- {
- "parent": 742,
- "title": "III (Waruno!...)",
- "tags": [
- 339,
- 1,
- 128,
- 2
- ],
- "html_size": 14115,
- "html": "/media/lektura/nad-przepasciami-iii-waruno.html",
- "parent_number": 2,
- "id": 741
- },
- {
- "parent": 754,
- "title": "III (Zazdroszcz\u0119 nieraz tym, co w grobach le\u017c\u0105...)",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 2420,
- "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-iii-zazdroszcze-nieraz-tym-co-w-grobach-leza_.html",
- "parent_number": 2,
- "id": 745
- },
- {
- "title": "Imieniny",
- "html": "/media/lektura/ballada-z-tamtej-strony-imieniny.html",
- "html_size": 1417,
- "id": 1657,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 1383,
- "title": "Ipecacuana",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 4336,
- "html": "/media/lektura/but-w-butonierce-ipecacuara.html",
- "parent_number": 3,
- "id": 1361
- },
- {
- "parent": 754,
- "title": "IV (O niezg\u0142\u0119biona duszy toni...)",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 3383,
- "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-iv-o-niezglebiona-duszy-toni_.html",
- "parent_number": 3,
- "id": 746
- },
- {
- "parent": 754,
- "title": "IX (Modlitwo moja, cicha i bez s\u0142\u00f3w...)",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 8669,
- "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-ix-modlitwo-moja-cicha-i-bez-slow_.html",
- "parent_number": 8,
- "id": 751
- },
- {
- "title": "Ja karabin",
- "html": "/media/lektura/dzien-jak-co-dzien-ja-karabin.html",
- "html_size": 1968,
- "id": 1531,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Jadwiga",
- "html": "/media/lektura/napoj-cienisty-jadwiga.html",
- "html_size": 6761,
- "id": 1740,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Jagni\u0119 i wilcy",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1774,
- "html": "/media/lektura/jagnie-i-wilcy_.html",
- "parent_number": 33,
- "id": 1154
- },
- {
- "title": "Jan Bielecki",
- "html": "/media/lektura/jan-bielecki.html",
- "html_size": 68127,
- "id": 1553,
- "tags": [
- 1,
- 1756,
- 24,
- 189
- ]
- },
- {
- "title": "Janko Muzykant",
- "html": "/media/lektura/janko-muzykant_______.html",
- "html_size": 22815,
- "id": 125,
- "tags": [
- 31,
- 54,
- 56,
- 350
- ]
- },
- {
- "parent": 1237,
- "title": "Jastrz\u0105b i sok\u00f3\u0142",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2580,
- "html": "/media/lektura/jastrzab-i-sokol_.html",
- "parent_number": 34,
- "id": 1181
- },
- {
- "parent": 1333,
- "title": "Ja\u015b",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3548,
- "html": "/media/lektura/jas-bajki-nowe_.html",
- "parent_number": 18,
- "id": 1292
- },
- {
- "title": "Jednakowo",
- "html": "/media/lektura/dzien-jak-co-dzien-jednakowo.html",
- "html_size": 2908,
- "id": 1532,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Jednooczka, Dwuoczka, Trzyoczka",
- "html": "/media/lektura/jednooczka-dwuoczka-trzyoczka.html",
- "html_size": 23826,
- "id": 2163,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "Jedyna",
- "html": "/media/lektura/dzien-jak-co-dzien-jedyna.html",
- "html_size": 5462,
- "id": 1533,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Jesie\u0144",
- "html": "/media/lektura/dzien-jak-co-dzien-jesien.html",
- "html_size": 2133,
- "id": 1534,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Jeszcze jeden mazur dzisiaj...",
- "html": "/media/lektura/jeszcze-jeden-mazur-dzisiaj.html",
- "html_size": 5353,
- "id": 2112,
- "tags": [
- 1,
- 2,
- 5287,
- 24
- ]
- },
- {
- "title": "Jeszcze Polska nie zgin\u0119\u0142a...",
- "html": "/media/lektura/jeszcze-polska-nie-zginela-mazurek.html",
- "html_size": 4244,
- "id": 2123,
- "tags": [
- 1,
- 2,
- 24,
- 5310
- ]
- },
- {
- "parent": 773,
- "title": "Jezioro Maerjelen",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 6727,
- "html": "/media/lektura/z-wichrow-i-hal-z-alp-jezioro-maerjelen__.html",
- "parent_number": 5,
- "id": 757
- },
- {
- "title": "Jezus malusie\u0144ki",
- "html": "/media/lektura/jezus-malusienki.html",
- "html_size": 8024,
- "id": 2020,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "title": "Je\u017celi ci pan nie zbuduje domu...",
- "html": "/media/lektura/jezeli-ci-pan-nie-zbuduje-domu.html",
- "html_size": 4624,
- "id": 1949,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Jod\u0142a i jab\u0142o\u0144",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2046,
- "html": "/media/lektura/jodla-i-jablon-bajki-nowe_.html",
- "parent_number": 19,
- "id": 1274
- },
- {
- "parent": 1237,
- "title": "Jowisz i owce",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1363,
- "html": "/media/lektura/jowisz-i-owce_.html",
- "parent_number": 35,
- "id": 1121
- },
- {
- "parent": 293,
- "title": "Judasz",
- "tags": [
- 332,
- 339,
- 1,
- 128
- ],
- "html_size": 43422,
- "html": "/media/lektura/hymny-judasz.html",
- "parent_number": 6,
- "id": 730
- },
- {
- "parent": 773,
- "title": "Jungfrau",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 10258,
- "html": "/media/lektura/z-wichrow-i-hal-z-alp-jungfrau__.html",
- "parent_number": 2,
- "id": 758
- },
- {
- "title": "Jutrzenka duszy",
- "html": "/media/lektura/jutrzenka-duszy.html",
- "html_size": 2032,
- "id": 2142,
- "tags": [
- 4373,
- 1,
- 24,
- 22
- ]
- },
- {
- "title": "Ju\u017c nie wiem, co poza mn\u0105 by\u0142o...",
- "html": "/media/lektura/juz-nie-wiem-co-poza-mna-bylo.html",
- "html_size": 3000,
- "id": 2065,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Ka\u0142amarz i pi\u00f3ro",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1532,
- "html": "/media/lektura/kalamarz-i-pioro_.html",
- "parent_number": 36,
- "id": 1210
- },
- {
- "title": "Kameleon",
- "html": "/media/lektura/kameleon.html",
- "html_size": 9461,
- "id": 861,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "Kamizelka",
- "html": "/media/lektura/kamizelka.html",
- "html_size": 36112,
- "id": 960,
- "tags": [
- 31,
- 54,
- 56,
- 1462
- ]
- },
- {
- "title": "Kara pychy",
- "html": "/media/lektura/kara-pychy.html",
- "html_size": 2864,
- "id": 2143,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Kartownik",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 4093,
- "html": "/media/lektura/kartownik_.html",
- "parent_number": 37,
- "id": 1170
- },
- {
- "title": "Katarynka",
- "html": "/media/lektura/katarynka_.html",
- "html_size": 59277,
- "id": 961,
- "tags": [
- 31,
- 54,
- 56,
- 1462
- ]
- },
- {
- "parent": 1846,
- "title": "Katechizm polskiego dziecka",
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ],
- "html_size": 3225,
- "html": "/media/lektura/katechizm-polskiego-dziecka-katechizm-polskiego-dziecka___.html",
- "parent_number": 0,
- "id": 1837
- },
- {
- "title": "Katechizm polskiego dziecka (zbi\u00f3r)",
- "id": 1846,
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Kiedy prawdziwie Polacy powstan\u0105...",
- "html": "/media/lektura/kiedy-prawdziwie-polacy-powstana.html",
- "html_size": 4729,
- "id": 1988,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 294,
- "title": "Klatki",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 18439,
- "html": "/media/lektura/satyry-czesc-druga-klatki_______.html",
- "parent_number": 5,
- "id": 230
- },
- {
- "title": "Knajpa",
- "html": "/media/lektura/kamien-knajpa.html",
- "html_size": 5333,
- "id": 1685,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Kochankowie",
- "html": "/media/lektura/napoj-cienisty-kochankowie.html",
- "html_size": 3339,
- "id": 1725,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Kocmo\u0142uch",
- "html": "/media/lektura/napoj-cienisty-kocmoluch.html",
- "html_size": 4514,
- "id": 1726,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Kogut",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2837,
- "html": "/media/lektura/kogut-bajki-nowe_.html",
- "parent_number": 20,
- "id": 1267
- },
- {
- "parent": 1333,
- "title": "Komar",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1627,
- "html": "/media/lektura/komar-bajki-nowe_.html",
- "parent_number": 21,
- "id": 1327
- },
- {
- "parent": 1237,
- "title": "Komar i mucha",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 869,
- "html": "/media/lektura/komar-i-mucha_.html",
- "parent_number": 38,
- "id": 1172
- },
- {
- "parent": 1333,
- "title": "Konie",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2506,
- "html": "/media/lektura/konie-bajki-nowe_.html",
- "parent_number": 22,
- "id": 1326
- },
- {
- "parent": 1237,
- "title": "Konie i furman",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1891,
- "html": "/media/lektura/konie-i-furman_.html",
- "parent_number": 39,
- "id": 1187
- },
- {
- "parent": 1237,
- "title": "Koniec",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2323,
- "html": "/media/lektura/koniec_.html",
- "parent_number": 40,
- "id": 1182
- },
- {
- "parent": 1333,
- "title": "Koniec",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2371,
- "html": "/media/lektura/koniec-bajki-nowe_.html",
- "parent_number": 23,
- "id": 1293
- },
- {
- "title": "Koniec wieku",
- "html": "/media/lektura/koniec-wieku.html",
- "html_size": 5336,
- "id": 2066,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Konwersacja",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3965,
- "html": "/media/lektura/konwersacja-bajki-nowe_.html",
- "parent_number": 25,
- "id": 1317
- },
- {
- "parent": 1333,
- "title": "Ko\u0144 i wielb\u0142\u0105d",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 5474,
- "html": "/media/lektura/kon-i-wielblad-bajki-nowe_.html",
- "parent_number": 24,
- "id": 1328
- },
- {
- "title": "Kopciuszek",
- "html": "/media/lektura/napoj-cienisty-kopciuszek.html",
- "html_size": 3926,
- "id": 1727,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Kopciuszek",
- "html": "/media/lektura/kopciuszek.html",
- "html_size": 23562,
- "id": 2164,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "Kordian",
- "html": "/media/lektura/kordian.html",
- "html_size": 406477,
- "id": 881,
- "tags": [
- 152,
- 372,
- 24,
- 189
- ]
- },
- {
- "parent": 295,
- "title": "Ko\u015bci\u00f3\u0142 Panny Marii",
- "tags": [
- 31,
- 126,
- 128,
- 127
- ],
- "html_size": 17267,
- "html": "/media/lektura/legendy-warszawskie-kosciol-panny-marii_______.html",
- "parent_number": 2,
- "id": 1603
- },
- {
- "parent": 1333,
- "title": "Kot i kogut",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 4364,
- "html": "/media/lektura/kot-i-kogut-bajki-nowe_.html",
- "parent_number": 26,
- "id": 1253
- },
- {
- "title": "Krasnoludek",
- "html": "/media/lektura/krasnoludek.html",
- "html_size": 14239,
- "id": 1052,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Krasnoludki",
- "html": "/media/lektura/krasnoludki.html",
- "html_size": 4285,
- "id": 2165,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "Kr\u00f3l Drozdobrody",
- "html": "/media/lektura/krol-drozdobrody.html",
- "html_size": 19588,
- "id": 2186,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "Kr\u00f3l D\u017cumiec",
- "html": "/media/lektura/krol-dzumiec.html",
- "html_size": 47782,
- "id": 1768,
- "tags": [
- 31,
- 1517,
- 4365,
- 24
- ]
- },
- {
- "title": "Kr\u00f3l Edyp",
- "html": "/media/lektura/krol-edyp_________.html",
- "html_size": 222337,
- "id": 250,
- "tags": [
- 152,
- 176,
- 177,
- 175
- ]
- },
- {
- "parent": 1237,
- "title": "Kr\u00f3l i pisarze",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 862,
- "html": "/media/lektura/krol-i-pisarze_.html",
- "parent_number": 41,
- "id": 1227
- },
- {
- "title": "Kr\u00f3l \u017cab",
- "html": "/media/lektura/krol-zab.html",
- "html_size": 15896,
- "id": 2187,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "Kr\u00f3lowa \u015bniegu",
- "html": "/media/lektura/krolowa-sniegu________.html",
- "html_size": 101937,
- "id": 1353,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "parent": 1333,
- "title": "Kruk i lis",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2870,
- "html": "/media/lektura/kruk-i-lis-bajki-nowe_.html",
- "parent_number": 27,
- "id": 1273
- },
- {
- "parent": 287,
- "title": "Krzak dzikiej r\u00f3\u017cy w Ciemnych Smreczynach",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 8725,
- "html": "/media/lektura/z-wichrow-i-hal-z-tatr-krzak-dzikiej-rozy-w-ciemnych-smreczy_______.html",
- "parent_number": 3,
- "id": 113
- },
- {
- "title": "Krzy\u017c i dziecko",
- "html": "/media/lektura/krzyz-i-dziecko.html",
- "html_size": 1704,
- "id": 1086,
- "tags": [
- 1,
- 2308,
- 24,
- 121
- ]
- },
- {
- "title": "Krzy\u017cacy",
- "id": 1928,
- "tags": [
- 31,
- 242,
- 56,
- 350
- ]
- },
- {
- "parent": 1928,
- "title": "Krzy\u017cacy, tom drugi",
- "tags": [
- 31,
- 242,
- 56,
- 350
- ],
- "html_size": 1965471,
- "html": "/media/lektura/krzyzacy-tom-drugi.html",
- "parent_number": 1,
- "id": 1927
- },
- {
- "parent": 1928,
- "title": "Krzy\u017cacy, tom pierwszy",
- "tags": [
- 31,
- 242,
- 56,
- 350
- ],
- "html_size": 1701530,
- "html": "/media/lektura/krzyzacy-tom-pierwszy.html",
- "parent_number": 0,
- "id": 1926
- },
- {
- "title": "Ksi\u0119ga d\u017cungli",
- "html": "/media/lektura/ksiega-dzungli.html",
- "html_size": 477768,
- "id": 1568,
- "tags": [
- 31,
- 2304,
- 242,
- 2138
- ]
- },
- {
- "parent": 1237,
- "title": "Ksi\u0119gi",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2772,
- "html": "/media/lektura/ksiegi_.html",
- "parent_number": 42,
- "id": 1200
- },
- {
- "id": 708,
- "title": "Ksi\u0119gi pierwsze",
- "parent_number": 1,
- "parent": 712,
- "tags": [
- 11,
- 3,
- 1,
- 4
- ]
- },
- {
- "id": 1455,
- "title": "Ksi\u0119gi pierwsze",
- "parent_number": 2,
- "parent": 1459,
- "tags": [
- 3,
- 1,
- 2,
- 4
- ]
- },
- {
- "id": 710,
- "title": "Ksi\u0119gi trzecie",
- "parent_number": 3,
- "parent": 712,
- "tags": [
- 11,
- 3,
- 1,
- 4
- ]
- },
- {
- "id": 711,
- "title": "Ksi\u0119gi wt\u00f3re",
- "parent_number": 2,
- "parent": 712,
- "tags": [
- 11,
- 3,
- 1,
- 4
- ]
- },
- {
- "id": 1458,
- "title": "Ksi\u0119gi wt\u00f3re",
- "parent_number": 3,
- "parent": 1459,
- "tags": [
- 3,
- 1,
- 2,
- 4
- ]
- },
- {
- "title": "Kt\u00f3\u017c nam powr\u00f3ci...",
- "html": "/media/lektura/ktoz-nam-powroci_1.html",
- "html_size": 3288,
- "id": 2067,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 711,
- "title": "Ku Muzom",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2064,
- "html": "/media/lektura/fraszki-ksiegi-wtore-ku-muzom____.html",
- "parent_number": 52,
- "id": 442
- },
- {
- "parent": 1333,
- "title": "Kuglarze",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 12973,
- "html": "/media/lektura/kuglarze-bajki-nowe_.html",
- "parent_number": 28,
- "id": 1309
- },
- {
- "parent": 1237,
- "title": "Kulawy i \u015blepy",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3008,
- "html": "/media/lektura/bajki-i-przypowiesci-kulawy-i-slepy__.html",
- "parent_number": 43,
- "id": 1331
- },
- {
- "title": "Kulik",
- "html": "/media/lektura/kulik.html",
- "html_size": 10052,
- "id": 1070,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Kwiaty Idalki",
- "html": "/media/lektura/kwiaty-idalki.html",
- "html_size": 23983,
- "id": 1053,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Lalka",
- "id": 1493,
- "tags": [
- 31,
- 242,
- 56,
- 1462
- ]
- },
- {
- "title": "Lalka",
- "html": "/media/lektura/napoj-cienisty-lalka.html",
- "html_size": 7650,
- "id": 1728,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1493,
- "title": "Lalka, tom drugi",
- "tags": [
- 31,
- 242,
- 56,
- 1462
- ],
- "html_size": 1793271,
- "html": "/media/lektura/lalka-tom-drugi.html",
- "parent_number": 2,
- "id": 1713
- },
- {
- "parent": 1493,
- "title": "Lalka, tom pierwszy",
- "tags": [
- 31,
- 242,
- 56,
- 1462
- ],
- "html_size": 1690941,
- "html": "/media/lektura/lalka-tom-pierwszy______________.html",
- "parent_number": 1,
- "id": 1491
- },
- {
- "title": "Lambro",
- "html": "/media/lektura/lambro.html",
- "html_size": 165508,
- "id": 1557,
- "tags": [
- 1,
- 1756,
- 24,
- 189
- ]
- },
- {
- "title": "Larwa",
- "html": "/media/lektura/larwa.html",
- "html_size": 3313,
- "id": 1087,
- "tags": [
- 1,
- 2308,
- 24,
- 121
- ]
- },
- {
- "title": "Latarnie",
- "html": "/media/lektura/latarnie.html",
- "html_size": 8936,
- "id": 2144,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Latarnik",
- "html": "/media/lektura/latarnik_______.html",
- "html_size": 42500,
- "id": 207,
- "tags": [
- 31,
- 54,
- 56,
- 350
- ]
- },
- {
- "title": "Lato na Wo\u0142yniu",
- "html": "/media/lektura/ballada-z-tamtej-strony-lato-na-wolyniu_.html",
- "html_size": 4152,
- "id": 1658,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Laura i Filon",
- "html": "/media/lektura/laura-i-filon_.html",
- "html_size": 28138,
- "id": 840,
- "tags": [
- 1889,
- 1,
- 34
- ]
- },
- {
- "title": "Leda",
- "html": "/media/lektura/leda_1.html",
- "html_size": 3646,
- "id": 2068,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Legenda",
- "html": "/media/lektura/dzien-jak-co-dzien-legenda.html",
- "html_size": 4282,
- "id": 1535,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 1846,
- "title": "Legenda o gar\u015bci ziemi polskiej",
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ],
- "html_size": 5579,
- "html": "/media/lektura/katechizm-polskiego-dziecka-legenda-o-garsci-ziemi-polskiej_.html",
- "parent_number": 14,
- "id": 1838
- },
- {
- "title": "Legendy warszawskie",
- "id": 295,
- "tags": [
- 31,
- 126,
- 128,
- 127
- ]
- },
- {
- "title": "Len",
- "html": "/media/lektura/len_.html",
- "html_size": 18678,
- "id": 1575,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "parent": 1333,
- "title": "Lew chory",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3706,
- "html": "/media/lektura/lew-chory-bajki-nowe_.html",
- "parent_number": 29,
- "id": 1291
- },
- {
- "parent": 1333,
- "title": "Lew i osie\u0142",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3813,
- "html": "/media/lektura/lew-i-osiel-bajki-nowe_.html",
- "parent_number": 30,
- "id": 1325
- },
- {
- "parent": 1237,
- "title": "Lew i zwierz\u0119ta",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2954,
- "html": "/media/lektura/bajki-i-przypowiesci-lew-i-zwierzeta___.html",
- "parent_number": 44,
- "id": 1265
- },
- {
- "parent": 1237,
- "title": "Lew i zwierz\u0119ta II",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2768,
- "html": "/media/lektura/lew-i-zwierzeta_.html",
- "parent_number": 45,
- "id": 1138
- },
- {
- "parent": 1237,
- "title": "Lew pokorny",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1485,
- "html": "/media/lektura/lew-pokorny_.html",
- "parent_number": 46,
- "id": 1215
- },
- {
- "parent": 1333,
- "title": "Lew, koza, owca i krowa",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2543,
- "html": "/media/lektura/lew-koza-owca-i-krowa-bajki-nowe_.html",
- "parent_number": 31,
- "id": 1300
- },
- {
- "parent": 1333,
- "title": "Lew, w\u00f3\u0142, lis",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2732,
- "html": "/media/lektura/lew-wol-i-lis-bajki-nowe_.html",
- "parent_number": 32,
- "id": 1299
- },
- {
- "parent": 1383,
- "title": "Lili nudzi si\u0119",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 6479,
- "html": "/media/lektura/but-w-butonierce-lili-nudzi-sie.html",
- "parent_number": 14,
- "id": 1363
- },
- {
- "parent": 291,
- "title": "Lilje",
- "tags": [
- 210,
- 1,
- 23,
- 24
- ],
- "html_size": 30966,
- "html": "/media/lektura/ballady-i-romanse-lilje____.html",
- "parent_number": 0,
- "id": 1595
- },
- {
- "title": "Liryki loza\u0144skie",
- "id": 1875,
- "tags": [
- 1,
- 23,
- 24,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Lis i osie\u0142",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1121,
- "html": "/media/lektura/lis-i-osiel_.html",
- "parent_number": 47,
- "id": 1196
- },
- {
- "parent": 1237,
- "title": "Lis i wilk",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 953,
- "html": "/media/lektura/lis-i-wilk_.html",
- "parent_number": 48,
- "id": 1143
- },
- {
- "parent": 1237,
- "title": "Lis m\u0142ody i stary",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 747,
- "html": "/media/lektura/lis-mlody-i-stary_.html",
- "parent_number": 49,
- "id": 1151
- },
- {
- "title": "List Hanusi",
- "html": "/media/lektura/list-hanusi_1.html",
- "html_size": 14775,
- "id": 2069,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Listek z nieba",
- "html": "/media/lektura/listek-z-nieba_.html",
- "html_size": 10174,
- "id": 1055,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "parent": 1333,
- "title": "Listy",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2063,
- "html": "/media/lektura/listy-bajki-nowe_.html",
- "parent_number": 33,
- "id": 1260
- },
- {
- "title": "Lord Jim",
- "html": "/media/lektura/lord-jim.html",
- "html_size": 761191,
- "id": 1778,
- "tags": [
- 4613,
- 338,
- 31,
- 242
- ]
- },
- {
- "title": "Los mi\u0119 ju\u017c \u017caden nie mo\u017ce zatrwo\u017cy\u0107...",
- "html": "/media/lektura/los-mie-juz-zaden-nie-moze-zatrwozyc.html",
- "html_size": 2456,
- "id": 1989,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 2230,
- "title": "Luba! ja wzdycham...",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2115,
- "html": "/media/lektura/luba-ja-wzdycham_1.html",
- "parent_number": 16,
- "id": 2213
- },
- {
- "title": "Lubi\u0119 tych nagich epok bawi\u0107 si\u0119 wspomnieniem...",
- "html": "/media/lektura/lubie-tych-nagich-epok-bawic-sie-wspomnieniem.html",
- "html_size": 5365,
- "id": 2145,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Lubi\u0119, kiedy kobieta...",
- "html": "/media/lektura/lubie-kiedy-kobieta_1.html",
- "html_size": 2549,
- "id": 2070,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Ludzie",
- "html": "/media/lektura/napoj-cienisty-ludzie.html",
- "html_size": 2248,
- "id": 1729,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Ludzie bezdomni",
- "id": 1490,
- "tags": [
- 31,
- 128,
- 242,
- 293
- ]
- },
- {
- "parent": 1490,
- "title": "Ludzie bezdomni, tom drugi",
- "tags": [
- 31,
- 128,
- 242,
- 293
- ],
- "html_size": 515325,
- "html": "/media/lektura/ludzie-bezdomni-tom-drugi_______.html",
- "parent_number": 1,
- "id": 1488
- },
- {
- "parent": 1490,
- "title": "Ludzie bezdomni, tom pierwszy",
- "tags": [
- 31,
- 128,
- 242,
- 293
- ],
- "html_size": 608133,
- "html": "/media/lektura/ludzie-bezdomni-tom-pierwszy_______.html",
- "parent_number": 0,
- "id": 1487
- },
- {
- "title": "Ludzie miotaj\u0105 si\u0119, dr\u0119cz\u0105, cierpi\u0105...",
- "html": "/media/lektura/ludzie-miotaja-sie-drecza-cierpia.html",
- "html_size": 963,
- "id": 2071,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Lulaj\u017ce, Jezuniu...",
- "html": "/media/lektura/lulajze-jezuniu.html",
- "html_size": 4695,
- "id": 2036,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "parent": 1333,
- "title": "Lwica i maciora",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2353,
- "html": "/media/lektura/lwica-i-maciora-bajki-nowe_.html",
- "parent_number": 34,
- "id": 1321
- },
- {
- "parent": 1237,
- "title": "\u0141akomy i zazdrosny",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2276,
- "html": "/media/lektura/lakomy-i-zazdrosny_.html",
- "parent_number": 50,
- "id": 1178
- },
- {
- "title": "Magda",
- "html": "/media/lektura/napoj-cienisty-magda.html",
- "html_size": 2933,
- "id": 1730,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Malarze",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1054,
- "html": "/media/lektura/malarze-bajki-nowe_.html",
- "parent_number": 35,
- "id": 1306
- },
- {
- "title": "Malcy",
- "html": "/media/lektura/malcy.html",
- "html_size": 19271,
- "id": 862,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "Mali czarodzieje",
- "html": "/media/lektura/mali-czarodzieje.html",
- "html_size": 7520,
- "id": 2168,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "parent": 710,
- "title": "Ma\u0142emu wielkiej nadzieje Radziwi\u0142\u0142owi",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 3643,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-malemu-wielkiej-nadzieje-radziwillowi____.html",
- "parent_number": 45,
- "id": 539
- },
- {
- "parent": 1333,
- "title": "Ma\u0142py",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3659,
- "html": "/media/lektura/malpy-bajki-nowe_.html",
- "parent_number": 36,
- "id": 1285
- },
- {
- "parent": 294,
- "title": "Ma\u0142\u017ce\u0144stwo",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 14507,
- "html": "/media/lektura/satyry-czesc-druga-malzenstwo_______.html",
- "parent_number": 0,
- "id": 1567
- },
- {
- "parent": 1237,
- "title": "Ma\u0142\u017ce\u0144stwo",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 863,
- "html": "/media/lektura/malzenstwo_.html",
- "parent_number": 51,
- "id": 1199
- },
- {
- "title": "Marcin Swoboda",
- "html": "/media/lektura/napoj-cienisty-marcin-swoboda.html",
- "html_size": 3736,
- "id": 1731,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 710,
- "title": "Marcinowa powie\u015b\u0107",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2373,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-marcinowa-powiesc____.html",
- "parent_number": 46,
- "id": 464
- },
- {
- "parent": 289,
- "title": "Marnotrawstwo",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 28561,
- "html": "/media/lektura/satyry-czesc-pierwsza-marnotrawstwo_______.html",
- "parent_number": 4,
- "id": 240
- },
- {
- "title": "Marsjanie",
- "html": "/media/lektura/napoj-cienisty-marsjanie.html",
- "html_size": 8644,
- "id": 1732,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1383,
- "title": "Marsz",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 5746,
- "html": "/media/lektura/but-w-butonierce-marsz.html",
- "parent_number": 23,
- "id": 1364
- },
- {
- "parent": 1846,
- "title": "Marsz Skaut\u00f3w",
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ],
- "html_size": 4800,
- "html": "/media/lektura/katechizm-polskiego-dziecka-marsz-skautow_.html",
- "parent_number": 13,
- "id": 1839
- },
- {
- "title": "Marsz strzelc\u00f3w",
- "html": "/media/lektura/marsz-strzelcow.html",
- "html_size": 6562,
- "id": 2101,
- "tags": [
- 5268,
- 1,
- 2,
- 56
- ]
- },
- {
- "title": "Marsz \u015blubny",
- "html": "/media/lektura/marsz-slubny.html",
- "html_size": 1908,
- "id": 841,
- "tags": [
- 1889,
- 1,
- 34,
- 121
- ]
- },
- {
- "title": "Marzenie ciekawego",
- "html": "/media/lektura/marzenie-ciekawego.html",
- "html_size": 1880,
- "id": 2146,
- "tags": [
- 4373,
- 1,
- 24,
- 22
- ]
- },
- {
- "title": "Marzenie paryskie",
- "html": "/media/lektura/marzenie-paryskie.html",
- "html_size": 6179,
- "id": 2147,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Maska",
- "html": "/media/lektura/kwiaty-zla-maska.html",
- "html_size": 4607,
- "id": 1885,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Maska \u015bmierci szkar\u0142atnej",
- "html": "/media/lektura/maska-smierci-szkarlatnej.html",
- "html_size": 20879,
- "id": 1633,
- "tags": [
- 31,
- 1517,
- 4365,
- 24
- ]
- },
- {
- "title": "Mastodonty",
- "html": "/media/lektura/mastodonty_1.html",
- "html_size": 3325,
- "id": 2072,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Matedory",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2325,
- "html": "/media/lektura/matedory_.html",
- "parent_number": 52,
- "id": 1124
- },
- {
- "title": "Matka",
- "html": "/media/lektura/matka_.html",
- "html_size": 17514,
- "id": 1056,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Matysek",
- "html": "/media/lektura/napoj-cienisty-matysek.html",
- "html_size": 4687,
- "id": 1741,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Mazurek",
- "html": "/media/lektura/mazurek.html",
- "html_size": 3101,
- "id": 842,
- "tags": [
- 1564,
- 1889,
- 1,
- 34
- ]
- },
- {
- "title": "Mazurek D\u0105browskiego",
- "html": "/media/lektura/mazurek-dabrowskiego.html",
- "html_size": 15997,
- "id": 2124,
- "tags": [
- 332,
- 1,
- 34,
- 5312
- ]
- },
- {
- "title": "Mazurek m\u0142odzie\u017cy",
- "html": "/media/lektura/mazurek-mlodziezy.html",
- "html_size": 3055,
- "id": 2113,
- "tags": [
- 5148,
- 1,
- 128,
- 2
- ]
- },
- {
- "parent": 1237,
- "title": "M\u0105dry i g\u0142upi",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1397,
- "html": "/media/lektura/madry-i-glupi_.html",
- "parent_number": 53,
- "id": 1228
- },
- {
- "parent": 1237,
- "title": "M\u0105dry i g\u0142upi II",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 865,
- "html": "/media/lektura/madry-i-glupi-ii_.html",
- "parent_number": 54,
- "id": 1192
- },
- {
- "title": "Melancholia",
- "html": "/media/lektura/ballada-z-tamtej-strony-melancholia.html",
- "html_size": 2086,
- "id": 1659,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Melodia mgie\u0142 nocnych",
- "html": "/media/lektura/melodia-mgiel-nocnych_1.html",
- "html_size": 3474,
- "id": 2073,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Mendel gda\u0144ski",
- "html": "/media/lektura/mendel-gdanski.html",
- "html_size": 77870,
- "id": 963,
- "tags": [
- 31,
- 55,
- 54,
- 56
- ]
- },
- {
- "title": "Metrzengerstein",
- "html": "/media/lektura/metrzengerstein.html",
- "html_size": 30167,
- "id": 1938,
- "tags": [
- 31,
- 1517,
- 4365,
- 24
- ]
- },
- {
- "title": "M\u0119drcy \u015bwiata...",
- "html": "/media/lektura/medrcy-swiata.html",
- "html_size": 6115,
- "id": 2012,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "parent": 294,
- "title": "M\u0119drek",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 18056,
- "html": "/media/lektura/satyry-czesc-druga-medrek_______.html",
- "parent_number": 6,
- "id": 12
- },
- {
- "parent": 1383,
- "title": "Miasto",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 21792,
- "html": "/media/lektura/but-w-butonierce-miasto.html",
- "parent_number": 19,
- "id": 1365
- },
- {
- "title": "Mi\u0119dzy nami nic nie by\u0142o",
- "html": "/media/lektura/miedzy-nami-nic-nie-bylo_______.html",
- "html_size": 1949,
- "id": 102,
- "tags": [
- 329,
- 1,
- 56,
- 121
- ]
- },
- {
- "title": "Migo\u0144 i Jawrzon",
- "html": "/media/lektura/napoj-cienisty-migon-i-jawrzon.html",
- "html_size": 5600,
- "id": 1733,
- "tags": [
- 210,
- 337,
- 1,
- 128
- ]
- },
- {
- "title": "Mi\u0142o\u015b\u0107",
- "html": "/media/lektura/dzien-jak-co-dzien-milosc.html",
- "html_size": 3351,
- "id": 1537,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 1383,
- "title": "Mi\u0142o\u015b\u0107 na aucie",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 2079,
- "html": "/media/lektura/but-w-butonierce-milosc-na-aucie.html",
- "parent_number": 7,
- "id": 1366
- },
- {
- "title": "Mizerna, cicha...",
- "html": "/media/lektura/mizerna-cicha_1.html",
- "html_size": 8553,
- "id": 2022,
- "tags": [
- 5177,
- 1,
- 2,
- 24
- ]
- },
- {
- "parent": 1333,
- "title": "M\u0142ot z kowad\u0142em",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2507,
- "html": "/media/lektura/mlot-z-kowadlem-bajki-nowe_.html",
- "parent_number": 37,
- "id": 1256
- },
- {
- "parent": 1333,
- "title": "M\u0142ynarz, syn jego i osie\u0142",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 6877,
- "html": "/media/lektura/mlynarz-syn-jego-i-osiel-bajki-nowe_.html",
- "parent_number": 38,
- "id": 1249
- },
- {
- "title": "Modlitwa",
- "html": "/media/lektura/napoj-cienisty-modlitwa.html",
- "html_size": 1989,
- "id": 1734,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 710,
- "title": "Modlitwa o deszcz",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2236,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-modlitwa-o-deszcz____.html",
- "parent_number": 47,
- "id": 649
- },
- {
- "parent": 1846,
- "title": "Modlitwa polskiego dziewcz\u0119cia",
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ],
- "html_size": 4331,
- "html": "/media/lektura/katechizm-polskiego-dziecka-modlitwa-polskiego-dziewczecia_.html",
- "parent_number": 9,
- "id": 1840
- },
- {
- "parent": 1846,
- "title": "Modlitwa za Ojczyzn\u0119",
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ],
- "html_size": 2405,
- "html": "/media/lektura/katechizm-polskiego-dziecka-modlitwa-za-ojczyzne_.html",
- "parent_number": 8,
- "id": 1841
- },
- {
- "title": "Moesta et errabunda",
- "html": "/media/lektura/moesta-et-errabunda.html",
- "html_size": 4425,
- "id": 2148,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Mogi\u0142a wykl\u0119tego poety",
- "html": "/media/lektura/mogia-wykletego-poety.html",
- "html_size": 1917,
- "id": 2156,
- "tags": [
- 4373,
- 1,
- 24,
- 22
- ]
- },
- {
- "parent": 1798,
- "title": "Mogi\u0142y haremu",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 5189,
- "html": "/media/lektura/sonety-krymskie-mogily-haremu_______.html",
- "parent_number": 9,
- "id": 1789
- },
- {
- "title": "Moja ojczyzna",
- "html": "/media/lektura/moja-ojczyzna.html",
- "html_size": 3002,
- "id": 1933,
- "tags": [
- 1,
- 2308,
- 24,
- 121
- ]
- },
- {
- "parent": 293,
- "title": "Moja pie\u015b\u0144 wieczorna",
- "tags": [
- 332,
- 339,
- 1,
- 128
- ],
- "html_size": 42682,
- "html": "/media/lektura/hymny-moja-piesn-wieczorna_.html",
- "parent_number": 3,
- "id": 715
- },
- {
- "title": "Moja piosnka",
- "html": "/media/lektura/moja-piosnka.html",
- "html_size": 3575,
- "id": 1088,
- "tags": [
- 1,
- 2308,
- 24,
- 121
- ]
- },
- {
- "title": "Monachomachia",
- "html": "/media/lektura/monachomachia.html",
- "html_size": 151430,
- "id": 1847,
- "tags": [
- 31,
- 33,
- 34,
- 4653
- ]
- },
- {
- "title": "Moralno\u015b\u0107 pani Dulskiej",
- "html": "/media/lektura/moralnosc-pani-dulskiej___________.html",
- "html_size": 346508,
- "id": 1555,
- "tags": [
- 152,
- 128,
- 3337,
- 154
- ]
- },
- {
- "parent": 1383,
- "title": "Morga",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 4395,
- "html": "/media/lektura/but-w-butonierce-morga_.html",
- "parent_number": 4,
- "id": 1367
- },
- {
- "parent": 1798,
- "title": "Motto i dedykacja",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 2442,
- "html": "/media/lektura/sonety-krymskie-motto-i-dedykacja_______.html",
- "parent_number": 0,
- "id": 1780
- },
- {
- "parent": 1333,
- "title": "Motyl i chrz\u0105szcz",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1799,
- "html": "/media/lektura/motyl-i-chrzaszcz-bajki-nowe_.html",
- "parent_number": 39,
- "id": 1254
- },
- {
- "title": "Motylek",
- "html": "/media/lektura/motylek_.html",
- "html_size": 8503,
- "id": 1057,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "M\u00f3j Adamito - widzisz, jak to trudne...",
- "html": "/media/lektura/moj-adamito-widzisz,-jak-to-trudne.html",
- "html_size": 3145,
- "id": 2005,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 2230,
- "title": "M\u00f3wi\u0119 z sob\u0105...",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2534,
- "html": "/media/lektura/mowie-z-soba.html",
- "parent_number": 17,
- "id": 2211
- },
- {
- "title": "M\u00f3zg lat 12",
- "html": "/media/lektura/dzien-jak-co-dzien-mozg-lat-12.html",
- "html_size": 3799,
- "id": 1630,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Muza chora",
- "html": "/media/lektura/muza-chora_1.html",
- "html_size": 3014,
- "id": 2150,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Muza sprzedajna",
- "html": "/media/lektura/muza-sprzedajna.html",
- "html_size": 2358,
- "id": 2151,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Muzyka",
- "html": "/media/lektura/muzyka.html",
- "html_size": 1766,
- "id": 2152,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Mysi-kr\u00f3lik i nied\u017awied\u017a",
- "html": "/media/lektura/mysi-krolik-i-niedzwiedz.html",
- "html_size": 11214,
- "id": 2169,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "parent": 1237,
- "title": "Mysz i kot",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2168,
- "html": "/media/lektura/mysz-i-kot.html",
- "parent_number": 55,
- "id": 1339
- },
- {
- "parent": 1333,
- "title": "Myszy",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1851,
- "html": "/media/lektura/myszy-bajki-nowe_.html",
- "parent_number": 40,
- "id": 1261
- },
- {
- "title": "Na Anio\u0142 Pa\u0144ski",
- "html": "/media/lektura/na-aniol-panski_1.html",
- "html_size": 10202,
- "id": 2074,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 708,
- "title": "Na Barbar\u0119",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 4455,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-barbare_____.html",
- "parent_number": 0,
- "id": 1586
- },
- {
- "parent": 708,
- "title": "Na butnego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 797,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-butnego_____.html",
- "parent_number": 34,
- "id": 588
- },
- {
- "parent": 711,
- "title": "Na Chmur\u0119",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1109,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-chmure____.html",
- "parent_number": 53,
- "id": 686
- },
- {
- "parent": 710,
- "title": "Na dom w Czarnolesie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1577,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-na-dom-w-czarnolesie____.html",
- "parent_number": 48,
- "id": 655
- },
- {
- "title": "Na drzewie zawis\u0142 w\u0105\u017c...",
- "html": "/media/lektura/na-drzewie-zawisl-waz.html",
- "html_size": 4666,
- "id": 1953,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 708,
- "title": "Na Fortun\u0119",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1710,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-fortune_____.html",
- "parent_number": 35,
- "id": 650
- },
- {
- "parent": 708,
- "title": "Na frasowne",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 831,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-frasowne_____.html",
- "parent_number": 36,
- "id": 674
- },
- {
- "parent": 708,
- "title": "Na frasownego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 678,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-frasownego_____.html",
- "parent_number": 37,
- "id": 547
- },
- {
- "parent": 711,
- "title": "Na fraszki",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 912,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-fraszki____.html",
- "parent_number": 54,
- "id": 570
- },
- {
- "parent": 708,
- "title": "Na gospodarza",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1379,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-gospodarza_____.html",
- "parent_number": 38,
- "id": 676
- },
- {
- "parent": 708,
- "title": "Na grzebie\u0144",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1023,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-grzebien_____.html",
- "parent_number": 39,
- "id": 456
- },
- {
- "parent": 708,
- "title": "Na hardego (Nie b\u0105d\u017a mi hardym, chocia\u015b wielkim panem...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 799,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-hardego-nie-badz-mi-hardym-chocia_____.html",
- "parent_number": 40,
- "id": 600
- },
- {
- "parent": 708,
- "title": "Na hardego (Nie chc\u0119 w tej mierze g\u0142owy psowa\u0107 sobie...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1019,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-hardego-nie-chce-w-tej-mierze-glo_____.html",
- "parent_number": 41,
- "id": 447
- },
- {
- "parent": 710,
- "title": "Na heretyki",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2468,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-na-heretyki____.html",
- "parent_number": 60,
- "id": 556
- },
- {
- "parent": 711,
- "title": "Na historyj\u0105 troja\u0144sk\u0105",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1535,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-historyja-trojanska____.html",
- "parent_number": 64,
- "id": 581
- },
- {
- "parent": 773,
- "title": "Na jeziorach w\u0142oskich",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 18866,
- "html": "/media/lektura/z-wichrow-i-hal-z-alp-na-jeziorach-wloskich__.html",
- "parent_number": 8,
- "id": 1579
- },
- {
- "parent": 773,
- "title": "Na jeziorze Czterech Kanton\u00f3w",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 21046,
- "html": "/media/lektura/z-wichrow-i-hal-z-alp-na-jeziorze-czterech-kantonow__.html",
- "parent_number": 0,
- "id": 760
- },
- {
- "parent": 708,
- "title": "Na kogo\u015b",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 882,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-kogos_____.html",
- "parent_number": 42,
- "id": 574
- },
- {
- "parent": 708,
- "title": "Na Konrata",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 672,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-konrata_____.html",
- "parent_number": 43,
- "id": 441
- },
- {
- "title": "Na krzy\u017cyk na piersiach jednej panny",
- "html": "/media/lektura/na-krzyzyk-na-piersiach-jednej-panny_______.html",
- "html_size": 1944,
- "id": 195,
- "tags": [
- 123,
- 1,
- 122,
- 22
- ]
- },
- {
- "parent": 709,
- "title": "Na Leliw\u0119 Tarnowskich",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1194,
- "html": "/media/lektura/fraszki-fraszki-dodane-na-leliwe-tarnowskich____.html",
- "parent_number": 1,
- "id": 459
- },
- {
- "parent": 711,
- "title": "Na lip\u0119 (Go\u015bciu, si\u0105d\u017a pod mym li\u015bciem, a odpoczni sobie!)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1969,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-lipe-gosciu-siadz-pod-mym-lisciem-a-____.html",
- "parent_number": 65,
- "id": 698
- },
- {
- "parent": 710,
- "title": "Na lip\u0119 (Przypatrz si\u0119, go\u015bciu, jako on list m\u00f3j zielony...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1046,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-na-lipe-przypatrz-sie-gosciu-jako-on-____.html",
- "parent_number": 61,
- "id": 582
- },
- {
- "parent": 710,
- "title": "Na lip\u0119 (Uczony go\u015bciu! Je\u015bli spraw\u0105 mego cienia...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1839,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-na-lipe-uczony-gosciu-jesli-sprawa-me____.html",
- "parent_number": 62,
- "id": 613
- },
- {
- "parent": 773,
- "title": "Na lodowcach Aletschu",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 6005,
- "html": "/media/lektura/z-wichrow-i-hal-z-alp-na-lodowcach-aletschu__.html",
- "parent_number": 3,
- "id": 761
- },
- {
- "parent": 708,
- "title": "Na \u0142akome",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1182,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-lakome_____.html",
- "parent_number": 44,
- "id": 669
- },
- {
- "parent": 711,
- "title": "Na \u0142akomego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1052,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-lakomego____.html",
- "parent_number": 66,
- "id": 485
- },
- {
- "parent": 708,
- "title": "Na matematyka",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1527,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-matematyka_____.html",
- "parent_number": 0,
- "id": 1584
- },
- {
- "parent": 708,
- "title": "Na Matusza",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 562,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-matusza_____.html",
- "parent_number": 46,
- "id": 696
- },
- {
- "parent": 708,
- "title": "Na miernika",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1388,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-miernika_____.html",
- "parent_number": 0,
- "id": 1583
- },
- {
- "parent": 708,
- "title": "Na m\u0142odo\u015b\u0107",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 698,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-mlodosc_____.html",
- "parent_number": 0,
- "id": 1594
- },
- {
- "parent": 711,
- "title": "Na most warszewski",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2083,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-most-warszewski____.html",
- "parent_number": 67,
- "id": 594
- },
- {
- "parent": 708,
- "title": "Na nabo\u017cn\u0105",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 717,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-nabozna_____.html",
- "parent_number": 0,
- "id": 1593
- },
- {
- "parent": 708,
- "title": "Na nieodpowiedn\u0105",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 706,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-nieodpowiedna_____.html",
- "parent_number": 50,
- "id": 540
- },
- {
- "parent": 708,
- "title": "Na nies\u0142own\u0105",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1133,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-nieslowna_____.html",
- "parent_number": 51,
- "id": 462
- },
- {
- "parent": 708,
- "title": "Na nies\u0142ownego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 816,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-nieslownego_____.html",
- "parent_number": 52,
- "id": 465
- },
- {
- "parent": 711,
- "title": "Na obraz Andrzeja Patrycego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 552,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-obraz-andrzeja-patrycego____.html",
- "parent_number": 70,
- "id": 629
- },
- {
- "parent": 708,
- "title": "Na pany",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1493,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-pany_____.html",
- "parent_number": 53,
- "id": 507
- },
- {
- "parent": 708,
- "title": "Na pieszczone ziemiany",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 798,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-pieszczone-ziemiany_____.html",
- "parent_number": 54,
- "id": 615
- },
- {
- "parent": 708,
- "title": "Na pijanego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1440,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-pijanego_____.html",
- "parent_number": 55,
- "id": 550
- },
- {
- "parent": 711,
- "title": "Na Piotra",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 715,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-piotra____.html",
- "parent_number": 71,
- "id": 678
- },
- {
- "title": "Na poddaszu",
- "html": "/media/lektura/napoj-cienisty-na-poddaszu.html",
- "html_size": 2014,
- "id": 1759,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 708,
- "title": "Na poduszk\u0119",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2077,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-poduszke_____.html",
- "parent_number": 0,
- "id": 1587
- },
- {
- "parent": 708,
- "title": "Na pos\u0142a papieskiego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1581,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-posla-papieskiego_____.html",
- "parent_number": 57,
- "id": 583
- },
- {
- "parent": 711,
- "title": "Na pszczo\u0142y budziwiskie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1265,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-pszczoly-budziwiskie____.html",
- "parent_number": 72,
- "id": 635
- },
- {
- "parent": 711,
- "title": "Na r\u00f3\u017c\u0105",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1013,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-roza____.html",
- "parent_number": 73,
- "id": 690
- },
- {
- "parent": 711,
- "title": "Na rym nierozmy\u015blny",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 550,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-rym-nierozmyslny____.html",
- "parent_number": 74,
- "id": 467
- },
- {
- "parent": 709,
- "title": "Na s\u0142ownik M\u0105czy\u0144skiego",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1153,
- "html": "/media/lektura/fraszki-fraszki-dodane-na-slownik-maczynskiego____.html",
- "parent_number": 2,
- "id": 671
- },
- {
- "parent": 710,
- "title": "Na s\u0142up kamienny",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1595,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-na-slup-kamienny____.html",
- "parent_number": 63,
- "id": 677
- },
- {
- "parent": 708,
- "title": "Na Sokalskie mogi\u0142y",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1225,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-sokalskie-mogily_____.html",
- "parent_number": 58,
- "id": 535
- },
- {
- "title": "Na sprowadzenie proch\u00f3w Napoleona",
- "html": "/media/lektura/na-sprowadzenie-prochow-napoleona.html",
- "html_size": 6483,
- "id": 1954,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 708,
- "title": "Na star\u0105",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1704,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-stara_____.html",
- "parent_number": 59,
- "id": 534
- },
- {
- "parent": 708,
- "title": "Na staro\u015b\u0107",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 657,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-starosc_____.html",
- "parent_number": 60,
- "id": 623
- },
- {
- "parent": 708,
- "title": "Na stryja",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1644,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-stryja_____.html",
- "parent_number": 61,
- "id": 430
- },
- {
- "parent": 708,
- "title": "Na swoje ksi\u0119gi",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2613,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-swoje-ksiegi_____.html",
- "parent_number": 62,
- "id": 427
- },
- {
- "parent": 287,
- "title": "Na szczycie",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 2280,
- "html": "/media/lektura/z-wichrow-i-hal-z-tatr-na-szczycie_.html",
- "parent_number": 0,
- "id": 772
- },
- {
- "parent": 710,
- "title": "Na \u015bklenic\u0119",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1065,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-na-sklenice____.html",
- "parent_number": 64,
- "id": 665
- },
- {
- "parent": 708,
- "title": "Na \u015alas\u0119",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1020,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-slase_____.html",
- "parent_number": 63,
- "id": 471
- },
- {
- "parent": 708,
- "title": "Na \u015bmier\u0107",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 677,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-smierc_____.html",
- "parent_number": 64,
- "id": 626
- },
- {
- "parent": 708,
- "title": "Na \u015awi\u0119tego Ojca",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1106,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-swietego-ojca_____.html",
- "parent_number": 65,
- "id": 638
- },
- {
- "parent": 711,
- "title": "Na ten\u017ce (Nie wo\u0142a dzi\u015b przewo\u017anik: \u201eWsiadaj, kto ma wsiada\u0107!)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1824,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-tenze-nie-wola-dzis-przewoznik-wsiad____.html",
- "parent_number": 68,
- "id": 407
- },
- {
- "parent": 711,
- "title": "Na ten\u017ce (To jest on brzeg szcz\u0119\u015bliwy, gdzie na czasy wieczne...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1897,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-tenze-to-jest-on-brzeg-szczesliwy-gd____.html",
- "parent_number": 69,
- "id": 645
- },
- {
- "parent": 773,
- "title": "Na Teufelsbruecke",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 6453,
- "html": "/media/lektura/z-wichrow-i-hal-z-alp-na-teufelsbruecke__.html",
- "parent_number": 1,
- "id": 762
- },
- {
- "parent": 711,
- "title": "Na to\u017c (G\u0142adko\u015b\u0107 od ciebie, Wenus, ale nie trwa w mierze...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1126,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-toz-gladkosc-od-ciebie-wenus-ale-nie____.html",
- "parent_number": 81,
- "id": 511
- },
- {
- "parent": 708,
- "title": "Na uczt\u0119",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1638,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-uczte_____.html",
- "parent_number": 0,
- "id": 1591
- },
- {
- "parent": 708,
- "title": "Na utratne",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1451,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-na-utratne_____.html",
- "parent_number": 67,
- "id": 689
- },
- {
- "parent": 711,
- "title": "Na wieniec",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 822,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-wieniec____.html",
- "parent_number": 75,
- "id": 423
- },
- {
- "title": "Na wsi",
- "html": "/media/lektura/dzien-jak-co-dzien-na-wsi.html",
- "html_size": 3294,
- "id": 1539,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Na Wzg\u00f3rzu \u015amierci",
- "html": "/media/lektura/na-wzgorzu-smierci.html",
- "html_size": 141154,
- "id": 774,
- "tags": [
- 152,
- 1562,
- 339,
- 128
- ]
- },
- {
- "parent": 711,
- "title": "Na zachowanie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1482,
- "html": "/media/lektura/fraszki-ksiegi-wtore-na-zachowanie____.html",
- "parent_number": 76,
- "id": 424
- },
- {
- "parent": 710,
- "title": "Na zdrowie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2362,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-na-zdrowie____.html",
- "parent_number": 65,
- "id": 661
- },
- {
- "title": "Na zegarek ciek\u0105cy",
- "html": "/media/lektura/na-zegarek-ciekacy_______.html",
- "html_size": 1376,
- "id": 45,
- "tags": [
- 123,
- 234,
- 1,
- 122
- ]
- },
- {
- "title": "Nad Niemnem",
- "id": 1500,
- "tags": [
- 31,
- 2294,
- 242,
- 56
- ]
- },
- {
- "parent": 1500,
- "title": "Nad Niemnem, tom drugi",
- "tags": [
- 31,
- 2294,
- 242,
- 56
- ],
- "html_size": 577080,
- "html": "/media/lektura/nad-niemnem-tom-drugi_.html",
- "parent_number": 1,
- "id": 1498
- },
- {
- "parent": 1500,
- "title": "Nad Niemnem, tom pierwszy",
- "tags": [
- 31,
- 2294,
- 242,
- 56
- ],
- "html_size": 533496,
- "html": "/media/lektura/nad-niemnem-tom-pierwszy.html",
- "parent_number": 0,
- "id": 1485
- },
- {
- "parent": 1500,
- "title": "Nad Niemnem, tom trzeci",
- "tags": [
- 31,
- 2294,
- 242,
- 56
- ],
- "html_size": 677234,
- "html": "/media/lektura/nad-niemnem-tom-trzeci.html",
- "parent_number": 2,
- "id": 1499
- },
- {
- "title": "Nad przepa\u015bciami",
- "id": 742,
- "tags": [
- 339,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Nad ranem",
- "html": "/media/lektura/napoj-cienisty-nad-ranem.html",
- "html_size": 2322,
- "id": 1757,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1875,
- "title": "Nad wod\u0105 wielk\u0105 i czyst\u0105...",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2926,
- "html": "/media/lektura/nad-woda-wielka-i-czysta.html",
- "parent_number": 4,
- "id": 1866
- },
- {
- "title": "Nadgrobek Perlisi",
- "html": "/media/lektura/nadgrobek-perlisi_______.html",
- "html_size": 6969,
- "id": 13,
- "tags": [
- 123,
- 1,
- 122,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Nadzieja i boja\u017a\u0144",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2828,
- "html": "/media/lektura/nadzieja-i-bojazn-bajki-nowe_.html",
- "parent_number": 41,
- "id": 1318
- },
- {
- "parent": 711,
- "title": "Nagrobek Adrianowi doktorowi",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 715,
- "html": "/media/lektura/fraszki-ksiegi-wtore-nagrobek-adrianowi-doktorowi____.html",
- "parent_number": 55,
- "id": 521
- },
- {
- "parent": 711,
- "title": "Nagrobek Annie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1899,
- "html": "/media/lektura/fraszki-ksiegi-wtore-nagrobek-annie____.html",
- "parent_number": 56,
- "id": 637
- },
- {
- "parent": 710,
- "title": "Nagrobek dwiema braciej",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1202,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-dwiema-braciej____.html",
- "parent_number": 49,
- "id": 619
- },
- {
- "parent": 710,
- "title": "Nagrobek G\u0105sce",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 3854,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-gasce____.html",
- "parent_number": 50,
- "id": 664
- },
- {
- "parent": 710,
- "title": "Nagrobek Hannie Spinkowej od m\u0119\u017ca",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1633,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-hannie-spinkowej-od-meza____.html",
- "parent_number": 52,
- "id": 418
- },
- {
- "parent": 710,
- "title": "Nagrobek jej M. P. wojewodzinej lubelskiej",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1723,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-jej-m-p-wojewodzinej-lubelsk____.html",
- "parent_number": 53,
- "id": 636
- },
- {
- "parent": 710,
- "title": "Nagrobek koniowi",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1882,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-koniowi____.html",
- "parent_number": 55,
- "id": 504
- },
- {
- "parent": 710,
- "title": "Nagrobek kotowi",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1857,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-kotowi____.html",
- "parent_number": 56,
- "id": 634
- },
- {
- "parent": 711,
- "title": "Nagrobek m\u0119\u017cowi od \u017cony",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 831,
- "html": "/media/lektura/fraszki-ksiegi-wtore-nagrobek-mezowi-od-zony____.html",
- "parent_number": 57,
- "id": 525
- },
- {
- "parent": 711,
- "title": "Nagrobek Miko\u0142ajowi Trzebuchowskiemu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 723,
- "html": "/media/lektura/fraszki-ksiegi-wtore-nagrobek-mikolajowi-trzebuchowskiemu____.html",
- "parent_number": 58,
- "id": 700
- },
- {
- "parent": 711,
- "title": "Nagrobek opi\u0142ej babie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1315,
- "html": "/media/lektura/fraszki-ksiegi-wtore-nagrobek-opilej-babie____.html",
- "parent_number": 60,
- "id": 642
- },
- {
- "parent": 711,
- "title": "Nagrobek Paw\u0142owi Chmielowskiemu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1454,
- "html": "/media/lektura/fraszki-ksiegi-wtore-nagrobek-pawlowi-chmielowskiemu____.html",
- "parent_number": 61,
- "id": 538
- },
- {
- "parent": 710,
- "title": "Nagrobek Piotrowi",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 917,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-piotrowi____.html",
- "parent_number": 57,
- "id": 603
- },
- {
- "parent": 710,
- "title": "Nagrobek R\u00f3zynie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 790,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-rozynie____.html",
- "parent_number": 58,
- "id": 691
- },
- {
- "parent": 709,
- "title": "Nagrobek Stanis\u0142awowi Grzepskiemu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1644,
- "html": "/media/lektura/fraszki-fraszki-dodane-nagrobek-stanislawowi-grzepskiemu____.html",
- "parent_number": 0,
- "id": 458
- },
- {
- "parent": 710,
- "title": "Nagrobek Stanis\u0142awowi Strusowi",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1676,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-nagrobek-stanislawowi-strusowi____.html",
- "parent_number": 59,
- "id": 598
- },
- {
- "parent": 711,
- "title": "Nagrobek Stanis\u0142awowi Zaklice z Czy\u017cowa",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1641,
- "html": "/media/lektura/fraszki-ksiegi-wtore-nagrobek-stanislawowi-zaklice-z-czyzowa____.html",
- "parent_number": 62,
- "id": 707
- },
- {
- "title": "Namowa",
- "html": "/media/lektura/napoj-cienisty-namowa.html",
- "html_size": 3865,
- "id": 1758,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Narodzie m\u00f3j...",
- "html": "/media/lektura/narodzie-moj.html",
- "html_size": 7591,
- "id": 1955,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Narodziny Afrodyty",
- "html": "/media/lektura/narodziny-afrodyty_1.html",
- "html_size": 8120,
- "id": 2075,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Narodziny wiosny",
- "html": "/media/lektura/narodziny-wiosny_1.html",
- "html_size": 5516,
- "id": 2076,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Narzeczona",
- "html": "/media/lektura/dzien-jak-co-dzien-narzeczona.html",
- "html_size": 3587,
- "id": 1538,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Nasza szkapa",
- "html": "/media/lektura/nasza-szkapa_______.html",
- "html_size": 120583,
- "id": 11,
- "tags": [
- 31,
- 55,
- 54,
- 56
- ]
- },
- {
- "parent": 1383,
- "title": "Nic",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 304,
- "html": "/media/lektura/but-w-butonierce-nic.html",
- "parent_number": 22,
- "id": 1369
- },
- {
- "title": "Nie uda\u0142o si\u0119",
- "html": "/media/lektura/nie-udalo-sie.html",
- "html_size": 6513,
- "id": 880,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "Nie wierz\u0119 w nic...",
- "html": "/media/lektura/nie-wierze-w-nic.html",
- "html_size": 3787,
- "id": 2077,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Nie-Boska komedia",
- "html": "/media/lektura/nie-boska-komedia_______.html",
- "html_size": 423298,
- "id": 206,
- "tags": [
- 152,
- 372,
- 373,
- 24
- ]
- },
- {
- "title": "Niedawno jeszcze - kiedym spoczywa\u0142 u\u015bpiony...",
- "html": "/media/lektura/niedawno-jeszcze-kiedym-spoczywal-uspiony.html",
- "html_size": 2745,
- "id": 2010,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Niedawno jeszcze wasze mogi\u0142y...",
- "html": "/media/lektura/niedawno-jeszcze-wasze-mogily.html",
- "html_size": 2332,
- "id": 1957,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Niedziela",
- "html": "/media/lektura/napoj-cienisty-niedziela.html",
- "html_size": 3813,
- "id": 1760,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Nied\u017awied\u017a i liszka",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1400,
- "html": "/media/lektura/niedzwiedz-i-liszka_.html",
- "parent_number": 56,
- "id": 1137
- },
- {
- "parent": 2230,
- "title": "Niepewno\u015b\u0107",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 5806,
- "html": "/media/lektura/niepewnosc.html",
- "parent_number": 19,
- "id": 2225
- },
- {
- "title": "Niepowrotne",
- "html": "/media/lektura/niepowrotne.html",
- "html_size": 6279,
- "id": 2153,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Niestatek (Oczy s\u0105 ogie\u0144, czo\u0142o jest zwierciad\u0142em...)",
- "html": "/media/lektura/niestatek-oczy-sa-ogien-czolo-jest-zwierciadlem_______.html",
- "html_size": 3034,
- "id": 49,
- "tags": [
- 123,
- 234,
- 1,
- 122
- ]
- },
- {
- "title": "Niestatek (Pr\u0119dzej kto wiatr w w\u00f3r zamknie, pr\u0119dzej i promieni...)",
- "html": "/media/lektura/niestatek-predzej-kto-wiatr-w-wor-zamknie-predzej-i-promieni_______.html",
- "html_size": 3539,
- "id": 201,
- "tags": [
- 123,
- 234,
- 1,
- 122
- ]
- },
- {
- "title": "Nieszcz\u0119\u015bcie",
- "html": "/media/lektura/nieszczescie.html",
- "html_size": 1759,
- "id": 2154,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 2230,
- "title": "Nieuczona twa posta\u0107...",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 3465,
- "html": "/media/lektura/nieuczona-twa-postac.html",
- "parent_number": 18,
- "id": 2210
- },
- {
- "title": "Niewiara",
- "html": "/media/lektura/napoj-cienisty-niewiara.html",
- "html_size": 2509,
- "id": 1761,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Niewidzialni",
- "html": "/media/lektura/napoj-cienisty-niewidzialni.html",
- "html_size": 2563,
- "id": 1762,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Niewiedza",
- "html": "/media/lektura/napoj-cienisty-niewiedza.html",
- "html_size": 1812,
- "id": 1765,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Niewierny",
- "html": "/media/lektura/niewierny.html",
- "html_size": 4003,
- "id": 2078,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Noc",
- "html": "/media/lektura/napoj-cienisty-noc.html",
- "html_size": 2287,
- "id": 1763,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Noc\u0105",
- "html": "/media/lektura/napoj-cienisty-noca.html",
- "html_size": 2704,
- "id": 1764,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Nocni str\u00f3\u017ce",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2602,
- "html": "/media/lektura/nocni-stroze_.html",
- "parent_number": 57,
- "id": 1126
- },
- {
- "parent": 1333,
- "title": "Noga i but",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2109,
- "html": "/media/lektura/noga-i-but-bajki-nowe_.html",
- "parent_number": 42,
- "id": 1314
- },
- {
- "parent": 711,
- "title": "O Aleksandrzech",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2104,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-aleksandrzech____.html",
- "parent_number": 77,
- "id": 571
- },
- {
- "parent": 711,
- "title": "O Bekwarku",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 625,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-bekwarku____.html",
- "parent_number": 78,
- "id": 667
- },
- {
- "parent": 710,
- "title": "O b\u0142a\u017anie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 549,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-blaznie____.html",
- "parent_number": 66,
- "id": 488
- },
- {
- "parent": 1846,
- "title": "O celu Polaka",
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ],
- "html_size": 2098,
- "html": "/media/lektura/katechizm-polskiego-dziecka-o-celu-polaka_.html",
- "parent_number": 2,
- "id": 1842
- },
- {
- "parent": 708,
- "title": "O ch\u0142opcu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1143,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-chlopcu_____.html",
- "parent_number": 68,
- "id": 481
- },
- {
- "parent": 708,
- "title": "O chmielu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1130,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-chmielu_____.html",
- "parent_number": 69,
- "id": 695
- },
- {
- "parent": 708,
- "title": "O dobrym panie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1029,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-dobrym-panie_____.html",
- "parent_number": 70,
- "id": 575
- },
- {
- "parent": 708,
- "title": "O Doktorze Hiszpanie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2803,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-doktorze-hiszpanie_____.html",
- "parent_number": 71,
- "id": 523
- },
- {
- "parent": 711,
- "title": "O drugim (Co si\u0119 wam widzi ten drugi?)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1150,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-drugim-co-sie-wam-widzi-ten-drugi____.html",
- "parent_number": 88,
- "id": 473
- },
- {
- "parent": 710,
- "title": "O duszy",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1461,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-duszy____.html",
- "parent_number": 67,
- "id": 506
- },
- {
- "parent": 710,
- "title": "O flisie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1980,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-flisie____.html",
- "parent_number": 68,
- "id": 483
- },
- {
- "parent": 710,
- "title": "O fraszkach (Fraszki tu niepowa\u017cne z statkiem si\u0119 zmiesza\u0142y...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1048,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-fraszkach-fraszki-tu-niepowazne-z-s____.html",
- "parent_number": 69,
- "id": 480
- },
- {
- "parent": 708,
- "title": "O fraszkach (Komu sto fraszek zda si\u0119 przeczy\u015b\u0107 ma\u0142o...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 865,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-fraszkach-komu-sto-fraszek-zda-sie_____.html",
- "parent_number": 73,
- "id": 563
- },
- {
- "parent": 708,
- "title": "O fraszkach (Najdziesz tu fraszk\u0119 dobr\u0105, najdziesz z\u0142\u0105 i \u015brzedni\u0105...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 705,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-fraszkach-najdziesz-tu-fraszke-dob______.html",
- "parent_number": 74,
- "id": 631
- },
- {
- "parent": 711,
- "title": "O fraszkach (Pr\u00f3\u017cno mnie do dziewi\u0105ci lat swe fraszki chowa\u0107...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1267,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-fraszkach-prozno-mnie-do-dziewiaci-la____.html",
- "parent_number": 84,
- "id": 562
- },
- {
- "parent": 711,
- "title": "O G\u0105sce",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1570,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-gasce____.html",
- "parent_number": 85,
- "id": 684
- },
- {
- "parent": 708,
- "title": "O gospodyniej (Proszono jednej wielkimi pro\u015bbami...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 6722,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-gospodyniej-proszono-jednej-wielki________.html",
- "parent_number": 75,
- "id": 457
- },
- {
- "parent": 708,
- "title": "O gospodyniej (Starosta jednej paniej rozkaza\u0142 objawi\u0107...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1048,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-gospodyniej-starosta-jednej-paniej_____.html",
- "parent_number": 76,
- "id": 455
- },
- {
- "parent": 711,
- "title": "O go\u015bciu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 929,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-gosciu____.html",
- "parent_number": 86,
- "id": 490
- },
- {
- "parent": 708,
- "title": "O Hannie (Serce mi zbieg\u0142o, a nie wiem inaczej...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1316,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-hannie-serce-mi-zbieglo-a-nie-wiem_______.html",
- "parent_number": 77,
- "id": 469
- },
- {
- "parent": 708,
- "title": "O Hannie (Tu g\u00f3ra drzewy natkniona...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1363,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-hannie-tu-gora-drzewy-natkniona_____.html",
- "parent_number": 78,
- "id": 685
- },
- {
- "parent": 710,
- "title": "O Hektorze",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1689,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-hektorze____.html",
- "parent_number": 70,
- "id": 413
- },
- {
- "parent": 708,
- "title": "O J\u0119drzeju",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1906,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-jedrzeju_____.html",
- "parent_number": 0,
- "id": 1588
- },
- {
- "parent": 708,
- "title": "O Kachnie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1296,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-kachnie_____.html",
- "parent_number": 0,
- "id": 1589
- },
- {
- "parent": 711,
- "title": "O kapelanie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1037,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-kapelanie____.html",
- "parent_number": 87,
- "id": 425
- },
- {
- "parent": 710,
- "title": "O kap\u0142anie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 827,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-kaplanie____.html",
- "parent_number": 71,
- "id": 630
- },
- {
- "parent": 711,
- "title": "O kaznodziei",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1045,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-kaznodziei____.html",
- "parent_number": 89,
- "id": 499
- },
- {
- "parent": 708,
- "title": "O kocie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1293,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-kocie_____.html",
- "parent_number": 81,
- "id": 429
- },
- {
- "parent": 710,
- "title": "O ko\u0142nierzu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1003,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-kolnierzu____.html",
- "parent_number": 72,
- "id": 620
- },
- {
- "parent": 710,
- "title": "O ko\u017ale",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2073,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-kozle____.html",
- "parent_number": 73,
- "id": 500
- },
- {
- "parent": 711,
- "title": "O Ko\u017ale",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1713,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-kozle____.html",
- "parent_number": 90,
- "id": 505
- },
- {
- "parent": 708,
- "title": "O ksi\u0119dzu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1713,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-ksiedzu_____.html",
- "parent_number": 0,
- "id": 1581
- },
- {
- "parent": 708,
- "title": "O li\u015bcie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 938,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-liscie_____.html",
- "parent_number": 83,
- "id": 592
- },
- {
- "parent": 711,
- "title": "O \u0142azarzowych ksi\u0119gach",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 5847,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-lazarzowych-ksiegach____.html",
- "parent_number": 91,
- "id": 644
- },
- {
- "parent": 708,
- "title": "O \u0141azickim a Barzym",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1568,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-lazickim-a-barzym_____.html",
- "parent_number": 0,
- "id": 1582
- },
- {
- "parent": 710,
- "title": "O \u0142aziebnikach",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 666,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-laziebnikach____.html",
- "parent_number": 74,
- "id": 496
- },
- {
- "parent": 710,
- "title": "O Marku",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 807,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-marku____.html",
- "parent_number": 75,
- "id": 618
- },
- {
- "title": "O matce",
- "html": "/media/lektura/ballada-z-tamtej-strony-o-matce.html",
- "html_size": 2913,
- "id": 1660,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 710,
- "title": "O m\u0105dro\u015bci",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 852,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-madrosci____.html",
- "parent_number": 76,
- "id": 672
- },
- {
- "parent": 710,
- "title": "O Mikoszu",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1882,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-mikoszu____.html",
- "parent_number": 77,
- "id": 554
- },
- {
- "parent": 710,
- "title": "O mi\u0142o\u015bci (G\u0142\u00f3d a praca mi\u0142o\u015b\u0107 kazi...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 736,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-milosci-glod-a-praca-milosc-kazi____.html",
- "parent_number": 78,
- "id": 549
- },
- {
- "parent": 711,
- "title": "O mi\u0142o\u015bci (Kto naprz\u00f3d pocz\u0105\u0142 Mi\u0142o\u015b\u0107 dzieci\u0119ciem malowa\u0107...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2502,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-milosci-kto-naprzod-poczal-milosc-dzi____.html",
- "parent_number": 92,
- "id": 683
- },
- {
- "parent": 710,
- "title": "O mi\u0142o\u015bci (Ma ju\u017c pok\u00f3j Prometeus, lecz ja miasto niego...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2533,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-milosci-ma-juz-pokoj-prometeus-lecz____.html",
- "parent_number": 80,
- "id": 503
- },
- {
- "parent": 708,
- "title": "O mi\u0142o\u015bci (Pr\u00f3\u017cno uciec, pr\u00f3\u017cno si\u0119 przed mi\u0142o\u015bci\u0105 schroni\u0107...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 674,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-milosci-prozno-uciec-prozno-sie-pr____.html",
- "parent_number": 85,
- "id": 553
- },
- {
- "parent": 710,
- "title": "O Necie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1051,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-necie____.html",
- "parent_number": 81,
- "id": 614
- },
- {
- "title": "O niebie",
- "html": "/media/lektura/kamien-o-niebie.html",
- "html_size": 2561,
- "id": 1686,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 711,
- "title": "O nowych fraszkach",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2155,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-nowych-fraszkach____.html",
- "parent_number": 93,
- "id": 531
- },
- {
- "parent": 711,
- "title": "O Pelopie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 3111,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-pelopie____.html",
- "parent_number": 94,
- "id": 648
- },
- {
- "title": "O Polsko moja! Ty\u015b pierwsza \u015bwiatu...",
- "html": "/media/lektura/o-polsko-moja-tys-pierwsza-swiatu.html",
- "html_size": 4135,
- "id": 1998,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 708,
- "title": "O pra\u0142acie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2769,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-pralacie_____.html",
- "parent_number": 86,
- "id": 608
- },
- {
- "parent": 711,
- "title": "O proporcyjej",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 670,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-proporcyjej____.html",
- "parent_number": 95,
- "id": 656
- },
- {
- "parent": 711,
- "title": "O rozkoszy",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 663,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-rozkoszy____.html",
- "parent_number": 96,
- "id": 444
- },
- {
- "parent": 711,
- "title": "O rozwodzie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2374,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-rozwodzie____.html",
- "parent_number": 97,
- "id": 414
- },
- {
- "parent": 711,
- "title": "O Rzymie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1387,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-rzymie____.html",
- "parent_number": 98,
- "id": 527
- },
- {
- "parent": 708,
- "title": "O sobie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1160,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-sobie_____.html",
- "parent_number": 87,
- "id": 621
- },
- {
- "title": "O sonecie",
- "html": "/media/lektura/o-sonecie_1.html",
- "html_size": 2883,
- "id": 2079,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 711,
- "title": "O starym",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1615,
- "html": "/media/lektura/fraszki-ksiegi-wtore-o-starym____.html",
- "parent_number": 99,
- "id": 543
- },
- {
- "parent": 708,
- "title": "O Staszku",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 665,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-staszku_____.html",
- "parent_number": 88,
- "id": 646
- },
- {
- "parent": 710,
- "title": "O swych rymiech",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1427,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-swych-rymiech____.html",
- "parent_number": 82,
- "id": 421
- },
- {
- "parent": 708,
- "title": "O \u015blachcicu polskim",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 889,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-slachcicu-polskim_____.html",
- "parent_number": 89,
- "id": 580
- },
- {
- "parent": 708,
- "title": "O \u015bmierci",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1174,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-smierci_____.html",
- "parent_number": 90,
- "id": 589
- },
- {
- "parent": 710,
- "title": "O tej\u017ce (Jako ogie\u0144 a woda r\u00f3\u017cno siebie chodz\u0105...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2586,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-o-tejze-jako-ogien-a-woda-rozno-siebi____.html",
- "parent_number": 79,
- "id": 436
- },
- {
- "parent": 708,
- "title": "O tym\u017ce (Wczora pi\u0142 z nami, a dzi\u015b go chowamy...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1191,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-tymze-wczora-pil-z-nami-a-dzis-go-_____.html",
- "parent_number": 28,
- "id": 624
- },
- {
- "parent": 708,
- "title": "O tym\u017ce (Wierz\u0119, od pocz\u0105tku \u015bwiata...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1005,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-tymze-wierze-od-poczatku-swiata_____.html",
- "parent_number": 2,
- "id": 657
- },
- {
- "parent": 708,
- "title": "O zazdro\u015bci",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1496,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-zazdrosci_____.html",
- "parent_number": 91,
- "id": 544
- },
- {
- "parent": 708,
- "title": "O \u017cywocie ludzkim (Fraszki to wszytko, cokolwiek my\u015blemy...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 3196,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-zywocie-ludzkim-fraszki-to-wszytko_____.html",
- "parent_number": 92,
- "id": 411
- },
- {
- "parent": 708,
- "title": "O \u017cywocie ludzkim (Wieczna My\u015bli, kt\u00f3ra\u015b jest dalej ni\u017c od wieka...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2829,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-o-zywocie-ludzkim-wieczna-mysli-ktor_____.html",
- "parent_number": 93,
- "id": 552
- },
- {
- "title": "O! Nieszcz\u0119\u015bliwa! O! Uciemi\u0119\u017cona...",
- "html": "/media/lektura/o-nieszczesliwa-o-uciemiezona.html",
- "html_size": 918,
- "id": 1999,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Obrona Sokratesa",
- "html": "/media/lektura/obrona-sokratesa.html",
- "html_size": 85341,
- "id": 2231,
- "tags": [
- 5923,
- 31,
- 5922,
- 177
- ]
- },
- {
- "parent": 1237,
- "title": "Ocean i Tagus rzeka",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1925,
- "html": "/media/lektura/ocean-i-tagus-rzeka_.html",
- "parent_number": 58,
- "id": 1224
- },
- {
- "title": "Oda do m\u0142odo\u015bci",
- "html": "/media/lektura/oda-do-mlodosci_______.html",
- "html_size": 7231,
- "id": 143,
- "tags": [
- 1,
- 23,
- 352,
- 24
- ]
- },
- {
- "title": "Oda do wolno\u015bci",
- "html": "/media/lektura/oda-do-wolnosci.html",
- "html_size": 21725,
- "id": 1960,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Odd\u017awi\u0119ki",
- "html": "/media/lektura/oddzwieki.html",
- "html_size": 1809,
- "id": 2155,
- "tags": [
- 4373,
- 1,
- 24,
- 22
- ]
- },
- {
- "parent": 711,
- "title": "Odpowied\u017a",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 548,
- "html": "/media/lektura/fraszki-ksiegi-wtore-odpowiedz____.html",
- "parent_number": 79,
- "id": 406
- },
- {
- "title": "Odpowied\u017a na \"Psalmy przysz\u0142o\u015bci\"",
- "html": "/media/lektura/odpowiedz-na-psalmy-przyszlosci_______.html",
- "html_size": 13037,
- "id": 202,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Odprawa pos\u0142\u00f3w greckich",
- "html": "/media/lektura/odprawa-poslow-greckich_______.html",
- "html_size": 101508,
- "id": 1620,
- "tags": [
- 152,
- 3,
- 4,
- 175
- ]
- },
- {
- "parent": 708,
- "title": "Ofiara (\u0141uk i sajdak tw\u00f3j, Febe, niech b\u0119dzie, lecz strza\u0142y...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1138,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-ofiara-luk-i-sajdak-twoj-febe-niech-____.html",
- "parent_number": 72,
- "id": 578
- },
- {
- "parent": 711,
- "title": "Ofiara (Pafijej swe zwierciad\u0142o Lais po\u015bwi\u0119ci\u0142a...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1148,
- "html": "/media/lektura/fraszki-ksiegi-wtore-ofiara-pafijej-swe-zwierciadlo-lais-pos____.html",
- "parent_number": 80,
- "id": 518
- },
- {
- "parent": 711,
- "title": "Ofiara (Ten pas Greta, podstarzawszy sobie...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 633,
- "html": "/media/lektura/fraszki-ksiegi-wtore-ofiara-ten-pas-greta-podstarzawszy-sobi____.html",
- "parent_number": 82,
- "id": 546
- },
- {
- "parent": 711,
- "title": "Ofiara (T\u0119 sie\u0107 Miko\u0142aj \u015bwi\u0119tym ofiaruje...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 812,
- "html": "/media/lektura/fraszki-ksiegi-wtore-ofiara-te-siec-mikolaj-swietym-ofiaruje____.html",
- "parent_number": 83,
- "id": 680
- },
- {
- "parent": 1614,
- "title": "Oficer",
- "tags": [
- 31,
- 54,
- 2294,
- 56
- ],
- "html_size": 195413,
- "html": "/media/lektura/gloria-victis-oficer.html",
- "parent_number": 1,
- "id": 1610
- },
- {
- "title": "Ogniem i mieczem",
- "id": 1774,
- "tags": [
- 31,
- 242,
- 56,
- 350
- ]
- },
- {
- "parent": 1774,
- "title": "Ogniem i mieczem, tom drugi",
- "tags": [
- 31,
- 242,
- 56,
- 350
- ],
- "html_size": 1669133,
- "html": "/media/lektura/ogniem-i-mieczem-tom-drugi.html",
- "parent_number": 1,
- "id": 1773
- },
- {
- "parent": 1774,
- "title": "Ogniem i mieczem, tom pierwszy",
- "tags": [
- 31,
- 242,
- 56,
- 350
- ],
- "html_size": 2074388,
- "html": "/media/lektura/ogniem-i-mieczem-tom-pierwszy__.html",
- "parent_number": 0,
- "id": 1772
- },
- {
- "title": "Oj Malu\u015bki, Malu\u015bki...",
- "html": "/media/lektura/oj-maluski-maluski.html",
- "html_size": 9707,
- "id": 2024,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "title": "Ojciec Goriot",
- "html": "/media/lektura/ojciec-goriot__.html",
- "html_size": 764033,
- "id": 835,
- "tags": [
- 1812,
- 31,
- 242,
- 56
- ]
- },
- {
- "parent": 1237,
- "title": "Ojciec \u0142akomy",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 977,
- "html": "/media/lektura/ojciec-lakomy_.html",
- "parent_number": 59,
- "id": 1164
- },
- {
- "parent": 1562,
- "title": "Ojciec zad\u017cumionych",
- "tags": [
- 1,
- 1756,
- 24,
- 189
- ],
- "html_size": 51190,
- "html": "/media/lektura/trzy-poemata-ojciec-zadzumionych.html",
- "parent_number": 0,
- "id": 1559
- },
- {
- "title": "Olbrzymka",
- "html": "/media/lektura/kwiaty-zla-olbrzymka.html",
- "html_size": 2158,
- "id": 1899,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 829,
- "title": "Oleszkiewicz",
- "tags": [
- 31,
- 23,
- 1660,
- 24
- ],
- "html_size": 15096,
- "html": "/media/lektura/dziady-dziadow-czesci-iii-ustep-oleszkiewicz.html",
- "parent_number": 5,
- "id": 822
- },
- {
- "parent": 1614,
- "title": "Oni",
- "tags": [
- 31,
- 54,
- 2294,
- 56
- ],
- "html_size": 152480,
- "html": "/media/lektura/gloria-victis-oni.html",
- "parent_number": 0,
- "id": 1611
- },
- {
- "title": "Opowiadanie",
- "html": "/media/lektura/nuta-czlowiecza-opowiadanie.html",
- "html_size": 4290,
- "id": 1694,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Oracze i Jowisz",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1222,
- "html": "/media/lektura/oracze-i-jowisz_.html",
- "parent_number": 60,
- "id": 1157
- },
- {
- "title": "Order",
- "html": "/media/lektura/order.html",
- "html_size": 9623,
- "id": 863,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "parent": 287,
- "title": "Orze\u0142",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 2876,
- "html": "/media/lektura/z-wichrow-i-hal-z-tatr-orzel__.html",
- "parent_number": 1,
- "id": 1631
- },
- {
- "parent": 1237,
- "title": "Orze\u0142 i jastrz\u0105b",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1592,
- "html": "/media/lektura/orzel-i-jastrzab_.html",
- "parent_number": 61,
- "id": 1120
- },
- {
- "parent": 1237,
- "title": "Orze\u0142 i sowa",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1207,
- "html": "/media/lektura/orzel-i-sowa_.html",
- "parent_number": 62,
- "id": 1162
- },
- {
- "title": "Orze\u0142 i sroka",
- "html": "/media/lektura/orzel-i-sroka.html",
- "html_size": 1126,
- "id": 843,
- "tags": [
- 1888,
- 31,
- 1889,
- 34
- ]
- },
- {
- "parent": 1237,
- "title": "Osie\u0142 i baran",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1195,
- "html": "/media/lektura/osiel-i-baran_.html",
- "parent_number": 63,
- "id": 1201
- },
- {
- "parent": 1237,
- "title": "Osie\u0142 i w\u00f3\u0142",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1547,
- "html": "/media/lektura/osiel-i-wol_.html",
- "parent_number": 64,
- "id": 1123
- },
- {
- "title": "Ostatni despotyzm",
- "html": "/media/lektura/ostatni-despotyzm.html",
- "html_size": 3865,
- "id": 1089,
- "tags": [
- 1,
- 2308,
- 24,
- 121
- ]
- },
- {
- "title": "Ostatnie wspomnienie. Do Laury",
- "html": "/media/lektura/ostatnie-wspomnienie-do-laury.html",
- "html_size": 10746,
- "id": 1961,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 289,
- "title": "Oszcz\u0119dno\u015b\u0107",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 25616,
- "html": "/media/lektura/satyry-czesc-pierwsza-oszczednosc_______.html",
- "parent_number": 5,
- "id": 179
- },
- {
- "title": "Otch\u0142a\u0144",
- "html": "/media/lektura/kwiaty-zla-otchlan.html",
- "html_size": 3126,
- "id": 1900,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Oto B\u00f3g, kt\u00f3ry \u0142ona tajemnic odmyka...",
- "html": "/media/lektura/oto-bog-ktory-lona-tajemnic-odmyka.html",
- "html_size": 9650,
- "id": 1962,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Owieczka i pasterz",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1537,
- "html": "/media/lektura/owieczka-i-pasterz_.html",
- "parent_number": 65,
- "id": 1169
- },
- {
- "parent": 289,
- "title": "Palinodia",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 25239,
- "html": "/media/lektura/satyry-czesc-pierwsza-palinodia_______.html",
- "parent_number": 12,
- "id": 237
- },
- {
- "title": "Pami\u0119ci zniknionego",
- "html": "/media/lektura/ballada-z-tamtej-strony-pamieci-zniknionego.html",
- "html_size": 4501,
- "id": 1661,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Pami\u0119\u0107 --- to cmentarz...",
- "html": "/media/lektura/pamiec-to-cmentarz_1.html",
- "html_size": 6766,
- "id": 2080,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Pan Grubas",
- "html": "/media/lektura/pan-grubas.html",
- "html_size": 5621,
- "id": 2170,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "parent": 1237,
- "title": "Pan i kotka",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1424,
- "html": "/media/lektura/pan-i-kotka_.html",
- "parent_number": 66,
- "id": 1163
- },
- {
- "parent": 1237,
- "title": "Pan i pies",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1202,
- "html": "/media/lektura/pan-i-pies_.html",
- "parent_number": 67,
- "id": 1190
- },
- {
- "parent": 289,
- "title": "Pan niewart s\u0142ugi",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 25533,
- "html": "/media/lektura/satyry-czesc-pierwsza-pan-niewart-slugi_______.html",
- "parent_number": 10,
- "id": 123
- },
- {
- "title": "Pan Tadeusz, czyli ostatni zajazd na Litwie",
- "html": "/media/lektura/pan-tadeusz.html",
- "html_size": 1216606,
- "id": 1936,
- "tags": [
- 31,
- 4982,
- 23,
- 24
- ]
- },
- {
- "title": "Pan Wo\u0142odyjowski",
- "html": "/media/lektura/pan-wolodyjowski.html",
- "html_size": 1941361,
- "id": 1777,
- "tags": [
- 31,
- 242,
- 56,
- 350
- ]
- },
- {
- "parent": 291,
- "title": "Pani Twardowska",
- "tags": [
- 210,
- 1,
- 23,
- 24
- ],
- "html_size": 15990,
- "html": "/media/lektura/ballady-i-romanse-pani-twardowska_______.html",
- "parent_number": 0,
- "id": 1596
- },
- {
- "parent": 1383,
- "title": "Panienki w lesie",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 1604,
- "html": "/media/lektura/but-w-butonierce-panienki-w-lesie.html",
- "parent_number": 6,
- "id": 1370
- },
- {
- "parent": 1614,
- "title": "Panna R\u00f3\u017ca",
- "tags": [
- 31,
- 54,
- 2294,
- 56
- ],
- "html_size": 91403,
- "html": "/media/lektura/gloria-victis-panna-roza.html",
- "parent_number": 7,
- "id": 1612
- },
- {
- "title": "Pannie Jadwidze Tar\u00f3\u0142wnie kwoli",
- "html": "/media/lektura/pannie-jadwidze-tarolwnie-kwoli.html",
- "html_size": 12618,
- "id": 790,
- "tags": [
- 123,
- 1,
- 1565,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Papuga i wiewi\u00f3rka",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3041,
- "html": "/media/lektura/papuga-i-wiewiorka_.html",
- "parent_number": 68,
- "id": 1147
- },
- {
- "title": "Parodia \u017cycia",
- "html": "/media/lektura/parodia-zycia_1.html",
- "html_size": 1775,
- "id": 2081,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Pary\u017c",
- "html": "/media/lektura/paryz.html",
- "html_size": 15120,
- "id": 1963,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Pasterz i morze",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 5490,
- "html": "/media/lektura/pasterz-i-morze-bajki-nowe_.html",
- "parent_number": 43,
- "id": 1308
- },
- {
- "parent": 1333,
- "title": "Pasterz i owce",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2340,
- "html": "/media/lektura/pasterz-i-owce-bajki-nowe_.html",
- "parent_number": 44,
- "id": 1304
- },
- {
- "title": "Pastuszek",
- "html": "/media/lektura/pastuszek.html",
- "html_size": 5150,
- "id": 2171,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "Pastuszka g\u0119si",
- "html": "/media/lektura/pastuszka-gesi.html",
- "html_size": 13064,
- "id": 2172,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "parent": 1237,
- "title": "Paw i orze\u0142",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2320,
- "html": "/media/lektura/paw-i-orzel_.html",
- "parent_number": 69,
- "id": 1229
- },
- {
- "title": "Pejza\u017c wsp\u00f3\u0142czesny",
- "html": "/media/lektura/napoj-cienisty-pejzaz-wspolczesny.html",
- "html_size": 6563,
- "id": 1742,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 709,
- "title": "Pe\u0142na prze zdrowie",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2003,
- "html": "/media/lektura/fraszki-fraszki-dodane-pelna-prze-zdrowie____.html",
- "parent_number": 3,
- "id": 567
- },
- {
- "parent": 1383,
- "title": "Perche?",
- "tags": [
- 338,
- 1606,
- 1,
- 121
- ],
- "html_size": 3878,
- "html": "/media/lektura/but-w-butonierce-perche.html",
- "parent_number": 8,
- "id": 1371
- },
- {
- "parent": 829,
- "title": "Petersburg",
- "tags": [
- 31,
- 23,
- 1660,
- 24
- ],
- "html_size": 24851,
- "html": "/media/lektura/dziady-dziadow-czesci-iii-ustep-petersburg.html",
- "parent_number": 2,
- "id": 823
- },
- {
- "title": "P\u0119kni\u0119ty dzwon",
- "html": "/media/lektura/kwiaty-zla-pekniety-dzwon.html",
- "html_size": 2181,
- "id": 1901,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1798,
- "title": "Pielgrzym",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 3262,
- "html": "/media/lektura/sonety-krymskie-pielgrzym_______.html",
- "parent_number": 14,
- "id": 1793
- },
- {
- "parent": 1237,
- "title": "Pieniacze",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2741,
- "html": "/media/lektura/pieniacze_.html",
- "parent_number": 70,
- "id": 1211
- },
- {
- "title": "Pier\u015bcie\u0144 Wielkiej Damy",
- "html": "/media/lektura/pierscien-wielkiej-damy.html",
- "html_size": 334414,
- "id": 1715,
- "tags": [
- 152,
- 2308,
- 24,
- 175
- ]
- },
- {
- "parent": 2230,
- "title": "Pierwszy raz jam niewolnik...",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2461,
- "html": "/media/lektura/pierwszy-raz-jam-niewolnik.html",
- "parent_number": 20,
- "id": 2209
- },
- {
- "title": "Pies Baskerville'\u00f3w",
- "html": "/media/lektura/pies-baskervilleow_1.html",
- "html_size": 429047,
- "id": 2197,
- "tags": [
- 5650,
- 31,
- 128,
- 242
- ]
- },
- {
- "title": "Pies i wr\u00f3bel",
- "html": "/media/lektura/pies-i-wrobel.html",
- "html_size": 16008,
- "id": 2173,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "Pie\u015bni",
- "id": 1459,
- "tags": [
- 3,
- 1,
- 2,
- 4
- ]
- },
- {
- "title": "Pie\u015b\u0144",
- "html": "/media/lektura/piesn.html",
- "html_size": 5865,
- "id": 791,
- "tags": [
- 123,
- 1564,
- 1,
- 1565
- ]
- },
- {
- "title": "Pie\u015b\u0144",
- "html": "/media/lektura/ballada-z-tamtej-strony-piesn.html",
- "html_size": 4204,
- "id": 1718,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 1402,
- "title": "Pie\u015b\u0144 (Czego chcesz od nas, Panie, za Twe hojne dary?)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 5429,
- "html": "/media/lektura/fragmenta-piesn-czego-chcesz-od-nas-panie.html",
- "parent_number": 0,
- "id": 1403
- },
- {
- "title": "Pie\u015b\u0144 filaret\u00f3w",
- "html": "/media/lektura/piesn-filaretow.html",
- "html_size": 5473,
- "id": 735,
- "tags": [
- 1,
- 23,
- 2,
- 24
- ]
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 I (By\u015b wszystko z\u0142oto posiad\u0142, kt\u00f3re - powiadaj\u0105...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 21904,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-i_.html",
- "parent_number": 0,
- "id": 1407
- },
- {
- "title": "Pie\u015b\u0144 I (Na psalm Dawid\u00f3w XIX)",
- "html": "/media/lektura/piesn-i-na-psalm-dawidow-xix.html",
- "html_size": 9941,
- "id": 792,
- "tags": [
- 123,
- 1,
- 1583,
- 1565
- ]
- },
- {
- "title": "Pie\u015b\u0144 I (O bo\u017cej opatrzno\u015bci na \u015bwiecie)",
- "html": "/media/lektura/piesn-i-o-bozej-opatrznosci-na-swiecie.html",
- "html_size": 3975,
- "id": 793,
- "tags": [
- 123,
- 1,
- 2,
- 1565
- ]
- },
- {
- "title": "Pie\u015b\u0144 I (O Fridruszu)",
- "html": "/media/lektura/piesn-i-o-fridruszu.html",
- "html_size": 6398,
- "id": 794,
- "tags": [
- 123,
- 1,
- 2,
- 1565
- ]
- },
- {
- "parent": 1402,
- "title": "Pie\u015b\u0144 I (Pewienem tego, a nic sie nie myl\u0119...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 7363,
- "html": "/media/lektura/fragmenta-piesn-i-pewienem-tego-a-nic-sie-nie-myle.html",
- "parent_number": 1,
- "id": 1391
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 I (Przeciwne chmury s\u0142o\u0144ce nam zakry\u0142y...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 13575,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-i_.html",
- "parent_number": 0,
- "id": 1432
- },
- {
- "title": "Pie\u015b\u0144 II (Na psalm Dawid\u00f3w LII)",
- "html": "/media/lektura/piesn-ii-na-psalm-dawidow-lii.html",
- "html_size": 5113,
- "id": 795,
- "tags": [
- 123,
- 1,
- 1583,
- 1565
- ]
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 II (Nie dbam, aby zimne ska\u0142y...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 9741,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-ii.html",
- "parent_number": 1,
- "id": 1431
- },
- {
- "parent": 1402,
- "title": "Pie\u015b\u0144 II (Nie ma \u015bwiat nic trwa\u0142ego, a to barzo k rzeczy...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 4427,
- "html": "/media/lektura/fragmenta-piesn-ii-nie-ma-swiat-nic-trwalego-a-to-barzo-k-rzeczy.html",
- "parent_number": 2,
- "id": 1392
- },
- {
- "title": "Pie\u015b\u0144 II (O rz\u0105dzie bo\u017cym na \u015bwiecie)",
- "html": "/media/lektura/piesn-ii-o-rzadzie-bozym-na-swiecie.html",
- "html_size": 4283,
- "id": 796,
- "tags": [
- 123,
- 1,
- 2,
- 1565
- ]
- },
- {
- "title": "Pie\u015b\u0144 II (O Strusie)",
- "html": "/media/lektura/piesn-ii-o-strusie.html",
- "html_size": 6199,
- "id": 797,
- "tags": [
- 123,
- 1,
- 2,
- 1565
- ]
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 II (Serce ro\u015bcie patrz\u0105c na te czasy!)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 7111,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-ii.html",
- "parent_number": 1,
- "id": 1406
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 III (Dzbanie m\u00f3j pisany...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 5341,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-iii.html",
- "parent_number": 2,
- "id": 1405
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 III (Nie wierz Fortunie, co siedzisz wysoko...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 7025,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-iii.html",
- "parent_number": 2,
- "id": 1430
- },
- {
- "title": "Pie\u015b\u0144 III (O wielmo\u017cno\u015bci bo\u017cej)",
- "html": "/media/lektura/piesn-iii-o-wielmoznosci-bozej.html",
- "html_size": 3711,
- "id": 798,
- "tags": [
- 123,
- 1,
- 2,
- 1565
- ]
- },
- {
- "parent": 1402,
- "title": "Pie\u015b\u0144 III (Oko \u015bmiertelne Boga nie widzia\u0142o...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 9466,
- "html": "/media/lektura/fragmenta-piesn-iii-oko-smiertelne-boga-nie-widzialo.html",
- "parent_number": 3,
- "id": 1393
- },
- {
- "title": "Pie\u015b\u0144 III (Psalmu LVI Paraphrasis)",
- "html": "/media/lektura/piesn-iii-psalmu-lvi-paraphrasis.html",
- "html_size": 6996,
- "id": 799,
- "tags": [
- 123,
- 1,
- 1583,
- 1565
- ]
- },
- {
- "title": "Pie\u015b\u0144 III (Stefanowi Batoremu, kr\u00f3lowi polskiemu)",
- "html": "/media/lektura/piesn-iii-stefanowi-batoremu-krolowi-polskiemu.html",
- "html_size": 6273,
- "id": 800,
- "tags": [
- 123,
- 1,
- 2,
- 1565
- ]
- },
- {
- "parent": 1402,
- "title": "Pie\u015b\u0144 IV (Kiedy by kogo B\u00f3g by\u0142 swymi s\u0142owy...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 5065,
- "html": "/media/lektura/fragmenta-piesn-iv-kiedy-by-kogo-bog-byl-swymi-slowy.html",
- "parent_number": 4,
- "id": 1394
- },
- {
- "title": "Pie\u015b\u0144 IV (O cnocie szlacheckiej)",
- "html": "/media/lektura/piesn-iv-o-cnocie-szlacheckiej.html",
- "html_size": 4443,
- "id": 801,
- "tags": [
- 123,
- 1,
- 2,
- 1565
- ]
- },
- {
- "title": "Pie\u015b\u0144 IV (Psalmu CXXVI paraphrasis)",
- "html": "/media/lektura/piesn-iv-psalmu-cxxvi-paraphrasis.html",
- "html_size": 4037,
- "id": 802,
- "tags": [
- 123,
- 1,
- 1583,
- 1565
- ]
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 IV (W twardej kamiennej wie\u017cy i za troistemi...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 13408,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-iv.html",
- "parent_number": 3,
- "id": 1433
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 IV (Z\u0142ota to strza\u0142a i krom wszego jadu by\u0142a...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 4571,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-iv.html",
- "parent_number": 3,
- "id": 1408
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 IX (Chcemy sobie by\u0107 radzi?)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 10179,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-ix.html",
- "parent_number": 8,
- "id": 1409
- },
- {
- "title": "Pie\u015b\u0144 IX (I\u017c pr\u00f3\u017cne cz\u0142owiecze staranie bez Bo\u017cej pomocy)",
- "html": "/media/lektura/piesn-ix-iz-prozne-czlowiecze-staranie-bez-bozej-pomocy.html",
- "html_size": 3363,
- "id": 806,
- "tags": [
- 123,
- 1,
- 2,
- 1565
- ]
- },
- {
- "parent": 1402,
- "title": "Pie\u015b\u0144 IX (Kto mi wiary da\u0107 nie chce, daj j\u0105 oku swemu...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 4974,
- "html": "/media/lektura/fragmenta-piesn-ix-kto-mi-wiary-dac-nie-chce-daj-ja-oku-swemu.html",
- "parent_number": 9,
- "id": 1399
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 IX (Nie porzucaj nadzieje...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 5397,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-ix.html",
- "parent_number": 8,
- "id": 1434
- },
- {
- "title": "Pie\u015b\u0144 jesienna",
- "html": "/media/lektura/kwiaty-zla-piesn-jesienna.html",
- "html_size": 6044,
- "id": 1903,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Pie\u015b\u0144 Legion\u00f3w Polskich we W\u0142oszech",
- "html": "/media/lektura/piesn-legionow-polskich-we-wloszech.html",
- "html_size": 18279,
- "id": 2125,
- "tags": [
- 1,
- 34,
- 2,
- 5312
- ]
- },
- {
- "title": "Pie\u015b\u0144 o Ja\u015bku zb\u00f3jniku",
- "html": "/media/lektura/piesn-o-jasku-zbojniku_1.html",
- "html_size": 25204,
- "id": 2082,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Pie\u015b\u0144 o Narodzeniu Pa\u0144skim (B\u00f3g si\u0119 rodzi...)",
- "html": "/media/lektura/piesn-o-narodzeniu-panskim-bog-sie-rodzi.html",
- "html_size": 7547,
- "id": 2021,
- "tags": [
- 1889,
- 1,
- 34,
- 2
- ]
- },
- {
- "title": "Pie\u015b\u0144 od ziemi naszej",
- "html": "/media/lektura/piesn-od-ziemi-naszej_.html",
- "html_size": 14271,
- "id": 1090,
- "tags": [
- 1,
- 2308,
- 24,
- 121
- ]
- },
- {
- "title": "Pie\u015b\u0144 przyjacielska",
- "html": "/media/lektura/piesn-przyjacielska.html",
- "html_size": 2534,
- "id": 844,
- "tags": [
- 1889,
- 1,
- 34,
- 2
- ]
- },
- {
- "title": "Pie\u015b\u0144 \u015bwi\u0119toja\u0144ska o Sob\u00f3tce",
- "html": "/media/lektura/piesn-swietojanska-o-sobotce_______.html",
- "html_size": 83399,
- "id": 1404,
- "tags": [
- 3,
- 1,
- 2,
- 4
- ]
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 V (Kto ma swego chleba...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 7873,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-v.html",
- "parent_number": 4,
- "id": 1413
- },
- {
- "title": "Pie\u015b\u0144 V (Na kszta\u0142t psalmu LXX)",
- "html": "/media/lektura/piesn-v-na-ksztalt-psalmu-lxx.html",
- "html_size": 4082,
- "id": 803,
- "tags": [
- 123,
- 1,
- 1583,
- 1565
- ]
- },
- {
- "parent": 1402,
- "title": "Pie\u015b\u0144 V (Panie, jako barzo b\u0142\u0105dz\u0105...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 7645,
- "html": "/media/lektura/fragmenta-piesn-v-panie-jako-barzo-bladza.html",
- "parent_number": 5,
- "id": 1395
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 V (Wieczna sromota i nienagrodzona...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 14069,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-v.html",
- "parent_number": 4,
- "id": 1438
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 VI (Acz mi\u0119 twa droga, mi\u0142a, barzo boli...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 11902,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-vi.html",
- "parent_number": 5,
- "id": 1412
- },
- {
- "parent": 1402,
- "title": "Pie\u015b\u0144 VI (Co by ty, urodziwa Hanno, na to da\u0142a...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 25020,
- "html": "/media/lektura/fragmenta-piesn-vi-co-by-ty-urodziwa-hanno-na-to-dala.html",
- "parent_number": 6,
- "id": 1396
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 VI (Kr\u00f3lewno lutnie z\u0142otej i rym\u00f3w pociesznych...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 7781,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-vi.html",
- "parent_number": 5,
- "id": 1437
- },
- {
- "title": "Pie\u015b\u0144 VI (Na kszta\u0142t psalmu CXX)",
- "html": "/media/lektura/piesn-vi-na-ksztalt-psalmu-cxx.html",
- "html_size": 3464,
- "id": 804,
- "tags": [
- 123,
- 1,
- 1583,
- 1565
- ]
- },
- {
- "parent": 1402,
- "title": "Pie\u015b\u0144 VII (Bodaj ci z\u0142e dni!)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 5814,
- "html": "/media/lektura/fragmenta-piesn-vii-bodaj-ci-zle-dni.html",
- "parent_number": 7,
- "id": 1397
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 VII (S\u0142o\u0144ce pali, a ziemia idzie w popi\u00f3\u0142 prawie...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 4684,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-vii.html",
- "parent_number": 6,
- "id": 1436
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 VII (Trudna rada w tej mierze, przyjdzie sie rozjecha\u0107...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 5724,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-vii.html",
- "parent_number": 6,
- "id": 1411
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 VIII (Gdzie\u015bkolwiek jest, Bo\u017ce\u0107 po\u015bli dobr\u0105 godzin\u0119...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 5042,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-viii.html",
- "parent_number": 7,
- "id": 1410
- },
- {
- "title": "Pie\u015b\u0144 VIII (I\u017c rozum cz\u0142owiekowi potrzebniejszy, ni\u017c skarby)",
- "html": "/media/lektura/piesn-viii-iz-rozum-czlowiekowi-potrzebniejszy-niz-skarby.html",
- "html_size": 3845,
- "id": 805,
- "tags": [
- 123,
- 1,
- 2,
- 1565
- ]
- },
- {
- "parent": 1402,
- "title": "Pie\u015b\u0144 VIII (Kiedy sie rane zapalaj\u0105 zorza...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 9653,
- "html": "/media/lektura/fragmenta-piesn-viii-kiedy-sie-rane-zapalaja-zorza.html",
- "parent_number": 8,
- "id": 1398
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 VIII (Nie frasuj sobie, Miko\u0142aju, g\u0142owy...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 7316,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-viii.html",
- "parent_number": 7,
- "id": 1435
- },
- {
- "parent": 1402,
- "title": "Pie\u015b\u0144 X (Juno, porzu\u0107 sw\u00f3j gniew d\u0142ugi...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 4028,
- "html": "/media/lektura/fragmenta-piesn-x-juno-porzuc-swoj-gniew-dlugi.html",
- "parent_number": 10,
- "id": 1400
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 X (Kto mi da\u0142 skrzyd\u0142a, kto mi\u0119 odzia\u0142 pi\u00f3ry...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 14305,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-x.html",
- "parent_number": 9,
- "id": 1419
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 X (Mo\u017ce kto r\u0119k\u0105 s\u0142awy dosta\u0107 w boju...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 4925,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-x.html",
- "parent_number": 9,
- "id": 1444
- },
- {
- "parent": 1402,
- "title": "Pie\u015b\u0144 XI (Pr\u00f3zna twa ch\u0142uba, nie kochaj sie w sobie...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 6078,
- "html": "/media/lektura/fragmenta-piesn-xi-prozna-twa-chluba-nie-kochaj-sie-w-sobie.html",
- "parent_number": 11,
- "id": 1401
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 XI (Stateczny umys\u0142 pami\u0119taj zachowa\u0107...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 6586,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xi.html",
- "parent_number": 10,
- "id": 1441
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 XI (Stronisz przede mn\u0105, Neto nie tykana...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 4314,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xi.html",
- "parent_number": 10,
- "id": 1416
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 XII (Musz\u0119 wyzna\u0107, bo sie ju\u017c nie masz na co chowa\u0107...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 5387,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xii.html",
- "parent_number": 11,
- "id": 1415
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 XII (Nie masz, i po drugi raz nie masz w\u0105tpliwo\u015bci...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 6262,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xii.html",
- "parent_number": 11,
- "id": 1440
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 XIII (O pi\u0119kna nocy nad zwyczaj tych czas\u00f3w...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 6528,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xiii.html",
- "parent_number": 12,
- "id": 1414
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 XIII (Panu dzi\u0119ki oddawajmy...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 13302,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xiii.html",
- "parent_number": 12,
- "id": 1439
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 XIV (Patrzaj, jako \u015bnieg po g\u00f3rach sie bieli...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 5206,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xiv.html",
- "parent_number": 13,
- "id": 1417
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 XIV (Wy, kt\u00f3rzy Pospolit\u0105 Rzecz\u0105 w\u0142adacie...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 4883,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xiv_.html",
- "parent_number": 13,
- "id": 1442
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 XIX (Jest kto, co by wzgardziwszy te doczesne rzeczy...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 7596,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xix.html",
- "parent_number": 18,
- "id": 1443
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 XIX (\u017bal mi ci\u0119, niebogo...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 9062,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xix.html",
- "parent_number": 18,
- "id": 1418
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 XV (Nie za staraniem ani prze m\u0105 spraw\u0119...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 6299,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xv.html",
- "parent_number": 14,
- "id": 1423
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 XV (Nie zaw\u017cdy Apollo strzela)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 6249,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xv_.html",
- "parent_number": 14,
- "id": 1448
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 XVI (Kr\u00f3lom moc na poddane i zwierzchno\u015b\u0107 dana...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 8007,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xvi.html",
- "parent_number": 15,
- "id": 1422
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 XVI (Nic po tych zbytnich potrawach, nic po tym...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 5296,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xvi.html",
- "parent_number": 15,
- "id": 1447
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 XVII (Niegodzien tego ten \u015bwiat zawik\u0142any...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 5460,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xvii.html",
- "parent_number": 16,
- "id": 1446
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 XVII (S\u0142o\u0144ce ju\u017c pad\u0142o, ciemna noc nadchodzi...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 12250,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xvii.html",
- "parent_number": 16,
- "id": 1421
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 XVIII (Czo\u0142em za cze\u015b\u0107, \u0142askawy m\u00f3j panie s\u0105siedzie...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 16330,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xviii_.html",
- "parent_number": 17,
- "id": 1420
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 XVIII (Ucieszna lutni, w kt\u00f3rej s\u0142odkie strony)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 14343,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xviii_.html",
- "parent_number": 17,
- "id": 1445
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 XX (Jak\u0105, rozumiesz, zazdro\u015b\u0107 zjedna\u0142e\u015b sobie...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 10331,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xx.html",
- "parent_number": 19,
- "id": 1453
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 XX (Mi\u0142o szale\u0107, kiedy czas po temu...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 6915,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xx.html",
- "parent_number": 19,
- "id": 1428
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 XXI (Srogie \u0142a\u0144cuchy na swym sercu czuj\u0119...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 3801,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xxi.html",
- "parent_number": 20,
- "id": 1451
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 XXI (Ty spisz, a ja sam na dworze...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 10676,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xxi.html",
- "parent_number": 20,
- "id": 1426
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 XXII (Prosz\u0119, jesli sie z tob\u0105 co \u015bpiewa\u0142o...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 5312,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xxii.html",
- "parent_number": 21,
- "id": 1450
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 XXII (Rozumie m\u00f3j, pr\u00f3zno sie masz frasowa\u0107...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 4139,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xxii.html",
- "parent_number": 21,
- "id": 1425
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 XXIII (Nie zaw\u017cdy, pi\u0119kna Zofija...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 2418,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xxiii.html",
- "parent_number": 22,
- "id": 1449
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 XXIII (Nie\u017ale czasem zamilcze\u0107, co cz\u0142owieka boli...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 4909,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xxiii.html",
- "parent_number": 22,
- "id": 1424
- },
- {
- "parent": 1458,
- "title": "Pie\u015b\u0144 XXIV (Niezwyk\u0142ym i nie leda pi\u00f3rem opatrzony...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 7166,
- "html": "/media/lektura/piesni-ksiegi-wtore-piesn-xxiv.html",
- "parent_number": 23,
- "id": 1452
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 XXIV (Zegar, s\u0142ysz\u0119, wybija...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 6655,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xxiv_.html",
- "parent_number": 23,
- "id": 1427
- },
- {
- "parent": 1455,
- "title": "Pie\u015b\u0144 XXV (U\u017ca\u0142uj sie, kto dobry, a pot\u0142ucz zawiasy...)",
- "tags": [
- 3,
- 1,
- 2,
- 4
- ],
- "html_size": 15408,
- "html": "/media/lektura/piesni-ksiegi-pierwsze-piesn-xxv.html",
- "parent_number": 24,
- "id": 1429
- },
- {
- "title": "Pi\u0119kna nasza Polska ca\u0142a...",
- "html": "/media/lektura/piekna-nasza-polska-cala.html",
- "html_size": 4235,
- "id": 2114,
- "tags": [
- 1,
- 2,
- 5290,
- 24
- ]
- },
- {
- "title": "Pi\u0119kno",
- "html": "/media/lektura/kwiaty-zla-piekno.html",
- "html_size": 2269,
- "id": 1902,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Pijak",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 851,
- "html": "/media/lektura/pijak_.html",
- "parent_number": 71,
- "id": 1167
- },
- {
- "parent": 289,
- "title": "Pija\u0144stwo",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 17433,
- "html": "/media/lektura/satyry-czesc-pierwsza-pijanstwo_______.html",
- "parent_number": 6,
- "id": 46
- },
- {
- "title": "Pi\u0142sudski",
- "html": "/media/lektura/dzien-jak-co-dzien-pilsudski.html",
- "html_size": 6344,
- "id": 1540,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Piosenka czeski domek",
- "html": "/media/lektura/nuta-czlowiecza-piosenka-czeski-domek.html",
- "html_size": 2519,
- "id": 1695,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Platon",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2910,
- "html": "/media/lektura/platon-bajki-nowe_.html",
- "parent_number": 45,
- "id": 1316
- },
- {
- "title": "Po ciemku",
- "html": "/media/lektura/po-ciemku_.html",
- "html_size": 14905,
- "id": 864,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "parent": 1237,
- "title": "Po pniu i po bocianie...",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1428,
- "html": "/media/lektura/po-pniu-i-po-bocianie_.html",
- "parent_number": 72,
- "id": 1173
- },
- {
- "parent": 1333,
- "title": "Pochodnia i \u015bwieca",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1271,
- "html": "/media/lektura/pochodnia-i-swieca-bajki-nowe_.html",
- "parent_number": 46,
- "id": 1246
- },
- {
- "parent": 294,
- "title": "Pochwa\u0142a g\u0142upstwa",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 20704,
- "html": "/media/lektura/satyry-czesc-druga-pochwala-glupstwa_______.html",
- "parent_number": 2,
- "id": 243
- },
- {
- "parent": 294,
- "title": "Pochwa\u0142a wieku",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 26575,
- "html": "/media/lektura/satyry-czesc-druga-pochwala-wieku_______.html",
- "parent_number": 1,
- "id": 273
- },
- {
- "parent": 294,
- "title": "Pochwa\u0142y milczenia",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 34262,
- "html": "/media/lektura/satyry-czesc-druga-pochwaly-milczenia_______.html",
- "parent_number": 0,
- "id": 269
- },
- {
- "title": "Pod dworcem g\u0142\u00f3wnym w Warszawie",
- "html": "/media/lektura/nuta-czlowiecza-pod-dworcem-glownym-w-warszawie.html",
- "html_size": 3967,
- "id": 1696,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Pod popio\u0142em",
- "html": "/media/lektura/ballada-z-tamtej-strony-pod-popiolem.html",
- "html_size": 3097,
- "id": 1675,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Pod star\u0105 wierzb\u0105",
- "html": "/media/lektura/pod-stara-wierzba.html",
- "html_size": 39602,
- "id": 1058,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Pod wra\u017ceniem",
- "html": "/media/lektura/pod-wrazeniem_1.html",
- "html_size": 2139,
- "id": 2083,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Podczas burzy",
- "html": "/media/lektura/podczas-burzy_1.html",
- "html_size": 2370,
- "id": 2084,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 294,
- "title": "Podr\u00f3\u017c",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 17239,
- "html": "/media/lektura/satyry-czesc-druga-podroz_______.html",
- "parent_number": 8,
- "id": 203
- },
- {
- "title": "Podr\u00f3\u017c",
- "html": "/media/lektura/kwiaty-zla-podroz.html",
- "html_size": 21365,
- "id": 1904,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1383,
- "title": "Podr\u00f3\u017cniczki",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 3089,
- "html": "/media/lektura/but-w-butonierce-podrozniczki.html",
- "parent_number": 21,
- "id": 1372
- },
- {
- "parent": 1237,
- "title": "Podr\u00f3\u017cny",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1576,
- "html": "/media/lektura/podrozny_.html",
- "parent_number": 73,
- "id": 1118
- },
- {
- "parent": 1333,
- "title": "Podr\u00f3\u017cny",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1713,
- "html": "/media/lektura/podrozny-bajki-nowe_.html",
- "parent_number": 47,
- "id": 1320
- },
- {
- "parent": 1237,
- "title": "Podr\u00f3\u017cny i kaleka",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1077,
- "html": "/media/lektura/podrozny-i-kaleka_.html",
- "parent_number": 74,
- "id": 1139
- },
- {
- "title": "Podrzutek",
- "html": "/media/lektura/podrzutek.html",
- "html_size": 13213,
- "id": 865,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "Poeta",
- "html": "/media/lektura/poeta________.html",
- "html_size": 5466,
- "id": 1386,
- "tags": [
- 337,
- 1,
- 3035,
- 336
- ]
- },
- {
- "title": "Poeta i natchnienie",
- "html": "/media/lektura/poeta-i-natchnienie.html",
- "html_size": 72030,
- "id": 1554,
- "tags": [
- 1,
- 1756,
- 24,
- 189
- ]
- },
- {
- "title": "Pogrzeb kapitana Meyznera",
- "html": "/media/lektura/pogrzeb-kapitana-meyznera.html",
- "html_size": 8001,
- "id": 1964,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Polacy",
- "html": "/media/lektura/nuta-czlowiecza-polacy.html",
- "html_size": 6038,
- "id": 1697,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 1875,
- "title": "Pola\u0142y si\u0119 \u0142zy...",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 1015,
- "html": "/media/lektura/polaly-sie-lzy.html",
- "parent_number": 5,
- "id": 1867
- },
- {
- "title": "Polny kwiatek",
- "html": "/media/lektura/polny-kwiatek.html",
- "html_size": 12944,
- "id": 1059,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "parent": 1846,
- "title": "Polska mowa",
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ],
- "html_size": 5029,
- "html": "/media/lektura/katechizm-polskiego-dziecka-polska-mowa_.html",
- "parent_number": 6,
- "id": 1843
- },
- {
- "parent": 829,
- "title": "Pomnik Piotra Wielkiego",
- "tags": [
- 31,
- 23,
- 1660,
- 24
- ],
- "html_size": 9587,
- "html": "/media/lektura/dziady-dziadow-czesci-iii-ustep-pomnik-piotra-wielkiego.html",
- "parent_number": 3,
- "id": 824
- },
- {
- "title": "Pontorson",
- "html": "/media/lektura/ballada-z-tamtej-strony-pontorson_.html",
- "html_size": 3294,
- "id": 1632,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Portret owalny",
- "html": "/media/lektura/portret-owalny.html",
- "html_size": 13431,
- "id": 1770,
- "tags": [
- 31,
- 1517,
- 4365,
- 24
- ]
- },
- {
- "title": "Po\u015bmiertne \u017cale",
- "html": "/media/lektura/kwiaty-zla-posmiertne-zale.html",
- "html_size": 2465,
- "id": 1905,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 2230,
- "title": "Pot\u0119pi nas \u015bwi\u0119toszek...",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2743,
- "html": "/media/lektura/potepi-nas-swietoszek.html",
- "parent_number": 21,
- "id": 2208
- },
- {
- "parent": 1237,
- "title": "Potok i rzeka",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1425,
- "html": "/media/lektura/potok-i-rzeka_.html",
- "parent_number": 75,
- "id": 1165
- },
- {
- "parent": 1237,
- "title": "Potok i rzeka II",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1178,
- "html": "/media/lektura/potok-i-rzeka-ii_.html",
- "parent_number": 76,
- "id": 1180
- },
- {
- "title": "Potop",
- "id": 1925,
- "tags": [
- 31,
- 242,
- 56,
- 350
- ]
- },
- {
- "parent": 1925,
- "title": "Potop, tom drugi",
- "tags": [
- 31,
- 242,
- 56,
- 350
- ],
- "html_size": 2093081,
- "html": "/media/lektura/potop-tom-drugi_1.html",
- "parent_number": 1,
- "id": 1923
- },
- {
- "parent": 1925,
- "title": "Potop, tom pierwszy",
- "tags": [
- 31,
- 242,
- 56,
- 350
- ],
- "html_size": 1643792,
- "html": "/media/lektura/potop-tom-pierwszy.html",
- "parent_number": 0,
- "id": 1776
- },
- {
- "parent": 1925,
- "title": "Potop, tom trzeci",
- "tags": [
- 31,
- 242,
- 56,
- 350
- ],
- "html_size": 1486603,
- "html": "/media/lektura/potop-tom-trzeci.html",
- "parent_number": 2,
- "id": 1924
- },
- {
- "title": "Potwarz",
- "html": "/media/lektura/potwarz.html",
- "html_size": 11516,
- "id": 866,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "Powracaj\u0105ca fala",
- "html": "/media/lektura/powracajaca-fala_.html",
- "html_size": 255452,
- "id": 1095,
- "tags": [
- 31,
- 1517,
- 56,
- 1462
- ]
- },
- {
- "title": "Powr\u00f3t pos\u0142a",
- "html": "/media/lektura/powrot-posla.html",
- "html_size": 249165,
- "id": 1937,
- "tags": [
- 152,
- 153,
- 4997,
- 34
- ]
- },
- {
- "parent": 291,
- "title": "Powr\u00f3t taty",
- "tags": [
- 210,
- 1,
- 23,
- 24
- ],
- "html_size": 9802,
- "html": "/media/lektura/ballady-i-romanse-powrot-taty_______.html",
- "parent_number": 0,
- "id": 1597
- },
- {
- "title": "Powr\u00f3t z Warszawy na wie\u015b",
- "html": "/media/lektura/powrot-z-warszawy-na-wies_.html",
- "html_size": 12104,
- "id": 851,
- "tags": [
- 1889,
- 1,
- 34,
- 2
- ]
- },
- {
- "parent": 2230,
- "title": "Po\u017cegnanie (Do D. D.)",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 3606,
- "html": "/media/lektura/pozegnanie-do-d-d.html",
- "parent_number": 22,
- "id": 2207
- },
- {
- "title": "Po\u017cegnanie z Lindor\u0105 w g\u00f3rach",
- "html": "/media/lektura/pozegnanie-z-lindora-w-gorach_.html",
- "html_size": 4481,
- "id": 846,
- "tags": [
- 1889,
- 1,
- 34
- ]
- },
- {
- "title": "P\u00f3jd\u017amy wszyscy do stajenki...",
- "html": "/media/lektura/pojdzmy-wszyscy-do-stajenki_1.html",
- "html_size": 6815,
- "id": 2037,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "title": "P\u00f3\u0142noc ju\u017c by\u0142a...",
- "html": "/media/lektura/polnoc-juz-byla.html",
- "html_size": 12635,
- "id": 2026,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "title": "Praca",
- "html": "/media/lektura/praca.html",
- "html_size": 10710,
- "id": 1929,
- "tags": [
- 1,
- 2308,
- 24,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Prawda, satyryk i panegirysta",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2176,
- "html": "/media/lektura/prawda-satyryk-i-panegirysta_.html",
- "parent_number": 77,
- "id": 1153
- },
- {
- "title": "Prawdziwy opis wypadku z p. Waldemarem",
- "html": "/media/lektura/prawdziwy-opis-wypadku-z-p-waldemarem.html",
- "html_size": 35619,
- "id": 1735,
- "tags": [
- 31,
- 1517,
- 4365,
- 24
- ]
- },
- {
- "title": "Preludium",
- "html": "/media/lektura/ballada-z-tamtej-strony-preludium.html",
- "html_size": 3143,
- "id": 1663,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Prometeusz",
- "html": "/media/lektura/prometeusz_1.html",
- "html_size": 6465,
- "id": 2085,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Proroctwo",
- "html": "/media/lektura/proroctwo.html",
- "html_size": 3601,
- "id": 1965,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Prowadzi\u0142 mnie na bardzo ciemne w\u0119\u017cowisko...",
- "html": "/media/lektura/prowadzil-mnie-na-bardzo-ciemne-wezowisko.html",
- "html_size": 1710,
- "id": 1966,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Prowincja noc",
- "html": "/media/lektura/dzien-jak-co-dzien-prowincja-noc.html",
- "html_size": 5371,
- "id": 1541,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 1383,
- "title": "Prozowierszem",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 3839,
- "html": "/media/lektura/but-w-butonierce-prozowierszem.html",
- "parent_number": 16,
- "id": 1373
- },
- {
- "title": "Pr\u00f3\u017cno w swej duszy...",
- "html": "/media/lektura/prozno-w-swej-duszy_1.html",
- "html_size": 2881,
- "id": 2086,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Przebudzenie Jehowy",
- "html": "/media/lektura/przebudzenie-jehowy_1.html",
- "html_size": 4574,
- "id": 2087,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Przeczucia",
- "html": "/media/lektura/ballada-z-tamtej-strony-przeczucia.html",
- "html_size": 3842,
- "id": 1664,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 829,
- "title": "Przedmie\u015bcia stolicy",
- "tags": [
- 31,
- 23,
- 1660,
- 24
- ],
- "html_size": 8556,
- "html": "/media/lektura/dziady-dziadow-czesci-iii-ustep-przedmiescia-stolicy.html",
- "parent_number": 1,
- "id": 825
- },
- {
- "title": "Przed\u015bwit",
- "html": "/media/lektura/nuta-czlowiecza-przedswit.html",
- "html_size": 3700,
- "id": 1698,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Przedwio\u015bnie",
- "html": "/media/lektura/przedwiosnie________.html",
- "html_size": 1003960,
- "id": 1714,
- "tags": [
- 338,
- 31,
- 242,
- 293
- ]
- },
- {
- "parent": 829,
- "title": "Przegl\u0105d wojska",
- "tags": [
- 31,
- 23,
- 1660,
- 24
- ],
- "html_size": 49916,
- "html": "/media/lektura/dziady-dziadow-czesci-iii-ustep-przeglad-wojska.html",
- "parent_number": 4,
- "id": 826
- },
- {
- "parent": 1383,
- "title": "Przejechali",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 1720,
- "html": "/media/lektura/but-w-butonierce-przejechali.html",
- "parent_number": 13,
- "id": 1374
- },
- {
- "title": "Przekl\u0119stwo. Do***",
- "html": "/media/lektura/przeklestwo-do.html",
- "html_size": 3432,
- "id": 2000,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Przesoli\u0142",
- "html": "/media/lektura/przesolil.html",
- "html_size": 12664,
- "id": 867,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "parent": 289,
- "title": "Przestroga m\u0142odemu",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 31190,
- "html": "/media/lektura/satyry-czesc-pierwsza-przestroga-mlodemu_______.html",
- "parent_number": 7,
- "id": 193
- },
- {
- "title": "Przesz\u0142o\u015b\u0107",
- "html": "/media/lektura/przeszlosc.html",
- "html_size": 1709,
- "id": 1092,
- "tags": [
- 1,
- 2308,
- 24,
- 121
- ]
- },
- {
- "title": "Przez kresy",
- "html": "/media/lektura/ballada-z-tamtej-strony-przez-kresy.html",
- "html_size": 2508,
- "id": 1665,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Przybie\u017celi do Betlejem...",
- "html": "/media/lektura/przybiezeli-do-betleem.html",
- "html_size": 3675,
- "id": 2027,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "title": "Przygody Tomka Sawyera",
- "html": "/media/lektura/przygody-tomka-sawyera.html",
- "html_size": 640283,
- "id": 2191,
- "tags": [
- 31,
- 242,
- 24,
- 5550
- ]
- },
- {
- "parent": 1237,
- "title": "Przyjaciel",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2313,
- "html": "/media/lektura/przyjaciel_.html",
- "parent_number": 78,
- "id": 1117
- },
- {
- "parent": 1333,
- "title": "Przyjaciele",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 5295,
- "html": "/media/lektura/przyjaciele-bajki-nowe_.html",
- "parent_number": 48,
- "id": 1283
- },
- {
- "parent": 709,
- "title": "Przym\u00f3wka ch\u0142opska",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2023,
- "html": "/media/lektura/fraszki-fraszki-dodane-przymowka-chlopska____.html",
- "parent_number": 4,
- "id": 572
- },
- {
- "title": "Przypomnienie dawnej mi\u0142o\u015bci",
- "html": "/media/lektura/przypomnienie-dawnej-milosci_.html",
- "html_size": 2689,
- "id": 847,
- "tags": [
- 1889,
- 1,
- 34
- ]
- },
- {
- "parent": 1237,
- "title": "Pszczo\u0142a i szersze\u0144",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1123,
- "html": "/media/lektura/pszczola-i-szrszen.html",
- "parent_number": 79,
- "id": 1340
- },
- {
- "title": "Pszczo\u0142a w bursztynie",
- "html": "/media/lektura/pszczola-w-bursztynie_______.html",
- "html_size": 1914,
- "id": 83,
- "tags": [
- 123,
- 234,
- 1,
- 122
- ]
- },
- {
- "parent": 1333,
- "title": "Pszczo\u0142y",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 4885,
- "html": "/media/lektura/pszczoly-bajki-nowe_.html",
- "parent_number": 50,
- "id": 1307
- },
- {
- "parent": 1237,
- "title": "Pszczo\u0142y i mr\u00f3wki",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3269,
- "html": "/media/lektura/pszczoly-i-mrowki_.html",
- "parent_number": 80,
- "id": 1128
- },
- {
- "parent": 1333,
- "title": "Pszcz\u00f3\u0142ka",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3335,
- "html": "/media/lektura/pszczolka-bajki-nowe_.html",
- "parent_number": 49,
- "id": 1322
- },
- {
- "parent": 1237,
- "title": "Ptaki i osie\u0142",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1266,
- "html": "/media/lektura/ptaki-i-osiel_.html",
- "parent_number": 81,
- "id": 1146
- },
- {
- "parent": 1237,
- "title": "Ptaszki w klatce",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 952,
- "html": "/media/lektura/ptaszki-w-klatce.html",
- "parent_number": 82,
- "id": 1341
- },
- {
- "parent": 1333,
- "title": "Puchacze",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 6847,
- "html": "/media/lektura/puchacze-bajki-nowe_.html",
- "parent_number": 51,
- "id": 1319
- },
- {
- "parent": 1875,
- "title": "Pytasz, za co B\u00f3g...",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2252,
- "html": "/media/lektura/pytasz-za-co-bog.html",
- "parent_number": 6,
- "id": 1868
- },
- {
- "title": "Quo vadis",
- "html": "/media/lektura/quo-vadis_.html",
- "html_size": 1958083,
- "id": 1352,
- "tags": [
- 31,
- 242,
- 56,
- 350
- ]
- },
- {
- "parent": 708,
- "title": "Raki",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2462,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-raki_____.html",
- "parent_number": 94,
- "id": 495
- },
- {
- "title": "Ranek",
- "html": "/media/lektura/dzien-jak-co-dzien-ranek.html",
- "html_size": 5139,
- "id": 1542,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 2230,
- "title": "Ranek i wiecz\u00f3r",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2510,
- "html": "/media/lektura/ranek-i-wieczor.html",
- "parent_number": 23,
- "id": 2206
- },
- {
- "title": "Reduta Ordona",
- "html": "/media/lektura/reduta-ordona_______.html",
- "html_size": 20065,
- "id": 211,
- "tags": [
- 1,
- 23,
- 24,
- 121
- ]
- },
- {
- "title": "Regu\u0142y dla gospodarz\u00f3w domu",
- "html": "/media/lektura/reguly-dla-gospodarzow-domu.html",
- "html_size": 7356,
- "id": 848,
- "tags": [
- 1889,
- 1,
- 34,
- 121
- ]
- },
- {
- "parent": 2230,
- "title": "Rezygnacja",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2463,
- "html": "/media/lektura/rezygnacja.html",
- "parent_number": 24,
- "id": 2205
- },
- {
- "parent": 1875,
- "title": "R\u0119ce za lud walcz\u0105ce...",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 1366,
- "html": "/media/lektura/rece-za-lud-walczace.html",
- "parent_number": 7,
- "id": 1869
- },
- {
- "parent": 291,
- "title": "R\u0119kawiczka",
- "tags": [
- 210,
- 1,
- 23,
- 24
- ],
- "html_size": 6464,
- "html": "/media/lektura/ballady-i-romanse-rekawiczka_______.html",
- "parent_number": 3,
- "id": 112
- },
- {
- "title": "R\u0119kopis znaleziony w butli",
- "html": "/media/lektura/rekopis-zaleziony-w-butli.html",
- "html_size": 45902,
- "id": 1771,
- "tags": [
- 31,
- 1517,
- 4365,
- 24
- ]
- },
- {
- "title": "Robinson Crusoe",
- "html": "/media/lektura/robinson-crusoe__.html",
- "html_size": 379580,
- "id": 1094,
- "tags": [
- 2340,
- 31,
- 34,
- 242
- ]
- },
- {
- "title": "Rocznica powstania",
- "html": "/media/lektura/rocznica-powstania.html",
- "html_size": 6812,
- "id": 2115,
- "tags": [
- 1,
- 2,
- 5290,
- 24
- ]
- },
- {
- "parent": 1237,
- "title": "Rolnik",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1800,
- "html": "/media/lektura/rolnik_.html",
- "parent_number": 83,
- "id": 1205
- },
- {
- "parent": 291,
- "title": "Romantyczno\u015b\u0107",
- "tags": [
- 210,
- 1,
- 23,
- 24
- ],
- "html_size": 8596,
- "html": "/media/lektura/ballady-i-romanse-romantycznosc_______.html",
- "parent_number": 0,
- "id": 1598
- },
- {
- "title": "Romeo i Julia",
- "html": "/media/lektura/romeo-i-julia__________.html",
- "html_size": 481385,
- "id": 1618,
- "tags": [
- 152,
- 4293,
- 4,
- 226
- ]
- },
- {
- "title": "Ropucha",
- "html": "/media/lektura/ropucha.html",
- "html_size": 26265,
- "id": 1060,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Rota",
- "html": "/media/lektura/rota.html",
- "html_size": 4134,
- "id": 2108,
- "tags": [
- 55,
- 1,
- 2,
- 56
- ]
- },
- {
- "title": "Roz\u0142\u0105czenie",
- "html": "/media/lektura/rozlaczenie.html",
- "html_size": 4476,
- "id": 1991,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Rozmaryn",
- "html": "/media/lektura/rozmaryn.html",
- "html_size": 2298,
- "id": 2117,
- "tags": [
- 5148,
- 338,
- 1,
- 128,
- 2
- ]
- },
- {
- "title": "Rozmowa z piramidami",
- "html": "/media/lektura/rozmowa-z-piramidami.html",
- "html_size": 5488,
- "id": 2001,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 1798,
- "title": "Ruiny zamku w Ba\u0142ak\u0142awie",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 3877,
- "html": "/media/lektura/sonety-krymskie-ruiny-zamku-w-balaklawie_______.html",
- "parent_number": 17,
- "id": 1796
- },
- {
- "parent": 1333,
- "title": "Rumak i \u017arebiec",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2170,
- "html": "/media/lektura/rumak-i-zrebiec-bajki-nowe_.html",
- "parent_number": 52,
- "id": 1302
- },
- {
- "title": "Rupiec Kope\u0107",
- "html": "/media/lektura/rupiec-kopec.html",
- "html_size": 14791,
- "id": 2174,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "parent": 291,
- "title": "Rybka",
- "tags": [
- 210,
- 1,
- 23,
- 24
- ],
- "html_size": 14406,
- "html": "/media/lektura/ballady-i-romanse-rybka_______.html",
- "parent_number": 5,
- "id": 241
- },
- {
- "parent": 1237,
- "title": "Rybka ma\u0142a i szczupak",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1424,
- "html": "/media/lektura/rybka-mala-i-szczupak_.html",
- "parent_number": 84,
- "id": 1223
- },
- {
- "title": "Rzecz o wolno\u015bci s\u0142owa",
- "html": "/media/lektura/rzecz-o-wolnosci-slowa.html",
- "html_size": 197781,
- "id": 1710,
- "tags": [
- 31,
- 2308,
- 1660,
- 24
- ]
- },
- {
- "parent": 1333,
- "title": "Rzepa",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1941,
- "html": "/media/lektura/rzepa-bajki-nowe_.html",
- "parent_number": 53,
- "id": 1290
- },
- {
- "title": "Rzym",
- "html": "/media/lektura/rzym.html",
- "html_size": 3222,
- "id": 1970,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 293,
- "title": "Salome",
- "tags": [
- 332,
- 339,
- 1,
- 128
- ],
- "html_size": 43415,
- "html": "/media/lektura/hymny-salome_______.html",
- "parent_number": 1,
- "id": 229
- },
- {
- "title": "Salomon i Sulamitka",
- "html": "/media/lektura/salomon-i-sulamitka_1.html",
- "html_size": 8004,
- "id": 2088,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 293,
- "title": "Salve Regina",
- "tags": [
- 332,
- 339,
- 1,
- 128
- ],
- "html_size": 42429,
- "html": "/media/lektura/hymny-salve-regina_.html",
- "parent_number": 4,
- "id": 716
- },
- {
- "title": "Sam",
- "html": "/media/lektura/ballada-z-tamtej-strony-sam.html",
- "html_size": 3629,
- "id": 1666,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Samob\u00f3jstwo",
- "html": "/media/lektura/ballada-z-tamtej-strony-samobojstwo.html",
- "html_size": 5737,
- "id": 1667,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Satyry",
- "id": 300,
- "tags": [
- 31,
- 33,
- 34,
- 32
- ]
- },
- {
- "parent": 1237,
- "title": "S\u0105siedztwo",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1071,
- "html": "/media/lektura/sasiedztwo_.html",
- "parent_number": 85,
- "id": 1193
- },
- {
- "title": "Schn\u0105ca limba",
- "html": "/media/lektura/schnaca-limba_1.html",
- "html_size": 2343,
- "id": 2089,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Sed non satiata",
- "html": "/media/lektura/kwiaty-zla-sed-non-satiata.html",
- "html_size": 3978,
- "id": 1886,
- "tags": [
- 4373,
- 1,
- 24,
- 22
- ]
- },
- {
- "parent": 708,
- "title": "Sen",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1212,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-sen_____.html",
- "parent_number": 95,
- "id": 419
- },
- {
- "title": "Sen nocy letniej",
- "html": "/media/lektura/sen-nocy-letniej.html",
- "html_size": 383121,
- "id": 1940,
- "tags": [
- 152,
- 4293,
- 153,
- 4,
- 226
- ]
- },
- {
- "title": "Serce oskar\u017cycielem",
- "html": "/media/lektura/serce-oskarzycielem_.html",
- "html_size": 22104,
- "id": 1682,
- "tags": [
- 31,
- 1517,
- 4365,
- 24
- ]
- },
- {
- "title": "Siedmio\u015bpiochy",
- "html": "/media/lektura/siedmiospiochy.html",
- "html_size": 2670,
- "id": 2175,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "Si\u0142aczka",
- "html": "/media/lektura/silaczka_______.html",
- "html_size": 87501,
- "id": 69,
- "tags": [
- 31,
- 128,
- 54,
- 293
- ]
- },
- {
- "parent": 1237,
- "title": "Skarb",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2034,
- "html": "/media/lektura/skarb_.html",
- "parent_number": 86,
- "id": 1129
- },
- {
- "parent": 1237,
- "title": "Sk\u0105py",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1666,
- "html": "/media/lektura/skapy_.html",
- "parent_number": 87,
- "id": 1206
- },
- {
- "parent": 1333,
- "title": "Skowronek",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2514,
- "html": "/media/lektura/skowronek-bajki-nowe_.html",
- "parent_number": 54,
- "id": 1271
- },
- {
- "title": "S\u0142odka potrawa",
- "html": "/media/lektura/sodka-potrawa.html",
- "html_size": 2533,
- "id": 2176,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "S\u0142odycz",
- "html": "/media/lektura/slodycz.html",
- "html_size": 19808,
- "id": 1922,
- "tags": [
- 152,
- 2308,
- 24,
- 175
- ]
- },
- {
- "parent": 1333,
- "title": "S\u0142onecznik i fia\u0142ek",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3536,
- "html": "/media/lektura/slonecznik-i-fialek-bajki-nowe_.html",
- "parent_number": 58,
- "id": 1323
- },
- {
- "parent": 1237,
- "title": "S\u0142o\u0144 i pszczo\u0142a",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1471,
- "html": "/media/lektura/slon-i-pszczola_.html",
- "parent_number": 88,
- "id": 1144
- },
- {
- "parent": 1333,
- "title": "S\u0142o\u0144ce i ob\u0142oki",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3452,
- "html": "/media/lektura/slonce-i-obloki-bajki-nowe_.html",
- "parent_number": 55,
- "id": 1301
- },
- {
- "parent": 1333,
- "title": "S\u0142o\u0144ce i \u017caby",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2084,
- "html": "/media/lektura/slonce-i-zaby-bajki-nowe_.html",
- "parent_number": 56,
- "id": 1329
- },
- {
- "parent": 1333,
- "title": "S\u0142o\u0144ce, ob\u0142oki, ziemia",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1089,
- "html": "/media/lektura/slonce-obloki-ziemia-bajki-nowe_.html",
- "parent_number": 57,
- "id": 1282
- },
- {
- "title": "S\u0142owik",
- "html": "/media/lektura/slowik.html",
- "html_size": 34172,
- "id": 1062,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "parent": 1237,
- "title": "S\u0142owik i szczygie\u0142",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1134,
- "html": "/media/lektura/slowik-i-szczygiel_.html",
- "parent_number": 89,
- "id": 1161
- },
- {
- "parent": 1237,
- "title": "S\u0142owik i szczygie\u0142 II",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1244,
- "html": "/media/lektura/slowik-i-szczygiel-ii_.html",
- "parent_number": 90,
- "id": 1177
- },
- {
- "title": "Smutek ksi\u0119\u017cyca",
- "html": "/media/lektura/kwiaty-zla-smutek-ksiezyca.html",
- "html_size": 2243,
- "id": 1906,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1875,
- "title": "Snu\u0107 mi\u0142o\u015b\u0107...",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 1977,
- "html": "/media/lektura/snuc-milosc.html",
- "parent_number": 9,
- "id": 1871
- },
- {
- "title": "Snycerz by\u0142 zatrudniony Dyjany lepieniem...",
- "html": "/media/lektura/snycerz-byl-zatrudniony-dyjany-lepieniem.html",
- "html_size": 6060,
- "id": 1973,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Snycerz i statua",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1429,
- "html": "/media/lektura/snycerz-i-statua_.html",
- "parent_number": 91,
- "id": 1183
- },
- {
- "title": "Sonet I (O kr\u00f3tko\u015bci i niepewno\u015bci na \u015bwiecie \u017cywota cz\u0142owieczego)",
- "html": "/media/lektura/sonet-i-o-krotkosci-i-niepewnosci-na-swiecie-zywota-czlowieczego.html",
- "html_size": 3914,
- "id": 807,
- "tags": [
- 123,
- 1,
- 1565,
- 22
- ]
- },
- {
- "title": "Sonet II (Na one s\u0142owa Jopowe)",
- "html": "/media/lektura/sonet-ii-na-one-slowa-jopowe.html",
- "html_size": 3218,
- "id": 808,
- "tags": [
- 123,
- 1,
- 1565,
- 22
- ]
- },
- {
- "title": "Sonet III (Do Na\u015bwi\u0119tszej Panny)",
- "html": "/media/lektura/sonet-iii-do-naswietszej-panny.html",
- "html_size": 3904,
- "id": 809,
- "tags": [
- 123,
- 1,
- 1565,
- 22
- ]
- },
- {
- "title": "Sonet IV (O wojnie naszej, kt\u00f3r\u0105 wiedziemy z szatanem, \u015bwiatem i cia\u0142em)",
- "html": "/media/lektura/sonet-iv-o-wojnie-naszej-ktora-wiedziemy-z-szatanem-swiatem--i-cialem.html",
- "html_size": 3422,
- "id": 810,
- "tags": [
- 123,
- 1,
- 1565,
- 22
- ]
- },
- {
- "title": "Sonet V (O nietrwa\u0142ej mi\u0142o\u015bci rzeczy \u015bwiata tego)",
- "html": "/media/lektura/sonet-v-o-nietrwalej-milosci-rzeczy-swiata-tego.html",
- "html_size": 2939,
- "id": 811,
- "tags": [
- 123,
- 1,
- 1565,
- 22
- ]
- },
- {
- "title": "Sonet VI (Do Pana Miko\u0142aja Tomickiego)",
- "html": "/media/lektura/sonet-vi-do-pana-mikolaja-tomickiego.html",
- "html_size": 2246,
- "id": 812,
- "tags": [
- 123,
- 1,
- 1565,
- 22
- ]
- },
- {
- "title": "Sonety krymskie",
- "id": 1798,
- "tags": [
- 1,
- 23,
- 24,
- 22
- ]
- },
- {
- "title": "Sonety odeskie",
- "id": 2230,
- "tags": [
- 1,
- 23,
- 24,
- 121
- ]
- },
- {
- "title": "Sowi\u0144ski w okopach Woli",
- "html": "/media/lektura/sowinski-w-okopach-woli_.html",
- "html_size": 8760,
- "id": 1071,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 1383,
- "title": "Spacer",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 1374,
- "html": "/media/lektura/but-w-butonierce-spacer_.html",
- "parent_number": 18,
- "id": 1377
- },
- {
- "title": "Spleen",
- "html": "/media/lektura/kwiaty-zla-spleen.html",
- "html_size": 11642,
- "id": 1907,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Sprzeczno\u015b\u0107",
- "html": "/media/lektura/kwiaty-zla-sprzecznosc.html",
- "html_size": 3692,
- "id": 1908,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Staruszki",
- "html": "/media/lektura/kwiaty-zla-staruszki.html",
- "html_size": 19636,
- "id": 1909,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Stary pies i stary s\u0142uga",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2232,
- "html": "/media/lektura/stary-pies-i-stary-sluga_.html",
- "parent_number": 92,
- "id": 1127
- },
- {
- "parent": 1798,
- "title": "Stepy akerma\u0144skie",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 6228,
- "html": "/media/lektura/sonety-krymskie-stepy-akermanskie_______.html",
- "parent_number": 1,
- "id": 1781
- },
- {
- "title": "Stolica",
- "html": "/media/lektura/stolica.html",
- "html_size": 4789,
- "id": 1091,
- "tags": [
- 1,
- 2308,
- 24,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Strumyk i fontanny",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1077,
- "html": "/media/lektura/strumyk-i-fontanny_.html",
- "parent_number": 93,
- "id": 1189
- },
- {
- "parent": 2230,
- "title": "Strzelec",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2953,
- "html": "/media/lektura/strzelec.html",
- "parent_number": 25,
- "id": 2204
- },
- {
- "parent": 1237,
- "title": "Strzelec i pies",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1125,
- "html": "/media/lektura/strzelec-i-pies_.html",
- "parent_number": 94,
- "id": 1174
- },
- {
- "title": "Studnia i wahad\u0142o",
- "html": "/media/lektura/studnia-i-wahadlo.html",
- "html_size": 55046,
- "id": 1897,
- "tags": [
- 31,
- 1517,
- 4365,
- 24
- ]
- },
- {
- "parent": 1237,
- "title": "Su\u0142tan w piekle",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1882,
- "html": "/media/lektura/sultan-w-piekle_.html",
- "parent_number": 95,
- "id": 1204
- },
- {
- "title": "Sygna\u0142",
- "html": "/media/lektura/sygnal.html",
- "html_size": 2069,
- "id": 2116,
- "tags": [
- 1,
- 2,
- 5290,
- 24
- ]
- },
- {
- "title": "Symbol",
- "html": "/media/lektura/symbol_1.html",
- "html_size": 2801,
- "id": 2090,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Syn i ojciec",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1462,
- "html": "/media/lektura/syn-i-ojciec_.html",
- "parent_number": 96,
- "id": 1230
- },
- {
- "parent": 1237,
- "title": "Synogarlica",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1700,
- "html": "/media/lektura/synogarlica_.html",
- "parent_number": 97,
- "id": 1185
- },
- {
- "parent": 295,
- "title": "Syrena",
- "tags": [
- 31,
- 126,
- 128,
- 127
- ],
- "html_size": 32567,
- "html": "/media/lektura/legendy-warszawskie-syrena_______.html",
- "parent_number": 1,
- "id": 218
- },
- {
- "title": "Syrena",
- "html": "/media/lektura/syrena_2.html",
- "html_size": 15557,
- "id": 868,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "Syrena",
- "html": "/media/lektura/basnie-syrena.html",
- "html_size": 69633,
- "id": 1919,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Szatan",
- "html": "/media/lektura/szatan_1.html",
- "html_size": 3661,
- "id": 2091,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Szczep winny",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2425,
- "html": "/media/lektura/szczep-winny-bajki-nowe_.html",
- "parent_number": 59,
- "id": 1303
- },
- {
- "parent": 289,
- "title": "Szcz\u0119\u015bliwo\u015b\u0107 filut\u00f3w",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 15443,
- "html": "/media/lektura/satyry-czesc-pierwsza-szczesliwosc-filutow_______.html",
- "parent_number": 3,
- "id": 64
- },
- {
- "title": "Szcz\u0119\u015bliwy",
- "html": "/media/lektura/szczesliwy.html",
- "html_size": 16377,
- "id": 869,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "parent": 1237,
- "title": "Szczur i kot",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1903,
- "html": "/media/lektura/szczur-i-kot.html",
- "parent_number": 98,
- "id": 1342
- },
- {
- "parent": 1237,
- "title": "Szczurek i matka",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 850,
- "html": "/media/lektura/szczurek-i-matka_.html",
- "parent_number": 99,
- "id": 1119
- },
- {
- "parent": 1333,
- "title": "Szczygie\u0142 i kos",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1788,
- "html": "/media/lektura/szczygiel-i-kos-bajki-nowe_.html",
- "parent_number": 60,
- "id": 1263
- },
- {
- "title": "Szewcy",
- "html": "/media/lektura/szewcy.html",
- "html_size": 310371,
- "id": 1921,
- "tags": [
- 152,
- 3170,
- 338,
- 3141
- ]
- },
- {
- "parent": 1237,
- "title": "Szkapa i rumak",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1486,
- "html": "/media/lektura/szkapa-i-rumak_.html",
- "parent_number": 100,
- "id": 1135
- },
- {
- "parent": 1237,
- "title": "Szkatu\u0142a ze z\u0142otem, w\u00f3r z kasz\u0105",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1734,
- "html": "/media/lektura/szkatula-ze-zlotem-wor-z-kasza_.html",
- "parent_number": 101,
- "id": 1152
- },
- {
- "title": "Szkice w\u0119glem",
- "html": "/media/lektura/szkice-weglem.html",
- "html_size": 212199,
- "id": 968,
- "tags": [
- 31,
- 1517,
- 56,
- 350
- ]
- },
- {
- "parent": 773,
- "title": "Szlakiem symplo\u0144skiej drogi",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 16319,
- "html": "/media/lektura/z-wichrow-i-hal-z-alp-szlakiem-symplonskiej-drogi_.html",
- "parent_number": 6,
- "id": 763
- },
- {
- "title": "Szyd\u0142o w worku",
- "html": "/media/lektura/szydlo-w-worku.html",
- "html_size": 11364,
- "id": 870,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "\u015alimak i r\u00f3\u017ca",
- "html": "/media/lektura/slimak-i-roza.html",
- "html_size": 7366,
- "id": 1061,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "\u015amier\u0107",
- "html": "/media/lektura/dzien-jak-co-dzien-smierc.html",
- "html_size": 3272,
- "id": 1543,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "\u015amier\u0107",
- "html": "/media/lektura/kamien-smierc.html",
- "html_size": 3715,
- "id": 1687,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 1614,
- "title": "\u015amier\u0107 domu",
- "tags": [
- 31,
- 54,
- 2294,
- 56
- ],
- "html_size": 39607,
- "html": "/media/lektura/gloria-victis-smierc-domu.html",
- "parent_number": 6,
- "id": 1613
- },
- {
- "title": "\u015amier\u0107 kurki",
- "html": "/media/lektura/smierc-kurki.html",
- "html_size": 9197,
- "id": 2177,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "\u015amier\u0107 n\u0119dzarzy",
- "html": "/media/lektura/kwiaty-zla-smierc-nedzarzy.html",
- "html_size": 1964,
- "id": 1887,
- "tags": [
- 4373,
- 1,
- 24,
- 22
- ]
- },
- {
- "parent": 1383,
- "title": "\u015amier\u0107 Pana Premiera",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 12585,
- "html": "/media/lektura/but-w-butonierce-smierc-pana-premiera.html",
- "parent_number": 9,
- "id": 1375
- },
- {
- "title": "\u015amier\u0107 Pu\u0142kownika",
- "html": "/media/lektura/smierc-pulkownika_______.html",
- "html_size": 6453,
- "id": 1599,
- "tags": [
- 1,
- 23,
- 24,
- 121
- ]
- },
- {
- "title": "\u015amier\u0107 urz\u0119dnika",
- "html": "/media/lektura/smierc-urzednika_.html",
- "html_size": 8703,
- "id": 738,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "\u015amier\u0107, co trzyna\u015bcie lat sta\u0142a ko\u0142o mnie...",
- "html": "/media/lektura/smierc-co-trzynascie-lat-stala-kolo-mnie.html",
- "html_size": 4705,
- "id": 1992,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "\u015ani mi si\u0119 jaka\u015b wielka a przez wieki id\u0105ca...",
- "html": "/media/lektura/sni-mi-sie-jakas-wielka-a-przez-wieki-idaca.html",
- "html_size": 5741,
- "id": 1993,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 1383,
- "title": "\u015anieg",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 2631,
- "html": "/media/lektura/but-w-butonierce-snieg.html",
- "parent_number": 17,
- "id": 1376
- },
- {
- "parent": 1875,
- "title": "\u015ani\u0142a si\u0119 zima...",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 10357,
- "html": "/media/lektura/snila-sie-zima.html",
- "parent_number": 8,
- "id": 1870
- },
- {
- "title": "\u015apiew rewolucyjny z roku 1830",
- "html": "/media/lektura/spiew-rewolucyjny-z-r-1830.html",
- "html_size": 4507,
- "id": 2118,
- "tags": [
- 1,
- 2,
- 24,
- 5297
- ]
- },
- {
- "title": "\u015apiewak spod strzechy",
- "html": "/media/lektura/spiewak-spod-strzechy_.html",
- "html_size": 8694,
- "id": 1063,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "\u015apiewka powsta\u0144c\u00f3w z oddzia\u0142u Langiewicza",
- "html": "/media/lektura/spiewka-powstancow-z-oddzialu-langiewicza.html",
- "html_size": 7512,
- "id": 2121,
- "tags": [
- 1,
- 2,
- 24,
- 5302
- ]
- },
- {
- "title": "\u015apiewny poca\u0142unek",
- "html": "/media/lektura/nic-wiecej-spiewny-pocalunek.html",
- "html_size": 3897,
- "id": 1690,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "\u015awiat",
- "html": "/media/lektura/dzien-jak-co-dzien-swiat.html",
- "html_size": 4364,
- "id": 1510,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 289,
- "title": "\u015awiat zepsuty",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 17405,
- "html": "/media/lektura/satyry-czesc-pierwsza-swiat-zepsuty_________.html",
- "parent_number": 1,
- "id": 18
- },
- {
- "title": "\u015awiat\u0142o po po\u0142udniu",
- "html": "/media/lektura/dzien-jak-co-dzien-swiatlo-po-poludniu.html",
- "html_size": 3650,
- "id": 1544,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "\u015awidryga i Midryga",
- "html": "/media/lektura/swidryga-i-midryga________.html",
- "html_size": 7750,
- "id": 1387,
- "tags": [
- 337,
- 1,
- 3035,
- 336
- ]
- },
- {
- "title": "\u015awi\u0119toszek",
- "html": "/media/lektura/swietoszek_______.html",
- "html_size": 305454,
- "id": 1719,
- "tags": [
- 123,
- 152,
- 153,
- 1324
- ]
- },
- {
- "parent": 293,
- "title": "\u015awi\u0119ty Bo\u017ce, \u015awi\u0119ty Mocny!",
- "tags": [
- 332,
- 339,
- 1,
- 128
- ],
- "html_size": 40112,
- "html": "/media/lektura/hymny-swiety-boze-swiety-mocny_______.html",
- "parent_number": 2,
- "id": 244
- },
- {
- "parent": 291,
- "title": "\u015awitezianka",
- "tags": [
- 210,
- 1,
- 23,
- 24
- ],
- "html_size": 16771,
- "html": "/media/lektura/ballady-i-romanse-switezianka_______.html",
- "parent_number": 7,
- "id": 146
- },
- {
- "parent": 291,
- "title": "\u015awite\u017a",
- "tags": [
- 210,
- 1,
- 23,
- 24
- ],
- "html_size": 22029,
- "html": "/media/lektura/ballady-i-romanse-switez_______.html",
- "parent_number": 6,
- "id": 194
- },
- {
- "title": "Ta chwila",
- "html": "/media/lektura/nic-wiecej-ta-chwila.html",
- "html_size": 1783,
- "id": 1691,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Tak mi, Bo\u017ce, dopom\u00f3\u017c",
- "html": "/media/lektura/tak-mi-boze-dopomoz.html",
- "html_size": 6110,
- "id": 1974,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Tako rzecze Zaratustra",
- "html": "/media/lektura/tako-rzecze-zaratustra_1.html",
- "html_size": 1139153,
- "id": 2198,
- "tags": [
- 31,
- 128,
- 5723,
- 242
- ]
- },
- {
- "parent": 1237,
- "title": "Talar i czerwony z\u0142oty",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1630,
- "html": "/media/lektura/talar-czerwony-i-zloty.html",
- "parent_number": 102,
- "id": 1343
- },
- {
- "title": "Tamten",
- "html": "/media/lektura/napoj-cienisty-tamten.html",
- "html_size": 3066,
- "id": 1642,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1383,
- "title": "Tango jesienne",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 2296,
- "html": "/media/lektura/but-w-butonierce-tango-jesienne.html",
- "parent_number": 24,
- "id": 1378
- },
- {
- "parent": 287,
- "title": "Taniec zb\u00f3jnicki",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 37806,
- "html": "/media/lektura/z-wichrow-i-hal-z-tatr-taniec-zbojnicki___.html",
- "parent_number": 5,
- "id": 768
- },
- {
- "parent": 711,
- "title": "Tego\u017c ma\u0142\u017conce (Anna z Pi\u0142ce, dwu m\u0119\u017cu zacnych pochowawszy...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2154,
- "html": "/media/lektura/fraszki-ksiegi-wtore-tegoz-malzonce-anna-z-pilce-dwu-mezu-za____.html",
- "parent_number": 50,
- "id": 475
- },
- {
- "parent": 711,
- "title": "Temu\u017c (By B\u00f3g dusz\u0119 za dusz\u0119 chcia\u0142 od nas przyjmowa\u0107...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1822,
- "html": "/media/lektura/fraszki-ksiegi-wtore-temuz-by-bog-dusze-za-dusze-chcial-od-n____.html",
- "parent_number": 59,
- "id": 440
- },
- {
- "parent": 710,
- "title": "Temu\u017c (O\u015bmdziesi\u0105t lat, a to jest prawy wiek cz\u0142owieczy...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1443,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-temuz-osmdziesiat-lat-a-to-jest-prawy____.html",
- "parent_number": 51,
- "id": 502
- },
- {
- "title": "Ten sam duchowi p\u0142omienny szlak...",
- "html": "/media/lektura/ten-sam-duchowi-plomienny-szlak.html",
- "html_size": 2131,
- "id": 1994,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Testament m\u00f3j",
- "html": "/media/lektura/testament-moj________.html",
- "html_size": 17768,
- "id": 63,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "T\u0142umaczenia",
- "id": 1625,
- "tags": [
- 1903,
- 1889,
- 1,
- 34
- ]
- },
- {
- "title": "Toru\u0144",
- "html": "/media/lektura/nic-wiecej-torun.html",
- "html_size": 2734,
- "id": 1692,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Towarzysz podr\u00f3\u017cy",
- "html": "/media/lektura/towarzysz-podrozy.html",
- "html_size": 55583,
- "id": 1064,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "parent": 1481,
- "title": "Tren I",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 13090,
- "html": "/media/lektura/treny-tren-i.html",
- "parent_number": 2,
- "id": 1460
- },
- {
- "parent": 1481,
- "title": "Tren II",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 19206,
- "html": "/media/lektura/treny-tren-ii.html",
- "parent_number": 3,
- "id": 1461
- },
- {
- "parent": 1481,
- "title": "Tren III",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 10363,
- "html": "/media/lektura/treny-tren-iii.html",
- "parent_number": 4,
- "id": 1462
- },
- {
- "parent": 1481,
- "title": "Tren IV",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 9700,
- "html": "/media/lektura/treny-tren-iv.html",
- "parent_number": 5,
- "id": 1463
- },
- {
- "parent": 1481,
- "title": "Tren IX",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 11388,
- "html": "/media/lektura/treny-tren-ix.html",
- "parent_number": 10,
- "id": 1468
- },
- {
- "parent": 1481,
- "title": "Tren V",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 8612,
- "html": "/media/lektura/treny-tren-v.html",
- "parent_number": 6,
- "id": 1464
- },
- {
- "parent": 1481,
- "title": "Tren VI",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 9569,
- "html": "/media/lektura/treny-tren-vi.html",
- "parent_number": 7,
- "id": 1465
- },
- {
- "parent": 1481,
- "title": "Tren VII",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 9241,
- "html": "/media/lektura/treny-tren-vii.html",
- "parent_number": 8,
- "id": 1466
- },
- {
- "parent": 1481,
- "title": "Tren VIII",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 7536,
- "html": "/media/lektura/treny-tren-viii.html",
- "parent_number": 9,
- "id": 1467
- },
- {
- "parent": 1481,
- "title": "Tren X",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 7214,
- "html": "/media/lektura/treny-tren-x.html",
- "parent_number": 11,
- "id": 1469
- },
- {
- "parent": 1481,
- "title": "Tren XI",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 10078,
- "html": "/media/lektura/treny-tren-xi_.html",
- "parent_number": 12,
- "id": 1470
- },
- {
- "parent": 1481,
- "title": "Tren XII",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 12611,
- "html": "/media/lektura/treny-tren-xii.html",
- "parent_number": 13,
- "id": 1471
- },
- {
- "parent": 1481,
- "title": "Tren XIII",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 8909,
- "html": "/media/lektura/treny-tren-xiii.html",
- "parent_number": 14,
- "id": 1472
- },
- {
- "parent": 1481,
- "title": "Tren XIV",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 11247,
- "html": "/media/lektura/treny-tren-xiv.html",
- "parent_number": 15,
- "id": 1473
- },
- {
- "parent": 1481,
- "title": "Tren XIX albo Sen",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 52141,
- "html": "/media/lektura/treny-tren-xix-albo-sen_.html",
- "parent_number": 20,
- "id": 1478
- },
- {
- "parent": 1481,
- "title": "Tren XV",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 17352,
- "html": "/media/lektura/treny-tren-xv.html",
- "parent_number": 16,
- "id": 1474
- },
- {
- "parent": 1481,
- "title": "Tren XVI",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 20128,
- "html": "/media/lektura/treny-tren-xvi.html",
- "parent_number": 17,
- "id": 1475
- },
- {
- "parent": 1481,
- "title": "Tren XVII",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 13468,
- "html": "/media/lektura/treny-tren-xvii.html",
- "parent_number": 18,
- "id": 1476
- },
- {
- "parent": 1481,
- "title": "Tren XVIII",
- "tags": [
- 3,
- 1,
- 4,
- 52
- ],
- "html_size": 9696,
- "html": "/media/lektura/treny-tren-xviii.html",
- "parent_number": 19,
- "id": 1477
- },
- {
- "title": "Treny",
- "id": 1481,
- "tags": [
- 3,
- 1,
- 4,
- 52
- ]
- },
- {
- "title": "Trupi\u0119gi",
- "html": "/media/lektura/napoj-cienisty-trupiegi.html",
- "html_size": 3973,
- "id": 1643,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1383,
- "title": "Trupy z kawiorem",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 6028,
- "html": "/media/lektura/but-w-butonierce-trupy-z-kawiorem.html",
- "parent_number": 11,
- "id": 1379
- },
- {
- "title": "Tryumfy Kr\u00f3la niebieskiego",
- "html": "/media/lektura/tryumfy-krola-niebieskiego_1.html",
- "html_size": 6806,
- "id": 2038,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "parent": 1237,
- "title": "Trzcina i chmiel",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1267,
- "html": "/media/lektura/trzcina-i-chmiel_.html",
- "parent_number": 103,
- "id": 1132
- },
- {
- "title": "Trzeci maj Litwina",
- "html": "/media/lektura/trzeci-maj-litwina.html",
- "html_size": 4305,
- "id": 2119,
- "tags": [
- 1,
- 2,
- 24,
- 5297
- ]
- },
- {
- "title": "Trzej bracia",
- "html": "/media/lektura/trzej-bracia.html",
- "html_size": 8785,
- "id": 2178,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "parent": 1333,
- "title": "Trzoda",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3375,
- "html": "/media/lektura/trzoda-bajki-nowe_.html",
- "parent_number": 61,
- "id": 1288
- },
- {
- "title": "Trzy pi\u00f3ra",
- "html": "/media/lektura/trzy-piora.html",
- "html_size": 14756,
- "id": 2179,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "Trzy poemata",
- "id": 1562,
- "tags": [
- 1,
- 1756,
- 24,
- 189
- ]
- },
- {
- "parent": 1237,
- "title": "Tulipan i fia\u0142ek",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1612,
- "html": "/media/lektura/tulipan-i-fialek_.html",
- "parent_number": 104,
- "id": 1203
- },
- {
- "title": "Ty g\u0142os cierpi\u0105cy podnie\u015b - i niech w tobie... (Do A. Czartoryskiego)",
- "html": "/media/lektura/ty-glos-cierpiacy-podnies-i-niech-w-tobie.html",
- "html_size": 6177,
- "id": 2009,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "U kr\u00f3la Olch",
- "html": "/media/lektura/u-krola-olch.html",
- "html_size": 22908,
- "id": 1065,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Ubogi bogaty",
- "html": "/media/lektura/ubogi-bogaty.html",
- "html_size": 20566,
- "id": 2180,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "Ub\u00f3stwo",
- "html": "/media/lektura/napoj-cienisty-ubostwo.html",
- "html_size": 3044,
- "id": 1644,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1875,
- "title": "Uciec z dusz\u0105 na listek",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 779,
- "html": "/media/lektura/uciec-z-dusza-na-listek.html",
- "parent_number": 10,
- "id": 1872
- },
- {
- "title": "Ukradziony grosik",
- "html": "/media/lektura/ukradziony-grosik.html",
- "html_size": 3844,
- "id": 2181,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "U\u0142an i dziewczyna",
- "html": "/media/lektura/ulan-i-dziewczyna.html",
- "html_size": 6078,
- "id": 2109,
- "tags": [
- 5282,
- 1,
- 2,
- 24
- ]
- },
- {
- "parent": 1333,
- "title": "Umbrelka",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 4223,
- "html": "/media/lektura/umbrelka-bajki-nowe_.html",
- "parent_number": 62,
- "id": 1252
- },
- {
- "parent": 828,
- "title": "Upi\u00f3r",
- "tags": [
- 210,
- 31,
- 23,
- 24
- ],
- "html_size": 11933,
- "html": "/media/lektura/dziady-dziady-poema-upior.html",
- "parent_number": 0,
- "id": 831
- },
- {
- "title": "Upi\u00f3r",
- "html": "/media/lektura/kwiaty-zla-upior.html",
- "html_size": 4173,
- "id": 1910,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Urszula Kochanowska",
- "html": "/media/lektura/urszula-kochanowska________.html",
- "html_size": 4689,
- "id": 1388,
- "tags": [
- 337,
- 1,
- 3035,
- 121
- ]
- },
- {
- "parent": 754,
- "title": "V (Z g\u0142\u0119bin przestworu, z ciemnych chmur...)",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 4056,
- "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-v-z-glebin-przestworu-z-ciemnych-chmur_.html",
- "parent_number": 4,
- "id": 747
- },
- {
- "parent": 754,
- "title": "VI (Ach! nieraz mi si\u0119 zdaje...)",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 3504,
- "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-vi-ach-nieraz-mi-sie-zdaje_.html",
- "parent_number": 6,
- "id": 1577
- },
- {
- "parent": 754,
- "title": "VII (\u017bycia ogromne morze grzmi przede mn\u0105...)",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 11260,
- "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-vii-zycia-ogromne-morze-grzmi-przede-mna.html",
- "parent_number": 7,
- "id": 1578
- },
- {
- "parent": 754,
- "title": "VIII (By\u0142e\u015b mi dawniej bo\u017cyszczem, o t\u0142umie...)",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 12329,
- "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-viii-byles-mi-dawniej-bozyszczem-o-tlumie_.html",
- "parent_number": 7,
- "id": 750
- },
- {
- "title": "Virgini intactae",
- "html": "/media/lektura/virgini-intactae_1.html",
- "html_size": 2360,
- "id": 2092,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "W albumie E. Hr. Krasi\u0144skiej",
- "html": "/media/lektura/w-albumie-e-hr-krasinskiej.html",
- "html_size": 2633,
- "id": 1977,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "W biurze pocztowym",
- "html": "/media/lektura/w-biurze-pocztowym.html",
- "html_size": 4370,
- "id": 872,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "W boju",
- "html": "/media/lektura/nic-wiecej-w-boju.html",
- "html_size": 5790,
- "id": 1702,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "W chmur odbiciu",
- "html": "/media/lektura/napoj-cienisty-w-chmur-odbiciu.html",
- "html_size": 6576,
- "id": 1743,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "W ciemno\u015bci schodzi moja dusza",
- "id": 754,
- "tags": [
- 339,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "W czas zmartwychwstania",
- "html": "/media/lektura/napoj-cienisty-w-czas-zmartwychwstania.html",
- "html_size": 2805,
- "id": 1646,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "W dziecinne moje cudne lata...",
- "html": "/media/lektura/w-dziecinne-moje-cudne-lata.html",
- "html_size": 883,
- "id": 1978,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 2230,
- "title": "W imionniku C. S.",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2819,
- "html": "/media/lektura/w-imionniku-c-s.html",
- "parent_number": 26,
- "id": 2201
- },
- {
- "title": "W jesieni",
- "html": "/media/lektura/w-jesieni_1.html",
- "html_size": 1965,
- "id": 2093,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "W kolorowej nocy",
- "html": "/media/lektura/nic-wiecej-w-kolorowej-nocy.html",
- "html_size": 3908,
- "id": 1693,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "W malinowym chru\u015bniaku",
- "html": "/media/lektura/w-malinowym-chrusniaku________.html",
- "html_size": 18951,
- "id": 1389,
- "tags": [
- 337,
- 1,
- 3035,
- 121
- ]
- },
- {
- "title": "W ma\u0142ym dworku",
- "html": "/media/lektura/w-malym-dworku.html",
- "html_size": 144821,
- "id": 1564,
- "tags": [
- 152,
- 3170,
- 338,
- 3141
- ]
- },
- {
- "title": "W ostatni dzie\u0144 - w ostatni dzie\u0144...",
- "html": "/media/lektura/w-ostatni-dzien-w-ostatni-dzien.html",
- "html_size": 2938,
- "id": 2003,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "W pami\u0119tniku Zofii Bobr\u00f3wny",
- "html": "/media/lektura/w-pamietniku-zofii-bobrowny_______.html",
- "html_size": 2397,
- "id": 217,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "W pejza\u017cu",
- "html": "/media/lektura/ballada-z-tamtej-strony-w-pejzazu.html",
- "html_size": 2351,
- "id": 1669,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 1846,
- "title": "W podziemiach Wawelu",
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ],
- "html_size": 10726,
- "html": "/media/lektura/katechizm-polskiego-dziecka-w-podziemiach-wawelu_.html",
- "parent_number": 12,
- "id": 1844
- },
- {
- "title": "W pustyni i w puszczy",
- "html": "/media/lektura/w-pustyni-i-w-puszczy_2.html",
- "html_size": 1037713,
- "id": 1569,
- "tags": [
- 31,
- 242,
- 56,
- 350
- ]
- },
- {
- "title": "W razurze",
- "html": "/media/lektura/w-razurze.html",
- "html_size": 11276,
- "id": 873,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "W sztambuchu Marii Wodzi\u0144skiej",
- "html": "/media/lektura/w-sztambuchu-marii-wodzinskiej.html",
- "html_size": 3843,
- "id": 1980,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 1562,
- "title": "W Szwajcarii",
- "tags": [
- 1,
- 1756,
- 24,
- 189
- ],
- "html_size": 47357,
- "html": "/media/lektura/trzy-poemata-w-szwajcarii.html",
- "parent_number": 2,
- "id": 1561
- },
- {
- "title": "W z\u0142ym humorze",
- "html": "/media/lektura/w-zlym-humorze.html",
- "html_size": 5869,
- "id": 875,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "W \u017c\u0142obie le\u017cy...",
- "html": "/media/lektura/w-zlobie-lezy_1.html",
- "html_size": 9703,
- "id": 2039,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "parent": 1333,
- "title": "Wabik",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2175,
- "html": "/media/lektura/wabik-bajki-nowe_.html",
- "parent_number": 63,
- "id": 1305
- },
- {
- "parent": 1562,
- "title": "Wac\u0142aw",
- "tags": [
- 1,
- 1756,
- 24,
- 189
- ],
- "html_size": 104431,
- "html": "/media/lektura/trzy-poemata-waclaw.html",
- "parent_number": 3,
- "id": 1560
- },
- {
- "title": "Wa\u0144ka",
- "html": "/media/lektura/wanka.html",
- "html_size": 10088,
- "id": 871,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "Warkocz",
- "html": "/media/lektura/kwiaty-zla-warkocz.html",
- "html_size": 7809,
- "id": 1911,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Warszawianka 1831",
- "html": "/media/lektura/warszawianka-1831.html",
- "html_size": 8917,
- "id": 2106,
- "tags": [
- 5276,
- 1,
- 2,
- 24
- ]
- },
- {
- "title": "Warszawianka 1905",
- "html": "/media/lektura/warszawianka-1905.html",
- "html_size": 5250,
- "id": 2120,
- "tags": [
- 1,
- 128,
- 2,
- 5300
- ]
- },
- {
- "title": "W\u0105wozy czasu",
- "html": "/media/lektura/dzien-jak-co-dzien-wawozy-czasu.html",
- "html_size": 10026,
- "id": 1545,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "We czterech",
- "html": "/media/lektura/kamien-we-czterech.html",
- "html_size": 6699,
- "id": 1688,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "We \u015bnie",
- "html": "/media/lektura/napoj-cienisty-we-snie.html",
- "html_size": 1401,
- "id": 1647,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Wesele",
- "html": "/media/lektura/wesele.html",
- "html_size": 627349,
- "id": 734,
- "tags": [
- 152,
- 1484,
- 128,
- 1485
- ]
- },
- {
- "title": "Westchnienie",
- "html": "/media/lektura/nuta-czlowiecza-westchnienie.html",
- "html_size": 2393,
- "id": 1703,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "W\u0119drowcy",
- "html": "/media/lektura/wedrowcy_1.html",
- "html_size": 2666,
- "id": 2094,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 287,
- "title": "Wiatr halny",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 7386,
- "html": "/media/lektura/z-wichrow-i-hal-z-tatr-wiatr-halny__.html",
- "parent_number": 2,
- "id": 769
- },
- {
- "title": "Widmo",
- "html": "/media/lektura/kwiaty-zla-widmo.html",
- "html_size": 10070,
- "id": 1912,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1798,
- "title": "Widok g\u00f3r ze step\u00f3w Koz\u0142owa",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 6132,
- "html": "/media/lektura/sonety-krymskie-widok-gor-ze-stepow-kozlowa_______.html",
- "parent_number": 5,
- "id": 1785
- },
- {
- "title": "Widok ze \u015bwinicy do Doliny Wierchcichej",
- "html": "/media/lektura/widok-ze-swinicy-do-doliny-wierchcichej_1.html",
- "html_size": 3833,
- "id": 2095,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 1875,
- "title": "Widzenie",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 8139,
- "html": "/media/lektura/widzenie.html",
- "parent_number": 11,
- "id": 1873
- },
- {
- "parent": 2230,
- "title": "Widzenie si\u0119 w gaju",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2336,
- "html": "/media/lektura/widzenie-sie-w-gaju_1.html",
- "parent_number": 27,
- "id": 2203
- },
- {
- "title": "Wieczorem",
- "html": "/media/lektura/dzien-jak-co-dzien-wieczorem.html",
- "html_size": 3011,
- "id": 1546,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Wiecz\u00f3r",
- "html": "/media/lektura/napoj-cienisty-wieczor.html",
- "html_size": 3403,
- "id": 1648,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Wiedza",
- "html": "/media/lektura/napoj-cienisty-wiedza.html",
- "html_size": 2145,
- "id": 1649,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Wielcy\u015bmy byli i \u015bmieszni\u015bmy byli...",
- "html": "/media/lektura/wielcysmy-byli-i-smiesznismy-byli.html",
- "html_size": 2559,
- "id": 1981,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Wierna rzeka",
- "html": "/media/lektura/wierna-rzeka_1.html",
- "html_size": 386387,
- "id": 1041,
- "tags": [
- 31,
- 128,
- 242,
- 293
- ]
- },
- {
- "title": "Wiersz ksi\u0119\u017cycowy",
- "html": "/media/lektura/napoj-cienisty-wiersz-ksiezycowy.html",
- "html_size": 2835,
- "id": 1650,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Wiersz ten ci \u015bwi\u0119c\u0119...",
- "html": "/media/lektura/kwiaty-zla-wiersz-ten-ci-swiece.html",
- "html_size": 3607,
- "id": 1913,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Wierzba i lipa",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1217,
- "html": "/media/lektura/wierzba-i-lipa-bajki-nowe_.html",
- "parent_number": 64,
- "id": 1286
- },
- {
- "title": "Wierz\u0119...",
- "html": "/media/lektura/wierze.html",
- "html_size": 4497,
- "id": 1982,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Wiesz, Panie, i\u017cem zbiega\u0142 \u015bwiat szeroki...",
- "html": "/media/lektura/wiesz-panie-izem-zbiegal-swiat-szeroki.html",
- "html_size": 12361,
- "id": 1983,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Wi\u0119zienie",
- "html": "/media/lektura/ballada-z-tamtej-strony-wiezienie.html",
- "html_size": 3050,
- "id": 1668,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Wigilia",
- "html": "/media/lektura/nuta-czlowiecza-wigilia.html",
- "html_size": 3013,
- "id": 1700,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Wilczek",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3293,
- "html": "/media/lektura/wilczek-bajki-nowe_.html",
- "parent_number": 65,
- "id": 1315
- },
- {
- "parent": 1333,
- "title": "Wilczki",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3430,
- "html": "/media/lektura/wilczki-bajki-nowe_.html",
- "parent_number": 66,
- "id": 1289
- },
- {
- "parent": 1333,
- "title": "Wilk i baran",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1895,
- "html": "/media/lektura/wilk-i-baran-bajki-nowe_.html",
- "parent_number": 67,
- "id": 1324
- },
- {
- "title": "Wilk i cz\u0142owiek",
- "html": "/media/lektura/wilk-i-czowiek.html",
- "html_size": 5850,
- "id": 2182,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "parent": 1237,
- "title": "Wilk i owce",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2442,
- "html": "/media/lektura/wilk-i-owce_.html",
- "parent_number": 105,
- "id": 1134
- },
- {
- "parent": 1237,
- "title": "Wilk i owce II",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 4124,
- "html": "/media/lektura/wilk-i-owce-ii_.html",
- "parent_number": 106,
- "id": 1148
- },
- {
- "parent": 1237,
- "title": "Wilk pokutuj\u0105cy",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2524,
- "html": "/media/lektura/wilk-pokutujacy_.html",
- "parent_number": 107,
- "id": 1125
- },
- {
- "title": "William Wilson",
- "html": "/media/lektura/william-wilson.html",
- "html_size": 72294,
- "id": 1708,
- "tags": [
- 31,
- 1517,
- 4365,
- 24
- ]
- },
- {
- "title": "Wino ga\u0142ganiarza",
- "html": "/media/lektura/kwiaty-zla-wino-galganiarza.html",
- "html_size": 4787,
- "id": 1888,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Wino i woda",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 873,
- "html": "/media/lektura/wino-i-woda_.html",
- "parent_number": 108,
- "id": 1209
- },
- {
- "title": "Wino samotnika",
- "html": "/media/lektura/kwiaty-zla-wino-samotnika.html",
- "html_size": 2802,
- "id": 1914,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Wino szampa\u0144skie",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2269,
- "html": "/media/lektura/wino-szampanskie-bajki-nowe_.html",
- "parent_number": 68,
- "id": 1275
- },
- {
- "parent": 1383,
- "title": "Wiosna",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 1357,
- "html": "/media/lektura/but-w-butonierce-wiosna.html",
- "parent_number": 15,
- "id": 1380
- },
- {
- "title": "Wiosna",
- "html": "/media/lektura/napoj-cienisty-wiosna.html",
- "html_size": 5486,
- "id": 1651,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "W\u0142\u00f3cz\u0119gi",
- "html": "/media/lektura/woczegi.html",
- "html_size": 8802,
- "id": 2183,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "Wodotrysk",
- "html": "/media/lektura/kwiaty-zla-wodotrysk.html",
- "html_size": 5042,
- "id": 1915,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Wo\u0142y krn\u0105brne",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 868,
- "html": "/media/lektura/woly-krnabrne_.html",
- "parent_number": 109,
- "id": 1231
- },
- {
- "parent": 1333,
- "title": "Worki",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3025,
- "html": "/media/lektura/worki-bajki-nowe_.html",
- "parent_number": 69,
- "id": 1247
- },
- {
- "parent": 1237,
- "title": "W\u00f3\u0142 i mr\u00f3wki",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1459,
- "html": "/media/lektura/wol-i-mrowki_.html",
- "parent_number": 110,
- "id": 1202
- },
- {
- "parent": 1237,
- "title": "W\u00f3\u0142 minister",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1743,
- "html": "/media/lektura/wol-minister_.html",
- "parent_number": 111,
- "id": 1175
- },
- {
- "parent": 1333,
- "title": "W\u00f3z z sianem",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2087,
- "html": "/media/lektura/woz-z-sianem-bajki-nowe_.html",
- "parent_number": 70,
- "id": 1313
- },
- {
- "parent": 1333,
- "title": "Wrobel",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1939,
- "html": "/media/lektura/wrobel-bajki-nowe_.html",
- "parent_number": 71,
- "id": 1278
- },
- {
- "title": "Wspomnienie",
- "html": "/media/lektura/napoj-cienisty-wspomnienie.html",
- "html_size": 5802,
- "id": 1744,
- "tags": [
- 337,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Wspomnienie pani de St. Marcel z domu Chauveaux",
- "html": "/media/lektura/wspomnienie-pani-de-st-marcel-z-domu-chauveaux.html",
- "html_size": 8573,
- "id": 1984,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "parent": 295,
- "title": "Wst\u0119p",
- "tags": [
- 31,
- 126,
- 128,
- 127
- ],
- "html_size": 5448,
- "html": "/media/lektura/legendy-warszawskie-wstep_______.html",
- "parent_number": 0,
- "id": 81
- },
- {
- "parent": 1234,
- "title": "Wst\u0119p do bajek",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1894,
- "html": "/media/lektura/wstep-do-bajek.html",
- "parent_number": 2,
- "id": 1245
- },
- {
- "title": "Wst\u0119p do bajek i przypowie\u015bci",
- "id": 1234,
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ]
- },
- {
- "title": "Wszechmocny B\u00f3g",
- "html": "/media/lektura/wszechmocny-bog_1.html",
- "html_size": 2211,
- "id": 2096,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Wszechwiedz\u0105cy dokt\u00f3r",
- "html": "/media/lektura/wszechwiedzacy-doktor.html",
- "html_size": 9254,
- "id": 2184,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "title": "Wszystko na swoim miejscu",
- "html": "/media/lektura/wszystko-na-swoim-miejscu.html",
- "html_size": 23118,
- "id": 1066,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "W\u015br\u00f3d nocnej ciszy",
- "html": "/media/lektura/wsrod-nocnej-ciszy_1.html",
- "html_size": 3375,
- "id": 2040,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "title": "Wyjdzie stu robotnik\u00f3w",
- "html": "/media/lektura/wyjdzie-stu-robotnikow.html",
- "html_size": 2817,
- "id": 1072,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Wykrzyknik",
- "html": "/media/lektura/wykrzyknik.html",
- "html_size": 13720,
- "id": 874,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "parent": 1333,
- "title": "Wyrok",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 831,
- "html": "/media/lektura/wyrok-bajki-nowe_.html",
- "parent_number": 72,
- "id": 1255
- },
- {
- "parent": 1237,
- "title": "Wyszydzaj\u0105cy",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1694,
- "html": "/media/lektura/wyszydzajacy_.html",
- "parent_number": 112,
- "id": 1158
- },
- {
- "title": "Wyznanie",
- "html": "/media/lektura/kwiaty-zla-wyznanie_2.html",
- "html_size": 5961,
- "id": 1916,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1333,
- "title": "Wy\u017ce\u0142 i brytan",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3145,
- "html": "/media/lektura/wyzel-i-brytan-bajki-nowe_.html",
- "parent_number": 73,
- "id": 1287
- },
- {
- "parent": 1333,
- "title": "Wy\u017ce\u0142 i brytan II",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3961,
- "html": "/media/lektura/wyzel-i-brytan-ii-bajki-nowe_.html",
- "parent_number": 74,
- "id": 1257
- },
- {
- "parent": 294,
- "title": "Wzi\u0119to\u015b\u0107",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 19416,
- "html": "/media/lektura/satyry-czesc-druga-wzietosc_______.html",
- "parent_number": 3,
- "id": 34
- },
- {
- "title": "Wzlot",
- "html": "/media/lektura/kwiaty-zla-wzlot_1.html",
- "html_size": 3210,
- "id": 1917,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 754,
- "title": "X (T\u0119skni\u0119 ku tobie, o szumi\u0105cy lesie...)",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 8276,
- "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-x-tesknie-ku-tobie-o-szumiacy-lesie_.html",
- "parent_number": 9,
- "id": 752
- },
- {
- "parent": 754,
- "title": "XI (B\u00f3lu szemrz\u0105cy zdr\u00f3j...)",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 2486,
- "html": "/media/lektura/w-ciemnosci-schodzi-moja-dusza-xi-bolu-szemrzacy-zdroj_.html",
- "parent_number": 10,
- "id": 753
- },
- {
- "id": 773,
- "title": "Z Alp",
- "parent_number": 0,
- "parent": 301,
- "tags": [
- 339,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 708,
- "title": "Z Anakreonta (Ci\u0119\u017cko, kto nie mi\u0142uje, ci\u0119\u017cko, kto mi\u0142uje...)",
- "tags": [
- 320,
- 3,
- 1,
- 4
- ],
- "html_size": 1237,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-z-anakreonta-ciezko-kto-nie-miluje-c_____.html",
- "parent_number": 96,
- "id": 609
- },
- {
- "parent": 708,
- "title": "Z Anakreonta (Ja chc\u0119 \u015bpiewa\u0107 krwawe boje...)",
- "tags": [
- 320,
- 3,
- 1,
- 4
- ],
- "html_size": 3465,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-z-anakreonta-ja-chce-spiewac-krwawe-_____.html",
- "parent_number": 97,
- "id": 587
- },
- {
- "parent": 708,
- "title": "Z Anakreonta (Kiedy by worek bogatego z\u0142ota...)",
- "tags": [
- 320,
- 3,
- 1,
- 4
- ],
- "html_size": 1512,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-z-anakreonta-kiedy-by-worek-bogatego_____.html",
- "parent_number": 98,
- "id": 509
- },
- {
- "parent": 710,
- "title": "Z Anakreonta (Nie dba\u0142em nigdy o z\u0142oto...)",
- "tags": [
- 320,
- 3,
- 1,
- 4
- ],
- "html_size": 1335,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-z-anakreonta-nie-dbalem-nigdy-o-zloto____.html",
- "parent_number": 83,
- "id": 437
- },
- {
- "parent": 711,
- "title": "Z Anakreonta (Podg\u00f3rski \u017arz\u00f3bku, czemu, patrz\u0105c krzywo...)",
- "tags": [
- 320,
- 3,
- 1,
- 4
- ],
- "html_size": 1472,
- "html": "/media/lektura/fraszki-ksiegi-wtore-z-anakreonta-podgorski-zrzobku-czemu-pa____.html",
- "parent_number": 100,
- "id": 606
- },
- {
- "parent": 708,
- "title": "Z Anakreonta (Pr\u00f3\u017cno si\u0119 mam odejmowa\u0107...)",
- "tags": [
- 320,
- 3,
- 1,
- 4
- ],
- "html_size": 5313,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-z-anakreonta-prozno-sie-mam-odejmowa_____.html",
- "parent_number": 99,
- "id": 693
- },
- {
- "parent": 710,
- "title": "Z Anakreonta (Skoro w r\u0119k\u0119 wezm\u0119 czasz\u0119...)",
- "tags": [
- 320,
- 3,
- 1,
- 4
- ],
- "html_size": 1234,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-z-anakreonta-skoro-w-reke-wezme-czasz____.html",
- "parent_number": 84,
- "id": 569
- },
- {
- "parent": 1625,
- "title": "Z autora niewiadomego",
- "tags": [
- 1903,
- 1889,
- 1,
- 34
- ],
- "html_size": 716,
- "html": "/media/lektura/tlumaczenia-z-autora-niewiadomego.html",
- "parent_number": 1,
- "id": 1621
- },
- {
- "parent": 1625,
- "title": "Z ballady",
- "tags": [
- 1903,
- 1889,
- 1,
- 34
- ],
- "html_size": 679,
- "html": "/media/lektura/tlumaczenia-z-ballady.html",
- "parent_number": 3,
- "id": 1622
- },
- {
- "parent": 711,
- "title": "Z greckiego (Alkon patrz\u0105c na syna, kiedy go smok srogi...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1629,
- "html": "/media/lektura/fraszki-ksiegi-wtore-z-greckiego-alkon-patrzac-na-syna-kiedy____.html",
- "parent_number": 101,
- "id": 568
- },
- {
- "parent": 711,
- "title": "Z greckiego (Ani w m\u0142odej rozkoszy, ani w starej widz\u0119...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 692,
- "html": "/media/lektura/fraszki-ksiegi-wtore-z-greckiego-ani-w-mlodej-rozkoszy-ani-w____.html",
- "parent_number": 102,
- "id": 652
- },
- {
- "parent": 711,
- "title": "Z greckiego (By si\u0119 wszytka nawalno\u015b\u0107 morska poruszy\u0142a...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 894,
- "html": "/media/lektura/fraszki-ksiegi-wtore-z-greckiego-by-sie-wszytka-nawalnosc-mo____.html",
- "parent_number": 103,
- "id": 651
- },
- {
- "parent": 711,
- "title": "Z greckiego (Nie s\u0105d\u017a mi\u0119 za umar\u0142\u0105, go\u015bciu m\u00f3j mi\u0142y...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1950,
- "html": "/media/lektura/fraszki-ksiegi-wtore-z-greckiego-nie-sadz-mie-za-umarla-gosc____.html",
- "parent_number": 104,
- "id": 705
- },
- {
- "parent": 711,
- "title": "Z greckiego (Nie z Messany, nie z Argu tu, zapa\u015bnik, stoj\u0119...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1188,
- "html": "/media/lektura/fraszki-ksiegi-wtore-z-greckiego-nie-z-messany-nie-z-argu-tu____.html",
- "parent_number": 105,
- "id": 446
- },
- {
- "parent": 711,
- "title": "Z greckiego (Nie znam si\u0119 ku tym \u0142upom: kto li to, szalony...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1834,
- "html": "/media/lektura/fraszki-ksiegi-wtore-z-greckiego-nie-znam-sie-ku-tym-lupom-k____.html",
- "parent_number": 106,
- "id": 593
- },
- {
- "parent": 710,
- "title": "Z greckiego (Samy do swej obory wo\u0142y rozpuszczone...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 793,
- "html": "/media/lektura/fraszki-ksiegi-trzecie-z-greckiego-samy-do-swej-obory-woly-r____.html",
- "parent_number": 85,
- "id": 701
- },
- {
- "parent": 711,
- "title": "Z greckiego (W tym grobie pi\u0119kna Timas le\u017cy pogrzebiona...)",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 1006,
- "html": "/media/lektura/fraszki-ksiegi-wtore-z-greckiego-w-tym-grobie-piekna-timas-l____.html",
- "parent_number": 107,
- "id": 433
- },
- {
- "title": "Z jednego gniazda",
- "html": "/media/lektura/z-jednego-gniazda.html",
- "html_size": 10024,
- "id": 1067,
- "tags": [
- 313,
- 312,
- 31,
- 24
- ]
- },
- {
- "title": "Z legend dawnego Egiptu",
- "html": "/media/lektura/z-legend-dawnego-egiptu.html",
- "html_size": 25915,
- "id": 962,
- "tags": [
- 31,
- 54,
- 56,
- 1462
- ]
- },
- {
- "title": "Z listu do ksi\u0119garza",
- "html": "/media/lektura/z-listu-do-ksiegarza.html",
- "html_size": 4602,
- "id": 1985,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Z Narodzenia Pana...",
- "html": "/media/lektura/z-narodzenia-pana_1.html",
- "html_size": 4917,
- "id": 2041,
- "tags": [
- 5148,
- 1,
- 5152,
- 2
- ]
- },
- {
- "parent": 1625,
- "title": "Z niewiadomego",
- "tags": [
- 1903,
- 1889,
- 1,
- 34
- ],
- "html_size": 729,
- "html": "/media/lektura/tlumaczenia-z-niewiadomego.html",
- "parent_number": 0,
- "id": 1623
- },
- {
- "parent": 2230,
- "title": "Z Petrarki",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2686,
- "html": "/media/lektura/z-petrarki_1.html",
- "parent_number": 28,
- "id": 2202
- },
- {
- "id": 287,
- "title": "Z Tatr",
- "parent_number": 1,
- "parent": 301,
- "tags": [
- 339,
- 1,
- 128,
- 121
- ]
- },
- {
- "parent": 1625,
- "title": "Z Teognidesa",
- "tags": [
- 1903,
- 1889,
- 1,
- 34
- ],
- "html_size": 703,
- "html": "/media/lektura/tlumaczenia-z-teognidesa.html",
- "parent_number": 2,
- "id": 1624
- },
- {
- "title": "Z wichr\u00f3w i hal",
- "id": 301,
- "tags": [
- 339,
- 1,
- 128,
- 121
- ]
- },
- {
- "title": "Za chlebem",
- "html": "/media/lektura/za-chlebem.html",
- "html_size": 5371,
- "id": 2102,
- "tags": [
- 5271,
- 1,
- 2,
- 24
- ]
- },
- {
- "title": "Za Niemen hen precz",
- "html": "/media/lektura/za-niemen-hen-precz.html",
- "html_size": 5189,
- "id": 2103,
- "tags": [
- 5273,
- 1,
- 2,
- 24
- ]
- },
- {
- "parent": 708,
- "title": "Za pijanicami",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 826,
- "html": "/media/lektura/fraszki-ksiegi-pierwsze-za-pijanicami_____.html",
- "parent_number": 100,
- "id": 304
- },
- {
- "title": "Zachwycenie",
- "html": "/media/lektura/zachwycenie.html",
- "html_size": 4314,
- "id": 1986,
- "tags": [
- 1,
- 24,
- 189,
- 121
- ]
- },
- {
- "title": "Zaczarowana kr\u00f3lewna",
- "html": "/media/lektura/zaczarowana-krolewna________.html",
- "html_size": 1948,
- "id": 191,
- "tags": [
- 329,
- 1,
- 56,
- 121
- ]
- },
- {
- "title": "Zagadkowa natura",
- "html": "/media/lektura/zagadkowa-natura.html",
- "html_size": 6333,
- "id": 876,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "Zag\u0142ada domu Usher\u00f3w",
- "html": "/media/lektura/zaglada-domu-usherow_1.html",
- "html_size": 63488,
- "id": 1920,
- "tags": [
- 31,
- 1517,
- 4365,
- 24
- ]
- },
- {
- "title": "Zaj\u0105c i je\u017c",
- "html": "/media/lektura/zajac-i-jez.html",
- "html_size": 12897,
- "id": 2185,
- "tags": [
- 312,
- 31,
- 5395,
- 24
- ]
- },
- {
- "parent": 1333,
- "title": "Zaj\u0105czek",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2627,
- "html": "/media/lektura/zajaczek-bajki-nowe_.html",
- "parent_number": 76,
- "id": 1723
- },
- {
- "title": "Zapach egzotyczny",
- "html": "/media/lektura/kwiaty-zla-zapach-egzotyczny.html",
- "html_size": 2910,
- "id": 1889,
- "tags": [
- 4373,
- 1,
- 24,
- 22
- ]
- },
- {
- "title": "Zapowied\u017a",
- "html": "/media/lektura/dzien-jak-co-dzien-zapowiedz.html",
- "html_size": 1891,
- "id": 1547,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "title": "Zaproszenie do podr\u00f3\u017cy",
- "html": "/media/lektura/kwiaty-zla-zaproszenie-do-podrozy.html",
- "html_size": 5392,
- "id": 1890,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Zau\u0142ek",
- "html": "/media/lektura/dzien-jak-co-dzien-zaulek.html",
- "html_size": 3979,
- "id": 1548,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 295,
- "title": "Zb\u00f3jcy",
- "tags": [
- 31,
- 126,
- 128,
- 127
- ],
- "html_size": 8867,
- "html": "/media/lektura/legendy-warszawskie-zbojcy_______.html",
- "parent_number": 5,
- "id": 282
- },
- {
- "title": "Zbrodnie",
- "html": "/media/lektura/zbrodnie_1.html",
- "html_size": 2377,
- "id": 2097,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Zbroja Zawiszy",
- "html": "/media/lektura/zbroja-zawiszy_1.html",
- "html_size": 12518,
- "id": 2098,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "title": "Zdrada",
- "html": "/media/lektura/ballada-z-tamtej-strony-zdrada.html",
- "html_size": 3734,
- "id": 1670,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 773,
- "title": "Ze szczytu Eggishornu",
- "tags": [
- 339,
- 1,
- 128,
- 121
- ],
- "html_size": 10781,
- "html": "/media/lektura/z-wichrow-i-hal-z-alp-ze-szczytu-eggishornu__.html",
- "parent_number": 4,
- "id": 764
- },
- {
- "title": "Zemsta",
- "html": "/media/lektura/zemsta__________.html",
- "html_size": 361067,
- "id": 1390,
- "tags": [
- 152,
- 397,
- 153,
- 24
- ]
- },
- {
- "title": "Zemsta",
- "html": "/media/lektura/czechow-zemsta.html",
- "html_size": 11372,
- "id": 879,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "parent": 1333,
- "title": "Ziemia i potok",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2591,
- "html": "/media/lektura/ziemia-i-potok-bajki-nowe_.html",
- "parent_number": 77,
- "id": 1272
- },
- {
- "parent": 1846,
- "title": "Ziemia rodzinna",
- "tags": [
- 4650,
- 1,
- 128,
- 121
- ],
- "html_size": 2175,
- "html": "/media/lektura/katechizm-polskiego-dziecka-ziemia-rodzinna_.html",
- "parent_number": 7,
- "id": 1845
- },
- {
- "parent": 2230,
- "title": "Zima miejska",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 22115,
- "html": "/media/lektura/zima-miejska.html",
- "parent_number": 29,
- "id": 2199
- },
- {
- "title": "Z\u0142oczy\u0144ca",
- "html": "/media/lektura/zloczynca.html",
- "html_size": 12858,
- "id": 878,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "parent": 289,
- "title": "Z\u0142o\u015b\u0107 ukryta i jawna",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 33009,
- "html": "/media/lektura/satyry-czesc-pierwsza-zlosc-ukryta-i-jawna_______.html",
- "parent_number": 3,
- "id": 1720
- },
- {
- "parent": 295,
- "title": "Z\u0142ota kaczka",
- "tags": [
- 31,
- 126,
- 128,
- 127
- ],
- "html_size": 23211,
- "html": "/media/lektura/zlota-kaczka.html",
- "parent_number": 7,
- "id": 271
- },
- {
- "title": "Z\u0142y mnich",
- "html": "/media/lektura/kwiaty-zla-zly-mnich.html",
- "html_size": 2095,
- "id": 1891,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Zmora",
- "html": "/media/lektura/kwiaty-zla-zmora.html",
- "html_size": 2316,
- "id": 1892,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Zmrok poranny",
- "html": "/media/lektura/kwiaty-zla-zmrok-poranny.html",
- "html_size": 4624,
- "id": 1893,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "title": "Zmrok wieczorny",
- "html": "/media/lektura/kwiaty-zla-zmrok-wieczorny.html",
- "html_size": 6045,
- "id": 1894,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1237,
- "title": "Zwier\u015bciad\u0142o podchlebne",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 2019,
- "html": "/media/lektura/zwiersciadlo-podchlebne_.html",
- "parent_number": 113,
- "id": 1141
- },
- {
- "parent": 1237,
- "title": "Zwierz\u0119ta i nied\u017awied\u017a",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1528,
- "html": "/media/lektura/zwierzeta-i-niedzwiedz_.html",
- "parent_number": 114,
- "id": 1179
- },
- {
- "parent": 709,
- "title": "\u0179le dopija\u0107 si\u0119 przyjaciela",
- "tags": [
- 11,
- 3,
- 1,
- 4
- ],
- "html_size": 2291,
- "html": "/media/lektura/fraszki-fraszki-dodane-zle-dopijac-sie-przyjaciela____.html",
- "parent_number": 5,
- "id": 466
- },
- {
- "parent": 1237,
- "title": "\u0179rebiec i ko\u0144 stary",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 3216,
- "html": "/media/lektura/zrebiec-i-kon-stary_.html",
- "parent_number": 116,
- "id": 1160
- },
- {
- "parent": 1333,
- "title": "\u017baby i bocian",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 4572,
- "html": "/media/lektura/zaby-i-bocian-bajki-nowe_.html",
- "parent_number": 78,
- "id": 1269
- },
- {
- "title": "\u017bal",
- "html": "/media/lektura/nuta-czlowiecza-zal.html",
- "html_size": 3989,
- "id": 1701,
- "tags": [
- 3140,
- 338,
- 1,
- 121
- ]
- },
- {
- "parent": 1875,
- "title": "\u017bal rozrzutnika",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 2489,
- "html": "/media/lektura/zal-rozrzutnika.html",
- "parent_number": 12,
- "id": 1874
- },
- {
- "title": "\u017barcik",
- "html": "/media/lektura/zarcik.html",
- "html_size": 12360,
- "id": 877,
- "tags": [
- 1518,
- 31,
- 1517,
- 56
- ]
- },
- {
- "title": "\u017b\u0105dza nicestwa",
- "html": "/media/lektura/kwiaty-zla-zadza-nicestwa.html",
- "html_size": 3180,
- "id": 1918,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 2230,
- "title": "\u017beglarz",
- "tags": [
- 1,
- 23,
- 24,
- 121
- ],
- "html_size": 10877,
- "html": "/media/lektura/zeglarz.html",
- "parent_number": 30,
- "id": 2200
- },
- {
- "parent": 1798,
- "title": "\u017begluga",
- "tags": [
- 1,
- 23,
- 24,
- 22
- ],
- "html_size": 1874,
- "html": "/media/lektura/sonety-krymskie-zegluga_______.html",
- "parent_number": 3,
- "id": 1783
- },
- {
- "title": "\u017bmija",
- "html": "/media/lektura/zmija.html",
- "html_size": 170661,
- "id": 1680,
- "tags": [
- 1,
- 1756,
- 24,
- 189
- ]
- },
- {
- "parent": 289,
- "title": "\u017bona modna",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 35334,
- "html": "/media/lektura/satyry-czesc-pierwsza-zona-modna_______.html",
- "parent_number": 8,
- "id": 8
- },
- {
- "parent": 1237,
- "title": "\u017b\u00f3\u0142w i mysz",
- "tags": [
- 1888,
- 31,
- 33,
- 34
- ],
- "html_size": 1516,
- "html": "/media/lektura/zolw-i-mysz_.html",
- "parent_number": 115,
- "id": 1171
- },
- {
- "title": "\u017bycie",
- "html": "/media/lektura/zycie_1.html",
- "html_size": 6274,
- "id": 2099,
- "tags": [
- 1,
- 128,
- 5220,
- 121
- ]
- },
- {
- "parent": 289,
- "title": "\u017bycie dworskie",
- "tags": [
- 31,
- 33,
- 34,
- 32
- ],
- "html_size": 21685,
- "html": "/media/lektura/satyry-czesc-pierwsza-zycie-dworskie_______.html",
- "parent_number": 9,
- "id": 114
- },
- {
- "title": "\u017bycie poprzednie",
- "html": "/media/lektura/kwiaty-zla-zycie-poprzednie.html",
- "html_size": 1954,
- "id": 1895,
- "tags": [
- 4373,
- 1,
- 24,
- 121
- ]
- },
- {
- "parent": 1383,
- "title": "\u017bygaj\u0105ce pos\u0105gi",
- "tags": [
- 338,
- 1606,
- 1,
- 336
- ],
- "html_size": 7041,
- "html": "/media/lektura/but-w-butonierce-zygajace-posagi_.html",
- "parent_number": 2,
- "id": 1381
- }
- ],
- "tags": [
- {
- "category": "genre",
- "sort_key": "aforyzm",
- "id": 1903,
- "name": "Aforyzm"
- },
- {
- "category": "theme",
- "sort_key": "aktor",
- "id": 5032,
- "name": "Aktor"
- },
- {
- "category": "theme",
- "sort_key": "alkohol",
- "id": 19,
- "name": "Alkohol"
- },
- {
- "category": "theme",
- "sort_key": "ambicja",
- "id": 2643,
- "name": "Ambicja"
- },
- {
- "category": "genre",
- "sort_key": "anakreontyk",
- "id": 320,
- "name": "Anakreontyk"
- },
- {
- "category": "author",
- "sort_key": "anczyc",
- "id": 5268,
- "name": "W\u0142adys\u0142aw Anczyc"
- },
- {
- "category": "author",
- "sort_key": "andersen",
- "id": 313,
- "name": "Hans Christian Andersen"
- },
- {
- "category": "theme",
- "sort_key": "anio\u0142",
- "id": 285,
- "name": "Anio\u0142"
- },
- {
- "category": "theme",
- "sort_key": "antysemityzm",
- "id": 420,
- "name": "Antysemityzm"
- },
- {
- "category": "theme",
- "sort_key": "apokalipsa",
- "id": 5090,
- "name": "Apokalipsa"
- },
- {
- "category": "theme",
- "sort_key": "arkadia",
- "id": 1487,
- "name": "Arkadia"
- },
- {
- "category": "author",
- "sort_key": "arthur conan doyle",
- "id": 5650,
- "name": " Arthur Conan Doyle"
- },
- {
- "category": "theme",
- "sort_key": "artysta",
- "id": 258,
- "name": "Artysta"
- },
- {
- "category": "author",
- "sort_key": "asnyk",
- "id": 329,
- "name": "Adam Asnyk"
- },
- {
- "category": "author",
- "sort_key": "autor nieznany",
- "id": 5148,
- "name": "Autor nieznany"
- },
- {
- "category": "genre",
- "sort_key": "bajka",
- "id": 1888,
- "name": "Bajka"
- },
- {
- "category": "genre",
- "sort_key": "ballada",
- "id": 210,
- "name": "Ballada"
- },
- {
- "category": "author",
- "sort_key": "balzac",
- "id": 1812,
- "name": "Honor\u00e9 de Balzac"
- },
- {
- "category": "author",
- "sort_key": "ba\u0142ucki",
- "id": 5271,
- "name": "Micha\u0142 Ba\u0142ucki"
- },
- {
- "category": "epoch",
- "sort_key": "barok",
- "id": 123,
- "name": "Barok"
- },
- {
- "category": "genre",
- "sort_key": "ba\u015b\u0144",
- "id": 312,
- "name": "Ba\u015b\u0144"
- },
- {
- "category": "author",
- "sort_key": "baudelaire",
- "id": 4373,
- "name": "Charles Baudelaire"
- },
- {
- "category": "author",
- "sort_key": "be\u0142za",
- "id": 4650,
- "name": "W\u0142adys\u0142aw Be\u0142za"
- },
- {
- "category": "theme",
- "sort_key": "bezdomno\u015b\u0107",
- "id": 283,
- "name": "Bezdomno\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "bezpiecze\u0144stwo",
- "id": 282,
- "name": "Bezpiecze\u0144stwo"
- },
- {
- "category": "theme",
- "sort_key": "bezsilno\u015b\u0107",
- "id": 178,
- "name": "Bezsilno\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "bieda",
- "id": 59,
- "name": "Bieda"
- },
- {
- "category": "author",
- "sort_key": "biedrzycki",
- "id": 2137,
- "name": "Mi\u0142osz Biedrzycki"
- },
- {
- "category": "author",
- "sort_key": "bielowski",
- "id": 5273,
- "name": "August Bielowski"
- },
- {
- "category": "theme",
- "sort_key": "bijatyka",
- "id": 103,
- "name": "Bijatyka"
- },
- {
- "category": "theme",
- "sort_key": "bitwa",
- "id": 4986,
- "name": "Bitwa"
- },
- {
- "category": "theme",
- "sort_key": "blizna",
- "id": 5583,
- "name": "Blizna"
- },
- {
- "category": "theme",
- "sort_key": "b\u0142azen",
- "id": 115,
- "name": "B\u0142azen"
- },
- {
- "category": "theme",
- "sort_key": "b\u0142\u0105dzenie",
- "id": 391,
- "name": "B\u0142\u0105dzenie"
- },
- {
- "category": "theme",
- "sort_key": "b\u0142ogos\u0142awie\u0144stwo",
- "id": 5031,
- "name": "B\u0142ogos\u0142awie\u0144stwo"
- },
- {
- "category": "theme",
- "sort_key": "b\u0142oto",
- "id": 294,
- "name": "B\u0142oto"
- },
- {
- "category": "theme",
- "sort_key": "bogactwo",
- "id": 95,
- "name": "Bogactwo"
- },
- {
- "category": "theme",
- "sort_key": "bogini",
- "id": 4433,
- "name": "Bogini"
- },
- {
- "category": "theme",
- "sort_key": "bohater",
- "id": 4987,
- "name": "Bohater"
- },
- {
- "category": "theme",
- "sort_key": "bohaterstwo",
- "id": 4615,
- "name": "Bohaterstwo"
- },
- {
- "category": "theme",
- "sort_key": "b\u00f3g",
- "id": 142,
- "name": "B\u00f3g"
- },
- {
- "category": "theme",
- "sort_key": "b\u00f3l",
- "id": 5730,
- "name": "B\u00f3l"
- },
- {
- "category": "theme",
- "sort_key": "brat",
- "id": 73,
- "name": "Brat"
- },
- {
- "category": "theme",
- "sort_key": "bro\u0144",
- "id": 4556,
- "name": "Bro\u0144"
- },
- {
- "category": "theme",
- "sort_key": "brud",
- "id": 5339,
- "name": "Brud"
- },
- {
- "category": "theme",
- "sort_key": "bunt",
- "id": 166,
- "name": "Bunt"
- },
- {
- "category": "theme",
- "sort_key": "buntownik",
- "id": 363,
- "name": "Buntownik"
- },
- {
- "category": "theme",
- "sort_key": "burza",
- "id": 147,
- "name": "Burza"
- },
- {
- "category": "author",
- "sort_key": "byron",
- "id": 1757,
- "name": "George Gordon Byron"
- },
- {
- "category": "theme",
- "sort_key": "car",
- "id": 393,
- "name": "Car"
- },
- {
- "category": "theme",
- "sort_key": "carpe diem",
- "id": 353,
- "name": "Carpe Diem"
- },
- {
- "category": "theme",
- "sort_key": "chciwo\u015b\u0107",
- "id": 260,
- "name": "Chciwo\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "chleb",
- "id": 303,
- "name": "Chleb"
- },
- {
- "category": "theme",
- "sort_key": "ch\u0142op",
- "id": 247,
- "name": "Ch\u0142op"
- },
- {
- "category": "theme",
- "sort_key": "choroba",
- "id": 69,
- "name": "Choroba"
- },
- {
- "category": "theme",
- "sort_key": "chrystus",
- "id": 79,
- "name": "Chrystus"
- },
- {
- "category": "theme",
- "sort_key": "chrzest",
- "id": 426,
- "name": "Chrzest"
- },
- {
- "category": "theme",
- "sort_key": "cia\u0142o",
- "id": 196,
- "name": "Cia\u0142o"
- },
- {
- "category": "theme",
- "sort_key": "ciemno\u015b\u0107",
- "id": 1320,
- "name": "Ciemno\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "cie\u0144",
- "id": 396,
- "name": "Cie\u0144"
- },
- {
- "category": "theme",
- "sort_key": "cierpienie",
- "id": 83,
- "name": "Cierpienie"
- },
- {
- "category": "theme",
- "sort_key": "cisza",
- "id": 199,
- "name": "Cisza"
- },
- {
- "category": "theme",
- "sort_key": "cmentarz",
- "id": 773,
- "name": "Cmentarz"
- },
- {
- "category": "theme",
- "sort_key": "cnota",
- "id": 134,
- "name": "Cnota"
- },
- {
- "category": "author",
- "sort_key": "conrad",
- "id": 4613,
- "name": "Joseph Conrad"
- },
- {
- "category": "theme",
- "sort_key": "c\u00f3rka",
- "id": 156,
- "name": "C\u00f3rka"
- },
- {
- "category": "theme",
- "sort_key": "cud",
- "id": 1327,
- "name": "Cud"
- },
- {
- "category": "theme",
- "sort_key": "czarownica",
- "id": 270,
- "name": "Czarownica"
- },
- {
- "category": "theme",
- "sort_key": "czary",
- "id": 272,
- "name": "Czary"
- },
- {
- "category": "theme",
- "sort_key": "czas",
- "id": 29,
- "name": "Czas"
- },
- {
- "category": "author",
- "sort_key": "czechow",
- "id": 1518,
- "name": "Anton Czechow"
- },
- {
- "category": "author",
- "sort_key": "czechowicz",
- "id": 3140,
- "name": "J\u00f3zef Czechowicz"
- },
- {
- "category": "theme",
- "sort_key": "cz\u0142owiek",
- "id": 5187,
- "name": "Cz\u0142owiek"
- },
- {
- "category": "theme",
- "sort_key": "czyn",
- "id": 354,
- "name": "Czyn"
- },
- {
- "category": "theme",
- "sort_key": "czy\u015bciec",
- "id": 370,
- "name": "Czy\u015bciec"
- },
- {
- "category": "theme",
- "sort_key": "dama",
- "id": 323,
- "name": "Dama"
- },
- {
- "category": "theme",
- "sort_key": "danse macabre",
- "id": 388,
- "name": "Danse macabre"
- },
- {
- "category": "theme",
- "sort_key": "dar",
- "id": 5151,
- "name": "Dar"
- },
- {
- "category": "genre",
- "sort_key": "dedykacja",
- "id": 1991,
- "name": "Dedykacja"
- },
- {
- "category": "author",
- "sort_key": "defoe",
- "id": 2340,
- "name": "Daniel Defoe"
- },
- {
- "category": "theme",
- "sort_key": "dekadent",
- "id": 3112,
- "name": "Dekadent"
- },
- {
- "category": "author",
- "sort_key": "delavigne",
- "id": 5276,
- "name": "Casimir Delavigne"
- },
- {
- "category": "theme",
- "sort_key": "deszcz",
- "id": 276,
- "name": "Deszcz"
- },
- {
- "category": "theme",
- "sort_key": "diabe\u0142",
- "id": 371,
- "name": "Diabe\u0142"
- },
- {
- "category": "genre",
- "sort_key": "dialog",
- "id": 5923,
- "name": "Dialog"
- },
- {
- "category": "theme",
- "sort_key": "dobro",
- "id": 1329,
- "name": "Dobro"
- },
- {
- "category": "theme",
- "sort_key": "dojrza\u0142o\u015b\u0107",
- "id": 5725,
- "name": "Dojrza\u0142o\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "dom",
- "id": 10,
- "name": "Dom"
- },
- {
- "category": "author",
- "sort_key": "doma\u0144ska",
- "id": 4926,
- "name": "Antonina Doma\u0144ska"
- },
- {
- "category": "theme",
- "sort_key": "doros\u0142o\u015b\u0107",
- "id": 167,
- "name": "Doros\u0142o\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "doskona\u0142o\u015b\u0107",
- "id": 5728,
- "name": "Doskona\u0142o\u015b\u0107"
- },
- {
- "category": "kind",
- "sort_key": "dramat",
- "id": 152,
- "name": "Dramat"
- },
- {
- "category": "genre",
- "sort_key": "dramat niesceniczny",
- "id": 1562,
- "name": "Dramat niesceniczny"
- },
- {
- "category": "genre",
- "sort_key": "dramat poetycki",
- "id": 1484,
- "name": "Dramat poetycki"
- },
- {
- "category": "genre",
- "sort_key": "dramat romantyczny",
- "id": 372,
- "name": "Dramat romantyczny"
- },
- {
- "category": "genre",
- "sort_key": "dramat szekspirowski",
- "id": 4293,
- "name": "Dramat szekspirowski"
- },
- {
- "category": "genre",
- "sort_key": "dramat wsp\u00f3\u0142czesny",
- "id": 3170,
- "name": "Dramat wsp\u00f3\u0142czesny"
- },
- {
- "category": "theme",
- "sort_key": "droga",
- "id": 4511,
- "name": "Droga"
- },
- {
- "category": "theme",
- "sort_key": "drwina",
- "id": 5404,
- "name": "Drwina"
- },
- {
- "category": "theme",
- "sort_key": "drzewo",
- "id": 111,
- "name": "Drzewo"
- },
- {
- "category": "theme",
- "sort_key": "duch",
- "id": 58,
- "name": "Duch"
- },
- {
- "category": "theme",
- "sort_key": "duma",
- "id": 435,
- "name": "Duma"
- },
- {
- "category": "theme",
- "sort_key": "dusza",
- "id": 195,
- "name": "Dusza"
- },
- {
- "category": "theme",
- "sort_key": "dworek",
- "id": 304,
- "name": "Dworek"
- },
- {
- "category": "theme",
- "sort_key": "dworzanin",
- "id": 292,
- "name": "Dworzanin"
- },
- {
- "category": "theme",
- "sort_key": "dw\u00f3r",
- "id": 250,
- "name": "Dw\u00f3r"
- },
- {
- "category": "epoch",
- "sort_key": "dwudziestolecie mi\u0119dzywojenne",
- "id": 338,
- "name": "Dwudziestolecie mi\u0119dzywojenne"
- },
- {
- "category": "theme",
- "sort_key": "dzieci\u0144stwo",
- "id": 306,
- "name": "Dzieci\u0144stwo"
- },
- {
- "category": "theme",
- "sort_key": "dziecko",
- "id": 62,
- "name": "Dziecko"
- },
- {
- "category": "theme",
- "sort_key": "dziedzictwo",
- "id": 172,
- "name": "Dziedzictwo"
- },
- {
- "category": "theme",
- "sort_key": "dziewictwo",
- "id": 159,
- "name": "Dziewictwo"
- },
- {
- "category": "theme",
- "sort_key": "dziki",
- "id": 4908,
- "name": "Dziki"
- },
- {
- "category": "theme",
- "sort_key": "d\u017awi\u0119k",
- "id": 1319,
- "name": "D\u017awi\u0119k"
- },
- {
- "category": "theme",
- "sort_key": "egzorcyzm",
- "id": 1743,
- "name": "Egzorcyzm"
- },
- {
- "category": "theme",
- "sort_key": "emigrant",
- "id": 305,
- "name": "Emigrant"
- },
- {
- "category": "genre",
- "sort_key": "epigramat",
- "id": 234,
- "name": "Epigramat"
- },
- {
- "category": "kind",
- "sort_key": "epika",
- "id": 31,
- "name": "Epika"
- },
- {
- "category": "genre",
- "sort_key": "epopeja",
- "id": 4982,
- "name": "Epopeja"
- },
- {
- "category": "genre",
- "sort_key": "erotyk",
- "id": 1564,
- "name": "Erotyk"
- },
- {
- "category": "theme",
- "sort_key": "erotyzm",
- "id": 5234,
- "name": "Erotyzm"
- },
- {
- "category": "theme",
- "sort_key": "fa\u0142sz",
- "id": 215,
- "name": "Fa\u0142sz"
- },
- {
- "category": "author",
- "sort_key": "feli\u0144ski",
- "id": 5279,
- "name": "Alojzy Feli\u0144ski"
- },
- {
- "category": "theme",
- "sort_key": "filozof",
- "id": 118,
- "name": "Filozof"
- },
- {
- "category": "theme",
- "sort_key": "fircyk",
- "id": 132,
- "name": "Fircyk"
- },
- {
- "category": "theme",
- "sort_key": "flirt",
- "id": 342,
- "name": "Flirt"
- },
- {
- "category": "theme",
- "sort_key": "forma",
- "id": 4482,
- "name": "Forma"
- },
- {
- "category": "genre",
- "sort_key": "fraszka",
- "id": 11,
- "name": "Fraszka"
- },
- {
- "category": "author",
- "sort_key": "fredro",
- "id": 397,
- "name": "Aleksander Fredro"
- },
- {
- "category": "theme",
- "sort_key": "g\u0142\u00f3d",
- "id": 78,
- "name": "G\u0142\u00f3d"
- },
- {
- "category": "theme",
- "sort_key": "g\u0142upiec",
- "id": 109,
- "name": "G\u0142upiec"
- },
- {
- "category": "theme",
- "sort_key": "g\u0142upota",
- "id": 108,
- "name": "G\u0142upota"
- },
- {
- "category": "theme",
- "sort_key": "gniew",
- "id": 1988,
- "name": "Gniew"
- },
- {
- "category": "author",
- "sort_key": "goethe",
- "id": 384,
- "name": "Johann Wolfgang von Goethe"
- },
- {
- "category": "theme",
- "sort_key": "gorycz",
- "id": 398,
- "name": "Gorycz"
- },
- {
- "category": "theme",
- "sort_key": "gospodarz",
- "id": 266,
- "name": "Gospodarz"
- },
- {
- "category": "theme",
- "sort_key": "gospodyni",
- "id": 265,
- "name": "Gospodyni"
- },
- {
- "category": "theme",
- "sort_key": "go\u015b\u0107",
- "id": 236,
- "name": "Go\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "gotycyzm",
- "id": 230,
- "name": "Gotycyzm"
- },
- {
- "category": "theme",
- "sort_key": "g\u00f3ra",
- "id": 341,
- "name": "G\u00f3ra"
- },
- {
- "category": "theme",
- "sort_key": "g\u00f3ry",
- "id": 4655,
- "name": "G\u00f3ry"
- },
- {
- "category": "theme",
- "sort_key": "gra",
- "id": 2629,
- "name": "Gra"
- },
- {
- "category": "author",
- "sort_key": "grimm",
- "id": 5395,
- "name": "Jacob i Wilhelm Grimm"
- },
- {
- "category": "theme",
- "sort_key": "gro\u017aba",
- "id": 5411,
- "name": "Gro\u017aba"
- },
- {
- "category": "theme",
- "sort_key": "gr\u00f3b",
- "id": 72,
- "name": "Gr\u00f3b"
- },
- {
- "category": "theme",
- "sort_key": "grzech",
- "id": 161,
- "name": "Grzech"
- },
- {
- "category": "theme",
- "sort_key": "grzeczno\u015b\u0107",
- "id": 130,
- "name": "Grzeczno\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "gwiazda",
- "id": 377,
- "name": "Gwiazda"
- },
- {
- "category": "theme",
- "sort_key": "handel",
- "id": 67,
- "name": "Handel"
- },
- {
- "category": "theme",
- "sort_key": "ha\u0144ba",
- "id": 3111,
- "name": "Ha\u0144ba"
- },
- {
- "category": "theme",
- "sort_key": "historia",
- "id": 182,
- "name": "Historia"
- },
- {
- "category": "theme",
- "sort_key": "honor",
- "id": 421,
- "name": "Honor"
- },
- {
- "category": "genre",
- "sort_key": "hymn",
- "id": 332,
- "name": "Hymn"
- },
- {
- "category": "theme",
- "sort_key": "idealista",
- "id": 297,
- "name": "Idealista"
- },
- {
- "category": "theme",
- "sort_key": "imi\u0119",
- "id": 4438,
- "name": "Imi\u0119"
- },
- {
- "category": "theme",
- "sort_key": "interes",
- "id": 436,
- "name": "Interes"
- },
- {
- "category": "theme",
- "sort_key": "ironia",
- "id": 387,
- "name": "Ironia"
- },
- {
- "category": "theme",
- "sort_key": "jab\u0142ka",
- "id": 5316,
- "name": "Jab\u0142ka"
- },
- {
- "category": "theme",
- "sort_key": "jab\u0142ko",
- "id": 378,
- "name": "Jab\u0142ko"
- },
- {
- "category": "author",
- "sort_key": "jasie\u0144ski",
- "id": 1606,
- "name": "Bruno Jasie\u0144ski"
- },
- {
- "category": "theme",
- "sort_key": "jedzenie",
- "id": 49,
- "name": "Jedzenie"
- },
- {
- "category": "theme",
- "sort_key": "jesie\u0144",
- "id": 257,
- "name": "Jesie\u0144"
- },
- {
- "category": "theme",
- "sort_key": "j\u0119zyk",
- "id": 4358,
- "name": "J\u0119zyk"
- },
- {
- "category": "theme",
- "sort_key": "kaleka",
- "id": 267,
- "name": "Kaleka"
- },
- {
- "category": "theme",
- "sort_key": "kara",
- "id": 202,
- "name": "Kara"
- },
- {
- "category": "theme",
- "sort_key": "karczma",
- "id": 245,
- "name": "Karczma"
- },
- {
- "category": "author",
- "sort_key": "karol baudelaire",
- "id": 5358,
- "name": " Karol Baudelaire"
- },
- {
- "category": "author",
- "sort_key": "karpi\u0144ski",
- "id": 1889,
- "name": "Franciszek Karpi\u0144ski"
- },
- {
- "category": "author",
- "sort_key": "kasprowicz",
- "id": 339,
- "name": "Jan Kasprowicz"
- },
- {
- "category": "theme",
- "sort_key": "katasrofa",
- "id": 4832,
- "name": "Katasrofa"
- },
- {
- "category": "theme",
- "sort_key": "katastrofa",
- "id": 4544,
- "name": "Katastrofa"
- },
- {
- "category": "author",
- "sort_key": "kipling",
- "id": 2304,
- "name": "Rudyard Kipling"
- },
- {
- "category": "theme",
- "sort_key": "klejnot",
- "id": 4878,
- "name": "Klejnot"
- },
- {
- "category": "theme",
- "sort_key": "kl\u0119ska",
- "id": 150,
- "name": "Kl\u0119ska"
- },
- {
- "category": "theme",
- "sort_key": "k\u0142amstwo",
- "id": 131,
- "name": "K\u0142amstwo"
- },
- {
- "category": "theme",
- "sort_key": "k\u0142\u00f3tnia",
- "id": 80,
- "name": "K\u0142\u00f3tnia"
- },
- {
- "category": "theme",
- "sort_key": "kobieta",
- "id": 8,
- "name": "Kobieta"
- },
- {
- "category": "theme",
- "sort_key": "kobieta \"upad\u0142a\"",
- "id": 381,
- "name": "Kobieta \"upad\u0142a\""
- },
- {
- "category": "theme",
- "sort_key": "kobieta demoniczna",
- "id": 374,
- "name": "Kobieta demoniczna"
- },
- {
- "category": "theme",
- "sort_key": "kochanek",
- "id": 20,
- "name": "Kochanek"
- },
- {
- "category": "theme",
- "sort_key": "kochanek romantyczny",
- "id": 369,
- "name": "Kochanek romantyczny"
- },
- {
- "category": "author",
- "sort_key": "kochanowski",
- "id": 3,
- "name": "Jan Kochanowski"
- },
- {
- "category": "theme",
- "sort_key": "kolonializm",
- "id": 4215,
- "name": "Kolonializm"
- },
- {
- "category": "genre",
- "sort_key": "komedia",
- "id": 153,
- "name": "Komedia"
- },
- {
- "category": "theme",
- "sort_key": "kondycja ludzka",
- "id": 12,
- "name": "Kondycja ludzka"
- },
- {
- "category": "theme",
- "sort_key": "konflikt",
- "id": 216,
- "name": "Konflikt"
- },
- {
- "category": "theme",
- "sort_key": "konflikt pokole\u0144",
- "id": 4844,
- "name": "Konflikt pokole\u0144"
- },
- {
- "category": "theme",
- "sort_key": "konflikt wewn\u0119trzny",
- "id": 300,
- "name": "Konflikt wewn\u0119trzny"
- },
- {
- "category": "theme",
- "sort_key": "koniec \u015bwiata",
- "id": 104,
- "name": "Koniec \u015bwiata"
- },
- {
- "category": "author",
- "sort_key": "konopnicka",
- "id": 55,
- "name": "Maria Konopnicka"
- },
- {
- "category": "theme",
- "sort_key": "ko\u0144",
- "id": 57,
- "name": "Ko\u0144"
- },
- {
- "category": "theme",
- "sort_key": "korzy\u015b\u0107",
- "id": 44,
- "name": "Korzy\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "kot",
- "id": 168,
- "name": "Kot"
- },
- {
- "category": "author",
- "sort_key": "kowalski",
- "id": 5282,
- "name": "Franciszek Kowalski"
- },
- {
- "category": "theme",
- "sort_key": "kradzie\u017c",
- "id": 774,
- "name": "Kradzie\u017c"
- },
- {
- "category": "author",
- "sort_key": "krasicki",
- "id": 33,
- "name": "Ignacy Krasicki"
- },
- {
- "category": "author",
- "sort_key": "krasi\u0144ski",
- "id": 373,
- "name": "Zygmunt Krasi\u0144ski"
- },
- {
- "category": "theme",
- "sort_key": "krew",
- "id": 366,
- "name": "Krew"
- },
- {
- "category": "theme",
- "sort_key": "kr\u00f3l",
- "id": 368,
- "name": "Kr\u00f3l"
- },
- {
- "category": "theme",
- "sort_key": "krzyk",
- "id": 5735,
- "name": "Krzyk"
- },
- {
- "category": "theme",
- "sort_key": "krzywda",
- "id": 434,
- "name": "Krzywda"
- },
- {
- "category": "theme",
- "sort_key": "ksi\u0105dz",
- "id": 97,
- "name": "Ksi\u0105dz"
- },
- {
- "category": "theme",
- "sort_key": "ksi\u0105\u017cka",
- "id": 125,
- "name": "Ksi\u0105\u017cka"
- },
- {
- "category": "theme",
- "sort_key": "ksi\u0119\u017cyc",
- "id": 269,
- "name": "Ksi\u0119\u017cyc"
- },
- {
- "category": "theme",
- "sort_key": "kuchnia",
- "id": 2392,
- "name": "Kuchnia"
- },
- {
- "category": "theme",
- "sort_key": "kuszenie",
- "id": 163,
- "name": "Kuszenie"
- },
- {
- "category": "theme",
- "sort_key": "kwiat",
- "id": 376,
- "name": "Kwiat"
- },
- {
- "category": "theme",
- "sort_key": "kwiaty",
- "id": 211,
- "name": "Kwiaty"
- },
- {
- "category": "theme",
- "sort_key": "las",
- "id": 1521,
- "name": "Las"
- },
- {
- "category": "theme",
- "sort_key": "lato",
- "id": 5,
- "name": "Lato"
- },
- {
- "category": "genre",
- "sort_key": "legenda",
- "id": 126,
- "name": "Legenda"
- },
- {
- "category": "theme",
- "sort_key": "lek",
- "id": 4891,
- "name": "Lek"
- },
- {
- "category": "theme",
- "sort_key": "lekarz",
- "id": 90,
- "name": "Lekarz"
- },
- {
- "category": "author",
- "sort_key": "lenartowicz",
- "id": 5177,
- "name": "Teofil Lenartowicz"
- },
- {
- "category": "theme",
- "sort_key": "lenistwo",
- "id": 1326,
- "name": "Lenistwo"
- },
- {
- "category": "author",
- "sort_key": "le\u015bmian",
- "id": 337,
- "name": "Boles\u0142aw Le\u015bmian"
- },
- {
- "category": "kind",
- "sort_key": "liryka",
- "id": 1,
- "name": "Liryka"
- },
- {
- "category": "theme",
- "sort_key": "list",
- "id": 321,
- "name": "List"
- },
- {
- "category": "theme",
- "sort_key": "literat",
- "id": 346,
- "name": "Literat"
- },
- {
- "category": "theme",
- "sort_key": "los",
- "id": 187,
- "name": "Los"
- },
- {
- "category": "theme",
- "sort_key": "lot",
- "id": 4822,
- "name": "Lot"
- },
- {
- "category": "theme",
- "sort_key": "lud",
- "id": 357,
- "name": "Lud"
- },
- {
- "category": "theme",
- "sort_key": "lustro",
- "id": 327,
- "name": "Lustro"
- },
- {
- "category": "theme",
- "sort_key": "\u0142za",
- "id": 5441,
- "name": "\u0141za"
- },
- {
- "category": "theme",
- "sort_key": "\u0142zy",
- "id": 64,
- "name": "\u0141zy"
- },
- {
- "category": "theme",
- "sort_key": "ma\u0142pa",
- "id": 4883,
- "name": "Ma\u0142pa"
- },
- {
- "category": "theme",
- "sort_key": "ma\u0142\u017ce\u0144stwo",
- "id": 37,
- "name": "Ma\u0142\u017ce\u0144stwo"
- },
- {
- "category": "theme",
- "sort_key": "marzenie",
- "id": 105,
- "name": "Marzenie"
- },
- {
- "category": "theme",
- "sort_key": "maska",
- "id": 41,
- "name": "Maska"
- },
- {
- "category": "theme",
- "sort_key": "maszyna",
- "id": 1585,
- "name": "Maszyna"
- },
- {
- "category": "theme",
- "sort_key": "matka",
- "id": 60,
- "name": "Matka"
- },
- {
- "category": "theme",
- "sort_key": "matka boska",
- "id": 335,
- "name": "Matka Boska"
- },
- {
- "category": "theme",
- "sort_key": "m\u0105dro\u015b\u0107",
- "id": 106,
- "name": "M\u0105dro\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "m\u0105\u017c",
- "id": 45,
- "name": "M\u0105\u017c"
- },
- {
- "category": "theme",
- "sort_key": "melancholia",
- "id": 271,
- "name": "Melancholia"
- },
- {
- "category": "theme",
- "sort_key": "m\u0119drzec",
- "id": 107,
- "name": "M\u0119drzec"
- },
- {
- "category": "theme",
- "sort_key": "m\u0119\u017cczyzna",
- "id": 158,
- "name": "M\u0119\u017cczyzna"
- },
- {
- "category": "theme",
- "sort_key": "miasto",
- "id": 40,
- "name": "Miasto"
- },
- {
- "category": "author",
- "sort_key": "mickiewicz",
- "id": 23,
- "name": "Adam Mickiewicz"
- },
- {
- "category": "theme",
- "sort_key": "mieszczanin",
- "id": 92,
- "name": "Mieszczanin"
- },
- {
- "category": "theme",
- "sort_key": "milczenie",
- "id": 4513,
- "name": "Milczenie"
- },
- {
- "category": "theme",
- "sort_key": "mi\u0142osierdzie",
- "id": 351,
- "name": "Mi\u0142osierdzie"
- },
- {
- "category": "theme",
- "sort_key": "mi\u0142o\u015b\u0107",
- "id": 30,
- "name": "Mi\u0142o\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "mi\u0142o\u015b\u0107 niespe\u0142niona",
- "id": 1333,
- "name": "Mi\u0142o\u015b\u0107 niespe\u0142niona"
- },
- {
- "category": "theme",
- "sort_key": "mi\u0142o\u015b\u0107 platoniczna",
- "id": 330,
- "name": "Mi\u0142o\u015b\u0107 platoniczna"
- },
- {
- "category": "theme",
- "sort_key": "mi\u0142o\u015b\u0107 romantyczna",
- "id": 162,
- "name": "Mi\u0142o\u015b\u0107 romantyczna"
- },
- {
- "category": "theme",
- "sort_key": "mi\u0142o\u015b\u0107 silniejsza ni\u017c \u015bmier\u0107",
- "id": 180,
- "name": "Mi\u0142o\u015b\u0107 silniejsza ni\u017c \u015bmier\u0107"
- },
- {
- "category": "theme",
- "sort_key": "mi\u0142o\u015b\u0107 spe\u0142niona",
- "id": 15,
- "name": "Mi\u0142o\u015b\u0107 spe\u0142niona"
- },
- {
- "category": "theme",
- "sort_key": "mi\u0142o\u015b\u0107 tragiczna",
- "id": 21,
- "name": "Mi\u0142o\u015b\u0107 tragiczna"
- },
- {
- "category": "theme",
- "sort_key": "mizoginia",
- "id": 358,
- "name": "Mizoginia"
- },
- {
- "category": "epoch",
- "sort_key": "m\u0142oda polska",
- "id": 3035,
- "name": "M\u0142oda Polska"
- },
- {
- "category": "theme",
- "sort_key": "m\u0142odo\u015b\u0107",
- "id": 112,
- "name": "M\u0142odo\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "moda",
- "id": 1646,
- "name": "Moda"
- },
- {
- "category": "epoch",
- "sort_key": "modernizm",
- "id": 128,
- "name": "Modernizm"
- },
- {
- "category": "theme",
- "sort_key": "modlitwa",
- "id": 74,
- "name": "Modlitwa"
- },
- {
- "category": "author",
- "sort_key": "moli\u00e8re",
- "id": 1324,
- "name": "Moli\u00e8re"
- },
- {
- "category": "theme",
- "sort_key": "morderstwo",
- "id": 217,
- "name": "Morderstwo"
- },
- {
- "category": "author",
- "sort_key": "morsztyn",
- "id": 122,
- "name": "Jan Andrzej Morsztyn"
- },
- {
- "category": "theme",
- "sort_key": "morze",
- "id": 222,
- "name": "Morze"
- },
- {
- "category": "theme",
- "sort_key": "motyl",
- "id": 399,
- "name": "Motyl"
- },
- {
- "category": "theme",
- "sort_key": "mucha",
- "id": 1322,
- "name": "Mucha"
- },
- {
- "category": "theme",
- "sort_key": "muzyka",
- "id": 101,
- "name": "Muzyka"
- },
- {
- "category": "theme",
- "sort_key": "nacjonalizm",
- "id": 4843,
- "name": "Nacjonalizm"
- },
- {
- "category": "theme",
- "sort_key": "nadzieja",
- "id": 4722,
- "name": "Nadzieja"
- },
- {
- "category": "theme",
- "sort_key": "nagroda",
- "id": 4985,
- "name": "Nagroda"
- },
- {
- "category": "theme",
- "sort_key": "narkotyki",
- "id": 4833,
- "name": "Narkotyki"
- },
- {
- "category": "theme",
- "sort_key": "narodziny",
- "id": 315,
- "name": "Narodziny"
- },
- {
- "category": "theme",
- "sort_key": "nar\u00f3d",
- "id": 286,
- "name": "Nar\u00f3d"
- },
- {
- "category": "theme",
- "sort_key": "natura",
- "id": 6,
- "name": "Natura"
- },
- {
- "category": "theme",
- "sort_key": "nauczyciel",
- "id": 116,
- "name": "Nauczyciel"
- },
- {
- "category": "theme",
- "sort_key": "nauczycielka",
- "id": 309,
- "name": "Nauczycielka"
- },
- {
- "category": "theme",
- "sort_key": "nauka",
- "id": 249,
- "name": "Nauka"
- },
- {
- "category": "epoch",
- "sort_key": "nie dotyczy",
- "id": 5152,
- "name": "nie dotyczy"
- },
- {
- "category": "theme",
- "sort_key": "niebezpiecze\u0144stwo",
- "id": 328,
- "name": "Niebezpiecze\u0144stwo"
- },
- {
- "category": "theme",
- "sort_key": "niebo",
- "id": 4452,
- "name": "Niebo"
- },
- {
- "category": "theme",
- "sort_key": "niedoskona\u0142o\u015b\u0107",
- "id": 5736,
- "name": "Niedoskona\u0142o\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "niedziela",
- "id": 280,
- "name": "Niedziela"
- },
- {
- "category": "author",
- "sort_key": "niemcewicz",
- "id": 4997,
- "name": "Julian Ursyn Niemcewicz"
- },
- {
- "category": "theme",
- "sort_key": "niemiec",
- "id": 308,
- "name": "Niemiec"
- },
- {
- "category": "theme",
- "sort_key": "nienawi\u015b\u0107",
- "id": 1321,
- "name": "Nienawi\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "nie\u015bmiertelno\u015b\u0107",
- "id": 201,
- "name": "Nie\u015bmiertelno\u015b\u0107"
- },
- {
- "category": "author",
- "sort_key": "nietzsche",
- "id": 5723,
- "name": "Friedrich Nietzsche"
- },
- {
- "category": "theme",
- "sort_key": "niewola",
- "id": 193,
- "name": "Niewola"
- },
- {
- "category": "theme",
- "sort_key": "niewolnik",
- "id": 5729,
- "name": "Niewolnik"
- },
- {
- "category": "theme",
- "sort_key": "noc",
- "id": 89,
- "name": "Noc"
- },
- {
- "category": "author",
- "sort_key": "norwid",
- "id": 2308,
- "name": "Cyprian Kamil Norwid"
- },
- {
- "category": "genre",
- "sort_key": "nowela",
- "id": 54,
- "name": "Nowela"
- },
- {
- "category": "theme",
- "sort_key": "nuda",
- "id": 277,
- "name": "Nuda"
- },
- {
- "category": "theme",
- "sort_key": "obcy",
- "id": 314,
- "name": "Obcy"
- },
- {
- "category": "theme",
- "sort_key": "ob\u0142ok",
- "id": 389,
- "name": "Ob\u0142ok"
- },
- {
- "category": "theme",
- "sort_key": "obowi\u0105zek",
- "id": 70,
- "name": "Obowi\u0105zek"
- },
- {
- "category": "theme",
- "sort_key": "obraz",
- "id": 5546,
- "name": "Obraz"
- },
- {
- "category": "theme",
- "sort_key": "obraz \u015bwiata",
- "id": 17,
- "name": "Obraz \u015bwiata"
- },
- {
- "category": "theme",
- "sort_key": "obrz\u0119dy",
- "id": 248,
- "name": "Obrz\u0119dy"
- },
- {
- "category": "theme",
- "sort_key": "obyczaje",
- "id": 77,
- "name": "Obyczaje"
- },
- {
- "category": "theme",
- "sort_key": "obyczje",
- "id": 5442,
- "name": "Obyczje"
- },
- {
- "category": "theme",
- "sort_key": "obywatel",
- "id": 139,
- "name": "Obywatel"
- },
- {
- "category": "genre",
- "sort_key": "oda",
- "id": 352,
- "name": "Oda"
- },
- {
- "category": "theme",
- "sort_key": "odrodzenie",
- "id": 5278,
- "name": "Odrodzenie"
- },
- {
- "category": "theme",
- "sort_key": "odrodzenie przez gr\u00f3b",
- "id": 1404,
- "name": "Odrodzenie przez gr\u00f3b"
- },
- {
- "category": "theme",
- "sort_key": "odwaga",
- "id": 148,
- "name": "Odwaga"
- },
- {
- "category": "theme",
- "sort_key": "odyseusz",
- "id": 392,
- "name": "Odyseusz"
- },
- {
- "category": "theme",
- "sort_key": "ofiara",
- "id": 322,
- "name": "Ofiara"
- },
- {
- "category": "theme",
- "sort_key": "ogie\u0144",
- "id": 81,
- "name": "Ogie\u0144"
- },
- {
- "category": "theme",
- "sort_key": "ogr\u00f3d",
- "id": 47,
- "name": "Ogr\u00f3d"
- },
- {
- "category": "theme",
- "sort_key": "ojciec",
- "id": 61,
- "name": "Ojciec"
- },
- {
- "category": "theme",
- "sort_key": "ojczyzna",
- "id": 26,
- "name": "Ojczyzna"
- },
- {
- "category": "theme",
- "sort_key": "okno",
- "id": 4831,
- "name": "Okno"
- },
- {
- "category": "theme",
- "sort_key": "oko",
- "id": 318,
- "name": "Oko"
- },
- {
- "category": "theme",
- "sort_key": "okr\u0119t",
- "id": 287,
- "name": "Okr\u0119t"
- },
- {
- "category": "theme",
- "sort_key": "okrucie\u0144stwo",
- "id": 429,
- "name": "Okrucie\u0144stwo"
- },
- {
- "category": "theme",
- "sort_key": "omen",
- "id": 428,
- "name": "Omen"
- },
- {
- "category": "theme",
- "sort_key": "opieka",
- "id": 63,
- "name": "Opieka"
- },
- {
- "category": "genre",
- "sort_key": "opowiadanie",
- "id": 1517,
- "name": "Opowiadanie"
- },
- {
- "category": "author",
- "sort_key": "oppman",
- "id": 127,
- "name": "Artur Oppman"
- },
- {
- "category": "theme",
- "sort_key": "organizm",
- "id": 4558,
- "name": "Organizm"
- },
- {
- "category": "theme",
- "sort_key": "orze\u0142",
- "id": 5295,
- "name": "Orze\u0142"
- },
- {
- "category": "author",
- "sort_key": "orzeszkowa",
- "id": 2294,
- "name": "Eliza Orzeszkowa"
- },
- {
- "category": "theme",
- "sort_key": "o\u015bwiadczyny",
- "id": 3117,
- "name": "O\u015bwiadczyny"
- },
- {
- "category": "epoch",
- "sort_key": "o\u015bwiecenie",
- "id": 34,
- "name": "O\u015bwiecenie"
- },
- {
- "category": "theme",
- "sort_key": "otch\u0142a\u0144",
- "id": 427,
- "name": "Otch\u0142a\u0144"
- },
- {
- "category": "theme",
- "sort_key": "owoc",
- "id": 5733,
- "name": "Owoc"
- },
- {
- "category": "theme",
- "sort_key": "paj\u0105k",
- "id": 1759,
- "name": "Paj\u0105k"
- },
- {
- "category": "theme",
- "sort_key": "pami\u0119\u0107",
- "id": 212,
- "name": "Pami\u0119\u0107"
- },
- {
- "category": "theme",
- "sort_key": "pan",
- "id": 51,
- "name": "Pan"
- },
- {
- "category": "theme",
- "sort_key": "panna m\u0142oda",
- "id": 262,
- "name": "Panna m\u0142oda"
- },
- {
- "category": "theme",
- "sort_key": "pa\u0144stwo",
- "id": 140,
- "name": "Pa\u0144stwo"
- },
- {
- "category": "theme",
- "sort_key": "patriota",
- "id": 288,
- "name": "Patriota"
- },
- {
- "category": "theme",
- "sort_key": "patriotyzm",
- "id": 1742,
- "name": "Patriotyzm"
- },
- {
- "category": "theme",
- "sort_key": "piek\u0142o",
- "id": 1337,
- "name": "Piek\u0142o"
- },
- {
- "category": "theme",
- "sort_key": "pielgrzym",
- "id": 27,
- "name": "Pielgrzym"
- },
- {
- "category": "theme",
- "sort_key": "pieni\u0105dz",
- "id": 66,
- "name": "Pieni\u0105dz"
- },
- {
- "category": "theme",
- "sort_key": "pieni\u0105dze",
- "id": 562,
- "name": "Pieni\u0105dze"
- },
- {
- "category": "theme",
- "sort_key": "pier\u015bcie\u0144",
- "id": 4557,
- "name": "Pier\u015bcie\u0144"
- },
- {
- "category": "theme",
- "sort_key": "pies",
- "id": 124,
- "name": "Pies"
- },
- {
- "category": "genre",
- "sort_key": "pie\u015b\u0144",
- "id": 2,
- "name": "Pie\u015b\u0144"
- },
- {
- "category": "theme",
- "sort_key": "pi\u0119kno",
- "id": 4420,
- "name": "Pi\u0119kno"
- },
- {
- "category": "theme",
- "sort_key": "pi\u0119tno",
- "id": 775,
- "name": "Pi\u0119tno"
- },
- {
- "category": "theme",
- "sort_key": "pija\u0144stwo",
- "id": 16,
- "name": "Pija\u0144stwo"
- },
- {
- "category": "theme",
- "sort_key": "piorun",
- "id": 4984,
- "name": "Piorun"
- },
- {
- "category": "theme",
- "sort_key": "piwnica",
- "id": 1469,
- "name": "Piwnica"
- },
- {
- "category": "author",
- "sort_key": "platon",
- "id": 5922,
- "name": "Platon"
- },
- {
- "category": "theme",
- "sort_key": "plotka",
- "id": 253,
- "name": "Plotka"
- },
- {
- "category": "theme",
- "sort_key": "pobo\u017cno\u015b\u0107",
- "id": 244,
- "name": "Pobo\u017cno\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "poca\u0142unek",
- "id": 281,
- "name": "Poca\u0142unek"
- },
- {
- "category": "theme",
- "sort_key": "pochlebstwo",
- "id": 343,
- "name": "Pochlebstwo"
- },
- {
- "category": "theme",
- "sort_key": "podr\u00f3\u017c",
- "id": 290,
- "name": "Podr\u00f3\u017c"
- },
- {
- "category": "theme",
- "sort_key": "podst\u0119p",
- "id": 135,
- "name": "Podst\u0119p"
- },
- {
- "category": "author",
- "sort_key": "poe",
- "id": 4365,
- "name": "Edgar Allan Poe"
- },
- {
- "category": "genre",
- "sort_key": "poemat",
- "id": 1660,
- "name": "Poemat"
- },
- {
- "category": "genre",
- "sort_key": "poemat dygresyjny",
- "id": 5544,
- "name": "Poemat dygresyjny"
- },
- {
- "category": "genre",
- "sort_key": "poemat heirokomiczny",
- "id": 5314,
- "name": "Poemat heirokomiczny"
- },
- {
- "category": "genre",
- "sort_key": "poemat heroikomiczny",
- "id": 4653,
- "name": "Poemat heroikomiczny"
- },
- {
- "category": "theme",
- "sort_key": "poeta",
- "id": 9,
- "name": "Poeta"
- },
- {
- "category": "theme",
- "sort_key": "poetka",
- "id": 171,
- "name": "Poetka"
- },
- {
- "category": "theme",
- "sort_key": "poezja",
- "id": 291,
- "name": "Poezja"
- },
- {
- "category": "theme",
- "sort_key": "pogarda",
- "id": 2623,
- "name": "Pogarda"
- },
- {
- "category": "theme",
- "sort_key": "pogrzeb",
- "id": 96,
- "name": "Pogrzeb"
- },
- {
- "category": "theme",
- "sort_key": "pojedynek",
- "id": 1264,
- "name": "Pojedynek"
- },
- {
- "category": "theme",
- "sort_key": "pokora",
- "id": 192,
- "name": "Pokora"
- },
- {
- "category": "theme",
- "sort_key": "pok\u00f3j",
- "id": 4888,
- "name": "Pok\u00f3j"
- },
- {
- "category": "theme",
- "sort_key": "pokusa",
- "id": 278,
- "name": "Pokusa"
- },
- {
- "category": "theme",
- "sort_key": "pokuta",
- "id": 4881,
- "name": "Pokuta"
- },
- {
- "category": "author",
- "sort_key": "pol",
- "id": 5290,
- "name": "Wincenty Pol"
- },
- {
- "category": "theme",
- "sort_key": "polak",
- "id": 141,
- "name": "Polak"
- },
- {
- "category": "theme",
- "sort_key": "polityka",
- "id": 424,
- "name": "Polityka"
- },
- {
- "category": "theme",
- "sort_key": "polowanie",
- "id": 316,
- "name": "Polowanie"
- },
- {
- "category": "theme",
- "sort_key": "polska",
- "id": 1744,
- "name": "Polska"
- },
- {
- "category": "author",
- "sort_key": "pomian-\u0142ubi\u0144ski",
- "id": 5287,
- "name": "Ludwik Ksawery Pomian-\u0141ubi\u0144ski"
- },
- {
- "category": "theme",
- "sort_key": "pomoc",
- "id": 4890,
- "name": "Pomoc"
- },
- {
- "category": "theme",
- "sort_key": "por\u00f3d",
- "id": 5732,
- "name": "Por\u00f3d"
- },
- {
- "category": "theme",
- "sort_key": "portret",
- "id": 423,
- "name": "Portret"
- },
- {
- "category": "theme",
- "sort_key": "porwanie",
- "id": 2972,
- "name": "Porwanie"
- },
- {
- "category": "theme",
- "sort_key": "po\u015bwi\u0119cenie",
- "id": 76,
- "name": "Po\u015bwi\u0119cenie"
- },
- {
- "category": "theme",
- "sort_key": "potop",
- "id": 5293,
- "name": "Potop"
- },
- {
- "category": "theme",
- "sort_key": "potw\u00f3r",
- "id": 324,
- "name": "Potw\u00f3r"
- },
- {
- "category": "genre",
- "sort_key": "powie\u015b\u0107",
- "id": 242,
- "name": "Powie\u015b\u0107"
- },
- {
- "category": "genre",
- "sort_key": "powie\u015b\u0107 epistolarna",
- "id": 383,
- "name": "Powie\u015b\u0107 epistolarna"
- },
- {
- "category": "genre",
- "sort_key": "powie\u015b\u0107 poetycka",
- "id": 1756,
- "name": "Powie\u015b\u0107 poetycka"
- },
- {
- "category": "theme",
- "sort_key": "powitanie",
- "id": 5584,
- "name": "Powitanie"
- },
- {
- "category": "theme",
- "sort_key": "powstanie",
- "id": 238,
- "name": "Powstanie"
- },
- {
- "category": "theme",
- "sort_key": "powstaniec",
- "id": 1332,
- "name": "Powstaniec"
- },
- {
- "category": "theme",
- "sort_key": "pozory",
- "id": 117,
- "name": "Pozory"
- },
- {
- "category": "theme",
- "sort_key": "pozycja spo\u0142eczna",
- "id": 137,
- "name": "Pozycja spo\u0142eczna"
- },
- {
- "category": "epoch",
- "sort_key": "pozytywizm",
- "id": 56,
- "name": "Pozytywizm"
- },
- {
- "category": "theme",
- "sort_key": "po\u017car",
- "id": 1644,
- "name": "Po\u017car"
- },
- {
- "category": "theme",
- "sort_key": "po\u017c\u0105danie",
- "id": 252,
- "name": "Po\u017c\u0105danie"
- },
- {
- "category": "theme",
- "sort_key": "po\u017cegnanie",
- "id": 4895,
- "name": "Po\u017cegnanie"
- },
- {
- "category": "theme",
- "sort_key": "praca",
- "id": 94,
- "name": "Praca"
- },
- {
- "category": "theme",
- "sort_key": "praca organiczna",
- "id": 348,
- "name": "Praca organiczna"
- },
- {
- "category": "theme",
- "sort_key": "praca u podstaw",
- "id": 255,
- "name": "Praca u podstaw"
- },
- {
- "category": "theme",
- "sort_key": "prawda",
- "id": 151,
- "name": "Prawda"
- },
- {
- "category": "theme",
- "sort_key": "prawnik",
- "id": 382,
- "name": "Prawnik"
- },
- {
- "category": "theme",
- "sort_key": "prawo",
- "id": 4887,
- "name": "Prawo"
- },
- {
- "category": "theme",
- "sort_key": "prometeusz",
- "id": 197,
- "name": "Prometeusz"
- },
- {
- "category": "theme",
- "sort_key": "proroctwo",
- "id": 422,
- "name": "Proroctwo"
- },
- {
- "category": "theme",
- "sort_key": "prorok",
- "id": 2807,
- "name": "Prorok"
- },
- {
- "category": "theme",
- "sort_key": "pr\u00f3\u017cno\u015b\u0107",
- "id": 200,
- "name": "Pr\u00f3\u017cno\u015b\u0107"
- },
- {
- "category": "author",
- "sort_key": "prus",
- "id": 1462,
- "name": "Boles\u0142aw Prus"
- },
- {
- "category": "theme",
- "sort_key": "przebaczenie",
- "id": 4600,
- "name": "Przebaczenie"
- },
- {
- "category": "theme",
- "sort_key": "przebranie",
- "id": 209,
- "name": "Przebranie"
- },
- {
- "category": "theme",
- "sort_key": "przeczucie",
- "id": 233,
- "name": "Przeczucie"
- },
- {
- "category": "theme",
- "sort_key": "przedmurze chrze\u015bcija\u0144stwa",
- "id": 311,
- "name": "Przedmurze chrze\u015bcija\u0144stwa"
- },
- {
- "category": "theme",
- "sort_key": "przekle\u0144stwo",
- "id": 418,
- "name": "Przekle\u0144stwo"
- },
- {
- "category": "theme",
- "sort_key": "przekupstwo",
- "id": 1331,
- "name": "Przekupstwo"
- },
- {
- "category": "theme",
- "sort_key": "przemiana",
- "id": 42,
- "name": "Przemiana"
- },
- {
- "category": "theme",
- "sort_key": "przemijanie",
- "id": 13,
- "name": "Przemijanie"
- },
- {
- "category": "theme",
- "sort_key": "przemoc",
- "id": 169,
- "name": "Przemoc"
- },
- {
- "category": "author",
- "sort_key": "przerwa-tetmajer",
- "id": 5220,
- "name": "Kazimierz Przerwa-Tetmajer"
- },
- {
- "category": "theme",
- "sort_key": "przes\u0105d",
- "id": 4894,
- "name": "Przes\u0105d"
- },
- {
- "category": "theme",
- "sort_key": "przestrze\u0144",
- "id": 261,
- "name": "Przestrze\u0144"
- },
- {
- "category": "theme",
- "sort_key": "przyjaciel",
- "id": 4635,
- "name": "Przyjaciel"
- },
- {
- "category": "theme",
- "sort_key": "przyja\u017a\u0144",
- "id": 136,
- "name": "Przyja\u017a\u0144"
- },
- {
- "category": "theme",
- "sort_key": "przyjemno\u015b\u0107",
- "id": 5552,
- "name": "Przyjemno\u015b\u0107"
- },
- {
- "category": "genre",
- "sort_key": "przypowie\u015b\u0107",
- "id": 1407,
- "name": "Przypowie\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "przyroda",
- "id": 4509,
- "name": "Przyroda"
- },
- {
- "category": "theme",
- "sort_key": "przyroda nieo\u017cywiona",
- "id": 295,
- "name": "Przyroda nieo\u017cywiona"
- },
- {
- "category": "theme",
- "sort_key": "przysi\u0119ga",
- "id": 386,
- "name": "Przysi\u0119ga"
- },
- {
- "category": "theme",
- "sort_key": "przyw\u00f3dca",
- "id": 203,
- "name": "Przyw\u00f3dca"
- },
- {
- "category": "genre",
- "sort_key": "psalm",
- "id": 1583,
- "name": "Psalm"
- },
- {
- "category": "theme",
- "sort_key": "ptak",
- "id": 173,
- "name": "Ptak"
- },
- {
- "category": "theme",
- "sort_key": "pu\u0142apka",
- "id": 4724,
- "name": "Pu\u0142apka"
- },
- {
- "category": "theme",
- "sort_key": "pustynia",
- "id": 1662,
- "name": "Pustynia"
- },
- {
- "category": "theme",
- "sort_key": "pycha",
- "id": 394,
- "name": "Pycha"
- },
- {
- "category": "theme",
- "sort_key": "rado\u015b\u0107",
- "id": 4882,
- "name": "Rado\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "raj",
- "id": 380,
- "name": "Raj"
- },
- {
- "category": "theme",
- "sort_key": "realista",
- "id": 362,
- "name": "Realista"
- },
- {
- "category": "theme",
- "sort_key": "religia",
- "id": 144,
- "name": "Religia"
- },
- {
- "category": "epoch",
- "sort_key": "renesans",
- "id": 4,
- "name": "Renesans"
- },
- {
- "category": "theme",
- "sort_key": "rewolucja",
- "id": 347,
- "name": "Rewolucja"
- },
- {
- "category": "author",
- "sort_key": "reymont",
- "id": 243,
- "name": "W\u0142adys\u0142aw Stanis\u0142aw Reymont"
- },
- {
- "category": "theme",
- "sort_key": "robak",
- "id": 1323,
- "name": "Robak"
- },
- {
- "category": "theme",
- "sort_key": "robotnik",
- "id": 307,
- "name": "Robotnik"
- },
- {
- "category": "theme",
- "sort_key": "rodzina",
- "id": 85,
- "name": "Rodzina"
- },
- {
- "category": "epoch",
- "sort_key": "romantyzm",
- "id": 24,
- "name": "Romantyzm"
- },
- {
- "category": "theme",
- "sort_key": "rosja",
- "id": 1336,
- "name": "Rosja"
- },
- {
- "category": "theme",
- "sort_key": "rosjanin",
- "id": 360,
- "name": "Rosjanin"
- },
- {
- "category": "theme",
- "sort_key": "ro\u015bliny",
- "id": 231,
- "name": "Ro\u015bliny"
- },
- {
- "category": "theme",
- "sort_key": "rozczarowanie",
- "id": 71,
- "name": "Rozczarowanie"
- },
- {
- "category": "theme",
- "sort_key": "rozkosz",
- "id": 4712,
- "name": "Rozkosz"
- },
- {
- "category": "theme",
- "sort_key": "rozpacz",
- "id": 84,
- "name": "Rozpacz"
- },
- {
- "category": "theme",
- "sort_key": "rozstanie",
- "id": 1318,
- "name": "Rozstanie"
- },
- {
- "category": "theme",
- "sort_key": "rozum",
- "id": 120,
- "name": "Rozum"
- },
- {
- "category": "theme",
- "sort_key": "ruiny",
- "id": 183,
- "name": "Ruiny"
- },
- {
- "category": "theme",
- "sort_key": "rycerz",
- "id": 204,
- "name": "Rycerz"
- },
- {
- "category": "theme",
- "sort_key": "rzeka",
- "id": 87,
- "name": "Rzeka"
- },
- {
- "category": "theme",
- "sort_key": "salon",
- "id": 1642,
- "name": "Salon"
- },
- {
- "category": "theme",
- "sort_key": "samob\u00f3jstwo",
- "id": 179,
- "name": "Samob\u00f3jstwo"
- },
- {
- "category": "theme",
- "sort_key": "samolubstwo",
- "id": 432,
- "name": "Samolubstwo"
- },
- {
- "category": "theme",
- "sort_key": "samotnik",
- "id": 240,
- "name": "Samotnik"
- },
- {
- "category": "theme",
- "sort_key": "samotno\u015b\u0107",
- "id": 289,
- "name": "Samotno\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "sarmata",
- "id": 194,
- "name": "Sarmata"
- },
- {
- "category": "genre",
- "sort_key": "satyra",
- "id": 32,
- "name": "Satyra"
- },
- {
- "category": "theme",
- "sort_key": "s\u0105d",
- "id": 264,
- "name": "S\u0105d"
- },
- {
- "category": "theme",
- "sort_key": "s\u0105d ostateczny",
- "id": 1406,
- "name": "S\u0105d Ostateczny"
- },
- {
- "category": "theme",
- "sort_key": "s\u0105kpiec",
- "id": 1647,
- "name": "S\u0105kpiec"
- },
- {
- "category": "theme",
- "sort_key": "s\u0105siad",
- "id": 82,
- "name": "S\u0105siad"
- },
- {
- "category": "theme",
- "sort_key": "seks",
- "id": 4842,
- "name": "Seks"
- },
- {
- "category": "theme",
- "sort_key": "sen",
- "id": 50,
- "name": "Sen"
- },
- {
- "category": "theme",
- "sort_key": "serce",
- "id": 184,
- "name": "Serce"
- },
- {
- "category": "theme",
- "sort_key": "s\u0119dzia",
- "id": 263,
- "name": "S\u0119dzia"
- },
- {
- "category": "author",
- "sort_key": "s\u0119p szarzy\u0144ski",
- "id": 1565,
- "name": "Miko\u0142aj S\u0119p Szarzy\u0144ski"
- },
- {
- "category": "author",
- "sort_key": "shakespeare",
- "id": 226,
- "name": "William Shakespeare"
- },
- {
- "category": "theme",
- "sort_key": "sielanka",
- "id": 48,
- "name": "Sielanka"
- },
- {
- "category": "author",
- "sort_key": "sienkiewicz",
- "id": 350,
- "name": "Henryk Sienkiewicz"
- },
- {
- "category": "theme",
- "sort_key": "sierota",
- "id": 99,
- "name": "Sierota"
- },
- {
- "category": "theme",
- "sort_key": "si\u0142a",
- "id": 395,
- "name": "Si\u0142a"
- },
- {
- "category": "theme",
- "sort_key": "siostra",
- "id": 155,
- "name": "Siostra"
- },
- {
- "category": "theme",
- "sort_key": "skarb",
- "id": 5419,
- "name": "Skarb"
- },
- {
- "category": "theme",
- "sort_key": "sk\u0105piec",
- "id": 160,
- "name": "Sk\u0105piec"
- },
- {
- "category": "theme",
- "sort_key": "s\u0142awa",
- "id": 110,
- "name": "S\u0142awa"
- },
- {
- "category": "theme",
- "sort_key": "s\u0142o\u0144ce",
- "id": 185,
- "name": "S\u0142o\u0144ce"
- },
- {
- "category": "author",
- "sort_key": "s\u0142owacki",
- "id": 189,
- "name": "Juliusz S\u0142owacki"
- },
- {
- "category": "theme",
- "sort_key": "s\u0142owo",
- "id": 188,
- "name": "S\u0142owo"
- },
- {
- "category": "theme",
- "sort_key": "s\u0142uga",
- "id": 35,
- "name": "S\u0142uga"
- },
- {
- "category": "theme",
- "sort_key": "s\u0142u\u017calczo\u015b\u0107",
- "id": 1342,
- "name": "S\u0142u\u017calczo\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "smutek",
- "id": 301,
- "name": "Smutek"
- },
- {
- "category": "theme",
- "sort_key": "sobowt\u00f3r",
- "id": 349,
- "name": "Sobowt\u00f3r"
- },
- {
- "category": "author",
- "sort_key": "sofokles",
- "id": 176,
- "name": "Sofokles"
- },
- {
- "category": "genre",
- "sort_key": "sonet",
- "id": 22,
- "name": "Sonet"
- },
- {
- "category": "theme",
- "sort_key": "spo\u0142ecznik",
- "id": 296,
- "name": "Spo\u0142ecznik"
- },
- {
- "category": "theme",
- "sort_key": "sport",
- "id": 5213,
- "name": "Sport"
- },
- {
- "category": "theme",
- "sort_key": "spotkanie",
- "id": 4880,
- "name": "Spotkanie"
- },
- {
- "category": "theme",
- "sort_key": "spowied\u017a",
- "id": 3109,
- "name": "Spowied\u017a"
- },
- {
- "category": "theme",
- "sort_key": "sprawiedliwo\u015b\u0107",
- "id": 164,
- "name": "Sprawiedliwo\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "spryt",
- "id": 4897,
- "name": "Spryt"
- },
- {
- "category": "theme",
- "sort_key": "staro\u015b\u0107",
- "id": 113,
- "name": "Staro\u015b\u0107"
- },
- {
- "category": "epoch",
- "sort_key": "staro\u017cytno\u015b\u0107",
- "id": 177,
- "name": "Staro\u017cytno\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "stolica",
- "id": 4896,
- "name": "Stolica"
- },
- {
- "category": "theme",
- "sort_key": "st\u00f3j",
- "id": 5443,
- "name": "St\u00f3j"
- },
- {
- "category": "theme",
- "sort_key": "strach",
- "id": 340,
- "name": "Strach"
- },
- {
- "category": "theme",
- "sort_key": "str\u00f3j",
- "id": 325,
- "name": "Str\u00f3j"
- },
- {
- "category": "theme",
- "sort_key": "stworzenie",
- "id": 223,
- "name": "Stworzenie"
- },
- {
- "category": "author",
- "sort_key": "suchodolski",
- "id": 5297,
- "name": "Rajnold Suchodolski"
- },
- {
- "category": "theme",
- "sort_key": "sumienie",
- "id": 776,
- "name": "Sumienie"
- },
- {
- "category": "theme",
- "sort_key": "swaty",
- "id": 1643,
- "name": "Swaty"
- },
- {
- "category": "theme",
- "sort_key": "syberia",
- "id": 1648,
- "name": "Syberia"
- },
- {
- "category": "theme",
- "sort_key": "syn",
- "id": 146,
- "name": "Syn"
- },
- {
- "category": "theme",
- "sort_key": "syn marnotrawny",
- "id": 256,
- "name": "Syn marnotrawny"
- },
- {
- "category": "theme",
- "sort_key": "syzyf",
- "id": 302,
- "name": "Syzyf"
- },
- {
- "category": "theme",
- "sort_key": "szaleniec",
- "id": 227,
- "name": "Szaleniec"
- },
- {
- "category": "theme",
- "sort_key": "szale\u0144stwo",
- "id": 186,
- "name": "Szale\u0144stwo"
- },
- {
- "category": "theme",
- "sort_key": "szanta\u017c",
- "id": 157,
- "name": "Szanta\u017c"
- },
- {
- "category": "theme",
- "sort_key": "szatan",
- "id": 273,
- "name": "Szatan"
- },
- {
- "category": "theme",
- "sort_key": "szcz\u0119\u015bcie",
- "id": 102,
- "name": "Szcz\u0119\u015bcie"
- },
- {
- "category": "theme",
- "sort_key": "szko\u0142a",
- "id": 268,
- "name": "Szko\u0142a"
- },
- {
- "category": "theme",
- "sort_key": "szlachcic",
- "id": 114,
- "name": "Szlachcic"
- },
- {
- "category": "theme",
- "sort_key": "szpieg",
- "id": 1344,
- "name": "Szpieg"
- },
- {
- "category": "theme",
- "sort_key": "sztuka",
- "id": 220,
- "name": "Sztuka"
- },
- {
- "category": "theme",
- "sort_key": "\u015blub",
- "id": 46,
- "name": "\u015alub"
- },
- {
- "category": "theme",
- "sort_key": "\u015bmiech",
- "id": 68,
- "name": "\u015amiech"
- },
- {
- "category": "theme",
- "sort_key": "\u015bmier\u0107",
- "id": 53,
- "name": "\u015amier\u0107"
- },
- {
- "category": "theme",
- "sort_key": "\u015bmier\u0107 bohaterska",
- "id": 181,
- "name": "\u015amier\u0107 bohaterska"
- },
- {
- "category": "theme",
- "sort_key": "\u015bpiew",
- "id": 174,
- "name": "\u015apiew"
- },
- {
- "category": "epoch",
- "sort_key": "\u015bredniowiecze",
- "id": 334,
- "name": "\u015aredniowiecze"
- },
- {
- "category": "theme",
- "sort_key": "\u015bwiat\u0142o",
- "id": 119,
- "name": "\u015awiat\u0142o"
- },
- {
- "category": "theme",
- "sort_key": "\u015bwi\u0105tynia",
- "id": 4893,
- "name": "\u015awi\u0105tynia"
- },
- {
- "category": "author",
- "sort_key": "\u015bwi\u0119cicki",
- "id": 5300,
- "name": "Wac\u0142aw \u015awi\u0119cicki"
- },
- {
- "category": "theme",
- "sort_key": "\u015bwi\u0119to",
- "id": 4423,
- "name": "\u015awi\u0119to"
- },
- {
- "category": "theme",
- "sort_key": "\u015bwi\u0119tokradztwo",
- "id": 4877,
- "name": "\u015awi\u0119tokradztwo"
- },
- {
- "category": "theme",
- "sort_key": "\u015bwi\u0119toszek",
- "id": 145,
- "name": "\u015awi\u0119toszek"
- },
- {
- "category": "theme",
- "sort_key": "\u015bwi\u0119ty",
- "id": 275,
- "name": "\u015awi\u0119ty"
- },
- {
- "category": "theme",
- "sort_key": "\u015bwit",
- "id": 2288,
- "name": "\u015awit"
- },
- {
- "category": "theme",
- "sort_key": "tajemnica",
- "id": 214,
- "name": "Tajemnica"
- },
- {
- "category": "theme",
- "sort_key": "taniec",
- "id": 259,
- "name": "Taniec"
- },
- {
- "category": "author",
- "sort_key": "tarnowski",
- "id": 5302,
- "name": "W\u0142adys\u0142aw Tarnowski"
- },
- {
- "category": "theme",
- "sort_key": "tch\u00f3rzostwo",
- "id": 425,
- "name": "Tch\u00f3rzostwo"
- },
- {
- "category": "theme",
- "sort_key": "teatr",
- "id": 356,
- "name": "Teatr"
- },
- {
- "category": "theme",
- "sort_key": "testament",
- "id": 1335,
- "name": "Testament"
- },
- {
- "category": "theme",
- "sort_key": "t\u0119sknota",
- "id": 28,
- "name": "T\u0119sknota"
- },
- {
- "category": "theme",
- "sort_key": "theatrum mundi",
- "id": 14,
- "name": "Theatrum mundi"
- },
- {
- "category": "theme",
- "sort_key": "t\u0142um",
- "id": 355,
- "name": "T\u0142um"
- },
- {
- "category": "genre",
- "sort_key": "tragedia",
- "id": 175,
- "name": "Tragedia"
- },
- {
- "category": "genre",
- "sort_key": "tragifarsa",
- "id": 3337,
- "name": "Tragifarsa"
- },
- {
- "category": "genre",
- "sort_key": "tren",
- "id": 52,
- "name": "Tren"
- },
- {
- "category": "theme",
- "sort_key": "trucizna",
- "id": 385,
- "name": "Trucizna"
- },
- {
- "category": "theme",
- "sort_key": "trup",
- "id": 93,
- "name": "Trup"
- },
- {
- "category": "author",
- "sort_key": "twain",
- "id": 5550,
- "name": "Mark Twain"
- },
- {
- "category": "theme",
- "sort_key": "tw\u00f3rczo\u015b\u0107",
- "id": 419,
- "name": "Tw\u00f3rczo\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "ucieczka",
- "id": 4540,
- "name": "Ucieczka"
- },
- {
- "category": "theme",
- "sort_key": "ucze\u0144",
- "id": 344,
- "name": "Ucze\u0144"
- },
- {
- "category": "theme",
- "sort_key": "uczta",
- "id": 359,
- "name": "Uczta"
- },
- {
- "category": "theme",
- "sort_key": "umiarkowanie",
- "id": 224,
- "name": "Umiarkowanie"
- },
- {
- "category": "theme",
- "sort_key": "upadek",
- "id": 138,
- "name": "Upadek"
- },
- {
- "category": "theme",
- "sort_key": "upi\u00f3r",
- "id": 190,
- "name": "Upi\u00f3r"
- },
- {
- "category": "theme",
- "sort_key": "uroda",
- "id": 225,
- "name": "Uroda"
- },
- {
- "category": "theme",
- "sort_key": "urz\u0119dnik",
- "id": 207,
- "name": "Urz\u0119dnik"
- },
- {
- "category": "theme",
- "sort_key": "vanitas",
- "id": 91,
- "name": "Vanitas"
- },
- {
- "category": "theme",
- "sort_key": "walka",
- "id": 149,
- "name": "Walka"
- },
- {
- "category": "theme",
- "sort_key": "walka klas",
- "id": 365,
- "name": "Walka klas"
- },
- {
- "category": "theme",
- "sort_key": "wampir",
- "id": 191,
- "name": "Wampir"
- },
- {
- "category": "theme",
- "sort_key": "warszawa",
- "id": 364,
- "name": "Warszawa"
- },
- {
- "category": "theme",
- "sort_key": "w\u0105\u017c",
- "id": 390,
- "name": "W\u0105\u017c"
- },
- {
- "category": "theme",
- "sort_key": "wdowa",
- "id": 219,
- "name": "Wdowa"
- },
- {
- "category": "theme",
- "sort_key": "wdowiec",
- "id": 100,
- "name": "Wdowiec"
- },
- {
- "category": "theme",
- "sort_key": "wdzi\u0119czno\u015b\u0107",
- "id": 4599,
- "name": "Wdzi\u0119czno\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "wesele",
- "id": 251,
- "name": "Wesele"
- },
- {
- "category": "theme",
- "sort_key": "wiadomo\u015b\u0107",
- "id": 4545,
- "name": "Wiadomo\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "wiara",
- "id": 4360,
- "name": "Wiara"
- },
- {
- "category": "theme",
- "sort_key": "wiatr",
- "id": 298,
- "name": "Wiatr"
- },
- {
- "category": "theme",
- "sort_key": "wieczno\u015b\u0107",
- "id": 5726,
- "name": "Wieczno\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "wiecz\u00f3r",
- "id": 4422,
- "name": "Wiecz\u00f3r"
- },
- {
- "category": "theme",
- "sort_key": "wiedza",
- "id": 310,
- "name": "Wiedza"
- },
- {
- "category": "theme",
- "sort_key": "wierno\u015b\u0107",
- "id": 433,
- "name": "Wierno\u015b\u0107"
- },
- {
- "category": "genre",
- "sort_key": "wiersz",
- "id": 121,
- "name": "Wiersz"
- },
- {
- "category": "genre",
- "sort_key": "wiersz sylabotoniczny",
- "id": 336,
- "name": "Wiersz sylabotoniczny"
- },
- {
- "category": "theme",
- "sort_key": "wierzenia",
- "id": 274,
- "name": "Wierzenia"
- },
- {
- "category": "theme",
- "sort_key": "wie\u015b",
- "id": 7,
- "name": "Wie\u015b"
- },
- {
- "category": "theme",
- "sort_key": "wie\u017ca babel",
- "id": 375,
- "name": "Wie\u017ca Babel"
- },
- {
- "category": "theme",
- "sort_key": "wi\u0119zienie",
- "id": 361,
- "name": "Wi\u0119zienie"
- },
- {
- "category": "theme",
- "sort_key": "wi\u0119zie\u0144",
- "id": 367,
- "name": "Wi\u0119zie\u0144"
- },
- {
- "category": "theme",
- "sort_key": "wina",
- "id": 213,
- "name": "Wina"
- },
- {
- "category": "theme",
- "sort_key": "wino",
- "id": 235,
- "name": "Wino"
- },
- {
- "category": "theme",
- "sort_key": "wiosna",
- "id": 88,
- "name": "Wiosna"
- },
- {
- "category": "author",
- "sort_key": "witkiewicz",
- "id": 3141,
- "name": "Stanis\u0142aw Ignacy Witkiewicz"
- },
- {
- "category": "author",
- "sort_key": "witwicki",
- "id": 5310,
- "name": "Stefan Witwicki"
- },
- {
- "category": "theme",
- "sort_key": "wizja",
- "id": 129,
- "name": "Wizja"
- },
- {
- "category": "theme",
- "sort_key": "w\u0142adza",
- "id": 39,
- "name": "W\u0142adza"
- },
- {
- "category": "theme",
- "sort_key": "w\u0142asno\u015b\u0107",
- "id": 170,
- "name": "W\u0142asno\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "woda",
- "id": 18,
- "name": "Woda"
- },
- {
- "category": "theme",
- "sort_key": "wojna",
- "id": 237,
- "name": "Wojna"
- },
- {
- "category": "theme",
- "sort_key": "wojna pokole\u0144",
- "id": 3110,
- "name": "Wojna pokole\u0144"
- },
- {
- "category": "theme",
- "sort_key": "wolno\u015b\u0107",
- "id": 239,
- "name": "Wolno\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "wr\u00f3g",
- "id": 229,
- "name": "Wr\u00f3g"
- },
- {
- "category": "theme",
- "sort_key": "wspomnienia",
- "id": 25,
- "name": "Wspomnienia"
- },
- {
- "category": "epoch",
- "sort_key": "wsp\u00f3\u0142czesno\u015b\u0107",
- "id": 2138,
- "name": "Wsp\u00f3\u0142czesno\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "wsp\u00f3\u0142czucie",
- "id": 5731,
- "name": "Wsp\u00f3\u0142czucie"
- },
- {
- "category": "theme",
- "sort_key": "wsp\u00f3\u0142praca",
- "id": 2391,
- "name": "Wsp\u00f3\u0142praca"
- },
- {
- "category": "theme",
- "sort_key": "wstyd",
- "id": 4889,
- "name": "Wstyd"
- },
- {
- "category": "author",
- "sort_key": "wybicki",
- "id": 5312,
- "name": "J\u00f3zef Wybicki"
- },
- {
- "category": "theme",
- "sort_key": "wychowanie",
- "id": 5553,
- "name": "Wychowanie"
- },
- {
- "category": "theme",
- "sort_key": "wygnanie",
- "id": 317,
- "name": "Wygnanie"
- },
- {
- "category": "theme",
- "sort_key": "wyrzuty sumienia",
- "id": 75,
- "name": "Wyrzuty sumienia"
- },
- {
- "category": "theme",
- "sort_key": "wyspa",
- "id": 4406,
- "name": "Wyspa"
- },
- {
- "category": "author",
- "sort_key": "wyspia\u0144ski",
- "id": 1485,
- "name": "Stanis\u0142aw Wyspia\u0144ski"
- },
- {
- "category": "theme",
- "sort_key": "wzrok",
- "id": 319,
- "name": "Wzrok"
- },
- {
- "category": "theme",
- "sort_key": "zabawa",
- "id": 38,
- "name": "Zabawa"
- },
- {
- "category": "theme",
- "sort_key": "zabobony",
- "id": 279,
- "name": "Zabobony"
- },
- {
- "category": "theme",
- "sort_key": "zak\u0142ad",
- "id": 5426,
- "name": "Zak\u0142ad"
- },
- {
- "category": "theme",
- "sort_key": "zamek",
- "id": 326,
- "name": "Zamek"
- },
- {
- "category": "theme",
- "sort_key": "zapach",
- "id": 4425,
- "name": "Zapach"
- },
- {
- "category": "author",
- "sort_key": "zapolska",
- "id": 154,
- "name": "Gabriela Zapolska"
- },
- {
- "category": "theme",
- "sort_key": "zar\u0119czyny",
- "id": 772,
- "name": "Zar\u0119czyny"
- },
- {
- "category": "theme",
- "sort_key": "za\u015bwiaty",
- "id": 221,
- "name": "Za\u015bwiaty"
- },
- {
- "category": "theme",
- "sort_key": "zazdro\u015b\u0107",
- "id": 246,
- "name": "Zazdro\u015b\u0107"
- },
- {
- "category": "theme",
- "sort_key": "zbawienie",
- "id": 430,
- "name": "Zbawienie"
- },
- {
- "category": "theme",
- "sort_key": "zbrodnia",
- "id": 165,
- "name": "Zbrodnia"
- },
- {
- "category": "theme",
- "sort_key": "zbrodniarz",
- "id": 218,
- "name": "Zbrodniarz"
- },
- {
- "category": "theme",
- "sort_key": "zdrada",
- "id": 133,
- "name": "Zdrada"
- },
- {
- "category": "theme",
- "sort_key": "zdrowie",
- "id": 284,
- "name": "Zdrowie"
- },
- {
- "category": "theme",
- "sort_key": "zemsta",
- "id": 228,
- "name": "Zemsta"
- },
- {
- "category": "theme",
- "sort_key": "zes\u0142aniec",
- "id": 232,
- "name": "Zes\u0142aniec"
- },
- {
- "category": "theme",
- "sort_key": "ziarno",
- "id": 331,
- "name": "Ziarno"
- },
- {
- "category": "theme",
- "sort_key": "ziemia",
- "id": 254,
- "name": "Ziemia"
- },
- {
- "category": "theme",
- "sort_key": "zima",
- "id": 86,
- "name": "Zima"
- },
- {
- "category": "theme",
- "sort_key": "z\u0142o",
- "id": 1330,
- "name": "Z\u0142o"
- },
- {
- "category": "theme",
- "sort_key": "z\u0142odziej",
- "id": 206,
- "name": "Z\u0142odziej"
- },
- {
- "category": "theme",
- "sort_key": "zmartwychwstanie",
- "id": 431,
- "name": "Zmartwychwstanie"
- },
- {
- "category": "theme",
- "sort_key": "zm\u0119czenie",
- "id": 5727,
- "name": "Zm\u0119czenie"
- },
- {
- "category": "theme",
- "sort_key": "zmys\u0142y",
- "id": 4723,
- "name": "Zmys\u0142y"
- },
- {
- "category": "theme",
- "sort_key": "zw\u0105tpienie",
- "id": 379,
- "name": "Zw\u0105tpienie"
- },
- {
- "category": "theme",
- "sort_key": "zwierz\u0119",
- "id": 5734,
- "name": "Zwierz\u0119"
- },
- {
- "category": "theme",
- "sort_key": "zwierz\u0119ta",
- "id": 43,
- "name": "Zwierz\u0119ta"
- },
- {
- "category": "theme",
- "sort_key": "zwyci\u0119stwo",
- "id": 299,
- "name": "Zwyci\u0119stwo"
- },
- {
- "category": "theme",
- "sort_key": "\u017cal",
- "id": 5237,
- "name": "\u017bal"
- },
- {
- "category": "theme",
- "sort_key": "\u017ca\u0142oba",
- "id": 98,
- "name": "\u017ba\u0142oba"
- },
- {
- "category": "theme",
- "sort_key": "\u017cart",
- "id": 4892,
- "name": "\u017bart"
- },
- {
- "category": "theme",
- "sort_key": "\u017cebrak",
- "id": 208,
- "name": "\u017bebrak"
- },
- {
- "category": "author",
- "sort_key": "\u017ceromski",
- "id": 293,
- "name": "Stefan \u017beromski"
- },
- {
- "category": "theme",
- "sort_key": "\u017co\u0142nierz",
- "id": 205,
- "name": "\u017bo\u0142nierz"
- },
- {
- "category": "theme",
- "sort_key": "\u017cona",
- "id": 36,
- "name": "\u017bona"
- },
- {
- "category": "theme",
- "sort_key": "\u017cycie jako w\u0119dr\u00f3wka",
- "id": 345,
- "name": "\u017bycie jako w\u0119dr\u00f3wka"
- },
- {
- "category": "theme",
- "sort_key": "\u017cycie snem",
- "id": 198,
- "name": "\u017bycie snem"
- },
- {
- "category": "theme",
- "sort_key": "\u017cyd",
- "id": 65,
- "name": "\u017byd"
- },
- {
- "category": "theme",
- "sort_key": "\u017cywio\u0142y",
- "id": 241,
- "name": "\u017bywio\u0142y"
- }
- ]
- }
-}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<plugins>
+ <plugin name="App" value="com.phonegap.App"/>
+ <plugin name="Geolocation" value="com.phonegap.GeoBroker"/>
+ <plugin name="Device" value="com.phonegap.Device"/>
+ <plugin name="Accelerometer" value="com.phonegap.AccelListener"/>
+ <plugin name="Compass" value="com.phonegap.CompassListener"/>
+ <plugin name="Media" value="com.phonegap.AudioHandler"/>
+ <plugin name="Camera" value="com.phonegap.CameraLauncher"/>
+ <plugin name="Contacts" value="com.phonegap.ContactManager"/>
+ <plugin name="Crypto" value="com.phonegap.CryptoHandler"/>
+ <plugin name="File" value="com.phonegap.FileUtils"/>
+ <plugin name="Network Status" value="com.phonegap.NetworkManager"/>
+ <plugin name="Notification" value="com.phonegap.Notification"/>
+ <plugin name="Storage" value="com.phonegap.Storage"/>
+ <plugin name="Temperature" value="com.phonegap.TempListener"/>
+ <plugin name="FileTransfer" value="com.phonegap.FileTransfer"/>
+ <plugin name="Capture" value="com.phonegap.Capture"/>
+
+ <plugin name="Downloader" value="pl.org.nowoczesnapolska.wlmobi.Downloader" />
+ <plugin name="DBPut" value="pl.org.nowoczesnapolska.wlmobi.DBPut" />
+ <plugin name="MenuInterface" value="pl.org.nowoczesnapolska.wlmobi.MenuInterface" />
+</plugins>
\ No newline at end of file
+++ /dev/null
-package pl.org.nowoczesnapolska.wlmobi;
-
-/*
- @author Radek Czajka
- */
-
-import org.json.JSONArray;
-import org.json.JSONException;
-
-import android.util.Log;
-import android.content.res.AssetManager;
-
-import com.phonegap.api.Plugin;
-import com.phonegap.api.PluginResult;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.IOException;
-
-public class AssetCopy extends Plugin{
-
- @Override
- public PluginResult execute(String action, JSONArray args, String callbackId) {
- if (action.equals("copy")) {
- try {
- return this.copy(args.getString(0), args.getString(1), args.getString(2));
- } catch (JSONException e) {
- return new PluginResult(PluginResult.Status.ERROR, "Param errrors");
- }
- }
- else {
- return new PluginResult(PluginResult.Status.INVALID_ACTION);
- }
- }
-
- private PluginResult copy(String assetPath, String targetPath, String overwrite) {
- int index = targetPath.lastIndexOf('/');
- String targetDir = targetPath.substring(0, index);
-
- try {
- File dir = new File(targetDir);
- if(!dir.exists()) {
- Log.d("AssetCopy", "directory " + targetDir + " created");
- dir.mkdirs();
- }
-
- File fout = new File(targetPath);
-
- if(overwrite.equals("false") && fout.exists()) {
- Log.d("AssetCopy", "File already exists");
- return new PluginResult(PluginResult.Status.OK, "exist");
- }
-
- FileOutputStream fos = new FileOutputStream(fout);
-
- AssetManager assetManager = this.ctx.getResources().getAssets();
- InputStream is = assetManager.open(assetPath);
-
- byte[] buffer = new byte[1024];
- int len1 = 0;
-
- while ( (len1 = is.read(buffer)) > 0 ) {
- fos.write(buffer,0, len1);
- }
-
- fos.close();
-
- Log.d("AssetCopy", "Copied to " + targetPath);
- } catch (IOException e) {
- Log.d("AssetCopy", "Error: " + e);
- return new PluginResult(PluginResult.Status.ERROR, "Error: " + e);
- }
- return new PluginResult(PluginResult.Status.OK, targetPath);
- }
-}
\ No newline at end of file
package pl.org.nowoczesnapolska.wlmobi;
import android.os.Bundle;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.webkit.WebSettings;
+
import com.phonegap.*;
public class Catalogue extends DroidGap {
+
+ String infoLabel = "Proszę czekać";
+ Boolean infoEnabled = false;
+
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
super.loadUrl("file:///android_asset/www/index.html");
+
+ WebSettings settings = this.appView.getSettings();
+ settings.setSupportZoom(true);
+ settings.setBuiltInZoomControls(true);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ menu.add(Menu.NONE, 1, 1, "Początek");
+ menu.add(Menu.NONE, 2, 2, MenuInterface.infoLabel);
+ menu.add(Menu.NONE, 3, 3, "Dodaj zakładkę");
+ //MenuInflater inflater = getMenuInflater();
+ //inflater.inflate(R.menu.game_menu, menu);
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public boolean onPrepareOptionsMenu(Menu menu) {
+ MenuItem mi = menu.getItem(1);
+ mi.setTitle(MenuInterface.infoLabel);
+ mi.setEnabled(MenuInterface.infoEnabled);
+ return super.onPrepareOptionsMenu(menu);
+ }
+
+
+ @Override
+ public boolean onKeyDown(int i,KeyEvent e){
+ if (e.getKeyCode() == KeyEvent.KEYCODE_MENU) {
+ return false;
+ }
+ return super.onKeyDown(i, e);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case 1:
+ this.appView.loadUrl("javascript:Menu.start();");
+ break;
+ case 2:
+ this.appView.loadUrl("javascript:Menu.info();");
+ break;
+ case 3:
+ this.appView.loadUrl("javascript:Menu.bookmark();");
+ break;
+ default:
+ return super.onOptionsItemSelected(item);
+ }
+ return true;
}
}
\ No newline at end of file
--- /dev/null
+package pl.org.nowoczesnapolska.wlmobi;
+
+/*
+ @author Radek Czajka
+ */
+
+import org.json.JSONArray;
+import org.json.JSONException;
+
+import android.util.Log;
+import android.content.res.AssetManager;
+
+import com.phonegap.api.Plugin;
+import com.phonegap.api.PluginResult;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.IOException;
+import pl.org.nowoczesnapolska.wlmobi.Downloader;
+
+public class DBPut extends Plugin{
+
+ @Override
+ public PluginResult execute(String action, JSONArray args, String callbackId) {
+ if (action.equals("put")) {
+ try {
+ return this.put(args.getString(0), args.getString(1), args.getString(2));
+ } catch (JSONException e) {
+ return new PluginResult(PluginResult.Status.ERROR, "Param errrors");
+ }
+ }
+ else if (action.equals("fetch")) {
+ try {
+ return this.fetch(args.getString(0));
+ } catch (JSONException e) {
+ return new PluginResult(PluginResult.Status.ERROR, "Param errrors");
+ }
+ }
+ else {
+ return new PluginResult(PluginResult.Status.INVALID_ACTION);
+ }
+ }
+
+ private PluginResult fetch(String url) {
+ String fileName = "0000000000000001.db";
+ String targetPath = "/data/data/" + this.ctx.getPackageName() + "/app_database/file__0/";
+
+ Log.d("DBPut", "database path: " + targetPath + " / " + fileName);
+
+ Downloader d = new Downloader();
+ return d.downloadUrl(url, targetPath, fileName, "true");
+ }
+
+
+ private PluginResult put(String assetPath, String targetPath, String overwrite) {
+ // this hard-coding is kinda creepy, should probably create the db and use getDatabasePath instead
+ String absoluteTargetPath = "/data/data/" + this.ctx.getPackageName() + "/app_database/" + targetPath;
+ int index = absoluteTargetPath.lastIndexOf('/');
+ String targetDir = absoluteTargetPath.substring(0, index);
+
+ try {
+ File dir = new File(targetDir);
+ if(!dir.exists()) {
+ Log.d("DBPut", "directory " + targetDir + " created");
+ dir.mkdirs();
+ }
+
+ File fout = new File(absoluteTargetPath);
+
+ if(overwrite.equals("false") && fout.exists()) {
+ Log.d("DBPut", "File already exists");
+ return new PluginResult(PluginResult.Status.OK, "exist");
+ }
+
+ FileOutputStream fos = new FileOutputStream(fout);
+
+ AssetManager assetManager = this.ctx.getResources().getAssets();
+ InputStream is = assetManager.open(assetPath);
+
+ byte[] buffer = new byte[1024];
+ int len1 = 0;
+
+ while ( (len1 = is.read(buffer)) > 0 ) {
+ fos.write(buffer,0, len1);
+ }
+
+ fos.close();
+
+ Log.d("DBPut", "Copied to " + absoluteTargetPath);
+ } catch (IOException e) {
+ Log.d("DBPut", "Error: " + e);
+ return new PluginResult(PluginResult.Status.ERROR, "Error: " + e);
+ }
+ return new PluginResult(PluginResult.Status.OK, absoluteTargetPath);
+ }
+}
\ No newline at end of file
}
- private PluginResult downloadUrl(String fileUrl, String dirName, String fileName, String overwrite){
+ PluginResult downloadUrl(String fileUrl, String dirName, String fileName, String overwrite){
try{
Log.d("DownloaderPlugin", "DIRECTORY CALLED "+dirName+" created");
File dir = new File(dirName);
}
URL url = new URL(fileUrl);
+ Log.d("DownloaderPlugin", "connecting to server for downloading " + url);
HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
ucon.setRequestMethod("GET");
ucon.setDoOutput(true);
--- /dev/null
+package pl.org.nowoczesnapolska.wlmobi;
+
+/*
+ @author Radek Czajka
+ */
+
+import org.json.JSONArray;
+import org.json.JSONException;
+
+import android.util.Log;
+
+import com.phonegap.api.Plugin;
+import com.phonegap.api.PluginResult;
+
+public class MenuInterface extends Plugin{
+
+ public static String infoLabel = "Proszę czekać...";
+ public static Boolean infoEnabled = false;
+
+ @Override
+ public PluginResult execute(String action, JSONArray args, String callbackId) {
+ if (action.equals("setInfoButton")) {
+ try {
+ return this.setInfoButton(args.getString(0), args.getString(1));
+ } catch (JSONException e) {
+ return new PluginResult(PluginResult.Status.ERROR, "Param errrors");
+ }
+ }
+ else {
+ return new PluginResult(PluginResult.Status.INVALID_ACTION);
+ }
+ }
+
+ private PluginResult setInfoButton(String label, String enabled) {
+ infoLabel = label;
+ infoEnabled = enabled.equals("true");
+
+ return new PluginResult(PluginResult.Status.OK);
+ }
+}