Apple 89cdb5468f fix: Corregir force unwraps y mejorar seguridad del código
- ManhwaWebScraper.swift: Eliminar force unwrap en URL con guard let
- ManhwaWebScraperOptimized.swift: Eliminar 2 force unwraps en URLs
- StorageServiceOptimized.swift: Usar .first en lugar de subscript [0]
- ImageCache.swift: Usar .first en lugar de subscript [0]
- Agregar caso invalidURL a ScrapingError enum

Build exitoso para iOS 15.0+ (simulador y device)
IPA generado y listo para sideloading

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-02-08 13:56:58 -03:00
2026-02-04 15:34:18 +01:00
2026-02-04 15:34:18 +01:00
2026-02-04 15:34:18 +01:00

MangaReader iOS

App de iOS para leer manga sin publicidad, compatible con Sideloadly/3uTools.

📱 Características

  • Sin publicidad: Lee tus mangas favoritos sin anuncios molestos
  • Lector avanzado: Zoom, pan, navegación táctil, modos de lectura
  • Descarga offline: Descarga capítulos completos para leer sin internet
  • Progreso de lectura: La app recuerda dónde dejaste la lectura
  • Favoritos: Guarda tus mangas favoritos
  • Personalización: Modo oscuro/claro, fondos personalizables
  • iOS 15+ Compatible: Funciona en iPhone 8+ y iPads modernos

🏗️ Arquitectura

El proyecto consta de dos partes:

1. Backend (Opcional)

Un servidor Node.js con Express que:

  • Hace scraping de manhwaweb.com usando Puppeteer
  • Sirve como API REST para los datos de mangas
  • Cachea respuestas para mejor rendimiento

NOTA: El backend es opcional. La app iOS puede hacer todo el scraping localmente usando WKWebView.

2. App iOS (SwiftUI)

Aplicación nativa que:

  • Usa WKWebView para scraping de contenido JavaScript
  • Almacena capítulos localmente
  • Implementa lector con gestures de zoom/pan
  • Guarda progreso y favoritos en UserDefaults/FileManager

📋 Requisitos Previos

Para compilar la app iOS:

  • Mac con Xcode 15+
  • Apple Developer Account (para firmar con certificado de desarrollo)
  • iOS 15+ device

Para el backend (opcional):

  • Node.js 18+
  • npm o yarn

🚀 Instalación y Configuración

Paso 1: Configurar el Backend (Opcional)

# Ir al directorio del backend
cd backend

# Instalar dependencias
npm install

# Iniciar servidor
npm start

# El servidor estará disponible en http://localhost:3000

API Endpoints disponibles:

  • GET /api/health - Health check
  • GET /api/manga/:slug - Info de un manga
  • GET /api/manga/:slug/chapters - Lista de capítulos
  • GET /api/chapter/:slug/images - Imágenes de un capítulo

Paso 2: Abrir en Xcode (Tu Mac)

  1. Subir el código a Gitea/GitHub desde esta VPS:

    cd /home/ren/ios/MangaReader
    git init
    git add .
    git commit -m "Initial commit"
    git remote add origin <TU_GITEA_URL>
    git push -u origin main
    
  2. En tu Mac:

    # Clonar el repositorio
    git clone <TU_GITEA_URL>
    cd MangaReader/ios-app
    
    # Abrir en Xcode
    open MangaReader.xcodeproj
    # O simplemente haz doble clic en el archivo .xcodeproj
    
  3. Configurar el proyecto en Xcode:

    • Selecciona el proyecto en el sidebar
    • En "Signing & Capabilities":
      • Elige tu equipo (Team)
      • Asegúrate que "Automatically manage signing" esté activado
      • Bundle Identifier: com.mangareader.app (o cambiar si está ocupado)
  4. Compilar y ejecutar:

    • Selecciona un dispositivo o simulador (iOS 15+)
    • Presiona Cmd + R o click en el botón Play

Paso 3: Instalar en tu iPhone/iPad con Sideloadly

  1. Conectar tu dispositivo al Mac
  2. Abrir Sideloadly (o 3uTools)
  3. Configurar:
    • Arrastra el archivo .ipa (que crearás en Xcode)
    • Selecciona tu Apple ID para firmar
    • Conecta tu dispositivo
  4. Instalar: Click en "Start"

Crear el archivo .ipa en Xcode:

  1. En Xcode: Product > Archive
  2. Cuando termine, aparecerá la ventana Organizer
  3. Click derecho sobre el archivo > "Show in Finder"
  4. Click derecho > "Show Package Contents"
  5. Products > Applications > MangaReader.app
  6. Copiar MangaReader.app al escritorio
  7. Renombrar a .ipa (o crear un zip y renombrar)

📖 Uso de la App

Agregar un Manga

  1. En la pantalla principal, click en "Agregar"
  2. Ingresa el slug del manga (ej: one-piece_1695365223767)
  3. La app hará scraping y mostrará el manga

Cómo encontrar el slug de un manga:

  1. Ve a https://manhwaweb.com
  2. Busca tu manga favorito
  3. Click en el manga
  4. La URL será algo como: https://manhwaweb.com/manga/one-piece_1695365223767
  5. El slug es: one-piece_1695365223767 (todo después de /manga/)

Leer un Capítulo

  1. En la lista de mangas, selecciona uno
  2. Verás todos los capítulos disponibles
  3. Click en un capítulo para abrir el lector
  4. Usa gestures:
    • Tap simple: Navegar entre páginas
    • Tap doble: Mostrar/ocultar controles
    • Pinch: Zoom
    • Drag: Mover por la página

Descargar Capítulos

  1. En la vista del manga, click en el icono de descarga
  2. Elige cuántos capítulos descargar
  3. Los capítulos descargados tienen un checkmark verde ✓

🎨 Personalización

Fondo del lector

  • Blanco: Para lectura normal
  • Negro: Modo oscuro (ahorra batería en OLED)
  • Sepia: Más cómodo para la vista

Modos de lectura

  • Vertical: Deslizar hacia arriba/abajo
  • Horizontal: Deslizar izquierda/derecha (estilo manga)

📁 Estructura del Proyecto

MangaReader/
├── backend/                 # Backend Node.js (opcional)
│   ├── scraper.js          # Scraper con Puppeteer
│   ├── server.js           # API REST con Express
│   └── package.json
│
└── ios-app/                # App iOS
    ├── MangaReader.xcodeproj
    ├── MangaReaderApp.swift       # Entry point
    ├── Info.plist
    │
    └── Sources/
        ├── Models/
        │   └── Manga.swift         # Modelos de datos
        │
        ├── Services/
        │   ├── ManhwaWebScraper.swift  # Scraper con WKWebView
        │   └── StorageService.swift     # Almacenamiento local
        │
        └── Views/
            ├── ContentView.swift      # Vista principal
            ├── MangaDetailView.swift  # Detalle del manga
            └── ReaderView.swift       # Lector de imágenes

🔧 Solución de Problemas

La app no compila

Error: "Cannot find type 'WKWebView'"

  • Solución: Asegúrate de que el target sea iOS 15+ en project settings

Error: "No such module 'SwiftUI'"

  • Solución: Limpia el proyecto (Cmd + Shift + K) y rebuild

El scraper no funciona

Problema: No se cargan los capítulos

  • Causa: manhwaweb.com cambió su estructura
  • Solución: Revisa los selectores JavaScript en ManhwaWebScraper.swift

Problema: Timeout al cargar

  • Solución: Aumenta el tiempo de espera en loadURLAndWait

Error de firma de código

Problema: "Failed to code sign"

  • Solución:
    1. Verifica tu Apple ID en Xcode preferences
    2. Asegúrate de tener un certificado de desarrollo válido
    3. Limpia la carpeta Derived Data

🚀 Próximas Características

  • Importar lista de mangas desde archivo
  • Sincronización con iCloud
  • Soporte para otras fuentes de manga
  • Lector de webtoon (scroll continuo)
  • Traducción automática
  • Widgets de iOS

📄 Licencia

Este proyecto es para uso personal. Respeta los términos de servicio de manhwaweb.com.

⚠️ Disclaimer

Esta herramienta es exclusivamente para uso personal y educativo. El autor no es responsable del mal uso de este software. Por favor, respeta los derechos de autor y los términos de servicio de los sitios web.

🤝 Contribuciones

Si encuentras bugs o tienes sugerencias, abre un issue en el repositorio.


¡Disfruta leyendo manga sin publicidad! 📚

Description
App de iOS para leer manga sin publicidad - Compatible con Sideloadly/3uTools
Readme 14 MiB
2026-02-08 16:58:56 +00:00
Languages
Swift 87.4%
JavaScript 11.1%
Shell 1.5%