- 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>
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 checkGET /api/manga/:slug- Info de un mangaGET /api/manga/:slug/chapters- Lista de capítulosGET /api/chapter/:slug/images- Imágenes de un capítulo
Paso 2: Abrir en Xcode (Tu Mac)
-
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 -
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 -
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)
-
Compilar y ejecutar:
- Selecciona un dispositivo o simulador (iOS 15+)
- Presiona
Cmd + Ro click en el botón Play
Paso 3: Instalar en tu iPhone/iPad con Sideloadly
- Conectar tu dispositivo al Mac
- Abrir Sideloadly (o 3uTools)
- Configurar:
- Arrastra el archivo
.ipa(que crearás en Xcode) - Selecciona tu Apple ID para firmar
- Conecta tu dispositivo
- Arrastra el archivo
- Instalar: Click en "Start"
Crear el archivo .ipa en Xcode:
- En Xcode: Product > Archive
- Cuando termine, aparecerá la ventana Organizer
- Click derecho sobre el archivo > "Show in Finder"
- Click derecho > "Show Package Contents"
- Products > Applications > MangaReader.app
- Copiar MangaReader.app al escritorio
- Renombrar a .ipa (o crear un zip y renombrar)
📖 Uso de la App
Agregar un Manga
- En la pantalla principal, click en "Agregar"
- Ingresa el slug del manga (ej:
one-piece_1695365223767) - La app hará scraping y mostrará el manga
Cómo encontrar el slug de un manga:
- Ve a https://manhwaweb.com
- Busca tu manga favorito
- Click en el manga
- La URL será algo como:
https://manhwaweb.com/manga/one-piece_1695365223767 - El slug es:
one-piece_1695365223767(todo después de/manga/)
Leer un Capítulo
- En la lista de mangas, selecciona uno
- Verás todos los capítulos disponibles
- Click en un capítulo para abrir el lector
- Usa gestures:
- Tap simple: Navegar entre páginas
- Tap doble: Mostrar/ocultar controles
- Pinch: Zoom
- Drag: Mover por la página
Descargar Capítulos
- En la vista del manga, click en el icono de descarga
- Elige cuántos capítulos descargar
- 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:
- Verifica tu Apple ID en Xcode preferences
- Asegúrate de tener un certificado de desarrollo válido
- 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! 📚✨