Compare commits
302 commits
Author | SHA1 | Date | |
---|---|---|---|
Michael | a27d714747 | ||
Michael | 89c6fbb233 | ||
Aaron Fischer | e7a3230f93 | ||
Aaron Fischer | 121081ea9c | ||
Aaron Fischer | 028fb71fb3 | ||
Aaron Fischer | 1ef6026d5c | ||
Michael | 8cb57383ad | ||
Michael | 0234635e63 | ||
Michael | 3b7face40c | ||
Aaron Fischer | 73e6410fd2 | ||
Aaron Fischer | 2b7c578a34 | ||
Michael | e266cd9868 | ||
Michael | de5d591e0b | ||
Michael | 4323601c58 | ||
Michael | f3b7a396c7 | ||
Michael | 6ba8f9fab3 | ||
Michael | bfee0d603d | ||
Michael | 3e9badd552 | ||
Michael | 62a48635aa | ||
Michael | ca42644af2 | ||
Michael | 68b95be2ed | ||
Michael | f4c48e2872 | ||
Michael | 47478354a2 | ||
Michael | 51ab79b64f | ||
Michael | a9ba891f3f | ||
Michael | 9579853e0a | ||
Michael | 6535a984e2 | ||
Michael | e52f3b3dac | ||
Michael | 2ec1758715 | ||
Michael | d0c717edc2 | ||
Michael | 07b7cb3b70 | ||
Michael | ed52a36f0e | ||
Michael | 04ec2d46d1 | ||
Michael | 2e22211bd8 | ||
Michael | 45e9f5c007 | ||
Aaron Fischer | 63ac0fce04 | ||
Aaron Fischer | 8f9260b357 | ||
Aaron Fischer | 7db4b81ce3 | ||
Michael | 6110eddf68 | ||
Michael | b9b2da484b | ||
Michael | ec732df59b | ||
Michael | 416ceee51f | ||
Michael | f70d4237d5 | ||
Michael | 297289b6fd | ||
Michael | 966a4c52df | ||
Michael | e013bb2121 | ||
Michael | 58d99012ec | ||
Michael | 98210233c3 | ||
Michael | 9a7cc96691 | ||
Michael | 308921ab9b | ||
Michael | 077642b259 | ||
Michael | 716704f5cf | ||
Michael | 06ebdaa65f | ||
Michael | 312d59780f | ||
Michael | d05d227ac6 | ||
Michael | 3e8013113d | ||
Michael | 61a9f7ec0a | ||
Michael | fe848947a6 | ||
Michael | 67c0ecb219 | ||
Michael | 50852ebec9 | ||
Michael | ae23a82cbe | ||
Michael | 1ca1aa47ee | ||
Michael | 239ad9c40a | ||
Michael | 3b48e4f430 | ||
Michael | 2ec33503b9 | ||
Michael | 8682fd811a | ||
Michael | d469172211 | ||
Michael | 87b51b939b | ||
6f99715af8 | |||
35fdd1b93e | |||
e99bd4cfd0 | |||
16b7ca8a4e | |||
a5755eff27 | |||
4d89762633 | |||
95ec4c2ec2 | |||
2f9d4e051d | |||
9b3e7012ed | |||
a4f41c2a76 | |||
ce8deb7ce6 | |||
b7236f3c89 | |||
ddab51f06a | |||
de1c612951 | |||
8575460ac3 | |||
15f2e0d849 | |||
cafc2562b5 | |||
3ca1901de1 | |||
b3b0e863c5 | |||
568a2a7f33 | |||
9b74b04ed2 | |||
da2dd3b1b5 | |||
fbce9c0948 | |||
050eeb99ee | |||
d9c94bfa94 | |||
912790b837 | |||
1a306fa8a3 | |||
77aa57ea06 | |||
9d96849557 | |||
Aaron Fischer | 4b5ae6d0db | ||
Aaron Fischer | e04c8cef66 | ||
Aaron Fischer | 3250dd5837 | ||
Aaron Fischer | 1147e5fd98 | ||
fa7847a380 | |||
45a98bf40c | |||
09f100637f | |||
68160b4ef1 | |||
1b72cf3874 | |||
4661071c67 | |||
1e65f73f90 | |||
Aaron Fischer | 65caff3121 | ||
9aca3f777b | |||
51efac902b | |||
162581e769 | |||
e984f338a4 | |||
Aaron Fischer | 2e827d6c99 | ||
0ada92efa9 | |||
Aaron Fischer | 169afd6541 | ||
a66205742d | |||
de3ecf261c | |||
38a47fcda8 | |||
b2443d013c | |||
26c28659ef | |||
55ca2bb706 | |||
6f4bfc306e | |||
12f9c7ee87 | |||
58c63f25b5 | |||
3b6a652617 | |||
65189628c2 | |||
Aaron Fischer | 06c4a75968 | ||
Aaron Fischer | 6cbe2c4430 | ||
Aaron Fischer | 24c28ac95c | ||
ce194b23c8 | |||
a9aa4c33e1 | |||
Aaron Fischer | 711e4942ad | ||
Aaron Fischer | 22d36d5a89 | ||
Aaron Fischer | 646659afb8 | ||
Aaron Fischer | 17d8fc8ea6 | ||
Aaron Fischer | 32fbe277aa | ||
c97b19918c | |||
b773b9f164 | |||
9bc280af24 | |||
13ff6df77d | |||
Aaron Fischer | dba27acd69 | ||
d4cedfe929 | |||
82ae2583ad | |||
0c8f8bf505 | |||
690de3a121 | |||
db907ad217 | |||
b536c447aa | |||
ee11ca6bcc | |||
a05d9b9eaa | |||
Aaron Fischer | 1c7af9ebcc | ||
81d0904a3b | |||
151f060999 | |||
4558be643f | |||
26f13f7ec3 | |||
013dca65b2 | |||
903378a818 | |||
a1ed65bcd9 | |||
Aaron Fischer | d61d98eba8 | ||
Aaron Fischer | 08f504f303 | ||
4909b2ddcf | |||
Aaron Fischer | dd183627df | ||
5ad05392fe | |||
1e19a56427 | |||
2b225720a5 | |||
5dbd2e0a73 | |||
cb81fe88a9 | |||
22f7882114 | |||
a82d3df71d | |||
c2185b5ec1 | |||
d3dcb21494 | |||
6456484035 | |||
3b634c736b | |||
405cc90132 | |||
2eb2a6774d | |||
0fc2267cc9 | |||
b602a2fdb5 | |||
9577fe2930 | |||
0eb1a03e20 | |||
451f6a2f68 | |||
1dc2174f05 | |||
610e4aed99 | |||
7acbc4c5ba | |||
b615121d19 | |||
63372a4bf6 | |||
499740a16a | |||
1f6168e4f1 | |||
ec8191bea7 | |||
0dc697a47f | |||
f07f0fd8d7 | |||
ee9d6b8bd3 | |||
870f5a67f0 | |||
dc9e4d856f | |||
b297734051 | |||
1b142330f3 | |||
b8ec91c3d8 | |||
046d579da8 | |||
8681ca32cb | |||
787337ac90 | |||
d816a4bf92 | |||
255857ef13 | |||
3f7681bd41 | |||
97956caaff | |||
37056a5082 | |||
fc226829c4 | |||
a391d31e71 | |||
bd82afe4b6 | |||
470dcae84e | |||
eaa5c1ddf9 | |||
27ae806a45 | |||
6dc7e5b27a | |||
bae08449e4 | |||
8d6d8a1960 | |||
172d052b44 | |||
881df007e0 | |||
f99364cfa6 | |||
2e3db20ffe | |||
ef952e7a70 | |||
cd00e18043 | |||
088c22a20e | |||
1c398d1422 | |||
9166b1f5ef | |||
6f60a1fe7a | |||
c036029d14 | |||
bb3008c2ac | |||
e1076d0d08 | |||
a0e461a713 | |||
42f058119e | |||
fff3c1ad43 | |||
1be5371fc0 | |||
5de31b3083 | |||
41163881fc | |||
b5d5eb8e03 | |||
2550c30783 | |||
a8bc957c45 | |||
d618b51a13 | |||
71eeb3df27 | |||
ed5787cd03 | |||
d6300efc85 | |||
Aaron Fischer | f4cfa44145 | ||
6997d79d18 | |||
b4a69a6661 | |||
9a8a2f648f | |||
ae06f706b0 | |||
65bce52074 | |||
2cf6abcda5 | |||
ff16d2ef45 | |||
9b670f2413 | |||
8542867773 | |||
320589c517 | |||
ba77704568 | |||
3e095dfd08 | |||
93c967386b | |||
0f9bf54efb | |||
e2614ba9d5 | |||
b11e07f173 | |||
Aaron Fischer | 695afe17db | ||
Aaron Fischer | 641fcb8712 | ||
Aaron Fischer | 0c895eff97 | ||
Aaron Fischer | 119f4db4aa | ||
36e0b297ab | |||
94e9527c96 | |||
10c57655f3 | |||
0717f089a3 | |||
835208eb23 | |||
1b68087e6f | |||
230b8fbc09 | |||
43147bc62c | |||
d03b1d159b | |||
e12e4f0a26 | |||
38fc935b33 | |||
3bfbe11bf9 | |||
8712d4bfc9 | |||
5cb600923c | |||
bf78bd30ea | |||
578a325b7f | |||
80fbd53ec5 | |||
b0dcf08ec8 | |||
32ba1c9942 | |||
cac7dde678 | |||
2820d9e893 | |||
02a8201110 | |||
8f8b8789e2 | |||
77e7d11ca0 | |||
a38bf2d64b | |||
Aaron Fischer | b26f8e52c3 | ||
Aaron Fischer | 79139c0d97 | ||
e21a96e80e | |||
6e5108e1d1 | |||
c62db44318 | |||
954c45595b | |||
f256c6abd2 | |||
42c867bb22 | |||
afb4397e57 | |||
8542877194 | |||
51f04c6645 | |||
Aaron Fischer | 2026bc8898 | ||
Aaron Fischer | 62fe59ad61 | ||
Aaron Fischer | ace6a51761 | ||
6401ba2f5a | |||
3885077e0c | |||
02d5f49f85 |
19
.gitignore
vendored
19
.gitignore
vendored
|
@ -1,10 +1,9 @@
|
|||
/target
|
||||
/classes
|
||||
/checkouts
|
||||
pom.xml
|
||||
pom.xml.asc
|
||||
*.jar
|
||||
*.class
|
||||
/.lein-*
|
||||
/.nrepl-port
|
||||
/.project
|
||||
/data
|
||||
/covers
|
||||
/bdm
|
||||
/buch_des_monats.iml
|
||||
/.idea/inspectionProfiles/Project_Default.xml
|
||||
/.idea/.gitignore
|
||||
/.idea/misc.xml
|
||||
/.idea/modules.xml
|
||||
/.idea/vcs.xml
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
* Aaron Fischer <mail@aaron-fischer.net>
|
||||
* Michael Reutter <michael@reutter.info>
|
207
BOOK.mkd
Normal file
207
BOOK.mkd
Normal file
|
@ -0,0 +1,207 @@
|
|||
## 2024
|
||||
* Januar: [Stefan Mey "Der Kampf um das Internet"](https://www.buchhandel.de/buch/9783406807220)
|
||||
* Februar: [Martha Wells "Tagebuch eines Killerbots"](https://www.buchhandel.de/buch/9783453320345)
|
||||
* März: [Chaos Computer Club "Hackbibel 3"](https://www.buchhandel.de/buch/9783948923822)
|
||||
* April: [Tonio Schachinger "Echtzeitalter"](https://www.buchhandel.de/buch/9783498003173)
|
||||
* Mai: [Connie Willis "Die Straße nach Roswell"](https://www.buchhandel.de/buch/9783986664268)
|
||||
|
||||
## 2023
|
||||
* Januar: [Simon Stalenhag "Tales from the Loop"](https://www.buchhandel.de/buch/9783596704835)
|
||||
* Februar: [Blake Crouch "Upgrade"](https://www.buchhandel.de/buch/9781529045369)
|
||||
* März: [Kim Stanley Robinson "Das Ministerium für die Zukunft"](https://www.buchhandel.de/buch/9783641280185)
|
||||
* April: [Kris Brynn "The Shelter - Zukunft ohne Hoffnung"](https://www.buchhandel.de/buch/9783741301315)
|
||||
* Mai: [Sibylle Berg "RCE"](https://www.buchhandel.de/buch/9783462001648)
|
||||
* Juni: [Christopher Paolini "INFINITUM - Die Ewigkeit der Sterne"](https://www.buchhandel.de/buch/9783426227367)
|
||||
* Juli: [Samanta Schweblin "Hundert Augen"](https://www.buchhandel.de/buch/9783518472507)
|
||||
* August: [Theresa Hannig "Pantopia"](https://www.buchhandel.de/buch/9783596706402)
|
||||
* September: [J. O. Morgan "Der Apparat"](https://www.buchhandel.de/buch/9783498003029)
|
||||
* Oktober: [Pratchett/Baxter "Der Lange Mars"](https://www.buchhandel.de/buch/9783442487462)
|
||||
* November: [Grace Curtis "Das Raumschiff, das vom Himmel fiel"](https://www.buchhandel.de/buch/9783453322578)
|
||||
* Dezember: [Jens Andersen "Die LEGO-Story"](https://www.buchhandel.de/buch/9783421070043)
|
||||
|
||||
## 2022
|
||||
* Januar: [Dave Eggers "Every"](https://www.buchhandel.de/buch/9783462001129)
|
||||
* Februar: [Tanya Lapointe "Blade Runner 2049 - Interlinked - The Art"](https://www.buchhandel.de/buch/9781789092110)
|
||||
* März: [Calvin Kasulke "Several People Are Typing"](https://www.buchhandel.de/buch/9780385547222)
|
||||
* April: [Wolf Harlander "Systemfehler"](https://www.buchhandel.de/buch/9783644010277)
|
||||
* Mai: [Christoph Grünberger "The Age of Data"](https://www.buchhandel.de/buch/9783721210156)
|
||||
* Juni: [Berit Glanz "Automaton"](https://www.buchhandel.de/buch/9783827014382)
|
||||
* Juli: [Alison Stine "Trashlands"](https://www.buchhandel.de/buch/9780778311270)
|
||||
* August: [Lee/Chen "KI 2041"](https://www.buchhandel.de/buch/9783593515496)
|
||||
* September: [Becky Chambers "A Psalm for the Wild-Built"](https://www.buchhandel.de/buch/9781250236210)
|
||||
* Oktober: [Robert Charles Wilson "Spin - Die Trilogie"](https://www.buchhandel.de/buch/9783641175092)
|
||||
* November: [David Koepp "Aurora"](https://www.buchhandel.de/buch/9780008364120)
|
||||
* Dezember: [Vogt/Vogt "Wasteland"](https://www.buchhandel.de/buch/9783426523919)
|
||||
|
||||
## 2021
|
||||
* Januar: [Cory Doctorow "Wie man einen Toaster überlistet"](https://www.buchhandel.de/buch/9783453320154)
|
||||
* Februar: [Sylvain Neuvel "Giants - Sie sind erwacht"](https://www.buchhandel.de/buch/9783453316904)
|
||||
* März: [Marc-Uwe Kling "QualityLand 2.0"](https://www.buchhandel.de/buch/9783550201028)
|
||||
* April: [Kraftwerk "Mensch-Maschinen-Musik"](https://www.buchhandel.de/buch/9783946595014)
|
||||
* Mai: [Dirk Peitz "Fernblick: Wie wir uns die Zukunft erzählen"](https://www.buchhandel.de/buch/9783518470275)
|
||||
* Juni: [Klaudia Zotzmann-Koch "Dann haben die halt meine Daten. Na und?!"](https://www.buchhandel.de/buch/9783751981491)
|
||||
* Juli: [Tom Hillenbrand "Montecrypto"](https://www.buchhandel.de/buch/9783462001570)
|
||||
* August: [Davidson/Rees-Mogg "The Sovereign Individual"](https://www.buchhandel.de/buch/9780684832722)
|
||||
* September: [Wolfgang Jeschke "Der letzte Tag der Schöpfung"](https://www.buchhandel.de/buch/9783641013967)
|
||||
* Oktober: [John Marrs "The Passengers"](https://www.buchhandel.de/buch/9783453320727)
|
||||
* November: [Andrew Hunter Murray "The Last Day"](https://www.buchhandel.de/buch/9783492705844)
|
||||
* Dezember: [Titan Books "The Art and Making of The Expanse"](https://www.buchhandel.de/buch/9781789092530)
|
||||
|
||||
## 2020
|
||||
* Januar: [Yevgeny Zamyatin "We: Introduction by Will Self"](https://www.buchhandel.de/buch/9780099511434)
|
||||
* Februar: [Sibylle Berg "GRM"](https://www.buchhandel.de/buch/9783462000207)
|
||||
* März: [James Corey "Leviathan erwacht"](https://www.buchhandel.de/buch/9783453317819)
|
||||
* April: [Douglas Preston "Dark Zero"](https://www.buchhandel.de/buch/9783426500491)
|
||||
* Mai: [Alastair Reynolds "Okular"](https://www.buchhandel.de/buch/9783453317543)
|
||||
* Juni: [William-Hertling "AVOGADRO CORP."](https://www.buchhandel.de/buch/9783958351608)
|
||||
* Juli: [Janina Loh "Roboterethik - Eine Einführung"](https://www.buchhandel.de/buch/9783518298770)
|
||||
* August: [Craig Smith "The Car Hackers Handbook"](https://www.buchhandel.de/buch/9781593277031)
|
||||
* September: [Isaac Asimov "Ich der Roboter"](https://www.buchhandel.de/buch/9783453528420)
|
||||
* Oktober: [Fabian Navarro "poesie.exe"](https://www.buchhandel.de/buch/9783947106622)
|
||||
* November: [Tom Hillenbrand "Qube"](https://www.buchhandel.de/buch/9783462054408)
|
||||
* Dezember: [Sibylle Berg "Nerds retten die Welt"](https://www.buchhandel.de/buch/9783462054606)
|
||||
|
||||
|
||||
## 2019
|
||||
* Januar: [Christopher Ruocchio "Das Imperium der Stille"](https://www.buchhandel.de/buch/9783453318281)
|
||||
* Februar: [Daniel Suarez "Bios"](https://www.buchhandel.de/buch/9783499291333)
|
||||
* März: [Terry Pratchett "Aus der Tastatur gefallen"](https://www.buchhandel.de/buch/9783442487295)
|
||||
* April: [Daniel Martin Feige "Computerspiele: Eine Ästhetik"](https://www.buchhandel.de/buch/9783518297605)
|
||||
* Mai: [Andreas Eschbach "NSA - Nationales Sicherheits-Amt"](https://www.buchhandel.de/buch/9783404179008)
|
||||
* Juni: [Ian McEwan "Maschinen wie ich"](https://www.buchhandel.de/buch/9783257245608)
|
||||
* Juli: [Berit Glanz "Pixeltänzer"](https://www.buchhandel.de/buch/9783895611926)
|
||||
* August: [Dietmar Dath "Venus siegt"](https://www.buchhandel.de/buch/9783596296583)
|
||||
* September: [Andreas Eschbach "Das größte Abenteuer"](https://www.buchhandel.de/buch/9783596701469)
|
||||
* Oktober: [Christiane-Frohmann "Präraffaelitische Girls erklären das Internet"](https://www.buchhandel.de/buch/9783944195964)
|
||||
* November: [Helen Stelthove "Pretty Fly For A Wifi"](https://www.buchhandel.de/buch/9783411750498)
|
||||
* Dezember: [Antonio Garcia Martinez "Chaos Monkeys"](https://www.buchhandel.de/buch/9781785036460)
|
||||
|
||||
## 2018
|
||||
|
||||
* Januar: [Ray Bradbury "Fahrenheit 451"](https://www.buchhandel.de/buch/9783257208627)
|
||||
* Februar: [Richard Morgan "Altered Carbon"](https://www.buchhandel.de/buch/9783453318656)
|
||||
* März: [Marc-Uwe Kling "QualityLand"](https://www.buchhandel.de/buch/9783548291871)
|
||||
* April: [Malka Older "Infomocracy"](https://www.buchhandel.de/buch/9780765392367)
|
||||
* Mai: [Marge Piercy "Er, Sie und Es"](https://www.buchhandel.de/buch/9783867544030)
|
||||
* Juni: [Josefine Rieks "Serverland"](https://www.buchhandel.de/buch/9783446258983)
|
||||
* Juli: [Eliot Peper "Bandwith - an Analog Novel"](https://www.buchhandel.de/buch/9781503954601)
|
||||
* August: [Becky Chambers "Der lange Weg zu einem kleinen zornigen Planeten"](https://www.buchhandel.de/buch/9783596035687)
|
||||
* September: [Dennis E. Taylor "Ich bin viele"](https://www.buchhandel.de/buch/9783453319202)
|
||||
* Oktober: [Christian Humberg "Geek, Pray, Love"](https://www.buchhandel.de/buch/9783864254611)
|
||||
* November: [Katharina Nocun "Die Daten, die ich rief"](https://www.buchhandel.de/buch/9783785726204)
|
||||
* Dezember: [Holger Volland "Die kreative Macht der Maschinen"](https://www.buchhandel.de/buch/9783407865090)
|
||||
|
||||
## 2017
|
||||
|
||||
* Januar: [Pola Oloixarac "Kryptozän"](https://www.buchhandel.de/buch/9783803132802)
|
||||
* Februar: [William Gibson "Peripherie"](https://www.buchhandel.de/buch/9783426522066)
|
||||
* März: [Max Brooks "Minecraft - Die Insel"](https://www.buchhandel.de/buch/9783505140723)
|
||||
* April: [Clemens J. Setz "Bot"](https://www.buchhandel.de/buch/9783518427866)
|
||||
* Mai: [Ernest Cline "Armada"](https://www.buchhandel.de/buch/9783596296606)
|
||||
* Juni: [Jeff Potter "Kochen für Geeks"](https://www.buchhandel.de/buch/9783960090281)
|
||||
* Juli: [Doron Rabinovici "Die Aussererirdischen"](https://www.buchhandel.de/buch/9783518469354)
|
||||
* August: [Margaret Atwood "Das Herz kommt zuletzt"](https://www.buchhandel.de/buch/9783492312752)
|
||||
* September: [Jingfang Hao "Peking falten"](https://www.buchhandel.de/buch/9783942788380)
|
||||
* Oktober: [Donald Nolet "Kryptogramm"](https://www.buchhandel.de/buch/9783426306321)
|
||||
* November: [George Orwell "1984"](https://www.buchhandel.de/buch/9783868206074)
|
||||
* Dezember: [Arkadi Strugatzki "Picknick am Wegesrand"](https://www.buchhandel.de/buch/9783518371701)
|
||||
|
||||
## 2016
|
||||
|
||||
* Januar: [Miriam Meckel "NEXT"](https://www.buchhandel.de/buch/9783499628368)
|
||||
* Februar: [Malte Spitz "Was macht ihr mit meinen Daten"](https://www.buchhandel.de/buch/9783455503289)
|
||||
* März: [Douglas Coupland "Microserfs"](https://www.buchhandel.de/buch/9780007179817)
|
||||
* April: [Jon Erickson "Hacking"](https://www.buchhandel.de/buch/9783898645362)
|
||||
* Mai: [Dirk von Gehlen "Meta! Das Ende des Durchschnitts"](https://www.buchhandel.de/buch/9783957572462)
|
||||
* Juni: [Christian Humberg "Sorge dich nicht, beame!"](https://www.buchhandel.de/buch/9783864250484)
|
||||
* Juli: [Gene Kim "Phoenix-Projekt: Der Roman über IT und DevOps"](https://www.buchhandel.de/buch/9783958751750)
|
||||
* August: [Clifford Stoll "Kuckucksei"](https://www.buchhandel.de/buch/9783596307227)
|
||||
* September: [Georg Milzner "Digitale Hysterie"](https://www.buchhandel.de/buch/9783407864062)
|
||||
* Oktober: [Jamie Bartlett "The Dark Net"](https://www.buchhandel.de/buch/9783864705953)
|
||||
* November: [Jaron Lanier "Wem gehört die Zukunft?"](https://www.buchhandel.de/buch/9783455503982)
|
||||
* Dezember: [Federico Biancuzzi "Visionäre der Programmierung: Die Sprachen und ihre Schöpfer"](https://www.buchhandel.de/buch/9783868996302)
|
||||
|
||||
## 2015
|
||||
|
||||
* Januar: [Nicolas Beaujouan "Geek"](https://www.buchhandel.de/buch/9783864254437)
|
||||
* Februar: [Michael Seemann "Das neue Spiel"](https://www.buchhandel.de/buch/9783936086799)
|
||||
* März: [Karl Olsberg "Das Dorf Band 1: Der Fremde"](https://www.buchhandel.de/buch/9783833232510)
|
||||
* April: [Steven Levy "Hackers"](https://www.buchhandel.de/buch/9781449388393)
|
||||
* Mai: [Aleks Krotoski "Untangling the Web"](https://www.buchhandel.de/buch/9780571303663)
|
||||
* Juni: [Christian Humberg "In 80 Welten durch den Tag"](https://www.buchhandel.de/buch/9783864257940)
|
||||
* Juli: [Nicole Dornseif "Eltern sein - kurz & geek"](https://www.buchhandel.de/buch/9783868998276)
|
||||
* August: [Gottfried Wolmeringer "Coding for Fun"](https://www.buchhandel.de/buch/9783836211161)
|
||||
* September: [Charles Stross "Die Kinder des Saturn"](https://www.buchhandel.de/buch/9783641035174)
|
||||
* Oktober: [Daniel Suarez "Kill Decision"](https://www.buchhandel.de/buch/9783499259180)
|
||||
* November: [Tom Hillenbrand "Drohnenland"](https://www.buchhandel.de/buch/9783462046625)
|
||||
* Dezember: [H. G. Wells "Die Zeitmaschine"](https://www.buchhandel.de/buch/9783868203660)
|
||||
|
||||
## 2014
|
||||
|
||||
* Januar: [Karl Olsberg "Würfelwelt"](https://www.buchhandel.de/buch/9783833232480)
|
||||
* Februar: [Dave Eggers "The Circle"](https://www.buchhandel.de/buch/9780345807298)
|
||||
* März: [Karl Olsberg "Zurück in die Würfelwelt"](https://www.buchhandel.de/buch/9783833232497)
|
||||
* April: [John Scalzi "Redshirts"](https://www.buchhandel.de/buch/9783453529953)
|
||||
* Mai: [Nicholas Negroponte "Total Digital"](https://www.buchhandel.de/buch/9783442127214)
|
||||
* Juni: [Marc Elsberg "ZERO"](https://www.buchhandel.de/buch/9783734100932)
|
||||
* Juli: [Marc Elsberg "BLACKOUT"](https://www.buchhandel.de/buch/9783442380299)
|
||||
* August: [Ed Piskor "Wizzywig"](https://www.buchhandel.de/buch/9781603090971)
|
||||
* September: [Rosenbach/Stark "Der NSA-Komplex"](https://www.buchhandel.de/buch/9783421046581)
|
||||
* Oktober: [Randall Munroe "What if?"](https://www.buchhandel.de/buch/9783328106906)
|
||||
* November: [Daniel Suarez "Control"](https://www.buchhandel.de/buch/9783499268632)
|
||||
* Dezember: [John Brunner "Der Schockwellenreiter"](https://www.buchhandel.de/buch/9783641101480)
|
||||
|
||||
|
||||
## 2013
|
||||
|
||||
* Januar: [Passig/Lobo "Internet - Segen oder Fluch"](https://www.buchhandel.de/buch/9783644113015)
|
||||
* Februar: [Mercedes Bunz "Die stille Revolution"](https://www.buchhandel.de/buch/9783518260432)
|
||||
* März: [Johnny Haeusler "Netzgemüse"](https://www.buchhandel.de/buch/9783442158713)
|
||||
* April: [Alois Potton "Abgründe der Informatik"](https://www.buchhandel.de/buch/9783642229749)
|
||||
* Mai: [Andrew Blum "Kabelsalat"](https://www.buchhandel.de/buch/9783813503883)
|
||||
* Juni: [Neal Stephenson "Cryptonomicon"](https://www.buchhandel.de/buch/9783894806910)
|
||||
* Juli: [Neal Stephenson "Snow Crash"](https://www.buchhandel.de/buch/9783641033781)
|
||||
* August: [Hilmar Schmundt "Hightechmärchen"](https://www.buchhandel.de/buch/9783502150817)
|
||||
* September: [Georg Seesslen "Die Matrix entschlüsselt"](https://www.buchhandel.de/buch/9783865051516)
|
||||
* Oktober: [Dirk von Gehlen "Eine neue Version ist verfügbar"](https://www.buchhandel.de/buch/9783849303266)
|
||||
* November: [Julian Assange "Cypherpunks"](https://www.buchhandel.de/buch/9783593420370)
|
||||
* Dezember: [McKenzie Wark "Das Hacker-Manifest - A Hacker Manifesto"](https://www.buchhandel.de/buch/9783406528750)
|
||||
|
||||
|
||||
## 2012
|
||||
|
||||
* Januar: [Ganz, Ohlig, Vollnhals "Hackerbrause - kurz & geek"](https://www.buchhandel.de/buch/9783868993554)
|
||||
* Februar: [Shumeet Baluja "Silicon Jungle"](https://www.buchhandel.de/buch/9783518463017)
|
||||
* März: [Ole Reissmann "We are Anonymous"](https://www.buchhandel.de/buch/9783641083748)
|
||||
* April: [David Kyle Johnson "Inception and Philosophy"](https://www.buchhandel.de/buch/9781118072639)
|
||||
* Mai: [Constantin Gillies "Extraleben"](https://www.buchhandel.de/buch/9783981141757)
|
||||
* Juni: [Ernest Cline "Ready Player One"](https://www.buchhandel.de/buch/9783596522583)
|
||||
* Juli: [Markus Beckedahl "Die digitale Gesellschaft"](https://www.buchhandel.de/buch/9783423249256)
|
||||
* August: [Dirk von Gehlen "Mashup"](https://www.buchhandel.de/buch/9783518126219)
|
||||
* September: [Konrad Lischka "Spielplatz Computer"](https://www.buchhandel.de/buch/9783882291933)
|
||||
* Oktober: [Jörg Luibl "Spielefresser, Biomonster & Fanboys"](https://www.buchhandel.de/buch/9783981141795)
|
||||
* November: [Kofler, Kühnast, Scherbeck "Raspberry Pi"](https://www.buchhandel.de/buch/9783836269339)
|
||||
* Dezember: [Andreas Eschbach "Herr aller Dinge"](https://www.buchhandel.de/buch/9783404177943)
|
||||
|
||||
## 2011
|
||||
|
||||
* Januar: [Matthias Becker "Datenschatten"](https://www.buchhandel.de/buch/9783936931655)
|
||||
* Februar: [Cory Doctorow "Little Brother"](https://www.buchhandel.de/buch/9783499257827)
|
||||
* März: [Marcel Rosenbach "Staatsfeind WikiLeaks"](https://www.buchhandel.de/buch/9783442102372)
|
||||
* April: [Dreyfus/Assange "Underground"](https://www.buchhandel.de/buch/9783942989008)
|
||||
* Mai: [Daniel Suarez "Darknet"](https://www.buchhandel.de/buch/9783499252440)
|
||||
* Juni: [Kurz/Rieger "Die Datenfresser"](https://www.buchhandel.de/buch/9783596190331)
|
||||
* Juli: [Eckenfels/Hildebrandt "Das Kochbuch für Geeks"](https://www.buchhandel.de/buch/9783897214620)
|
||||
* August: [Odendahl/Finn/Wenger "Arduino - Physical Computing für Bastler, Designer und Geeks"](https://www.buchhandel.de/buch/9783897219953)
|
||||
* September: [Stöcker "Nerd Attack!"](https://www.buchhandel.de/buch/9783421045096)
|
||||
* Oktober: [Douglas Coupland "JPod"](https://www.buchhandel.de/buch/9780747589150)
|
||||
* November: [Daniel Domscheit-Berg, Tina Klopp "Inside WikiLeaks"](https://www.buchhandel.de/buch/9783548375229)
|
||||
* Dezember: [Klaus Raab "Wir sind online - wo seid ihr?"](https://www.buchhandel.de/buch/9783641058142)
|
||||
|
||||
## 2010
|
||||
|
||||
* Oktober: [Charles Stross "Du bist tot"](https://www.buchhandel.de/buch/9783453526877)
|
||||
* November: [Daniel Suarez "Daemon: Die Welt ist nur ein Spiel"](https://www.buchhandel.de/buch/9783499256431)
|
||||
* Dezember: [William Gibson "Quellcode"](https://www.buchhandel.de/buch/9783453526808)
|
||||
|
||||
## 2009
|
94
COMIC.mkd
Normal file
94
COMIC.mkd
Normal file
|
@ -0,0 +1,94 @@
|
|||
## 2024
|
||||
* Januar: [Alejandro Jodorowsky "Die Techno-Väter. Doppelband 1 + 2"](https://www.buchhandel.de/buch/9783987211317)
|
||||
* Februar: [Sylvain Ferret "Talion 1"](https://www.buchhandel.de/buch/9783967921236)
|
||||
* März: [Katrin Gal "Radius 1"](https://www.buchhandel.de/buch/9783962193218)
|
||||
* April: [Snyder/Manapul "Clear"](https://www.buchhandel.de/buch/9783987213090)
|
||||
* Mai: [Wagner/Hillyard "Vinyl"](https://www.buchhandel.de/buch/9783986661540)
|
||||
|
||||
## 2023
|
||||
* Januar: [Peter Hogan "Resident Alien 1"](https://www.buchhandel.de/buch/9783967922653)
|
||||
* Februar: [Ladgham/Kounen "Der Turm 1"](https://www.buchhandel.de/buch/9783967923971)
|
||||
* März: [Leo "Betelgeuse 1"](https://www.buchhandel.de/buch/9783962191955)
|
||||
* April: [Jean/Valéani "Rock & Stone"](https://www.buchhandel.de/buch/9783958390232)
|
||||
* Mai: [Remender/Scalero/White "Black Science"](https://www.buchhandel.de/buch/9783958393752)
|
||||
* Juni: [Mathieu Bablet "Carbon & Silizium"](https://www.buchhandel.de/buch/9783967923957)
|
||||
* Juli: [Jaouen "Elecboy"](https://www.buchhandel.de/buch/9783967921328)
|
||||
* August: [Dan Watters "Der Mann, der vom Himmel fiel"](https://www.buchhandel.de/buch/9783986661144)
|
||||
* September: [Jonathan Rinzler "Alien - Die Entstehungsgeschichte"](https://www.buchhandel.de/buch/9783986664077)
|
||||
* Oktober: [Leo/Rodolphe "Europa 1 - Der Eismond"](https://www.buchhandel.de/buch/9783967920598)
|
||||
* November: [Leo/Rodolphe "Morgen 1"](https://www.buchhandel.de/buch/9783987210440)
|
||||
* Dezember: [Olivier Ledroit "Das dritte Auge 1"](https://www.buchhandel.de/buch/9783967923681)
|
||||
|
||||
## 2022
|
||||
* Januar: [Andreas Kiener "Unvermögen"](https://www.buchhandel.de/buch/9783037312209)
|
||||
* Februar: [Jonathan Hickman "Decorum"](https://www.buchhandel.de/buch/9783966585460)
|
||||
* März: [Lob/Legrand/Rochette "Snowpiercer"](https://www.buchhandel.de/buch/9783770401239)
|
||||
* April: [North/Panetta/Larson "Minecraft, Geschichten aus der Oberwelt"](https://www.buchhandel.de/buch/9783770441334)
|
||||
* Mai: [Eric Stephenson "Nowhere Men 1"](https://www.buchhandel.de/buch/9783864254000)
|
||||
* Juni: [Piskor/Dinter "Wizzywig"](https://www.buchhandel.de/buch/9783770455041)
|
||||
* Juli: [Randall Munroe "XKCD - Volume 0"](https://www.buchhandel.de/buch/9780615314464)
|
||||
* August: [James Tynion IV. "The Department of Truth"](https://www.buchhandel.de/buch/9783967922547)
|
||||
* September: [Rodolphe/Marchal "Der Mann, der die Welt erfand"](https://www.buchhandel.de/buch/9783967921748)
|
||||
* Oktober: [Richard Marazano "Die drei Geister von Tesla 1"](https://www.buchhandel.de/buch/9783958395619)
|
||||
* November: [Geoff Johns "Geiger 1"](https://www.buchhandel.de/buch/9783966587693)
|
||||
* Dezember: [Alan Moore "V wie Vendetta"](https://www.buchhandel.de/buch/9783866075054)
|
||||
|
||||
## 2021
|
||||
* Januar: [Mike Mignola "Hellboy 19: Hellboy und die B.U.A.P. 1956"](https://www.buchhandel.de/buch/9783966581158)
|
||||
* Februar: [Hiroaki Samura "Blade of the Immortal - Perfect Edition"](https://www.buchhandel.de/buch/9783964333711)
|
||||
* März: [Cixin Liu "Die Wandernde Erde"](https://www.buchhandel.de/buch/9783967920673)
|
||||
* April: [Henderson/Salvaggio "Clockwerx 1"](https://www.buchhandel.de/buch/9783868692105)
|
||||
* Mai: [Mathieu Bablet "Shangri-La"](https://www.buchhandel.de/buch/9783967920659)
|
||||
* Juni: [Christophe Bec "Crusaders"](https://www.buchhandel.de/buch/9783967920444)
|
||||
* Juli: [Mangin/Bajram "Inhuman"](https://www.buchhandel.de/buch/9783962195830)
|
||||
* August: [Marazano "Die Chroniken des Universums"](https://www.buchhandel.de/buch/9783962195922)
|
||||
* September: [Gou Tanabe "H.P. Lovecrafts Die Farbe aus dem All"](https://www.buchhandel.de/buch/9783551722942)
|
||||
* Oktober: [Sylvain Runberg "Virus Omega 1 - Die Vorherrschaft"](https://www.buchhandel.de/buch/9783966583503)
|
||||
* November: [Jean-Luc Istin "Androiden 01. Wiederauferstehung"](https://www.buchhandel.de/buch/9783958395688)
|
||||
* Dezember: [Snyder/Soule "Undiscovered Country 1"](https://www.buchhandel.de/buch/9783966584333)
|
||||
|
||||
## 2020
|
||||
* Januar: [Moebius "Opus"](https://www.buchhandel.de/buch/9783962191832)
|
||||
* Februar: [Pierre Christin "Valerian und Veronique - Gesamtausgabe"](https://www.buchhandel.de/buch/9783551025500)
|
||||
* März: [John Fawcett "Orphan Black - Ein Klon ist niemals allein"](https://www.buchhandel.de/buch/9783958391734)
|
||||
* April: [JP Ahonen "Belzebubs"](https://www.buchhandel.de/buch/9783959810265)
|
||||
* Mai: [Fred Duval "Reset"](https://www.buchhandel.de/buch/9783962193782)
|
||||
* Juni: [Marc-Uwe Kling "QualityLand"](https://www.buchhandel.de/buch/9783863912239)
|
||||
* Juli: [Ange/Renault "Vampire State Building"](https://www.buchhandel.de/buch/9783962195113)
|
||||
* August: [Jeff Lemire "Descender"](https://www.buchhandel.de/buch/9783958391666)
|
||||
* September: [Vincent Perriot "Negalyod"](https://www.buchhandel.de/buch/9783551734334)
|
||||
* Oktober: [Mario Alberti "Die Mauer](https://www.buchhandel.de/buch/9783962195755)
|
||||
* November: [Frank Herbert "Dune"](https://www.buchhandel.de/buch/9783958394490)
|
||||
* Dezember: [Trevor Baxendale "Doctor Who Monster-Edition 1"](https://www.buchhandel.de/buch/9783966580168)
|
||||
|
||||
## 2019
|
||||
|
||||
* Januar: [Greg Rucka "Lazarus"](https://www.buchhandel.de/buch/9783958392182)
|
||||
* Februar: [Christophe Bec "Eternum"](https://www.buchhandel.de/buch/9783958393219)
|
||||
* März: [Mike Mignola "The Amazing Screw On Head"](https://www.buchhandel.de/buch/9783959815659)
|
||||
* April: [Philippe Pelaez "Parallel"](https://www.buchhandel.de/buch/9783958395466)
|
||||
* Mai: [Greg Rucka "Black Magic"](https://www.buchhandel.de/buch/9783958394780)
|
||||
* Juni: [Victor Santos "Polar"](https://www.buchhandel.de/buch/9783842013360)
|
||||
* Juli: [Tsutomu Nihei "BLAME! Master Edition"](https://www.buchhandel.de/buch/9783964332608)
|
||||
* August: [Leo "Aldebaran"](https://www.buchhandel.de/buch/9783962199883)
|
||||
* September: [Jerry Frissen "EXO. Band 1"](https://www.buchhandel.de/buch/9783962199203)
|
||||
* Oktober: [Joe Benitez "Lady Mechanika Band 1"](https://www.buchhandel.de/buch/9783958395206)
|
||||
* November: [Hiroya Oku "Gantz 1"](https://www.buchhandel.de/buch/9783964330000)
|
||||
* Dezember: [Benjamin von Eckartsberg "Gung Ho Band 1"](https://www.buchhandel.de/buch/9783864253850)
|
||||
|
||||
## 2018
|
||||
|
||||
* Januar: [Brian Vaughan "We Stand on Guard"](https://www.buchhandel.de/buch/9783864258367)
|
||||
* Februar: [Warren Ellis "Transmetropolitan"](https://www.buchhandel.de/buch/9783862014958)
|
||||
* März: [Philip K. Dick "A Scanner Darkly - Alles wird nicht gut"](https://www.buchhandel.de/buch/9783829602860)
|
||||
* April: [Brian K. Vaughan "The Private Eye"](https://www.buchhandel.de/buch/9781632155726)
|
||||
* Mai: [William Gibson "Archangel"](https://www.buchhandel.de/buch/9783959814140)
|
||||
* Juni: [Masamune Shirow "The Ghost in the Shell"](https://www.buchhandel.de/buch/9783770493807)
|
||||
* Juli: [Joss Whedon "Serenity - Zwischen den Welten"](https://www.buchhandel.de/buch/9783866079847)
|
||||
* August: [Francois Schuiten/Benoit Peeters "Nach Paris"](https://www.buchhandel.de/buch/9783943808766)
|
||||
* September: [Denis Bajram "Death Experience"](https://www.buchhandel.de/buch/9783958390270)
|
||||
* Oktober: [Christophe Arleston "Morea"](https://www.buchhandel.de/buch/9783939823902)
|
||||
* November: [Neil Gaiman "American Gods"](https://www.buchhandel.de/buch/9783962196004)
|
||||
* Dezember: [Christophe Bec "Olympus Mons"](https://www.buchhandel.de/buch/9783962190200)
|
||||
|
||||
## 2017
|
13
Dockerfile
Normal file
13
Dockerfile
Normal file
|
@ -0,0 +1,13 @@
|
|||
FROM golang:alpine AS build
|
||||
COPY . /app
|
||||
WORKDIR /app
|
||||
RUN GOOS=linux go build -o bdm src/bdm.go
|
||||
|
||||
FROM alpine
|
||||
WORKDIR /app
|
||||
COPY ./static /app/static/
|
||||
COPY ./templates /app/templates/
|
||||
RUN mkdir /app/covers/
|
||||
COPY --from=build /app/bdm /app/bdm
|
||||
EXPOSE 9783
|
||||
CMD ["./bdm"]
|
10
INSTALL.mkd
10
INSTALL.mkd
|
@ -1,10 +0,0 @@
|
|||
# About
|
||||
|
||||
Scrape the book list from the "Book of the month" project and generate a nice
|
||||
looking visual representation of the book covers.
|
||||
|
||||
# Running
|
||||
|
||||
lein uberjar
|
||||
java -jar target/buchdesmonats-1.1-standalone.jar
|
||||
|
18
LICENSE.mkd
18
LICENSE.mkd
|
@ -1,18 +0,0 @@
|
|||
Copyright (C) 2014-2015 Aaron Fischer <mail@aaron-fischer.net>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
17
README.md
Normal file
17
README.md
Normal file
|
@ -0,0 +1,17 @@
|
|||
# Book of the month / Comic of the month
|
||||
|
||||
## Deploy
|
||||
|
||||
$ git pull
|
||||
$ docker compose build
|
||||
$ docker compose up -d
|
||||
|
||||
## Sample
|
||||
|
||||
* https://buchdesmonats.okoyono.de/
|
||||
* https://comicdesmonats.okoyono.de/
|
||||
|
||||
## Authors
|
||||
|
||||
* Aaron Fischer <mail@aaron-fischer.net>
|
||||
* Michael Reutter <michael@reutter.info>
|
94
README.mkd
94
README.mkd
|
@ -1,94 +0,0 @@
|
|||
Handverlesen und für gut befunden seit 2010 von [Michael
|
||||
Reutter](https://twitter.com/mezzomix22). Jeden Monat ein neues Buch aus seiner
|
||||
Sammlung zu den Themengebieten Netzkultur, Geektum, Computerspiele und
|
||||
Cyberpunk. Diese Bücherliste ist mittlerweile Anlaufstelle für so manchen Leser
|
||||
der nach neuem Stoff sucht.
|
||||
|
||||
Eine Übersichtsseite mit allen Covern gibt es [hier](https://buchdesmonats.okoyono.de/).
|
||||
|
||||
## 2016
|
||||
|
||||
* Januar: [Miriam Meckel "NEXT"](http://www.lovelybooks.de/autor/Miriam-Meckel/NEXT-681685074-w/)
|
||||
|
||||
## 2015
|
||||
|
||||
* Januar: [Nicolas Beaujouan "Geek"](http://www.lovelybooks.de/autor/Nicolas-Beaujouan/Geek-1116762710-t/)
|
||||
* Februar: [Michael Seemann "Das neue Spiel"](http://www.lovelybooks.de/autor/Michael-Seemann/Das-neue-Spiel-1106924192-t/)
|
||||
* März: [Karl Olsberg "Das Dorf Band 1: Der Fremde"](http://www.lovelybooks.de/autor/Karl-Olsberg/Das-Dorf-Band-1-Der-Fremde-1130986058-t/)
|
||||
* April: [Steven Levy "Hackers"](http://www.lovelybooks.de/autor/Steven-Levy/Hackers-384682145-w/)
|
||||
* Mai: [Aleks Krotoski "Untangling the Web"](http://www.lovelybooks.de/autor/Aleks-Krotoski/Untangling-the-Web-1048300181-t/)
|
||||
* Juni: [Christian Humberg "In 80 Welten durch den Tag"](http://www.lovelybooks.de/autor/Christian-Humberg/In-80-Welten-durch-den-Tag-1134811726-t/)
|
||||
* Juli: [Nicole Dornseif "Eltern sein - kurz & geek"](http://www.lovelybooks.de/autor/Nicole-Dornseif/Eltern-sein-kurz-geek-975529216-t/)
|
||||
* August: [Gottfried Wolmeringer "Coding for Fun"](http://www.lovelybooks.de/autor/Gottfried-Wolmeringer/Coding-for-Fun-1014994768-w/)
|
||||
* September: [Charles Stross "Die Kinder des Saturn"](http://www.lovelybooks.de/autor/Charles-Stross/Die-Kinder-des-Saturn-223640896-w/)
|
||||
* Oktober: [Daniel Suarez "Kill Decision"](http://www.lovelybooks.de/autor/Daniel-Suarez/Kill-Decision-973707573-w/)
|
||||
* November: [Tom Hillenbrand "Drohnenland"](http://www.lovelybooks.de/autor/Tom-Hillenbrand/Drohnenland-1084157364-w/)
|
||||
* Dezember: [H. G. Wells "Die Zeitmaschine"](http://www.lovelybooks.de/autor/H.-G.-Wells/Die-Zeitmaschine-485947391-w/)
|
||||
|
||||
## 2014
|
||||
|
||||
* Januar: [Karl Olsberg "Würfelwelt"](http://www.lovelybooks.de/autor/Karl-Olsberg/Würfelwelt-Ein-Minecraft-Roman-1054644236-t/)
|
||||
* Februar: [Dave Eggers "The Circle"](http://www.lovelybooks.de/autor/Dave-Eggers/The-Circle-1054838179-t/)
|
||||
* März: [Karl Olsberg "Zurück in die Würfelwelt"](http://www.lovelybooks.de/autor/Karl-Olsberg/Zurück-in-die-Würfelwelt-Ein-Minecraft-Roman-1083709423-t/)
|
||||
* April: [John Scalzi "Redshirts"](http://www.lovelybooks.de/autor/John-Scalzi/Redshirts-Roman-1080431773-w/)
|
||||
* Mai: [Nicholas Negroponte "Being Digital"](http://www.lovelybooks.de/autor/Nicholas-Negroponte/Being-Digital-254487215-w/)
|
||||
* Juni: [Marc Elsberg "ZERO"](http://www.lovelybooks.de/autor/Marc-Elsberg/ZERO-Sie-wissen-was-du-tust-1072286884-w/)
|
||||
* Juli: [Marc Elsberg "BLACKOUT"](http://www.lovelybooks.de/autor/Marc-Elsberg/BLACKOUT-Morgen-ist-es-zu-sp%C3%A4t-801811611-w/)
|
||||
* August: [Ed Piskor "Wizzywig"](http://www.lovelybooks.de/autor/Ed-Piskor/Wizzywig-1069042585-t/)
|
||||
* September: [Rosenbach/Stark "Der NSA-Komplex"](http://www.lovelybooks.de/autor/Marcel-Rosenbach/Der-NSA-Komplex-Edward-Snowden-und-der-Weg-in-die-totale-%C3%9Cberwachung-1089051151-t/)
|
||||
* Oktober: [Randall Munroe "What if?"](http://www.lovelybooks.de/autor/Randall-Munroe/What-if-Was-w%C3%A4re-wenn-Wirklich-wissenschaftliche-Antworten-auf-absurde-hypothetische-Fragen-1110788589-t/)
|
||||
* November: [Daniel Suarez "Control"](http://www.lovelybooks.de/autor/Daniel-Suarez/Control-1112506491-w/)
|
||||
* Dezember: [John Brunner "Der Schockwellenreiter"](http://www.lovelybooks.de/autor/John-Brunner/Der-Schockwellenreiter-143365230-w/)
|
||||
|
||||
|
||||
## 2013
|
||||
|
||||
* Januar: [Passig/Lobo "Internet - Segen oder Fluch"](http://www.lovelybooks.de/autor/Kathrin-Passig/Internet-Segen-oder-Fluch-989584306-w/)
|
||||
* Februar: [Mercedes Bunz "Die stille Revolution"](http://www.lovelybooks.de/autor/Mercedes-Bunz/Die-stille-Revolution-992377364-w/)
|
||||
* März: [Johnny Haeusler "Netzgemüse"](http://www.lovelybooks.de/autor/Johnny-Haeusler/Netzgemüse-952337506-w/)
|
||||
* April: [Alois Potton "Abgründe der Informatik"](http://www.lovelybooks.de/autor/Alois-Potton/Abgrunde-der-Informatik-723381327-t/)
|
||||
* Mai: [Andrew Blum "Kabelsalat"](http://www.lovelybooks.de/autor/Andrew-Blum/Kabelsalat-952358745-w/)
|
||||
* Juni: [Neal Stephenson "Cryptonomicon"](http://www.lovelybooks.de/autor/Neal-Stephenson/Cryptonomicon-41092438-w/)
|
||||
* Juli: [Neal Stephenson "Snow Crash"](http://www.lovelybooks.de/autor/Neal-Stephenson/Snow-Crash-41288882-w/)
|
||||
* August: [Hilmar Schmundt "Hightechmärchen"](http://www.lovelybooks.de/autor/Hilmar-Schmundt/Hightechmärchen-Die-schönsten-Mythen-aus-dem-Morgen-Land-1054591283-t/)
|
||||
* September: [Georg Seesslen "Die Matrix entschlüsselt"](http://www.lovelybooks.de/autor/Georg-Seeßlen/Die-Matrix-entschlüsselt-143092240-w/)
|
||||
* Oktober: [Dirk von Gehlen "Eine neue Version ist verfügbar"](http://www.lovelybooks.de/autor/Dirk-von-Gehlen/Eine-neue-Version-ist-verf%C3%BCgbar-Update-1042916407-t/)
|
||||
* November: [Julian Assange "Cypherpunks"](http://www.lovelybooks.de/autor/Julian-Assange/Cypherpunks-1019474597-t/)
|
||||
* Dezember: [McKenzie Wark "Das Hacker-Manifest - A Hacker Manifesto"](http://www.lovelybooks.de/autor/McKenzie-Wark/Das-Hacker-Manifest-A-Hacker-Manifesto-145081610-w/)
|
||||
|
||||
|
||||
## 2012
|
||||
|
||||
* Januar: [Ganz, Ohlig, Vollnhals "Hackerbrause - kurz & geek"](http://www.lovelybooks.de/autor/Ganz/Hackerbrause-kurz-geek-836913255-w/)
|
||||
* Februar: [Shumeet Baluja "Silicon Jungle"](http://www.lovelybooks.de/autor/Shumeet-Baluja/Silicon-Jungle-748741291-w/)
|
||||
* März: [Ole Reissmann "We are Anonymous"](http://www.lovelybooks.de/autor/Ole-Reissmann/We-are-Anonymous-906289132-w/)
|
||||
* April: [David Kyle Johnson "Inception and Philosophy"](http://www.lovelybooks.de/autor/David-Kyle-Johnson/Inception-and-Philosophy-716401793-w/)
|
||||
* Mai: [Constantin Gillies "Extraleben"](http://www.lovelybooks.de/autor/Constantin-Gillies/Extraleben-145091940-w/)
|
||||
* Juni: [Ernest Cline "Ready Player One"](http://www.lovelybooks.de/autor/Ernest-Cline/Ready-Player-One-885602889-w/)
|
||||
* Juli: [Markus Beckedahl "Die digitale Gesellschaft"](http://www.lovelybooks.de/autor/Markus-Beckedahl/Die-digitale-Gesellschaft-950641212-w/)
|
||||
* August: [Dirk von Gehlen "Mashup"](http://www.lovelybooks.de/autor/Dirk-von-Gehlen/Mashup-950293232-w/)
|
||||
* September: [Konrad Lischka "Spielplatz Computer"](http://www.lovelybooks.de/autor/Konrad-Lischka/Spielplatz-Computer-142819380-w/)
|
||||
* Oktober: [Jörg Luibl "Spielefresser, Biomonster & Fanboys"](http://www.lovelybooks.de/autor/Jörg-Luibl/Spielefresser-Biomonster-Fanboys-143311130-w/)
|
||||
* November: [Bartmann "Durchstarten mit Raspberry Pi"](http://www.lovelybooks.de/autor/Erik-Bartmann/Durchstarten-mit-Raspberry-Pi-974816231-w/)
|
||||
* Dezember: [Andreas Eschbach "Herr aller Dinge"](http://www.lovelybooks.de/autor/Andreas-Eschbach/Herr-aller-Dinge-697173922-w/)
|
||||
|
||||
## 2011
|
||||
|
||||
* Januar: [Matthias Becker "Datenschatten"](http://www.lovelybooks.de/autor/Matthias-Becker/Datenschatten-375551986-w/)
|
||||
* Februar: [Cory Doctorow "Little Brother"](http://www.lovelybooks.de/autor/Cory-Doctorow/Little-Brother-224419413-w/)
|
||||
* März: [Marcel Rosenbach "Staatsfeind WikiLeaks"](http://www.lovelybooks.de/autor/Marcel-Rosenbach/Staatsfeind-WikiLeaks-Wie-eine-Gruppe-von-Netzaktivisten-die-mächtigsten-Nationen-der-Welt-herausfordert-Ein-SPIEGEL-Buch-498953500-w/)
|
||||
* April: [Dreyfus/Assange "Underground"](http://www.lovelybooks.de/autor/Suelette-Dreyfus/Underground-Die-Geschichte-der-frühen-Hacker-Elite-Tatsachenroman-562945888-w/)
|
||||
* Mai: [Daniel Suarez "Darknet"](http://www.lovelybooks.de/autor/Daniel-Suarez/DARKNET-593966808-w/)
|
||||
* Juni: [Kurz/Rieger "Die Datenfresser"](http://www.lovelybooks.de/autor/Constanze-Kurz/Die-Datenfresser-Wie-Internetfirmen-und-Staat-sich-unsere-persönlichen-Daten-einverleiben-und-wie-wir-die-Kontrolle-darüber-zurückerlangen-588023257-w/)
|
||||
* Juli: [Eckenfels/Hildebrandt "Das Kochbuch für Geeks"](http://www.lovelybooks.de/autor/Petra-Hildebrandt/Das-Kochbuch-für-Geeks-145346990-w/)
|
||||
* August: [Arduino - Physical Computing für Bastler, Designer und Geeks](http://www.lovelybooks.de/autor/Manuel-Odendahl/Arduino-Physical-Computing-f%C3%BCr-Bastler-Designer-und-Geeks-404199108-w/)
|
||||
* September: [Stöcker - Nerd Attack!](http://www.lovelybooks.de/autor/Christian-Stöcker/Nerd-Attack-739587097-w/)
|
||||
* Oktober: [Douglas Coupland - "JPod"](http://www.lovelybooks.de/autor/Douglas-Coupland/JPod-63433499-w/)
|
||||
* November: [Daniel Domscheit-Berg, Tina Klopp - "Inside WikiLeaks"](http://www.lovelybooks.de/autor/Daniel-Domscheit--Berg-/Inside-WikiLeaks-532707880-w/)
|
||||
* Dezember: [Klaus Raab - "Wir sind online - wo seid ihr?"](http://www.lovelybooks.de/autor/Klaus-Raab/Wir-sind-online-wo-seid-ihr-589478484-w/)
|
||||
|
||||
## 2010
|
||||
|
||||
* Oktober: [Charles Stross "Du bist tot"](http://www.lovelybooks.de/autor/Charles-Stross/Du-bist-tot-313822071-w/)
|
||||
* November: [Daniel Suarez "Daemon: Die Welt ist nur ein Spiel"](http://www.lovelybooks.de/autor/Daniel-Suarez/Daemon-Die-Welt-ist-nur-ein-Spiel-238972300-w/)
|
||||
* Dezember: [William Gibson "Quellcode"](http://www.lovelybooks.de/autor/William-Gibson/Quellcode-137242490-w/)
|
12
docker-compose.yml
Normal file
12
docker-compose.yml
Normal file
|
@ -0,0 +1,12 @@
|
|||
version: "3"
|
||||
|
||||
services:
|
||||
webservice:
|
||||
build: .
|
||||
image: bdm:latest
|
||||
restart: always
|
||||
volumes:
|
||||
- ./data:/app/covers
|
||||
ports:
|
||||
- 127.0.0.1:9783:9783
|
||||
|
13
project.clj
13
project.clj
|
@ -1,13 +0,0 @@
|
|||
(defproject buchdesmonats "1.3"
|
||||
:description "A simple tool to fetch all books of the month from the okoyono.de project."
|
||||
:url "https://git.okoyono.de/mezzomix/buch_des_monats"
|
||||
:license {:name "MIT License"
|
||||
:url "http://opensource.org/licenses/MIT"}
|
||||
:dependencies [[org.clojure/clojure "1.7.0"]
|
||||
[org.clojure/tools.logging "0.3.1"]
|
||||
[enlive "1.1.6"]
|
||||
[me.raynes/fs "1.4.6"]
|
||||
[clj-http "2.0.0"]]
|
||||
:main ^:skip-aot buchdesmonats.core
|
||||
:profiles {:uberjar {:aot :all}})
|
||||
|
241
src/bdm.go
Normal file
241
src/bdm.go
Normal file
|
@ -0,0 +1,241 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"regexp"
|
||||
"strings"
|
||||
xmltpl "text/template"
|
||||
)
|
||||
|
||||
type Item struct {
|
||||
ISBN string
|
||||
FileExtension string
|
||||
Author string
|
||||
Title string
|
||||
Filename string
|
||||
Date string
|
||||
}
|
||||
|
||||
func (i Item) ImageURL(extension string) string {
|
||||
return "https://medien.umbreitkatalog.de/bildzentrale_original/" +
|
||||
i.ISBN[0:3] + "/" +
|
||||
i.ISBN[3:6] + "/" +
|
||||
i.ISBN[6:9] + "/" +
|
||||
i.ISBN[9:13] +
|
||||
"." + extension
|
||||
}
|
||||
|
||||
func (i Item) targetFilename(extension string) string {
|
||||
return "covers/" + i.ISBN + "." + extension
|
||||
}
|
||||
|
||||
func (i Item) downloadCover() error {
|
||||
extension := "jpg"
|
||||
|
||||
fmt.Printf("Downloading %v ...\n", i.ImageURL(extension))
|
||||
resp, err := http.Get(i.ImageURL(extension))
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// TODO: refactor later ...
|
||||
if resp.StatusCode == 404 {
|
||||
extension = "png"
|
||||
fmt.Printf("Downloading %v ...\n", i.ImageURL(extension))
|
||||
resp, err = http.Get(i.ImageURL(extension))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
defer func(Body io.ReadCloser) {
|
||||
err := Body.Close()
|
||||
if err != nil {
|
||||
log.Fatal("Can not close the response body")
|
||||
}
|
||||
}(resp.Body)
|
||||
|
||||
if resp.StatusCode != 200 {
|
||||
return fmt.Errorf("HTTP status code is %d", resp.StatusCode)
|
||||
}
|
||||
|
||||
out, err := os.Create(i.targetFilename(extension))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer func(out *os.File) {
|
||||
err := out.Close()
|
||||
if err != nil {
|
||||
log.Fatal("Can not close the file")
|
||||
}
|
||||
}(out)
|
||||
|
||||
_, err = io.Copy(out, resp.Body)
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func getItems(filename string) []Item {
|
||||
var items []Item
|
||||
// Get all book URLS
|
||||
url := "https://git.okoyono.de/mezzo/buch_des_monats/raw/branch/master/" + filename
|
||||
resp, err := http.Get(url)
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(filename + " is missing")
|
||||
}
|
||||
|
||||
defer func(Body io.ReadCloser) {
|
||||
err := Body.Close()
|
||||
if err != nil {
|
||||
log.Fatal("Can not close the response body")
|
||||
}
|
||||
}(resp.Body)
|
||||
|
||||
content, err := io.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
log.Fatal("Can not download the file. Network problem?")
|
||||
}
|
||||
|
||||
currentYear := ""
|
||||
currentMonth := 0
|
||||
re := regexp.MustCompile(`^[^[]+ \[(?P<author>[^"]+)"(?P<title>[^"]+)"]\(.+buchhandel\.de\/buch\/(?P<isbn>[0-9]+).*$`)
|
||||
yearRe := regexp.MustCompile(`^## (?P<year>20[0-9]{2})$`)
|
||||
|
||||
var yearBucket []Item
|
||||
for _, line := range strings.Split(string(content), "\n") {
|
||||
// Do we find a year?
|
||||
yearMatches := yearRe.FindStringSubmatch(line)
|
||||
if len(yearMatches) > 0 {
|
||||
currentYear = yearMatches[1]
|
||||
currentMonth = 0
|
||||
|
||||
// Add the bucket in reverse order
|
||||
for i := len(yearBucket) - 1; i >= 0; i-- {
|
||||
items = append(items, yearBucket[i])
|
||||
}
|
||||
yearBucket = nil
|
||||
}
|
||||
|
||||
matches := re.FindStringSubmatch(line)
|
||||
if len(matches) == 4 {
|
||||
currentMonth++
|
||||
|
||||
extension, err := getFileExtension(matches[3])
|
||||
if err != nil {
|
||||
log.Printf("%v", err)
|
||||
}
|
||||
|
||||
yearBucket = append(yearBucket, Item{
|
||||
ISBN: matches[3],
|
||||
FileExtension: extension,
|
||||
Author: strings.Trim(matches[1], " "),
|
||||
Title: strings.Trim(matches[2], " "),
|
||||
Filename: filename,
|
||||
Date: fmt.Sprintf("01-%02d-%s", currentMonth, currentYear),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
log.Printf("Output all items:")
|
||||
for _, i := range items {
|
||||
log.Printf("%v", i)
|
||||
}
|
||||
|
||||
return items
|
||||
}
|
||||
|
||||
func getFileExtension(isbn string) (string, error) {
|
||||
// List all files in covers directory
|
||||
// TODO: Cache this line
|
||||
files, err := os.ReadDir("covers/")
|
||||
if err != nil {
|
||||
log.Fatal("Can not read the covers directory")
|
||||
return "", err
|
||||
}
|
||||
for _, file := range files {
|
||||
if strings.HasPrefix(file.Name(), isbn) {
|
||||
return strings.Split(file.Name(), ".")[1], nil
|
||||
}
|
||||
}
|
||||
|
||||
return "", fmt.Errorf("File not found for ISBN: %v", isbn)
|
||||
}
|
||||
|
||||
func getTemplate(sourceFile string, templateFilename string, w http.ResponseWriter) {
|
||||
// Get all items from the git repo
|
||||
items := getItems(sourceFile)
|
||||
|
||||
// Generate the resulting HTML
|
||||
t, err := xmltpl.ParseFiles("templates/" + templateFilename)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
err = t.Execute(w, map[string]interface{}{
|
||||
"Items": items,
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
// All static files (CSS, JS)
|
||||
fileServer := http.FileServer(http.Dir("./static"))
|
||||
http.Handle("/static/", http.StripPrefix("/static", fileServer))
|
||||
|
||||
// Cover images
|
||||
imageServer := http.FileServer(http.Dir("./covers/"))
|
||||
http.Handle("/covers/", http.StripPrefix("/covers", imageServer))
|
||||
|
||||
// Update "Hook" /update?filename=COMIC.mkd
|
||||
http.HandleFunc("/update", func(w http.ResponseWriter, r *http.Request) {
|
||||
filename := r.URL.Query().Get("filename")
|
||||
log.Printf("Update hook triggered for %v", filename)
|
||||
|
||||
// Get all items from the git repo
|
||||
items := getItems(filename)
|
||||
|
||||
for _, item := range items {
|
||||
err := item.downloadCover()
|
||||
|
||||
if err != nil {
|
||||
fmt.Printf("%v", err)
|
||||
fmt.Printf("ERROR: File %s not found\n", item.ImageURL("jpg"))
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
http.HandleFunc("/book", func(w http.ResponseWriter, r *http.Request) {
|
||||
log.Print("/book")
|
||||
getTemplate("BOOK.mkd", "book.html", w)
|
||||
})
|
||||
http.HandleFunc("/comic", func(w http.ResponseWriter, r *http.Request) {
|
||||
log.Print("/comic")
|
||||
getTemplate("COMIC.mkd", "comic.html", w)
|
||||
})
|
||||
http.HandleFunc("/book.xml", func(w http.ResponseWriter, r *http.Request) {
|
||||
log.Print("/book.xml")
|
||||
w.Header().Add("Content-Type", "Application/rss+xml")
|
||||
getTemplate("BOOK.mkd", "book.xml", w)
|
||||
})
|
||||
http.HandleFunc("/comic.xml", func(w http.ResponseWriter, r *http.Request) {
|
||||
log.Print("/comic.xml")
|
||||
w.Header().Add("Content-Type", "Application/rss+xml")
|
||||
getTemplate("COMIC.mkd", "comic.xml", w)
|
||||
})
|
||||
|
||||
// Spawn the webserver (blocking)
|
||||
log.Print("Spawn webserver on port :9783 and waiting for requests ... ...")
|
||||
err := http.ListenAndServe(":9783", nil)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
|
@ -1,98 +0,0 @@
|
|||
;;; Copyright (C) 2014-2015 Aaron Fischer <mail@aaron-fischer.net>
|
||||
;;;
|
||||
;;; Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
;;; this software and associated documentation files (the "Software"), to deal in
|
||||
;;; the Software without restriction, including without limitation the rights to
|
||||
;;; use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
;;; the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
;;; subject to the following conditions:
|
||||
;;;
|
||||
;;; The above copyright notice and this permission notice shall be included in all
|
||||
;;; copies or substantial portions of the Software.
|
||||
;;;
|
||||
;;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
;;; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
;;; FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
;;; COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
;;; IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
;;; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
(ns buchdesmonats.core
|
||||
(:gen-class)
|
||||
(:require [net.cgrand.enlive-html :as html]
|
||||
[clj-http.client :as http-client]
|
||||
[clojure.string :as str]
|
||||
[clojure.java.io :as io]
|
||||
[clojure.tools.logging :as log]
|
||||
[me.raynes.fs :as fs]))
|
||||
|
||||
(defn imgurl->bytes [lovelybooks-url]
|
||||
(-> (java.net.URL. lovelybooks-url)
|
||||
html/html-resource
|
||||
(html/select [:div.bookcoverXXL :> :div :> :img])
|
||||
first
|
||||
(get-in [:attrs :src])
|
||||
(http-client/get {:as :byte-array})
|
||||
:body))
|
||||
|
||||
(defn encode-url-part [part]
|
||||
(java.net.URLEncoder/encode part "UTF-8"))
|
||||
|
||||
(defn encode-url [url]
|
||||
(let [parts (map encode-url-part (re-find #"\/autor\/([^/]+)\/([^/]+)\/?" url))
|
||||
author (nth parts 1)
|
||||
book-title (nth parts 2)]
|
||||
(str "http://lovelybooks.de/autor/" author "/" book-title)))
|
||||
|
||||
(defn url->file [lovelybooks-url target-dir]
|
||||
(let [[_ author title] (re-find #".\/autor\/([^\/]+)\/(.+)-([0-9]+)-.\/$" lovelybooks-url)]
|
||||
(-> (str author "_" title ".jpg")
|
||||
str/lower-case
|
||||
(str/replace #"[^a-z0-9-_.]" "")
|
||||
(#(io/file target-dir %)))))
|
||||
|
||||
(defn scrape-book-urls [datasource-url]
|
||||
(->> (http-client/get datasource-url {:insecure? true})
|
||||
:body
|
||||
str/split-lines
|
||||
(map #(second (re-find #"^\* .*\[.+\]\((.+)\)" %)))
|
||||
(remove nil?)))
|
||||
|
||||
(defn scrape-book-cover [url target-dir]
|
||||
(try
|
||||
(let [target-file (url->file url target-dir)
|
||||
encoded-url (encode-url url)
|
||||
bytes (imgurl->bytes encoded-url)]
|
||||
(with-open [out (io/output-stream target-file)]
|
||||
(.write out bytes)))
|
||||
(catch Exception e
|
||||
(log/info "Problems with " url ", skip it."))))
|
||||
|
||||
(defn find-missing-covers [books-url target-dir]
|
||||
(remove #(fs/exists? (url->file % target-dir))
|
||||
(scrape-book-urls books-url)))
|
||||
|
||||
(html/defsnippet cover-item-model "buchdesmonats/layout.html" [:div#covers :> :div]
|
||||
[link title]
|
||||
[:a] (html/set-attr :href link)
|
||||
[:img] (html/set-attr :src (url->file link "book-covers") :title title))
|
||||
|
||||
(html/deftemplate index-template "buchdesmonats/layout.html"
|
||||
[cover-urls]
|
||||
[:#covers] (html/content
|
||||
(map #(cover-item-model % "zu Lovely Books")
|
||||
cover-urls)))
|
||||
|
||||
(defn generate-html [book-urls target-dir]
|
||||
(let [content (apply str (index-template book-urls))]
|
||||
(with-open [out (io/writer (io/file "public" "index.html"))]
|
||||
(.write out content))))
|
||||
|
||||
(defn -main [& args]
|
||||
(let [datasource-url "https://git.okoyono.de/mezzomix/buch_des_monats/raw/master/README.mkd"
|
||||
target-dir (io/file "public" "book-covers")]
|
||||
(fs/mkdirs target-dir)
|
||||
(generate-html (scrape-book-urls datasource-url) "public")
|
||||
(doall (pmap #(scrape-book-cover % target-dir)
|
||||
(find-missing-covers datasource-url target-dir)))
|
||||
(System/exit 0)))
|
|
@ -1,32 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>okoyono.de -- Buch des Monats</title>
|
||||
<link rel="stylesheet" href="styles.css">
|
||||
<script src="vendors/jquery-2.1.0.min.js"></script>
|
||||
<script src="vendors/masonry-3.1.5.pkgd.min.js"></script>
|
||||
<script src="vendors/imagesloaded-3.1.4.pkgd.min.js"></script>
|
||||
<script src="main.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Buch des Monats</h1>
|
||||
<p>Handerlesen und für gut befunden seit 2010
|
||||
von <a href="https://twitter.com/mezzomix22" rel="author">Michael
|
||||
Reutter</a>. Jeden Monat ein neues Buch aus seiner Sammlung zu den
|
||||
Themengebieten Netzkultur, Geektum, Computerspiele und Cyberpunk. Diese
|
||||
Bücherliste ist mittlerweile Anlaufstelle für so manchen Leser der nach
|
||||
neuem Stoff sucht. Die Buchcover stammen
|
||||
von <a href="http://lovelybooks.de/">Lovely
|
||||
Books</a>, <a href="https://git.okoyono.de/mezzomix/buch_des_monats">der
|
||||
Code</a> von <a href="https://aaron-fischer.net/">Aaron Fischer</a>.
|
||||
Ein <a href="https://okoyono.de/">økoyono</a> Projekt.</p>
|
||||
|
||||
<div id="covers">
|
||||
<div class="cover-item">
|
||||
<a href="#">
|
||||
<img src="#" alt="LovelyBooks cover" title="Book title">
|
||||
</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,7 +1,5 @@
|
|||
@import url(http://fonts.googleapis.com/css?family=Gilda+Display);
|
||||
|
||||
body {
|
||||
background-color: #f5efdb;
|
||||
background-color: #d3d3d3;
|
||||
}
|
||||
|
||||
h1 {
|
||||
|
@ -43,4 +41,4 @@ body > p,
|
|||
.cover-item img {
|
||||
width: 265px;
|
||||
vertical-align: top;
|
||||
}
|
||||
}
|
44
static/comic.css
Normal file
44
static/comic.css
Normal file
|
@ -0,0 +1,44 @@
|
|||
body {
|
||||
background-color: #d3d3d3;
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #7D5D5E;
|
||||
text-align: center;
|
||||
font-family: 'Gilda Display', serif;
|
||||
font-size: 6em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #3F544B;
|
||||
}
|
||||
a:hover {
|
||||
text-decoration: none;
|
||||
color: black;
|
||||
}
|
||||
|
||||
body > p {
|
||||
width: 70%;
|
||||
border-top: 3px solid #3F544B;
|
||||
padding: 5px 0 25px 0;
|
||||
font-family: 'Gilda Display', serif;
|
||||
}
|
||||
|
||||
body > p,
|
||||
#covers {
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.cover-item {
|
||||
width: 265px;
|
||||
margin-bottom: 5px;
|
||||
border: 1px solid #FFE5C6;
|
||||
}
|
||||
.cover-item:hover {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.cover-item img {
|
||||
width: 265px;
|
||||
vertical-align: top;
|
||||
}
|
33
templates/book.html
Normal file
33
templates/book.html
Normal file
|
@ -0,0 +1,33 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>okoyono.de -- Buch des Monats</title>
|
||||
<link rel="stylesheet" href="/static/book.css" />
|
||||
<script src="/static/vendors/jquery-2.1.0.min.js"></script>
|
||||
<script src="/static/vendors/masonry-3.1.5.pkgd.min.js"></script>
|
||||
<script src="/static/vendors/imagesloaded-3.1.4.pkgd.min.js"></script>
|
||||
<script src="/static/main.js"></script>
|
||||
<link rel="alternate" type="application/rss+xml" title="RSS-Feed" href="https://buchdesmonats.okoyono.de/feed.xml" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>Buch des Monats</h1>
|
||||
<p>Handerlesen und für gut befunden seit 2010
|
||||
von <a href="https://social.okoyono.de/@mezzo" rel="author">Michael
|
||||
Reutter</a>. Jeden Monat ein neues Buch aus seiner Sammlung zu den
|
||||
Themengebieten Netzkultur, Geektum, Computerspiele und Cyberpunk. Diese
|
||||
Bücherliste ist mittlerweile Anlaufstelle für so manchen Leser der nach
|
||||
neuem Stoff sucht. Die Buchlinks gehen zu <a href="https://buchhandel.de/">buchhandel.de</a>, <a href="https://git.okoyono.de/mezzo/buch_des_monats">der
|
||||
Code</a> von <a href="https://aaron-fischer.net/">Aaron Fischer</a>.
|
||||
Ein <a href="https://okoyono.de/">økoyono</a> Projekt. (Eine Seite mit Comicempfehlungen findet Ihr <a href="https://comicdesmonats.okoyono.de">hier</a>)</p>
|
||||
|
||||
<div id="covers">
|
||||
{{ range .Items }}
|
||||
<div class="cover-item">
|
||||
<a target="_blank" href="https://www.buchhandel.de/buch/{{ .ISBN }}"><img src="/covers/{{ .ISBN }}.{{ .FileExtension }}" alt="{{ .Author | html }} - {{ .Title | html }}" title="zu buchhandel.de" /></a>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
26
templates/book.xml
Normal file
26
templates/book.xml
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
|
||||
<title>okoyono.de -- Buch des Monats</title>
|
||||
<link href="https://buchdesmonats.okoyono.de/"/>
|
||||
<updated>{{ (index .Items 0).Date }}T00:00:00Z</updated>
|
||||
<author>
|
||||
<name>Michael Reutter</name>
|
||||
</author>
|
||||
<id>urn:uuid:{{ (index .Items 0).ISBN }}</id>
|
||||
|
||||
{{ range .Items }}
|
||||
<entry>
|
||||
<title>{{ .Author | html }} - "{{ .Title | html }}"</title>
|
||||
<link href="https://www.buchhandel.de/buch/{{ .ISBN }}"/>
|
||||
<id>urn:uuid:{{ .ISBN }}</id>
|
||||
<updated>{{ .Date }}T00:00:00Z</updated>
|
||||
<summary>{{ .Author | html }} - "{{ .Title | html }}</summary>
|
||||
<content type="xhtml">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml">
|
||||
<img src="https://buchdesmonats.okoyono.de/covers/{{ .ISBN }}.{{ .FileExtension }}"/>
|
||||
</div>
|
||||
</content>
|
||||
</entry>
|
||||
{{ end }}
|
||||
</feed>
|
27
templates/comic.html
Normal file
27
templates/comic.html
Normal file
|
@ -0,0 +1,27 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>okoyono.de -- Comic des Monats</title>
|
||||
<link rel="stylesheet" href="/static/comic.css" />
|
||||
<script src="/static/vendors/jquery-2.1.0.min.js"></script>
|
||||
<script src="/static/vendors/masonry-3.1.5.pkgd.min.js"></script>
|
||||
<script src="/static/vendors/imagesloaded-3.1.4.pkgd.min.js"></script>
|
||||
<script src="/static/main.js"></script>
|
||||
<link rel="alternate" type="application/rss+xml" title="RSS-Feed" href="https://comicdesmonats.okoyono.de/feed.xml" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>Comic des Monats</h1>
|
||||
<p>Eine Sammlung mit Comics die <a href="https://social.okoyono.de/@mezzo" rel="author">Michael
|
||||
Reutter</a> für Empfehlenswert hält. Jeden Monat ein neuer Comic aus seiner Sammlung. Die Links gehen zu <a href="https://buchhandel.de/">buchhandel.de</a>, <a href="https://git.okoyono.de/mezzo/buch_des_monats">der
|
||||
Code</a> ist von <a href="https://aaron-fischer.net/">Aaron Fischer</a>. Ein <a href="https://okoyono.de/">økoyono</a> Projekt. (Eine Seite mit Buchempfehlungen findet Ihr <a href="https://buchdesmonats.okoyono.de">hier</a>)</p>
|
||||
|
||||
<div id="covers">
|
||||
{{ range .Items }}
|
||||
<div class="cover-item">
|
||||
<a target="_blank" href="https://www.buchhandel.de/buch/{{ .ISBN }}"><img src="/covers/{{ .ISBN }}.{{ .FileExtension }}" alt="{{ .Author | html }} - {{ .Title | html }}" title="zu buchhandel.de" /></a>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
27
templates/comic.xml
Normal file
27
templates/comic.xml
Normal file
|
@ -0,0 +1,27 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
|
||||
<title>okoyono.de -- Comic des Monats</title>
|
||||
<link href="https://comicdesmonats.okoyono.de/"/>
|
||||
<updated>{{ (index .Items 0).Date }}T00:00:00Z</updated>
|
||||
<author>
|
||||
<name>Michael Reutter</name>
|
||||
</author>
|
||||
<id>urn:uuid:{{ (index .Items 0).ISBN }}</id>
|
||||
|
||||
{{ range .Items }}
|
||||
<entry>
|
||||
<title>{{ .Author | html }} - "{{ .Title | html }}"</title>
|
||||
<link href="https://www.buchhandel.de/buch/{{ .ISBN }}"/>
|
||||
<id>urn:uuid:{{ .ISBN }}</id>
|
||||
<updated>{{ .Date }}T00:00:00Z</updated>
|
||||
<summary>{{ .Author | html }} - "{{ .Title | html }}"</summary>
|
||||
<content type="xhtml">
|
||||
<div xmlns="http://www.w3.org/1999/xhtml">
|
||||
<img src="https://comicdesmonats.okoyono.de/covers/{{ .ISBN }}.{{ .FileExtension }}"/>
|
||||
</div>
|
||||
</content>
|
||||
</entry>
|
||||
{{ end }}
|
||||
|
||||
</feed>
|
Loading…
Reference in a new issue