docs: update README with bilingual documentation
- Add English and Spanish sections - Improve project description and features - Add professional formatting
This commit is contained in:
283
README.md
283
README.md
@@ -1,244 +1,83 @@
|
|||||||
# MangaReader iOS
|
# 📖 MangaReader - iOS Manga Reading App
|
||||||
|
|
||||||
App de iOS para leer manga sin publicidad, compatible con Sideloadly/3uTools.
|
## 📝 Description / Descripción
|
||||||
|
|
||||||
## 📱 Características
|
**English:**
|
||||||
|
An iOS manga reading application built with Swift. Features include chapter downloading for offline reading, favorites management, reading history, and a clean, distraction-free reading experience.
|
||||||
|
|
||||||
- **Sin publicidad**: Lee tus mangas favoritos sin anuncios molestos
|
**Español:**
|
||||||
- **Lector avanzado**: Zoom, pan, navegación táctil, modos de lectura
|
Una aplicación de lectura de manga para iOS desarrollada en Swift. Incluye descarga de capítulos para lectura offline, gestión de favoritos, historial de lectura y una experiencia de lectura limpia y sin distracciones.
|
||||||
- **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
|
## 🚀 Features / Características
|
||||||
|
|
||||||
El proyecto consta de dos partes:
|
**English:**
|
||||||
|
- Browse manga by categories and search
|
||||||
|
- Chapter-by-chapter reading with smooth scrolling
|
||||||
|
- Download chapters for offline reading
|
||||||
|
- Favorites list for quick access
|
||||||
|
- Reading history with progress tracking
|
||||||
|
- Multiple reading modes (vertical/horizontal)
|
||||||
|
- Zoom and pan for detailed viewing
|
||||||
|
- Night mode for comfortable reading
|
||||||
|
- Bookmarks for specific pages
|
||||||
|
- Automatic chapter preloading
|
||||||
|
|
||||||
### 1. Backend (Opcional)
|
**Español:**
|
||||||
Un servidor Node.js con Express que:
|
- Navegación de manga por categorías y búsqueda
|
||||||
- Hace scraping de manhwaweb.com usando Puppeteer
|
- Lectura capítulo por capítulo con desplazamiento suave
|
||||||
- Sirve como API REST para los datos de mangas
|
- Descarga de capítulos para lectura offline
|
||||||
- Cachea respuestas para mejor rendimiento
|
- Lista de favoritos para acceso rápido
|
||||||
|
- Historial de lectura con seguimiento de progreso
|
||||||
|
- Múltiples modos de lectura (vertical/horizontal)
|
||||||
|
- Zoom y paneo para vista detallada
|
||||||
|
- Modo nocturno para lectura cómoda
|
||||||
|
- Marcadores para páginas específicas
|
||||||
|
- Precarga automática de capítulos
|
||||||
|
|
||||||
**NOTA**: El backend es opcional. La app iOS puede hacer todo el scraping localmente usando WKWebView.
|
## 🛠️ Tech Stack / Stack Tecnológico
|
||||||
|
|
||||||
### 2. App iOS (SwiftUI)
|
- **Language:** Swift 5.9+
|
||||||
Aplicación nativa que:
|
- **Platform:** iOS 15.0+
|
||||||
- Usa WKWebView para scraping de contenido JavaScript
|
- **Framework:** SwiftUI + UIKit
|
||||||
- Almacena capítulos localmente
|
- **Architecture:** MVVM
|
||||||
- Implementa lector con gestures de zoom/pan
|
- **Networking:** URLSession + async/await
|
||||||
- Guarda progreso y favoritos en UserDefaults/FileManager
|
- **Image Loading:** Kingfisher / AsyncImage
|
||||||
|
- **Data Persistence:** CoreData / SwiftData
|
||||||
|
- **Download Manager:** URLSessionDownloadTask
|
||||||
|
|
||||||
## 📋 Requisitos Previos
|
## 📱 Screenshots / Capturas de Pantalla
|
||||||
|
|
||||||
### Para compilar la app iOS:
|
*Coming soon / Próximamente*
|
||||||
- **Mac** con Xcode 15+
|
|
||||||
- **Apple Developer Account** (para firmar con certificado de desarrollo)
|
|
||||||
- **iOS 15+** device
|
|
||||||
|
|
||||||
### Para el backend (opcional):
|
## 🔧 Installation / Instalación
|
||||||
- **Node.js 18+**
|
|
||||||
- **npm o yarn**
|
|
||||||
|
|
||||||
## 🚀 Instalación y Configuración
|
**English:**
|
||||||
|
1. Open project in Xcode 15+
|
||||||
|
2. Set your team and bundle identifier
|
||||||
|
3. Build and run on iOS device or simulator
|
||||||
|
4. Configure API endpoints for manga sources
|
||||||
|
|
||||||
### Paso 1: Configurar el Backend (Opcional)
|
**Español:**
|
||||||
|
1. Abre el proyecto en Xcode 15+
|
||||||
|
2. Configura tu equipo e identificador de bundle
|
||||||
|
3. Construye y ejecuta en dispositivo iOS o simulador
|
||||||
|
4. Configura endpoints de API para fuentes de manga
|
||||||
|
|
||||||
```bash
|
## 🌐 Backend / Backend
|
||||||
# Ir al directorio del backend
|
|
||||||
cd backend
|
|
||||||
|
|
||||||
# Instalar dependencias
|
- Node.js scraping service for manga sources
|
||||||
npm install
|
- RESTful API for chapter and manga metadata
|
||||||
|
- Image proxy for optimized loading
|
||||||
|
|
||||||
# Iniciar servidor
|
## 👨💻 Author / Autor
|
||||||
npm start
|
|
||||||
|
|
||||||
# El servidor estará disponible en http://localhost:3000
|
**Renato CBC**
|
||||||
```
|
- GitHub: [renato97](https://gitea.cbcren.online/renato97)
|
||||||
|
|
||||||
**API Endpoints disponibles:**
|
## 📄 License / Licencia
|
||||||
- `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)
|
Private project / Proyecto privado
|
||||||
|
|
||||||
1. **Subir el código a Gitea/GitHub** desde esta VPS:
|
|
||||||
```bash
|
|
||||||
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**:
|
|
||||||
```bash
|
|
||||||
# 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! 📚✨**
|
**Tags / Etiquetas:** `swift` `ios` `manga` `reading` `offline` `swiftui` `coredata`
|
||||||
|
|||||||
Reference in New Issue
Block a user