万籁俱寂,万字将成。
刘耀文
Stay hungry. Stay foolish.
© 2024-2026
Powered by Mix Space&
余白 / Yohaku
.
正在被0人看爆
关于
关于本站关于我
更多
时间线友链
联系
写留言发邮件 ↗
刘耀文
Stay hungry. Stay foolish.
链接
关于本站·关于我·时间线·友链·写留言·发邮件
© 2024-2026 Powered by Mix Space&
余白 / Yohaku
.
正在被0人看爆
赣ICP备2024031666号
RSS 订阅·站点地图·
··|
RSS 订阅·站点地图·|··|赣ICP备2024031666号
纸白微明,未成篇章。

shiro 备忘

w多云w开心w164w1w
AI·GEN

关键洞察

shiro 备忘

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • 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中

      CodeBlock Loading...

      注意上面的proxy_set_header Host liuyaowen.top;必须修改,不然你会出现Please enable cookies. Error 1001页面

    • 最后访问你的笔记时,发现,欸怎么跨域了,因为你cloudflare中的域名和你网站的域名不一样,所以需要配置跨域,在cloudflare设配置你的域名,添加转换规则

      image-20240821010506038

      image-20240821010506038

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

    YAML
    location /api/tmdb {
        proxy_pass http://liuyaowen.top;
        proxy_set_header Host liuyaowen.top;
    
    }