网络知识 娱乐 【玩转腾讯云】云函数定时帮我跟HR打招呼

【玩转腾讯云】云函数定时帮我跟HR打招呼

最近看很多人跑路, 所以就想着造福自己, 想去自动的在某招聘软件中跟HR打招呼, 由于买个服务器来单独配个corntab确实有点浪费, 所以就选择了云函数, 毕竟云函数的免费额度够用了

所以, 开始吧

1. 脚本编写

我使用的是NodeJS进行编写, 总共文件分为三个

  • common.js 存放公共的头部参数, 和公共方法
  • request.js 用于请求接口
  • index.js 用于云函数的触发器配置运行的文件

代码都没啥, 就是带参数请求接口

公共参数, 主要是配置请求的header

const headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36 MicroMessenger/7.0.9.501 NetType/WIFI MiniProgramEnv/Windows WindowsWechat',
  'content-type': 'application/x-www-form-urlencoded',
  mpt: '',
  platform: '',
  scene: '',
  ua: '{"model":"microsoft"}',
  v: '',
  ver: '',
  wt2: '',
  zpAppId: '',
  Referer: '',
  'Accept-Encoding': 'gzip, deflate, br'
}

function sleep (delay) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve()
    }, delay)
  })
}

exports.headers = headers

exports.sleep = sleep

接口请求, 主要就是先获取指定城市的岗位列表, 然后挨个打招呼

const got = require('got')
const fs = require('fs')
const { headers, sleep } = require('./common')

function getJobList(page = 1) {
  return got('', {
    method: 'GET',
    headers,
    searchParams: {
      appId: 10002,
      expectId: 185008765,
      sortType: 1,
      cityCode: 101020100,
      districtCode: '',
      businessCode: '',
      subwayLineId: '',
      subwayStationId: '',
      page: page,
      pageSize: 10,
      salary: '',
      degree: '',
      experience: '',
      stage: '',
      scale: '',
      industry: '',
      longitude: '',
      latitude: '',
      positionCode: ''
    }
  })
}

function addJob(jobId, lid, securityId) {
  const body = {
    appId: '',
    jobId: jobId,
    lid: lid,
    securityId: securityId
  }
  return got('', {
    method: 'POST',
    headers,
    body: new URLSearchParams(body).toString()
  }).then(res => {
    console.log(res.body)
    return res
  })
}

async function main () {
  try {
    let jobList = []
    for (let i = 1;;i++) {
      const res = await getJobList(i)
      const data = JSON.parse(res.body)
      jobList.push(...data.zpData.jobList)
      if (!data.zpData.hasMore) {
        break
      }
    }
    const asyncArr = []
    jobList.forEach(async job => {
      console.log(job.jobName)
      asyncArr.push(addJob(job.encryptJobId, job.lid, job.securityId))
    })
    Promise.all(asyncArr)
  } catch (error) {
    console.log(error)
  }
}

main()

然后就是获取触发器中附加信息的主函数, 通过获取附加信息中写的文件名, 来调用指定文件, 因为我还有发简历的文件, 所以要区分下

'use strict';
exports.main_handler = async (event, context, callback) => {
  for (const v of event["Message"].split("rn")) {
    console.log(v);
    require(`./${v}.js`)
  }
}

2. 创建云函数

直接首页搜索云函数

image.png

进入控制台

image.png

创建云函数, 创建方式选择自定义创建, 运行环境选择NodeJS, 函数代码我们直接选择上传文件夹, 方便快捷啊, 把我们的代码文件夹直接选中上传即可

image.png

注意下, 这里的超时时间可以设置长一点, 毕竟是接口请求, 还是得花点时间的, 设少了, 还没请求完成, 就给断了

image.png

接下来, 配置触发器, 选择定时触发, 我们可以选择它写死的一些时间点, 例如每一分钟, 每一天等, 也可以使用自定义触发周期, 自己配置cron表达式, 例如每天晚上九点就是0 0 9 * * * *

最后, 附加信息选择, 然后写我们要跑的文件名, 即request

image.png
image.png

点击完成即可创建云函数

随后我们可以在列表中, 查看到我们的云函数, 进入详情, 也可以修改代码并部署

3. 效果啊

image.png
image.png