├── .babelrc
├── .gitattributes
├── .gitignore
├── .idea
├── misc.xml
├── modules.xml
├── ultimate-porn-space.iml
├── vcs.xml
└── workspace.xml
├── README.md
├── package.json
├── public
├── css
│ └── style.css
├── images
│ └── error.jpg
├── js
│ └── helper.js
└── videos
│ └── porn1.mp4
├── server.js
├── server
├── db
│ └── mongoose.js
├── models
│ └── video.js
└── routes
│ ├── actions.js
│ ├── basic.js
│ ├── pornstar.js
│ ├── tag.js
│ └── top.js
└── views
├── about.hbs
├── error.hbs
├── favorites.hbs
├── index.hbs
├── partials
├── _deletebutton.hbs
├── _footer.hbs
├── _generalcss.hbs
├── _generalscripts.hbs
├── _navbar.hbs
├── _pagination.hbs
├── _savebutton.hbs
└── _top.hbs
├── star.hbs
├── stars.hbs
├── tag.hbs
├── tags.hbs
└── video.hbs
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | 'presets': ['env']
3 | }
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * linguist-vendored
2 | *.js linguist-vendored=false
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | package-lock.json
3 | modify.txt
4 | /*.env
5 | npm-debug.log
6 | .DS_Store
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/ultimate-porn-space.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/workspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
203 |
204 |
205 |
206 |
207 | true
208 | DEFINITION_ORDER
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 |
229 |
230 |
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
251 |
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 | 1541462100396
268 |
269 |
270 | 1541462100396
271 |
272 |
273 |
274 |
275 |
276 |
277 |
278 |
279 |
280 |
281 |
282 |
283 |
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
301 |
302 |
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
392 |
393 |
394 |
395 |
396 |
397 |
398 |
399 |
400 |
401 |
402 |
403 |
404 |
405 |
406 |
407 |
408 |
409 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
435 |
436 |
437 |
438 |
439 |
440 |
441 |
442 |
443 |
444 |
445 |
446 |
447 |
448 |
449 |
450 |
451 |
452 |
453 |
454 |
455 |
456 |
457 |
458 |
459 |
460 |
461 |
462 |
463 |
464 |
465 |
466 |
467 |
468 |
469 |
470 |
471 |
472 |
473 |
474 |
475 |
476 |
477 |
478 |
479 |
480 |
481 |
482 |
483 |
484 |
485 |
486 |
487 |
488 |
489 |
490 |
491 |
492 |
493 |
494 |
495 |
496 |
497 |
498 |
499 |
500 |
501 |
502 |
503 |
504 |
505 |
506 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Ultimate Porn Space
2 |
3 |
4 | ## What can it do?
5 |
6 | The website manages to do a lot of things that almost every website has:
7 |
8 | *• Display a long catalog of videos* :ledger:
9 |
10 | *• Display a long catalog of pornstars* :kiss:
11 |
12 | *• Display a long catalog of tags* :bookmark_tabs:
13 |
14 | *• Navigate through the pages* 🖱️
15 |
16 | *• Save your videos to see it later* :floppy_disk:
17 |
18 | *• Search videos of your preferences* :mag:
19 |
20 |
21 | ## About
22 |
23 | All the videos shows in were provided by Redtube through their api.
24 |
25 |
26 | To do
27 | - Integrate https://www.npmjs.com/package/pornhub-api
28 | - add ability to play multiple videos side by side with ease or allow user to view videos with a full search on the side.
29 | - Ex. https://www.xnxx.com/video-gyk110c/i_bet_you_will_cum_in_the_1st_fucking_minute_
30 | - https://responsivevideogallery.com
31 | - https://codepen.io/coreyroth/pen/eeyvMw
32 | - https://mobirise.com/bootstrap-template/video-gallery-template.html
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ultimate-porn-space",
3 | "version": "1.0.0",
4 | "description": "Ultimate Porn Space",
5 | "main": "server.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1",
8 | "deploy": "node dist/server.js",
9 | "start": "node server.js"
10 | },
11 | "engines": {
12 | "node": "8.x"
13 | },
14 | "dependencies": {
15 | "axios": "^0.18.0",
16 | "body-parser": "^1.18.3",
17 | "dotenv": "^6.1.0",
18 | "express": "^4.16.3",
19 | "handlebars": "^4.0.11",
20 | "hbs": "^4.0.1",
21 | "ip": "^1.1.5",
22 | "lodash": "^4.17.10",
23 | "method-override": "^2.3.10",
24 | "mongodb": "^3.0.10",
25 | "mongoose": "^5.1.4",
26 | "netlify-lambda": "^1.0.3",
27 | "serverless-http": "^1.8.0"
28 | },
29 | "devDependencies": {
30 | "gulp": "^4.0.0",
31 | "html-loader": "^0.5.5",
32 | "html-webpack-plugin": "^3.2.0",
33 | "webpack": "^4.25.1",
34 | "webpack-cli": "^3.1.2",
35 | "webpack-node-externals": "^1.7.2"
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/public/css/style.css:
--------------------------------------------------------------------------------
1 | .card{
2 | box-shadow: 0px 0px;
3 | transition: all .2s;
4 | }
5 |
6 | .card:hover{
7 | box-shadow: 5px 5px;
8 | }
9 |
10 | #error{
11 | font-size: 120px;
12 | }
13 |
14 | #error2{
15 | font-size: 80px;
16 | }
17 |
18 | #tags{
19 | height: 50px;
20 | overflow: hidden;
21 | transition: all 0.4s;
22 | }
23 |
24 | #expander{
25 | color: red;
26 | cursor: pointer;
27 | }
28 |
29 | .container{
30 | border-radius: 25px;
31 | }
--------------------------------------------------------------------------------
/public/images/error.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TheDirtyDeveloper/porn-site/6f0390c37a287cf2cc8e663344ce521c53e82963/public/images/error.jpg
--------------------------------------------------------------------------------
/public/js/helper.js:
--------------------------------------------------------------------------------
1 | $("#expander").click(function(){
2 | const tag_size = $("#taglist").height();
3 | const tagdiv_size = $("#tags").height();
4 |
5 | if(tagdiv_size == 50){
6 | $("#tags").css("height",tag_size);
7 | $("#expander").text("(Collapse)");
8 | }else{
9 | $("#tags").css("height","50");
10 | $("#expander").text("(Expand)");
11 | }
12 |
13 | });
--------------------------------------------------------------------------------
/public/videos/porn1.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TheDirtyDeveloper/porn-site/6f0390c37a287cf2cc8e663344ce521c53e82963/public/videos/porn1.mp4
--------------------------------------------------------------------------------
/server.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const hbs = require('hbs');
3 | const bodyParser = require('body-parser');
4 | const axios = require('axios');
5 |
6 | const methodOverride = require('method-override');
7 |
8 | const pornstars = require('./server/routes/pornstar');
9 | const tags = require('./server/routes/tag');
10 | const basics = require('./server/routes/basic');
11 | const actions = require('./server/routes/actions');
12 |
13 | const app = express();
14 |
15 | const port = process.env.PORT || 3000;
16 |
17 | app.use(bodyParser.json());
18 | app.use(methodOverride('_method'));
19 | app.set('view engine', 'hbs');
20 | app.use(express.static(__dirname + '/public'));
21 | hbs.registerPartials(__dirname + '/views/partials');
22 |
23 | app.use('/tags', tags);
24 | app.use('/stars', pornstars);
25 | app.use('/action', actions);
26 | app.use('/', basics);
27 |
28 | app.listen(port, () => {
29 | console.log(`Server running on ${port}`);
30 | });
31 |
--------------------------------------------------------------------------------
/server/db/mongoose.js:
--------------------------------------------------------------------------------
1 | var mongoose = require('mongoose');
2 |
3 | mongoose.Promise = global.Promise;
4 | // mongoose.connect('mongodb://127.0.0.1/public-porn-db');
5 | mongoose.connect('mongodb://thedirtydeveloper:buddy3907@ds151853.mlab.com:51853/porn');
6 |
7 | module.exports = {mongoose};
--------------------------------------------------------------------------------
/server/models/video.js:
--------------------------------------------------------------------------------
1 | var mongoose = require('mongoose');
2 |
3 | var Video = mongoose.model('Video', {
4 | video_id: {
5 | type: Number,
6 | required: true,
7 | minlength: 3,
8 | trim: true
9 | },
10 | title: {
11 | type: String,
12 | required: true,
13 | minlength: 4,
14 | trim: true
15 | },
16 | thumb: {
17 | type: String,
18 | required: true,
19 | minlength: 10,
20 | trim: true,
21 | },
22 | ip: {
23 | type: String,
24 | required: true
25 | },
26 | savedAt: {
27 | type: Number,
28 | default: new Date().getTime()
29 | }
30 | });
31 |
32 | module.exports = {Video};
--------------------------------------------------------------------------------
/server/routes/actions.js:
--------------------------------------------------------------------------------
1 | const axios = require('axios');
2 | const express = require('express');
3 | var router = express.Router();
4 |
5 | var ip = require('ip');
6 | var methodOverride = require('method-override');
7 | var {mongoose} = require('./../db/mongoose');
8 | var {Video} = require('./../models/video');
9 |
10 | router.get('/save/:id', (req,res) => {
11 | const id = req.params.id;
12 | const backURL = req.header('Referer') || '/';
13 | axios.get(`https://api.redtube.com/?data=redtube.Videos.getVideoById&video_id=${id}&output=json&thumbsize=all`)
14 | .then((video) => {
15 | if(video.data.code && video.data.code !== 200)
16 | return res.render('error', {error_code: 404, error_message: "Video not found"});
17 | video = video.data.video;
18 |
19 | const videom = new Video({
20 | video_id: video.video_id,
21 | title: video.title,
22 | ip: ip.address(),
23 | thumb: video.thumb
24 | });
25 |
26 | videom.save().then((nvideo) => {
27 | if(!nvideo)
28 | return res.status(400).render('error', {error_code: 400, error_message: "There were an error saving your video."})
29 | res.status(200).redirect(backURL);
30 | }).catch((e) => res.status(400).send(e));
31 | }).catch((e) => res.status(400).send(e));
32 | });
33 |
34 | router.delete('/delete/:id', (req,res) => {
35 | const id = req.params.id;
36 | const backURL = req.header('Referer') || '/';
37 |
38 | Video.findByIdAndRemove(id).then((video) => {
39 | if(!video) return res.status(400).render('error', {error_code: 400, error_message: "There were an error deleting your video."})
40 | res.status(200).redirect(backURL);
41 | }).catch((e) => res.status(400).send());
42 | })
43 |
44 | module.exports = router;
--------------------------------------------------------------------------------
/server/routes/basic.js:
--------------------------------------------------------------------------------
1 | const axios = require('axios');
2 | const express = require('express');
3 | let router = express.Router();
4 | let {mongoose} = require('./../db/mongoose');
5 | let {Video} = require('./../models/video');
6 | let ip = require('ip');
7 |
8 | router.get('/favorites', (req,res) => {
9 | Video.find({
10 | ip: ip.address()
11 | }).then((videos) => {
12 | res.status(200).render('favorites', {result: videos});
13 | }).catch((e) => res.status(400).send());
14 |
15 | });
16 |
17 | router.get('/about', (req,res) => {
18 | res.status(200).render('about');
19 | });
20 |
21 | router.get('/video/:id', (req,res) => {
22 | const id = req.params.id;
23 | axios.get(`https://api.redtube.com/?data=redtube.Videos.getVideoById&video_id=${id}&output=json`)
24 | .then((video) => {
25 | if(video.data.code && video.data.code !== 200)
26 | return res.render('error', {error_code: 404, error_message: "Video not found."});
27 | axios.get(` https://api.redtube.com/?data=redtube.Videos.getVideoEmbedCode&video_id=${id}&output=json`)
28 | .then(embed => {
29 | if(embed.data.code && embed.data.code !== 200)
30 | return res.render('error', {error_code: 404, error_message: "Embed not found"});
31 | const buffer = new Buffer(embed.data.embed.code, 'base64');
32 | const embed_video = buffer.toString('ascii');
33 |
34 | res.status(200).render('video', {result: video.data.video, embed: embed_video});
35 | })
36 | .catch((e) => res.status(400).send(e));
37 | })
38 | .catch((e) => res.status(400).send(e));
39 | });
40 |
41 | router.get('/', (req,res) => {
42 |
43 | var page = parseInt(req.query.p);
44 | if(!page || page === 0) page = 1;
45 | var find = req.query.search;
46 | if(!req.query.search) find = "";
47 |
48 | axios.get(`https://api.redtube.com/?data=redtube.Videos.searchVideos&output=json&thumbsize=large&page=${page}&search=${find}`)
49 | .then((videos) => {
50 | if(videos.data.count === 0 || (videos.data.code && videos.data.code !== 200))
51 | return res.render('error.hbs', {error_code: "404", error_message: "Videos not found"});
52 | axios.get(`https://api.redtube.com/?data=redtube.Tags.getTagList&output=json`)
53 | .then((tags) => {
54 | var taglist = tags.data.tags;
55 | if(!taglist) taglist = "";
56 | const result = videos.data.videos;
57 | if(find) find = `&search=${find}`;
58 | const next = `?p=${page+1}${find}`;
59 | const back = `?p=${page-1}${find}`;
60 | res.status(200).render('index.hbs', {results: result,next: next, back: back, find: find, tags: taglist});
61 | }).catch((e) => res.status(400).send(e));
62 | }).catch((e) => res.status(400).send(e));
63 | });
64 |
65 | module.exports = router;
--------------------------------------------------------------------------------
/server/routes/pornstar.js:
--------------------------------------------------------------------------------
1 | var express = require('express');
2 | var axios = require('axios');
3 | var router = express.Router();
4 |
5 | router.get('/:star', (req,res) => {
6 | var page = parseInt(req.query.p);
7 | if(!page || page == 0) page = 1;
8 | const star = encodeURIComponent(req.params.star);
9 | axios.get(`https://api.redtube.com/?data=redtube.Videos.searchVideos&output=json&stars[]=${star}&page=${page}`)
10 | .then((videos) => {
11 | if(videos.data.count == 0)
12 | res.render('error',{error_code: 404, error_message: "Pornstar not found"});
13 |
14 |
15 | const next = `stars/${star}?p=${page+1}`;
16 | const back = `stars/${star}?p=${page-1}`;
17 | const videoslist = videos.data.videos;
18 | res.status(200).render('star', {results: videoslist, next: next, back: back, pornstar: star, pornstar_d: decodeURIComponent(star)});
19 | })
20 | .catch((e) => res.status(400).send(e));
21 | });
22 |
23 | router.get('/', (req,res) => {
24 | var page = parseInt(req.query.p);
25 | if(!page || page == 0) page = 1;
26 |
27 | const next = `stars?p=${page+1}`;
28 | const back = `stars?p=${page-1}`;
29 | axios.get(`https://api.redtube.com/?data=redtube.Stars.getStarDetailedList&output=json&page=${page}`)
30 | .then((stars) => {
31 | if(stars.data.count == 0)
32 | return res.render('error', {error_code: 404, error_message: "Oopsie, there are no pornstars"});
33 | const pornstars = stars.data.stars;
34 | res.status(200).render('stars', {pornstars: pornstars, next: next, back: back});
35 | })
36 | .catch((e) => res.status(400).send(e));
37 | });
38 |
39 | module.exports = router;
--------------------------------------------------------------------------------
/server/routes/tag.js:
--------------------------------------------------------------------------------
1 | const express = require('express');
2 | const axios = require('axios');
3 | var router = express.Router();
4 |
5 | router.get('/:tag', (req,res) => {
6 | var page = parseInt(req.query.p);
7 | if(!page || page == 0) page = 1;
8 | const tag = req.params.tag;
9 | axios.get(`https://api.redtube.com/?data=redtube.Tags.getTagList&output=json}`)
10 | .then((tags) => {
11 | if(tags.data.count == 0)
12 | return res.render('error', {error_code: 404, error_message: "Not videos founds with this tag"});
13 |
14 |
15 | const next = `tag/${tag}?p=${page+1}`;
16 | const back = `tag/${tag}?p=${page-1}`;
17 | const result = videos.data.videos;
18 | res.status(200).render('tag', {results: result,next: next, back: back, tag: tag});
19 | })
20 | .catch((e) => res.status(400).send(e));
21 | });
22 |
23 | router.get('/', (req,res) => {
24 | var page = parseInt(req.query.p);
25 | if(!page || page == 0) page = 1;
26 |
27 | const next = `tags?p=${page+1}`;
28 | const back = `tags?p=${page-1}`;
29 | axios.get(`https://api.redtube.com/?data=redtube.Tags.getTagList&output=json}`)
30 | .then((stars) => {
31 | if(stars.data.count == 0)
32 | return res.render('error', {error_code: 404, error_message: "Oopsie, there are no pornstars"});
33 | const tags = stars.data.stars;
34 | res.status(200).render('tags', {tags: tags, next: next, back: back});
35 | })
36 | .catch((e) => res.status(400).send(e));
37 | });
38 |
39 | module.exports = router;
--------------------------------------------------------------------------------
/server/routes/top.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/TheDirtyDeveloper/porn-site/6f0390c37a287cf2cc8e663344ce521c53e82963/server/routes/top.js
--------------------------------------------------------------------------------
/views/about.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ultimate Porn Space
6 |
7 |
8 | {{> _generalcss}}
9 |
10 |
11 |
12 |
13 | {{> _navbar}}
14 |
15 |
16 |
17 |
18 | {{> _top}}
19 |
20 |
About
21 |
22 |
23 |
24 |
25 |
26 | This is a porn site for the people
27 |
28 |
29 |
30 |
31 |
32 |
33 | {{> _generalscripts}}
34 |
35 |
--------------------------------------------------------------------------------
/views/error.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ultimate Porn Space
6 |
7 |
8 | {{> _generalcss}}
9 |
10 |
11 |
12 |
13 | {{> _navbar}}
14 |
15 |
16 |
17 |
18 | {{> _top}}
19 |
20 |
{{error_code}}
21 |
{{error_message}}
22 |

23 |
24 |
25 |
26 |
27 | {{> _generalscripts}}
28 |
29 |
--------------------------------------------------------------------------------
/views/favorites.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ultimate Porn Space
6 |
7 |
8 | {{> _generalcss}}
9 |
10 |
11 |
12 |
13 | {{> _navbar}}
14 |
15 |
16 |
17 |
18 | {{> _top}}
19 |
20 |
Favorites 🗄
21 |
Welcome to your favorites, there you got the videos you've saved.
22 |
This sections only show videos added by your ip, if you have a dynamic ip, it may show videos you didn't added.
23 |
24 |
25 | {{#each result}}
26 |
27 |
28 |

29 |
30 |
{{title}}
31 |
32 |
35 |
36 |
37 |
38 | {{> _deletebutton}}
39 |
40 |
41 |
42 |
43 |
44 | {{/each}}
45 |
46 |
47 | {{!--
48 |
49 | {{> _pagination}}
50 |
51 |
--}}
52 |
53 |
54 |
55 |
56 | {{> _generalscripts}}
57 |
58 |
--------------------------------------------------------------------------------
/views/index.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Perfect Porn
6 |
7 |
8 | {{> _generalcss}}
9 |
17 |
18 |
19 |
20 |
21 |
33 |
34 |
35 | {{> _navbar}}
36 |
37 |
38 |
39 |
40 |
41 |
42 |
Welcome!
43 |
This is a porn site, by the people, for the people. Let us know what to add!
44 |
45 |
52 |
53 |
54 | {{#each results}}
55 |
56 |
57 |

58 |
59 |
{{video.title}}
60 |
Views: {{video.views}}
Duration: {{video.duration}}
Rating: {{video.rating}}
61 |
62 |
65 |
66 |
67 |
68 | {{> _savebutton}}
69 |
70 |
71 |
72 |
73 |
74 | {{/each}}
75 |
76 |
77 |
78 | {{> _pagination}}
79 |
80 |
81 |
82 |
83 |
84 | {{> _top}}
85 | {{> _footer}}
86 |
87 |
88 |
89 |
90 |
91 | {{> _generalscripts}}
92 |
93 |
107 |
108 |
109 |
--------------------------------------------------------------------------------
/views/partials/_deletebutton.hbs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/views/partials/_footer.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/views/partials/_generalcss.hbs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/views/partials/_generalscripts.hbs:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/views/partials/_navbar.hbs:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/views/partials/_pagination.hbs:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/views/partials/_savebutton.hbs:
--------------------------------------------------------------------------------
1 | Favorite
--------------------------------------------------------------------------------
/views/partials/_top.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Help us out, please give us some feedback and/or criticism
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/views/star.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Pornify
6 |
7 |
8 | {{> _generalcss}}
9 |
10 |
11 |
12 |
13 | {{> _navbar}}
14 |
15 |
16 |
17 |
18 | {{> _top}}
19 |
20 |
{{pornstar_d}}
21 |
22 |
23 | {{#each results}}
24 |
25 |
26 |

27 |
28 |
{{video.title}}
29 |
Views: {{video.views}}
Duration: {{video.duration}}
Rating: {{video.rating}}
30 |
31 |
34 |
35 |
36 |
37 | {{> _savebutton}}
38 |
39 |
40 |
41 |
42 |
43 | {{/each}}
44 |
45 |
46 |
47 | {{> _pagination}}
48 |
49 |
50 |
51 |
52 |
53 |
54 | {{> _generalscripts}}
55 |
56 |
--------------------------------------------------------------------------------
/views/stars.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ultimate Porn Space
6 |
7 |
8 | {{> _generalcss}}
9 |
10 |
11 |
12 |
13 | {{> _navbar}}
14 |
15 |
16 |
17 |
18 | {{> _top}}
19 |
20 |
Pornstars 💋
21 |
Search for videos by their actresses.
22 |
23 |
24 | {{#each pornstars}}
25 |
26 |
27 |

28 |
36 |
37 |
38 | {{/each}}
39 |
40 |
41 |
42 | {{> _pagination}}
43 |
44 |
45 |
46 |
47 |
48 |
49 | {{> _generalscripts}}
50 |
51 |
--------------------------------------------------------------------------------
/views/tag.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ultimate Porn Space
6 |
7 |
8 | {{> _generalcss}}
9 |
10 |
11 |
12 |
13 | {{> _navbar}}
14 |
15 |
16 |
17 |
18 | {{> _top}}
19 |
20 |
{{tag}}
21 |
22 |
23 | {{#each results}}
24 |
25 |
26 |

27 |
28 |
{{video.title}}
29 |
Views: {{video.views}}
Duration: {{video.duration}}
Rating: {{video.rating}}
30 |
31 |
34 |
35 |
36 |
37 | {{> _savebutton}}
38 |
39 |
40 |
41 |
42 |
43 | {{/each}}
44 |
45 |
46 |
47 | {{> _pagination}}
48 |
49 |
50 |
51 |
52 |
53 |
54 | {{> _generalscripts}}
55 |
56 |
--------------------------------------------------------------------------------
/views/tags.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ultimate Porn Space
6 |
7 |
8 | {{> _generalcss}}
9 |
10 |
11 |
12 |
13 | {{> _navbar}}
14 |
15 |
16 |
17 |
18 | {{> _top}}
19 |
20 |
Categories 💋
21 |
Search for videos by their category.
22 |
23 |
30 |
31 |
32 | {{> _pagination}}
33 |
34 |
35 |
36 |
37 |
38 |
39 | {{> _generalscripts}}
40 |
41 |
--------------------------------------------------------------------------------
/views/video.hbs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Ultimate Porn Space
6 |
7 |
8 | {{> _generalcss}}
9 |
10 |
11 |
12 |
13 | {{> _navbar}}
14 |
15 |
16 |
17 |
18 | {{> _top}}
19 |
20 |
21 |
22 |
23 |
24 |
25 |
{{result.title}}
26 |
Duration: {{result.duration}} | Rates: {{result.ratings}} | Views: {{result.views}}
27 | {{!--
Tags: {{result.tags}}
--}}
28 |
29 |
30 |
31 |
32 |
33 | {{> _savebutton}}
34 |
35 |
36 |
37 |
38 |
39 |
40 | {{> _generalscripts}}
41 |
42 |
--------------------------------------------------------------------------------