From 859e1e65540ddb55dbb00d000331fb9ede9efd2a Mon Sep 17 00:00:00 2001 From: nek0 Date: Thu, 4 Jun 2020 08:32:04 +0200 Subject: [PATCH 1/4] add initial json catalogues --- books.json | 1002 ++++++++++++++++++++++++++++++++++++++++++++++++ magazines.json | 802 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 1804 insertions(+) create mode 100644 books.json create mode 100644 magazines.json diff --git a/books.json b/books.json new file mode 100644 index 0000000..6a69796 --- /dev/null +++ b/books.json @@ -0,0 +1,1002 @@ +[ + { + "author": "Chinua Achebe", + "country": "Nigeria", + "imageLink": "images/things-fall-apart.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Things_Fall_Apart\n", + "pages": 209, + "title": "Things Fall Apart", + "year": 1958 + }, + { + "author": "Hans Christian Andersen", + "country": "Denmark", + "imageLink": "images/fairy-tales.jpg", + "language": "Danish", + "link": "https://en.wikipedia.org/wiki/Fairy_Tales_Told_for_Children._First_Collection.\n", + "pages": 784, + "title": "Fairy tales", + "year": 1836 + }, + { + "author": "Dante Alighieri", + "country": "Italy", + "imageLink": "images/the-divine-comedy.jpg", + "language": "Italian", + "link": "https://en.wikipedia.org/wiki/Divine_Comedy\n", + "pages": 928, + "title": "The Divine Comedy", + "year": 1315 + }, + { + "author": "Unknown", + "country": "Sumer and Akkadian Empire", + "imageLink": "images/the-epic-of-gilgamesh.jpg", + "language": "Akkadian", + "link": "https://en.wikipedia.org/wiki/Epic_of_Gilgamesh\n", + "pages": 160, + "title": "The Epic Of Gilgamesh", + "year": -1700 + }, + { + "author": "Unknown", + "country": "Achaemenid Empire", + "imageLink": "images/the-book-of-job.jpg", + "language": "Hebrew", + "link": "https://en.wikipedia.org/wiki/Book_of_Job\n", + "pages": 176, + "title": "The Book Of Job", + "year": -600 + }, + { + "author": "Unknown", + "country": "India/Iran/Iraq/Egypt/Tajikistan", + "imageLink": "images/one-thousand-and-one-nights.jpg", + "language": "Arabic", + "link": "https://en.wikipedia.org/wiki/One_Thousand_and_One_Nights\n", + "pages": 288, + "title": "One Thousand and One Nights", + "year": 1200 + }, + { + "author": "Unknown", + "country": "Iceland", + "imageLink": "images/njals-saga.jpg", + "language": "Old Norse", + "link": "https://en.wikipedia.org/wiki/Nj%C3%A1ls_saga\n", + "pages": 384, + "title": "Nj\u00e1l's Saga", + "year": 1350 + }, + { + "author": "Jane Austen", + "country": "United Kingdom", + "imageLink": "images/pride-and-prejudice.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Pride_and_Prejudice\n", + "pages": 226, + "title": "Pride and Prejudice", + "year": 1813 + }, + { + "author": "Honor\u00e9 de Balzac", + "country": "France", + "imageLink": "images/le-pere-goriot.jpg", + "language": "French", + "link": "https://en.wikipedia.org/wiki/Le_P%C3%A8re_Goriot\n", + "pages": 443, + "title": "Le P\u00e8re Goriot", + "year": 1835 + }, + { + "author": "Samuel Beckett", + "country": "Republic of Ireland", + "imageLink": "images/molloy-malone-dies-the-unnamable.jpg", + "language": "French, English", + "link": "https://en.wikipedia.org/wiki/Molloy_(novel)\n", + "pages": 256, + "title": "Molloy, Malone Dies, The Unnamable, the trilogy", + "year": 1952 + }, + { + "author": "Giovanni Boccaccio", + "country": "Italy", + "imageLink": "images/the-decameron.jpg", + "language": "Italian", + "link": "https://en.wikipedia.org/wiki/The_Decameron\n", + "pages": 1024, + "title": "The Decameron", + "year": 1351 + }, + { + "author": "Jorge Luis Borges", + "country": "Argentina", + "imageLink": "images/ficciones.jpg", + "language": "Spanish", + "link": "https://en.wikipedia.org/wiki/Ficciones\n", + "pages": 224, + "title": "Ficciones", + "year": 1965 + }, + { + "author": "Emily Bront\u00eb", + "country": "United Kingdom", + "imageLink": "images/wuthering-heights.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Wuthering_Heights\n", + "pages": 342, + "title": "Wuthering Heights", + "year": 1847 + }, + { + "author": "Albert Camus", + "country": "Algeria, French Empire", + "imageLink": "images/l-etranger.jpg", + "language": "French", + "link": "https://en.wikipedia.org/wiki/The_Stranger_(novel)\n", + "pages": 185, + "title": "The Stranger", + "year": 1942 + }, + { + "author": "Paul Celan", + "country": "Romania, France", + "imageLink": "images/poems-paul-celan.jpg", + "language": "German", + "link": "\n", + "pages": 320, + "title": "Poems", + "year": 1952 + }, + { + "author": "Louis-Ferdinand C\u00e9line", + "country": "France", + "imageLink": "images/voyage-au-bout-de-la-nuit.jpg", + "language": "French", + "link": "https://en.wikipedia.org/wiki/Journey_to_the_End_of_the_Night\n", + "pages": 505, + "title": "Journey to the End of the Night", + "year": 1932 + }, + { + "author": "Miguel de Cervantes", + "country": "Spain", + "imageLink": "images/don-quijote-de-la-mancha.jpg", + "language": "Spanish", + "link": "https://en.wikipedia.org/wiki/Don_Quixote\n", + "pages": 1056, + "title": "Don Quijote De La Mancha", + "year": 1610 + }, + { + "author": "Geoffrey Chaucer", + "country": "England", + "imageLink": "images/the-canterbury-tales.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/The_Canterbury_Tales\n", + "pages": 544, + "title": "The Canterbury Tales", + "year": 1450 + }, + { + "author": "Anton Chekhov", + "country": "Russia", + "imageLink": "images/stories-of-anton-chekhov.jpg", + "language": "Russian", + "link": "https://en.wikipedia.org/wiki/List_of_short_stories_by_Anton_Chekhov\n", + "pages": 194, + "title": "Stories", + "year": 1886 + }, + { + "author": "Joseph Conrad", + "country": "United Kingdom", + "imageLink": "images/nostromo.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Nostromo\n", + "pages": 320, + "title": "Nostromo", + "year": 1904 + }, + { + "author": "Charles Dickens", + "country": "United Kingdom", + "imageLink": "images/great-expectations.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Great_Expectations\n", + "pages": 194, + "title": "Great Expectations", + "year": 1861 + }, + { + "author": "Denis Diderot", + "country": "France", + "imageLink": "images/jacques-the-fatalist.jpg", + "language": "French", + "link": "https://en.wikipedia.org/wiki/Jacques_the_Fatalist\n", + "pages": 596, + "title": "Jacques the Fatalist", + "year": 1796 + }, + { + "author": "Alfred D\u00f6blin", + "country": "Germany", + "imageLink": "images/berlin-alexanderplatz.jpg", + "language": "German", + "link": "https://en.wikipedia.org/wiki/Berlin_Alexanderplatz\n", + "pages": 600, + "title": "Berlin Alexanderplatz", + "year": 1929 + }, + { + "author": "Fyodor Dostoevsky", + "country": "Russia", + "imageLink": "images/crime-and-punishment.jpg", + "language": "Russian", + "link": "https://en.wikipedia.org/wiki/Crime_and_Punishment\n", + "pages": 551, + "title": "Crime and Punishment", + "year": 1866 + }, + { + "author": "Fyodor Dostoevsky", + "country": "Russia", + "imageLink": "images/the-idiot.jpg", + "language": "Russian", + "link": "https://en.wikipedia.org/wiki/The_Idiot\n", + "pages": 656, + "title": "The Idiot", + "year": 1869 + }, + { + "author": "Fyodor Dostoevsky", + "country": "Russia", + "imageLink": "images/the-possessed.jpg", + "language": "Russian", + "link": "https://en.wikipedia.org/wiki/Demons_(Dostoyevsky_novel)\n", + "pages": 768, + "title": "The Possessed", + "year": 1872 + }, + { + "author": "Fyodor Dostoevsky", + "country": "Russia", + "imageLink": "images/the-brothers-karamazov.jpg", + "language": "Russian", + "link": "https://en.wikipedia.org/wiki/The_Brothers_Karamazov\n", + "pages": 824, + "title": "The Brothers Karamazov", + "year": 1880 + }, + { + "author": "George Eliot", + "country": "United Kingdom", + "imageLink": "images/middlemarch.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Middlemarch\n", + "pages": 800, + "title": "Middlemarch", + "year": 1871 + }, + { + "author": "Ralph Ellison", + "country": "United States", + "imageLink": "images/invisible-man.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Invisible_Man\n", + "pages": 581, + "title": "Invisible Man", + "year": 1952 + }, + { + "author": "Euripides", + "country": "Greece", + "imageLink": "images/medea.jpg", + "language": "Greek", + "link": "https://en.wikipedia.org/wiki/Medea_(play)\n", + "pages": 104, + "title": "Medea", + "year": -431 + }, + { + "author": "William Faulkner", + "country": "United States", + "imageLink": "images/absalom-absalom.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Absalom,_Absalom!\n", + "pages": 313, + "title": "Absalom, Absalom!", + "year": 1936 + }, + { + "author": "William Faulkner", + "country": "United States", + "imageLink": "images/the-sound-and-the-fury.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/The_Sound_and_the_Fury\n", + "pages": 326, + "title": "The Sound and the Fury", + "year": 1929 + }, + { + "author": "Gustave Flaubert", + "country": "France", + "imageLink": "images/madame-bovary.jpg", + "language": "French", + "link": "https://en.wikipedia.org/wiki/Madame_Bovary\n", + "pages": 528, + "title": "Madame Bovary", + "year": 1857 + }, + { + "author": "Gustave Flaubert", + "country": "France", + "imageLink": "images/l-education-sentimentale.jpg", + "language": "French", + "link": "https://en.wikipedia.org/wiki/Sentimental_Education\n", + "pages": 606, + "title": "Sentimental Education", + "year": 1869 + }, + { + "author": "Federico Garc\u00eda Lorca", + "country": "Spain", + "imageLink": "images/gypsy-ballads.jpg", + "language": "Spanish", + "link": "https://en.wikipedia.org/wiki/Gypsy_Ballads\n", + "pages": 218, + "title": "Gypsy Ballads", + "year": 1928 + }, + { + "author": "Gabriel Garc\u00eda M\u00e1rquez", + "country": "Colombia", + "imageLink": "images/one-hundred-years-of-solitude.jpg", + "language": "Spanish", + "link": "https://en.wikipedia.org/wiki/One_Hundred_Years_of_Solitude\n", + "pages": 417, + "title": "One Hundred Years of Solitude", + "year": 1967 + }, + { + "author": "Gabriel Garc\u00eda M\u00e1rquez", + "country": "Colombia", + "imageLink": "images/love-in-the-time-of-cholera.jpg", + "language": "Spanish", + "link": "https://en.wikipedia.org/wiki/Love_in_the_Time_of_Cholera\n", + "pages": 368, + "title": "Love in the Time of Cholera", + "year": 1985 + }, + { + "author": "Johann Wolfgang von Goethe", + "country": "Saxe-Weimar", + "imageLink": "images/faust.jpg", + "language": "German", + "link": "https://en.wikipedia.org/wiki/Goethe%27s_Faust\n", + "pages": 158, + "title": "Faust", + "year": 1832 + }, + { + "author": "Nikolai Gogol", + "country": "Russia", + "imageLink": "images/dead-souls.jpg", + "language": "Russian", + "link": "https://en.wikipedia.org/wiki/Dead_Souls\n", + "pages": 432, + "title": "Dead Souls", + "year": 1842 + }, + { + "author": "G\u00fcnter Grass", + "country": "Germany", + "imageLink": "images/the-tin-drum.jpg", + "language": "German", + "link": "https://en.wikipedia.org/wiki/The_Tin_Drum\n", + "pages": 600, + "title": "The Tin Drum", + "year": 1959 + }, + { + "author": "Jo\u00e3o Guimar\u00e3es Rosa", + "country": "Brazil", + "imageLink": "images/the-devil-to-pay-in-the-backlands.jpg", + "language": "Portuguese", + "link": "https://en.wikipedia.org/wiki/The_Devil_to_Pay_in_the_Backlands\n", + "pages": 494, + "title": "The Devil to Pay in the Backlands", + "year": 1956 + }, + { + "author": "Knut Hamsun", + "country": "Norway", + "imageLink": "images/hunger.jpg", + "language": "Norwegian", + "link": "https://en.wikipedia.org/wiki/Hunger_(Hamsun_novel)\n", + "pages": 176, + "title": "Hunger", + "year": 1890 + }, + { + "author": "Ernest Hemingway", + "country": "United States", + "imageLink": "images/the-old-man-and-the-sea.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/The_Old_Man_and_the_Sea\n", + "pages": 128, + "title": "The Old Man and the Sea", + "year": 1952 + }, + { + "author": "Homer", + "country": "Greece", + "imageLink": "images/the-iliad-of-homer.jpg", + "language": "Greek", + "link": "https://en.wikipedia.org/wiki/Iliad\n", + "pages": 608, + "title": "Iliad", + "year": -735 + }, + { + "author": "Homer", + "country": "Greece", + "imageLink": "images/the-odyssey-of-homer.jpg", + "language": "Greek", + "link": "https://en.wikipedia.org/wiki/Odyssey\n", + "pages": 374, + "title": "Odyssey", + "year": -800 + }, + { + "author": "Henrik Ibsen", + "country": "Norway", + "imageLink": "images/a-Dolls-house.jpg", + "language": "Norwegian", + "link": "https://en.wikipedia.org/wiki/A_Doll%27s_House\n", + "pages": 68, + "title": "A Doll's House", + "year": 1879 + }, + { + "author": "James Joyce", + "country": "Irish Free State", + "imageLink": "images/ulysses.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Ulysses_(novel)\n", + "pages": 228, + "title": "Ulysses", + "year": 1922 + }, + { + "author": "Franz Kafka", + "country": "Czechoslovakia", + "imageLink": "images/stories-of-franz-kafka.jpg", + "language": "German", + "link": "https://en.wikipedia.org/wiki/Franz_Kafka_bibliography#Short_stories\n", + "pages": 488, + "title": "Stories", + "year": 1924 + }, + { + "author": "Franz Kafka", + "country": "Czechoslovakia", + "imageLink": "images/the-trial.jpg", + "language": "German", + "link": "https://en.wikipedia.org/wiki/The_Trial\n", + "pages": 160, + "title": "The Trial", + "year": 1925 + }, + { + "author": "Franz Kafka", + "country": "Czechoslovakia", + "imageLink": "images/the-castle.jpg", + "language": "German", + "link": "https://en.wikipedia.org/wiki/The_Castle_(novel)\n", + "pages": 352, + "title": "The Castle", + "year": 1926 + }, + { + "author": "K\u0101lid\u0101sa", + "country": "India", + "imageLink": "images/the-recognition-of-shakuntala.jpg", + "language": "Sanskrit", + "link": "https://en.wikipedia.org/wiki/Abhij%C3%B1%C4%81na%C5%9B%C4%81kuntalam\n", + "pages": 147, + "title": "The recognition of Shakuntala", + "year": 150 + }, + { + "author": "Yasunari Kawabata", + "country": "Japan", + "imageLink": "images/the-sound-of-the-mountain.jpg", + "language": "Japanese", + "link": "https://en.wikipedia.org/wiki/The_Sound_of_the_Mountain\n", + "pages": 288, + "title": "The Sound of the Mountain", + "year": 1954 + }, + { + "author": "Nikos Kazantzakis", + "country": "Greece", + "imageLink": "images/zorba-the-greek.jpg", + "language": "Greek", + "link": "https://en.wikipedia.org/wiki/Zorba_the_Greek\n", + "pages": 368, + "title": "Zorba the Greek", + "year": 1946 + }, + { + "author": "D. H. Lawrence", + "country": "United Kingdom", + "imageLink": "images/sons-and-lovers.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Sons_and_Lovers\n", + "pages": 432, + "title": "Sons and Lovers", + "year": 1913 + }, + { + "author": "Halld\u00f3r Laxness", + "country": "Iceland", + "imageLink": "images/independent-people.jpg", + "language": "Icelandic", + "link": "https://en.wikipedia.org/wiki/Independent_People\n", + "pages": 470, + "title": "Independent People", + "year": 1934 + }, + { + "author": "Giacomo Leopardi", + "country": "Italy", + "imageLink": "images/poems-giacomo-leopardi.jpg", + "language": "Italian", + "link": "\n", + "pages": 184, + "title": "Poems", + "year": 1818 + }, + { + "author": "Doris Lessing", + "country": "United Kingdom", + "imageLink": "images/the-golden-notebook.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/The_Golden_Notebook\n", + "pages": 688, + "title": "The Golden Notebook", + "year": 1962 + }, + { + "author": "Astrid Lindgren", + "country": "Sweden", + "imageLink": "images/pippi-longstocking.jpg", + "language": "Swedish", + "link": "https://en.wikipedia.org/wiki/Pippi_Longstocking\n", + "pages": 160, + "title": "Pippi Longstocking", + "year": 1945 + }, + { + "author": "Lu Xun", + "country": "China", + "imageLink": "images/diary-of-a-madman.jpg", + "language": "Chinese", + "link": "https://en.wikipedia.org/wiki/A_Madman%27s_Diary\n", + "pages": 389, + "title": "Diary of a Madman", + "year": 1918 + }, + { + "author": "Naguib Mahfouz", + "country": "Egypt", + "imageLink": "images/children-of-gebelawi.jpg", + "language": "Arabic", + "link": "https://en.wikipedia.org/wiki/Children_of_Gebelawi\n", + "pages": 355, + "title": "Children of Gebelawi", + "year": 1959 + }, + { + "author": "Thomas Mann", + "country": "Germany", + "imageLink": "images/buddenbrooks.jpg", + "language": "German", + "link": "https://en.wikipedia.org/wiki/Buddenbrooks\n", + "pages": 736, + "title": "Buddenbrooks", + "year": 1901 + }, + { + "author": "Thomas Mann", + "country": "Germany", + "imageLink": "images/the-magic-mountain.jpg", + "language": "German", + "link": "https://en.wikipedia.org/wiki/The_Magic_Mountain\n", + "pages": 720, + "title": "The Magic Mountain", + "year": 1924 + }, + { + "author": "Herman Melville", + "country": "United States", + "imageLink": "images/moby-dick.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Moby-Dick\n", + "pages": 378, + "title": "Moby Dick", + "year": 1851 + }, + { + "author": "Michel de Montaigne", + "country": "France", + "imageLink": "images/essais.jpg", + "language": "French", + "link": "https://en.wikipedia.org/wiki/Essays_(Montaigne)\n", + "pages": 404, + "title": "Essays", + "year": 1595 + }, + { + "author": "Elsa Morante", + "country": "Italy", + "imageLink": "images/history.jpg", + "language": "Italian", + "link": "https://en.wikipedia.org/wiki/History_(novel)\n", + "pages": 600, + "title": "History", + "year": 1974 + }, + { + "author": "Toni Morrison", + "country": "United States", + "imageLink": "images/beloved.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Beloved_(novel)\n", + "pages": 321, + "title": "Beloved", + "year": 1987 + }, + { + "author": "Murasaki Shikibu", + "country": "Japan", + "imageLink": "images/the-tale-of-genji.jpg", + "language": "Japanese", + "link": "https://en.wikipedia.org/wiki/The_Tale_of_Genji\n", + "pages": 1360, + "title": "The Tale of Genji", + "year": 1006 + }, + { + "author": "Robert Musil", + "country": "Austria", + "imageLink": "images/the-man-without-qualities.jpg", + "language": "German", + "link": "https://en.wikipedia.org/wiki/The_Man_Without_Qualities\n", + "pages": 365, + "title": "The Man Without Qualities", + "year": 1931 + }, + { + "author": "Vladimir Nabokov", + "country": "Russia/United States", + "imageLink": "images/lolita.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Lolita\n", + "pages": 317, + "title": "Lolita", + "year": 1955 + }, + { + "author": "George Orwell", + "country": "United Kingdom", + "imageLink": "images/nineteen-eighty-four.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Nineteen_Eighty-Four\n", + "pages": 272, + "title": "Nineteen Eighty-Four", + "year": 1949 + }, + { + "author": "Ovid", + "country": "Roman Empire", + "imageLink": "images/the-metamorphoses-of-ovid.jpg", + "language": "Classical Latin", + "link": "https://en.wikipedia.org/wiki/Metamorphoses\n", + "pages": 576, + "title": "Metamorphoses", + "year": 100 + }, + { + "author": "Fernando Pessoa", + "country": "Portugal", + "imageLink": "images/the-book-of-disquiet.jpg", + "language": "Portuguese", + "link": "https://en.wikipedia.org/wiki/The_Book_of_Disquiet\n", + "pages": 272, + "title": "The Book of Disquiet", + "year": 1928 + }, + { + "author": "Edgar Allan Poe", + "country": "United States", + "imageLink": "images/tales-and-poems-of-edgar-allan-poe.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Edgar_Allan_Poe_bibliography#Tales\n", + "pages": 842, + "title": "Tales", + "year": 1950 + }, + { + "author": "Marcel Proust", + "country": "France", + "imageLink": "images/a-la-recherche-du-temps-perdu.jpg", + "language": "French", + "link": "https://en.wikipedia.org/wiki/In_Search_of_Lost_Time\n", + "pages": 2408, + "title": "In Search of Lost Time", + "year": 1920 + }, + { + "author": "Fran\u00e7ois Rabelais", + "country": "France", + "imageLink": "images/gargantua-and-pantagruel.jpg", + "language": "French", + "link": "https://en.wikipedia.org/wiki/Gargantua_and_Pantagruel\n", + "pages": 623, + "title": "Gargantua and Pantagruel", + "year": 1533 + }, + { + "author": "Juan Rulfo", + "country": "Mexico", + "imageLink": "images/pedro-paramo.jpg", + "language": "Spanish", + "link": "https://en.wikipedia.org/wiki/Pedro_P%C3%A1ramo\n", + "pages": 124, + "title": "Pedro P\u00e1ramo", + "year": 1955 + }, + { + "author": "Rumi", + "country": "Sultanate of Rum", + "imageLink": "images/the-masnavi.jpg", + "language": "Persian", + "link": "https://en.wikipedia.org/wiki/Masnavi\n", + "pages": 438, + "title": "The Masnavi", + "year": 1236 + }, + { + "author": "Salman Rushdie", + "country": "United Kingdom, India", + "imageLink": "images/midnights-children.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Midnight%27s_Children\n", + "pages": 536, + "title": "Midnight's Children", + "year": 1981 + }, + { + "author": "Saadi", + "country": "Persia, Persian Empire", + "imageLink": "images/bostan.jpg", + "language": "Persian", + "link": "https://en.wikipedia.org/wiki/Bustan_(book)\n", + "pages": 298, + "title": "Bostan", + "year": 1257 + }, + { + "author": "Tayeb Salih", + "country": "Sudan", + "imageLink": "images/season-of-migration-to-the-north.jpg", + "language": "Arabic", + "link": "https://en.wikipedia.org/wiki/Season_of_Migration_to_the_North\n", + "pages": 139, + "title": "Season of Migration to the North", + "year": 1966 + }, + { + "author": "Jos\u00e9 Saramago", + "country": "Portugal", + "imageLink": "images/blindness.jpg", + "language": "Portuguese", + "link": "https://en.wikipedia.org/wiki/Blindness_(novel)\n", + "pages": 352, + "title": "Blindness", + "year": 1995 + }, + { + "author": "William Shakespeare", + "country": "England", + "imageLink": "images/hamlet.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Hamlet\n", + "pages": 432, + "title": "Hamlet", + "year": 1603 + }, + { + "author": "William Shakespeare", + "country": "England", + "imageLink": "images/king-lear.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/King_Lear\n", + "pages": 384, + "title": "King Lear", + "year": 1608 + }, + { + "author": "William Shakespeare", + "country": "England", + "imageLink": "images/othello.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Othello\n", + "pages": 314, + "title": "Othello", + "year": 1609 + }, + { + "author": "Sophocles", + "country": "Greece", + "imageLink": "images/oedipus-the-king.jpg", + "language": "Greek", + "link": "https://en.wikipedia.org/wiki/Oedipus_the_King\n", + "pages": 88, + "title": "Oedipus the King", + "year": -430 + }, + { + "author": "Stendhal", + "country": "France", + "imageLink": "images/le-rouge-et-le-noir.jpg", + "language": "French", + "link": "https://en.wikipedia.org/wiki/The_Red_and_the_Black\n", + "pages": 576, + "title": "The Red and the Black", + "year": 1830 + }, + { + "author": "Laurence Sterne", + "country": "England", + "imageLink": "images/the-life-and-opinions-of-tristram-shandy.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/The_Life_and_Opinions_of_Tristram_Shandy,_Gentleman\n", + "pages": 640, + "title": "The Life And Opinions of Tristram Shandy", + "year": 1760 + }, + { + "author": "Italo Svevo", + "country": "Italy", + "imageLink": "images/confessions-of-zeno.jpg", + "language": "Italian", + "link": "https://en.wikipedia.org/wiki/Zeno%27s_Conscience\n", + "pages": 412, + "title": "Confessions of Zeno", + "year": 1923 + }, + { + "author": "Jonathan Swift", + "country": "Ireland", + "imageLink": "images/gullivers-travels.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Gulliver%27s_Travels\n", + "pages": 178, + "title": "Gulliver's Travels", + "year": 1726 + }, + { + "author": "Leo Tolstoy", + "country": "Russia", + "imageLink": "images/war-and-peace.jpg", + "language": "Russian", + "link": "https://en.wikipedia.org/wiki/War_and_Peace\n", + "pages": 1296, + "title": "War and Peace", + "year": 1867 + }, + { + "author": "Leo Tolstoy", + "country": "Russia", + "imageLink": "images/anna-karenina.jpg", + "language": "Russian", + "link": "https://en.wikipedia.org/wiki/Anna_Karenina\n", + "pages": 864, + "title": "Anna Karenina", + "year": 1877 + }, + { + "author": "Leo Tolstoy", + "country": "Russia", + "imageLink": "images/the-death-of-ivan-ilyich.jpg", + "language": "Russian", + "link": "https://en.wikipedia.org/wiki/The_Death_of_Ivan_Ilyich\n", + "pages": 92, + "title": "The Death of Ivan Ilyich", + "year": 1886 + }, + { + "author": "Mark Twain", + "country": "United States", + "imageLink": "images/the-adventures-of-huckleberry-finn.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Adventures_of_Huckleberry_Finn\n", + "pages": 224, + "title": "The Adventures of Huckleberry Finn", + "year": 1884 + }, + { + "author": "Valmiki", + "country": "India", + "imageLink": "images/ramayana.jpg", + "language": "Sanskrit", + "link": "https://en.wikipedia.org/wiki/Ramayana\n", + "pages": 152, + "title": "Ramayana", + "year": -450 + }, + { + "author": "Virgil", + "country": "Roman Empire", + "imageLink": "images/the-aeneid.jpg", + "language": "Classical Latin", + "link": "https://en.wikipedia.org/wiki/Aeneid\n", + "pages": 442, + "title": "The Aeneid", + "year": -23 + }, + { + "author": "Vyasa", + "country": "India", + "imageLink": "images/the-mahab-harata.jpg", + "language": "Sanskrit", + "link": "https://en.wikipedia.org/wiki/Mahabharata\n", + "pages": 276, + "title": "Mahabharata", + "year": -700 + }, + { + "author": "Walt Whitman", + "country": "United States", + "imageLink": "images/leaves-of-grass.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Leaves_of_Grass\n", + "pages": 152, + "title": "Leaves of Grass", + "year": 1855 + }, + { + "author": "Virginia Woolf", + "country": "United Kingdom", + "imageLink": "images/mrs-dalloway.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/Mrs_Dalloway\n", + "pages": 216, + "title": "Mrs Dalloway", + "year": 1925 + }, + { + "author": "Virginia Woolf", + "country": "United Kingdom", + "imageLink": "images/to-the-lighthouse.jpg", + "language": "English", + "link": "https://en.wikipedia.org/wiki/To_the_Lighthouse\n", + "pages": 209, + "title": "To the Lighthouse", + "year": 1927 + }, + { + "author": "Marguerite Yourcenar", + "country": "France/Belgium", + "imageLink": "images/memoirs-of-hadrian.jpg", + "language": "French", + "link": "https://en.wikipedia.org/wiki/Memoirs_of_Hadrian\n", + "pages": 408, + "title": "Memoirs of Hadrian", + "year": 1951 + } +] \ No newline at end of file diff --git a/magazines.json b/magazines.json new file mode 100644 index 0000000..a3c7dea --- /dev/null +++ b/magazines.json @@ -0,0 +1,802 @@ +[ + { + "Rang": 1, + "Titel": "ADAC Motorwelt", + "Auflage": "13.705.032", + "Gruppe": "Publikum", + "Sachgruppe": "Motorpresse", + "Verlag / Herausgeber": "ADAC" + }, + { + "Rang": 2, + "Titel": "Apotheken-Umschau", + "Auflage": "9.616.642", + "Gruppe": "Kunden", + "Sachgruppe": "Apotheken/Medizin/Gesundheit", + "Verlag / Herausgeber": "Wort & Bild Verlag" + }, + { + "Rang": 3, + "Titel": "Bleibgesund", + "Auflage": "6.423.491", + "Gruppe": "Kunden", + "Sachgruppe": "Medizin/Gesundheit", + "Verlag / Herausgeber": "wdv-Gruppe" + }, + { + "Rang": 4, + "Titel": "bleibgesund 60", + "Auflage": "3.192.922", + "Gruppe": "Kunden", + "Sachgruppe": "Medizin/Gesundheit", + "Verlag / Herausgeber": "wdv-Gruppe" + }, + { + "Rang": 5, + "Titel": "tv14", + "Auflage": "2.389.661", + "Gruppe": "Publikum", + "Sachgruppe": "Programmzeitschriften", + "Verlag / Herausgeber": "Bauer Media Group" + }, + { + "Rang": 6, + "Titel": "metallzeitung", + "Auflage": "2.227.205", + "Gruppe": "Publikum", + "Sachgruppe": "Aktuelle Zeitschriften und Magazine", + "Verlag / Herausgeber": "IG Metall" + }, + { + "Rang": 7, + "Titel": "ver.di PUBLIK", + "Auflage": "1.899.122", + "Gruppe": "Publikum", + "Sachgruppe": "Sonstige Zeitschriften National", + "Verlag / Herausgeber": "ver.di" + }, + { + "Rang": 8, + "Titel": "TV Digital", + "Auflage": "1.771.022", + "Gruppe": "Publikum", + "Sachgruppe": "Programmzeitschriften", + "Verlag / Herausgeber": "Funke Mediengruppe" + }, + { + "Rang": 9, + "Titel": "Ratgeber/Meine Apotheke", + "Auflage": "1.728.602", + "Gruppe": "Kunden", + "Sachgruppe": "Apotheken/Medizin/Gesundheit", + "Verlag / Herausgeber": "Gebr. Storck GmbH & Co. Verlags-oHG" + }, + { + "Rang": 10, + "Titel": "Senioren Ratgeber", + "Auflage": "1.727.317", + "Gruppe": "Kunden", + "Sachgruppe": "Apotheken/Medizin/Gesundheit", + "Verlag / Herausgeber": "Wort & Bild Verlag" + }, + { + "Rang": 11, + "Titel": "Mit Liebe - Das Genussmagazin", + "Auflage": "1.668.550", + "Gruppe": "Kunden", + "Sachgruppe": "Lebensmittel/Kochen/Haushalt", + "Verlag / Herausgeber": "EDEKA Verlagsgesellschaft mbH" + }, + { + "Rang": 12, + "Titel": "Das Haus", + "Auflage": "1.598.049", + "Gruppe": "Publikum", + "Sachgruppe": "Wohn- und Gartenzeitschriften", + "Verlag / Herausgeber": "Hubert Burda Media" + }, + { + "Rang": 13, + "Titel": "Mein Eigenheim, Wohnen & Leben", + "Auflage": "1.586.533", + "Gruppe": "Publikum", + "Sachgruppe": "Wohn- und Gartenzeitschriften", + "Verlag / Herausgeber": "J.Fink Verlag GmbH & Co. KG" + }, + { + "Rang": 14, + "Titel": "VdK-Zeitung", + "Auflage": "1.559.980", + "Gruppe": "Publikum", + "Sachgruppe": "Aktuelle Zeitschriften und Magazine", + "Verlag / Herausgeber": "Sozialverband VdK Deutschland" + }, + { + "Rang": 15, + "Titel": "medizini", + "Auflage": "1.491.475", + "Gruppe": "Kunden", + "Sachgruppe": "Apotheken/Medizin/Gesundheit", + "Verlag / Herausgeber": "Wort & Bild Verlag" + }, + { + "Rang": 16, + "Titel": "Wohnglück", + "Auflage": "1.404.263", + "Gruppe": "Publikum", + "Sachgruppe": "Wohn- und Gartenzeitschriften", + "Verlag / Herausgeber": "BELLEVUE AND MORE GmbH" + }, + { + "Rang": 17, + "Titel": "Diabetes Ratgeber", + "Auflage": "1.200.450", + "Gruppe": "Kunden", + "Sachgruppe": "Apotheken/Medizin/Gesundheit", + "Verlag / Herausgeber": "Wort & Bild Verlag" + }, + { + "Rang": 18, + "Titel": "TV Direkt", + "Auflage": "1.185.933", + "Gruppe": "Publikum", + "Sachgruppe": "Programmzeitschriften", + "Verlag / Herausgeber": "Funke Mediengruppe" + }, + { + "Rang": 19, + "Titel": "TV-Movie", + "Auflage": "1.166.838", + "Gruppe": "Publikum", + "Sachgruppe": "Programmzeitschriften", + "Verlag / Herausgeber": "Bauer Media Group" + }, + { + "Rang": 20, + "Titel": "Hörzu", + "Auflage": "1.125.985", + "Gruppe": "Publikum", + "Sachgruppe": "Programmzeitschriften", + "Verlag / Herausgeber": "Funke Mediengruppe" + }, + { + "Rang": 21, + "Titel": "vigo Gesundheit - Das Kundenmagazin", + "Auflage": "1.121.050", + "Gruppe": "Kunden", + "Sachgruppe": "Medizin/Gesundheit", + "Verlag / Herausgeber": "wdv-Gruppe" + }, + { + "Rang": 22, + "Titel": "Johanniter", + "Auflage": "1.106.507", + "Gruppe": "Publikum", + "Sachgruppe": "Gesundheitsmagazine", + "Verlag / Herausgeber": "Die Johanniter" + }, + { + "Rang": 23, + "Titel": "ASB Magazin", + "Auflage": "1.104.904", + "Gruppe": "Publikum", + "Sachgruppe": "Gesundheitsmagazine", + "Verlag / Herausgeber": "Arbeiter-Samariter-Bund Deutschland" + }, + { + "Rang": 24, + "Titel": "Wohnen - Das Magazin für Bauen, Einrichten & Lebensart", + "Auflage": "1.056.140", + "Gruppe": "Publikum", + "Sachgruppe": "Wohn- und Gartenzeitschriften", + "Verlag / Herausgeber": "HMC Verlag Hamburg Media Company GmbH" + }, + { + "Rang": 25, + "Titel": "Landlust – Die schönsten Seiten des Landlebens", + "Auflage": "1.040.119", + "Gruppe": "Publikum", + "Sachgruppe": "Wohn- und Gartenzeitschriften", + "Verlag / Herausgeber": "Landwirtschaftsverlag Münster" + }, + { + "Rang": 26, + "Titel": "on job", + "Auflage": "1.009.720", + "Gruppe": "Kunden", + "Sachgruppe": "Medizin/Gesundheit", + "Verlag / Herausgeber": "wdv-Gruppe" + }, + { + "Rang": 27, + "Titel": "Neue Apotheken Illustrierte", + "Auflage": "1.007.370", + "Gruppe": "Kunden", + "Sachgruppe": "Apotheken/Medizin/Gesundheit", + "Verlag / Herausgeber": "Bundesvereinigung Deutscher Apothekerverbände" + }, + { + "Rang": 28, + "Titel": "TV Spielfilm", + "Auflage": 934.291, + "Gruppe": "Publikum", + "Sachgruppe": "Programmzeitschriften", + "Verlag / Herausgeber": "Hubert Burda Media" + }, + { + "Rang": 29, + "Titel": "Auf einen Blick", + "Auflage": 921.049, + "Gruppe": "Publikum", + "Sachgruppe": "Programmzeitschriften", + "Verlag / Herausgeber": "Bauer Media Group" + }, + { + "Rang": 30, + "Titel": "Schrot & Korn Naturkostmagazin", + "Auflage": 888.063, + "Gruppe": "Kunden", + "Sachgruppe": "Lebensmittel", + "Verlag / Herausgeber": "Bio Verlag GmbH" + }, + { + "Rang": 31, + "Titel": "Der Spiegel", + "Auflage": 843.085, + "Gruppe": "Publikum", + "Sachgruppe": "Aktuelle Zeitschriften und Magazine", + "Verlag / Herausgeber": "SPIEGEL-Verlag" + }, + { + "Rang": 32, + "Titel": "Bild der Frau", + "Auflage": 832.226, + "Gruppe": "Publikum", + "Sachgruppe": "Wöchentliche Frauenzeitschriften", + "Verlag / Herausgeber": "Funke Mediengruppe" + }, + { + "Rang": 33, + "Titel": "extra / tour", + "Auflage": 774.431, + "Gruppe": "Publikum", + "Sachgruppe": "Reisezeitschriften", + "Verlag / Herausgeber": "Deutsches Jugendherbergswerk" + }, + { + "Rang": 34, + "Titel": "Freizeit Revue", + "Auflage": 764.162, + "Gruppe": "Publikum", + "Sachgruppe": "Wöchentliche Frauenzeitschriften", + "Verlag / Herausgeber": "Hubert Burda Media" + }, + { + "Rang": 35, + "Titel": "Baby und Familie", + "Auflage": 749.425, + "Gruppe": "Kunden", + "Sachgruppe": "Apotheken/Medizin/Gesundheit", + "Verlag / Herausgeber": "Wort & Bild Verlag" + }, + { + "Rang": 36, + "Titel": "KONPRESS", + "Auflage": 731.664, + "Gruppe": "Publikum", + "Sachgruppe": "Konfessionelle Zeitschriften", + "Verlag / Herausgeber": "KONPRESS-Medien eG" + }, + { + "Rang": 37, + "Titel": "Stern", + "Auflage": 725.959, + "Gruppe": "Publikum", + "Sachgruppe": "Aktuelle Zeitschriften und Magazine", + "Verlag / Herausgeber": "Gruner + Jahr" + }, + { + "Rang": 38, + "Titel": "JUNIOR Kinderzeitschriften", + "Auflage": 679.795, + "Gruppe": "Kunden", + "Sachgruppe": "Apotheken/Medizin/Gesundheit", + "Verlag / Herausgeber": "" + }, + { + "Rang": 39, + "Titel": "on", + "Auflage": 654.628, + "Gruppe": "Kunden", + "Sachgruppe": "Medizin/Gesundheit", + "Verlag / Herausgeber": "wdv-Gruppe" + }, + { + "Rang": 40, + "Titel": "TV Hören und Sehen", + "Auflage": 653.399, + "Gruppe": "Publikum", + "Sachgruppe": "Programmzeitschriften", + "Verlag / Herausgeber": "Bauer Media Group" + }, + { + "Rang": 41, + "Titel": "MieterZeitung", + "Auflage": 643.231, + "Gruppe": "Kunden", + "Sachgruppe": "Sonstige", + "Verlag / Herausgeber": "Deutscher Mieterbund" + }, + { + "Rang": 42, + "Titel": "Kompakt", + "Auflage": 639.69, + "Gruppe": "Publikum", + "Sachgruppe": "Sonstige Zeitschriften National", + "Verlag / Herausgeber": "IG Bergbau, Chemie, Energie" + }, + { + "Rang": 43, + "Titel": "DAV Panorama", + "Auflage": 638.493, + "Gruppe": "Publikum", + "Sachgruppe": "Sportzeitschriften", + "Verlag / Herausgeber": "Deutscher Alpenverein" + }, + { + "Rang": 44, + "Titel": "NurTV", + "Auflage": 618.623, + "Gruppe": "Publikum", + "Sachgruppe": "Programmzeitschriften", + "Verlag / Herausgeber": "Funke Mediengruppe" + }, + { + "Rang": 45, + "Titel": "Neue Post", + "Auflage": 613.572, + "Gruppe": "Publikum", + "Sachgruppe": "Wöchentliche Frauenzeitschriften", + "Verlag / Herausgeber": "Bauer Media Group" + }, + { + "Rang": 46, + "Titel": "ACE-Lenkrad", + "Auflage": 580.877, + "Gruppe": "Publikum", + "Sachgruppe": "Motorpresse", + "Verlag / Herausgeber": "Auto Club Europa" + }, + { + "Rang": 47, + "Titel": "Der Vermögensberater", + "Auflage": 564.27, + "Gruppe": "Publikum", + "Sachgruppe": "Wirtschaftspresse", + "Verlag / Herausgeber": "Deutsche Vermögensberatung" + }, + { + "Rang": 48, + "Titel": "tv pur", + "Auflage": 561.959, + "Gruppe": "Publikum", + "Sachgruppe": "Programmzeitschriften", + "Verlag / Herausgeber": "Bauer Media Group" + }, + { + "Rang": 49, + "Titel": "DBB-Magazin", + "Auflage": 542.491, + "Gruppe": "Fach", + "Sachgruppe": "Recht und Verwaltung", + "Verlag / Herausgeber": "dbb beamtenbund und tarifunion" + }, + { + "Rang": 50, + "Titel": "Fondsmagazin", + "Auflage": 538.389, + "Gruppe": "Kunden", + "Sachgruppe": "Finanzdienstleistungen", + "Verlag / Herausgeber": "" + }, + { + "Rang": 51, + "Titel": "Brigitte", + "Auflage": 533.661, + "Gruppe": "Publikum", + "Sachgruppe": "14-tägliche Frauenzeitschriften", + "Verlag / Herausgeber": "Gruner + Jahr" + }, + { + "Rang": 52, + "Titel": "rotkreuzmagazin für Mitglieder, Freunde und", + "Auflage": 531.254, + "Gruppe": "Publikum", + "Sachgruppe": "Gesundheitsmagazine", + "Verlag / Herausgeber": "" + }, + { + "Rang": 53, + "Titel": "Bunte", + "Auflage": 519.57, + "Gruppe": "Publikum", + "Sachgruppe": "Aktuelle Zeitschriften und Magazine", + "Verlag / Herausgeber": "Hubert Burda Media" + }, + { + "Rang": 54, + "Titel": "Focus", + "Auflage": 508.489, + "Gruppe": "Publikum", + "Sachgruppe": "Aktuelle Zeitschriften und Magazine", + "Verlag / Herausgeber": "Hubert Burda Media" + }, + { + "Rang": 55, + "Titel": "HausArzt - PatientenMagazin", + "Auflage": 479.45, + "Gruppe": "Kunden", + "Sachgruppe": "Apotheken/Medizin/Gesundheit", + "Verlag / Herausgeber": "Wort & Bild Verlag" + }, + { + "Rang": 56, + "Titel": "Frau und Mutter", + "Auflage": 474.649, + "Gruppe": "Publikum", + "Sachgruppe": "Monatliche Frauenzeitschriften", + "Verlag / Herausgeber": "Katholische Frauengemeinschaft Deutschlands" + }, + { + "Rang": 57, + "Titel": "Auto Bild", + "Auflage": 461.539, + "Gruppe": "Publikum", + "Sachgruppe": "Motorpresse", + "Verlag / Herausgeber": "Axel Springer" + }, + { + "Rang": 58, + "Titel": "mkv Apotheken-Kombi TV Gesund & Leben, LindaMagazin", + "Auflage": 458.807, + "Gruppe": "Kunden", + "Sachgruppe": "Apotheken/Medizin/Gesundheit", + "Verlag / Herausgeber": "mkv medienkontor Verlagsgesellschaft mbH & Co. KG" + }, + { + "Rang": 59, + "Titel": "Funk Uhr", + "Auflage": 453.55, + "Gruppe": "Publikum", + "Sachgruppe": "Programmzeitschriften", + "Verlag / Herausgeber": "Axel Springer" + }, + { + "Rang": 60, + "Titel": "eve Magazin", + "Auflage": 441.139, + "Gruppe": "Kunden", + "Sachgruppe": "Lebensmittel", + "Verlag / Herausgeber": "TERRITORY CTR GmbH" + }, + { + "Rang": 61, + "Titel": "Das Neue Blatt", + "Auflage": 433.918, + "Gruppe": "Publikum", + "Sachgruppe": "Wöchentliche Frauenzeitschriften", + "Verlag / Herausgeber": "Bauer Media Group" + }, + { + "Rang": 62, + "Titel": "Freizeitwoche", + "Auflage": 427.633, + "Gruppe": "Publikum", + "Sachgruppe": "Wöchentliche Frauenzeitschriften", + "Verlag / Herausgeber": "Bauer Media Group" + }, + { + "Rang": 63, + "Titel": "vigo GESUNDHEIT 65", + "Auflage": 425.688, + "Gruppe": "Kunden", + "Sachgruppe": "Medizin/Gesundheit", + "Verlag / Herausgeber": "" + }, + { + "Rang": 64, + "Titel": "SoVD Zeitung - Soziales im Blick", + "Auflage": 410.809, + "Gruppe": "Fach", + "Sachgruppe": "Sonstige", + "Verlag / Herausgeber": "" + }, + { + "Rang": 65, + "Titel": "Tina", + "Auflage": 403.493, + "Gruppe": "Publikum", + "Sachgruppe": "Wöchentliche Frauenzeitschriften", + "Verlag / Herausgeber": "Bauer Media Group" + }, + { + "Rang": 66, + "Titel": "Reader´s Digest Das Beste", + "Auflage": 401.698, + "Gruppe": "Publikum", + "Sachgruppe": "Aktuelle Zeitschriften und Magazine", + "Verlag / Herausgeber": "Reader’s Digest Association" + }, + { + "Rang": 67, + "Titel": "Vorwärts", + "Auflage": 394.892, + "Gruppe": "Publikum", + "Sachgruppe": "Sonstige Zeitschriften National", + "Verlag / Herausgeber": "Sozialdemokratische Partei Deutschlands" + }, + { + "Rang": 68, + "Titel": "Meine Familie & ich", + "Auflage": 390.339, + "Gruppe": "Publikum", + "Sachgruppe": "Esszeitschriften", + "Verlag / Herausgeber": "" + }, + { + "Rang": 69, + "Titel": "Fernsehwoche", + "Auflage": 388.28, + "Gruppe": "Publikum", + "Sachgruppe": "Programmzeitschriften", + "Verlag / Herausgeber": "Bauer Media Group" + }, + { + "Rang": 70, + "Titel": "Die Aktuelle", + "Auflage": 369.428, + "Gruppe": "Publikum", + "Sachgruppe": "Wöchentliche Frauenzeitschriften", + "Verlag / Herausgeber": "FUNKE Women Group GmbH" + }, + { + "Rang": 71, + "Titel": "Freundin", + "Auflage": 366.039, + "Gruppe": "Publikum", + "Sachgruppe": "14-tägliche Frauenzeitschriften", + "Verlag / Herausgeber": "Hubert Burda Media" + }, + { + "Rang": 72, + "Titel": "Sport Bild", + "Auflage": 357.91, + "Gruppe": "Publikum", + "Sachgruppe": "Sportzeitschriften", + "Verlag / Herausgeber": "Axel Springer" + }, + { + "Rang": 73, + "Titel": "Familienheim und Garten", + "Auflage": 357.712, + "Gruppe": "Fach", + "Sachgruppe": "Freizeit und Hobby", + "Verlag / Herausgeber": "" + }, + { + "Rang": 74, + "Titel": "InStyle", + "Auflage": 357.418, + "Gruppe": "Publikum", + "Sachgruppe": "Monatliche Frauenzeitschriften", + "Verlag / Herausgeber": "Hubert Burda Media" + }, + { + "Rang": 75, + "Titel": "Freizeit Spass", + "Auflage": 356.487, + "Gruppe": "Publikum", + "Sachgruppe": "Wöchentliche Frauenzeitschriften", + "Verlag / Herausgeber": "Hubert Burda Media" + }, + { + "Rang": 76, + "Titel": "auto motor und sport", + "Auflage": 352.622, + "Gruppe": "Publikum", + "Sachgruppe": "Motorpresse", + "Verlag / Herausgeber": "Motor Presse Stuttgart" + }, + { + "Rang": 77, + "Titel": "Deutsches Ärzteblatt", + "Auflage": 351.982, + "Gruppe": "Fach", + "Sachgruppe": "Medizin und Gesundheitswesen", + "Verlag / Herausgeber": "Deutscher Ärzte-Verlag" + }, + { + "Rang": 78, + "Titel": "Laviva", + "Auflage": 335.934, + "Gruppe": "Publikum", + "Sachgruppe": "Monatliche Frauenzeitschriften", + "Verlag / Herausgeber": "Axel Springer Vertriebsservice GmbH" + }, + { + "Rang": 79, + "Titel": "mein schönes Land", + "Auflage": 335.33, + "Gruppe": "Publikum", + "Sachgruppe": "Wohn- und Gartenzeitschriften", + "Verlag / Herausgeber": "" + }, + { + "Rang": 80, + "Titel": "Computer Bild", + "Auflage": 334.72, + "Gruppe": "Publikum", + "Sachgruppe": "IT-/Telekommunikationszeitschriften", + "Verlag / Herausgeber": "Axel Springer" + }, + { + "Rang": 81, + "Titel": "TV für mich", + "Auflage": 334.4, + "Gruppe": "Publikum", + "Sachgruppe": "Programmzeitschriften", + "Verlag / Herausgeber": "Gong Verlag" + }, + { + "Rang": 82, + "Titel": "Lufthansa Magazin Exclusive", + "Auflage": 317.446, + "Gruppe": "Kunden", + "Sachgruppe": "Reisen/Verkehrsgesellschaften", + "Verlag / Herausgeber": "" + }, + { + "Rang": 83, + "Titel": "Gala", + "Auflage": 315.745, + "Gruppe": "Publikum", + "Sachgruppe": "Aktuelle Zeitschriften und Magazine", + "Verlag / Herausgeber": "Gruner + Jahr" + }, + { + "Rang": 84, + "Titel": "Glamour", + "Auflage": 314.832, + "Gruppe": "Publikum", + "Sachgruppe": "Monatliche Frauenzeitschriften", + "Verlag / Herausgeber": "Condé Nast Verlag" + }, + { + "Rang": 85, + "Titel": "SUPERillu", + "Auflage": 314.807, + "Gruppe": "Publikum", + "Sachgruppe": "Aktuelle Zeitschriften und Magazine", + "Verlag / Herausgeber": "Hubert Burda Media" + }, + { + "Rang": 86, + "Titel": "Gartenfreund/Siedlung und Eigenheim", + "Auflage": 314.601, + "Gruppe": "Publikum", + "Sachgruppe": "Wohn- und Gartenzeitschriften", + "Verlag / Herausgeber": "" + }, + { + "Rang": 87, + "Titel": "Naturschutz heute", + "Auflage": 313.871, + "Gruppe": "Publikum", + "Sachgruppe": "Naturzeitschriften", + "Verlag / Herausgeber": "NABU Media-Agentur" + }, + { + "Rang": 88, + "Titel": "Für Sie", + "Auflage": 307.31, + "Gruppe": "Publikum", + "Sachgruppe": "14-tägliche Frauenzeitschriften", + "Verlag / Herausgeber": "Jahreszeiten Verlag" + }, + { + "Rang": 89, + "Titel": "Deutsches Ärzteblatt Kombi Praxis/Klinik", + "Auflage": 297.952, + "Gruppe": "Fach", + "Sachgruppe": "Medizin und Gesundheitswesen", + "Verlag / Herausgeber": "" + }, + { + "Rang": 90, + "Titel": "Mein schöner Garten", + "Auflage": 297.636, + "Gruppe": "Publikum", + "Sachgruppe": "Wohn- und Gartenzeitschriften", + "Verlag / Herausgeber": "Hubert Burda Media" + }, + { + "Rang": 91, + "Titel": "TV Today", + "Auflage": 287.221, + "Gruppe": "Publikum", + "Sachgruppe": "Programmzeitschriften", + "Verlag / Herausgeber": "Hubert Burda Media" + }, + { + "Rang": 92, + "Titel": "on uni", + "Auflage": 279.705, + "Gruppe": "Kunden", + "Sachgruppe": "Medizin/Gesundheit", + "Verlag / Herausgeber": "wdv-Gruppe" + }, + { + "Rang": 93, + "Titel": "Cosmopolitan", + "Auflage": 276.314, + "Gruppe": "Publikum", + "Sachgruppe": "Monatliche Frauenzeitschriften", + "Verlag / Herausgeber": "Bauer Media Group" + }, + { + "Rang": 94, + "Titel": "Land IDEE", + "Auflage": 272.838, + "Gruppe": "Publikum", + "Sachgruppe": "Wohn- und Gartenzeitschriften", + "Verlag / Herausgeber": "Funke Mediengruppe" + }, + { + "Rang": 95, + "Titel": "Frau im Trend", + "Auflage": 272.295, + "Gruppe": "Publikum", + "Sachgruppe": "Wöchentliche Frauenzeitschriften", + "Verlag / Herausgeber": "Hubert Burda Media" + }, + { + "Rang": 96, + "Titel": "c't magazin für computertechnik", + "Auflage": 270.517, + "Gruppe": "Publikum", + "Sachgruppe": "IT-/Telekommunikationszeitschriften", + "Verlag / Herausgeber": "Heise Zeitschriften Verlag" + }, + { + "Rang": 97, + "Titel": "kinder!", + "Auflage": 269.841, + "Gruppe": "Publikum", + "Sachgruppe": "Elternzeitschriften", + "Verlag / Herausgeber": "Junior-Verlag GmbH & Co. KG (Hamburg)" + }, + { + "Rang": 98, + "Titel": "TV piccolino plus + (TV piccolino+TV Genie+My TV)", + "Auflage": 266.345, + "Gruppe": "Publikum", + "Sachgruppe": "Programmzeitschriften", + "Verlag / Herausgeber": "" + }, + { + "Rang": 99, + "Titel": "Erziehung und Wissenschaft", + "Auflage": 263.359, + "Gruppe": "Fach", + "Sachgruppe": "Erziehung und Bildung", + "Verlag / Herausgeber": "STAMM Verlag GmbH" + }, + { + "Rang": 100, + "Titel": "ACV Profil", + "Auflage": 257.7, + "Gruppe": "Publikum", + "Sachgruppe": "Motorpresse", + "Verlag / Herausgeber": "" + } +] \ No newline at end of file From b3057362beef5e535713cf279871f5c43f092cbd Mon Sep 17 00:00:00 2001 From: nek0 Date: Thu, 4 Jun 2020 08:33:30 +0200 Subject: [PATCH 2/4] create new empty database if not exists --- Program.cs | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Program.cs b/Program.cs index 4c70bfd..2f1d4df 100644 --- a/Program.cs +++ b/Program.cs @@ -1,7 +1,9 @@ using System; +using System.IO; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using Microsoft.Data.Sqlite; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; @@ -13,9 +15,37 @@ namespace BuecherwurmAPI { public static void Main(string[] args) { + if (!File.Exists("LongWormMemory.db")) + { + CreateNewEmptyDB(); + MakeImports(); + } CreateHostBuilder(args).Build().Run(); } + private static void MakeImports() + { + throw new NotImplementedException(); + } + + private static void CreateNewEmptyDB() + { + File.Create("LongWormMemory.db"); + var connectionBuilder = new SqliteConnectionStringBuilder {DataSource = "LongWormMemory.db"}; + var connection = new SqliteConnection(connectionBuilder.ConnectionString); + connection.Open(); + using (var command = connection.CreateCommand()) + { + command.CommandText = "CREATE TABLE Lends (Id INTEGER NOT NULL PRIMARY KEY, ItemId INTEGER NOT NULL, ReturnDate TEXT NOT NULL, Customer TEXT NOT NULL, Returned INTEGER NOT NULL)"; + command.ExecuteNonQuery(); + command.CommandText = "CREATE TABLE Items (ItemId INTEGER NOT NULL PRIMARY KEY, BookId INTEGER NOT NULL)"; + command.ExecuteNonQuery(); + command.CommandText = "CREATE TABLE Books (ProductId INTEGER PRIMARY KEY, Name TEXT, Author TEXT, Country TEXT, Link TEXT, Language TEXT, Pages INTEGER, Year INTEGER, Category INTEGER, ImageLink TEXT, LendTime INTEGER, LendType INTEGER)"; + command.ExecuteNonQuery(); + } + } + + public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => From 27392c97999979c8fc322c985b015dea11a719a6 Mon Sep 17 00:00:00 2001 From: nek0 Date: Thu, 4 Jun 2020 09:39:27 +0200 Subject: [PATCH 3/4] Rename Table Books to Products to reflect magazines --- Models/KatalogModel.cs | 14 +++++++------- Program.cs | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Models/KatalogModel.cs b/Models/KatalogModel.cs index 64f2347..1de40a0 100644 --- a/Models/KatalogModel.cs +++ b/Models/KatalogModel.cs @@ -27,14 +27,14 @@ namespace BuecherwurmAPI.Models using (var command = _dbConnection.CreateCommand()) { - command.CommandText = @"SELECT * FROM Books"; + command.CommandText = @"SELECT * FROM Products"; var dataReader = command.ExecuteReader(); while (dataReader.Read()) { books.Add(new Book { - Name = (string) dataReader["Books"], + Name = (string) dataReader["Name"], Author = (string) dataReader["Author"], Country = (string) dataReader["Country"], Link = (string) dataReader["Link"], @@ -57,12 +57,12 @@ namespace BuecherwurmAPI.Models using (var command = _dbConnection.CreateCommand()) { command.Parameters.Add(new SqliteParameter("@id", SqliteType.Integer)).Value = id; - command.CommandText = @"SELECT * FROM Books WHERE ProductId = @id"; + command.CommandText = @"SELECT * FROM Products WHERE ProductId = @id"; var dataReader = command.ExecuteReader(); var book = new Book { - Name = (string) dataReader["Books"], + Name = (string) dataReader["Name"], Author = (string) dataReader["Author"], Country = (string) dataReader["Country"], Link = (string) dataReader["Link"], @@ -83,7 +83,7 @@ namespace BuecherwurmAPI.Models using (var command = _dbConnection.CreateCommand()) { command.Parameters.Add(new SqliteParameter("@id", SqliteType.Integer)).Value = id; - command.CommandText = @"DELETE * FROM Books WHERE ProductId= @id"; + command.CommandText = @"DELETE * FROM Produkts WHERE ProductId= @id"; var dataReader = command.ExecuteReader(); } } @@ -94,7 +94,7 @@ namespace BuecherwurmAPI.Models { // funktioniert das so? //muss ProduktId übergeben werden? - command.CommandText = @"INSERT INTO Books (Name, Author, Country, Link, Language, Pages, Year, ProductId, Category, ImageLink, LendTime, LendType) VALUES (@Name, @Author, @Country, @Link, @Language, @Pages, @Year, NULL, @Category, @ImageLink, @LendTime, @LendType )"; + command.CommandText = @"INSERT INTO Products (Name, Author, Country, Link, Language, Pages, Year, ProductId, Category, ImageLink, LendTime, LendType) VALUES (@Name, @Author, @Country, @Link, @Language, @Pages, @Year, NULL, @Category, @ImageLink, @LendTime, @LendType )"; command.Parameters.Add(new SqliteParameter("@Name", book.Name)); command.Parameters.Add(new SqliteParameter("@Author", book.Author)); @@ -126,7 +126,7 @@ namespace BuecherwurmAPI.Models { // funktioniert das so? command.Parameters.Add(new SqliteParameter("@id", id)); - command.CommandText = @"UPDATE Books SET (Name, Author, Country, Link, Language, Pages, Year, Category, ImageLink, LendTime, LendType) = (@Name, @Author, @Country, @Link, @Language, @Pages, @Year, @Category, @ImageLink, @LendTime, @LendType ) WHERE ProductId = @id"; + command.CommandText = @"UPDATE Products SET (Name, Author, Country, Link, Language, Pages, Year, Category, ImageLink, LendTime, LendType) = (@Name, @Author, @Country, @Link, @Language, @Pages, @Year, @Category, @ImageLink, @LendTime, @LendType ) WHERE ProductId = @id"; command.Parameters.Add(new SqliteParameter("@Name", book.Name)); command.Parameters.Add(new SqliteParameter("@Author", book.Author)); diff --git a/Program.cs b/Program.cs index 2f1d4df..3c8c66b 100644 --- a/Program.cs +++ b/Program.cs @@ -40,7 +40,7 @@ namespace BuecherwurmAPI command.ExecuteNonQuery(); command.CommandText = "CREATE TABLE Items (ItemId INTEGER NOT NULL PRIMARY KEY, BookId INTEGER NOT NULL)"; command.ExecuteNonQuery(); - command.CommandText = "CREATE TABLE Books (ProductId INTEGER PRIMARY KEY, Name TEXT, Author TEXT, Country TEXT, Link TEXT, Language TEXT, Pages INTEGER, Year INTEGER, Category INTEGER, ImageLink TEXT, LendTime INTEGER, LendType INTEGER)"; + command.CommandText = "CREATE TABLE Products (ProductId INTEGER PRIMARY KEY, Name TEXT, Author TEXT, Country TEXT, Link TEXT, Language TEXT, Pages INTEGER, Year INTEGER, Category INTEGER, ImageLink TEXT, LendTime INTEGER, LendType INTEGER)"; command.ExecuteNonQuery(); } } From 27da06701598475f5d0db3554f7df7911735044f Mon Sep 17 00:00:00 2001 From: nek0 Date: Thu, 4 Jun 2020 14:04:56 +0200 Subject: [PATCH 4/4] made imports, added magazine, DB self-init and fix --- Controllers/KatalogController.cs | 51 ++++----- LongWormMemory.db | Bin 16384 -> 0 bytes Models/Book.cs | 19 +++- Models/IProduct.cs | 26 +++++ Models/KatalogModel.cs | 182 ++++++++++++++++++++++--------- Models/Magazin.cs | 30 ++++- Program.cs | 29 ++++- 7 files changed, 240 insertions(+), 97 deletions(-) delete mode 100644 LongWormMemory.db create mode 100644 Models/IProduct.cs diff --git a/Controllers/KatalogController.cs b/Controllers/KatalogController.cs index 0e4a68d..df04e99 100644 --- a/Controllers/KatalogController.cs +++ b/Controllers/KatalogController.cs @@ -18,40 +18,33 @@ namespace BuecherwurmAPI.Controllers } // GET Katalog [HttpGet] - public ActionResult> GetAllBooks() + public ActionResult> GetAllProducts() { - var books =_repository.GetAllBooks(); - return Ok(books); + var Products =_repository.GetAllProducts(); + return Ok(Products); } - // POST Katalog - [HttpPost] - public ActionResult AddBook(BookPost book) + // POST katalog/buch + [HttpPost("buch")] + public ActionResult AddProduct(BookPost book) { - var id = _repository.AddBook(book); - return Ok(new Book - { - Name = book.Name, - Author= book.Author, - Country= book.Country, - Link= book.Link, - Language= book.Language, - Pages= book.Pages, - Year=book.Year, - ProductId = id, - Category= book.Category, - ImageLink =book.ImageLink, - LendTime =book.LendTime, - LendType = book.LendType - }); + var id = _repository.AddProduct(book); + return Ok(_repository.GetProductById(id)); } + // POST katalog/magazin + [HttpPost("magazin")] + public ActionResult AddProduct(MagazinPost book) + { + var id = _repository.AddProduct(book); + return Ok(_repository.GetProductById(id)); + } // GET katalog/{id} [HttpGet("{id}")] - public ActionResult GetBookByID(long id) + public ActionResult GetProductByID(long id) { - var book = _repository.GetBookById(id); + var book = _repository.GetProductById(id); if (book != null) { return Ok(book); @@ -62,22 +55,22 @@ namespace BuecherwurmAPI.Controllers // PUT Katalog/{id} [HttpPut("{id}")] - public ActionResult EditBook(long id, Book book) + public ActionResult EditProduct(long id, IProduct book) { - _repository.EditBook(id, book); + _repository.EditProduct(id, book); return Ok(book); } // DELETE katalog/{id} [HttpDelete("{id}")] - public ActionResult DeleteBook (long id) + public ActionResult DeleteProduct (long id) { - var book = _repository.GetBookById(id); + var book = _repository.GetProductById(id); if(book == null) { return NotFound(); } - _repository.DeleteBook(id); + _repository.DeleteProduct(id); return NoContent(); } diff --git a/LongWormMemory.db b/LongWormMemory.db deleted file mode 100644 index 2af348abd5cc5350f02eaa525bfd54ec7a21f55d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI(zi!h&7y$6Iouo~rU=|dqg>p@W)Ij38X-eBjNF=E#7H(QnBM~t<&5@WmcCgQ) z84DYa025Ea#=-+29)hh43kwV9YZ6)%+5s_C`cBUI{(X1f{kAB|{$seKcqw}EY)oxitK-_PiEB>`BgZu+PVCk7opQZ_A8CzYbT)frT<2%Le#Os>QVMt_ zojEhZ$1-?nCYjM&nWSF(k)s#)JYtf zeB$Z*L|J8LvMKoolH_9~f0vKtpR54|1V8`;KmY_l00ck)1V8`;KmY_l;8F`nF$pCl ziB;?x@uU=It?0M;ge=D7ukw5Oh5S&yC5xB(l8`(IfB*=900@8p2!H?xfB*=900>MJ zSV$z0usSz=yPy`-yn2^CSXE2>+3_6r^9O$+e&G@vOQ0m%m{|Q6gP^6_06?AYJna6fH?LcLIp8_#NC_IQy)(@JttznA@dpUyg(&LU zbbRx|s2b_2(f5Brev8-x1q46<1V8`;KmY_l00ck)1V8`;K;XX%P$9LrICn2Cib!Y( z!j?^N#cmP@7q&f0F`?LU6wMg~cG&As+Al3Hw`>w9c0d(kyNbj9rctq2fcS3eoAl=j T*E{Hpmn}DKr=|4W_PqEDI6WE^ diff --git a/Models/Book.cs b/Models/Book.cs index 3e605de..1caacbf 100644 --- a/Models/Book.cs +++ b/Models/Book.cs @@ -2,26 +2,26 @@ using System.ComponentModel.DataAnnotations; namespace BuecherwurmAPI.Models { - public class Book + public class Book : IProduct { - public string Name {get; set;} + [Key, Required] + public long ProductId { get; set; } + public string Title {get; set;} public string Author {get; set;} public string Country {get; set;} public string Link {get; set;} public string Language {get; set;} public long Pages {get; set;} public long Year {get; set;} - [Key, Required] - public long ProductId { get; set; } public CategoryEnum Category { get; set; } public string ImageLink { get; set; } public long LendTime {get; set;} public LendTypeEnum LendType {get; set;} } - public class BookPost + public class BookPost : IProductPost { - public string Name {get; set;} + public string Title {get; set;} public string Author {get; set;} public string Country {get; set;} public string Link {get; set;} @@ -32,6 +32,13 @@ namespace BuecherwurmAPI.Models public string ImageLink { get; set; } public long LendTime {get; set;} public LendTypeEnum LendType {get; set;} + + public BookPost() + { + LendType = LendTypeEnum.Physical; + LendTime = 30; + Category = CategoryEnum.Book; + } } } \ No newline at end of file diff --git a/Models/IProduct.cs b/Models/IProduct.cs new file mode 100644 index 0000000..80531e5 --- /dev/null +++ b/Models/IProduct.cs @@ -0,0 +1,26 @@ +namespace BuecherwurmAPI.Models +{ + public interface IProductPost + { + CategoryEnum Category {get; set;} + + long LendTime {get; set;} + + string Title {get; set;} + + LendTypeEnum LendType {get; set;} + } + + public interface IProduct + { + long ProductId {get; set;} + + CategoryEnum Category {get; set;} + + long LendTime {get; set;} + + string Title {get; set;} + + LendTypeEnum LendType {get; set;} + } +} \ No newline at end of file diff --git a/Models/KatalogModel.cs b/Models/KatalogModel.cs index 1de40a0..c218974 100644 --- a/Models/KatalogModel.cs +++ b/Models/KatalogModel.cs @@ -21,9 +21,9 @@ namespace BuecherwurmAPI.Models _dbConnection.Open(); } - public IEnumerable GetAllBooks() + public IEnumerable GetAllProducts() { - var books= new List(); + var books= new List(); using (var command = _dbConnection.CreateCommand()) { @@ -31,54 +31,90 @@ namespace BuecherwurmAPI.Models var dataReader = command.ExecuteReader(); while (dataReader.Read()) - { - books.Add(new Book + { + if (!dataReader["Author"].Equals(null)) { - Name = (string) dataReader["Name"], - Author = (string) dataReader["Author"], - Country = (string) dataReader["Country"], - Link = (string) dataReader["Link"], - Language = (string) dataReader["Language"], - Pages = (long) dataReader["Pages"], - Year = (long) dataReader["Year"], - ProductId = (long) dataReader["ProductId"], - Category = (CategoryEnum) dataReader["Category"], - ImageLink = (string) dataReader["ImageLink"], - LendTime = (long) dataReader["LendTime"], - LendType = (LendTypeEnum) dataReader["LendType"] - }); + books.Add(new Book + { + Title = (string) dataReader["Title"], + Author = (string) dataReader["Author"], + Country = (string) dataReader["Country"], + Link = (string) dataReader["Link"], + Language = (string) dataReader["Language"], + Pages = (long) dataReader["Pages"], + Year = (long) dataReader["Year"], + ProductId = (long) dataReader["ProductId"], + Category = (CategoryEnum) Enum.Parse(typeof(CategoryEnum), dataReader["Category"].ToString()), + ImageLink = (string) dataReader["ImageLink"], + LendTime = (long) dataReader["LendTime"], + LendType = (LendTypeEnum) Enum.Parse(typeof(LendTypeEnum), dataReader["LendType"].ToString()) + }); + } + else + { + books.Add(new Magazin + { + Title = (string) dataReader["Title"], + LendTime = (long) dataReader["LendTime"], + LendType = (LendTypeEnum) Enum.Parse(typeof(LendTypeEnum), dataReader["LendType"].ToString()), + Category = (CategoryEnum) Enum.Parse(typeof(CategoryEnum), dataReader["Category"].ToString()), + Run = (long) dataReader["Run"], + Audience = (string) dataReader["Audience"], + Topic = (string) dataReader["Topic"] + }); + } } } return books; } - public Book GetBookById(long id) + public IProduct GetProductById(long id) { using (var command = _dbConnection.CreateCommand()) { - command.Parameters.Add(new SqliteParameter("@id", SqliteType.Integer)).Value = id; - command.CommandText = @"SELECT * FROM Products WHERE ProductId = @id"; + command.CommandText = "SELECT * FROM \"Products\" WHERE ProductId = @id"; + command.Parameters.Add(new SqliteParameter("@id", id)); var dataReader = command.ExecuteReader(); - var book = new Book + IProduct book; + + dataReader.Read(); + + if (dataReader["Author"].Equals(null)) + { + book = new Magazin { - Name = (string) dataReader["Name"], - Author = (string) dataReader["Author"], - Country = (string) dataReader["Country"], - Link = (string) dataReader["Link"], - Language = (string) dataReader["Language"], - Pages = (long) dataReader["Pages"], - Year = (long) dataReader["Year"], - ProductId = (long) dataReader["ProductId"], - Category = (CategoryEnum) dataReader["Category"], + Title = (string)dataReader["Title"], + LendTime = (long)dataReader["LendTime"], + LendType = (LendTypeEnum) Enum.Parse(typeof(LendTypeEnum), dataReader["LendType"].ToString()), + Category = (CategoryEnum) Enum.Parse(typeof(CategoryEnum), dataReader["Category"].ToString()), + Run = (long)dataReader["Run"], + Audience = (string)dataReader["Audience"], + Topic = (string)dataReader["Topic"] + }; + } + else + { + book = new Book + { + Title = (string)dataReader["Title"], + Author = (string)dataReader["Author"], + Country = (string)dataReader["Country"], + Link = (string)dataReader["Link"], + Language = (string)dataReader["Language"], + Pages = (long)dataReader["Pages"], + Year = (long)dataReader["Year"], + ProductId = (long)dataReader["ProductId"], + Category = (CategoryEnum) Enum.Parse(typeof(CategoryEnum), dataReader["Category"].ToString()), ImageLink = (string) dataReader["ImageLink"], LendTime = (long) dataReader["LendTime"], - LendType = (LendTypeEnum) dataReader["LendType"] + LendType = (LendTypeEnum) Enum.Parse(typeof(LendTypeEnum), dataReader["LendType"].ToString()) }; - return book; + } + return book; } } - public void DeleteBook(long id) + public void DeleteProduct(long id) { using (var command = _dbConnection.CreateCommand()) { @@ -88,25 +124,44 @@ namespace BuecherwurmAPI.Models } } - public long AddBook (BookPost book) + public long AddProduct (IProductPost book) { using (var command = _dbConnection.CreateCommand()) { // funktioniert das so? - //muss ProduktId übergeben werden? - command.CommandText = @"INSERT INTO Products (Name, Author, Country, Link, Language, Pages, Year, ProductId, Category, ImageLink, LendTime, LendType) VALUES (@Name, @Author, @Country, @Link, @Language, @Pages, @Year, NULL, @Category, @ImageLink, @LendTime, @LendType )"; + //muss ProduktId übergeben werden? -> ProductId wird weiter hinten mit 'NULL' befüllt, damit die ID automatisch vergeben wird. + command.CommandText = @"INSERT INTO Products (ProductId, Title, Author, Country, Link, Language, Pages, Year, Category, ImageLink, LendTime, LendType, Run, Audience, Topic) VALUES (NULL, @Title, @Author, @Country, @Link, @Language, @Pages, @Year, @Category, @ImageLink, @LendTime, @LendType, @Run, @Audience, @Topic)"; - command.Parameters.Add(new SqliteParameter("@Name", book.Name)); - command.Parameters.Add(new SqliteParameter("@Author", book.Author)); - command.Parameters.Add(new SqliteParameter("@Country", book.Country)); - command.Parameters.Add(new SqliteParameter("@Link", book.Link)); - command.Parameters.Add(new SqliteParameter("@Language", book.Language)); - command.Parameters.Add(new SqliteParameter("@Pages", book.Pages)); - command.Parameters.Add(new SqliteParameter("@Year", book.Year)); + command.Parameters.Add(new SqliteParameter("@Title", book.Title)); command.Parameters.Add(new SqliteParameter("@Category", book.Category)); - command.Parameters.Add(new SqliteParameter("@ImageLink", book.ImageLink)); command.Parameters.Add(new SqliteParameter("@LendTime", book.LendTime)); command.Parameters.Add(new SqliteParameter("@LendType", book.LendType)); + if (book.GetType() == typeof(BookPost)) + { + command.Parameters.Add(new SqliteParameter("@Author", ((BookPost)book).Author)); + command.Parameters.Add(new SqliteParameter("@Country", ((BookPost)book).Country)); + command.Parameters.Add(new SqliteParameter("@Link", ((BookPost)book).Link)); + command.Parameters.Add(new SqliteParameter("@Language", ((BookPost)book).Language)); + command.Parameters.Add(new SqliteParameter("@Pages", ((BookPost)book).Pages)); + command.Parameters.Add(new SqliteParameter("@Year", ((BookPost)book).Year)); + command.Parameters.Add(new SqliteParameter("@ImageLink", ((BookPost)book).ImageLink)); + command.Parameters.Add(new SqliteParameter("@Run", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Audience", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Topic", DBNull.Value)); + } + else + { + command.Parameters.Add(new SqliteParameter("@Author", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Country", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Link", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Language", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Pages", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Year", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@ImageLink", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Run", ((MagazinPost)book).Run)); + command.Parameters.Add(new SqliteParameter("@Audience", ((MagazinPost)book).Audience)); + command.Parameters.Add(new SqliteParameter("@Topic", ((MagazinPost)book).Topic)); + } var success = command.ExecuteNonQuery(); @@ -120,25 +175,44 @@ namespace BuecherwurmAPI.Models } } - public long EditBook (long id, Book book) + public long EditProduct (long id, IProduct book) { using (var command = _dbConnection.CreateCommand()) { // funktioniert das so? command.Parameters.Add(new SqliteParameter("@id", id)); - command.CommandText = @"UPDATE Products SET (Name, Author, Country, Link, Language, Pages, Year, Category, ImageLink, LendTime, LendType) = (@Name, @Author, @Country, @Link, @Language, @Pages, @Year, @Category, @ImageLink, @LendTime, @LendType ) WHERE ProductId = @id"; + command.CommandText = @"UPDATE Products SET (Title, Author, Country, Link, Language, Pages, Year, Category, ImageLink, LendTime, LendType, Run, Audience, Topic) = (@Title, @Author, @Country, @Link, @Language, @Pages, @Year, @Category, @ImageLink, @LendTime, @LendType, @Run, @Audience, @Topic) WHERE ProductId = @id"; - command.Parameters.Add(new SqliteParameter("@Name", book.Name)); - command.Parameters.Add(new SqliteParameter("@Author", book.Author)); - command.Parameters.Add(new SqliteParameter("@Country", book.Country)); - command.Parameters.Add(new SqliteParameter("@Link", book.Link)); - command.Parameters.Add(new SqliteParameter("@Language", book.Language)); - command.Parameters.Add(new SqliteParameter("@Pages", book.Pages)); - command.Parameters.Add(new SqliteParameter("@Year", book.Year)); + command.Parameters.Add(new SqliteParameter("@Title", book.Title)); command.Parameters.Add(new SqliteParameter("@Category", book.Category)); - command.Parameters.Add(new SqliteParameter("@ImageLink", book.ImageLink)); command.Parameters.Add(new SqliteParameter("@LendTime", book.LendTime)); command.Parameters.Add(new SqliteParameter("@LendType", book.LendType)); + if (book.GetType() == typeof(Book)) + { + command.Parameters.Add(new SqliteParameter("@Author", ((BookPost)book).Author)); + command.Parameters.Add(new SqliteParameter("@Country", ((BookPost)book).Country)); + command.Parameters.Add(new SqliteParameter("@Link", ((BookPost)book).Link)); + command.Parameters.Add(new SqliteParameter("@Language", ((BookPost)book).Language)); + command.Parameters.Add(new SqliteParameter("@Pages", ((BookPost)book).Pages)); + command.Parameters.Add(new SqliteParameter("@Year", ((BookPost)book).Year)); + command.Parameters.Add(new SqliteParameter("@ImageLink", ((BookPost)book).ImageLink)); + command.Parameters.Add(new SqliteParameter("@Run", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Audience", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Topic", DBNull.Value)); + } + else + { + command.Parameters.Add(new SqliteParameter("@Author", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Country", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Link", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Language", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Pages", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Year", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@ImageLink", DBNull.Value)); + command.Parameters.Add(new SqliteParameter("@Run", ((MagazinPost)book).Run)); + command.Parameters.Add(new SqliteParameter("@Audience", ((MagazinPost)book).Audience)); + command.Parameters.Add(new SqliteParameter("@Topic", ((MagazinPost)book).Topic)); + } var success = command.ExecuteNonQuery(); diff --git a/Models/Magazin.cs b/Models/Magazin.cs index 20cbebd..1117898 100644 --- a/Models/Magazin.cs +++ b/Models/Magazin.cs @@ -1,16 +1,36 @@ +using System.ComponentModel.DataAnnotations; + namespace BuecherwurmAPI.Models { - public class Magazin + public class Magazin : IProduct { - public int ProductId {get; set;} + public long ProductId {get; set;} public CategoryEnum Category {get; set;} - public int LendTime {get; set;} - public string Name {get; set;} - public string Run {get; set;} + public long LendTime {get; set;} + public string Title {get; set;} + public long Run {get; set;} public string Audience {get; set;} public string Topic {get; set;} public LendTypeEnum LendType {get; set;} } + public class MagazinPost : IProductPost + { + public CategoryEnum Category {get; set;} + public long LendTime {get; set;} + public string Title {get; set;} + public string Run {get; set;} + public string Audience {get; set;} + public string Topic {get; set;} + public LendTypeEnum LendType {get; set;} + + public MagazinPost() + { + LendType = LendTypeEnum.Physical; + LendTime = 2; + Category = CategoryEnum.Magazine; + } + } + } diff --git a/Program.cs b/Program.cs index 3c8c66b..d9c5f01 100644 --- a/Program.cs +++ b/Program.cs @@ -8,6 +8,8 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; +using System.Text.Json; +using System.Text.Json.Serialization; namespace BuecherwurmAPI { @@ -25,12 +27,33 @@ namespace BuecherwurmAPI private static void MakeImports() { - throw new NotImplementedException(); + var booksJson = File.ReadAllText("books.json"); + //var magazinesJson = File.ReadAllText("magazines.json"); + + var catalogue = new Models.KatalogModel(); + var items = new Models.ItemModel(); + + var config = new JsonSerializerOptions + { + PropertyNameCaseInsensitive = true + }; + var importedBooks = JsonSerializer.Deserialize>(booksJson, config); + //var importedMags = JsonSerializer.Deserialize>(magazinesJson); + List imports = new List(); + imports.AddRange(importedBooks); + //imports.AddRange(importedMags); + + var model = new Models.KatalogModel(); + foreach (var item in imports) + { + model.AddProduct(item); + } } private static void CreateNewEmptyDB() { - File.Create("LongWormMemory.db"); + //File.Create("LongWormMemory.db"); + File.WriteAllText("LongWormMemory.db", ""); var connectionBuilder = new SqliteConnectionStringBuilder {DataSource = "LongWormMemory.db"}; var connection = new SqliteConnection(connectionBuilder.ConnectionString); connection.Open(); @@ -40,7 +63,7 @@ namespace BuecherwurmAPI command.ExecuteNonQuery(); command.CommandText = "CREATE TABLE Items (ItemId INTEGER NOT NULL PRIMARY KEY, BookId INTEGER NOT NULL)"; command.ExecuteNonQuery(); - command.CommandText = "CREATE TABLE Products (ProductId INTEGER PRIMARY KEY, Name TEXT, Author TEXT, Country TEXT, Link TEXT, Language TEXT, Pages INTEGER, Year INTEGER, Category INTEGER, ImageLink TEXT, LendTime INTEGER, LendType INTEGER)"; + command.CommandText = "CREATE TABLE Products (ProductId INTEGER PRIMARY KEY, Title TEXT, Author TEXT, Country TEXT, Link TEXT, Language TEXT, Pages INTEGER, Year INTEGER, Category INTEGER, ImageLink TEXT, LendTime INTEGER, LendType INTEGER, Run INTEGER, Audience TEXT, Topic TEXT)"; command.ExecuteNonQuery(); } }