Added ProjectLawful-ebook downloads (blog::29)
This commit is contained in:
@@ -2,32 +2,33 @@
|
||||
|
||||
return
|
||||
[
|
||||
[ 'id' => 5, 'date' => '2009-04-08', 'visible' => true, 'title' => 'Beginning the log', 'fragment' => 'initial.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 6, 'date' => '2009-05-01', 'visible' => false, 'title' => 'Mess with the best ...', 'fragment' => 'hack.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 4, 'date' => '2009-06-22', 'visible' => true, 'title' => 'New Layout!', 'fragment' => 'newlayout.txt', 'type' => 'plain', 'cat' => 'log' ],
|
||||
[ 'id' => 10, 'date' => '2009-06-28', 'visible' => true, 'title' => '"FUN" update', 'fragment' => 'funupdate.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 11, 'date' => '2009-07-05', 'visible' => true, 'title' => 'New Download: LAN Control 2.0', 'fragment' => 'lancontrol.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 12, 'date' => '2009-09-07', 'visible' => false, 'title' => 'Airline BSOD', 'fragment' => 'bsod.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 13, 'date' => '2009-11-22', 'visible' => true, 'title' => 'Spammers gonna spam', 'fragment' => 'spammers.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 15, 'date' => '2012-04-14', 'visible' => true, 'title' => 'New Download: Infinity Tournament', 'fragment' => 'inftournament.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 16, 'date' => '2012-05-27', 'visible' => true, 'title' => 'New Download: Borderline Defense', 'fragment' => 'borderlinedef.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 17, 'date' => '2012-05-28', 'visible' => true, 'title' => 'Big clean up', 'fragment' => 'cleanup.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 18, 'date' => '2013-01-03', 'visible' => true, 'title' => 'New Download: Crystal Grid', 'fragment' => 'crystalgrid.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 2, 'date' => '2014-05-14', 'visible' => true, 'title' => 'Let\'s do Befunge-93', 'fragment' => 'befunge93.md', 'type' => 'markdown', 'cat' => 'blog' ],
|
||||
[ 'id' => 14, 'date' => '2014-06-30', 'visible' => true, 'title' => 'Language changes', 'fragment' => 'language.txt', 'type' => 'plain', 'cat' => 'log' ],
|
||||
[ 'id' => 1, 'date' => '2014-07-10', 'visible' => true, 'title' => 'Project Euler with Befunge', 'fragment' => '', 'type' => 'euler', 'cat' => 'blog' ],
|
||||
[ 'id' => 3, 'date' => '2014-07-15', 'visible' => true, 'title' => '.Net format specifier Cheat Sheet', 'fragment' => 'net_format_spec.md', 'type' => 'markdown', 'cat' => 'blog' ],
|
||||
[ 'id' => 19, 'date' => '2014-08-04', 'visible' => true, 'title' => 'I am Number Four', 'fragment' => 'v4.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 7, 'date' => '2014-09-28', 'visible' => true, 'title' => 'My BFJoust arena and battle-bot', 'fragment' => 'bfjoust.md', 'type' => 'markdown', 'cat' => 'blog' ],
|
||||
[ 'id' => 8, 'date' => '2014-11-05', 'visible' => true, 'title' => 'Rapla Enhancement Script', 'fragment' => 'rapla_css.md', 'type' => 'markdown', 'cat' => 'blog' ],
|
||||
[ 'id' => 20, 'date' => '2015-01-09', 'visible' => true, 'title' => 'More Befunge with Project Euler', 'fragment' => 'more_euler.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 9, 'date' => '2016-10-22', 'visible' => true, 'title' => 'A complete sudoku solver in Befunge-93', 'fragment' => 'sudoku_befunge.md', 'type' => 'markdown', 'cat' => 'blog' ],
|
||||
[ 'id' => 21, 'date' => '2018-01-02', 'visible' => true, 'title' => 'A simple javascript befunge-93 runner', 'fragment' => 'js_befrunner.md', 'type' => 'markdown', 'cat' => 'blog' ],
|
||||
[ 'id' => 22, 'date' => '2018-02-06', 'visible' => true, 'title' => 'Homepage iteration 5', 'fragment' => 'v5.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 23, 'date' => '2018-12-01', 'visible' => true, 'title' => 'Advent of Code 2018 - C#', 'fragment' => 'aoc2018.md', 'type' => 'aoc', 'cat' => 'blog', 'extras' => ['aoc:year' => '2018'] ],
|
||||
[ 'id' => 24, 'date' => '2019-12-01', 'visible' => true, 'title' => 'Advent of Code 2019 - Typescript', 'fragment' => 'aoc2019.md', 'type' => 'aoc', 'cat' => 'blog', 'extras' => ['aoc:year' => '2019'] ],
|
||||
[ 'id' => 25, 'date' => '2020-01-09', 'visible' => true, 'title' => 'Advent of Code 2017 - Python3', 'fragment' => 'aoc2017.md', 'type' => 'aoc', 'cat' => 'blog', 'extras' => ['aoc:year' => '2017'] ],
|
||||
[ 'id' => 26, 'date' => '2020-12-01', 'visible' => true, 'title' => 'Advent of Code 2020 - Rust', 'fragment' => 'aoc2020.md', 'type' => 'aoc', 'cat' => 'blog', 'extras' => ['aoc:year' => '2020'] ],
|
||||
[ 'id' => 27, 'date' => '2021-11-25', 'visible' => true, 'title' => 'Advent of Code 2021 - Go', 'fragment' => 'aoc2021.md', 'type' => 'aoc', 'cat' => 'blog', 'extras' => ['aoc:year' => '2021'] ],
|
||||
[ 'id' => 28, 'date' => '2022-12-01', 'visible' => true, 'title' => 'Advent of Code 2022 - Nim', 'fragment' => 'aoc2022.md', 'type' => 'aoc', 'cat' => 'blog', 'extras' => ['aoc:year' => '2022'] ],
|
||||
[ 'id' => 5, 'date' => '2009-04-08', 'visible' => true, 'title' => 'Beginning the log', 'fragment' => 'initial.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 6, 'date' => '2009-05-01', 'visible' => false, 'title' => 'Mess with the best ...', 'fragment' => 'hack.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 4, 'date' => '2009-06-22', 'visible' => true, 'title' => 'New Layout!', 'fragment' => 'newlayout.txt', 'type' => 'plain', 'cat' => 'log' ],
|
||||
[ 'id' => 10, 'date' => '2009-06-28', 'visible' => true, 'title' => '"FUN" update', 'fragment' => 'funupdate.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 11, 'date' => '2009-07-05', 'visible' => true, 'title' => 'New Download: LAN Control 2.0', 'fragment' => 'lancontrol.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 12, 'date' => '2009-09-07', 'visible' => false, 'title' => 'Airline BSOD', 'fragment' => 'bsod.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 13, 'date' => '2009-11-22', 'visible' => true, 'title' => 'Spammers gonna spam', 'fragment' => 'spammers.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 15, 'date' => '2012-04-14', 'visible' => true, 'title' => 'New Download: Infinity Tournament', 'fragment' => 'inftournament.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 16, 'date' => '2012-05-27', 'visible' => true, 'title' => 'New Download: Borderline Defense', 'fragment' => 'borderlinedef.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 17, 'date' => '2012-05-28', 'visible' => true, 'title' => 'Big clean up', 'fragment' => 'cleanup.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 18, 'date' => '2013-01-03', 'visible' => true, 'title' => 'New Download: Crystal Grid', 'fragment' => 'crystalgrid.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 2, 'date' => '2014-05-14', 'visible' => true, 'title' => 'Let\'s do Befunge-93', 'fragment' => 'befunge93.md', 'type' => 'markdown', 'cat' => 'blog' ],
|
||||
[ 'id' => 14, 'date' => '2014-06-30', 'visible' => true, 'title' => 'Language changes', 'fragment' => 'language.txt', 'type' => 'plain', 'cat' => 'log' ],
|
||||
[ 'id' => 1, 'date' => '2014-07-10', 'visible' => true, 'title' => 'Project Euler with Befunge', 'fragment' => '', 'type' => 'euler', 'cat' => 'blog' ],
|
||||
[ 'id' => 3, 'date' => '2014-07-15', 'visible' => true, 'title' => '.Net format specifier Cheat Sheet', 'fragment' => 'net_format_spec.md', 'type' => 'markdown', 'cat' => 'blog' ],
|
||||
[ 'id' => 19, 'date' => '2014-08-04', 'visible' => true, 'title' => 'I am Number Four', 'fragment' => 'v4.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 7, 'date' => '2014-09-28', 'visible' => true, 'title' => 'My BFJoust arena and battle-bot', 'fragment' => 'bfjoust.md', 'type' => 'markdown', 'cat' => 'blog' ],
|
||||
[ 'id' => 8, 'date' => '2014-11-05', 'visible' => true, 'title' => 'Rapla Enhancement Script', 'fragment' => 'rapla_css.md', 'type' => 'markdown', 'cat' => 'blog' ],
|
||||
[ 'id' => 20, 'date' => '2015-01-09', 'visible' => true, 'title' => 'More Befunge with Project Euler', 'fragment' => 'more_euler.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 9, 'date' => '2016-10-22', 'visible' => true, 'title' => 'A complete sudoku solver in Befunge-93', 'fragment' => 'sudoku_befunge.md', 'type' => 'markdown', 'cat' => 'blog' ],
|
||||
[ 'id' => 21, 'date' => '2018-01-02', 'visible' => true, 'title' => 'A simple javascript befunge-93 runner', 'fragment' => 'js_befrunner.md', 'type' => 'markdown', 'cat' => 'blog' ],
|
||||
[ 'id' => 22, 'date' => '2018-02-06', 'visible' => true, 'title' => 'Homepage iteration 5', 'fragment' => 'v5.md', 'type' => 'markdown', 'cat' => 'log' ],
|
||||
[ 'id' => 23, 'date' => '2018-12-01', 'visible' => true, 'title' => 'Advent of Code 2018 - C#', 'fragment' => 'aoc2018.md', 'type' => 'aoc', 'cat' => 'blog', 'extras' => ['aoc:year' => '2018'] ],
|
||||
[ 'id' => 24, 'date' => '2019-12-01', 'visible' => true, 'title' => 'Advent of Code 2019 - Typescript', 'fragment' => 'aoc2019.md', 'type' => 'aoc', 'cat' => 'blog', 'extras' => ['aoc:year' => '2019'] ],
|
||||
[ 'id' => 25, 'date' => '2020-01-09', 'visible' => true, 'title' => 'Advent of Code 2017 - Python3', 'fragment' => 'aoc2017.md', 'type' => 'aoc', 'cat' => 'blog', 'extras' => ['aoc:year' => '2017'] ],
|
||||
[ 'id' => 26, 'date' => '2020-12-01', 'visible' => true, 'title' => 'Advent of Code 2020 - Rust', 'fragment' => 'aoc2020.md', 'type' => 'aoc', 'cat' => 'blog', 'extras' => ['aoc:year' => '2020'] ],
|
||||
[ 'id' => 27, 'date' => '2021-11-25', 'visible' => true, 'title' => 'Advent of Code 2021 - Go', 'fragment' => 'aoc2021.md', 'type' => 'aoc', 'cat' => 'blog', 'extras' => ['aoc:year' => '2021'] ],
|
||||
[ 'id' => 28, 'date' => '2022-12-01', 'visible' => true, 'title' => 'Advent of Code 2022 - Nim', 'fragment' => 'aoc2022.md', 'type' => 'aoc', 'cat' => 'blog', 'extras' => ['aoc:year' => '2022'] ],
|
||||
[ 'id' => 29, 'date' => '2023-09-11', 'visible' => true, 'title' => 'Project Lawful ebook', 'fragment' => 'proj_lawful_ebook.html', 'type' => 'html', 'cat' => 'blog', 'extras' => ['gh_link' => 'https://github.com/Mikescher/ProjectLawfulEbook'] ],
|
||||
];
|
||||
181
www/statics/blog/proj_lawful_ebook.html
Normal file
181
www/statics/blog/proj_lawful_ebook.html
Normal file
@@ -0,0 +1,181 @@
|
||||
|
||||
<div class="project-lawful-ebook-blogpost">
|
||||
|
||||
This is my attempt at creating an ebook version of the <a href="https://www.projectlawful.com/">project lawful</a> story/glowfic.
|
||||
|
||||
<ul>
|
||||
<li>I used the cache file of <a href="https://github.com/QuartzLibrary/glowpub">glowpub</a> as a basis, because I didn't want to write my own scraper (thanks to <a href="https://github.com/QuartzLibrary">github.com/QuartzLibrary</a>)</li>
|
||||
<li>Then I <a href="https://github.com/Mikescher/ProjectLawfulEbook">hacked together a bit of C# code</a> to generate epub files</li>
|
||||
<li>All external images (and optionally avatars) are included in the epub</li>
|
||||
<li>I went through all the avatar files and made them square images (simplified my css, and looked better - most were already squares or almost-squares)</li>
|
||||
<li>Various properties of the final file/layout can be changed, I generated the variants I found useful, but if anyone wants something special it should be enough to close the repo, edit <code>Program.cs</code> and run <code>make</code></li>
|
||||
</ul>
|
||||
|
||||
<h2># Variants</h2>
|
||||
|
||||
I recommend either the <code>project-lawful-inline.epub</code> or the <code>project-lawful-avatars.epub</code> variants
|
||||
(the <code>*-avatars</code> version contains the post profile-pictures, but is bigger and takes longer to open on older devices).
|
||||
|
||||
There are 3 different versions of the actual **content** of the files:
|
||||
<ul>
|
||||
<li>the normal one includes all threads from <a href="https://www.projectlawful.com/">projectlawful.com</a>, including sandboxes and lectures. If there is a SFW version of a thread, it is not included (the inline/nsfw is included instead)</li>
|
||||
<li>the <code>*-sfw-*</code> versions have the NSFW threads replaced wih their SFW counterparts<br/><i>(replaces threads 5310 with 5403, 5610 with 5618, 5638 with 5671)</i></li>
|
||||
<li>the <code>*-onlymainstory-*</code> versions do not include the sandbox threads or the (optional) lecture threads<br/><i>(removes threads 5775, 5778, 5785, 5826, 5864, 5880, 6029, 6124)</i></li>
|
||||
</ul>
|
||||
|
||||
There are also 5 different layout options (that I code-built) for every version above:
|
||||
<ul>
|
||||
<li>the <code>*-inline</code> variant only includes the character-name of each post, and (if possible) the character-name is set inline with the first paragraph</li>
|
||||
<li>the <code>*-moreinfo</code> variant also includes the alignment text of each post/character after the character-name.</li>
|
||||
<li>the <code>*-avatars</code> variant show the character avatar beside each post. This forces us to include all 600-ish avatars in the epub file, which increases filesize and loading time</li>
|
||||
<li>the <code>*-avatars-moreinfo</code> also includes the alignment text (additionally to the avatar). Here the avatar/character-name/alignment-text are also no longer inlined, but get their own paragraph at the start of every post.</li>
|
||||
<li>the <code>*-biggerhtml</code> variant looks the same as <code>*-inline</code>, but internally every chapter is a single big file (instead of multiple split files), this makes the initial loading of the epub slower, but codevents a forced page-break after every 128th post.</li>
|
||||
</ul>
|
||||
|
||||
As said above, it should be possible to create epub's with other combination of options (see <code>Program.cs</code> and <code>Options.cs</code>)
|
||||
|
||||
<h2># Tested on</h2>
|
||||
|
||||
<ul>
|
||||
<li>Kindle Paperwhite /w KOReader</li>
|
||||
<li>Foliate</li>
|
||||
<li>epub.js</li>
|
||||
<li>Calibre Ebook viewer</li>
|
||||
</ul>
|
||||
|
||||
<h2># Download</h2>
|
||||
|
||||
<div class="variant">
|
||||
<h3>project-lawful-inline.epub</h3>
|
||||
<div class="dlbutton">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-inline-01.jpeg">
|
||||
<a rel="nofollow" href="/blog/29/Project_Lawful_ebook/download/inline">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><use xlink:href="/data/images/icons.svg#download"/></svg>
|
||||
<span class="span_dl">Download</span>
|
||||
<span class="span_mb">(30.9 MB)</span>
|
||||
</a>
|
||||
</div>
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-inline-01.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-inline-02.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-inline-03.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-inline-04.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-inline-05.jpeg">
|
||||
</div>
|
||||
|
||||
<div class="variant">
|
||||
<h3>project-lawful-avatars.epub</h3>
|
||||
<div class="dlbutton">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-avatars-01.jpeg">
|
||||
<a rel="nofollow" href="/blog/29/Project_Lawful_ebook/download/avatars">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><use xlink:href="/data/images/icons.svg#download"/></svg>
|
||||
<span class="span_dl">Download</span>
|
||||
<span class="span_mb">(37.5 MB)</span>
|
||||
</a>
|
||||
</div>
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-avatars-01.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-avatars-02.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-avatars-03.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-avatars-04.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-avatars-05.jpeg">
|
||||
</div>
|
||||
|
||||
<div class="variant">
|
||||
<h3>project-lawful-avatars-moreinfo.epub</h3>
|
||||
<div class="dlbutton">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-avatars-moreinfo-01.jpeg">
|
||||
<a rel="nofollow" href="/blog/29/Project_Lawful_ebook/download/avatars-moreinfo">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><use xlink:href="/data/images/icons.svg#download"/></svg>
|
||||
<span class="span_dl">Download</span>
|
||||
<span class="span_mb">(37.6 MB)</span>
|
||||
</a>
|
||||
</div>
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-avatars-moreinfo-01.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-avatars-moreinfo-02.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-avatars-moreinfo-03.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-avatars-moreinfo-04.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-avatars-moreinfo-05.jpeg">
|
||||
</div>
|
||||
|
||||
<div class="variant">
|
||||
<h3>project-lawful-moreinfo.epub</h3>
|
||||
<div class="dlbutton">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-moreinfo-01.jpeg">
|
||||
<a rel="nofollow" href="/blog/29/Project_Lawful_ebook/download/moreinfo">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><use xlink:href="/data/images/icons.svg#download"/></svg>
|
||||
<span class="span_dl">Download</span>
|
||||
<span class="span_mb">(30.9 MB)</span>
|
||||
</a>
|
||||
</div>
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-moreinfo-01.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-moreinfo-02.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-moreinfo-03.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-moreinfo-04.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-moreinfo-05.jpeg">
|
||||
</div>
|
||||
|
||||
<div class="variant">
|
||||
<h3>project-lawful-biggerhtml.epub</h3>
|
||||
<div class="dlbutton">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-biggerhtml-01.jpeg">
|
||||
<a rel="nofollow" href="/blog/29/Project_Lawful_ebook/download/biggerhtml">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><use xlink:href="/data/images/icons.svg#download"/></svg>
|
||||
<span class="span_dl">Download</span>
|
||||
<span class="span_mb">(30.6 MB)</span>
|
||||
</a>
|
||||
</div>
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-biggerhtml-01.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-biggerhtml-02.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-biggerhtml-03.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-biggerhtml-04.jpeg">
|
||||
<img alt="page preview" src="/data/images/blog/ple-scaled-biggerhtml-05.jpeg">
|
||||
</div>
|
||||
|
||||
<div class="variant alt-variants">
|
||||
<h3>Alternatives (SFW)</h3>
|
||||
<a class="dlbtn_alt" rel="nofollow" href="/blog/29/Project_Lawful_ebook/download/sfw-inline">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><use xlink:href="/data/images/icons.svg#download"/></svg>
|
||||
<span class="span_dl">project-lawful-sfw-inline</span><span class="span_mb">(30.8 MB)</span>
|
||||
</a>
|
||||
<a class="dlbtn_alt" rel="nofollow" href="/blog/29/Project_Lawful_ebook/download/sfw-avatars">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><use xlink:href="/data/images/icons.svg#download"/></svg>
|
||||
<span class="span_dl">project-lawful-sfw-avatars</span><span class="span_mb">(37.4 MB)</span>
|
||||
</a>
|
||||
<a class="dlbtn_alt" rel="nofollow" href="/blog/29/Project_Lawful_ebook/download/sfw-avatars-moreinfo">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><use xlink:href="/data/images/icons.svg#download"/></svg>
|
||||
<span class="span_dl">project-lawful-sfw-avatars-moreinfo</span><span class="span_mb">(37.5 MB)</span>
|
||||
</a>
|
||||
<a class="dlbtn_alt" rel="nofollow" href="/blog/29/Project_Lawful_ebook/download/sfw-moreinfo">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><use xlink:href="/data/images/icons.svg#download"/></svg>
|
||||
<span class="span_dl">project-lawful-sfw-moreinfo</span><span class="span_mb">(30.8 MB)</span>
|
||||
</a>
|
||||
<a class="dlbtn_alt" rel="nofollow" href="/blog/29/Project_Lawful_ebook/download/sfw-biggerhtml">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><use xlink:href="/data/images/icons.svg#download"/></svg>
|
||||
<span class="span_dl">project-lawful-sfw-biggerhtml</span><span class="span_mb">(30.5 MB)</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="variant alt-variants">
|
||||
<h3>Alternatives (Only-Main-Story)</h3>
|
||||
<a class="dlbtn_alt" rel="nofollow" href="/blog/29/Project_Lawful_ebook/download/onlymainstory-inline">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><use xlink:href="/data/images/icons.svg#download"/></svg>
|
||||
<span class="span_dl">project-lawful-onlymainstory-inline</span><span class="span_mb">(30.5 MB)</span>
|
||||
</a>
|
||||
<a class="dlbtn_alt" rel="nofollow" href="/blog/29/Project_Lawful_ebook/download/onlymainstory-avatars">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><use xlink:href="/data/images/icons.svg#download"/></svg>
|
||||
<span class="span_dl">project-lawful-onlymainstory-avatars</span><span class="span_mb">(37.2 MB)</span>
|
||||
</a>
|
||||
<a class="dlbtn_alt" rel="nofollow" href="/blog/29/Project_Lawful_ebook/download/onlymainstory-avatars-moreinfo">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><use xlink:href="/data/images/icons.svg#download"/></svg>
|
||||
<span class="span_dl">project-lawful-onlymainstory-avatars-moreinfo</span><span class="span_mb">(37.3 MB)</span>
|
||||
</a>
|
||||
<a class="dlbtn_alt" rel="nofollow" href="/blog/29/Project_Lawful_ebook/download/onlymainstory-moreinfo">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><use xlink:href="/data/images/icons.svg#download"/></svg>
|
||||
<span class="span_dl">project-lawful-onlymainstory-moreinfo</span><span class="span_mb">(30.6 MB)</span>
|
||||
</a>
|
||||
<a class="dlbtn_alt" rel="nofollow" href="/blog/29/Project_Lawful_ebook/download/onlymainstory-biggerhtml">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><use xlink:href="/data/images/icons.svg#download"/></svg>
|
||||
<span class="span_dl">project-lawful-onlymainstory-biggerhtml</span><span class="span_mb">(30.2 MB)</span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
Reference in New Issue
Block a user