
MangaReader
MangaReader untuk membaca manga dengan berbagai mode, termasuk longstrip, RTL, LTR, dan vertikal. Fitur ini juga mendukung zoom, swipe, dan mini preview untuk navigasi yang lebih mudah.
Demo
- Link v3.3: Video
- Live Demo: Manga Reader
- Generator Link: Generator converter
Fitur Utama
Mode Baca: Longstrip, RTL, LTR, Vertikal
Lazy Load: Menghemat kuota dengan memuat gambar hanya saat diperlukan
Zoom Gesture: Pinch Zoom untuk mode longstrip dan double tap untuk mode RTL, LTR, Vertikal (Zoom in/out gambar Dioptimalkan untuk perangkat mobile)
Mini dots: Navigasi cepat dengan slide dots kecil
Penyimpanan Mode {id}: Mode baca tersimpan di IndexedDB berdasarkan label seriesId: "mySeries"
Navigasi keyboard
- Keyboard (Coming soon)
- Left
<
: Halaman sebelumnya - Right
>
: Halaman berikutnya - Touch
- Swipe left/right: Navigasi antar halaman
- Tap left/right: Navigasi antar halaman
Preloading gambar & Animasi loading.
Smooth scrolling.
Cara pakai
0. Pasang library Asset
Swiper & BottomSheet:
- Tambahkan di bagian <head>.
<!--swiper--> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"> <!--bottomshet--> <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/MagicReincarnation/Manga-Reader-blogspot@main/asset/BottomSheet_v2/bottomSheet.css">
- Tambahkan di atas </body>.
<!--swiper--> <script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script> <!--bottomshet--> <script src="https://cdn.jsdelivr.net/gh/MagicReincarnation/Manga-Reader-blogspot@main/asset/BottomSheet_v2/bottomSheet.js" type="text/javascript" charset="utf-8"></script>
1. Tambahkan elemen di HTML (postingan chapter):
<!--Filter label agar bisa mendapatkan label judul series, jika terdapat label lain masukan disini--> <b:with value='["Chapter"]' var='checkLabel'> <b:if cond='data:post.labels any (i => i.name in data:checkLabel)'> <b:loop values='data:post.labels filter (i => i.name not in data:checkLabel)' var='l'> <div class="mode_manga_reader" expr:data-label="data:l.name"> <!-- Swipe ltr_rtl_vertical_div_cc --> <div class="swiper-container" id="ltr_rtl_vertical_div_cc"> <div class="swiper_init_divbox"> <div class="swiper-wrapper"> <!-- Slide akan diinject oleh JS --> </div> <div class="swiper-button-prev"></div> <div class="swiper-button-next"></div> </div> </div> <!-- Scroll longstrip --> <div class="longstrip-container" id="longstrip_div_cc" style="display:none;"> <div class="longstrip_box" id="longstrip_box"> <!-- Slide longstrip akan diinject oleh JS --> </div> </div> </div> <div class="layout_set_navigasi box_controls_mode"> <div class="showmenu_next_prev"> <!-- Slide dots mini_preview_ltr_rtl_vertical_div_cc --> <div class="mini-preview bottom" id="mini_preview_ltr_rtl_vertical_div_cc"></div> <div class="mini-preview left" id="mini_preview_longstrip_div_cc"></div> <!-- Slide dots mini_preview_longstrip_div_cc --> </div> </div> <div class="setting_menu_bottom box_controls_mode"> <button class="btn_opensheet" id="btn_opensheetSet" type="button"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 1024 1024"> <path fill="currentColor" d="m924.8 625.7l-65.5-56c3.1-19 4.7-38.4 4.7-57.8s-1.6-38.8-4.7-57.8l65.5-56a32.03 32.03 0 0 0 9.3-35.2l-.9-2.6a443.7 443.7 0 0 0-79.7-137.9l-1.8-2.1a32.12 32.12 0 0 0-35.1-9.5l-81.3 28.9c-30-24.6-63.5-44-99.7-57.6l-15.7-85a32.05 32.05 0 0 0-25.8-25.7l-2.7-.5c-52.1-9.4-106.9-9.4-159 0l-2.7.5a32.05 32.05 0 0 0-25.8 25.7l-15.8 85.4a351.9 351.9 0 0 0-99 57.4l-81.9-29.1a32 32 0 0 0-35.1 9.5l-1.8 2.1a446 446 0 0 0-79.7 137.9l-.9 2.6c-4.5 12.5-.8 26.5 9.3 35.2l66.3 56.6c-3.1 18.8-4.6 38-4.6 57.1c0 19.2 1.5 38.4 4.6 57.1L99 625.5a32.03 32.03 0 0 0-9.3 35.2l.9 2.6c18.1 50.4 44.9 96.9 79.7 137.9l1.8 2.1a32.12 32.12 0 0 0 35.1 9.5l81.9-29.1c29.8 24.5 63.1 43.9 99 57.4l15.8 85.4a32.05 32.05 0 0 0 25.8 25.7l2.7.5a449.4 449.4 0 0 0 159 0l2.7-.5a32.05 32.05 0 0 0 25.8-25.7l15.7-85a350 350 0 0 0 99.7-57.6l81.3 28.9a32 32 0 0 0 35.1-9.5l1.8-2.1c34.8-41.1 61.6-87.5 79.7-137.9l.9-2.6c4.5-12.3.8-26.3-9.3-35M788.3 465.9c2.5 15.1 3.8 30.6 3.8 46.1s-1.3 31-3.8 46.1l-6.6 40.1l74.7 63.9a370 370 0 0 1-42.6 73.6L721 702.8l-31.4 25.8c-23.9 19.6-50.5 35-79.3 45.8l-38.1 14.3l-17.9 97a377.5 377.5 0 0 1-85 0l-17.9-97.2l-37.8-14.5c-28.5-10.8-55-26.2-78.7-45.7l-31.4-25.9l-93.4 33.2c-17-22.9-31.2-47.6-42.6-73.6l75.5-64.5l-6.5-40c-2.4-14.9-3.7-30.3-3.7-45.5c0-15.3 1.2-30.6 3.7-45.5l6.5-40l-75.5-64.5c11.3-26.1 25.6-50.7 42.6-73.6l93.4 33.2l31.4-25.9c23.7-19.5 50.2-34.9 78.7-45.7l37.9-14.3l17.9-97.2c28.1-3.2 56.8-3.2 85 0l17.9 97l38.1 14.3c28.7 10.8 55.4 26.2 79.3 45.8l31.4 25.8l92.8-32.9c17 22.9 31.2 47.6 42.6 73.6L781.8 426zM512 326c-97.2 0-176 78.8-176 176s78.8 176 176 176s176-78.8 176-176s-78.8-176-176-176m79.2 255.2A111.6 111.6 0 0 1 512 614c-29.9 0-58-11.7-79.2-32.8A111.6 111.6 0 0 1 400 502c0-29.9 11.7-58 32.8-79.2C454 401.6 482.1 390 512 390s58 11.6 79.2 32.8A111.6 111.6 0 0 1 624 502c0 29.9-11.7 58-32.8 79.2" /> </svg></button> </div> <!-- BottomSheet HTML --> <div id="bottomSheet_MangaReader" class="sheet_menu_mangareader"> <div class="box_bar_drag_Sheet"> <span class="bar_drag_Sheet"></span> </div> <div class="head_sheet"> <h3>Setting</h3> </div> <div class="bottom-sheet-content"> <span class="title_set">Mode Reading</span> <div class="reading-modes"> <button class="mode-btn" data-mode="rtl">️<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"> <path fill="currentColor" d="M3.616 19q-.691 0-1.153-.462T2 17.384V6.616q0-.691.463-1.153T3.616 5h1.807q.69 0 1.153.463t.463 1.153v10.769q0 .69-.463 1.153T5.423 19zm7.423 0q-.691 0-1.153-.462t-.463-1.153V6.615q0-.69.463-1.152T11.039 5h9.346q.69 0 1.153.463T22 6.616v10.769q0 .69-.462 1.153T20.385 19z" /> </svg>Pages (rigth to left)</button> <button class="mode-btn" data-mode="ltr"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"> <g transform="scale(-1, 1) translate(-24, 0)"> <path fill="currentColor" d="M3.616 19q-.691 0-1.153-.462T2 17.384V6.616q0-.691.463-1.153T3.616 5h1.807q.69 0 1.153.463t.463 1.153v10.769q0 .69-.463 1.153T5.423 19zm7.423 0q-.691 0-1.153-.462t-.463-1.153V6.615q0-.69.463-1.152T11.039 5h9.346q.69 0 1.153.463T22 6.616v10.769q0 .69-.462 1.153T20.385 19z" /> </g> </svg>Pages (left to rigth)</button> <button class="mode-btn" data-mode="vertical"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"> <path fill="currentColor" d="M22 11H2v2h20zm-4-4H6V4h12zm2-3a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2zm-2 11a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2z" /> </svg>Pages (vertical)</button> <button class="mode-btn" data-mode="longstrip"><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"> <path fill="currentColor" d="M16 5.846c2.828 0 4.243 0 5.121.901C22 7.65 22 9.1 22 12s0 4.351-.879 5.253c-.878.9-2.293.9-5.121.9H8c-2.828 0-4.243 0-5.121-.9C2 16.35 2 14.9 2 12s0-4.351.879-5.253c.878-.9 2.293-.9 5.121-.9z" /> <path fill="currentColor" fill-rule="evenodd" d="M20.25 2.77a.76.76 0 0 1-.75.768h-15a.76.76 0 0 1-.75-.769A.76.76 0 0 1 4.5 2h15a.76.76 0 0 1 .75.77m0 18.46a.76.76 0 0 1-.75.77h-15a.76.76 0 0 1-.75-.77a.76.76 0 0 1 .75-.768h15a.76.76 0 0 1 .75.769" clip-rule="evenodd" /> </svg>Pages (longstrip)</button> </div> <span class="title_set">Background color</span> <div>Coming soon</div> </div> </div> <div class="box_panelinfo"> <span id="page_panel_active_info">1/0</span> </div> </b:loop> </b:if> </b:with>
2. Tambahkan script dibawah ini tepat diatasnya </body> untuk menjalankan MangaReader:
//<script type="text/javascript"> /*<![CDATA[*/ /*! * Project: Manga Reader * Author: Hirutshuji * Patner: Roka * Website: https://datakodehiru.blogspot.com * Github Repo: https://github.com/MagicReincarnation/Manga-Reader-blogspot * Description: MangaReader untuk membaca manga dengan berbagai mode, termasuk longstrip, RTL, LTR, dan vertikal. Fitur ini juga mendukung zoom, swipe, dan slider dots untuk navigasi yang lebih mudah. * Version: 4.0.0 * License: MIT * * Created: 2025-03-06 * Last Updated: 2025-04-16 * * Copyright (c) 2025 Hirutshuji & Roka * All rights reserved. */ const _set_options_mode_reading = { seriesId: document.querySelector('.mode_manga_reader')?.dataset.label || "", // label series untuk membedakan mode tiap series pages: _link_manga_hr, // link gambad mode: 'rtl', // default; bisa diubah lewat tombol mode timer_auto_Hidebox: 0, // 0 = 1 jam // fitur click next prev page click_screen: { active: true, // fitur: true = on, false = off type: "screen", // type : "screen", "button" reverse: false, // reverse click screen: true = on, false = off }, panelStart_panelEnd: true, // Show panel start dan penel end configNextprev: { show_nextPrev: true, // Show link next prev chapter mode: "spa", // mode: "spa" atau "normal" max: 30, start: 1, labelMain: "Series", site: "https://www.mikoroku.com", // kosongkan untuk default classSelector: ".mode_manga_reader", selector_postbody: ".post-body img", modif_title_Chapter: ["([vV]olume|[cC]hapter|[pP]rolog[ue]?|[eE]pisode|[sS]eason|[cC]h|[vV]ol|[eE]p|[sS])\\s*\\d+(?=[\\s\\W]|$)(.*)"], //Regex Filter Title Chapter/Episode/Volume dll. replaceList_ch: [ { target: "Volume", change_to: 'Vol' }, { target: "Season", change_to: 'S' }, ], // Replace penyingkat judul Chapter/Episode/Volume dll. textError: "Error", }, resolusi: { compresResolusi: true, // fitur replace sxx > resolusi_higth s_resolusi: '/s1600-rw/', //default reso resolusi_higth: '/s1600-rw/', // higth reso resolusi_low: '/s160-rw/', // low reso (thumb lazy) regex: new RegExp("/[swh]\\d{2,4}(?:-[swh]\\d{2,4})?(?:-c)?(?:-rw)?/", "gi"), //custom regex }, }; document.addEventListener('DOMContentLoaded', () => { window.reader = new MangaReader(_set_options_mode_reading); }); /* Script BottomSheet */ const bottomSheet_MangaReader = new BottomSheet({ el: '#bottomSheet_MangaReader' }); document.getElementById('btn_opensheetSet')?.addEventListener('click', () => { bottomSheet_MangaReader.open(); }); document.querySelectorAll('.mode-btn')?.forEach(button => { button.addEventListener('click', () => { bottomSheet_MangaReader.close(); }); }); /*]]>*/ //</script>
3. pasang Mainscriptnya dibawah config.
entah dihost lewat cdn/langsung keblog.
atau bisa pakai aja ini yang sudah dihost <script src="https://cdn.jsdelivr.net/gh/MagicReincarnation/Manga-Reader-blogspot@latest/main.min.js" type="text/javascript"></script>
4. MANUAL POST: Letakan kode dibawah ini dipostingan (isi dengan link gambar)
<script type="text/javascript"> /*<![CDATA[*/ let _link_manga_hr = [ "manga1.jpg", "manga2.jpg", "manga3.jpg" ]; /*]]>*/ </script>
Change Log
Version now 4.0.0
3.0.0
- rilis awal.
3.1.0
- Fixbug regex resolusi url gambar blogspot.
- Mengupdate function Hidebox & zoom
v3.2.0
- Update: mini preview tidak akan diclose saat sedang scroll.
- Meningkatkan function hidebox.
- Zoom sesuai titik jari.
- menghapus observer kode [zoom].
- Support Chapter next prev auto.
v3.3.0
- Menambahkan Info chapter/Mode
- Update Next prev auto
- Update code Mini preview
- Menambahkan tap to scroll (lrt/rtl/vertical/longstrip)
- Update zoom 2 jari di mode longstrip
- menambahkan default setting config.
- Mengoptimalkan option MangaReader.
v4.0.0
- Mengganti mini preview dengan slider dots
- Menambahkan next prev button
- Menambahkan menu sidebar bottom
- Menambahkan Mode Single page next prev & Normal Mode
- Merubah struktur configurasi
- Mengupdate fitur [zoom longstrip, click scroll, click next prev]
- Menambahkan Libary BottomSheet sebagai menu setting Mode baca
- Meningkatkan akurasi hitung halaman saat ini
Lisensi & Credit
Credit:
- Hirutshuji
- Roka
Lisensi MIT:
🔹 Bebas digunakan & dimodifikasi: harap jangan dihapus Credit.
Komentar
Posting Komentar
Yang Sopan komennya.
apapun yang gak aku suka bakal Kuhilangkan.