花半小时用豆包Marscode 和 Supabase免费部署了一个远程工作的导航站

以下是「 豆包MarsCode 体验官」优秀文章,作者谦哥。

🚀 项目地址:remotejobs.justidea.cn/

🚀 项目截图:

file

数据处理

感谢开源项目:https://github.com/remoteintech/remote-jobs

网站信息获取:把项目里 md 文件里的网站列表抓取保存到 supabase 的数据库里(这一步可以在本地完成)

import fetch from 'node-fetch';
import {
   
    createClient } from '@supabase/supabase-js';

const SUPABASE_URL = '';
const SUPABASE_KEY = '';
const supabase = createClient(SUPABASE_URL, SUPABASE_KEY);

async function fetchData() {
   
   
  const response = await fetch('https://raw.githubusercontent.com/remoteintech/remote-jobs/main/README.md');
  const text = await response.text();

  // 解析 README.md 内容,提取 name, website, region
  const jobs = parseJobs(text);

  // 将数据存储到 Supabase
  for (const job of jobs) {
   
   
    await supabase
      .from('remote-jobs')
      .insert(job);
  }
}

function parseJobs(mdText) {
   
   
  const lines = mdText.split('\n');
  const jobs = [];
  lines.forEach(line => {
   
   
    // 例子:'[Bitovi](/company-profiles/bitovi.md) | https://bitovi.com/ | Worldwide'
    const match = line.match(/\[([^\]]+)\]\(([^)]+)\)\s*\|\s*(https?:\/\/[^\s|]+)\s*\|\s*(.+)/);
    
    if (match) {
   
   
      const [, name, ,website, region] = match;
      jobs.push({
   
    name, website, region });
    }
  });
  return jobs;
}
fetchData();

网站截图: 把上一步获取到的网址用 puppeteer 循环截图,最后上传到 supabase 的 storage 里

import puppeteer from 'puppeteer'
import fs from 'fs'
import {
   
    createClient } from '@supabase/supabase-js'

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值