Skip to content

Instantly share code, notes, and snippets.

@AiziChen
Created January 6, 2022 03:24
Show Gist options
  • Save AiziChen/762dc36825d68a319fcf2368963f4528 to your computer and use it in GitHub Desktop.
Save AiziChen/762dc36825d68a319fcf2368963f4528 to your computer and use it in GitHub Desktop.
开源众包最新需求列表获取
#lang racket/base
(require racket/set
net/http-easy
gregor)
(define (get-news type page)
(define rs
(get "https://zb.oschina.net/project/contractor-browse-project-and-reward"
#:params
`((applicationAreas . "")
(type . ,(number->string type))
(sortBy . "30")
(currentTime . ,(~t (now) "YYYY-MM-DD+HH:mm:ss"))
(pageSize . "5")
(currentPage . ,(number->string page)))))
(if (= 200 (response-status-code rs))
(let ([jdata (response-json rs)])
(if (= (hash-ref jdata 'code -1) 0)
(hash-ref (hash-ref jdata 'data) 'data)
(hash-ref jdata 'message)))
'request-occurred-error))
(let lp ([global-sets (set)])
(define software-news (get-news 1 1))
(define offer-news (get-news 2 1))
(define software-set
(for/set ([item software-news])
(define id (hash-ref item 'projectNo))
(define name (hash-ref item 'name))
(define cycle (hash-ref item 'cycle))
(define cycle-name (hash-ref item 'cycleName))
(define min-price (hash-ref item 'budgetMinByYuan))
(define max-price (hash-ref item 'budgetMaxByYuan))
(unless (set-member? global-sets id)
(printf "名称: ~a\n周期: ~a~a\n最小金额: ~a\n最大金额: ~a\n\n" name cycle cycle-name min-price max-price))
id))
(define offer-set
(for/set ([item software-news])
(define id (hash-ref item 'projectNo))
(define name (hash-ref item 'name))
(define cycle (hash-ref item 'cycle))
(define cycle-name (hash-ref item 'cycleName))
(define min-price (hash-ref item 'budgetMinByYuan))
(define max-price (hash-ref item 'budgetMaxByYuan))
(unless (set-member? global-sets id)
(printf "名称: ~a\n周期: ~a~a\n最小金额: ~a\n最大金额: ~a\nid:~a\n" name cycle cycle-name min-price max-price id))
id))
(define new-sets (set-union software-set offer-set))
(sleep 5)
(lp new-sets))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment