diff --git a/.gitignore b/.gitignore
index d330f22..9f74db7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,10 +1,4 @@
-/Oathbringer.*
-/Oathbringer_*
-html/
-cover.pdf
-wok/
-/wok-reread_*
-/wok-reread.epub
-/wok-reread.html
-/wok-reread.mobi
-/wok-reread.pdf
+/wok/*.html
+/wor/*.html
+/oathbringer/*.html
+/books/*
diff --git a/README.md b/README.md
index 5da484b..5b230dd 100644
--- a/README.md
+++ b/README.md
@@ -22,6 +22,12 @@ epub, mobi, pdf and html. You can find the tor.com announcement at https://www.t
>Join Michael Pye (aka The Mad Hatter) and Carl Engle-Laird as they dive into the details of Sanderson’s complex new world of Roshar. Find out more at https://www.tor.com/features/series/the-way-of-kings-reread-on-torcom/
+## Words of Radiance Reread
+
+Welcome to the reread of Brandon Sanderson’s second Stormlight Archive series book Words of Radiance! This reread will be a collaborative effort between Tor.com’s own editorial assistant Carl Engle-Laird and long-time Tor.com commenter and Sanderson beta-reader Alice Arneson. This new partnership promises to be as potent as that between spren and Radiant. Join them in the Storm Cellar as they evaluate, discuss, question, and generally kibitz their way through the Words of Radiance.
+
+More details at https://www.tor.com/series/words-of-radiance-reread-on-torcom/
+
## Requirements
- Ruby
@@ -34,7 +40,7 @@ epub, mobi, pdf and html. You can find the tor.com announcement at https://www.t
- The final 2 tools can be skipped if you don't care about the PDF generation.
- You can also skip calibre if you only want the EPUB file.
-- Edit the last line in `setup.rb` to `:epub` / `:mobi`, `:pdf` to only trigger the specific builds
+- Edit the last line in `*.rb` to `:epub` / `:mobi`, `:pdf` to only trigger the specific builds
## Generation
@@ -42,19 +48,26 @@ epub, mobi, pdf and html. You can find the tor.com announcement at https://www.t
After downloading the repo and installing the requirements, just run
- ruby setup.rb
+ ruby oathbringer.rb
All the generated files will be saved with the filename `Oathbringer.{epub|pdf|mobi|html}`
## Way of Kings Reread
-
To generate the book:
ruby wok-reread.rb
All the generated files will be saved with the filename `wok-reread.{epub|pdf|mobi|html}`
+## Words of Radiance Reread
+
+To generate the book:
+
+ ruby wor-reread.rb
+
+All the generated files will be saved with the filename `books/wok-reread.{epub|pdf|mobi|html}`. This generation might take a while because it contains a lot of images. It doesn't have the best possible index either, but is still pretty readable.
+
# LICENSE
This is licensed under WTFPL. See COPYING file for the full text.
diff --git a/books/.gitignore b/books/.gitignore
new file mode 100644
index 0000000..d6b7ef3
--- /dev/null
+++ b/books/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/covers/wor-reread.jpg b/covers/wor-reread.jpg
new file mode 100644
index 0000000..80f3f65
Binary files /dev/null and b/covers/wor-reread.jpg differ
diff --git a/covers/wor-reread.pdf b/covers/wor-reread.pdf
new file mode 100644
index 0000000..3fcd13e
Binary files /dev/null and b/covers/wor-reread.pdf differ
diff --git a/metadata/wok-reread.xml b/metadata/wok-reread.xml
index dea2bb8..6551b02 100644
--- a/metadata/wok-reread.xml
+++ b/metadata/wok-reread.xml
@@ -1,6 +1,5 @@
-
~fin\~
Next 3 chapters out on #{next_date.to_s}
Visit tor.com for discussion.
" end -File.open("wok-reread.html", 'w') { |file| file.write(html) } +File.open("books/wok-reread.html", 'w') { |file| file.write(html) } puts "[html] Generated HTML file" generate("wok-reread", :all) diff --git a/wok/gitkeep b/wok/gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/wor-reread.rb b/wor-reread.rb new file mode 100644 index 0000000..47bc721 --- /dev/null +++ b/wor-reread.rb @@ -0,0 +1,157 @@ +require 'date' +require 'fileutils' +require 'nokogiri' +require_relative './methods' + +FileUtils.mkdir_p("wor") + +BASE = 'https://www.tor.com' + +links = [ + "/2014/06/12/introducing-the-words-of-radiance-reread/", + "/2014/06/12/words-of-radiance-reread-prologue/", + "/2014/06/19/words-of-radiance-reread-chapter-1/", + "/2014/06/26/words-of-radiance-reread-chapter-2/", + "/2014/07/03/words-of-radiance-reread-chapter-three/", + "/2014/07/10/words-of-radiance-reread-chapter-4/", + "/2014/07/17/words-of-radiance-reread-chapter-5/", + "/2014/07/24/words-of-radiance-reread-chapter-6/", + "/2014/07/31/words-of-radiance-reread-chapter-7/", + "/2014/08/07/words-of-radiance-reread-chapter-8/", + "/2014/08/14/words-of-radiance-reread-chapter-9/", + "/2014/08/21/words-of-radiance-reread-chapter-10/", + "/2014/08/28/words-of-radiance-reread-chapter-11/", + "/2014/09/04/words-of-radiance-reread-chapter-12/", + "/2014/09/11/words-of-radiance-reread-interlude-1/", + "/2014/09/18/words-of-radiance-reread-interlude-2/", + "/2014/09/25/words-of-radiance-reread-interlude-3/", + "/2014/10/02/words-of-radiance-reread-interlude-4/", + "/2014/10/09/words-of-radiance-reread-chapter-13/", + "/2014/10/16/words-of-radiance-reread-chapter-14/", + "/2014/10/23/words-of-radiance-reread-chapter-15/", + "/2014/10/30/words-of-radiance-reread-chapter-16/", + "/2014/11/06/words-of-radiance-reread-chapter-17/", + "/2014/11/13/words-of-radiance-reread-chapter-18/", + "/2014/11/20/words-of-radiance-reread-chapter-19/", + "/2014/12/04/words-of-radiance-reread-chapter-20/", + "/2014/12/11/words-of-radiance-reread-chapter-21/", + "/2014/12/18/words-of-radiance-reread-chapter-22/", + "/2015/01/08/words-of-radiance-reread-chapter-23/", + "/2015/01/15/words-of-radiance-reread-chapter-24/", + "/2015/01/22/words-of-radiance-reread-chapter-25/", + "/2015/01/29/words-of-radiance-reread-chapter-26/", + "/2015/02/05/words-of-radiance-reread-chapter-27/", + "/2015/02/12/words-of-radiance-reread-chapter-28/", + "/2015/02/19/words-of-radiance-reread-chapter-29/", + "/2015/02/26/words-of-radiance-reread-chapter-30/", + "/2015/03/05/words-of-radiance-reread-chapter-31/", + "/2015/03/12/words-of-radiance-reread-chapter-32/", + "/2015/03/19/words-of-radiance-reread-chapter-33/", + "/2015/03/26/words-of-radiance-reread-chapter-34/", + "/2015/04/02/words-of-radiance-reread-part-2-epigraphs/", + "/2015/04/09/words-of-radiance-reread-interludes-5-and-6/", + "/2015/04/16/words-of-radiance-reread-interludes-7-and-8/", + "/2015/04/23/words-of-radiance-reread-chapter-35/", + "/2015/04/30/words-of-radiance-reread-chapter-36/", + "/2015/05/07/words-of-radiance-reread-chapter-37/", + "/2015/05/14/words-of-radiance-reread-chapter-38/", + "/2015/05/21/words-of-radiance-reread-chapter-39/", + "/2015/05/28/words-of-radiance-reread-chapter-40/", + "/2015/06/04/words-of-radiance-reread-chapter-41/", + "/2015/06/11/words-of-radiance-reread-chapter-42/", + "/2015/06/18/words-of-radiance-reread-chapter-43/", + "/2015/06/25/words-of-radiance-reread-chapter-44/", + "/2015/07/02/words-of-radiance-reread-chapter-45/", + "/2015/07/09/words-of-radiance-reread-chapter-46/", + "/2015/07/23/words-of-radiance-reread-chapter-47/", + "/2015/07/30/words-of-radiance-reread-chapter-48/", + "/2015/08/06/words-of-radiance-reread-chapter-49/", + "/2015/08/13/words-of-radiance-reread-chapter-50/", + "/2015/08/20/words-of-radiance-reread-chapter-51/", + "/2015/08/27/words-of-radiance-reread-chapter-52/", + "/2015/09/03/words-of-radiance-reread-chapter-53/", + "/2015/09/10/words-of-radiance-reread-chapter-54/", + "/2015/09/17/words-of-radiance-reread-chapter-55/", + "/2015/09/24/words-of-radiance-reread-chapter-56/", + "/2015/10/01/words-of-radiance-reread-chapter-57/", + "/2015/10/08/words-of-radiance-reread-chapter-58/", + "/2015/10/15/words-of-radiance-reread-interlude-9/", + "/2015/10/22/words-of-radiance-reread-interlude-10/", + "/2015/10/29/words-of-radiance-reread-interlude-11/", + "/2015/11/05/words-of-radiance-reread-chapter-59/", + "/2015/11/12/words-of-radiance-reread-chapter-60/", + "/2015/11/19/words-of-radiance-reread-chapter-61/", + "/2015/12/03/words-of-radiance-reread-chapter-62/", + "/2015/12/10/words-of-radiance-reread-chapter-63/", + "/2015/12/17/words-of-radiance-reread-chapter-64/", + "/2016/01/07/words-of-radiance-reread-chapter-65/", + "/2016/01/14/words-of-radiance-reread-chapter-66/", + "/2016/01/21/words-of-radiance-reread-chapter-67/", + "/2016/01/28/words-of-radiance-reread-chapter-68/", + "/2016/02/04/words-of-radiance-reread-chapter-69/", + "/2016/02/11/words-of-radiance-reread-chapter-70/", + "/2016/02/18/words-of-radiance-reread-chapter-71/", + "/2016/02/25/words-of-radiance-reread-chapter-72/", + "/2016/03/03/words-of-radiance-reread-chapter-73/", + "/2016/03/10/words-of-radiance-reread-chapter-74/", + "/2016/03/17/words-of-radiance-reread-chapter-75/", + "/2016/03/24/words-of-radiance-reread-part-4-epigraphs/", + "/2016/03/31/words-of-radiance-reread-interludes-12-and-13/", + "/2016/04/07/words-of-radiance-reread-interlude-14/", + "/2016/04/14/words-of-radiance-reread-chapter-76/", + "/2016/04/21/words-of-radiance-reread-chapter-77/", + "/2016/04/28/words-of-radiance-reread-chapter-78/", + "/2016/05/05/words-of-radiance-reread-chapter-79/", + "/2016/05/12/words-of-radiance-reread-chapter-80/", + "/2016/05/19/words-of-radiance-reread-chapter-81/", + "/2016/05/26/words-of-radiance-reread-chapter-82/", + "/2016/06/02/words-of-radiance-reread-chapter-83/", + "/2016/06/09/words-of-radiance-reread-chapter-84/", + "/2016/06/16/words-of-radiance-reread-chapter-85/", + "/2016/06/23/words-of-radiance-reread-chapter-86/", + "/2016/06/30/words-of-radiance-reread-chapter-87/", + "/2016/07/14/words-of-radiance-reread-chapter-88/", + "/2016/07/28/words-of-radiance-reread-chapter-89/", + "/2016/08/04/words-of-radiance-reread-epilogue-and-what-comes-next/" +] + +episode = 1 + +for link in links + url = BASE + link + puts "Download #{url}" + if !File.exists? "wor/#{episode}.html" + `wget --no-clobber "#{url}" --output-document "wor/#{episode}.html" -o /dev/null` + end + episode +=1 +end + +# Now we have all the files +html = "" +for i in 1..(links.length) + complete_html = Nokogiri::HTML(open("wor/#{i}.html")) + page = complete_html.css('.entry-content') + title = complete_html.css('.entry-title>a').inner_html + ending = false + page.children.each do |e| + + if e.attribute('class') and (e['class'].include? 'squib' or e['class'].include? 'post-end-spacer') + ending = true + end + + if ending + e.remove + end + end + html += "Visit tor.com for discussion.
" +end + +File.open("books/wor-reread.html", 'w') { |file| file.write(html) } +puts "[html] Generated HTML file" + +generate("wor-reread", :all) diff --git a/wor/.gitkeep b/wor/.gitkeep new file mode 100644 index 0000000..e69de29