shiro 备忘

AI 生成的摘要

shiro 备忘

shiro 升级

mkdir shiro
cd shiro
wget https://raw.githubusercontent.com/Innei/Shiro/main/docker-compose.yml
wget https://raw.githubusercontent.com/Innei/Shiro/main/.env.template .env

vim .env # 修改你的 ENV 变量
docker compose up -d

docker compose pull # 后续更新镜像

TMDB请求无法访问问题

解决办法1

我觉得最简单的解决办法为,给服务器添加代理,但是我没有选择这种,给服务器维护一套代理规则和订阅比较麻烦

解决办法2

利用CloudFlare中的worker将TMDB的请求进行代理,原理就是将发往TMDB的请求先发送到CloudFlare,让CloudFlare为我们请求数据,因为CloudFlare是没有被墙的,但是默认域名workers.dev是被墙的,所以需要绑定自己的域名

  • 注册域名

使用namesilo注册域名,这个网上有很多教程,然后转移到cloudflare中,重复教程就不讲了;

  • 在CloudFlare中创建worker,这里我魔改了innei大佬的代码,将代码部署到worker中
export default {
  async fetch(request) {
    // 从请求中解析路径和查询参数
    const url = new URL(request.url);
    const pathname = url.pathname.split('/').slice(3);
    const query = url.searchParams;

    query.delete('all'); // 删除不需要的查询参数

    // 设置允许的路径类型和长度
    const allowedTypes = ['tv', 'movie'];
    const allowedPathLength = 2;
    if (
      pathname.length > allowedPathLength ||
      !allowedTypes.includes(pathname[0])
    ) {
      return new Response('This request is not allowed', { status: 400 });
    }

    const searchString = query.toString();

    // TMDB API 密钥
    const TMDB_API_KEY = "************************"; /

    // 检查 API 密钥是否存在
    if (!TMDB_API_KEY) {
      return new Response('TMDB_API_KEY is not set', { status: 500 });
    }

    // 构建 TMDB API 的完整 URL
    const apiUrl = `https://api.themoviedb.org/3/${pathname.join('/')}${
      searchString ? `?${searchString}&api_key=${TMDB_API_KEY}` : `?api_key=${TMDB_API_KEY}`
    }`;

    try {
      // 设置请求头
      const headers = new Headers();
      headers.set(
        'User-Agent',
        'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko), Shiro',
      );

      // 发起请求到 TMDB API
      const response = await fetch(apiUrl, { headers });
      const data = await response.json();

      // 返回响应
      return new Response(JSON.stringify(data), {
        headers: { 'Content-Type': 'application/json' },
      });
    } catch (error) {
      return new Response('Error fetching data', { status: 500 });
    }
  }
}

弄好后大改是这个界面

image-20240821005837320

image-20240821005837320
  • 将步骤1的域名绑定到当前worker中,弄好后大改是这样
image-20240821005940495

image-20240821005940495
  • 现在就可以通过自定义域名访问TMDBAPI
https://xxxxxx.xxx/api/tmdb/movie/1299537?language=zh-CN
  • 将shiro中的访问地址反向代理到刚刚部署好的worker中

    location /api/tmdb {
        proxy_pass http://liuyaowen.top;
        proxy_set_header Host liuyaowen.top;
    
    }
    注意上面的proxy\_set\_header Host liuyaowen.top;必须修改,不然你会出现**Please enable cookies. Error 1001**页面
  • 最后访问你的笔记时,发现,欸怎么跨域了,因为你cloudflare中的域名和你网站的域名不一样,所以需要配置跨域,在cloudflare设配置你的域名,添加转换规则

    image-20240821010506038

    image-20240821010506038

好了,你可以愉快的使用TMDB的LinkCard组件了

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...