share.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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/done/480/${id}.webp`;
  14. let applink = `https://art.pcoloring.com${req.originalUrl}`;
  15. let downlink = `https://pcoloring.com/anc/`;
  16. let openapplink = applink;
  17. if (!req.originalUrl.includes('check')) {
  18. openapplink = applink.concat(req.originalUrl.includes('?') ? '&check=1' : '?check=1');
  19. }
  20. const userAgent = req.headers['user-agent'];
  21. console.log('User-Agent:', userAgent);
  22. if (userAgent) {
  23. const ua = userAgent.toLowerCase();
  24. if (ua.includes('iphone') || ua.includes('ipad') || ua.includes('ipod')) {
  25. downlink = 'itms-apps://itunes.apple.com/app/id1575480118?utm_source=share';
  26. } else if (ua.includes('android')) {
  27. downlink = 'https://play.google.com/store/apps/details?id=com.pcoloring.art.puzzle.color.by.number&utm_source=share';
  28. }
  29. }
  30. let data = {
  31. id,
  32. imageUrl,
  33. applink,
  34. downlink,
  35. openapplink,
  36. lang,
  37. translate,
  38. }
  39. // 渲染EJS模板到内存中
  40. res.render('v2/share', data, async (err, html) => {
  41. if (err) {
  42. // 如果渲染出错,调用next()传递错误
  43. return next(err);
  44. }
  45. res.send(html);
  46. });
  47. })().catch(next);
  48. });
  49. module.exports = router;