Merge branch 'master' into wasabi
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "traxxx",
|
"name": "traxxx",
|
||||||
"version": "1.172.1",
|
"version": "1.172.3",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "traxxx",
|
"name": "traxxx",
|
||||||
"version": "1.172.1",
|
"version": "1.172.3",
|
||||||
"description": "All the latest porn releases in one place",
|
"description": "All the latest porn releases in one place",
|
||||||
"main": "src/app.js",
|
"main": "src/app.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
After Width: | Height: | Size: 840 KiB |
After Width: | Height: | Size: 729 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 324 KiB |
After Width: | Height: | Size: 350 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 30 KiB |
|
@ -645,7 +645,7 @@ const tagPosters = [
|
||||||
['mff', 1, 'Anikka Albrite, Kelsi Monroe and Mick Blue for HardX'],
|
['mff', 1, 'Anikka Albrite, Kelsi Monroe and Mick Blue for HardX'],
|
||||||
['mfm', 0, 'Vina Sky in "Jules Jordan\'s Three Ways" for Jules Jordan'],
|
['mfm', 0, 'Vina Sky in "Jules Jordan\'s Three Ways" for Jules Jordan'],
|
||||||
['natural-boobs', 1, 'Nia Nacci for First Class POV'],
|
['natural-boobs', 1, 'Nia Nacci for First Class POV'],
|
||||||
['nurse', 1, 'Mia Malkova in "Always Think Happy Thoughts" for Brazzers'],
|
['nurse', 0, 'Sarah Vandella in "Cum For Nurse Sarah" for Brazzers'],
|
||||||
['nun', 0, 'Lady Zee in LegalPorno NF053'],
|
['nun', 0, 'Lady Zee in LegalPorno NF053'],
|
||||||
['oil', 2, 'Jade Kush for Passion HD'],
|
['oil', 2, 'Jade Kush for Passion HD'],
|
||||||
['oral-creampie', 1, 'Valentina Nappi for Her Limit'],
|
['oral-creampie', 1, 'Valentina Nappi for Her Limit'],
|
||||||
|
@ -872,7 +872,8 @@ const tagPhotos = [
|
||||||
['nun', 1, 'Penny Pax and Darcie Dolce in "Confessions Of A Sinful Nun" for Sweetheart Video'],
|
['nun', 1, 'Penny Pax and Darcie Dolce in "Confessions Of A Sinful Nun" for Sweetheart Video'],
|
||||||
['nun', 3, 'Higurashi Rin in "Naughty Nun" for All Gravure'],
|
['nun', 3, 'Higurashi Rin in "Naughty Nun" for All Gravure'],
|
||||||
['nun', 2, 'Lea Lexis in "Confessions Of A Sinful Nun" for Sweetheart Video'],
|
['nun', 2, 'Lea Lexis in "Confessions Of A Sinful Nun" for Sweetheart Video'],
|
||||||
['nurse', 0, 'Sarah Vandella in "Cum For Nurse Sarah" for Brazzers'],
|
['nurse', 2, 'Evelina Dellai in "Horny Nurses" for Private'],
|
||||||
|
['nurse', 1, 'Mia Malkova in "Always Think Happy Thoughts" for Brazzers'],
|
||||||
['oil', 1, 'Kissa Sins in "Oil Overload 14" for JulesJordan'],
|
['oil', 1, 'Kissa Sins in "Oil Overload 14" for JulesJordan'],
|
||||||
['oil', 3, 'Vina Sky for Lubed'],
|
['oil', 3, 'Vina Sky for Lubed'],
|
||||||
['oil', 0, 'Jada Stevens in "Jada Stevens Anal Ass Oiled Up For James Deen\'s Cock" for Jules Jordan'],
|
['oil', 0, 'Jada Stevens in "Jada Stevens Anal Ass Oiled Up For James Deen\'s Cock" for Jules Jordan'],
|
||||||
|
|
10
src/media.js
|
@ -605,7 +605,12 @@ async function trySource(baseSource, existingMedias, baseMedia) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return fetchSource(extractedSource, baseMedia);
|
const source = await fetchSource(extractedSource, baseMedia);
|
||||||
|
|
||||||
|
return {
|
||||||
|
...source,
|
||||||
|
entry: extractedSource.entry || existingSourceMedia,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
async function fetchMedia(baseMedia, existingMedias) {
|
async function fetchMedia(baseMedia, existingMedias) {
|
||||||
|
@ -698,9 +703,6 @@ async function storeMedias(baseMedias, options) {
|
||||||
const newMediaEntries = newMediaWithEntries.filter(media => media.newEntry).map(media => media.entry);
|
const newMediaEntries = newMediaWithEntries.filter(media => media.newEntry).map(media => media.entry);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// TODO: path duplicates disappear in DO NOTHING query, causing association error. source duplicate detection not working? use scene generator
|
|
||||||
// UPDATE: cannot replicate when using the same poster and photo source in scene generator
|
|
||||||
// await bulkInsert('media', newMediaEntries, false);
|
|
||||||
await bulkInsert('media', newMediaEntries);
|
await bulkInsert('media', newMediaEntries);
|
||||||
|
|
||||||
return [...newMediaWithEntries, ...existingHashMedias];
|
return [...newMediaWithEntries, ...existingHashMedias];
|
||||||
|
|
|
@ -200,6 +200,8 @@ function scrapeAll(html, site, networkUrl, hasTeaser = true) {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
console.log(release);
|
||||||
|
|
||||||
return release;
|
return release;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -252,7 +254,10 @@ async function scrapeScene(html, url, site, baseRelease, mobileHtml, options) {
|
||||||
|
|
||||||
const channel = data?.productionCompany?.name
|
const channel = data?.productionCompany?.name
|
||||||
|| $('.studioLink a, .siteLink a').attr('title')?.trim()
|
|| $('.studioLink a, .siteLink a').attr('title')?.trim()
|
||||||
|| $('.siteNameSpan').text()?.trim().toLowerCase().replace('.com', '')
|
|| $('.siteNameSpan').text()
|
||||||
|
?.trim()
|
||||||
|
.toLowerCase()
|
||||||
|
.replace('.com', '')
|
||||||
|| $('meta[name="twitter:domain"]').attr('content')?.replace('.com', '');
|
|| $('meta[name="twitter:domain"]').attr('content')?.replace('.com', '');
|
||||||
|
|
||||||
if (channel) release.channel = slugify(channel, '');
|
if (channel) release.channel = slugify(channel, '');
|
||||||
|
|
|
@ -72,7 +72,7 @@ async function scrapeScene({ query }, url, site) {
|
||||||
release.title = query.q('.content-pane-title h2', true);
|
release.title = query.q('.content-pane-title h2', true);
|
||||||
release.description = query.q('.content-pane-column div', true);
|
release.description = query.q('.content-pane-column div', true);
|
||||||
|
|
||||||
release.date = query.q('.date', 'MMM D, YYYY');
|
release.date = query.date('.date', 'MMM D, YYYY');
|
||||||
|
|
||||||
release.actors = query.all('.content-pane-performers .model', true);
|
release.actors = query.all('.content-pane-performers .model', true);
|
||||||
release.tags = query.all('.categories a', true);
|
release.tags = query.all('.categories a', true);
|
||||||
|
@ -134,12 +134,6 @@ async function fetchUpcoming(site) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
||||||
async function fetchScene(url, site) {
|
|
||||||
const res = await qu.get(url);
|
|
||||||
|
|
||||||
return res.ok ? scrapeScene(res.item, url, site) : res.status;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function fetchProfile({ name: actorName }, { site }) {
|
async function fetchProfile({ name: actorName }, { site }) {
|
||||||
const firstLetter = actorName.charAt(0).toLowerCase();
|
const firstLetter = actorName.charAt(0).toLowerCase();
|
||||||
const origin = slugUrlMap[site.slug] || site.url;
|
const origin = slugUrlMap[site.slug] || site.url;
|
||||||
|
@ -164,6 +158,6 @@ async function fetchProfile({ name: actorName }, { site }) {
|
||||||
module.exports = {
|
module.exports = {
|
||||||
fetchLatest,
|
fetchLatest,
|
||||||
fetchUpcoming,
|
fetchUpcoming,
|
||||||
fetchScene,
|
|
||||||
fetchProfile,
|
fetchProfile,
|
||||||
|
scrapeScene,
|
||||||
};
|
};
|
||||||
|
|
|
@ -251,6 +251,8 @@ async function fetchLatest(entity, page, options) {
|
||||||
.orderByRaw('random()')
|
.orderByRaw('random()')
|
||||||
.limit(Math.floor(Math.random() * 10) + 1);
|
.limit(Math.floor(Math.random() * 10) + 1);
|
||||||
|
|
||||||
|
// const poster = 'sfw/kittens/thumbs/iNEXVlX-RLs.jpeg';
|
||||||
|
|
||||||
release.poster = `http://${config.web.host}:${config.web.port}/img/${poster}?id=${nanoid()}`; // ensure source is unique
|
release.poster = `http://${config.web.host}:${config.web.port}/img/${poster}?id=${nanoid()}`; // ensure source is unique
|
||||||
release.photos = photos.map(photo => `http://${config.web.host}:${config.web.port}/img/${photo}?id=${nanoid()}`);
|
release.photos = photos.map(photo => `http://${config.web.host}:${config.web.port}/img/${photo}?id=${nanoid()}`);
|
||||||
}
|
}
|
||||||
|
|