Added origin config to use in summaries. Added link property to summaries for local traxxx URL.

This commit is contained in:
DebaucheryLibrarian 2025-11-14 22:52:16 +01:00
parent 0dd4bcc7fe
commit 8f145e926e
7 changed files with 17 additions and 8 deletions

4
assets/markdown.yaml Normal file
View File

@ -0,0 +1,4 @@
- wrap: ['[Scene details](', ')']
items:
- link
- text: 'on [traxxx](https://traxxx.me/).'

View File

@ -126,7 +126,7 @@ const changed = ref(false);
const templateName = ref(initialTemplate?.name || `custom_${Date.now()}`);
function getSummary() {
return processSummaryTemplate(template.value, props.release);
return processSummaryTemplate(template.value, props.release, pageContext.env);
}
const summary = ref(getSummary());

View File

@ -1,5 +1,6 @@
module.exports = {
title: 'traxxx',
origin: 'http://localhost:5100', // only used for absolute links
database: {
owner: {
host: '127.0.0.1',

View File

@ -431,7 +431,7 @@ function selectTemplate(templateId, allowFallback = true) {
const template = targetTemplate || templates[0];
summary.value = processSummaryTemplate(template.template, scene);
summary.value = processSummaryTemplate(template.template, scene, env);
selectedTemplate.value = template.id;
cookies.set('selectedTemplate', String(templateId));

View File

@ -104,7 +104,9 @@ const now = new Date();
const mockupRelease = {
id: 0,
title: 'Nut For Human Consumption',
url: 'https://traxxx.me/scene/0/nut-for-human-consumption',
slug: 'nut-for-human-consumption',
link: 'https://traxxx.me/scene/0/nut-for-human-consumption',
url: 'https://example.com/video/12345/nut-for-human-consumption',
date: now,
effectiveDate: now,
createdAt: new Date(now.getFullYear(), 0, 1),

View File

@ -39,6 +39,7 @@ export default async function mainHandler(req, res, next) {
allowSignup: config.auth.signup,
maxMatches: config.database.manticore.maxMatches,
maxAggregateSize: config.database.manticore.maxAggregateSize,
origin: config.origin,
media: config.media,
psa: config.psa,
links: config.links,

View File

@ -13,6 +13,7 @@ const genderMap = {
};
const propProcessors = {
link: (sceneInfo, _options, env) => `${env.origin}/scene/${sceneInfo.id}/${sceneInfo.slug}`,
channel: (sceneInfo) => sceneInfo.channel?.name || sceneInfo.network?.name,
network: (sceneInfo) => sceneInfo.network?.name || sceneInfo.channel?.name,
actors: (sceneInfo, options) => {
@ -66,7 +67,7 @@ function curateValue(value, item) {
.join(item.delimit || ', ');
}
function traverseTemplate(chain, release, { delimit = ' ' } = {}) {
function traverseTemplate(chain, release, env, { delimit = ' ' } = {}) {
const results = chain.reduce((result, item) => {
const keys = typeof item === 'string' ? item : item.key;
@ -84,14 +85,14 @@ function traverseTemplate(chain, release, { delimit = ' ' } = {}) {
if (keys) {
const value = keys.split('|').reduce((acc, key) => acc
|| propProcessors[key]?.(release, typeof item === 'string' ? { key } : item)
|| propProcessors[key]?.(release, typeof item === 'string' ? { key } : item, env)
|| release[key], null);
return result.concat(curateValue(value, item));
}
if (item.items) {
const group = traverseTemplate(item.items, release, {
const group = traverseTemplate(item.items, release, env, {
delimit: item.delimit,
});
@ -109,8 +110,8 @@ function traverseTemplate(chain, release, { delimit = ' ' } = {}) {
return '';
}
export default function processSummaryTemplate(template, release) {
export default function processSummaryTemplate(template, release, env) {
const chain = parse(template);
return traverseTemplate(chain, release);
return traverseTemplate(chain, release, env);
}