Compare commits

..

No commits in common. "e9fdba58b3fbb4b89f02d2745d97365c9268a455" and "be6f5a868b05e957f6781ba3cadf539e9c15b2d4" have entirely different histories.

64 changed files with 10677 additions and 11460 deletions

View File

@ -1,3 +0,0 @@
> 1%
last 2 versions
not dead

View File

@ -1,6 +1,3 @@
[*] [*]
indent_style = space indent_style = space
indent_size = 4 indent_size = 4
[*.yaml]
indent_size = 2

11
.gitignore vendored
View File

@ -1,7 +1,7 @@
.DS_Store .DS_Store
node_modules node_modules
/dist /dist
/esquemaAnimes
# local env files # local env files
.env.local .env.local
@ -11,7 +11,6 @@ node_modules
npm-debug.log* npm-debug.log*
yarn-debug.log* yarn-debug.log*
yarn-error.log* yarn-error.log*
pnpm-debug.log*
# Editor directories and files # Editor directories and files
.idea .idea
@ -20,4 +19,10 @@ pnpm-debug.log*
*.ntvs* *.ntvs*
*.njsproj *.njsproj
*.sln *.sln
*.sw? *.sw*
# Archivos de desarrollo del servidor
srv/*/**.js
srv/*/**.js.map
deployarBackend.js
deployFrontEnd.js

1
.npmrc
View File

@ -1 +0,0 @@
shamefully-hoist=true

View File

@ -1,24 +0,0 @@
pipeline {
agent any
environment {
PATH = "/var/lib/jenkins/.nvm/versions/node/v20.9.0/bin:/var/lib/jenkins/bin:${env.PATH}"
}
stages {
stage('Install') {
steps {
sh 'pnpm i'
}
}
stage('Build') {
steps {
sh 'pnpm build'
}
}
stage('Deploy') {
steps {
sh 'rm -rf /var/www/pseudosubs-v2/*'
sh 'cp -r ./dist/* /var/www/pseudosubs-v2/'
}
}
}
}

View File

@ -1,19 +1,26 @@
# pseudosubs-v2 # pseudosubs5
## Project setup ## Project setup
``` ```
pnpm install yarn install
``` ```
### Compiles and hot-reloads for development ### Compiles and hot-reloads for development
``` ```
pnpm run serve yarn run serve
``` ```
### Compiles and minifies for production ### Compiles and minifies for production
``` ```
pnpm run build yarn run build
``` ```
### Customize configuration ### Run your tests
See [Configuration Reference](https://cli.vuejs.org/config/). ```
yarn run test
```
### Lints and fixes files
```
yarn run lint
```

View File

@ -1,5 +1,5 @@
module.exports = { module.exports = {
presets: [ presets: [
'@vue/cli-plugin-babel/preset' '@vue/app'
] ]
} }

View File

@ -1,677 +0,0 @@
-- MySQL dump 10.13 Distrib 5.7.14, for Linux (x86_64)
--
-- Host: localhost Database: id8503910_pseudosubs
-- ------------------------------------------------------
-- Server version 5.7.14-google
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Current Database: `id8503910_pseudosubs`
--
-- CREATE DATABASE /*!32312 IF NOT EXISTS*/ `id8503910_pseudosubs` /*!40100 DEFAULT CHARACTER SET utf8 */;
-- USE `id8503910_pseudosubs`;
--
-- Table structure for table `ED`
--
DROP TABLE IF EXISTS `ED`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `ED` (
`ED_ID` int(11) NOT NULL AUTO_INCREMENT,
`anime_ID` int(11) DEFAULT NULL,
`num_ED` int(11) DEFAULT NULL,
`nombre` varchar(100) DEFAULT NULL,
`artista` varchar(100) DEFAULT NULL,
`eps` varchar(50) DEFAULT NULL,
PRIMARY KEY (`ED_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `ED`
--
LOCK TABLES `ED` WRITE;
/*!40000 ALTER TABLE `ED` DISABLE KEYS */;
INSERT INTO `ED` VALUES
(1,29,1,'Mimei no Kimi to Hakumei no Mahou','Yanagi Nagi','1 al 13'),
(2,28,1,'Gin no Kisei','Soraru','1 al 12'),
(3,27,1,'Silent Solitude','OxT','1 al 12'),
(4,26,1,'Prayer X','King Gnu','1 al 13'),
(5,26,2,'RED','Survive Said The Prophet','14-24'),
(6,25,1,'LAST GAME','Zwei','2 al 7 y 9 al 13'),
(7,25,2,'Lyra','Zwei','8 y 18'),
(8,25,3,'World Line','Asami Imai','14 al 17 y 19 al 20'),
(9,25,4,'GATE OF STEINER','Sasaki Eri','23'),
(10,24,1,'Zenzen Tomodachi','Haruka Yamazaki','1 al 12'),
(11,23,1,'Kimi no Tonari','halca','1 al 8 y 10 al 11'),
(12,23,2,'Ashita mo Mata','halca','9'),
(13,22,1,'Atria','FoxTails','14 al 24'),
(14,21,1,'Michishirube','Minori Chihara','2 al 8'),
(15,21,2,'Believe in...','Aira Yuuki','9'),
(16,20,1,'Ai wo Oshiete Kureta Kimi e','Qaijff','1 al 11'),
(17,19,1,'Step Up LOVE','DAOKO x Yasuyuki Okamura','2 al 12'),
(18,18,1,'behind','Mio Natsume (Karin Isobe), Hatsuki Morikawa (Yuna Yoshino), Ena Komiya (Lynn)','2 al 12'),
(19,17,1,'Kyokyo Jitsujitsu','nano.RIPE','1 al 12'),
(20,16,1,'LAYon-theLINE','D-selections','1 al 8 y 10 al 12'),
(21,16,2,'Koi no Russian Roulette','Yumemi Yumemite (Yuu Serizawa)','9'),
(22,15,1,'gravityWall','SawanoHiroyuki[nZk]:Tielle','1 y 22'),
(23,15,2,'NEWLOOK','Mashiro Ayano','2 al 12'),
(24,15,3,'world Étude','Aki Toyosaki','13'),
(25,15,4,'Rubikon','Sangatsu no Phantasia','14 al 21'),
(26,14,1,'FLIP FLAP FLIP FLAP','TO-MAS feat.Chima','1 al 13');
/*!40000 ALTER TABLE `ED` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `OP`
--
DROP TABLE IF EXISTS `OP`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `OP` (
`OP_ID` int(11) NOT NULL AUTO_INCREMENT,
`anime_ID` int(11) DEFAULT NULL,
`num_OP` int(11) DEFAULT NULL,
`nombre` varchar(100) DEFAULT NULL,
`artista` varchar(100) DEFAULT NULL,
`eps` varchar(50) DEFAULT NULL,
PRIMARY KEY (`OP_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `OP`
--
LOCK TABLES `OP` WRITE;
/*!40000 ALTER TABLE `OP` DISABLE KEYS */;
INSERT INTO `OP` VALUES (1,25,1,'Fatima','Kanako Itou','2 al 14'),
(2,29,1,'17sai','Haruka to Miyuki','1 al 13'),
(3,28,1,'Rightfully','Mili','2 al 12'),
(4,27,1,'VORACITY','MYTH & ROID','1 al 13'),
(5,26,1,'found & lost','Survive Said The Prophet','14 al 24'),
(6,26,2,'FREEDOM','BLUE ENCOUNT','14 al 24'),
(7,24,1,'Changing point','i☆Ris','2 al 12'),
(8,23,1,'Fiction','Sumika','1 al 11'),
(9,22,1,'Symbol','Luck Life','1 al 12'),
(10,21,1,'Sincerely','TRUE','2 al 12'),
(11,20,1,'My Hero','MAN WITH A MISSION','1 al 11'),
(12,19,1,'fake town baby','UNISON SQUARE GARDEN','1 al 12'),
(13,18,1,'over and over','Nagi Yanagi','2 al 12'),
(14,17,1,'BRAVER','ZAQ','1 al 12'),
(15,16,1,'Deal with the devil','Tia','1 al 12'),
(16,15,1,'gravityWall','SawanoHiroyuki[nZk]:Tielle','2 al 13'),
(17,15,2,'sh0ut','SawanoHiroyuki[nZk]:Tielle','14 al 22'),
(18,14,1,'Serendipity','ZAQ','1 al 13');
/*!40000 ALTER TABLE `OP` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `animes`
--
DROP TABLE IF EXISTS `animes`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `animes` (
`anime_ID` int(11) NOT NULL AUTO_INCREMENT,
`titulo` varchar(100) DEFAULT NULL,
`link` varchar(50) DEFAULT NULL,
`imgUrl` varchar(100) DEFAULT NULL,
`descripcion` text,
`estudio` varchar(50) DEFAULT NULL,
`eps` int(11) DEFAULT NULL,
`alAire` varchar(100) DEFAULT NULL,
`temporada` varchar(25) DEFAULT NULL,
`anio` varchar(4) DEFAULT NULL,
`fuente` varchar(20) DEFAULT NULL,
`generos` varchar(100) DEFAULT NULL,
`color` varchar(20) DEFAULT '#23BF87',
PRIMARY KEY (`anime_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `animes`
--
LOCK TABLES `animes` WRITE;
/*!40000 ALTER TABLE `animes` DISABLE KEYS */;
INSERT INTO `animes` VALUES (14,'Flip Flappers','/Anime/2016/Otono/Flip-Flappers','https://myanimelist.cdn-dena.com/images/anime/4/82292.jpg','Cocona, que lleva una vida normal, se encuentra un día con Papika, y juntas van a Pure Illusion, a conseguir \'fragmentos\', que se dice pueden conceder deseos.','Studio 3Hz',13,'6 de Octubre al 29 de Diciembre','Otono','2016','Original','Ciencia ficcion, Aventura, Comedia, Magia','#E62F68'),
(15,'Re:Creators','/Anime/2017/Verano/Re:Creators','https://myanimelist.cdn-dena.com/images/anime/11/85469.jpg','Los humanos han creado muchas historias. Felicidad, tristeza, ira, emociones profundas. Las historias sacuden nuestro corazón y nos fascinan. Sin embargo, estos son sólo los pensamientos de los espectadores. Pero ¿y si los personajes de la historia tienen \'intenciones\'?','TROYCA',22,'8 de Abril al 26 de Septiembre','Verano','2017','Original','Accion, Ciencia ficcion, Fantasia','#8C00FD'),
(16,'Kakegurui','/Anime/2017/Verano/Kakegurui','https://myanimelist.cdn-dena.com/images/anime/3/86578.jpg','Academia Privada Hyakkaou. Una institución para los privilegiados con un currículo muy peculiar. Veras, cuando eres de los hijos e hijas de los más ricos de los ricos, no es la destreza atlética o la inteligencia lo que te mantiene por delante. Es leer a tu oponente, el arte del trato. ¿Qué mejor manera de afilar esas habilidades que con un riguroso plan de estudios de juegos de azar? ','MAPPA',12,'1 de Julio al 23 de Septiembre','Verano','2017','Manga','Drama, Juegos, Misterio, Psicologico, Escolar, Shonen','#AB272A'),
(17,'Shokugeki no Soma: San no Sara','/Anime/2017/Otono/Shokugeki-no-Soma-3','https://myanimelist.cdn-dena.com/images/anime/4/86603.jpg','Tercera temporada de Shokugeki no Soma','J.C. Staff',12,'4 de Octubre al 20 de Diciembre','Otono','2017','Manga','Ecchi, Escolar, Shonen','#B95F4A'),
(18,'Just Because!','/Anime/2017/Otono/Just-Because','https://myanimelist.cdn-dena.com/images/anime/3/88185.jpg','Al final del segundo semestre del tercer año de preparatoria, cuatro estudiantes están listos para graduarse y pueden sentir el final de su vida en la preparatoria. Pero eso cambia un poco con la llegada de un estudiante transferido. ','Pine Jam',12,'5 de Octubre al 28 de Diciembre','Otono','2017','Original','Slice of Life, Drama, Romance, Escolar','#593844'),
(19,'Kekkai Sensen and Beyond','/Anime/2017/Otono/Kekkai-Sensen-Beyond','https://myanimelist.cdn-dena.com/images/anime/9/88281.jpg','Segunda temporada de Kekkai Sensen.','Bones',12,'8 de Octubre al 24 de Diciembre','Otono','2017','Manga','Accion, Comedia, Fantasia, Shounen, Super poderes, Sobrenatural','#aa0d0b'),
(20,'Inuyashiki','/Anime/2017/Otono/Inuyashiki','https://myanimelist.cdn-dena.com/images/anime/3/88470.jpg','Inuyashiki Ichirou está de mala suerte. Justo cuando parece que las cosas no pueden empeorar, una luz cegadora en el cielo nocturno golpea la tierra donde se encuentra Ichirou. ','MAPPA',11,'13 de Octubre al 22 de Diciembre','Otono','2017','Manga','Accion, Drama, Psicologico, Ciencia ficcion, Seinen','#23BF87'),
(21,'Violet Evergarden','/Anime/2018/Invierno/Violet-Evergarden','https://myanimelist.cdn-dena.com/images/anime/1795/95088.jpg','Hay palabras que Violet escuchó en el campo de batalla, las cuales no puede olvidar. Esas palabras le fueron dadas por alguien que conocía, más que nadie. Ella aún no conoce su significado. ','Kyoto Animation',13,'11 de Enero a 5 de Abril','Invierno','2018','Novela ligera','Fantasia, Drama, Slice of Life','#23bf87'),
(22,'Shokugeki no Soma: San no Sara - Toutsuki Ressha-hen','/Anime/2018/Primavera/Shokugeki-no-Soma-3-2','https://myanimelist.cdn-dena.com/images/anime/1604/93531.jpg','El segundo platillo de Shokugeki no Soma: San no Sara','J.C. Staff',12,'9 de Abril a 25 de Junio','Primavera','2018','Manga','Ecchi, Escolar, Shonen','#413EC9'),
(23,'Wotaku ni Koi wa Muzukashii','/Anime/2018/Primavera/WotaKoi','https://myanimelist.cdn-dena.com/images/anime/1864/93518.jpg','Después de descubrir que trabajan en la misma compañía, un otaku enloquecido y un fujoshi se reúnen por primera vez desde la secundaria. Después de algunas sesiones de bebida después del trabajo comienzan a salir, pero ¿será una relación perfecta para los dos? ','A-1 Pictures',11,'13 de Abril a 22 de Junio','Primavera','2018','Manga web','Comedia, Romance','#EB5089'),
(24,'Mahou Shoujo Site','/Anime/2018/Primavera/Mahou-Shoujo-Site','https://myanimelist.cdn-dena.com/images/anime/1720/95064.jpg','Aya Asagiri es una chica de secundaria que tiene problemas tanto en la escuela con el acoso escolar como en el hogar debido al abuso físico de su hermano. Al navegar en línea, aparece un sitio web en su computadora con una persona de aspecto espeluznante. Esta persona parece tener piedad de ella, y anuncia que le ha otorgado poderes mágicos a Asagiri. ','production doA',12,'7 de Abril a 23 de Junio','Primavera','2018','Manga','Drama, Horror, Psicologico, Supernatural','black'),
(25,'Steins;Gate 0','/Anime/2018/Primavera/Steins;Gate-0','https://myanimelist.cdn-dena.com/images/anime/1768/93520.jpg','La oscura historia no contada de Steins;Gate muestra al excéntrico científico loco Okabe, que lucha por recuperarse de un intento fallido de rescatar a Kurisu. Decide darse por vencido y abandona a su animado álter ego científico, en la búsqueda de olvidar el pasado. Cuando todo parece ser normal, aparentemente recuerda el pasado al conocer a un conocido de Kurisu... ','White Fox',23,'12 de Abril a 27 de Septiembre','Primavera','2018','Novela Visual','Ciencia ficcion, Thriller','rgb(187, 32, 52)'),
(26,'Banana Fish','/Anime/2018/Verano/Banana-Fish','https://myanimelist.cdn-dena.com/images/anime/1190/93472.jpg','La naturaleza hizo a Ash Lynx hermoso; la crianza lo convirtió en un asesino despiadado y frío. Un fugitivo lo crió como el heredero adoptivo y el juguete sexual de \'Papa\' Dino Golzine, Ash, ahora a la edad rebelde de diecisiete años, abandona el reino sostenido por el diablo que lo crió.','MAPPA',24,'6 de Julio a 21 de Diciembre','Verano','2018','Matgo','Accion, Aventura, Drama','#ffc107'),
(27,'Overlord 3','/Anime/2018/Verano/Overlord-3','','Tercera temporada de Overlord.','Madhouse',13,'10 de Julio a 2 de Octubre','Verano','2018','Novela Ligera','Accion, Fantasia, Magia, Sobrenatural','red'),
(28,'Goblin Slayer','/Anime/2018/Otono/Goblin-Slayer','https://myanimelist.cdn-dena.com/images/anime/1949/93415l.jpg','Una joven sacerdotisa formó su primer grupo de aventureros, pero casi inmediatamente se encuentran angustiados. Es el Asesino de Duendes que viene a su rescate, un hombre que dedicó su vida al exterminio de todos los duendes, por cualquier medio necesario. Y cuando los rumores de sus hazañas comienzan a circular, no hay forma de saber quién podría venir a continuación...','White Fox',12,'7 de octubre a ?','Otono','2018','Novela Ligera','Accion, Aventura, Fantasia','#a3be6f'),
(29,'Irozuku Sekai no Ashita Kara','/Anime/2018/Otono/IrozuKai','https://myanimelist.cdn-dena.com/images/anime/1424/93855.jpg','Ambientada en la ciudad de Nagasaki, la historia tiene lugar en un mundo en el que una cantidad minúscula de magia permanece en la vida cotidiana. Hitomi Tsukishiro es una descendiente de 17 años de una familia de brujas que creció con emociones vivas, ya que perdió su sentido del color a una edad muy temprana. Sintiéndose mal por el futuro de su nieta, Kohaku, una gran bruja, envía a Hitomi al pasado, el año 2018. Mediante intercambios con su abuela de 17 años y los miembros de su club, la historia sigue el crecimiento de Hitomi como persona.','P.A. Works',13,'06 de Octubre a ?','Otono','2018','Original','Drama, Magia, Romance','#2f7090'),
(30,'Yakusoku no Neverland','/Anime/Yakusoku-no-Neverland','/img/a/yakusoku-no-neverland.webp','En Grace Field House, la vida no podría ser mejor para los huérfanos. Aunque no tienen padres, junto con los otros niños y una \"Mama\" amable que los cuida, forman una gran \n familia feliz. Sólo hay una regla que deben obedecer: no abandonar el orfanato.','CloverWorks',0,'11 de Enero 2019 a ?','Invierno','2019','Manga','Sci-Fi, Mysterio, Horror, Shounen','#AA833E'),
(31,'Kakegurui xx','/Anime/Kakegurui-xx','https://myanimelist.cdn-dena.com/images/anime/1151/93653.jpg','Segunda temporada de Kakegurui','MAPPA',0,'9 de Enero 2019 a ?','Invierno','2019','Manga','Drama, Juegos, Mysterio, Psychologico, Escolar, Shounen','#624aac');
/*!40000 ALTER TABLE `animes` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `enPagPrin`
--
DROP TABLE IF EXISTS `enPagPrin`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `enPagPrin` (
`pagPrin_ID` int(11) NOT NULL AUTO_INCREMENT,
`posicion` int(11) DEFAULT NULL,
`anime_ID` int(11) DEFAULT NULL,
PRIMARY KEY (`pagPrin_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `enPagPrin`
--
LOCK TABLES `enPagPrin` WRITE;
/*!40000 ALTER TABLE `enPagPrin` DISABLE KEYS */;
/*!40000 ALTER TABLE `enPagPrin` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `eps`
--
DROP TABLE IF EXISTS `eps`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `eps` (
`ep_ID` int(11) NOT NULL AUTO_INCREMENT,
`opcion_ID` int(11) DEFAULT NULL,
`num_ep` int(11) DEFAULT NULL,
`visitas` int(11) DEFAULT '0',
`link` text,
`peso` varchar(10) DEFAULT NULL,
PRIMARY KEY (`ep_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=367 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `eps`
--
LOCK TABLES `eps` WRITE;
/*!40000 ALTER TABLE `eps` DISABLE KEYS */;
INSERT INTO `eps` VALUES (1,1,1,3,'https://unsaedupe-my.sharepoint.com/personal/faraoz_unsa_edu_pe/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Ffaraoz_unsa_edu_pe%2FDocuments%2FPseudoSubs%2F2018_Q4%2FIrodzuku%2F1080p%4060FPS-Irodzuku_Sekai_no_Ashita_Kara%2F01%20%5BPseudoSubs%5D%20Irozuku%20Sekai%20no%20Ashita%20kara%20%281080%4060fps%29%2Emkv&parent=%2Fpersonal%2Ffaraoz_unsa_edu_pe%2FDocuments%2FPseudoSubs%2F2018_Q4%2FIrodzuku%2F1080p%4060FPS-Irodzuku_Sekai_no_Ashita_Kara&slrid=455bab9e-40f0-7000-5c4a-fd7e7239bd7c','500 MB'),
(3,1,2,8,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbaVSNqy-4dNuqvgH4zVP1QBY3v7B0536a26H4nhNegupw?e=dGfUwh','274 MB'),
(4,1,3,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ES3lCzTa6qdOtlbGNfhmfrYBOUnbvsyQyW9Dav_LamzVew?e=vfAipJ','358 MB'),
(5,1,4,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ERCl2g3z_JhOlNKaaCQQUi0BHpAYTF7Q9ocPlqbS3lgYjA?e=5UIyjj','275 MB'),
(6,1,5,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXcNxv2fLT1PrOXitPyjQMIBtOq-46Wj1M-5xpf7bls2Mg?e=iYVijF','291 MB'),
(7,1,6,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQX2Q-o_sc5BjItKRs7Et7UBlYtU0G5Xmhqy_0k2_BNWRQ?e=ZSxqfr','460 MB'),
(8,1,7,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ERKHkci_jUtLo2-aSROqPnkBAlQ0heMBNPSjOvsk2t7emQ?e=fhaOCB','290 MB'),
(9,1,8,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbAyvWbc5DhJkhdguMn8HxQBDnUApHUlJcZmXLy57M-bGg?e=4EedXy','321 MB'),
(10,1,9,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQi9gnMfXkpPgBnSZcelHXQBmv-iNneIaCRTz6NFdSAe0A?e=43CevI','285 MB'),
(11,1,10,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EVupEMhc7RFJmtOPM56GMnQBnlhUXTjRvqbZ_6Y4jszHzg?e=pz9Pmd','364 MB'),
(12,1,11,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EclNibCUQvFAhW0QG67SjCoB-jYGP7xYHvy4dEk1JqZAqw?e=isBDAz','272 MB'),
(25,2,13,4,'http://bit.ly/2GK9KNe','330 MB'),
(26,2,14,4,'http://bit.ly/2xaVKYe','286 MB'),
(27,2,15,8,'http://bit.ly/2s5RzYU','285 MB'),
(28,2,16,5,'http://bit.ly/2koeavx','258 MB'),
(29,2,17,9,'http://bit.ly/2INTmIh','307 MB'),
(30,2,18,4,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EX0Ke7qeZyJIqfUf4ZVtl6kBcG246xv2YujxRuHP1C1Adg?e=8CttHc','284 MB'),
(31,2,19,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EQp_FxjXtMFGoPV9Jb_cOhoBihAzOxpOg_97MqTOvFi1xw?e=cOa25B','278 MB'),
(32,2,20,2,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/Ea4hlEMuWFNMoJgIvw3RkhMBIHIxdDFRKxs2IoraJzYS9A?e=agYC9k','260 MB'),
(33,2,21,6,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EXlyDUGzDgRLty7L90aOEcoBckez4vaZpNHpKG-VrfHxPw?e=dhgHQq','256 MB'),
(34,2,22,2,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/Ea-ewS-6SrVPvYHDTeFCDr4BJuPZL29Ne1oJJdWv2_M-qg?e=cMPeU2','255 MB'),
(35,2,23,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/Ea_Ym8T5LcxJszomScYiCpsBQTcEGKS96jj-p2BQSOd_Pg?e=wBAQla','265 MB'),
(36,2,24,7,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EUGxH3oj4d5AoyIEs5vipx4B7QTAfljiDthXKsW9kA94hA?e=WHk3IA','292 MB'),
(37,3,13,10,'http://bit.ly/2GN6ErO','559 MB'),
(38,3,14,10,'http://bit.ly/2xd1il7','556 MB'),
(39,3,15,9,'http://bit.ly/2kpC89y','555 MB'),
(40,3,16,5,'http://bit.ly/2IJBhzj','556 MB'),
(41,3,17,4,'http://bit.ly/2sfECuC','555 MB'),
(42,3,18,4,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ETqwLdsjjepAptPXqt162NgBLSO3rJXgPxz2pmuo8d0bSw?e=p7SysW','555 MB'),
(43,3,19,4,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EW-8zI4C1qxCruoT5I2im3wBG-NqnbLLI_9Pnff2t8o3vg?e=fhu5Rq','555 MB'),
(44,3,20,2,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfuAx6N4t_BMoDL_119ugWQB-OLmP1dBwqN0W45ipGN2bg?e=kIFSlP','554 MB'),
(45,3,21,8,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/Eagy0riqaxlDot5wMOlAmmoBM_pE14kzMCTD7e-0j_gd5Q?e=SBx4Dk','555 MB'),
(46,3,22,6,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EXpJxEGEDBFKkK-ynAYHSS4B16CkUBnZkv5FWSpIGhCFvA?e=ACc9ud','555 MB'),
(47,3,23,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ETFHaYcrOf9KpQDig69sqAMBebJ9s7xS4Tof0RTxqeMk-g?e=IPEWbg','977 MB'),
(48,3,24,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EREzzQgJLG1GmS1-R0FMEM4BK0ztfRg-LJpl2XTPcasqiQ?e=SyoK9o','990 MB'),
(49,4,1,6,'http://bit.ly/2IMECt0','322 MB'),
(50,4,2,7,'http://bit.ly/2qYvzPc','172 MB'),
(51,4,3,7,'http://bit.ly/2HLf1o4','147 MB'),
(52,4,4,7,'http://bit.ly/2JKV25A','175 MB'),
(53,4,5,6,'http://bit.ly/2wpdLlu','184 MB'),
(54,4,6,8,'http://bit.ly/2Ky1EV5','187 MB'),
(55,4,7,3,'http://bit.ly/2GRgELF','174 MB'),
(56,4,8,10,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EbGfM9z8jn5KvlEn2r0K-EcBaHP3GvgKpc7cWaX_bXgV-g?e=SfJ9lM','157 MB'),
(57,4,9,10,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfN1xeMQp6VJuu9ffVwvqQEBIWnKpevXipApocL6rvMJ9w?e=ZzADxt','176 MB'),
(58,4,10,6,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EdhAdV4HqphOgHxe62xITugB2rC0yiZAhdcoXqdgkp2xUQ?e=kqhVGF','183 MB'),
(59,4,11,2,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EX0lOtArolFAvu7X-w8bYIMBCdNHjQZzztL4_dx5J9O-XA?e=Nge0bX','184 MB'),
(60,4,12,9,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ERvuR5ZjQjZHqTjNAchZf0YBduIBxEcLx7hERVO4QBzcJw?e=tcPnd4','159 MB'),
(61,4,13,9,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EbfY0S0qnCJOkEjkUuw7bLkBObvAQi1utky1Lim0u8zB9Q?e=y8dMfy','179 MB'),
(62,4,14,7,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EceVcu6J3_VOlrTQKEPyFdkBKAkROI-zpQPfqMU_XhDeyw?e=mqRueQ','164 MB'),
(63,4,15,9,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EaZUwede0xtNiYVJsff1XZ4Bk-PRtsBhsnrh2t_Ho3KFKg?e=pCPeXw','170 MB'),
(64,4,16,2,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EQYMs5BPBHVOqYXqK9a9bcgBnvEk3QZlK9TWoar8diJ67g?e=BGi6xj','164 MB'),
(65,4,17,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQrTgaVAQkBGo8lPaDFopcYBzd1P_oZg7753UzSrYkm8cA?e=eXfSTi','159 MB'),
(66,4,18,10,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Efhn8ypEi4hEisKiN-TfkYEBhm4g19F4M6yPgOjW3944TQ?e=tQti69','165 MB'),
(67,4,19,10,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ESkmQbiQWwRCkiLIiNESEosBE5J0ekfvo1qRHjlDohhfRQ?e=882KO0','175 MB'),
(68,4,20,8,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQFmA3itV11KqW08iUbnbssBxn9vFtH43-nnm1zf1jdCtw?e=rbliKb','142 MB'),
(69,4,21,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EfqDG_LBO3BHi1CSP-jvXV4BUCYZe3CvUYTrCgnxr2N3Hw?e=xNAzUQ','171 MB'),
(70,4,22,10,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ERqrfrHjCSRLtJ6VNd_EKFgBQzGDHXHJhoc0C06vMcCkLw?e=zM3Z8H','153 MB'),
(71,4,23,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EdzWH6WkSX1Mlis5l2Dthx8BDJD3v71-8yo_xAf-wU2PYA?e=xVshPe','221 MB'),
(72,5,1,3,'http://bit.ly/2GWCtOU','395 MB'),
(73,5,2,5,'http://bit.ly/2wddodu','466 MB'),
(74,5,3,9,'http://bit.ly/2HXNPiI','442 MB'),
(75,5,4,7,'http://bit.ly/2KrOHx7','361 MB'),
(76,5,5,9,'http://bit.ly/2G2XDFw','375 MB'),
(77,5,6,10,'http://bit.ly/2IwNqnb','380 MB'),
(78,5,7,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUcXhl-BpHpDqIzwH7HlugAB807-hXPo-RDSAa1ZmqAqKg?e=bS7Uup','357 MB'),
(79,5,8,7,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUCKrVmcG9ZMm0Az_FGFufEBFfxG2cNa2xEZoFX2bTRvNw?e=oCuyAE','322 MB'),
(80,5,9,8,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQASs7OxGKBMjrFbVr_dHiYBclJtUcFKdKojgmU3xon3wQ?e=Jfx0Oz','361 MB'),
(81,5,10,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETOYpCOBCwFMk3Y8A5YaaRsBpkCCFoH6NzfZGs4BkLaAOQ?e=q1T7SV','371 MB'),
(82,5,11,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ESIzcSXIf71MpCiHH4pYD20BnkZeHZQ1uXesQb5JfYZ1ZQ?e=rHY0eK','378 MB'),
(83,5,12,7,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUPAcg_q9elBqZ4X1v1w8GkBNnk9uVd1iZTvElKz3kSoow?e=s8Vq4Y','325 MB'),
(84,5,13,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Efvr46kCBz5KoRv2IfY5DO8BlKiWnaUm0xOmxjjKlXkQpw?e=FsR1At','367 MB'),
(85,5,14,10,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EZx7tzte4gpLqoXSm_kwxYoBlqKb0FMHlWALSrO44RcKAA?e=d94diy','339 MB'),
(86,5,15,8,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EX7YM9Z3o2BDqq7VDcGH_EUBA5LCZc6SPodJ017s0i9Q-w?e=itVVha','274 MB'),
(87,5,16,10,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EZbn26qqytNAsbR66yY1XCUBbXiji4lRz5WspA8HOVur1w?e=oIXJgS','267 MB'),
(88,5,17,10,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUqdfZsK8M5An_9xGE5UOmUBjUtKFimZQAfP56CUoH5Cwg?e=pMYdyx','293 MB'),
(89,5,18,6,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EU7ZzYVjn31BnmoHynQd08wBf1DD1EvygFkiCLY--CR0gg?e=Cg9j9f','302 MB'),
(90,5,19,8,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EZjJVVlM2hNJnnPfTBkZ-pUB1byRl6wALkcfgBg6QE5K2w?e=iyhWrD','284 MB'),
(91,5,20,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYq_YlxIgYNKiC2ITwIBUDcBbJcm3pDrglTpQvXbtxytZg?e=7Kiyno','299 MB'),
(92,5,21,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ed97khMrf_1AoYr39xlEcscB8k2hZh4CYgHNAvn1uizu8g?e=JZZHai','318 MB'),
(93,5,22,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EamF213_IbRInl6uRVtes1gBwJhS2j1bcxeOLvdxJiIFyQ?e=FNzyOi','297 MB'),
(94,5,23,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbvRox1_UcRGl1eRi4FUXnoBVrfLRhptxY-zVfi18H5eUA?e=ntu72f','374 MB'),
(95,6,1,5,'http://bit.ly/2EoaS2N','272 MB'),
(96,6,2,9,'http://bit.ly/2GVBTRi','309 MB'),
(97,6,3,7,'http://bit.ly/2HWzkMj','165 MB'),
(98,6,4,10,'http://bit.ly/2HVpKMa','218 MB'),
(99,6,5,3,'http://bit.ly/2juVbir','241 MB'),
(100,6,7,7,'http://bit.ly/2IsToJC','203 MB'),
(101,6,8,9,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EcCKBFEAYthHia6brER-J3oBm2BRMPV7cXyyiNgHT_z0RQ?e=7OAQPM','216 MB'),
(102,6,9,8,'https://mega.nz/#!80RQxSSQ!90lucs7Grf9wphDZHtI2C_OfUyH4-Klgt32FPz8t8eE','201 MB'),
(103,6,10,4,'https://mega.nz/#!t1wFTChB!__pTGpfmIblEIzGf4ir24MHYcB_KITw4in0e13BgaSc','405 MB'),
(104,6,11,10,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ER7GD0MPVcFIj3VJgJmV70IBuQi7FnrA_18Q5rVG1hGypg?e=mfdvcs','210 MB'),
(105,6,12,10,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfPdAIgWakNGviXr_sp0ELUBteQG_Wa-nVYl0Fp1gVa9dA?e=XHrxSd','185 MB'),
(106,6,6,2,'http://bit.ly/2I8KVLE','462 MB'),
(107,7,1,9,'http://bit.ly/2q9SmXM','433 MB'),
(108,7,2,6,'http://bit.ly/2Hv9LB1','356 MB'),
(109,7,3,6,'http://bit.ly/2qVpbrT','319 MB'),
(110,7,4,5,'http://bit.ly/2r3Mn6w','440 MB'),
(111,7,5,2,'http://bit.ly/2Ky1BcZ','488 MB'),
(112,7,6,9,'http://bit.ly/2KiDiyv','367 MB'),
(113,7,7,9,'http://bit.ly/2IRTNVb','428 MB'),
(114,7,8,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EQy1R-8NUKhOlQwo3JI4oKIB2fKlUnA8YWW65Rr6XUh1XQ?e=4Hiz5W','448 MB'),
(115,7,9,5,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ERqs1cOKT69LuJ_SggmM37UBFdwMSgu8xlSIRUNDZ9v17A?e=mAHdFR','206 MB'),
(116,7,10,8,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/Edvtjz7w8YxAqWPMJxuhfGcBN-dBPkNI4Y9t67e4E_0_vA?e=hEPkdS','405 MB'),
(117,7,11,2,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/Ef9fgBIpxhJPtNrXJfZVZJMBUaA1UIToBGBDMrwCECXYSQ?e=Kdinmc','624 MB'),
(118,7,12,7,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EWcUS-I2941HlGobIeQ9tE8BS4dW9fTY7J7SugU5gjptlg?e=zytYOf','595 MB'),
(119,8,1,3,'http://bit.ly/2v9J3Mi','193 MB'),
(120,8,2,10,'http://bit.ly/2HMrhnJ','134 MB'),
(121,8,3,3,'http://bit.ly/2GtKztj','183 MB'),
(122,8,4,7,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ESg94K5YyV9KnKVxqHv4TG8BGvfF28zh8Jy0AYD1Wt8PFg?e=Zd7xDm','185 MB'),
(123,8,5,6,'http://bit.ly/2rENU4e','149 MB'),
(124,8,6,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ESyZ5kIFk6pMn11t9gyObVoBe-o5aomg95Ie7txV-bicPw?e=LWo0oW','141 MB'),
(125,8,7,4,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfPFrRsBJqlKib54vsqWntwBVCYhfrahy2zSzPFr_VprTA?e=aGG8Iz','185 MB'),
(126,8,8,8,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EWE0z08Ozo1Dnc9AAJCgQqwBegDqojjaYuHRpxWQweoAEA?e=63LaLV','149 MB'),
(127,8,9,7,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EdyKksOsVL1EqquM5cIndB4BV0cJ-LlpfgChGFxETAA_xw?e=5bQMXe','178 MB'),
(128,8,10,7,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EVf0OaTBMBRMtwIwiV2JBToBYEOqXOYLKa65wseZIOPFEw?e=K6Ws7T','172 MB'),
(129,8,11,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EZlUPbOIijFDiCom1nXR-4YBC7D7HjiHYG8BnrD8snkigQ?e=QOLRSe','154 MB'),
(130,9,1,9,'http://bit.ly/2EHWdQp','364 MB'),
(131,9,2,5,'http://bit.ly/2r3a3If','231 MB'),
(132,9,3,10,'http://bit.ly/2IRtTRz','516 MB'),
(133,9,4,7,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ERRJBJVcf2dPs84a6e0eXswBCFqtDem1INyQFB35VNNjWw?e=wSnZcD','547 MB'),
(134,9,5,7,'http://bit.ly/2rFNbQ6','461 MB'),
(135,9,6,4,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfbMWbCMfvFEihUXDFju-XgBew6wDH1w_resJkEtxAPk2A?e=hIYTCj','434 MB'),
(136,9,7,6,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EbEIM-DP_9RIggcV7ZbwAZgBH24QNF9A4UWpKdIOSAk45A?e=lasa44','537 MB'),
(137,9,8,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfwNAWcUpX9Coae_fc4x2m8BojdFNQ5z094-5Dm4JKAIpw?e=8Giiv9','467 MB'),
(138,9,9,4,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EVWyXQBrLNNHmKx2NvriZYIBEQI9iLsrnrBEW5hevCGj7g?e=lEK62O','535 MB'),
(139,9,10,3,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EZkpiZR16OxMpqMN7w2DUmQBFR1N_k03Usukoo8e1vMTCQ?e=93GehA','513 MB'),
(140,9,11,5,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfW_d1099DtDrx_OtxtKPiYB6l88kYAsnx6KZgKOFPCN-w?e=w18PjG','457 MB'),
(141,10,1,1,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EVVkQDXP0udHtoo4NyCQIQYBzCFyo-yMX2YQ4cvoDcDrtg?e=twQbP1','160 MB'),
(142,10,2,2,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EZYJPzxOTbBMmO6AY8jHGgwBcGp6frdoIrCEC6N-5BLG4Q?e=3VALQy','190 MB'),
(143,10,3,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUmzg8Eiq7ZEpsGwbDtqyz4B1_yI9Ksk29j01H8y4fs2KA?e=6bgNg4','183 MB'),
(144,10,4,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYHnSRzKBONCmc6TNLjTCT8BYhovJ_005KsfdfZMQDd4ww?e=v0aJcy','172 MB'),
(145,10,5,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EedsdtJ9JmBJhjBm2OE82dQBD4m-EbR8974xXKsYZMTFaw?e=rSHv0I','171 MB'),
(146,10,6,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbDZguj6o6xJs6wML557yZYB6A_jcc95fXbSZL3T8hP8wA?e=LchEUx','157 MB'),
(147,10,7,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ea1jGjrc0SxDhbVXDreFK24BcCL9phQfwjEFViBKUgVMag?e=8wnMog','172 MB'),
(148,10,8,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXsVa96w4sVLhKmGzGFusPgBJKO9I37zmOpoEfoUsiW3xA?e=tWWcB4','174 MB'),
(149,10,9,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXcCEhnPfotGk8-0ho4fogYBNacvg6TIZ0nYplqt5zjRCg?e=fQJBKf','186 MB'),
(150,10,10,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQscfzn41b1LhhMCfPdgAWoB_nlMEs3xhVZmeVk2MqHr5g?e=LGLcnJ','172 MB'),
(151,10,11,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETt0-xm69otBuM_GDQfXwzUBa3QPn4lqJVLX6E1hY2mKyw?e=t7GVv6','151 MB'),
(152,10,12,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EdgorHYQxdBKpAyxLSeGH0cBUpXJmdGPAgo7ypDONmT6DA?e=jPsLSK','160 MB'),
(153,10,13,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXjklVJn-09MqrW5OVA2Oi4BSCOzLIj4005KAD1J5g7OuQ?e=9QxxVS','195 MB'),
(154,11,1,10,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EfZL_64YJzNFuosg2TyOQJYBANVqFnvItC1-6F4C6ooW3w?e=2QjgY3','368 MB'),
(155,11,2,9,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EYtfFPTDs2BFlIX_sCzcCVIBDTWv95MFhzPavaa0Eio1nA?e=PnAKtF','447 MB'),
(156,11,3,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ETS3CdRCsQFLgCGSrAN2Pt4B0e5mTOgk9nxEsv8sN9duow?e=vTmwPP','463 MB'),
(157,11,4,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYG_4ST_qg5PrTcikED_jgUBLWruMl1ac29U8olGdcgmzA?e=W737g2','408 MB'),
(158,11,5,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EfNWibnYuY5Hk1WIw2CfmkIBNCj1FWG4lbVRzE1p7fvrhg?e=Ps8GM0','385 MB'),
(159,11,6,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EROEIrfYN9JEqXge-LUJLnMBijoKm589bxCpWTpNSxyHYA?e=GlukUk','376 MB'),
(160,11,7,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ea6rG3ZkkH1Fuq0NmTqEX-ABBlJnLCCXbjiL3HUZaoWLAQ?e=8Uaxgu','405 MB'),
(161,11,8,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EU-DvvdLHMNKlDj4vOCzzNIBSaVOGdv24xoPP2HPe2cmhw?e=zILaPp','409 MB'),
(162,11,9,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EcisCYsHuo5NvQ70V1dtmRMBuvP-wH4gAsAf6g_u1nAvcw?e=nbLUl4','435 MB'),
(163,11,10,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYgX3JZTvz9CmxsDONY5xhoBIMBGG99bjNRef6af9OI7VA?e=B17Wz9','364 MB'),
(164,11,11,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EX8nwpotTGxLt9SzaQqRGSEB70jQqsTFm8wUa_RnJOh6sw?e=mC5ZmH','369 MB'),
(165,11,12,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ESHmVm2I0P1OjdyK4SxoB-ABPD05YS6cW5Xht6gjYKWhEA?e=vP5MBo','375 MB'),
(166,11,13,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbT1jvJuVVBPh7yVYq-3xM8BJ0FJISQA3gsDScO8lQvfZA?e=u6oeKN','483 MB'),
(167,12,1,10,'https://mega.nz/#!Z9oQ1QgS!QE7o0Yfzr7S5fZeOCHLHi1jspnHiQzHW7vNdUx6kyL8','147 MB'),
(168,12,2,4,'https://mega.nz/#!1oZ1iYTR!DhKHrwGMlg5K0mz_aQlIC5uyG5EVJut9TWIOb5MRFp0','157 MB'),
(169,12,3,3,'https://mega.nz/#!9t5GyQLK!lz5Vic3d1d3dXUAMXh91AZtPMvBuYNiaegvi7cGjNKY','150 MB'),
(170,12,4,3,'https://mega.nz/#!9whyXI7R!L2V5hi4XvreiAANSwdxtsQso_hBblp76_IL1jpBb2Oc','151 MB'),
(171,12,5,4,'https://mega.nz/#!wphWGQDK!9Z9ORYIfHqQO3eq8qrt0EVFMcwSj-lodcAxEmWrjPq8','145 MB'),
(172,12,6,4,'https://mega.nz/#!FkxGiSpB!bWhH6D7A3sfgrESKOjPxcxKVbDyLb6Mqs7B4Ca-IgXw','132 MB'),
(173,12,7,2,'https://mega.nz/#!glhwSKoR!iGxftDAX8_1jeQLDtbyQ4JANg2cvpy0UuYa9F6RY_rk','168 MB'),
(174,12,8,3,'https://mega.nz/#!wxhliBqL!FoFibOCsg9kZa6XOe5U4xYQ6DlqknFt5206Fozavya8','173 MB'),
(175,12,9,2,'https://mega.nz/#!EkRgmADQ!8ZagzKdP-cW5yFQYuA88nOyCLglQJKwZSLowjwB6u5I','158 MB'),
(176,12,10,4,'https://mega.nz/#!89AQ0AiL!Fvywj8RsYdpNtXLX_IuFQT72xbrQyTQ4X_4Ikj6P6gg','129 MB'),
(177,12,11,3,'https://mega.nz/#!UlZ2jY7L!v77P2NdbRd5eM7M5sukJ72G1FVcWlHGlnTAwQLT3VQE','191 MB'),
(178,12,12,1,'https://mega.nz/#!0g5DiYpL!GbMFlaZYQ1_y4k1svldgZsLa-Zi_STHRZRRpdMlcG3w','208 MB'),
(179,12,13,4,'https://mega.nz/#!xo4FBQoB!jpmJ21cEYlZU5N0FlYNR8UZ4BjHLfHewo3ihCmjiIRM','138 MB'),
(180,13,1,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQU6pcxPgiRNkhcy4PjGs3kB3Ia-V-SmFBy1r8CqqL_VWQ?e=X8NTtL','239 MB'),
(181,13,2,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EdkXK6iKQM1IlrY8sLSHijMB4FjHKrQ8OGvgv3AUFiKhRQ?e=qxg8wV','261 MB'),
(182,13,3,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EWs9GQfWfyFDh9kGuH0cuUIBlAfwKTT63WYz3UdLeTBCNg?e=mTcLuM','227 MB'),
(183,13,4,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EfdAyYi_mZVEg8UbnZo8JboBabfFmgJ3bqH27J5eV6cGng?e=O6C6qg','239 MB'),
(184,13,5,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EfkM9Jjq_X5NnX7xig8E5ykBjwv89U1J4yRHcTWGN9Gjkw?e=AdIjnk','230 MB'),
(185,13,6,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYBRU1-MbQtChxW_y08pzpsB9pyiqqvY9ZJ-0IDktqP3zw?e=i8vX6c','215 MB'),
(186,13,7,6,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EU5ju177uhdJnQj7Ke6TZgUBXPn45rBvhQ7iEqOHeXke4A?e=WDog1p','262 MB'),
(187,13,8,1,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EavE0fys0BlEinwZ6yxHFWEBkbLW8hmFP0re7Tt1mWCRCg?e=cFugjZ','282 MB'),
(188,13,9,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EdISYCClbSBLv4B-TppC9rABTgEK_BwIZGdhEFKVzHl6CQ?e=1x5afG','264 MB'),
(189,13,10,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUwqNbwSaE5Oj36_mY2ZM18Bp8ZUJKksKvfJpzfN9yw_8w?e=dnjiTS','216 MB'),
(190,13,11,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EVdggRyWB3FJo8quqvzrh78B_1WkzPhhqWniwb29G4aRNg?e=sXxnaw','304 MB'),
(191,13,12,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EdzmY7lQY5lGstHX1clGum8BdGE8rlv76VOfjck73Qx_nw?e=uVbpzO','327 MB'),
(192,13,13,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYtfh0hkCUBOjn6jaPiTIG0BuFipz1Gg347osxFqRa4inw?e=trc1Cn','230 MB'),
(193,14,1,10,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETOjru4VPQNAqfrDyHazC5cBWkzkcNkdxQQFPKPF3CMLIw?e=KGSwVl','501 MB'),
(194,14,2,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EScf3S-mq7BDtIfuY3xKe3sBBx31u2-wkUK7x-a3hkIGkQ?e=abHEhZ','543 MB'),
(195,14,3,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYOsauY6iHVCmtnyIB2ZPzABA8ivExpOmIaLLR-ciCU05Q?e=jqZ8xS','495 MB'),
(196,14,4,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EfFO3-WEAqdMq72CsF9nzw0BKvrP_HcHu6Xk-2H3n8ej4Q?e=jdrOP2','373 MB'),
(197,14,5,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQAJx3PiLapJkCjn4ocVoL0BHjFrZpzor55sJUcuCGHzxg?e=lZsRsd','371 MB'),
(198,14,6,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EY1uRYH0qzhIlnwla7Uu5VABkqn1qQKsA3GV-ZFsa_TdUA?e=ZfKurg','388 MB'),
(199,14,7,6,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUxE6_DuAIROmg0r87eSKjUBib-hJ44cnoVa76gdyC3zbw?e=bg6DTu','412 MB'),
(200,14,8,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EaoiDX7hvNtOjxLZkrOp8qoBk0sgfD-0489FCJkdQwV8nA?e=Ke8gD4','513 MB'),
(201,14,9,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETmnDJIR2OZDrjRoov75YsABGhLv4vueGN2pvdpJU2cgYA?e=RTVl2l','287 MB'),
(202,14,10,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EV61Q6s4trZGnKaCvQGJSF0ByCZReGHZKOIy6my_zhuzzg?e=qQ6xQN','410 MB'),
(203,14,11,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EdBm5kRbUlVEsUa_eAt5T04B3Uc_AQp5ijJFIMjTeOWdoA?e=UbuqXe','551 MB'),
(204,14,12,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ESuyMq9VF4pNnaJJOptLMGEBA6bW0DT_t0REEjGpzGzaqg?e=0qonYD','591 MB'),
(205,14,13,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETmjmnG3XZ5FiAkbMIKcZNYBEOVSASVKjyKNgib7yVe4gw?e=EBDTcO','431 MB'),
(206,15,1,13,'https://mega.nz/#!0kpQnCzB!vt_b9n5I-YZ5TiFoqKyE5anuU_RFIzaYkEBChD-SwaA','162 MB'),
(207,15,2,9,'https://mega.nz/#!I1wmHaZA!4iWIa50YXX07rfr-FfOh0L-y960c-r-NGNsWCq8LcAA','118 MB'),
(208,15,3,7,'https://mega.nz/#!M8AUHSYb!QtXRc_72OnbCw7d8Hnhp0jRCKPlElt1gJ_FPxz05rLs','154 MB'),
(209,15,4,12,'https://mega.nz/#!9goRBCTL!7dUcVOquVyR7uH2vdEgw2XYFmmIHoy_d36pZKbZmm9E','174 MB'),
(210,15,5,5,'https://mega.nz/#!ppRCnSJK!XtdmSATnaIl0YvSFnwY-lkBpyw8frYZ-1N0MKLC4ONw','123 MB'),
(211,15,6,2,'https://mega.nz/#!U0hV3KCJ!HSQ-F3vtfXOLFZyc314rk5dkYyZbJmJNy0mw1zGB-sA','184 MB'),
(212,15,7,4,'https://mega.nz/#!1lhlUYxI!EjqUadNWssKmsRI4dTmuah-oPZ8hdi1qaeLG0wYu1E4','118 MB'),
(213,15,8,0,'https://mega.nz/#!hggjEKrL!uLL4cNCOzXVShCbvciX52AWj771CKA2uRgT3x_ZrXMo','135 MB'),
(214,15,9,0,'https://mega.nz/#!U0wlwSZZ!tjln9leR5nJjjcZD1QXNEcujx5CI2T5RS0cVn13lyvA','121 MB'),
(215,15,10,0,'https://mega.nz/#!xloFQSTZ!aS3lM6pIxAVbXh_nSaYHKhLWCttPBPMNxaiMBa6ZOvI','151 MB'),
(216,15,11,1,'https://mega.nz/#!R5xhzQST!F2QfcTMW2TamPOO_UOKHsTggFgE9NTuIszaeDlu0b4k','111 MB'),
(217,16,1,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EY0ddAEU0OdMo09arH62F3kBrQdFvNIv6zCCfalEND3KJg?e=sdoOiD','246 MB'),
(218,16,2,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbyMuJLjh3NPvYRyQOeATE0BEGjihTlvKhsPdq4030jRKw?e=e8uwXL','176 MB'),
(219,16,3,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EWn3iW1y1WdEoAgmFRNExo0BUuW7TUaYIOe_p3ZX4T_5Yw?e=MZKmr0','225 MB'),
(220,16,4,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EY7u5BJDSEdPh5eGRtXv8LQBlkCYrxcMETCLbub-mhS9mQ?e=ecNn0c','116 MB'),
(221,16,5,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYncNSR25NlAgxC9Xemg_W0BMgVZq1KTRHarYXkOys4Ulg?e=RrwzJo','185 MB'),
(222,16,6,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EVv7wl0NcG9Iov2I8nZsbDoBcsvko6ZPwtSyVuIOVS9p6w?e=qpZVzn','284 MB'),
(223,16,7,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EZva_Sm5UdtFrqV13EsJbosB2aUIZDpgSjNHInJigEPQBQ?e=mCWrRr','182 MB'),
(224,17,1,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ET3mS7EDLPhCi79Z2eruI7YB28x1PFtvbF0AyEhzn61XFw?e=k9AjLN','191 MB'),
(225,17,2,8,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ee7JwEQhJZpDqlUsbZLH_8UB88x7Joas_O1GIKkmxBnyiQ?e=sgJWhg','197 MB'),
(226,17,3,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ERKf5zUANaBIvaBqiNHQ9s4B2ppEOLnsdwhO4v5O4hQfsQ?e=sJ52sV','183 MB'),
(227,17,4,6,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbLHO2KGeIVNvIY2iZQjhfQBC6FMBK7H74Cd77Pe3t6zgw?e=JCg0Ub','235 MB'),
(228,17,5,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUU4l5PRY85OuBnZ8_iYB1MBrGAD3v5E88yq8FlDP6PVWw?e=lrUJzb','176 MB'),
(229,18,1,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETOULtPLqr5IlaGQaNZ1zVUBwLpfbR7iQwqUgHH6fubj6A?e=AqFcSB','443 MB'),
(230,18,2,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQWwPzd_brlJiCtvqmywXt0B0BROQeVsW9wxPu8s2d_Ayw?e=qhMtEU','418 MB'),
(231,18,3,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EeMyyEMvjnVGi6ufy8snK4UBhUph4ge-g-1Ul-MgcL7ZNg?e=rjk5Tr','380 MB'),
(232,18,4,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EVSYtxSTG4tNqt-3obEEc6oBUoCN2k6sYV3b6KCve6DQPA?e=6YDtwb','547 MB'),
(233,18,5,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ESU8Rl9AHx1Hly05B8cFUI4B5MW4PbX-D1hqJ4ZkPI9ynA?e=BXF3PM','389 MB'),
(234,23,1,74,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ES1HGTLrBHJLkB0xqp6osrYBFyzoAHPHGz6PjhkiIdxKUw?e=MV6SIR','469 MB'),
(235,22,1,26,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EfQIminum89MtJlNaGAPhfYBh6ln9q6AQ4vxjksKZWsh9w?e=9rOxQD','533 MB'),
(236,21,1,26,'https://mega.nz/#!ssBFjIZK!CF31mHrl1_dR3kjtOpd_WLtCL0z6wM5Hdl9Vghobhv0','190 MB'),
(237,19,1,7,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbhRMIikpe1FqgbqQsEC-NABzcae4xMFgcba8pOZH975tA?e=EyguPg','96 MB'),
(238,20,1,9,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXeBuWIDbN5GhiTHya2C9ScBH1YkxqykGF0E4XGc8maFIw?e=zuOB7y','275 MB'),
(239,20,2,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQAhTNGuPRlNol0wDpEwdDAB0uA7nnec-1OQaicyu1XZ7w?e=2Tv5VM','233 MB'),
(240,19,2,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETboi8nAPcJNkkEZ-gYDwloB25bJQ3iWVmESmT7_baUREQ?e=72ujTR','78 MB'),
(241,17,6,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EWd7yypsnIBIjGNf-YfHPP4BmEjtn8VBMq9tq8iKZ-2MXg?e=SxXU5C','229 MB'),
(242,17,7,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ERVq4L20ONRKttyntttQDgQBLwKDqKsmuqqi7fRHve_WIA?e=4xVOFn','238 MB'),
(243,17,8,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYSuq7DhW7RLqe_XwP0V9ncBQyIIXpMq2NIKEEf44o9aEg?e=nmU2sq','187 MB'),
(244,17,9,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbmfjteyTeJBnBrZm9zE_80BtiDT0VMLDnYpB3HzkGnU_w?e=08AVsi','192 MB'),
(245,17,10,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ef286iYJVvRBgCGtS3wk5IIB3H9AsaJiXuHq2aqvyYCsPw?e=tlhBgb','195 MB'),
(246,17,11,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ee8mSFEUph5FsdI1UUqx6dgBJTew2GVy5xaTRj1t88gyNg?e=9Jdbcc','185 MB'),
(247,17,12,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQ5ImUq3tY5EgNK8BRB_a6MBvG0cjm_KsTwZvHI7v5tXiQ?e=IEnBvs','187 MB'),
(262,18,6,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EVnAhkHfqqRKnPL0mfYtqgEB_GX4NrdioAN8TZ22nQg5Iw?e=JxLKj5','507 MB'),
(263,18,7,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Eet0zVT1XeVJo1RClbIF_HQBRYBOB5TN-AlFeHSroTo3XA?e=AdToM0','569 MB'),
(264,18,8,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ESkif3S7iodHrYTM7o23qhoBxdQ0i5KvvksfD-wN91CKzg?e=fqCNkY','412 MB'),
(265,18,9,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EazyH4AvQs9Lj4tCn2PQp9IB38HefcD4lkxKWpL77TAgRQ?e=fBrIKr','446 MB'),
(266,18,10,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ERKgfvE4DxpEsHkg_PB16oUBUqCFovIZ5xPDEh5GUoAYTw?e=nM6xlj','403 MB'),
(267,18,11,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETYaAJS87thLpfQXManCuisBAPbA4GuWJeoqTuskTgznLw?e=RdXPf9','431 MB'),
(268,18,12,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EW71FHnjgapOrPS5fQg7lfgBDuzKn0Mt3qrpS5F_mVmvbQ?e=PRswdt','427 MB'),
(269,1,12,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EeKf3wj1MN9LrC_jOGyXPxQBZwmSmniju1GlJq9VZ1a6wg?e=qNiZIN','345 MB'),
(270,1,13,4,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUMIrJsdoAVHu4enLomwbD0BEHO297T6witxXnMa0eipWw?e=KeYbn9','263 MB'),
(271,15,12,5,'https://mega.nz/#!x4QD3a5Z!i0MvCxQOUBVY6qH4ePgLp2jzuhBJAb2d6BCvjhZsnng','144 MB'),
(272,15,13,5,'https://mega.nz/#!I8wWlICQ!3K_AgKGz_VqY_kNDkCIU2bi8GC5-VxpwDk0ObyZRLD0','176 MB'),
(273,16,8,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETLqMMyug89NkFFEJVRGMegBmbO4RHim2y56Zl3c1yfWhA?e=xYoJXB','202 MB'),
(274,16,9,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUngR5PiWy9Prjmc3tOTeRQBBDkSS_6g3W9xudRUjYOnVg?e=1p5opx','181 MB'),
(275,16,10,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQVfbBvimpFCh3VHemGrVIoBPjSOXPbd_G0wZ2aShaOuEw?e=YTDbXq','226 MB'),
(276,16,11,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETOwHZtpE0ZJuSIg0rTz4ScBYKvonTggQ4PgpVDwKDC-Gg?e=esG9H2','169 MB'),
(277,16,12,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ebkm5jlaw2VLnz1YyXGKcIUBgrvQ9Avy0QMDJj6iE3WnwQ?e=GIO9UH','214 MB'),
(278,16,13,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EUMIrJsdoAVHu4enLomwbD0BEHO297T6witxXnMa0eipWw?e=TsRPWK','263 MB'),
(279,16,2,0,'https://goo.gl/VdMYSA','233 MB'),
(280,16,3,0,'https://goo.gl/rT9TMi','203 MB'),
(281,16,4,0,'https://goo.gl/mUXu1a','250 MB'),
(282,16,5,0,'https://goo.gl/LjGejp','296 MB'),
(283,16,6,0,'https://goo.gl/kfZn2S','322 MB'),
(284,16,7,0,'https://mega.nz/#!wkp0yIjA!adcmdDAxwuiwX3n1YWgxsN_MfgXTdejUyKkhd6SKIPE','267 MB'),
(285,16,8,0,'https://mega.nz/#!UsYiGSiR!MHILASy9529swiWdnDjUMzqjmSK-qF2H5D9FFDiYjDo','334 MB'),
(286,16,9,0,'https://goo.gl/mvD5Dx','430 MB'),
(287,16,10,0,'https://mega.nz/#!F0YmCASa!7JURiNWx333zN-i9MDDeqZZMmFInhxUAKXBdHMZWl0o','252 MB'),
(288,16,11,0,'https://mega.nz/#!ohoEUTaK!RHP1Mj5tsXqW2wHGPeWJ6qbdBI9Xo-flG8G18dADRx0','334 MB'),
(289,16,12,0,'https://mega.nz/#!dhBjBZgC!TqHfjgiTgrXI_Dx_POT1tTIElWhhxbXfGCoONqps90U','362 MB'),
(290,16,13,0,'https://mega.nz/#!wkIRQaDJ!NtzBFeIbiWWHvHgshhvsAGslKTaRAh-QJxT3xYCiGYo','308 MB'),
(291,26,1,0,'https://goo.gl/xy3KBm','236 MB'),
(292,26,2,0,'https://goo.gl/5PTtoA','197 MB'),
(293,26,3,0,'https://goo.gl/RZdwxZ','199 MB'),
(294,26,4,1,'https://goo.gl/dZ3k4g','245 MB'),
(295,26,5,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EZXdG2JUmqtEptcXtubo_z4BQei5SbfLzeIC8vUbSSEAGA?e=eF14Rt','220 MB'),
(296,26,6,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EdxPY4nCdY5GnO_liwWtJacBNWBr0KbHUwtb4bOJHIBXfw?e=CEJobd','212 MB'),
(297,26,7,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/Ee8KogdtItNOlbvRnmZYP-4BpAnIaDZQDg5Vp1ffy7ocvw?e=3vL48U','220 MB'),
(298,26,8,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/ETA-_rNVklNBsp5md8x0NN8BfvZqqjvHYn-FtvNVFygQMg?e=6f7Xsg','226 MB'),
(299,26,9,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EUsx981l9uJCvqOfUtT81dEBeMSwkfb-Rx9tTbrd09_ouQ?e=bp2Ixz','338 MB'),
(300,26,10,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXo2-BGUfuVEiAn2vcAWPJUBBg6GGflmjjYNA4XZg3sUfQ?e=AzicZn','189 MB'),
(301,26,11,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EZWAO2HkSaNBvd6p2J8uU-IB0yHCLDhElk9hdvibLOsCmA?e=QzOu9z','231 MB'),
(302,26,12,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EWZ3gVhFso5IrY4eWPFuNAoBNMgiARD14M2A7EVC6URXcg?e=yP9nwJ','274 MB'),
(303,26,13,0,'https://unsaedupe-my.sharepoint.com/:u:/g/personal/faraoz_unsa_edu_pe/EaT9AwyJLppIsnGE1EJGSs0Bl4q759AHA4Aus4IZGQerZg?e=D8fUsf','235 MB'),
(304,27,1,0,'https://goo.gl/Gmi3Hz','605 MB'),
(305,27,2,0,'https://goo.gl/Tggpj1','455 MB'),
(306,27,3,0,'https://goo.gl/7WUX5Q','494 MB'),
(307,27,4,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EZXjpdsDKEBChTcYapw-eIkBb1Z2BnLhY4gi-Cj6spcnQw?e=KOwFAT','563 MB'),
(308,27,5,3,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EaiLkkVhbCJOsfshu3Isd2QBZvIbKaWlfAD1R4oMgEoFbQ?e=z2CAcr','443 MB'),
(309,27,6,1,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EWaTf-ODtzZBsGM_5mQaYowBL3eNBboMKRPwCUSRNaBOlQ?e=9m8R4o','418 MB'),
(310,27,7,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXkAJCbx66BLgVFbeGeUJkAB9K7ATkTioNoX0y6rKaxi1A?e=pVCZl3','495 MB'),
(311,27,8,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ERpi4CQQ4nxDpFVf0Jpv3hcBM3Mjftrg0yNQDXDcceD6Hg?e=sxT9aq','490 MB'),
(312,27,9,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/Ef4p873jdBNHvGSoWmlhHAoBJHvtyI5bkH98Hd1i60nM5g?e=mSPH0i','377 MB'),
(313,27,10,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EZ34r1eEG85KrnrGfZx3UfUBiuCB0t2LS3AHwRpMdAvYdQ?e=xn3NCL','399 MB'),
(314,27,11,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EQlUcljnuHNPogJ3wR5XFgQBTlDhAjXYYSctKJyokAeZSg?e=mU3wnf','530 MB'),
(315,27,12,1,'http://bit.ly/2vMXS87','593 MB'),
(316,27,13,0,'http://bit.ly/2qkeajI','492 MB'),
(317,28,1,0,'https://goo.gl/Vwddkq','355 MB'),
(318,28,2,0,'https://goo.gl/7HtEbm','238 MB'),
(319,28,3,0,'https://goo.gl/GoW3Rq','268 MB'),
(320,28,4,0,'https://goo.gl/Gxj4qk','269 MB'),
(321,28,5,0,'https://goo.gl/iqGgJ2','306 MB'),
(322,28,6,0,'https://goo.gl/jWfGAZ','248 MB'),
(323,28,7,0,'https://goo.gl/1PZsst','263 MB'),
(324,28,8,0,'https://goo.gl/LytYQu','274 MB'),
(325,28,9,0,'https://goo.gl/Fp3sYi','260 MB'),
(326,28,10,0,'https://goo.gl/gXS2Gz','355 MB'),
(327,28,11,0,'https://goo.gl/2pQkir','229 MB'),
(328,29,1,0,'https://goo.gl/H2Eh5Y','188 MB'),
(329,29,2,0,'https://goo.gl/3x931m','155 MB'),
(330,29,3,0,'https://goo.gl/JUU3Xm','172 MB'),
(331,29,4,0,'https://goo.gl/dJB4v9','175 MB'),
(332,29,5,0,'https://goo.gl/5EN6de','242 MB'),
(333,29,6,0,'https://goo.gl/r5j4aC','194 MB'),
(334,29,7,0,'https://goo.gl/1WPqrJ','183 MB'),
(335,29,8,0,'https://goo.gl/DQowPU','173 MB'),
(336,29,9,0,'https://goo.gl/fWqQgs','185 MB'),
(337,29,10,0,'https://goo.gl/ZFyx8Z','226 MB'),
(338,29,11,0,'https://goo.gl/ruKDH6','165 MB'),
(339,30,1,0,'https://goo.gl/n4BQK4','373 MB'),
(340,30,2,0,'https://goo.gl/2BxVNf','333 MB'),
(341,30,3,0,'https://goo.gl/ZRJASF','377 MB'),
(342,30,4,2,'https://goo.gl/E3UFzZ','392 MB'),
(343,30,5,0,'https://goo.gl/9JFmuf','383 MB'),
(344,30,6,0,'https://goo.gl/zbmReU','354 MB'),
(345,30,7,0,'https://goo.gl/bj5pXb','322 MB'),
(346,30,8,0,'https://goo.gl/y3Rbp2','396 MB'),
(347,30,9,1,'https://goo.gl/SAM2fM','363 MB'),
(348,30,10,0,'https://goo.gl/HR42QK','506 MB'),
(349,30,11,0,'https://goo.gl/pCrjRM','346 MB'),
(350,32,5,0,'https://goo.gl/ngTunU','340 MB'),
(351,32,6,0,'https://goo.gl/qfW6ci','519 MB'),
(352,32,7,0,'https://goo.gl/CrbpbD','518 MB'),
(353,32,8,0,'https://goo.gl/swMBpo','502 MB'),
(354,32,9,0,'https://goo.gl/fYhTVQ','492 MB'),
(355,32,10,0,'https://goo.gl/1u4tb7','675 MB'),
(356,32,11,0,'https://goo.gl/HQPrsp','421 MB'),
(357,23,2,40,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EaE07eK4fMxCvs_feQhJsREBM6THgUudCuKXdI1X8d2fdA?e=Ymylyh','393 MB'),
(358,22,2,5,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EbtK8f-R0pFEnYJgOiXsRIwBzFLJ9SIufOyZbm7Oh9GT2w?e=ONr0l7','455 MB'),
(359,21,2,9,'https://mega.nz/#!F4Jn1QTY!2PEY6tkw5vFpZK0LLe16AMsOUh_x9ya4QgYQDDap43c','250 MB'),
(360,19,3,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/ETN3w13jMyxHhy4S09CAiIgB-Hnaex1W2LqR0tX-vmUY0Q?e=RxwcPb','131 MB'),
(361,20,3,2,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EXW7xR0mMP1NqpeMb6BLmGgBAjAJmBeR1zDcsc1bs1pfHA?e=tQ6vZm','265 MB'),
(362,23,3,37,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EWiIc50xEQ5Lpnp5BFGtxhoBN9Ylpl12mmbiOZHGkbsosg?e=SywdKN','385 MB'),
(363,21,3,1,'https://mega.nz/#!5kIWQSIa!ySVrvV3B_LEYN9vyxXMtsfK5RJwrmJeJ8tk45LBtSOg','174 MB'),
(364,22,3,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EW2FOWDgNdNDkT5whJTqC8EBPG9b49YUCcFEzXz3NftZPA?e=eZKSnD','442 MB'),
(365,19,4,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EYcp7WqerKxGk7fuat2azk8BxZ3ckx6K0Cu7wSkSB6ObBw?e=1bcVJF','76 MB'),
(366,20,4,0,'https://unsaedupe-my.sharepoint.com/:v:/g/personal/faraoz_unsa_edu_pe/EcPkec_6Qi1HkGK5Aw_2UlYBCNe_WRMrbh9iXV7syb1Juw?e=kGOclQ','230 MB');
/*!40000 ALTER TABLE `eps` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `links`
--
DROP TABLE IF EXISTS `links`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `links` (
`links_ID` int(11) NOT NULL AUTO_INCREMENT,
`anime_ID` int(11) DEFAULT NULL,
`aviso` tinytext,
`sigEp` varchar(5) DEFAULT NULL,
PRIMARY KEY (`links_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `links`
--
LOCK TABLES `links` WRITE;
/*!40000 ALTER TABLE `links` DISABLE KEYS */;
INSERT INTO `links` VALUES (1,29,'Todo listo :D','0'),
(3,22,'Todo listo','0'),
(4,25,'Todo listo.','0'),
(5,24,'Todo listo','0'),
(6,23,'Todo listo','0'),
(7,26,'Volveré...','14'),
(8,27,'Todo listo','0'),
(9,28,'Todo listo.','0'),
(10,30,'Todo listo :D','5'),
(11,31,'Ahora el 4...','4'),
(12,14,'Hubo un problema con los links. Lo arreglaremos pronto.','1'),
(13,21,'Todo listo','0'),
(14,20,'Completo','0'),
(15,19,'Hubo un problema con los links. Lo arreglaremos pronto.','1');
/*!40000 ALTER TABLE `links` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `links_opciones`
--
DROP TABLE IF EXISTS `links_opciones`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `links_opciones` (
`opcion_ID` int(11) NOT NULL AUTO_INCREMENT,
`links_ID` int(11) DEFAULT NULL,
`num_opcion` int(11) DEFAULT NULL,
`formato` varchar(20) DEFAULT NULL,
`res` varchar(20) DEFAULT NULL,
`servidor` varchar(20) DEFAULT NULL,
`color` varchar(20) DEFAULT NULL,
PRIMARY KEY (`opcion_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `links_opciones`
--
LOCK TABLES `links_opciones` WRITE;
/*!40000 ALTER TABLE `links_opciones` DISABLE KEYS */;
INSERT INTO `links_opciones` VALUES (1,1,3,'MKV','1080p@60fps','OneDrive','rgb(47, 112, 144)'),
(2,3,1,'MP4','720p','OneDrive','rgb(47, 112, 144)'),
(3,3,2,'MKV','1080p','OneDrive','rgb(47, 112, 144)'),
(4,4,1,'MP4','720p@60fps','OneDrive','rgb(47, 112, 144)'),
(5,4,2,'MKV','1080p@60fps','OneDrive','rgb(47, 112, 144)'),
(6,5,1,'MKV','720p','MEGA | OneDrive','rgb(47, 112, 144)'),
(7,5,2,'MP4','1080p','OneDrive','rgb(47, 112, 144)'),
(8,6,1,'MP4','720p','OneDrive','rgb(47, 112, 144)'),
(9,6,2,'MKV','1080p','OneDrive','rgb(47, 112, 144)'),
(10,7,1,'MP4','720p','OneDrive','rgb(47, 112, 144)'),
(11,7,2,'MKV','1080p','OneDrive','rgb(47, 112, 144)'),
(12,8,1,'MP4','ligero','MEGA','red'),
(13,8,2,'MP4','720p@60fps','OneDrive','rgb(47, 112, 144)'),
(14,8,3,'MKV','1080p@60fps','OneDrive','rgb(47, 112, 144)'),
(15,1,1,'MP4','ligero','MEGA','red'),
(16,1,2,'MP4','720p@60fps','OneDrive','rgb(47, 112, 144)'),
(17,9,1,'MP4','720p','OneDrive','rgb(47, 112, 144)'),
(18,9,2,'MP4','1080p','OneDrive','rgb(47, 112, 144)'),
(19,10,1,'MP4','ligero','OneDrive','rgb(47,112,144)'),
(20,10,2,'MP4','1080p','OneDrive','rgb(47,112,144)'),
(21,11,1,'MP4','ligero@60fps','MEGA','red'),
(22,11,2,'MP4','1080p@60fps','OneDrive','rgb(47,112,144)'),
(23,11,3,'MKV','1080p@60fps','OneDrive','rgb(47,112,144)'),
(24,12,1,'MP4','720p','MEGA',NULL),
(25,13,1,'MKV','720p@60fps','MEGA','red'),
(26,13,2,'MP4','720p@60fps','OneDrive','blue'),
(27,13,3,'MKV','1080p@60fps','OneDrive','blue'),
(28,14,1,'MKV','720p','MEGA','red'),
(29,14,2,'MP4','720p','OneDrive','blue'),
(30,14,3,'MP4','1080p','OneDrive','blue'),
(32,14,4,'MKV','1080p','OneDrive','blue'),
(33,15,1,'MKV','720p','Mega',NULL),
(34,15,2,'MP4','720p','Mega',NULL),
(35,15,3,'MP4','1080p','OneDrive',NULL);
/*!40000 ALTER TABLE `links_opciones` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2019-02-02 20:16:00

View File

@ -1,78 +0,0 @@
DROP TABLE IF EXISTS ED;
CREATE TABLE ED (
ED_ID SERIAL PRIMARY KEY,
anime_ID INT DEFAULT NULL,
num_ED INT DEFAULT NULL,
nombre TEXT DEFAULT NULL,
artista TEXT DEFAULT NULL,
eps TEXT DEFAULT NULL
);
DROP TABLE IF EXISTS OP;
CREATE TABLE OP (
OP_ID SERIAL PRIMARY KEY,
anime_ID INT DEFAULT NULL,
num_OP INT DEFAULT NULL,
nombre TEXT DEFAULT NULL,
artista TEXT DEFAULT NULL,
eps TEXT DEFAULT NULL
);
DROP TABLE IF EXISTS animes;
CREATE TABLE animes (
anime_ID SERIAL PRIMARY KEY,
titulo varchar(100) DEFAULT NULL,
link varchar(50) DEFAULT NULL,
imgUrl varchar(100) DEFAULT NULL,
descripcion text,
estudio varchar(50) DEFAULT NULL,
eps INT DEFAULT NULL,
alAire varchar(100) DEFAULT NULL,
temporada varchar(25) DEFAULT NULL,
anio varchar(4) DEFAULT NULL,
fuente varchar(20) DEFAULT NULL,
generos varchar(100) DEFAULT NULL,
color varchar(20) DEFAULT '#23BF87'
);
DROP TABLE IF EXISTS enPagPrin;
CREATE TABLE enPagPrin (
pagPrin_ID SERIAL PRIMARY KEY,
posicion int DEFAULT NULL,
anime_ID int DEFAULT NULL
);
DROP TABLE IF EXISTS eps;
CREATE TABLE eps (
ep_ID SERIAL PRIMARY KEY ,
opcion_ID int DEFAULT NULL,
num_ep int DEFAULT NULL,
visitas int DEFAULT '0',
link text,
peso varchar(10) DEFAULT NULL
);
DROP TABLE IF EXISTS links;
CREATE TABLE links (
links_ID SERIAL PRIMARY KEY ,
anime_ID int DEFAULT NULL,
aviso TEXT,
sigEp varchar(5) DEFAULT NULL
);
DROP TABLE IF EXISTS links_opciones;
CREATE TABLE links_opciones (
opcion_ID SERIAL PRIMARY KEY,
links_ID int DEFAULT NULL,
num_opcion int DEFAULT NULL,
formato varchar(20) DEFAULT NULL,
res varchar(20) DEFAULT NULL,
servidor varchar(20) DEFAULT NULL,
color varchar(20) DEFAULT NULL
);

View File

@ -1,19 +0,0 @@
{
"compilerOptions": {
"target": "es5",
"module": "esnext",
"baseUrl": "./",
"moduleResolution": "node",
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
}
}

View File

@ -1,34 +1,56 @@
{ {
"name": "pseudosubs-v2", "name": "pseudosubs5",
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"scripts": { "scripts": {
"serve": "vue-cli-service serve", "start": "node app.js",
"build": "vue-cli-service build" "serve": "vue-cli-service serve",
}, "build": "vue-cli-service build",
"dependencies": { "express": "vue-cli-service express:watch",
"@webdiscus/pug-loader": "^2.10.5", "express:run": "vue-cli-service express:run"
"coffee-loader": "^4.0.0", },
"coffeescript": "^2.7.0", "dependencies": {
"core-js": "^3.8.3", "compression": "^1.7.4",
"pug-plain-loader": "^1.1.0", "connect-history-api-fallback": "^1.6.0",
"pug-plugin": "^4.9.9", "express": "^4.16.4",
"register-service-worker": "^1.7.2", "mysql": "^2.17.1",
"vue": "^2.6.14", "register-service-worker": "^1.6.2",
"vue-analytics": "^5.22.1", "sha-hasher": "^1.0.5",
"vue-disqus": "^3.0.5", "vue": "^2.6.6",
"vue-google-signin-button": "^1.0.4", "vue-analytics": "^5.16.4",
"vue-router": "^3.5.1", "vue-disqus": "^3.0.5",
"vuex": "^3.6.2", "vue-google-signin-button": "^1.0.2",
"yaml": "^2.3.3" "vue-router": "^3.0.1",
}, "vuex": "^3.0.1",
"devDependencies": { "web-push": "^3.3.3",
"@vue/cli-plugin-babel": "~5.0.0", "yaml": "^1.4.0"
"@vue/cli-plugin-router": "~5.0.0", },
"@vue/cli-plugin-vuex": "~5.0.0", "devDependencies": {
"@vue/cli-service": "~5.0.0", "@types/express": "^4.16.1",
"sass": "^1.32.7", "@types/mysql": "^2.15.6",
"sass-loader": "^12.0.0", "@vue/cli-plugin-babel": "^3.0.5",
"vue-template-compiler": "^2.6.14" "@vue/cli-plugin-pwa": "^3.0.5",
} "@vue/cli-service": "^3.0.5",
"body-parser": "^1.19.0",
"coffee-loader": "^0.9.0",
"coffeescript": "^2.3.2",
"ftp-deploy": "^2.3.3",
"google-auth-library": "^3.1.2",
"node-sass": "^4.9.0",
"pug": "^2.0.3",
"pug-plain-loader": "^1.0.0",
"sass-loader": "^7.1.0",
"vue-cli-plugin-express": "^1.0.0",
"vue-template-compiler": "^2.5.21"
},
"postcss": {
"plugins": {
"autoprefixer": {}
}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not ie <= 8"
]
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,302 +0,0 @@
[
{
"anime_id": 33,
"titulo": "Kaguya-sama wa Kokurasetai: First Kiss wa Owaranai",
"link": "/Anime/Kaguya-sama-4",
"imgurl": "https://cdn.myanimelist.net/images/anime/1670/130060l.jpg",
"descripcion": "Cuarta temporada de Kaguya-sama wa Kokurasetai.",
"estudio": "A1-Pictures",
"eps": 4,
"alaire": "17 de Diciembre de 2022",
"temporada": "Primavera",
"anio": "2022",
"fuente": "Manga",
"generos": "Comedia, Drama, Psicologico, Romance, Escolar, Seinen",
"color": "#9e0034"
},
{
"anime_id": 32,
"titulo": "Kaguya-sama wa Kokurasetai? S2",
"link": "/Anime/Kaguya-sama-2",
"imgurl": "https://cdn.myanimelist.net/images/anime/1676/103600l.jpg",
"descripcion": "Segunda temporada de Kaguya-sama wa Kokurasetai. No prometo nada.",
"estudio": "A1-Pictures",
"eps": 12,
"alaire": "11 de Abril 2020 a ?",
"temporada": "Primavera",
"anio": "2020",
"fuente": "Manga",
"generos": "Comedia, Drama, Psicologico, Romance, Escolar, Seinen",
"color": "red"
},
{
"anime_id": 31,
"titulo": "Kakegurui xx",
"link": "/Anime/Kakegurui-xx",
"imgurl": "https://cdn.myanimelist.net/images/anime/1151/93653l.jpg",
"descripcion": "Segunda temporada de Kakegurui",
"estudio": "MAPPA",
"eps": 0,
"alaire": "9 de Enero 2019 a ?",
"temporada": "Invierno",
"anio": "2019",
"fuente": "Manga",
"generos": "Drama, Juegos, Mysterio, Psychologico, Escolar, Shounen",
"color": "#624aac"
},
{
"anime_id": 30,
"titulo": "Yakusoku no Neverland",
"link": "/Anime/Yakusoku-no-Neverland",
"imgurl": "/img/a/yakusoku-no-neverland.webp",
"descripcion": "En Grace Field House, la vida no podría ser mejor para los huérfanos. Aunque no tienen padres, junto con los otros niños y una \\\"Mama\\\" amable que los cuida, forman una gran \\n familia feliz. Sólo hay una regla que deben obedecer: no abandonar el orfanato.",
"estudio": "CloverWorks",
"eps": 0,
"alaire": "11 de Enero 2019 a ?",
"temporada": "Invierno",
"anio": "2019",
"fuente": "Manga",
"generos": "Sci-Fi, Mysterio, Horror, Shounen",
"color": "#AA833E"
},
{
"anime_id": 29,
"titulo": "Irozuku Sekai no Ashita Kara",
"link": "/Anime/IrozuKai",
"imgurl": "https://cdn.myanimelist.net/images/anime/1424/93855l.jpg",
"descripcion": "Ambientada en la ciudad de Nagasaki, la historia tiene lugar en un mundo en el que una cantidad minúscula de magia permanece en la vida cotidiana. Hitomi Tsukishiro es una descendiente de 17 años de una familia de brujas que creció con emociones vivas, ya que perdió su sentido del color a una edad muy temprana. Sintiéndose mal por el futuro de su nieta, Kohaku, una gran bruja, envía a Hitomi al pasado, el año 2018. Mediante intercambios con su abuela de 17 años y los miembros de su club, la historia sigue el crecimiento de Hitomi como persona.",
"estudio": "P.A. Works",
"eps": 13,
"alaire": "06 de Octubre a ?",
"temporada": "Otono",
"anio": "2018",
"fuente": "Original",
"generos": "Drama, Magia, Romance",
"color": "#2f7090"
},
{
"anime_id": 28,
"titulo": "Goblin Slayer",
"link": "/Anime/Goblin-Slayer",
"imgurl": "https://cdn.myanimelist.net/images/anime/1949/93415l.jpg",
"descripcion": "Una joven sacerdotisa formó su primer grupo de aventureros, pero casi inmediatamente se encuentran angustiados. Es el Asesino de Duendes que viene a su rescate, un hombre que dedicó su vida al exterminio de todos los duendes, por cualquier medio necesario. Y cuando los rumores de sus hazañas comienzan a circular, no hay forma de saber quién podría venir a continuación...",
"estudio": "White Fox",
"eps": 12,
"alaire": "7 de octubre a ?",
"temporada": "Otono",
"anio": "2018",
"fuente": "Novela Ligera",
"generos": "Accion, Aventura, Fantasia",
"color": "#a3be6f"
},
{
"anime_id": 27,
"titulo": "Overlord 3",
"link": "/Anime/Overlord-3",
"imgurl": "https://cdn.myanimelist.net/images/anime/1511/93473l.jpg",
"descripcion": "Tercera temporada de Overlord.",
"estudio": "Madhouse",
"eps": 13,
"alaire": "10 de Julio a 2 de Octubre",
"temporada": "Verano",
"anio": "2018",
"fuente": "Novela Ligera",
"generos": "Accion, Fantasia, Magia, Sobrenatural",
"color": "red"
},
{
"anime_id": 26,
"titulo": "Banana Fish",
"link": "/Anime/Banana-Fish",
"imgurl": "https://cdn.myanimelist.net/images/anime/1190/93472l.jpg",
"descripcion": "La naturaleza hizo a Ash Lynx hermoso; la crianza lo convirtió en un asesino despiadado y frío. Un fugitivo lo crió como el heredero adoptivo y el juguete sexual de Papa Dino Golzine, Ash, ahora a la edad rebelde de diecisiete años, abandona el reino sostenido por el diablo que lo crió.",
"estudio": "MAPPA",
"eps": 24,
"alaire": "6 de Julio a 21 de Diciembre",
"temporada": "Verano",
"anio": "2018",
"fuente": "Matgo",
"generos": "Accion, Aventura, Drama",
"color": "#ffc107"
},
{
"anime_id": 25,
"titulo": "Steins;Gate 0",
"link": "/Anime/Steins-Gate-0",
"imgurl": "https://cdn.myanimelist.net/images/anime/1768/93520l.jpg",
"descripcion": "La oscura historia no contada de Steins;Gate muestra al excéntrico científico loco Okabe, que lucha por recuperarse de un intento fallido de rescatar a Kurisu. Decide darse por vencido y abandona a su animado álter ego científico, en la búsqueda de olvidar el pasado. Cuando todo parece ser normal, aparentemente recuerda el pasado al conocer a un conocido de Kurisu... ",
"estudio": "White Fox",
"eps": 23,
"alaire": "12 de Abril a 27 de Septiembre",
"temporada": "Primavera",
"anio": "2018",
"fuente": "Novela Visual",
"generos": "Ciencia ficcion, Thriller",
"color": "rgb(187, 32, 52)"
},
{
"anime_id": 24,
"titulo": "Mahou Shoujo Site",
"link": "/Anime/Mahou-Shoujo-Site",
"imgurl": "https://cdn.myanimelist.net/images/anime/1720/95064l.jpg",
"descripcion": "Aya Asagiri es una chica de secundaria que tiene problemas tanto en la escuela con el acoso escolar como en el hogar debido al abuso físico de su hermano. Al navegar en línea, aparece un sitio web en su computadora con una persona de aspecto espeluznante. Esta persona parece tener piedad de ella, y anuncia que le ha otorgado poderes mágicos a Asagiri. ",
"estudio": "production doA",
"eps": 12,
"alaire": "7 de Abril a 23 de Junio",
"temporada": "Primavera",
"anio": "2018",
"fuente": "Manga",
"generos": "Drama, Horror, Psicologico, Supernatural",
"color": "black"
},
{
"anime_id": 23,
"titulo": "Wotaku ni Koi wa Muzukashii",
"link": "/Anime/WotaKoi",
"imgurl": "https://cdn.myanimelist.net/images/anime/1864/93518l.jpg",
"descripcion": "Después de descubrir que trabajan en la misma compañía, un otaku enloquecido y un fujoshi se reúnen por primera vez desde la secundaria. Después de algunas sesiones de bebida después del trabajo comienzan a salir, pero ¿será una relación perfecta para los dos? ",
"estudio": "A-1 Pictures",
"eps": 11,
"alaire": "13 de Abril a 22 de Junio",
"temporada": "Primavera",
"anio": "2018",
"fuente": "Manga web",
"generos": "Comedia, Romance",
"color": "#EB5089"
},
{
"anime_id": 22,
"titulo": "Shokugeki no Soma: San no Sara - Toutsuki Ressha-hen",
"link": "/Anime/Shokugeki-no-Soma-3-2",
"imgurl": "https://cdn.myanimelist.net/images/anime/1604/93531l.jpg",
"descripcion": "El segundo platillo de Shokugeki no Soma: San no Sara",
"estudio": "J.C. Staff",
"eps": 12,
"alaire": "9 de Abril a 25 de Junio",
"temporada": "Primavera",
"anio": "2018",
"fuente": "Manga",
"generos": "Ecchi, Escolar, Shonen",
"color": "#413EC9"
},
{
"anime_id": 21,
"titulo": "Violet Evergarden",
"link": "/Anime/Violet-Evergarden",
"imgurl": "https://cdn.myanimelist.net/images/anime/1795/95088l.jpg",
"descripcion": "Hay palabras que Violet escuchó en el campo de batalla, las cuales no puede olvidar. Esas palabras le fueron dadas por alguien que conocía, más que nadie. Ella aún no conoce su significado. ",
"estudio": "Kyoto Animation",
"eps": 13,
"alaire": "11 de Enero a 5 de Abril",
"temporada": "Invierno",
"anio": "2018",
"fuente": "Novela ligera",
"generos": "Fantasia, Drama, Slice of Life",
"color": "#23bf87"
},
{
"anime_id": 20,
"titulo": "Inuyashiki",
"link": "/Anime/Inuyashiki",
"imgurl": "https://cdn.myanimelist.net/images/anime/3/88470l.jpg",
"descripcion": "Inuyashiki Ichirou está de mala suerte. Justo cuando parece que las cosas no pueden empeorar, una luz cegadora en el cielo nocturno golpea la tierra donde se encuentra Ichirou. ",
"estudio": "MAPPA",
"eps": 11,
"alaire": "13 de Octubre al 22 de Diciembre",
"temporada": "Otono",
"anio": "2017",
"fuente": "Manga",
"generos": "Accion, Drama, Psicologico, Ciencia ficcion, Seinen",
"color": "#23BF87"
},
{
"anime_id": 19,
"titulo": "Kekkai Sensen and Beyond",
"link": "/Anime/Kekkai-Sensen-Beyond",
"imgurl": "https://cdn.myanimelist.net/images/anime/9/88281l.jpg",
"descripcion": "Segunda temporada de Kekkai Sensen.",
"estudio": "Bones",
"eps": 12,
"alaire": "8 de Octubre al 24 de Diciembre",
"temporada": "Otono",
"anio": "2017",
"fuente": "Manga",
"generos": "Accion, Comedia, Fantasia, Shounen, Super poderes, Sobrenatural",
"color": "#aa0d0b"
},
{
"anime_id": 18,
"titulo": "Just Because!",
"link": "/Anime/Just-Because",
"imgurl": "https://cdn.myanimelist.net/images/anime/3/88185l.jpg",
"descripcion": "Al final del segundo semestre del tercer año de preparatoria, cuatro estudiantes están listos para graduarse y pueden sentir el final de su vida en la preparatoria. Pero eso cambia un poco con la llegada de un estudiante transferido. ",
"estudio": "Pine Jam",
"eps": 12,
"alaire": "5 de Octubre al 28 de Diciembre",
"temporada": "Otono",
"anio": "2017",
"fuente": "Original",
"generos": "Slice of Life, Drama, Romance, Escolar",
"color": "#593844"
},
{
"anime_id": 17,
"titulo": "Shokugeki no Soma: San no Sara",
"link": "/Anime/Shokugeki-no-Soma-3",
"imgurl": "https://cdn.myanimelist.net/images/anime/4/86603l.jpg",
"descripcion": "Tercera temporada de Shokugeki no Soma",
"estudio": "J.C. Staff",
"eps": 12,
"alaire": "4 de Octubre al 20 de Diciembre",
"temporada": "Otono",
"anio": "2017",
"fuente": "Manga",
"generos": "Ecchi, Escolar, Shonen",
"color": "#B95F4A"
},
{
"anime_id": 16,
"titulo": "Kakegurui",
"link": "/Anime/Kakegurui",
"imgurl": "https://cdn.myanimelist.net/images/anime/3/86578l.jpg",
"descripcion": "Academia Privada Hyakkaou. Una institución para los privilegiados con un currículo muy peculiar. Veras, cuando eres de los hijos e hijas de los más ricos de los ricos, no es la destreza atlética o la inteligencia lo que te mantiene por delante. Es leer a tu oponente, el arte del trato. ¿Qué mejor manera de afilar esas habilidades que con un riguroso plan de estudios de juegos de azar? ",
"estudio": "MAPPA",
"eps": 12,
"alaire": "1 de Julio al 23 de Septiembre",
"temporada": "Verano",
"anio": "2017",
"fuente": "Manga",
"generos": "Drama, Juegos, Misterio, Psicologico, Escolar, Shonen",
"color": "#AB272A"
},
{
"anime_id": 15,
"titulo": "Re:Creators",
"link": "/Anime/Re:Creators",
"imgurl": "https://cdn.myanimelist.net/images/anime/11/85469l.jpg",
"descripcion": "Los humanos han creado muchas historias. Felicidad, tristeza, ira, emociones profundas. Las historias sacuden nuestro corazón y nos fascinan. Sin embargo, estos son sólo los pensamientos de los espectadores. Pero ¿y si los personajes de la historia tienen intenciones?",
"estudio": "TROYCA",
"eps": 22,
"alaire": "8 de Abril al 26 de Septiembre",
"temporada": "Verano",
"anio": "2017",
"fuente": "Original",
"generos": "Accion, Ciencia ficcion, Fantasia",
"color": "#8C00FD"
},
{
"anime_id": 14,
"titulo": "Flip Flappers",
"link": "/Anime/Flip-Flappers",
"imgurl": "https://cdn.myanimelist.net/images/anime/4/82292l.jpg",
"descripcion": "Cocona, que lleva una vida normal, se encuentra un día con Papika, y juntas van a Pure Illusion, a conseguir fragmentos, que se dice pueden conceder deseos.",
"estudio": "Studio 3Hz",
"eps": 13,
"alaire": "6 de Octubre al 29 de Diciembre",
"temporada": "Otono",
"anio": "2016",
"fuente": "Original",
"generos": "Ciencia ficcion, Aventura, Comedia, Magia",
"color": "#E62F68"
}
]

File diff suppressed because it is too large Load Diff

View File

@ -1,308 +0,0 @@
[
{
"opcion_id": 1,
"links_id": 1,
"num_opcion": 3,
"formato": "MKV",
"res": "1080p@60fps",
"servidor": "OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 2,
"links_id": 3,
"num_opcion": 1,
"formato": "MP4",
"res": "720p",
"servidor": "OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 3,
"links_id": 3,
"num_opcion": 2,
"formato": "MKV",
"res": "1080p",
"servidor": "OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 4,
"links_id": 4,
"num_opcion": 1,
"formato": "MP4",
"res": "720p@60fps",
"servidor": "OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 5,
"links_id": 4,
"num_opcion": 2,
"formato": "MKV",
"res": "1080p@60fps",
"servidor": "OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 6,
"links_id": 5,
"num_opcion": 1,
"formato": "MKV",
"res": "720p",
"servidor": "MEGA | OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 7,
"links_id": 5,
"num_opcion": 2,
"formato": "MP4",
"res": "1080p",
"servidor": "OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 8,
"links_id": 6,
"num_opcion": 1,
"formato": "MP4",
"res": "720p",
"servidor": "OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 9,
"links_id": 6,
"num_opcion": 2,
"formato": "MKV",
"res": "1080p",
"servidor": "OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 10,
"links_id": 7,
"num_opcion": 1,
"formato": "MP4",
"res": "720p",
"servidor": "OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 11,
"links_id": 7,
"num_opcion": 2,
"formato": "MKV",
"res": "1080p",
"servidor": "OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 12,
"links_id": 8,
"num_opcion": 1,
"formato": "MP4",
"res": "ligero",
"servidor": "MEGA",
"color": "red"
},
{
"opcion_id": 13,
"links_id": 8,
"num_opcion": 2,
"formato": "MP4",
"res": "720p@60fps",
"servidor": "OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 14,
"links_id": 8,
"num_opcion": 3,
"formato": "MKV",
"res": "1080p@60fps",
"servidor": "OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 15,
"links_id": 1,
"num_opcion": 1,
"formato": "MP4",
"res": "ligero",
"servidor": "MEGA",
"color": "red"
},
{
"opcion_id": 16,
"links_id": 1,
"num_opcion": 2,
"formato": "MP4",
"res": "720p@60fps",
"servidor": "OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 17,
"links_id": 9,
"num_opcion": 1,
"formato": "MP4",
"res": "720p",
"servidor": "OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 18,
"links_id": 9,
"num_opcion": 2,
"formato": "MP4",
"res": "1080p",
"servidor": "OneDrive",
"color": "rgb(47, 112, 144)"
},
{
"opcion_id": 19,
"links_id": 10,
"num_opcion": 1,
"formato": "MP4",
"res": "ligero",
"servidor": "OneDrive",
"color": "rgb(47,112,144)"
},
{
"opcion_id": 20,
"links_id": 10,
"num_opcion": 2,
"formato": "MP4",
"res": "1080p",
"servidor": "OneDrive",
"color": "rgb(47,112,144)"
},
{
"opcion_id": 21,
"links_id": 11,
"num_opcion": 1,
"formato": "MP4",
"res": "ligero@60fps",
"servidor": "MEGA",
"color": "red"
},
{
"opcion_id": 22,
"links_id": 11,
"num_opcion": 2,
"formato": "MP4",
"res": "1080p@60fps",
"servidor": "OneDrive",
"color": "rgb(47,112,144)"
},
{
"opcion_id": 23,
"links_id": 11,
"num_opcion": 3,
"formato": "MKV",
"res": "1080p@60fps",
"servidor": "OneDrive",
"color": "rgb(47,112,144)"
},
{
"opcion_id": 24,
"links_id": 12,
"num_opcion": 1,
"formato": "MP4",
"res": "720p",
"servidor": "MEGA",
"color": null
},
{
"opcion_id": 25,
"links_id": 13,
"num_opcion": 1,
"formato": "MKV",
"res": "720p@60fps",
"servidor": "MEGA",
"color": "red"
},
{
"opcion_id": 26,
"links_id": 13,
"num_opcion": 2,
"formato": "MP4",
"res": "720p@60fps",
"servidor": "OneDrive",
"color": "blue"
},
{
"opcion_id": 27,
"links_id": 13,
"num_opcion": 3,
"formato": "MKV",
"res": "1080p@60fps",
"servidor": "OneDrive",
"color": "blue"
},
{
"opcion_id": 28,
"links_id": 14,
"num_opcion": 1,
"formato": "MKV",
"res": "720p",
"servidor": "MEGA",
"color": "red"
},
{
"opcion_id": 29,
"links_id": 14,
"num_opcion": 2,
"formato": "MP4",
"res": "720p",
"servidor": "OneDrive",
"color": "blue"
},
{
"opcion_id": 30,
"links_id": 14,
"num_opcion": 3,
"formato": "MP4",
"res": "1080p",
"servidor": "OneDrive",
"color": "blue"
},
{
"opcion_id": 32,
"links_id": 14,
"num_opcion": 4,
"formato": "MKV",
"res": "1080p",
"servidor": "OneDrive",
"color": "blue"
},
{
"opcion_id": 33,
"links_id": 15,
"num_opcion": 1,
"formato": "MKV",
"res": "720p",
"servidor": "Mega",
"color": null
},
{
"opcion_id": 34,
"links_id": 15,
"num_opcion": 2,
"formato": "MP4",
"res": "720p",
"servidor": "Mega",
"color": null
},
{
"opcion_id": 35,
"links_id": 15,
"num_opcion": 3,
"formato": "MP4",
"res": "1080p",
"servidor": "OneDrive",
"color": null
}
]

View File

@ -1,88 +0,0 @@
[
{
"links_id": 1,
"anime_id": 29,
"aviso": "Todo listo :D",
"sigep": "0"
},
{
"links_id": 3,
"anime_id": 22,
"aviso": "Todo listo",
"sigep": "0"
},
{
"links_id": 4,
"anime_id": 25,
"aviso": "Todo listo.",
"sigep": "0"
},
{
"links_id": 5,
"anime_id": 24,
"aviso": "Todo listo",
"sigep": "0"
},
{
"links_id": 6,
"anime_id": 23,
"aviso": "Todo listo",
"sigep": "0"
},
{
"links_id": 7,
"anime_id": 26,
"aviso": "Volveré...",
"sigep": "14"
},
{
"links_id": 8,
"anime_id": 27,
"aviso": "Todo listo",
"sigep": "0"
},
{
"links_id": 9,
"anime_id": 28,
"aviso": "Todo listo.",
"sigep": "0"
},
{
"links_id": 10,
"anime_id": 30,
"aviso": "Todo listo :D",
"sigep": "5"
},
{
"links_id": 11,
"anime_id": 31,
"aviso": "Ahora el 4...",
"sigep": "4"
},
{
"links_id": 12,
"anime_id": 14,
"aviso": "Hubo un problema con los links. Lo arreglaremos pronto.",
"sigep": "1"
},
{
"links_id": 13,
"anime_id": 21,
"aviso": "Todo listo",
"sigep": "0"
},
{
"links_id": 14,
"anime_id": 20,
"aviso": "Completo",
"sigep": "0"
},
{
"links_id": 15,
"anime_id": 19,
"aviso": "Hubo un problema con los links. Lo arreglaremos pronto.",
"sigep": "1"
}
]

View File

@ -1,211 +0,0 @@
[
{
"ed_id": 1,
"anime_id": 29,
"num_ed": 1,
"nombre": "Mimei no Kimi to Hakumei no Mahou",
"artista": "Yanagi Nagi",
"eps": "1 al 13"
},
{
"ed_id": 2,
"anime_id": 28,
"num_ed": 1,
"nombre": "Gin no Kisei",
"artista": "Soraru",
"eps": "1 al 12"
},
{
"ed_id": 3,
"anime_id": 27,
"num_ed": 1,
"nombre": "Silent Solitude",
"artista": "OxT",
"eps": "1 al 12"
},
{
"ed_id": 4,
"anime_id": 26,
"num_ed": 1,
"nombre": "Prayer X",
"artista": "King Gnu",
"eps": "1 al 13"
},
{
"ed_id": 5,
"anime_id": 26,
"num_ed": 2,
"nombre": "RED",
"artista": "Survive Said The Prophet",
"eps": "14-24"
},
{
"ed_id": 6,
"anime_id": 25,
"num_ed": 1,
"nombre": "LAST GAME",
"artista": "Zwei",
"eps": "2 al 7 y 9 al 13"
},
{
"ed_id": 7,
"anime_id": 25,
"num_ed": 2,
"nombre": "Lyra",
"artista": "Zwei",
"eps": "8 y 18"
},
{
"ed_id": 8,
"anime_id": 25,
"num_ed": 3,
"nombre": "World Line",
"artista": "Asami Imai",
"eps": "14 al 17 y 19 al 20"
},
{
"ed_id": 9,
"anime_id": 25,
"num_ed": 4,
"nombre": "GATE OF STEINER",
"artista": "Sasaki Eri",
"eps": "23"
},
{
"ed_id": 10,
"anime_id": 24,
"num_ed": 1,
"nombre": "Zenzen Tomodachi",
"artista": "Haruka Yamazaki",
"eps": "1 al 12"
},
{
"ed_id": 11,
"anime_id": 23,
"num_ed": 1,
"nombre": "Kimi no Tonari",
"artista": "halca",
"eps": "1 al 8 y 10 al 11"
},
{
"ed_id": 12,
"anime_id": 23,
"num_ed": 2,
"nombre": "Ashita mo Mata",
"artista": "halca",
"eps": "9"
},
{
"ed_id": 13,
"anime_id": 22,
"num_ed": 1,
"nombre": "Atria",
"artista": "FoxTails",
"eps": "14 al 24"
},
{
"ed_id": 14,
"anime_id": 21,
"num_ed": 1,
"nombre": "Michishirube",
"artista": "Minori Chihara",
"eps": "2 al 8"
},
{
"ed_id": 15,
"anime_id": 21,
"num_ed": 2,
"nombre": "Believe in...",
"artista": "Aira Yuuki",
"eps": "9"
},
{
"ed_id": 16,
"anime_id": 20,
"num_ed": 1,
"nombre": "Ai wo Oshiete Kureta Kimi e",
"artista": "Qaijff",
"eps": "1 al 11"
},
{
"ed_id": 17,
"anime_id": 19,
"num_ed": 1,
"nombre": "Step Up LOVE",
"artista": "DAOKO x Yasuyuki Okamura",
"eps": "2 al 12"
},
{
"ed_id": 18,
"anime_id": 18,
"num_ed": 1,
"nombre": "behind",
"artista": "Mio Natsume (Karin Isobe), Hatsuki Morikawa (Yuna Yoshino), Ena Komiya (Lynn)",
"eps": "2 al 12"
},
{
"ed_id": 19,
"anime_id": 17,
"num_ed": 1,
"nombre": "Kyokyo Jitsujitsu",
"artista": "nano.RIPE",
"eps": "1 al 12"
},
{
"ed_id": 20,
"anime_id": 16,
"num_ed": 1,
"nombre": "LAYon-theLINE",
"artista": "D-selections",
"eps": "1 al 8 y 10 al 12"
},
{
"ed_id": 21,
"anime_id": 16,
"num_ed": 2,
"nombre": "Koi no Russian Roulette",
"artista": "Yumemi Yumemite (Yuu Serizawa)",
"eps": "9"
},
{
"ed_id": 22,
"anime_id": 15,
"num_ed": 1,
"nombre": "gravityWall",
"artista": "SawanoHiroyuki[nZk]:Tielle",
"eps": "1 y 22"
},
{
"ed_id": 23,
"anime_id": 15,
"num_ed": 2,
"nombre": "NEWLOOK",
"artista": "Mashiro Ayano",
"eps": "2 al 12"
},
{
"ed_id": 24,
"anime_id": 15,
"num_ed": 3,
"nombre": "world Étude",
"artista": "Aki Toyosaki",
"eps": "13"
},
{
"ed_id": 25,
"anime_id": 15,
"num_ed": 4,
"nombre": "Rubikon",
"artista": "Sangatsu no Phantasia",
"eps": "14 al 21"
},
{
"ed_id": 26,
"anime_id": 14,
"num_ed": 1,
"nombre": "FLIP FLAP FLIP FLAP",
"artista": "TO-MAS feat.Chima",
"eps": "1 al 13"
}
]

View File

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Creator: CorelDRAW X7 -->
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="370px" height="370px" version="1.1" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
viewBox="0 0 370 370"
xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">
<![CDATA[
.fil0 {fill:#009C64}
.fil1 {fill:#EA486A}
.fil2 {fill:#FEFEFE;fill-rule:nonzero}
]]>
</style>
</defs>
<g id="Capa_x0020_1">
<metadata id="CorelCorpID_0Corel-Layer"/>
<rect class="fil0" width="370" height="370"/>
<rect class="fil1" x="232" width="138" height="370"/>
<path class="fil2" d="M138 272l0 69 -22 0 0 -170 58 0c15,0 27,5 38,15 10,10 15,22 15,36 0,14 -5,26 -15,36 -10,9 -23,14 -38,14l-36 0zm0 -80l0 59 37 0c8,0 16,-3 21,-8 6,-6 9,-13 9,-21 0,-8 -3,-15 -9,-21 -5,-6 -13,-9 -21,-9l-37 0z"/>
<path id="1" class="fil2" d="M355 296c0,15 -5,27 -16,36 -11,9 -25,13 -41,13 -14,0 -26,-4 -37,-12 -11,-9 -18,-20 -22,-34l21 -9c1,5 3,10 6,14 2,4 5,8 9,11 3,3 7,5 11,7 4,1 8,2 13,2 10,0 18,-2 24,-8 7,-5 10,-12 10,-20 0,-7 -3,-13 -8,-18 -5,-5 -14,-10 -27,-15 -14,-5 -23,-8 -26,-10 -18,-9 -27,-22 -27,-40 0,-13 5,-24 15,-32 10,-9 23,-14 37,-14 13,0 25,4 34,10 10,7 16,15 19,25l-20 8c-2,-6 -6,-11 -12,-16 -5,-4 -12,-6 -20,-6 -9,0 -16,3 -22,7 -6,5 -9,10 -9,18 0,5 3,11 7,15 5,4 16,9 33,15 18,6 30,13 37,22 8,8 11,18 11,31z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -4,7 +4,7 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="/favicon.png"> <link rel="icon" href="<%= BASE_URL %>favicon.png">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" <link href="https://fonts.googleapis.com/icon?family=Material+Icons"
rel="stylesheet"> rel="stylesheet">
<title>PseudoSubs</title> <title>PseudoSubs</title>

View File

@ -11,6 +11,9 @@
import "./assets/sass/global.sass" import "./assets/sass/global.sass"
import "./assets/sass/modo-claro.sass" import "./assets/sass/modo-claro.sass"
import barraLateral from "./components/barra-lateral.vue" import barraLateral from "./components/barra-lateral.vue"
import YAML from "yaml"
DEV = process.env.NODE_ENV == "development"
export default export default
name: "App" name: "App"
@ -18,31 +21,24 @@
largoVentana: window.innerWidth largoVentana: window.innerWidth
components: components:
'barra-lateral': barraLateral 'barra-lateral': barraLateral
mounted: -> created: ->
vm = this store = @$store
do => fetch("#{this.$store.state.servidor}/anime", {
resTxt = await fetch "#{@$store.state.servidor}/data/animes.json" method: "POST"
resultado = await resTxt.json() headers:
vm.$store.commit "establecerAnime", resultado "Content-Type": "application/x-www-form-urlencoded"
})
do => .then (x) -> x.text()
epsRaw = await fetch "#{@$store.state.servidor}/data/episodios.json" .then (res) ->
eps = await epsRaw.json() # if DEV then console.log res
vm.$store.commit "establecerEpisodios", eps resultado = YAML.parse res
do =>
epsOpcRaw = await fetch "#{@$store.state.servidor}/data/episodios_opciones.json"
epsOpc = await epsOpcRaw.json()
vm.$store.commit "establecerEpisodiosOpciones", epsOpc
do =>
epsOpcMetaRaw = await fetch "#{@$store.state.servidor}/data/episodios_opciones_meta.json"
epsOpcMeta = await epsOpcMetaRaw.json()
vm.$store.commit "establecerEpisodiosOpcionesMeta", epsOpcMeta
if resultado.exito
store.commit "establecerAnime", resultado.payload
else
console.log "Error al obtener los animes.\n#{res}"
# #
</script> </script>
<style lang="sass"> <style lang="sass">

View File

@ -0,0 +1,71 @@
<template lang="pug">
div
div.id {{ anime.anime_ID }}
div.nombre {{ anime.titulo }}
div.botones
span.boton op
span.boton ed
span.boton(@click="verVariantes") links
div(v-if="linksAbierto")
div(v-for="variante in variantes")
variante(:variante="variante")
//
</template>
<script lang="coffee">
import YAML from "yaml"
import variante from "./variante.vue"
export default
name: "anime"
props:
anime:
type: Object
required: true
data: ->
linksAbierto: false
variantes: []
components:
variante: variante
methods:
verVariantes: ->
if this.variantes.length == 0
res = await fetch "#{this.$store.state.servidor}/eps/variantes/#{this.anime.anime_ID}",
method: "POST"
headers:
"Content-Type": "application/x-www-form-urlencoded"
data = await res.text()
this.variantes = YAML.parse data
this.linksAbierto = !this.linksAbierto
#
</script>
<style scoped lang="sass">
@import "../../assets/sass/variables"
.id
float: left
width: 5%
.nombre
float: left
width: 20%
overflow: hidden
.botones
float: left
width: 75%
.boton
@extend %bordeRedondo-std
display: inline-block
padding: 10px 15px
background-color: $colorPrincipal
margin: 5px 15px
cursor: pointer
user-select: none
color: white
//
</style>

View File

@ -0,0 +1,37 @@
<template lang="pug">
div.lista
div
anime.row(v-for="anime in animes" :anime="anime")
//
</template>
<script lang="coffee">
import anime from "./anime.vue"
export default
name: "lista-animes"
components:
anime: anime
data: ->
animes: this.$store.state.animes
linksAbierto: false
#
</script>
<style scoped lang="sass">
@import "../../assets/sass/variables"
.row::after
content: ""
display: table
clear: both
.lista
margin: 50px
//
</style>

View File

@ -0,0 +1,107 @@
<template lang="pug">
div.variante
span.formato {{ variante.formato }}
span.res {{ variante.res }}
span.servidor {{ variante.servidor }}
span.boton(@click="abrirLinks") Abrir
div(v-if="linksAbiertos")
br
div.link
form(@submit="crearEp($event)")
input(placeholder="numEp" type="number" min="0" max="1000" name="numEp")
input(placeholder="peso" name="peso")
input(placeholder="link" name="link")
br
input(type="submit" value="Crear")
br
div.link(v-for="link in links")
span id: {{ link.ep_ID }} |
span Ep {{ link.num_ep }} |
span {{ link.visitas }} visitas |
span Peso: {{ link.peso }} |
span(style="word-wrap: break-word") link: {{ link.link }}
//
</template>
<script lang="coffee">
import YAML from "yaml"
export default
name: "variante"
props:
variante:
type: Object
required: true
data: ->
linksAbiertos: false
links: []
methods:
abrirLinks: ->
if this.links.length == 0
res = await fetch "#{this.$store.state.servidor}/eps/links/#{this.variante.opcion_ID}",
method: "POST"
headers:
"Content-Type": "application/x-www-form-urlencoded"
data = await res.text()
this.links = YAML.parse data
this.linksAbiertos = !this.linksAbiertos
crearEp: (ev) ->
elem = ev.target
ev.preventDefault()
res = await fetch "#{this.$store.state.servidor}/eps/links/",
method: "POST"
headers:
"Content-Type": "application/x-www-form-urlencoded"
body: "params=" + YAML.stringify {
opcion_ID: this.variante.opcion_ID
num_ep: elem.numEp.value
visitas: 0
link: elem.link.value
peso: elem.peso.value
}
data = JSON.parse(await res.text())
if data.error == false
console.log "Creado con exito"
this.links.push {
ep_ID: "?"
num_EP: elem.numEp.value
visitas: 0
peso: elem.peso.value
link: elem.link.value
}
#
</script>
<style scoped lang="sass">
@import "../../assets/sass/variables"
.variante
margin: 10px
.link
margin-left: 25px
.formato, .res, .servidor, .boton
display: inline-block
padding: 10px 15px
border-radius: 5px
margin: 10px 5px
cursor: none
color: white
.formato
background-color: #7b0000
.res
background-color: #000072
.servidor
background-color: #007200
.boton
background-color: $colorSecundario
cursor: pointer
//
</style>

View File

@ -19,11 +19,11 @@
div.temporada Temporada: {{ anime.temporada + " " + anime.anio }} div.temporada Temporada: {{ anime.temporada + " " + anime.anio }}
div.fuente Fuente: {{ anime.fuente }} div.fuente Fuente: {{ anime.fuente }}
div.generos Generos: {{ anime.generos }} div.generos Generos: {{ anime.generos }}
op-ed(:anime_ID="anime.anime_id" :color="anime.color") op-ed(:anime_ID="anime.anime_ID" :color="anime.color")
br br
div.tarjeta.aviso(:style="colorBackground") {{ aviso }} div.tarjeta.aviso(:style="colorBackground") {{ aviso }}
br br
panel-de-descarga(:animeid="anime.anime_id" :color="anime.color" panel-de-descarga(:animeid="anime.anime_ID" :color="anime.color"
:cambiar-aviso="cambiarAviso") :cambiar-aviso="cambiarAviso")
br br
div.tarjeta.background__disqus div.tarjeta.background__disqus
@ -58,9 +58,7 @@
vm = this vm = this
animes = @$store.state.animes animes = @$store.state.animes
resultado = -1 resultado = -1
console.log animes
for anime in animes for anime in animes
console.log "Param is #{@$route.params.nombre}"
if anime.link is "/Anime/" + @$route.params.nombre if anime.link is "/Anime/" + @$route.params.nombre
vm.anime = anime vm.anime = anime
resultado = 1 resultado = 1
@ -82,7 +80,9 @@
] ]
#
#
</script> </script>
<style scoped lang="sass"> <style scoped lang="sass">

View File

@ -25,7 +25,8 @@
<span v-for="(ep, num) in opcion.eps" class="panel__descripcion__link"> <span v-for="(ep, num) in opcion.eps" class="panel__descripcion__link">
<br> <br>
Episodio {{ num }} -> Episodio {{ num }} ->
<a :href="ep.link" target="_blank" :style="'color: ' + balancearColor"> <a :href="ep.link" target="_blank" :style="'color: ' + balancearColor"
@mousedown.stop="incrementarContador(ep.ep_ID, $event)">
{{ ep.peso }} {{ ep.peso }}
</a> </a>
</span> </span>
@ -41,11 +42,13 @@
</template> </template>
<script> <script>
import YAML from "yaml"
const esModoOscuro = false; const esModoOscuro = false;
export default { export default {
name: "panelDeDescarga", name: "panelDeDescarga",
data () { data: function () {
return { return {
posActual: '1', posActual: '1',
datos: {}, datos: {},
@ -67,11 +70,6 @@
required: true required: true
} }
}, },
watch: {
epsOpcionesMeta() {
this.actualizarEpsOpciones();
}
},
computed: { computed: {
balancearColor() { balancearColor() {
const color = this.color; const color = this.color;
@ -87,12 +85,6 @@
return color; return color;
} }
},
epsOpciones() {
return this.$store.state.episodios_opciones;
},
epsOpcionesMeta() {
return this.$store.state.episodios_opciones_meta;
} }
}, },
methods: { methods: {
@ -127,41 +119,22 @@
elemNuevo + " " + elemAnterior + " " + opcionAnterior + " " + opcionNueva); elemNuevo + " " + elemAnterior + " " + opcionAnterior + " " + opcionNueva);
} }
}, },
actualizarEpsOpciones() { incrementarContador(ep_ID, evento) {
console.log("Llamando...");
const vm = this; const xhr = new XMLHttpRequest();
const epsOpciones = this.epsOpciones; xhr.open("PUT", `${this.$store.state.servidor}/links`);
const epsOpcionesMeta = this.epsOpcionesMeta; xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
if (epsOpcionesMeta.length > 0) { xhr.onload = () => {
const opcionMeta = epsOpcionesMeta.find(x => x.anime_id === this.animeid); console.log(xhr.responseText);
vm.mostrarSpinnerParaCargaDeEps = false; };
this.datos = epsOpciones; xhr.send(`ep_ID=${ep_ID}`);
this.datosCorrectos = true;
vm.cambiarAviso(opcionMeta.aviso);
} else {
vm.mostrarSpinnerParaCargaDeEps = false;
}
} }
}, },
mounted () { created() {
console.log("Montado");
this.actualizarEpsOpciones();
}
/*
mounted() {
const xhr = new XMLHttpRequest(); const xhr = new XMLHttpRequest();
const vm = this; const vm = this;
const epsOpciones = this.$store.state.episodios_opciones;
if (epsOpciones.length > 0) {
const epsOpciones = epsOpciones.filter(x => true);
vm.mostrarSpinnerParaCargaDeEps = false;
this.datos = epsOpciones;
this.datosCorrectos = true;
} else {
vm.mostrarSpinnerParaCargaDeEps = false;
}
xhr.open("POST", `${this.$store.state.servidor}/links`); xhr.open("POST", `${this.$store.state.servidor}/links`);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onload = () => { xhr.onload = () => {
@ -183,7 +156,7 @@
}; };
xhr.send(`animeID=${this.animeid}`); xhr.send(`animeID=${this.animeid}`);
} // */ }
} }
</script> </script>

View File

@ -1,14 +1,25 @@
<template lang="pug"> <template lang="pug">
div(:id="`tarjeta${indice}`" :style="indice !== '1'? 'display: none' : ''") div(:id="`tarjeta${indice}`" :style="indice !== '1'? 'display: none' : ''")
div.notf(v-if="enEmision")
div.titulo(:style="'color: ' + color") Notificaciones
br
div.notf--ind(v-if="$store.state.navegador_hash !== '' || true")
boton-nuevos-eps(:opcion="opcion.opcion_ID")
span Avísame cuando salgan nuevos episodios.
template(v-else)
span Suscríbete&nbsp;
router-link(to="/ajustes" :style="'color: ' + color") aquí
span &nbsp;para recibir notificaciones cuando salgan episodios nuevos.
br
div.titulo(:style="'color: ' + color") Links div.titulo(:style="'color: ' + color") Links
p Todos los links se abren en una pestaña nueva.<br> p Todos los links se abren en una pestaña nueva.<br>
span.link(v-for="(ep, num) in opcion.eps") span.link(v-for="(ep, num) in opcion.eps")
br br
span Episodio {{ ep.num_ep }} ->&nbsp; span Episodio {{ num }} ->
a( a(
:href="ep.link" target="_blank" :style="'color: ' + color" :href="ep.link" target="_blank" :style="'color: ' + color"
@mousedown.stop="incrementarContador(ep.ep_ID, $event)"
) {{ ep.peso }} ) {{ ep.peso }}
// //
</template> </template>
<!-- TODO: arreglar funcionamiento de los links --> <!-- TODO: arreglar funcionamiento de los links -->
@ -21,7 +32,7 @@
"boton-nuevos-eps": botonNuevosEps "boton-nuevos-eps": botonNuevosEps
props: props:
indice: indice:
type: Number type: String
required: true required: true
opcion: opcion:
type: Object type: Object

View File

@ -45,10 +45,6 @@
cambiarAviso: cambiarAviso:
type: Function, type: Function,
required: true required: true
computed:
eps: -> @$store.state.episodios
epsOpciones: -> @$store.state.episodios_opciones
epsOpcionesMeta: -> @$store.state.episodios_opciones_meta
methods: methods:
cambiarDescripcionDescarga: (idDestino) -> cambiarDescripcionDescarga: (idDestino) ->
quitarClase = (nombre, nombreClase) => quitarClase = (nombre, nombreClase) =>
@ -88,40 +84,30 @@
console.log xhr.responseText console.log xhr.responseText
xhr.send "ep_ID=#{ep_ID}" xhr.send "ep_ID=#{ep_ID}"
actualizarOpciones: () -> created: ->
vm = this xhr = new XMLHttpRequest()
eps = @eps vm = this
epsOpciones = @epsOpciones
epsOpcionesMeta = @epsOpcionesMeta
animeId = @animeid
if epsOpcionesMeta.length > 0
opcionMeta = epsOpcionesMeta.find (x) => x.anime_id == animeId
if opcionMeta?
opciones = epsOpciones.filter (x) => x.links_id == opcionMeta.links_id
vm.mostrarSpinnerParaCargaDeEps = false
vm.datos = opciones.map (opcion) =>
episodios = eps.filter (ep) => ep.opcion_id == opcion.opcion_id
console.log episodios
{ eps: episodios, opcion... }
xhr.open "POST", "#{this.$store.state.servidor}/links"
xhr.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xhr.onload = ->
try
data = YAML.parse xhr.responseText
if data.exito
vm.datos = data.payload["opciones"]
vm.sigEp = data.payload.sigEp
vm.datosCorrectos = true vm.datosCorrectos = true
vm.cambiarAviso(opcionMeta.aviso) vm.cambiarAviso data.payload.aviso
else else
vm.mostrarSpinnerParaCargaDeEps = false vm.mostrarSpinnerParaCargaDeEps = false
else console.log ("Error al recibir los eps del anime. resp:\n" + xhr.responseText)
catch e
vm.mostrarSpinnerParaCargaDeEps = false vm.mostrarSpinnerParaCargaDeEps = false
console.log ("Error al recibir los eps del anime:\n" + e + "\n" + xhr.responseText)
created: -> xhr.send "animeID=#{this.animeid}"
vm = this #
intervalo = setInterval (=>
if vm.epsOpciones.length > 0 && vm.epsOpcionesMeta.length > 0 && vm.eps.length > 0
clearInterval intervalo
vm.actualizarOpciones()
), 250
#
</script> </script>
<style scoped lang="sass"> <style scoped lang="sass">

View File

@ -15,7 +15,7 @@
name: "variante" name: "variante"
props: props:
indice: indice:
type: Number type: String
required: true required: true
opcion: opcion:
type: Object type: Object

View File

@ -4,8 +4,7 @@
router-link.titulo.texto1(:to="anime.link") {{ anime.titulo }} router-link.titulo.texto1(:to="anime.link") {{ anime.titulo }}
br br
router-link.link(:to="anime.link") router-link.link(:to="anime.link")
img.imagen(:src="anime.imgurl" :alt="'Img de ' + anime.titulo") img.imagen(:src="anime.imgUrl")
// //
</template> </template>

View File

@ -4,7 +4,7 @@
span.anime.tarjeta span.anime.tarjeta
div.titulo.texto1 Anime div.titulo.texto1 Anime
div.titulo__descr.texto1 Ligero/MP4/MKV 720p/1080p 24fps/60fps div.titulo__descr.texto1 Ligero/MP4/MKV 720p/1080p 24fps/60fps
// router-link(to="/Novelas") router-link(to="/Novelas")
span.novelas.tarjeta span.novelas.tarjeta
div.titulo.texto1 Novelas div.titulo.texto1 Novelas
div.titulo__descr.texto1 Redistribuyendo legalmente lo ilegal. div.titulo__descr.texto1 Redistribuyendo legalmente lo ilegal.
@ -25,7 +25,7 @@
margin: 50px 0 margin: 50px 0
.anime, .novelas .anime, .novelas
width: 100% width: 50%
display: inline-block display: inline-block
padding: 20px padding: 20px

View File

@ -9,7 +9,7 @@
router-link(:to="anime.link") router-link(:to="anime.link")
div.imgCont div.imgCont
img.imagen.tarjeta(:src="anime.imgurl" :alt="'Imagen de ' + anime.titulo") img.imagen.tarjeta(:src="anime.imgUrl")
div.animeCont div.animeCont
div.descr {{ anime.descripcion }} div.descr {{ anime.descripcion }}
br br
@ -83,16 +83,16 @@
@obtenerAntAnime() @obtenerAntAnime()
@cuentaAtrasCambio = setTimeout (() -> @cuentaAtrasCambio = setTimeout (() ->
_.establecerIntervalo() _.establecerIntervalo()
), 7500 ), 5000
establecerIntervalo: -> establecerIntervalo: ->
_ = this _ = this
@intervalo = setInterval (() -> @intervalo = setInterval (() ->
_.anime = _.obtenerSigAnime() _.anime = _.obtenerSigAnime()
), 7500 ), 5000
beforeDestroy: -> beforeDestroy: ->
clearInterval @intervalo clearInterval @intervalo
# #
</script> </script>
<style scoped lang="sass"> <style scoped lang="sass">
@ -128,10 +128,10 @@
z-index: 3 z-index: 3
.fondo_texto--claro .fondo_texto--claro
background: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.8) 60%, $fondo2--claro 90%) background: linear-gradient(to right, transparent, rgba(255, 255, 255, 0.8) 40%, $fondo2--claro 70%)
.fondo_texto--oscuro .fondo_texto--oscuro
background: linear-gradient(to right, transparent, rgba(0, 0, 0, 0.8) 60%, $fondo2--oscuro 100%) background: linear-gradient(to right, transparent, rgba(0, 0, 0, 0.8) 40%, $fondo2--oscuro 70%)
.animeCont .animeCont
max-height: 500px max-height: 500px

View File

@ -5,13 +5,13 @@
div.otro(:style="'min-height: ' + altoPantalla + 'px' ") div.otro(:style="'min-height: ' + altoPantalla + 'px' ")
div.col div.col
div.fil div.fil
div.titulo PseudoSubs ain't a fansub div.titulo PseudoSubs ain't fansub
div.motto Nuevos eps cuando me de la gana. div.motto Nuevos eps cuando me de la gana.
br br
br br
br br
br br
// router-link.comparar(to="/comparar") Comparar pixel a pixel. router-link.comparar(to="/comparar") Comparar pixel a pixel.
// //
</template> </template>

View File

@ -1,4 +1,5 @@
<!-- TODO: Re-escribir para que la funcionalidad sea igual pero el codigo no sea asi de horrible. --> <!-- TODO: Re-escribir para que la funcionalidad sea igual pero el codigo no sea asi de horrible.
Barra Lateral. Responsivo hasta los 285px de ancho. -->
<template lang="pug"> <template lang="pug">
div.barra div.barra
div.lateral.fondo2.ocultarEnMovil.barraOculta div.lateral.fondo2.ocultarEnMovil.barraOculta
@ -6,7 +7,7 @@
{{ $store.state.barraLateralOculta? '>>': '<<' }} {{ $store.state.barraLateralOculta? '>>': '<<' }}
router-link.linkImg(to="/" title="Ir al inicio") router-link.linkImg(to="/" title="Ir al inicio")
img.tarjeta(src="/img/logo.svg") img.tarjeta(src="../assets/img/logo.svg")
div.items.tarjeta.fondo1.texto2 div.items.tarjeta.fondo1.texto2
div.cambiarModo(@click="cambiarModoColor()") div.cambiarModo(@click="cambiarModoColor()")
@ -16,6 +17,14 @@
hr hr
br br
router-link(to="/")
i.material-icons.texto2.mostrarEnTablet(title="Nosotros") group
br.mostrarEnTablet
router-link(to="/")
i.material-icons.texto2.mostrarEnTablet(title="Ayuda") help
br.mostrarEnTablet
a(href="https://github.com/Araozu/PseudoSubs_" target="_blank" title="GitHub") a(href="https://github.com/Araozu/PseudoSubs_" target="_blank" title="GitHub")
img.imgGitHub.texto2.mostrarEnTablet( img.imgGitHub.texto2.mostrarEnTablet(
:src="modoSiguiente === 'oscuro'? '/img/github.svg': '/img/githubOsc.svg' ") :src="modoSiguiente === 'oscuro'? '/img/github.svg': '/img/githubOsc.svg' ")
@ -39,7 +48,7 @@
div.inferior.texto2.fondo1.mostrarEnMovil div.inferior.texto2.fondo1.mostrarEnMovil
span.tituloInf span.tituloInf
template(v-for="i in $store.state.rutaActual") template(v-for="i in $store.state.rutaActual")
router-link.linkBarra(:to="i.ruta? i.ruta: '/'") {{ i.nombre }} router-link.linkBarra(:to="i.ruta") {{ i.nombre }}
span > span >
div.links div.links
i.material-icons.texto2.mostrarEnTablet(@click="cambiarModoColor()"). i.material-icons.texto2.mostrarEnTablet(@click="cambiarModoColor()").

View File

@ -7,6 +7,7 @@ import AnimeList from "./views/AnimeList.vue"
import listaAnimes from "./components/AnimeList/lista-animes.vue" import listaAnimes from "./components/AnimeList/lista-animes.vue"
import Anime from "./components/Anime/Anime.vue" import Anime from "./components/Anime/Anime.vue"
import Error404 from "./views/Error404.vue" import Error404 from "./views/Error404.vue"
import Admin from "./views/Admin.vue"
Vue.use Router Vue.use Router
@ -36,6 +37,10 @@ export default new Router
path: "/ajustes" path: "/ajustes"
name: "Usuario" name: "Usuario"
component: Usuario component: Usuario
,
path: "/admin"
name: "Admin"
component: Admin
, ,
path: "*" path: "*"
name: "404" name: "404"

View File

@ -4,36 +4,15 @@ import YAML from "yaml"
Vue.use(Vuex) Vue.use(Vuex)
almacenarEnLocalStorage = (clave, valor, fnActualizar) => DEV = process.env.NODE_ENV == "development"
datosTxt = JSON.stringify valor
datosLocal = localStorage?.getItem clave
unless datosTxt is datosLocal
localStorage?.setItem clave, datosTxt
fnActualizar valor
export default new Vuex.Store export default new Vuex.Store
state: state:
servidor: "" servidor: unless DEV then "" else ""
animes: animes:
if localStorage? if localStorage?
JSON.parse ((localStorage.getItem "animes") ? "[]") YAML.parse ((localStorage.getItem "animes") ? "[]")
else []
episodios:
if localStorage?
JSON.parse ((localStorage.getItem "episodios") ? "[]")
else []
episodios_opciones:
if localStorage?
JSON.parse ((localStorage.getItem "episodios_opciones") ? "[]")
else []
episodios_opciones_meta:
if localStorage?
JSON.parse ((localStorage.getItem "episodios_opciones_meta") ? "[]")
else [] else []
modoColor: (localStorage?.getItem "modoColor") ? "claro" modoColor: (localStorage?.getItem "modoColor") ? "claro"
@ -50,25 +29,19 @@ export default new Vuex.Store
suscripciones: suscripciones:
if localStorage? if localStorage?
JSON.parse ((localStorage.getItem "suscripciones") ? "{}") YAML.parse ((localStorage.getItem "suscripciones") ? "{}")
else {} else {}
mutations: mutations:
establecerAnime: (state, animes) -> establecerAnime: (state, animes) ->
fnActualizar = (v) => state.animes = v animesTxt = YAML.stringify animes
almacenarEnLocalStorage "animes", animes, fnActualizar animesLocal = localStorage?.getItem "animes"
unless animesTxt is animesLocal
establecerEpisodios: (state, episodios) -> localStorage?.setItem "animes", animesTxt
fnActualizar = (v) => state.episodios = v state.animes = animes
almacenarEnLocalStorage "episodios", episodios, fnActualizar if DEV then console.log "Actualicé los animes"
else
establecerEpisodiosOpciones: (state, episodios) -> if DEV then console.log "Ahorré tener que actualizar todo v:"
fnActualizar = (v) => state.episodios_opciones = v
almacenarEnLocalStorage "episodios_opciones", episodios, fnActualizar
establecerEpisodiosOpcionesMeta: (state, episodios) ->
fnActualizar = (v) => state.episodios_opciones_meta = v
almacenarEnLocalStorage "episodios_opciones_meta", episodios, fnActualizar
cambiarModoColor: (state, color) -> cambiarModoColor: (state, color) ->
state.modoColor = color state.modoColor = color
@ -88,4 +61,22 @@ export default new Vuex.Store
cambiarRutaActual: (state, valor) -> cambiarRutaActual: (state, valor) ->
state.rutaActual = valor state.rutaActual = valor
actions: {} cambiarNavegador_hash: (state, valor) ->
state.navegador_hash = valor
if localStorage? then localStorage.setItem "navegador_hash", valor
agregarSuscripcion: (state, opcion) ->
nuevasSuscr = Object.assign({}, state.suscripciones)
nuevasSuscr[opcion] = true
state.suscripciones = nuevasSuscr
if localStorage?
localStorage.setItem "suscripciones", (YAML.stringify nuevasSuscr)
eliminarSuscripcion: (state, opcion) ->
nuevasSuscr = Object.assign {}, state.suscripciones[opcion]
delete nuevasSuscr[opcion]
state.suscripciones = nuevasSuscr
if localStorage?
localStorage.setItem "suscripciones", (YAML.stringify nuevasSuscr)
actions: {}

33
src/views/Admin.vue Normal file
View File

@ -0,0 +1,33 @@
<template lang="pug">
div.texto1
div.titulo.fondo1 Administracion
br
div Animes
lista-anime
//
</template>
<script lang="coffee">
import listaAnime from "../components/Admin/lista-animes.vue"
export default
name: "Admin"
components:
"lista-anime": listaAnime
created: ->
unless this.$route.query.p == "xsakah4b"
this.$router.push "/"
#
</script>
<style scoped lang="sass">
.titulo
padding: 50px
font:
family: "Product Sans", "Open Sans", sans-serif
size: 3rem
//
</style>

View File

@ -2,7 +2,7 @@
div.inicio div.inicio
ultimos-eps ultimos-eps
animes-novelas animes-novelas
// notificaciones notificaciones
br br
caracteristicas caracteristicas
y-notaras-la-diferencia y-notaras-la-diferencia
@ -10,7 +10,7 @@
</template> </template>
<script lang="coffee"> <script lang="coffee">
import ultimosEps from "../components/Inicio/ultimos-eps.vue" import ultimosEps from "../components/Inicio/ultimos-animes.vue"
import caracteristicas from "../components/Inicio/caracteristicas.vue" import caracteristicas from "../components/Inicio/caracteristicas.vue"
import yNotarasLaDiferencia from "../components/Inicio/y-notaras-la-diferencia.vue" import yNotarasLaDiferencia from "../components/Inicio/y-notaras-la-diferencia.vue"
import animesNovelas from "../components/Inicio/animes-novelas.vue" import animesNovelas from "../components/Inicio/animes-novelas.vue"
@ -18,13 +18,12 @@
export default export default
name: "Inicio" name: "Inicio"
components: { components:
caracteristicas caracteristicas: caracteristicas
yNotarasLaDiferencia 'y-notaras-la-diferencia': yNotarasLaDiferencia
ultimosEps 'ultimos-eps': ultimosEps
animesNovelas 'animes-novelas': animesNovelas
notificaciones notificaciones: notificaciones
}
created: -> created: ->
@$store.commit "cambiarRutaActual", [{nombre: "PseudoSubs", ruta: "/"}] @$store.commit "cambiarRutaActual", [{nombre: "PseudoSubs", ruta: "/"}]
# #

3
srv/.babelrc Normal file
View File

@ -0,0 +1,3 @@
{
"presets": ["@babel/preset-env"]
}

View File

@ -0,0 +1,41 @@
import {MysqlError} from "mysql";
interface Datos {
aviso: string,
sigEp: number,
anime_ID: number
}
import {con} from "../../index";
const cambiarMensaje = (req: any, res: any) => {
const YAML = require('yaml');
const datosStr = req.body.datos;
if (datosStr) {
const data: Datos = YAML.parse(datosStr);
const sql = `UPDATE links SET aviso=?, sigEp=? WHERE anime_ID=?`;
const datosSQL = [data.aviso, data.sigEp, data.anime_ID];
con.query(sql, datosSQL,(err: MysqlError) => {
if (!err) {
res.send(`exito: true`);
} else {
console.log(`Error al ejecutar query en /Admin/Eps/cambiarMensaje.ts:\n${err}\n${err.sql}`);
res.send(`exito: false\nerror: Error de consulta(0)..`);
}
});
} else {
console.log(`Error. Los datos no existen en /Admin/Eps/cambiarMensaje.ts`);
res.send(`exito: false\nerror: Los datos no existen.`);
}
};
module.exports.cambiarMensaje = cambiarMensaje;

View File

@ -0,0 +1,40 @@
interface formatoDataARecibir {
opcion_ID: number,
num_ep: number,
visitas: number,
link: string,
peso: string
}
import {con} from "../../index";
const crearLink = (req: any, res: any) => {
const YAML = require('yaml');
const parametros: formatoDataARecibir = YAML.parse(req.body.params);
if (parametros) {
const query = `INSERT INTO eps (opcion_ID, num_ep, visitas, link, peso) VALUES (${parametros.opcion_ID},
${parametros.num_ep}, ${parametros.visitas}, ${con.escape(parametros.link)}, ${con.escape(parametros.peso)} )`;
con.query(query, (err: Error) => {
if (!err) {
res.send("error: false");
} else {
console.log("Error al ejecutar query en /Admin/Eps/crearEp -> con.query (linea 20). Query y error:\n" + query + "\n" + parametros);
res.send("error: true");
}
});
} else {
console.log("Error. 'parametros' no existe en /Admin/Eps/crearEp -> con.connect (linea 16):\n" + parametros);
res.send("error: true");
}
};
module.exports.crearLink = crearLink;

View File

@ -0,0 +1,87 @@
import {MysqlError} from "mysql";
interface Datos {
num_opcion: number,
formato: string,
resolucion: string,
servidor: string,
anime_ID: number,
color: string
}
import {con} from "../../index";
const crearVariante = (req: any, res: any) => {
const YAML = require('yaml');
const mysql = require('mysql');
const datos: string = req.body.datos;
if (datos) {
const data: Datos = YAML.parse(datos);
const E = mysql.escape;
const crearEntrada = (respuesta: [{links_ID: number}]) => {
const links_ID = respuesta[0].links_ID;
const query = `INSERT INTO links_opciones (links_ID, num_opcion, formato, res, servidor, color)
VALUES(${links_ID}, ${data.num_opcion}, ${E(data.formato)}, ${E(data.resolucion)}, ${E(data.servidor)}, ${E(data.color)})`;
con.query(query,(err: MysqlError) => {
if (!err) {
res.send(`exito: true`);
} else {
console.log(`Error al ejecutar query en /Admin/Eps/crearVariante.ts\n:${err}\n${err.sql}`);
res.send(`exito: false\nerror: Consulta fallida(3).`);
}
});
};
con.query(
`SELECT links_ID FROM links WHERE anime_ID=${data.anime_ID}`,
(err: MysqlError, respuesta: [{links_ID: number}]) => {
// Ya existe el link en la base de datos
if (!err && respuesta[0]) {
crearEntrada(respuesta);
}
// No existe el link en la base de datos
else if (!err && !respuesta[0]) {
con.query(`INSERT INTO links (anime_ID, aviso, sigEp) VALUES (${data.anime_ID}, 'Patience from zhou', 0)`, (err: MysqlError) => {
if (!err) {
con.query(
`SELECT links_ID FROM links WHERE anime_ID=${data.anime_ID}`,
(err: MysqlError, respuesta: [{links_ID: number}]) => {
if (!err) {
crearEntrada(respuesta);
} else {
console.log(`Error al ejecutar query en /Admin/Eps/crearVariante.ts\n:${err}\n${err.sql}`);
res.send(`exito: false\nerror: Consulta fallida(2).`);
}
});
}
else {
console.log(`Error al ejecutar query en /Admin/Eps/crearVariante.ts\n:${err}\n${err.sql}`);
res.send(`exito: false\nerror: Consulta fallida(1).`);
}
});
}
else {
console.log(`Error al ejecutar query en /Admin/Eps/crearVariante.ts\n:${err}\n${err.sql}`);
res.send(`exito: false\nerror: Consulta fallida(0).`);
}
});
} else {
console.log(`Error. Los datos no existen en /Admin/Eps/crearVariante.ts`);
res.send(`exito: false\nerror: Los datos no existen.`);
}
};
module.exports.crearVariante = crearVariante;

View File

@ -0,0 +1,35 @@
import {Connection, MysqlError} from "mysql";
import * as core from "express-serve-static-core";
import {con} from "../../index";
const YAML = require('yaml');
interface respuesta {
peso: string
}
const estadisticas = (req: core.Request, res: core.Response) => {
con.query(`SELECT peso FROM eps`,(err: MysqlError, respuestas: respuesta[]) => {
if (!err) {
let totalMB = 0;
let cantidadEps = 0;
respuestas.forEach(data => {
totalMB += parseInt(data.peso);
cantidadEps++;
});
const respuesta: any = {
episodios: cantidadEps,
gigas: (totalMB/1024).toFixed(2)
};
res.send(YAML.stringify(respuesta));
}
});
};
module.exports.estadisticas = estadisticas;

View File

@ -0,0 +1,39 @@
interface epsRespuesta {
ep_ID: number,
opcion_ID: number,
num_ep: number,
visitas: number,
link: string,
peso: string
}
import {con} from "../../index";
const obtenerLinks = (req: any, res: any) => {
const YAML = require('yaml');
const opcion_ID = req.params.opcion_ID;
if (opcion_ID) {
const query = `SELECT * FROM eps WHERE opcion_ID=${opcion_ID}`;
con.query(query, (err: Error, response: epsRespuesta[]) => {
if (!err) {
res.send(YAML.stringify(response));
} else {
console.log("Error al ejecutar query en /Admin/Eps/obtenerEps con.query (linea 21). Query:\n" + query + "\nError: \n" + err);
res.send("error: true");
}
});
} else {
console.log("Error. opcion_ID no existe en /Admin/Eps/obtenerEps con.connect (linea 8)");
res.send("error: true");
}
};
module.exports.obtenerLinks = obtenerLinks;

View File

@ -0,0 +1,41 @@
interface respuestaLinks {
opcion_ID: number,
links_ID: number,
num_opcion: number,
formato: string,
res: string,
servidor: string,
color: string
}
import {con} from "../../index";
const obtenerVariantes = (req: any, res: any) => {
const YAML = require('yaml');
const anime_ID: string = req.params.anime_ID;
if (anime_ID) {
const query = `SELECT * FROM links_opciones WHERE links_ID=(SELECT links_ID FROM links WHERE anime_ID=${anime_ID})`;
con.query (query, (err: Error, response: respuestaLinks[]) => {
if (!err) {
res.send(YAML.stringify(response));
} else {
console.log("Error al ejecutar query sql. La query era:\n" + query + "\n y el error es:\n" + err);
res.send("error: true");
}
});
} else {
console.log("Error. anime_ID no existe en Admin/Eps/obtenerVariantes con.connect:\n" + anime_ID);
res.send("error: true");
}
};
module.exports.obtenerVariantes = obtenerVariantes;

View File

@ -0,0 +1,35 @@
import {con} from "../index"
import YAML from "yaml"
export default (req, res) ->
if req.params.id?
idAnime = req.params.id
query = "SELECT * FROM animes WHERE anime_ID=?"
con.query query, [idAnime], (err, respuesta) ->
res.send do ->
unless err
YAML.stringify
exito: true
payload: respuesta[0]
error: {}
else
"""
exito: false
payload: {}
error:
razon: "Error al ejecutar consulta en la base de datos."
ruta: "/Anime/obtenerTodosAnimes"
adicional: "Query: #{query}\nError:#{err}"
"""
else
res.send """
exito: false
payload: {}
error:
razon: "No se ha pasado ningún id."
ruta: "/Anime/obtenerTodosAnimes"
adicional: "Anime ID actual: #{req.params.id}"
"""

View File

@ -0,0 +1,21 @@
import {con} from "../index"
import YAML from "yaml"
export default (req, res) ->
query = "SELECT * FROM animes ORDER BY anime_ID DESC "
con.query query, (err, respuesta) ->
res.send do ->
unless err
YAML.stringify
exito: true
payload: respuesta
error: {}
else
"""
exito: false
payload: {}
error:
razon: Error al ejecutar la consulta a la base de datos
ruta: /Anime/obtenerTodosAnimes
adicional: "Query: #{query}\nError: #{err}"
"""

View File

@ -0,0 +1,24 @@
class GestorDeTareas {
tareas: boolean[] = [];
alCompletar: (() => void);
constructor(alCompletar: (() => void)) {
this.alCompletar = alCompletar;
}
agregarTarea() {
return (this.tareas.push(false) - 1);
}
terminarTarea() {
this.tareas.pop();
this.verificarTareas();
}
verificarTareas() {
if (this.tareas.length === 0)
this.alCompletar();
}
}
module.exports.GestorDeTareas = GestorDeTareas;

View File

@ -0,0 +1,33 @@
import {con} from "../index"
import YAML from "yaml"
export fun = (req, res) ->
params = req.body.params
if params?
params = YAML.parse params
sql = "INSERT INTO eps (opcion_ID, num_ep, visitas, link, peso) VALUES (?, ?, ?, ?, ?)"
datos = [params.opcion_ID, params.num_ep, params.visitas, params.link, params.peso]
con.query sql, datos, (err) ->
unless err?
res.send YAML.stringify
exito: true
payload: {}
error: {}
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "Error al ejecutar consulta a la base de datos."
ruta: "/Links/crearLinks"
adicional: "sql: \n#{err.sql}\nerr:\n#{err}"
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "No se pasaron los params."
ruta: "/Links/crearLinks"
adicional: ""

View File

@ -0,0 +1,38 @@
import {con} from "../index";
const modificarLink = (req: any, res: any) => {
const ep_ID = req.body.ep_ID;
const sql1= `SELECT visitas FROM eps WHERE ep_ID=${ep_ID}`;
const sql = `UPDATE eps SET visitas = visitas + 1 WHERE ep_ID=${ep_ID}`;
con.query(
sql1,
(err: Error, respuesta: {visitas: number}[]) => {
if (!err) {
const nuevoNumVisitas = respuesta[0].visitas + 1;
const sql2 = `UPDATE eps SET visitas=${nuevoNumVisitas} WHERE ep_ID=${ep_ID}`;
con.query(sql2, (err: Error) => {
if (!err) {
res.send("Exito");
} else {
res.send("Error");
console.log(`Error al actualizar el contador de clicks del ep ${ep_ID} en \
LinksAnimes/modificarLinks:\n${err}\nSQL:\n${sql2}`);
}
});
} else {
console.log(`Error al actualizar el contador de clicks del ep ${ep_ID} en \
LinksAnimes/modificarLinks:\n${err}\nSQL:\n${sql1}`);
res.send("Error :c");
}
}
);
};
module.exports.modificarLinks = modificarLink;

View File

@ -0,0 +1,116 @@
YAML = require("yaml")
con = require("../index").con
class GestorDeTareas
constructor: (@alCompletar) ->
@tareas = []
agregarTarea: -> @tareas.push(false) - 1
terminarTarea: ->
@tareas.pop()
@verificarTareas()
verificarTareas: ->
if @tareas.length is 0 then @alCompletar()
export obtenerLinks = (req, res) ->
animeID = req.body.animeID
if animeID?
retorno =
aviso: ""
sigEp: ""
opciones: {}
sql = "SELECT * FROM links WHERE anime_ID=#{animeID}"
con.query sql, (err, response) ->
if not err? and response?.length isnt 0
link = response[0]
retorno.aviso = link.aviso
retorno.sigEp = link.sigEp
gestorOpciones = new GestorDeTareas () ->
res.send YAML.stringify
exito: true
payload: retorno
error: {}
sql2 = "SELECT * FROM links_opciones WHERE links_ID=#{link.links_ID}"
con.query sql2, (err, response2) ->
if not err? and response2?.length isnt 0
response2.forEach (opcion, pos) ->
gestorOpciones.agregarTarea()
retorno.opciones[opcion.num_opcion] =
opcion_ID: opcion.opcion_ID
formato: opcion.formato
res: opcion.res
servidor: opcion.res
color: opcion.color
eps: {}
sql3 = "SELECT * FROM eps WHERE opcion_ID=#{opcion.opcion_ID}"
con.query sql3, (err, response3) ->
if not err? and response3?.length isnt 0
response3.forEach (ep) ->
retorno.opciones[opcion.num_opcion].eps[ep.num_ep] =
ep_ID: ep.ep_ID
visitar: ep.visitas
peso: ep.peso
link: ep.link
else if response3?.length isnt 0
console.log "Error al consultar eps en /LinksAnimes/obtenerLinks.\n err: #{err}\n sql: #{sql3}"
gestorOpciones.terminarTarea()
else if response2?.length is 0
res.send YAML.stringify
exito: false
payload: {}
error: {
razon: "La consulta no dió ningún resultado."
ruta: "/LinksAnimes/obtenerLinks"
adicional: "(response2) SQL: #{sql2}\nanimeID: #{animeID}"
}
else
res.send YAML.stringify
exito: false
payload: {}
error: {
razon: "Error al ejecutar consulta."
ruta: "/LinksAnimes/obtenerLinks"
adicional: "(response2) sql: #{sql2}"
}
else if response.length is 0
res.send YAML.stringify
exito: false
payload: {}
error: {
razon: "La consulta no dió ningún resultado."
ruta: "/LinksAnimes/obtenerLinks"
adicional: "SQL: #{sql}\nanimeID: #{animeID}"
}
else
res.send YAML.stringify
exito: false
payload: {}
error: {
razon: "Error al ejecutar consulta."
ruta: "/LinksAnimes/obtenerLinks"
adicional: "sql: #{sql}"
}
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "No se envió un animeID"
ruta: "/LinksAnimes/obtenerLinks"
adicional: "valor: #{animeID}"

View File

@ -0,0 +1,27 @@
con = require("../index").con
hasher = require("sha-hasher")
enviarNotificacion = require("./enviarNotificacion").fun
export fun = (req, res) ->
subscripcion = req.body.subscripcion
hash = hasher.SHA256 subscripcion
query = "INSERT INTO navegadores (navegador_hash, susbscripcion) VALUES (?, ?)"
datos = [hash, subscripcion]
con.query query, datos, (err) ->
unless err?
enviarNotificacion subscripcion, "Subscripción exitosa",
"Ya puedes empezar a configurar las notificaciones de la página."
.then (respNot) ->
console.log JSON.stringify respNot
res.status(201).json {
exito: true,
payload:
hash: hash
}
.catch (errro) ->
console.log JSON.stringify errro
res.status(400).json {exito: false, razon: "Error al ejecutar notificacion :c"}
else
res.status(400).json {exito: false, razon: err}

View File

@ -0,0 +1,51 @@
con = require("../index").con
YAML = require("yaml")
export fun = (req, res) ->
opcion_ID = req.body.opcion_ID
navegador_hash = req.body.navegador_hash
if opcion_ID? and navegador_hash?
sql = "SELECT navegador_ID from navegadores WHERE navegador_hash=?"
datos = [navegador_hash]
con.query sql, datos, (err, respuesta) ->
unless err?
navegador_ID = respuesta[0]["navegador_ID"]
sql2 = "DELETE FROM subscripciones WHERE navegador_ID=? AND opcion_ID=?"
datos2 = [navegador_ID, opcion_ID]
con.query sql2, datos2, (err) ->
unless err?
res.send YAML.stringify
exito: true
payload: {}
error: {}
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "Error al ejecutar consulta a la base de datos (2)."
ruta: "/Notificaciones/desusbcribir"
adicional: "SQL: #{err.sql}\nError: #{err}"
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "Error al ejecutar consulta a la base de datos."
ruta: "/Notificaciones/desusbcribir"
adicional: "SQL: #{err.sql}\nError: #{err}"
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "No se enviaron opcionID o navegador_hash"
ruta: "/Notificaciones/desusbcribir"
adicional: "opcionID: #{opcion_ID}\nnavegador_hash: #{navegador_hash}"

View File

@ -0,0 +1,9 @@
webPush = require("../index").webPush
export fun = (subscripcion, titulo, cuerpo) ->
datos = JSON.stringify
titulo: titulo
cuerpo: cuerpo
icono: "https://pseudosubs.com/favicon.png"
tipo: "basico"
webPush.sendNotification (JSON.parse subscripcion), datos

View File

@ -0,0 +1,35 @@
con = require("../index").con
YAML = require("yaml")
# TODO: Cambiar para que use el navegador_ID y navegador_hash
export fun = (req, res) ->
google_ID = req.body.google_ID
navegador_ID = req.body.navegador_ID
if google_ID? and navegador_ID?
sql = "SELECT animesSuscritos FROM navegadores WHERE navegador_ID=? AND navegador_hash=?"
datos = [navegador_ID, google_ID]
con.query sql, datos, (err, respuesta) ->
unless err?
res.send YAML.stringify
exito: true
payload: respuesta[0]
error: {}
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "Error al ejecutar consulta a la base de dtos."
ruta: "/Notificaciones/obtenerSubscripcionAnimes"
adicional: "sql: #{err.sql}\n#{err}"
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "No se envió un id de usuario o un id de navegador"
ruta: "/Notificaciones/obtenerSubscripcionAnimes"
adicional: "id de usuario: #{google_ID}\nid de navegador: #{navegador_ID}"

View File

@ -0,0 +1,51 @@
con = require("../index").con
YAML = require("yaml")
export fun = (req, res) ->
opcion_ID = req.body.opcion_ID
navegador_hash = req.body.navegador_hash
if opcion_ID? and navegador_hash?
sql = "SELECT navegador_ID FROM navegadores WHERE navegador_hash=?"
datos = [navegador_hash]
con.query sql, datos, (err, respuesta) ->
unless err?
navegador_ID = respuesta[0]["navegador_ID"]
sql2 = "INSERT INTO subscripciones (navegador_ID, opcion_ID) VALUES (?, ?)"
datos2 = [navegador_ID, opcion_ID]
con.query sql2, datos2, (err) ->
unless err?
res.send YAML.stringify
exito: true
payload: {}
error: {}
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "Error al ejecutar consulta a la base de datos (2)."
ruta: "/Notificaciones/susbcribir"
adicional: "SQL: #{err.sql}\nError: #{err}"
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "Error al ejecutar consulta a la base de datos."
ruta: "/Notificaciones/susbcribir"
adicional: "SQL: #{err.sql}\nError: #{err}"
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "No se enviaron opcionID o navegador_hash"
ruta: "/Notificaciones/susbcribir"
adicional: "opcionID: #{opcion_ID}\nnavegador_hash: #{navegador_hash}"

View File

@ -0,0 +1,32 @@
import {con} from "../index"
import YAML from "yaml"
export fun = (req, res) ->
anime_ID = req.params.anime_ID
if anime_ID?
sql = "SELECT * FROM ed WHERE anime_ID=? ORDER BY num_ED ASC "
datos = [anime_ID]
con.query sql, datos, (err, respuesta) ->
unless err?
res.send YAML.stringify
exito: true
payload: respuesta
error: {}
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "Error al ejecutar consulta a la base de datos."
ruta: "/Op-ED/obtenerED"
adicional: "Query: \n#{err.query}\nError: \n#{err}"
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "No se envio ningun anime_ID. Actual: #{anime_ID}"
ruta: "/Op-ED/obtenerED"
adicional: {}
#

View File

@ -0,0 +1,32 @@
import {con} from "../index"
import YAML from "yaml"
export fun = (req, res) ->
anime_ID = req.params.anime_ID
if anime_ID?
sql = "SELECT * FROM op WHERE anime_ID=? ORDER BY num_OP ASC"
datos = [anime_ID]
con.query sql, datos, (err, respuesta) ->
unless err?
res.send YAML.stringify
exito: true
payload: respuesta
error: {}
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "Error al ejecutar consulta a la base de datos."
ruta: "/Op-ED/obtenerOP"
adicional: "Query: \n#{err.query}\nError: \n#{err}"
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "No se envio ningun anime_ID. Actual: #{anime_ID}"
ruta: "/Op-ED/obtenerOP"
adicional: {}
#

View File

@ -0,0 +1,84 @@
CLIENT_ID = "27783367584-1hms6h62heplhlvsaihl8vqs7ho3o2b7.apps.googleusercontent.com"
OAuth2Client = require("google-auth-library").OAuth2Client
cliente = new OAuth2Client CLIENT_ID
YAML = require("yaml")
con = require("../index").con
verificar = (token) ->
new Promise (resolve, reject) ->
cliente.verifyIdToken
idToken: token
audience: CLIENT_ID
.then (ticket) ->
ticket.getPayload()
.then (res) -> resolve res
.catch (err) -> reject err
export fun = (req, res) ->
idToken = req.body.idToken
if idToken?
verificar idToken
.then (payload) ->
sql1 = "SELECT * FROM usuarios WHERE google_ID=?"
datos = [payload.sub]
con.query sql1, datos, (err, resultadoQ) ->
unless err?
if resultadoQ[0]?
usuario = resultadoQ[0]
res.send YAML.stringify
exito: true
payload:
user_ID: usuario.user_ID
nombre: usuario.nombre
email: usuario.email
fotoPerfil: usuario.fotoPerfil
googleID: usuario.google_ID
error: {}
else
sql = "INSERT INTO usuarios (google_ID, email, fotoPerfil, nombre) VALUES (?, ?, ?, ?)"
datos2 = [payload.sub, payload.email, payload.picture, payload.name]
con.query sql, datos2, (err) ->
unless err?
res.send YAML.stringify
exito: true
payload:
nombre: payload.nombre
email: payload.email
fotoPerfil: payload.picture
googleID: payload.sub
error: {}
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "Error al ejecutar consulta a la base de datos.\n#{err}"
ruta: "/Usuarios/ValidarUsuario"
adicional: "query: #{err.sql}\ntoken Verificado: #{JSON.stringify payload}"
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "Error al ejecutar consulta a la base de datos.\n#{err}"
ruta: "/Usuarios/ValidarUsuario"
adicional: "query: #{err.sql}"
.catch (err) ->
res.send YAML.stringify
exito: false
payload: {}
error:
razon: err
ruta: "/Usuarios/ValidarUsuario"
adicional: ""
else
res.send YAML.stringify
exito: false
payload: {}
error:
razon: "No se envió el token: #{idToken}"
ruta: "/Usuarios/ValidarUsuario"
adicional: ""
#

70
srv/index.js Normal file
View File

@ -0,0 +1,70 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var mysql = require("mysql");
var obtenerAnime_1 = require("./Anime/obtenerAnime");
var obtenerTodosAnimes_1 = require("./Anime/obtenerTodosAnimes");
var webPush = require("web-push");
exports.con = mysql.createConnection({
host: "127.0.0.1",
user: "pseubntq_araozu",
password: "@Xsakah4b",
database: "pseubntq_pseudosubs",
multipleStatements: true
});
exports.con.connect(function (err) {
if (err) {
console.error("Error al conectarse a la base de datos :c\n" + err);
}
else {
console.log("Exito al conectarse a la base de datos :D");
}
});
exports.fun = function (app) {
var bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: true }));
// app.use(bodyParser.json);
webPush.setVapidDetails("mailto:tbyuyfcjjll@gmail.com", "BPA_MfechJ8EwyMC_5-GZsWFtjPCD6f2qAzW5ouxnMs73mGTsgtD47of0pO1rKtpyWiWKE8yZVHHzTGhLHbfVRI", "6dOp0WChG-fLFSo9hRnMUn5S1BVBm3KhK9r0m4L-GoA");
app.post("/anime/:id", obtenerAnime_1.default);
app.post("/anime", obtenerTodosAnimes_1.default);
app.post("/u/validar", require("./Usuarios/ValidarUsuario").fun);
app.post("/n/registrar", require("./Notificaciones/RegistrarSubcripcion").fun);
app.post("/op/:anime_ID", require("./OP-ED/obtenerOP").fun);
app.post("/ed/:anime_ID", require("./OP-ED/obtenerED").fun);
app.post("/eps/links/", require("./Links/crearLinks").fun);
/**
* Rutas Legacy :c */
app.post('/links', require('./LinksAnimes/obtenerLinks').obtenerLinks);
app.put('/links', require('./LinksAnimes/modificarLink').modificarLinks);
app.post('/eps/variantes/:anime_ID', require('./Admin/Eps/obtenerVariantes').obtenerVariantes);
app.put('/eps/variantes/', require('./Admin/Eps/crearVariante').crearVariante);
app.put('/eps/mensaje/', require('./Admin/Eps/cambiarMensaje').cambiarMensaje);
app.post('/eps/links/:opcion_ID', require('./Admin/Eps/obtenerLinks').obtenerLinks);
app.post('/estadisticas', require('./Admin/Eps/estadisticas').estadisticas);
// Fin
/*
* Claves VAPID
* Publica: BPA_MfechJ8EwyMC_5-GZsWFtjPCD6f2qAzW5ouxnMs73mGTsgtD47of0pO1rKtpyWiWKE8yZVHHzTGhLHbfVRI
* Privada: 6dOp0WChG-fLFSo9hRnMUn5S1BVBm3KhK9r0m4L-GoA
* */
app.get("/n/test", function (req, res) {
console.log("Deberia enviar push...");
var payload = JSON.stringify({
title: "Push de ejemplo :3"
});
var subscripcion = { "endpoint": "https://fcm.googleapis.com/fcm/send/e-n6_jndfTw:APA91bGQrFOYgICLRm-diDHwJnI4909TiQB_FqnffBd6PnyyoiB2rDqehn41KxXMyw5Upa0IqqDnlr58-n3B9w6WCN6xY-sluDk8fpya928S_NPgJyAvbhFERN3Gqqy36s4J4OVDz6qL", "expirationTime": null, "keys": { "p256dh": "BGNpJIqpEkJPjVZcccV42TdXQi-G3nt6gVWXIMkRs69fWyQeLN7K-sEBs7ffyCiosJm4ApwY9_ol2Q57Zv5fg08", "auth": "DzzSWijI-WfBPWrI6eGcuw" } };
webPush.sendNotification(subscripcion, payload)
.then(function (response) {
console.log(JSON.stringify(response));
res.status(200);
res.send("Exito :D");
})
.catch(function (err) {
console.log(JSON.stringify(err));
res.status(400);
res.send("Error al enviar push :c\n" + err);
});
});
};
exports.default = (function (app, http) {
exports.fun(app);
});

73
srv/index.ts Normal file
View File

@ -0,0 +1,73 @@
const mysql = require("mysql");
import obtenerAnimes from "./Anime/obtenerAnime"
import obtenerTodosAnimes from "./Anime/obtenerTodosAnimes"
export const webPush = require("web-push");
webPush.setVapidDetails(
"mailto:tbyuyfcjjll@gmail.com",
"BPA_MfechJ8EwyMC_5-GZsWFtjPCD6f2qAzW5ouxnMs73mGTsgtD47of0pO1rKtpyWiWKE8yZVHHzTGhLHbfVRI",
"6dOp0WChG-fLFSo9hRnMUn5S1BVBm3KhK9r0m4L-GoA"
);
export const con = mysql.createConnection({
host: "127.0.0.1",
user: "pseubntq_araozu",
password: "@Xsakah4b",
database: "pseubntq_pseudosubs",
multipleStatements: true
});
con.connect(err => {
if (err) {
console.error("Error al conectarse a la base de datos :c\n" + err);
} else {
console.log("Exito al conectarse a la base de datos :D");
}
});
export const fun = app => {
const bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: true }));
// app.use(bodyParser.json);
app.post("/anime/:id", obtenerAnimes);
app.post("/anime", obtenerTodosAnimes);
app.post("/u/validar", require("./Usuarios/ValidarUsuario").fun);
app.post("/n/registrar", require("./Notificaciones/RegistrarSubcripcion").fun);
app.post("/n/subscrAnimes", require("./Notificaciones/obtenerSubscripcionAnimes").fun);
app.post("/n/subscribir/", require("./Notificaciones/suscribir").fun);
app.post("/n/desubscribir/", require("./Notificaciones/desuscribir").fun);
app.post("/op/:anime_ID", require("./OP-ED/obtenerOP").fun);
app.post("/ed/:anime_ID", require("./OP-ED/obtenerED").fun);
app.post("/eps/links/", require("./Links/crearLinks").fun);
/**
* Rutas Legacy :c */
app.post('/links', require('./LinksAnimes/obtenerLinks').obtenerLinks);
app.put('/links', require('./LinksAnimes/modificarLink').modificarLinks);
app.post('/eps/variantes/:anime_ID', require('./Admin/Eps/obtenerVariantes').obtenerVariantes);
app.put('/eps/variantes/', require('./Admin/Eps/crearVariante').crearVariante);
app.put('/eps/mensaje/', require('./Admin/Eps/cambiarMensaje').cambiarMensaje);
app.post('/eps/links/:opcion_ID', require('./Admin/Eps/obtenerLinks').obtenerLinks);
app.post('/estadisticas', require('./Admin/Eps/estadisticas').estadisticas);
// Fin
/*
* Claves VAPID
* Publica: BPA_MfechJ8EwyMC_5-GZsWFtjPCD6f2qAzW5ouxnMs73mGTsgtD47of0pO1rKtpyWiWKE8yZVHHzTGhLHbfVRI
* Privada: 6dOp0WChG-fLFSo9hRnMUn5S1BVBm3KhK9r0m4L-GoA
* */
};
export default (app, http) => {
fun(app);
}

View File

@ -0,0 +1,6 @@
exito: true|false
payload: datos
error:
razon: Razon por la que el error sucedió
ruta: Ruta al archivo de error en el backend
adicional: Datos adicionales, como query SQL, o stack trace del error.

43
srv/tsconfig.json Normal file
View File

@ -0,0 +1,43 @@
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"strict": true,
"jsx": "preserve",
"importHelpers": true,
"moduleResolution": "node",
"experimentalDecorators": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"sourceMap": false,
"baseUrl": ".",
"removeComments": true,
"types": [
"webpack-env"
],
"paths": {
"@/*": [
"src/*"
]
},
"lib": [
"esnext",
"dom",
"dom.iterable",
"scripthost"
]
},
"include": [
"src/**/*.ts",
"src/**/*.tsx",
"src/**/*.vue",
"tests/**/*.ts",
"tests/**/*.tsx"
],
"exclude": [
"node_modules",
"dist",
"build",
"node.d.ts"
]
}

View File

@ -1,19 +1,31 @@
const { defineConfig } = require('@vue/cli-service') module.exports = {
const PugPlugin = require('pug-plugin');
module.exports = defineConfig({
transpileDependencies: true,
configureWebpack: { configureWebpack: {
module: { module: {
rules: [ rules: [
{test: /\.coffee$/, loader: "coffee-loader"}
{
test: /\.coffee$/,
loader: "coffee-loader"
}
] ]
} }
},
pluginOptions: {
express: {
shouldServeApp: true,
serverDir: './srv'
}
},
baseUrl: undefined,
outputDir: undefined,
assetsDir: undefined,
runtimeCompiler: undefined,
productionSourceMap: false,
parallel: undefined,
css: undefined,
pwa: {
workboxPluginMode: "InjectManifest",
workboxOptions: {
swSrc: __dirname + "/public/service-worker.js"
}
} }
}) };

9120
yarn.lock Normal file

File diff suppressed because it is too large Load Diff