share.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. var express = require('express');
  2. var router = express.Router();
  3. const utils = require('../../libs/utils');
  4. const config = require('../../config/app');
  5. const translate = require('../../config/translate');
  6. // deeplink share 专属页路由
  7. router.get('/:id', function (req, res, next) {
  8. (async function () {
  9. let id = req.params.id;
  10. utils.validators.validateId(id);
  11. let lang = utils.lang.ensureLanguage(req.query.lang);
  12. let host = config.cdnHost ?? config.resHost;
  13. let imageUrl = `${host}/thumbs/coloring-page/work/480/${id}.webp`;
  14. let applink = `https://art.pcoloring.com${req.originalUrl}`;
  15. let downlink = `https://pcoloring.com/anc/`;
  16. const userAgent = req.headers['user-agent'];
  17. console.log('User-Agent:', userAgent);
  18. if (userAgent) {
  19. const ua = userAgent.toLowerCase();
  20. if (ua.includes('iphone') || ua.includes('ipad') || ua.includes('ipod')) {
  21. downlink = 'itms-apps://itunes.apple.com/app/id1575480118';
  22. } else if (ua.includes('android')) {
  23. downlink = 'https://play.google.com/store/apps/details?id=com.pcoloring.art.puzzle.color.by.number';
  24. }
  25. }
  26. let data = {
  27. id,
  28. imageUrl,
  29. applink,
  30. downlink,
  31. lang,
  32. translate,
  33. }
  34. // 渲染EJS模板到内存中
  35. res.render('v2/share', data, async (err, html) => {
  36. if (err) {
  37. // 如果渲染出错,调用next()传递错误
  38. return next(err);
  39. }
  40. res.send(html);
  41. });
  42. })().catch(next);
  43. });
  44. module.exports = router;