Official Codex Discord Server

  1. Welcome to, a site dedicated to discussing computer based role-playing games in a free and open fashion. We're less strict than other forums, but please refer to the rules.

    "This message is awaiting moderator approval": All new users must pass through our moderation queue before they will be able to post normally. Until your account has "passed" your posts will only be visible to yourself (and moderators) until they are approved. Give us a week to get around to approving / deleting / ignoring your mundane opinion on crap before hassling us about it. Once you have passed the moderation period (think of it as a test), you will be able to post normally, just like all the other retards.
    Dismiss Notice

CYOA press

Discussion in 'Choose Your Own Adventure Land' started by Denim Demon, Jul 7, 2015.

  1. Nevill Arcane

    Jun 6, 2009
    Shadorwun: Hong Kong
    Well, there are two consecutive links that lead to, basically, the same place, and that rubs my OCD self the wrong way. :lol:

    Other than that, it is a minor detail, and you are right, an indentation would help separate chapter names from actual content.

    Yes, that would probably be best for the future.
    ^ Top  
  2. Nevill Arcane

    Jun 6, 2009
    Shadorwun: Hong Kong
    Alright, is time for something EPIC. :cool:

    Book One (open)
    Book One: The Epic of Ean

    Chapter One: Humble Beginnings
    Chapter 1.1: To The Beginning |
    Chapter 1.2: A Small Step |
    Chapter 1.3: The First Power |
    Chapter 1.4: Sargon's Ambition |
    Chapter 1.5: The Battle for Memphis |
    Chapter 1.6: Tendrils in the Desert |
    Chapter 1.7: Memphis Falls |
    Chapter 1.8: Return to Sumeria |
    Chapter 1.9: A Hand for Trust |
    Chapter 1.10: At the Walls of Akkad |
    Chapter 1.11: Prince's Folly |
    Chapter 1.12: Dam If You Do |
    Chapter 1.13: The Flood of Akkad |

    Interlude: Ean of the Akkadian Empire (circa 2300 B.C.) |

    Chapter Two: Lord of Sumeria
    Chapter 2.1: King |
    Chapter 2.2: Ten Years Later |
    Chapter 2.3: The Empty City |
    Chapter 2.4: Tuwanu of the Dead |
    Chapter 2.5: Battle Plans |
    Chapter 2.6: Cautious Commander |
    Chapter 2.7: Misstep |
    Chapter 2.8: Sumeria Again |

    Interlude: Ean, Sumerian Wanderer (circa 2000 B.C.) |

    Chapter Three: The Sands of Egypt
    Chapter 3.1: End of the Old Kingdom |
    Intermission: The Gieloth Cult |
    Chapter 3.2: Before Heliopolis |
    Chapter 3.3: Heliopolis - The Night Before the Storm |
    Chapter 3.4: Beneath the Temple |
    Chapter 3.5: Fight in the Dark |
    Chapter 3.6: Incubator |
    Chapter 3.7: Smothered Flames |
    Chapter 3.8: Deadly Herbivores |
    Chapter 3.9: The Sceptre of Ra |
    Chapter 3.10: Sekhenun's End |
    Chapter 3.11: Learning |
    Chapter 3.12: The World is Your Oyster |
    Chapter 3.13: Egypt Aflame |
    Chapter 3.14: A Dark Proposal |
    Chapter 3.15: Astarth's Game |
    Chapter 3.16: Babylon Strikes |
    Chapter 3.17: Fortress Tjaru |
    Chapter 3.18: The Night Before Battle |
    Chapter 3.19: Solitary Scout |
    Chapter 3.20: Deadly Desert Deathmatch |
    Chapter 3.21: Battle for Tjaru |
    Chapter 3.22: Hold the Wall |
    Chapter 3.23: Dawn of the Middle Kingdom |

    Chapter Four: Search for Power
    Chapter 4.1: Setting Sail |
    Chapter 4.2: Aphrodite |
    Chapter 4.3: Vagaries of the Love Priestess |
    Chapter 4.4: The Palace of Knossos |
    Chapter 4.5: The Love Potion |
    Chapter 4.6: A Tangled Web |
    Chapter 4.7: The Labyrinth of the Minotaur |
    Chapter 4.8: Power |
    Chapter 4.9: Daedalus's Tower |
    Chapter 4.10: Escape from Knossos |
    Chapter 4.11: Greece at War |
    Chapter 4.12: Mehrune's Whereabouts |

    Interlude: Ean, Reawakened Immortal (circa 1900 B.C.) |

    Chapter Five: The God-King's Ambitions
    Chapter 5.1: A Tiny Little Hunger |
    Chapter 5.2: Curse and Blessing |
    Chapter 5.3: The Marks |
    Chapter 5.4: Mehlu |
    Chapter 5.5: Gudersu and the Gutians |
    Chapter 5.6: Gamilsin |
    Chapter 5.7: East of Babylon |
    Chapter 5.8: Contingency Plan |
    Chapter 5.9: Nusku |
    Chapter 5.10: The Next Step |
    Chapter 5.11: Revolution |
    Chapter 5.12: Anbar-Shi |
    Chapter 5.13: The Besieged Border Fort |
    Chapter 5.14: Terror in Tjaru |
    Chapter 5.15: Invade the Delta |
    Chapter 5.16: Lying in Wait |
    Chapter 5.17: In the Shadow of Olympus |
    Chapter 5.18: Peak |
    Chapter 5.19: Thunderstruck |
    Chapter 5.20a: Tea-Time With Zeus |
    Chapter 5.20b: Ruin of Olympus |
    Chapter 5.21: Cataclysm |

    Interlude: After the Cataclysm |

    Chapter Six: The Changing World
    Chapter 6.1: What Happens Next |
    Chapter 6.2: Foundation of Empire |
    Chapter 6.3: Rendezvous in Athens |
    Intermission: Terasphagos (~1890 B.C. / 5 A.C.) |
    Chapter 6.4: The Gutian Dilemma |
    Chapter 6.5: The Hidden Hand |
    Chapter 6.6: Ten Years to the Founding |
    Chapter 6.7: Hattusa Kneels |
    Chapter 6.8: The Rift Incursion |
    Intermission: The Empire (30 A.C.) |
    Chapter 6.9: Miasma Maze |
    Chapter 6.10: Lodestone and the Rift |
    Chapter 6.11: The Second Terasphagos Incursion |
    Chapter 6.12: Son of a Breach |
    Chapter 6.13: The Great Wall of Korinthos |
    Chapter 6.14: Purple Rift |
    Chapter 6.15: A Void Full of Balls |
    Chapter 6.16: Sphere Diplomacy |
    Chapter 6.17: Playtime |
    Chapter 6.18: Home is Where the Heart is

    Interlude: Escape |

    Chapter Seven: Pretenders to the Empire
    Chapter 7.1: Prelude to a Storm |
    Intermission: State of the Empire (~3rd Millennium) |
    Chapter 7.2: Diogenes Camna |
    Chapter 7.3: Death, Banquets and the Idea of Love |
    Chapter 7.4: Surfacing Memories |
    Chapter 7.5: Murderous Rat, Cunning Snake |
    Chapter 7.6: House Arrest |
    Chapter 7.7: Spinning a Web |
    Chapter 7.8: Travel Plans |
    Chapter 7.9: Scheming in Crete |
    Chapter 7.10: Guns and Glory |
    Chapter 7.11: Cold Winds of Change |
    Chapter 7.12: Initiation Rites |
    Chapter 7.13: Into the Darkness |
    Chapter 7.14: The Wolf's Question |
    Chapter 7.15: The Wolf's Answer |
    Chapter 7.16: Shadow on the Steppe |
    Chapter 7.17: Fort Euphraxes |
    Chapter 7.18: Silent Fort |
    Chapter 7.19: Ambush, Campfire and the Young Soldier |
    Chapter 7.20: Massacre at Fort Euphraxes |
    Chapter 7.21: Ban's Butchery |
    Chapter 7.22: The Cursed Sword |
    Chapter 7.23: Diogenes the Hero |

    Interlude: Awakening |

    Chapter Eight: The Divine Throne
    Chapter 8.1: The More Things Change |
    Chapter 8.2: The Lady of the Martyrs |
    Chapter 8.3: Meeting the Band |
    Chapter 8.4: First Aid |
    Chapter 8.5: The Sacred Tree |
    Chapter 8.6: The Tree of Life |
    Chapter 8.7: Winds of Omen |
    Chapter 8.8: The Clear Blue Sky |

    Epilogue: Flowers of Inanna |

    Another Epilogue: Somewhere in the multiverse... |

    Book Two (open)
    Book Two: Inheritor of the Stars

    Prologue: Registration |

    Interlude: A Brief History (4000 A.C.) |

    Chapter One: School Days
    Part 1 - Arrival in Olympia |
    Part 2 - The First Night; The First Day |
    Part 3 - Home Invasion |
    Part 4 - Inheritor |
    Part 5 - Home Invasion: Aftermath |
    Part 6 - Relius Engura |
    Part 7 - The Grand Olympus Hotel |
    Part 8 - Relius's Room |
    Part 9 - Fleeing the Grand Olympus |
    Intermission: The Apostles of Hiranyagarbha |
    Part 10 - The Old Leaves Bookstore |
    Part 11 - Questions for a Bookstore Manager |
    Part 12 - Julius Gallardo |
    Part 13 - Capture |
    Part 14 - Escape from the Laboratory |
    Part 15 - In the Meantime |
    Part 16 - In the Meantime (II) |
    Part 17 - The Dunamis Coup |
    Part 18 - Battle on the Stage |
    Chapter End - Farewell Olympia |

    Interlude: Space Colonies (4025 A.C.) |

    Chapter Two: The Beginnings of Conflict
    Part 1 - Late Again |
    Part 2 - CF Anhur |
    Part 3 - First Kill |
    Part 4 - Mission Briefing |
    Part 5 - Flight of the Kaguya-hime |
    Part 6 - Crossroads |
    Part 7 - Base 43 |
    Part 8 - Mother Crab |
    Part 9 - The Scarlet Lightning |
    Intermission: Major Armed Forces of the World (4025 A.C.) |
    Part 10 - Escorting The Spirit of Adventure |
    Part 11 - Meeting Major |
    Part 12 - Setting the Battlefield |
    Part 13 - Colony Drop |
    Part 14 - The Empress Strikes Back |
    Part 15 - Lost |
    Part 16 - State Funeral |
    Part 17 - Conversation in a Funeral Hall |
    Part 18 - Changing Conflict |
    Chapter End - Return to the East |

    Interlude: War Timeline |

    Chapter Three: Higashi Cases
    Part 1 - Working Life |
    Part 2 - Case of the Missing Lawmaker, Act I |
    Part 3 - Case of the Missing Lawmaker, Act II |
    Part 4 - Case of the Missing Lawmaker, Act III |
    Part 5 - Case of the Missing Lawmaker, Act IV |
    Part 6 - Case of the Missing Lawmaker, Conclusion |
    Part 7 - Case of the Cursed Songstress, Act I |
    Part 8 - Case of the Cursed Songstress, Act II |
    Part 9 - Case of the Cursed Songstress, Act III |
    Part 10 - So You Messed Up and You're Now a Cyborg Ninja. Now What? |
    Intermission: State of Technology (4026 A.C.) |
    Part 11 - Reload: Case of the Cursed Songstress, Act IV |
    Part 12 - Case of the Cursed Songstress, Act V |
    Part 13 - Case of the Cursed Songstress, Act VI |
    Part 14 - Case of the Cursed Songstress, Conclusion |
    Part 15 - Vacation in the North |
    Part 16 - Breakthrough |
    Part 17 - Immortal |
    Chapter End - Dive |

    Chapter Four: World Zero
    Part 1 - START |
    Part 2 - Gate |
    Part 3 - Field |
    Part 4 - Countdown |
    Part 5 - Connection |
    Chapter End - END |

    Interlude: All That Has Passed |

    Chapter Five: Terra Reborn
    Part 1 - To The City of Broken Dreams |
    Part 2 - Reunion in the Old Quarter |
    Part 3 - New Seeds |
    Part 4 - House of Knowledge |
    Part 5 - Planting the Seeds of Hope |
    Part 6 - A Winning Proposition |
    Part 7 - The Order of Pithos |
    Part 8 - A Familiar Face |
    Part 9 - One More Month |
    Part 10 - Unseen Threat |
    Part 11 - Ambush |
    Part 12 - The Promise of Entertainment |
    Part 13 - Misjudgement |
    Part 14 - Ultimatum |
    Chapter End - Joining the Fleet |

    Interlude: The League and the Empire |

    Chapter Six: To The Stars and Beyond
    Part 1 - The Gate of Ean |
    Part 2 - Framejack |
    Part 3 - Into the Fray |
    Part 4 - Turmoil in Space |
    Part 5 - Interlude in the Cracks of Reality |
    Part 6 - Rendezvous Point |
    Part 7 - The Belesis |
    Part 8 - Boarding Party |
    Part 9 - The Tactician |
    Part 10 - Fight or Flight |
    Part 11 - Imperial Crusade |
    Part 12 - Bring on a War |
    Part 13 - Backstory |
    Intermission: The Goddess and the Youth |
    Part 14 - Meeting at Kamabharata |
    Part 15 - Break |
    Part 16 - Tinkering |
    Part 17 - T-Minus Thirty Days |
    Part 18 - Battle at Uranus |
    Part 19 - Man vs Crusade |
    Part 20 - The Real Crusade |
    Part 21 - The Mission |
    Chapter End - The God and the Youth |

    Interlude: Preparations |

    Chapter Seven: Destiny's End
    Part 1 - Opening: War Council |
    Part 2 - Departure and Arrival: Gelmark |
    Part 3 - Delta Hunt |
    Part 4 - Defector |
    Part 5 - The Belly of the Beast |
    Part 6 - Database Break and Entry |
    Part 7 - Information Medium |
    Part 8 - Central Brain |
    Part 9 - Control, Alternate, Delete |
    Part 10 - Garden of the Gods |
    Part 11 - Tribulations of the Grand Marshal |
    Part 12 - Stalker Encounter |
    Part 13 - Advent of Space Whaling |
    Part 14 - Crossroads of Life and Death |
    Part 15 - Stardust to Stardust |
    Part 16 - The Will That Prevails |
    Part 17 - Embodiment of the Devourer |
    Part 18 - Code Masters |
    Part 19 - The All-Seeing Eye |
    Part 20 - Those Who Challenge the Divine Will |
    Chapter End - Man · God · Machine |

    Epilogue: The Continuing World |

    Another Epilogue: Somewhere in the multiverse... |

    Damn. That's a lot of updates. :salute:

    Also, I think I know how to solve the problem of updates like these:

    You probably don't want to see rows upon rows of letters in the book. However, the author is usually consistent when denoting OOC comments. EPIC always has *** to separate tallies and actual chapters, and so does the Codexian Saga:

    Myth has those comments typed in in italics:

    What I suggest is to mark chapter indices with a special symbol indicating whether or not it contains these comments. Like so:
    'B' means that there is a part of the post in the beginning that doesn't belong to a chapter. Usually it is everything up to and including the *** symbols. Then the program should simply not display that content. Should be a fairly easy script to write - just track down the first inclusion of *** and go from there. The need to denote the chapters where such action is needed stems from the fact that *** symbols are legitimately used to separate the text inside the chapters as well, so you can't apply that script to all posts/chapters indiscriminately or you'll end up skipping actual content.

    Sometimes those comments can appear towards the ending:

    In that case it can be done like this:
    Search for the last *** string and omit everything past it.

    It is a pretty simple way to automate the process instead of manually editing these parts out.
    Last edited: Jul 28, 2015
    • Brofist Brofist x 1
    ^ Top  
  3. Nevill Arcane

    Jun 6, 2009
    Shadorwun: Hong Kong
    I know that you probably have your hands full as it is... but do you think your tool could be used with non-Codexian CYOAs too?

    I am thinking about this CYOA in particular:

    Doesn't have an index, and it isn't exactly most literary of works, but the idea is so cool and implementation is so good that I think it would not be out of place with the others listed in the OP. Maybe it will inspire a Codexian writer to a spiritual sequel.

    If that is outside the scope of your work, I would understand, too.
    • Brofist Brofist x 1
    ^ Top  
  4. Denim Demon Educated

    Denim Demon
    Feb 7, 2011
    Outside of society
    Project: Eternity
    Awesome! :salute:

    Yeah it basically boils down to two options:
    1. Clean up each and every post by hand - results would be pretty much perfect, also allows for adding stuff for whatever reason
    2. Find an automatic solution that is easily configurable through the index and catches most cases
    Some reasoning about both options:

    The first one requires little implementation effort. It would only require caching a posts content, so if it has been loaded once it will be cached locally and on the next run of the tool it does not need to be loaded again. This way manual modifications to the cached version would not be overwritten. This is pretty useful in any case because these posts do not change anymore and right now the loading takes up >99% of the execution time. By using a repository (like Git), the required work effort to clean up all these posts could easily be shared by multiple people.

    The second one requires a lot more implementation effort. What I would want to have removed are author comments not related to the current chapter / choices, vote results and redundant chapter titles. Now that alone results in a lot of different patterns that the tool would need to recognize. This would involve a lot of implementation effort from my side to produce somewhat consistent results. But with this solution there will always be edge-cases and lots of bugs that I would have to fix over time. As for the work effort, some things could be cleaned automatically, but as soon as you start to add information to the index on how to clean up each chapter, then you have not gained a lot. I mean the effort is basically the same: You still have to open up each chapter and check what content needs to be removed. Then you either add something to the appropriate line in the index or select some text or delete it.

    TL;DR: Right now I think I prefer the first solution. Although it's a bit more work it keeps things simple and avoids bugs that might be hard to detect. If some content is missing then someone has removed it by hand - and not some piece of code.

    I think I would just do a test-run of the first solution to see if it's feasible, even for very big LPs:
    • Pick an LP of reasonable length
    • Determine a set of rules what needs to be removed
    • Clean up each post
    • Track how much time was spent
    That would gain some insight how much effort it really is and if an automatic solution is even necessary. Plus by doing it by hand I get a better understanding of how a automatic solution might work.

    (Of course, if you would want to help out and share the effort that would very much be welcome ;))

    Edit: Forgot the most important thing to clean: Click here and disable ads! :lol:
    Last edited: Jul 28, 2015
    ^ Top  
  5. Denim Demon Educated

    Denim Demon
    Feb 7, 2011
    Outside of society
    Project: Eternity
    Added some stuff:
    • Added Extras to Legend, collected by Nevill
    • Added Warhammer: 41K
    • Updated Overlord with latest chapters
    I only took a quick look at WH41K but it seems to be fine. Lots of redundant captions in this one :). Quotes still look awkward, but that's already on the to-do list. There's no formal name, so I had to invent one. Maybe root has something else in mind?
    Last edited: Jul 28, 2015
    • Brofist Brofist x 1
    ^ Top  
  6. Denim Demon Educated

    Denim Demon
    Feb 7, 2011
    Outside of society
    Project: Eternity
    The module that loads the thread page and extracts the post content is well separated from the rest of the code. So it would not be too much trouble to switch it with another module that would work for a different forum.

    However I have no plans to do so in the near future. Though you never know! ;)

    Actually right know I'm more interested in how well the tool would work for traditional gaming / screenshot LPs. Basically in the style of
    ^ Top  
  7. Nevill Arcane

    Jun 6, 2009
    Shadorwun: Hong Kong
    The problem with your first method is that if the author decides to change the post (say, fix a typo), then the tool wouldn't recognize it. I'd rather the tool took the information from the Net than kept it locally. Doesn't that mean that everyone using your tool locally will have to make the edits themselves?

    Basically, what I thought about automatic removal is that there is a set of rules (might be unique for each book) determining how to cut a part of the post from the beginning or from the end. Anyone can download this set of rules and apply them, making the result universal across the users of the tool and keeping it up to date if the information in the post changes.

    But I see where you are coming from.

    I only mentioned it because the biggest 'offenders', EPIC and Saga, use the similar method of separating OOC comments. Naturally, if there is no single standart then automating the process would be futile.

    Tell me what needs to be done and I'll see what I can help with.

    I know nothing about NodeJS, whatever that might be, though I suppose it is never too late to learn.

    The Codexian Saga looks like a good start. It is reasonably short and the rules are fairly simple.

    Shall we test it? I have an LP that I would like to try with this tool:
    Last edited: Jul 28, 2015
    ^ Top  
  8. Denim Demon Educated

    Denim Demon
    Feb 7, 2011
    Outside of society
    Project: Eternity
    True. Though you could improve that by having a central repository where the edits are collected. Basically multiple users can run the tool locally, but afterwards all manual changes and the newly compiled stuff are moved to a central reposity on the internet - just like I do now with the cyoa-press repository on Github. From there the edits can be shared with other users.

    If you put it that way it makes a lot more sense. Create a number of reusable, possibly configurable rules. Define the set of rules for each book. If stuff happens modify ruleset until happy.


    Sure! You know what to do ;)

    My guess is that it might already work pretty well for small LPs, however for long ones it might become a problem with hundreds of images on the same page. In the end you would need a mode where each chapter is put in a separate file.
    ^ Top  
  9. Nevill Arcane

    Jun 6, 2009
    Shadorwun: Hong Kong
    If I might add, the style for CODE tags fits better for the quotes then the one you currently use now. See this:
    Unfortunately, it does not know how to carry the words over properly.

    So... anything I can actually help with?
    ^ Top  
  10. Nevill Arcane

    Jun 6, 2009
    Shadorwun: Hong Kong
    Hell, it can be as simple as this:
    Cut out first 22 strings from the beginning.
    Show Spoiler


    It will need to be done once when compliling the index, and you won't need to keep the stuff locally. I can probably do it in half an hour with Epic provided the ability to check how it would look like after a change.

    Of course, more complex scripts to automate this would still be welcome.
    Last edited: Jul 29, 2015
    ^ Top  
  11. Nevill Arcane

    Jun 6, 2009
    Shadorwun: Hong Kong
    Let's see. Here is a small sample.
    Show Spoiler

    I wonder if it would be possible to put two different posts on the forum under one hyperlink in your tool. For example, I'd like to see "Mission 8: Natural Born Heroes. True Route." and "The True Route Continues." under one 'chapter', and 'Mission 9: Siberite!', 'The Siberite Must Flow.', 'What Ifs...' and 'The Prize.' under the other. Maybe some rules can be introduced...

    Well, here is a test sample in case you ever find yourself with more free time than you know what to do with. ;) That's not a request, so feel free to ignore it. :)

    How exactly does it grab the text? I am trying to find out what is forum-specific about it.
    Last edited: Jul 29, 2015
    ^ Top  
  12. Denim Demon Educated

    Denim Demon
    Feb 7, 2011
    Outside of society
    Project: Eternity
    Not yet, I'd like to make some small changes to the tool to make the manual editing easier.

    Cool, I'll try it out when I find some time.

    That's rather technical. Basically loading the forum page gives you a complete HTML page with header, a list of posts, a footer and so on. Now we want a specific list item that is the target post (identified by the post id that is in the URL) and within that we only want the post content (theres a lot more stuff like User avatar, post header, post footer etc.). To get that specific content from the complete HTML I use a library called Cheerio, which uses selectors to point to a specific part of the HTML.

    For a post within a Codex thread page the selector is:

    li#{postId} div.messageContent > article > blockquote

    That says basically:
    - Find the list item with the id {postId}
    - Anywhere within that list item find a div with the CSS class messageContent
    - Find the direct child of type article within that div
    - The the direct child of type blockquote within that article

    Now everything within that blockquote is post content. To create the selector I open the page in Chrome and use the Dev Tools to check out the HTML structure.

    Edit: Just to be clear - there's no need for you to find out the selector, I should be able figure it out pretty quick. The bigger effort is to make the tool configurable for different forums. That's a one-time effort and once that's done it should be easy to add support for other forums.
    Last edited: Jul 29, 2015
    • Brofist Brofist x 1
    ^ Top  
  13. Nevill Arcane

    Jun 6, 2009
    Shadorwun: Hong Kong
    There is nothing to find out - Chrome can show the relevant part of the page's source code on a right-click. :)

    But thanks, I understand how it works now.

    Are you going with the 'local repository' route (where you can edit text freely since it gets copied locally), or with the 'cropping' route (where you are limited to cutting out a part of the post - or rather, not displaying it, since no actual editing takes place, - but you don't have to store content)?
    ^ Top  
  14. Denim Demon Educated

    Denim Demon
    Feb 7, 2011
    Outside of society
    Project: Eternity
    I had an idea that is a combination of both. I add a simple editor to all books that allows you to mark text ranges that you want removed. The editor then generates some config that you can provide to the tool to automatically remove those ranges on its next run.

    The process is basically the following:
    • Open a book in the browser like you would to read it
    • Press the "Edit" button
    • Select a text range that you want removed and hit the "Delete" button
    • The text gets displayed with a different background or a line-trough style to give some visual feedback what will be removed
    • Repeat for as many text ranges as you like
    • Press the "Export" button and it generates a config that describes which text ranges should be removed
    • Provide the config to the tool and on the next run of the tool it will automatically remove those text ranges
    • Manual editing is super easy, you don't need to modify the raw HTML code but use a visual editor instead
    • No need to define / implement complicated rules, the editor basically checks the HTML structure and gives you a "dynamic rule" of what should be cut out
    • These auto-defined rules should still be valid after basic editing of a posts, like fixing a typo - bigger changes like newlines or formatting changes might be troublesome though
    • Still provides automatic removal of content, no need to cache posts, content is always up-to-date
    The browser would also store the editor config and apply it again the next time you open the book. So you can basically extend the config if there are changes or if new chapters have been added.

    I started an implementation yesterday, but it's a lot harder than I thought. I already have the code that can remove the ranges during the tool run. However exporting the ranges from the browser is much more complicated - mainly because of the highlight effect that you would need to display the text ranges that should be cut. Basically adding the highlight effect alters the underlying HTML structure and that gives you text ranges with invalid offsets. So I would have to exclude any highlight element from the offset calculation, and I have no solution for that yet. It's very much possible, but i's going to take me some time to wrap my head around the problem.

    I think I'll experiment with this for a bit longer though, because I really like the general idea.
    • Brofist Brofist x 1
    ^ Top  
  15. Denim Demon Educated

    Denim Demon
    Feb 7, 2011
    Outside of society
    Project: Eternity

    And here's the Original War LP. It mostly works, but I really think it would be better if each update were on a separate page. Also could use some transform to remove the spoiler tags - they are not very useful in this case.
    • Brofist Brofist x 2
    ^ Top  
  16. Nevill Arcane

    Jun 6, 2009
    Shadorwun: Hong Kong
    Sooo... any luck? :M

    Do I understand correctly that the problem is that the highlighting tags in the editing mode add characters to the post that mess with the offsets?

    So the string
    and it messes up highlighting other stuff. Or is the problem more complex than that?
    ^ Top  
  17. Rahdulan Arcane Patron

    Oct 26, 2012
    So yeah, kinda necroing for no real reason but I just wanted to say I'm having great fun reading completed works on my Kindle after converting them and doing some minor editing. Mainly removing the first first page and every book after conversion process can't get rid of them.
    Thanks to Denim Demon for putting it together and others for participating in said CYOAs. :bro:

    • Brofist Brofist x 3
    ^ Top  
  18. Nyarmith Educated

    Apr 2, 2010
    You should add the option to export to pdf. If your source is available online I might be able to add that feature.
    ^ Top  
  19. Storyfag Arcane Patron

    Feb 17, 2011
    A Dark Place
    Good sir, the job you have done here is divine :obviously:
    • Agree Agree x 1
    ^ Top  

(buying stuff via the above buttons helps us pay the hosting bills, thanks!)