diff --git a/.gitignore b/.gitignore index b6e4761..f45acb1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ +# Data site +img/*/*.jpeg +img/*/*.jpg +img/*/*.png +!img/covers/* + # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] diff --git a/NotFound.html b/NotFound.html new file mode 100644 index 0000000..57db2e9 --- /dev/null +++ b/NotFound.html @@ -0,0 +1 @@ +404 \ No newline at end of file diff --git a/android-chrome-192x192.png b/android-chrome-192x192.png new file mode 100644 index 0000000..f41445d Binary files /dev/null and b/android-chrome-192x192.png differ diff --git a/android-chrome-512x512.png b/android-chrome-512x512.png new file mode 100644 index 0000000..563d05b Binary files /dev/null and b/android-chrome-512x512.png differ diff --git a/apple-touch-icon.png b/apple-touch-icon.png new file mode 100644 index 0000000..ec51531 Binary files /dev/null and b/apple-touch-icon.png differ diff --git a/ch.html b/ch.html new file mode 100644 index 0000000..2e48127 --- /dev/null +++ b/ch.html @@ -0,0 +1,45 @@ + + + + Страница главы + + + + + + + + + + +
+
+
+
+
+

+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
+

+
+ + + \ No newline at end of file diff --git a/css/chapter.css b/css/chapter.css new file mode 100644 index 0000000..e7fc49b --- /dev/null +++ b/css/chapter.css @@ -0,0 +1,29 @@ +.progress-page { + width: 100%; +} +.cover { + width: 25%; +} +.invis { + display: none; +} +.card { + transition: 0.3s; + padding-left: 2px; + padding-top: 2px rgb(255, 255, 255, 1); + padding-bottom: 2px; + padding-right: 2px; + border: 2px solid white; + font-family: "Anime Ace v05"; + font-size: 70%; +} +.cardch { + transition: 0.3s; + padding-left: 2px; + padding-top: 2px rgb(255, 255, 255, 1); + padding-bottom: 2px; + padding-right: 2px; + border: 2px solid white; + font-family: "Anime Ace v05"; + font-size: 70%; +} \ No newline at end of file diff --git a/css/index.css b/css/index.css new file mode 100644 index 0000000..ab9b7d5 --- /dev/null +++ b/css/index.css @@ -0,0 +1,40 @@ +.progress-page { + width: 100%; +} +.cover { + width: 15%; + margin: 7px 7px 7px 0; +} +.invis { + display: none; +} +.card { + transition: 0.3s; + padding-left: 2px; + padding-top: 2px rgb(255, 255, 255, 1); + padding-bottom: 2px; + padding-right: 2px; + border: 2px solid white; + font-family: "Anime Ace v05"; + font-size: 70%; +} +.carda { + transition: 0.3s; + padding-left: 2px; + padding-top: 2px rgb(255, 255, 255, 1); + padding-bottom: 2px; + padding-right: 2px; + border: 1px solid white; + font-family: "Anime Ace v05"; + font-size: 100%; +} +.cardch { + transition: 0.3s; + padding-left: 2px; + padding-top: 2px rgb(255, 255, 255, 1); + padding-bottom: 2px; + padding-right: 2px; + border: 2px solid white; + font-family: "Anime Ace v05"; + font-size: 70%; +} \ No newline at end of file diff --git a/css/manga.css b/css/manga.css new file mode 100644 index 0000000..4312494 --- /dev/null +++ b/css/manga.css @@ -0,0 +1,64 @@ +.invis { + visibility: hidden; +} +.invis2 { + display: none; +} +.progress-page { + width: 100%; +} + +.card-button-ch { + background-color: rgba(0, 0, 0, 0.5); + border: 1px solid rgb(255, 255, 255); + color: #ffffff; + font-family: "Anime Ace v05"; + font-size: 70%; + cursor: pointer; + opacity: 1; +} +.card-button-ch:hover { + opacity:0.8; +} + +@media only screen and (min-width : 801px) { + .nav-button { + width: 35%; + height: 15%; + } + .nav-button-home { + width: 20%; + height: 15%; + } + .nav-button-fullscreen { + width: 10%; + height: 15%; + } + .card-button-ch { + padding-left: 0px; + padding-right: 0px; + padding-top: 15px; + padding-bottom: 15px; + } +} + +@media only screen and (max-width : 800px) { + .nav-button { + width: 50%; + height: 30%; + } + .nav-button-home { + width: 50%; + height: 30%; + } + .nav-button-fullscreen { + width: 50%; + height: 30%; + } + .card-button-ch { + padding-left: 0px; + padding-right: 0px; + padding-top: 20px; + padding-bottom: 20px; + } +} \ No newline at end of file diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..8db5e7b --- /dev/null +++ b/css/style.css @@ -0,0 +1,200 @@ +@font-face { + font-family: "Anime Ace v05"; + src: local("Anime Ace v05"), url("/fonts/AnimeAce.ttf") format("ttf"); +} + +body { + text-align: center; + color: white; + margin-top: 0px; + margin-bottom: 0px; + margin-left: 0px; + margin-right: 0px; + background: #000000; +} + + +.body-index { + /* NULL */ +} + +.body-project { + /* NULL */ +} + +.body-firefox { + /* NULL */ +} + +.body-trans { + background: rgb(0, 0, 0, 0.6); +} + +summary { + color: deeppink; +} + +.hr-v { + color: #ffffff; +} + +.hr-i { + color: rgb(255, 255, 255, 0); + height: 1px; +} + +img { + width: 100%; +} + +ul { + list-style-position: inside; +} + +a { + color: deeppink; +} +a:visited { + color: purple; +} +a:active { + color: pink; +} + +#lista { + text-align: left; +} + +#bodydiv { + margin-left: 2%; + margin-right: 2%; + height: 100%; +} + +.titlediv { + font-family: "Anime Ace v05"; +} + +.contentdiv { + /* NULL */ +} + +#card { + box-shadow: 4px 4px 4px 0 rgb(255, 255, 255, 1); + transition: 0.3s; + padding-left: 2px; + padding-top: 2px; + padding-bottom: 2px; + padding-right: 2px; +} +#card2 { + border: 1px solid #ffffff; +} + +.card-title { + padding: 1px 0px 1px 10px; + font-family: "Anime Ace v05"; + font-size: 90%; +} + +.card-text { + padding: 1px 0px 1px 5px; + font-family: "Anime Ace v05"; + font-size: 70%; +} + +.card-button { + background-color: rgba(0, 0, 0, 0.5); + border: 1px solid rgb(255, 255, 255); + padding: 5px; + color: #ffffff; + font-family: "Anime Ace v05"; + font-size: 70%; + cursor: pointer; + opacity: 1; +} +.card-button:hover { + opacity:0.8; +} +.card-button-block { + padding: 5px 0px 5px 5px; +} + +.copyright { + padding: 10px; + right: 1em; + text-align: center; + bottom: 1em; +} + +.aace { + font-family: "Anime Ace v05"; +} + +#maindiv { + background-color: rgba(0, 0, 0, 0.8); + margin-top: 0px; +} + + +table { + border-bottom: 0px solid rgba(0, 0, 0, 0); + background: rgba(0, 0, 0, 0); + margin: 0 auto 0 auto; +} +th { + background: rgba(0, 0, 0, 0); + color: rgba(0, 0, 0, 0); + text-align: center; +} +td, th { + padding: 2px; +} +.sitebuttons { + opacity:0.6; +} +.sitebuttons:hover { + opacity:1; +} + +.homebuttons { + opacity:0.6; +} +.homebuttons:hover { + opacity:1; +} +@media only screen and (min-width : 801px) { + #maindiv { + width: 60%; + margin-left: 20%; + margin-right: 20%; + } + .sitebuttons { + width: 100%; + } + .homebuttons { + width: 8%; + padding-top: 5px; + } + table { + width: 150px; + } +} + +@media only screen and (max-width : 800px) { + #maindiv { + width: 100%; + margin-left: 0%; + margin-right: 0%; + } + .sitebuttons { + width: 100%; + } + .homebuttons { + width: 8%; + padding-top: 5px; + } + table { + width: 130px; + } +} \ No newline at end of file diff --git a/favicon-16x16.png b/favicon-16x16.png new file mode 100644 index 0000000..5f6ac9a Binary files /dev/null and b/favicon-16x16.png differ diff --git a/favicon-32x32.png b/favicon-32x32.png new file mode 100644 index 0000000..8f47800 Binary files /dev/null and b/favicon-32x32.png differ diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..80fbb04 Binary files /dev/null and b/favicon.ico differ diff --git a/fonts/AnimeAce.ttf b/fonts/AnimeAce.ttf new file mode 100644 index 0000000..133c655 Binary files /dev/null and b/fonts/AnimeAce.ttf differ diff --git a/img/7son_1/info.json b/img/7son_1/info.json new file mode 100644 index 0000000..6ba0fb2 --- /dev/null +++ b/img/7son_1/info.json @@ -0,0 +1,8 @@ +{ + "name":"Я перевоплотился в 7-го принца, так что я буду совершенствовать свою магию, как захочу", + "name_ch":"Том 1 Глава 1 - Я реинкарнировал в 7-го принца", + "head":"7son", + "start":0, + "end":56, + "ext":"jpeg" +} \ No newline at end of file diff --git a/img/7son_2/info.json b/img/7son_2/info.json new file mode 100644 index 0000000..99ad181 --- /dev/null +++ b/img/7son_2/info.json @@ -0,0 +1,8 @@ +{ + "name":"Я перевоплотился в 7-го принца, так что я буду совершенствовать свою магию, как захочу", + "name_ch":"Том 1 Глава 2 - Старший брат что-то замышляет", + "head":"7son", + "start":0, + "end":33, + "ext":"jpeg" +} \ No newline at end of file diff --git a/img/covers/7son.jpg b/img/covers/7son.jpg new file mode 100644 index 0000000..7928f7b Binary files /dev/null and b/img/covers/7son.jpg differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..523c111 --- /dev/null +++ b/index.html @@ -0,0 +1,38 @@ + + + + Loading... + + + + + + + + + + + +
+
+
+
+ +
+

Manga.nyaa.ninja

+
+

+
+ +
+
+ + + \ No newline at end of file diff --git a/index.json b/index.json new file mode 100644 index 0000000..28534ba --- /dev/null +++ b/index.json @@ -0,0 +1,13 @@ +{ + "splash":[ + "Nyaaaaa!", + "UwU" + ], + "manga":[ + { + "name":"Я перевоплотился в 7-го принца, так что я буду совершенствовать свою магию, как захочу", + "cover":"img/covers/7son.jpg", + "id":"7son" + } + ] +} \ No newline at end of file diff --git a/js/background.js b/js/background.js new file mode 100644 index 0000000..6726e1e --- /dev/null +++ b/js/background.js @@ -0,0 +1,19 @@ +function getRandomInt(min, max) { + return Math.floor(Math.random() * (max - min)) + min; +} + +function mainbg() { + let bg_list_pc = ["bg/1.jpg", "bg/2.jpg", "bg/3.jpg"]; + let bg_list_m = ["bg/11m.jpg", "bg/12m.jpg", "bg/13m.jpg", "bg/21m.jpg", "bg/31m.jpg", "bg/32m.jpg", "bg/33m.jpg"]; + const pageWidth = document.documentElement.scrollWidth; + const pageHeight = document.documentElement.scrollHeight + if (pageWidth > pageHeight) { + num_bg = getRandomInt(0, 2); + bg_select = bg_list_pc[num_bg] + } else { + num_bg = getRandomInt(0, 6); + bg_select = bg_list_m[num_bg] + } + document.getElementById('page').style.background = '#000000 url('+bg_select+') repeat'; + document.getElementById('page').style.backgroundSize = '120%'; +} \ No newline at end of file diff --git a/js/chapters.js b/js/chapters.js new file mode 100644 index 0000000..01be3b0 --- /dev/null +++ b/js/chapters.js @@ -0,0 +1,37 @@ +function start() { + document.getElementById("cardinfo").style.visibility = "hidden"; + var id_chapt = window.location.hash.replace("#", ""); + var requestURL = "json/" + id_chapt + ".json"; + var request = new XMLHttpRequest(); + request.open('GET', requestURL); + request.responseType = 'json'; + request.send(); + request.onload = function() { + if (request.status != 200) { + document.getElementById('title').textContent = "Ошибка " + request.status + ":" + request.statusText; + document.getElementById('progress').style.visibility = "hidden"; + } else { + var json_ready = request.response; + document.getElementById("cardinfo").style.visibility = "visible"; + document.getElementById('title').textContent = json_ready["name"]; + document.getElementById('cover').src = json_ready["cover"]; + document.getElementById('cardinfo1').textContent = "Автор: " + json_ready["author"]; + document.getElementById('cardinfo2').textContent = "Статус тайтла: " + json_ready["status_ti"]; + document.getElementById('cardinfo3').textContent = "Статус перевода: " + json_ready["status_tl"]; + var list_ch = json_ready["ch"]; + var index; + for (index = 0; index < list_ch.length; ++index) { + let ch_p_one = document.createElement('p'); + let ch_one = document.createElement('a'); + ch_one.href = "ch.html#" + list_ch[index]["id"]; + ch_one.textContent = list_ch[index]["name"] + ch_p_one.append(ch_one); + document.getElementById('helper1').before(ch_p_one); + } + document.getElementById('progress').style.visibility = "hidden"; + } + } + request.onerror = function() { + document.getElementById('title').textContent = "Ошибка запроса!"; + }; +} \ No newline at end of file diff --git a/js/index.js b/js/index.js new file mode 100644 index 0000000..b129755 --- /dev/null +++ b/js/index.js @@ -0,0 +1,45 @@ +function getRandomInt(min, max) { + return Math.floor(Math.random() * (max - min)) + min; +} + +function start() { + document.getElementById('bodydiv').style.visibility = "hidden"; + var requestURL = "index.json"; + var request = new XMLHttpRequest(); + request.open('GET', requestURL); + request.responseType = 'json'; + request.send(); + request.onload = function() { + if (request.status != 200) { + document.getElementById('titlesys').textContent = "Ошибка " + request.status + ":" + request.statusText; + document.getElementById('progresspage').style.visibility = "hidden"; + } else { + var json_ready = request.response; + list_splash = json_ready["splash"]; + var splash_num = getRandomInt(0, list_splash.length); + document.title = list_splash[splash_num]; + var list_ch = json_ready["manga"]; + var index; + for (index = 0; index < list_ch.length; ++index) { + manga_info = list_ch[index] + let manga_one = document.createElement('div'); + manga_one.className = "carda"; + let manga_one_ref = document.createElement('a'); + manga_one_ref.href = "manga.html#" + manga_info["id"]; + manga_one_ref.textContent = manga_info["name"]; + let manga_one_cover = document.createElement('img'); + manga_one_cover.src = manga_info["cover"]; + manga_one_cover.className = "cover"; + manga_one.append(manga_one_cover); + manga_one.append(manga_one_ref); + document.getElementById('helper1').before(manga_one); + } + document.getElementById('bodydiv').style.visibility = "visible"; + document.getElementById('progresspage').style.visibility = "hidden"; + } + }; + request.onerror = function() { + document.getElementById('titlesys').textContent = "Ошибка запроса!"; + document.getElementById('progresspage').style.visibility = "hidden"; + }; +} \ No newline at end of file diff --git a/js/manga.js b/js/manga.js new file mode 100644 index 0000000..1df792e --- /dev/null +++ b/js/manga.js @@ -0,0 +1,111 @@ +function load_page_first() { + document.getElementById('bodydiv').style.visibility = "hidden"; + var id_chapt = window.location.hash.replace("#", ""); + var requestURL = "img/" + id_chapt + "/info.json"; + var request = new XMLHttpRequest(); + request.open('GET', requestURL); + request.responseType = 'json'; + request.send(); + request.onload = function(){ + if (request.status != 200) { + document.getElementById('titlesys').textContent = "Ошибка " + request.status + ":" + request.statusText; + document.getElementById('progresspage').style.visibility = "hidden"; + } else { + width_page = document.documentElement.scrollWidth; + if(width_page <= 800){ + document.getElementById('pc_elem').remove() + } else { + document.getElementById('mobile_elem').remove() + } + var json_ready = request.response; + document.getElementById('prevbutton').style.visibility = "hidden"; + document.getElementById('namech').textContent = json_ready["name_ch"]; + document.getElementById('infostart').textContent = json_ready["start"]; + document.getElementById('infoend').textContent = json_ready["end"]; + document.getElementById('infohead').textContent = json_ready["head"]; + crs_start = "img/" + id_chapt + "/" + json_ready["start"] + "." + json_ready["ext"]; + document.getElementById('mangapage').src = crs_start; + document.getElementById('progresspage').style.visibility = "hidden"; + var manga_page = document.getElementById('mangapage'); + document.getElementById('bodydiv').style.visibility = "visible"; + manga_page.onload = function(){ + document.getElementById('progressimage').style.visibility = "hidden"; + document.getElementById('progressimage2').style.visibility = "hidden"; + }; + } + } + request.onerror = function() { + document.getElementById('titlesys').textContent = "Ошибка запроса!"; + }; +} + +function toggleFullScreen() { + if (!document.fullscreenElement) { + document.getElementById('title_ch').style.visibility = "collapse"; + document.getElementById('copyright').style.visibility = "collapse"; + document.documentElement.requestFullscreen(); + } else { + if (document.exitFullscreen) { + document.getElementById('title_ch').style.visibility = "visible"; + document.getElementById('copyright').style.visibility = "visible"; + document.exitFullscreen(); + } + } +} + +function manga_page(count) { + var head_info = document.getElementById('infohead').textContent; + document.location.href = "manga.html#" + head_info; +} + +function page_flip(count) { + document.getElementById('progressimage').style.visibility = "visible"; + document.getElementById('progressimage2').style.visibility = "visible"; + window.scrollTo(0, 0); + var min = parseInt(document.getElementById('infostart').textContent); + var max = parseInt(document.getElementById('infoend').textContent); + var root = "img/"; + var current_link = document.getElementById('mangapage').src; + let ref_cute1 = current_link.split('/').reverse(); + let ref_cute2 = ref_cute1[0].split('.'); + current_num = parseInt(ref_cute2[0]); + if(current_num + count <= max){ + if(current_num + count >= min){ + var next_num = current_num + count; + var next_link = root + ref_cute1[1] + "/" + next_num + "." + ref_cute2[1]; + document.getElementById('mangapage').src = next_link; + if(next_num == min) { + document.getElementById('prevbutton').style.visibility = "hidden"; + } else if (next_num == max) { + document.getElementById('nextbutton').style.visibility = "hidden"; + } else { + document.getElementById('prevbutton').style.visibility = "visible"; + document.getElementById('nextbutton').style.visibility = "visible"; + } + } else { + document.getElementById('progressimage').style.visibility = "hidden"; + document.getElementById('progressimage2').style.visibility = "hidden"; + } + + } else { + document.getElementById('progressimage').style.visibility = "hidden"; + document.getElementById('progressimage2').style.visibility = "hidden"; + } + var manga_page = document.getElementById('mangapage'); + manga_page.onload = function (){ + document.getElementById('progressimage').style.visibility = "hidden"; + document.getElementById('progressimage2').style.visibility = "hidden"; + }; +} +document.onkeydown = function(e) { + if (e.key == "ArrowLeft"){ + page_flip(-1) + } else if (e.key == "ArrowRight") { + page_flip(1) + } else { + // Ignore + } +} + + + diff --git a/js/script.js b/js/script.js new file mode 100644 index 0000000..ee99815 --- /dev/null +++ b/js/script.js @@ -0,0 +1,10 @@ +function adapt() { + if(/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)){ + var ytvid = document.querySelector('#ytvid'); + var widthScreen = document.documentElement.clientWidth + var widthVid = Math.round(widthScreen / 100 * 80) + "px"; + var heightVid = Math.round((widthScreen / 100 * 80) / 1280 * 720) + "px"; + ytvid.width = widthVid; + ytvid.height = heightVid; + } + } \ No newline at end of file diff --git a/json/7son.json b/json/7son.json new file mode 100644 index 0000000..0707d3e --- /dev/null +++ b/json/7son.json @@ -0,0 +1,18 @@ +{ + "name":"Я перевоплотился в 7-го принца, так что я буду совершенствовать свою магию, как захочу", + "name_orig":" Tensei Shitara dai Nana Ouji dattanode, Kimamani Majutsu o Kiwamemasu", + "author":"Kenkyo na Circle", + "status_tl":"Продолжается", + "status_ti":"Выпускается", + "cover":"img/covers/7son.jpg", + "ch":[ + { + "name":"Том 1 Глава 1 - Я реинкарнировал в 7-го принца", + "id":"7son_1" + }, + { + "name":"Том 1 Глава 2 - Старший брат что-то замышляет", + "id":"7son_2" + } + ] +} \ No newline at end of file diff --git a/manga.html b/manga.html new file mode 100644 index 0000000..2684596 --- /dev/null +++ b/manga.html @@ -0,0 +1,42 @@ + + + + Страница манги + + + + + + + + + + +
+
+
+
+ +
+

+
+
+

+

+

+
+
+

Главы:

+

+
+ +
+
+
+ + + \ No newline at end of file diff --git a/site.webmanifest b/site.webmanifest new file mode 100644 index 0000000..45dc8a2 --- /dev/null +++ b/site.webmanifest @@ -0,0 +1 @@ +{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} \ No newline at end of file diff --git a/svg/S.svg b/svg/S.svg new file mode 100644 index 0000000..6b639cb --- /dev/null +++ b/svg/S.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/svg/WL.svg b/svg/WL.svg new file mode 100644 index 0000000..d344de7 --- /dev/null +++ b/svg/WL.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/svg/WO.svg b/svg/WO.svg new file mode 100644 index 0000000..90fca2d --- /dev/null +++ b/svg/WO.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/svg/comment-minus.svg b/svg/comment-minus.svg new file mode 100644 index 0000000..6de0dcc --- /dev/null +++ b/svg/comment-minus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/discord.svg b/svg/discord.svg new file mode 100644 index 0000000..a7b1008 --- /dev/null +++ b/svg/discord.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/github.svg b/svg/github.svg new file mode 100644 index 0000000..0b20d19 --- /dev/null +++ b/svg/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/home.svg b/svg/home.svg new file mode 100644 index 0000000..13206f1 --- /dev/null +++ b/svg/home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/telegram.svg b/svg/telegram.svg new file mode 100644 index 0000000..2119b7e --- /dev/null +++ b/svg/telegram.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/svg/youtube.svg b/svg/youtube.svg new file mode 100644 index 0000000..780875d --- /dev/null +++ b/svg/youtube.svg @@ -0,0 +1 @@ + \ No newline at end of file