恭喜 List("@xcjx", "@chocolatesir", "@lnomve", "@funky", "@wenning", "@magicsilence") 中奖。请告诉我你们的联系方式。我的邮箱 MyV2EXNickname AT
zoho.com 。完整的抽奖代码:
```
@ repl.history.foreach(println)
import $ivy.`com.lihaoyi::requests:0.1.4`
import $ivy.`org.json4s::json4s-jackson:3.5.2`
import org.json4s.jackson.JsonMethods.parse
import org.json4s._
import org.json4s.JsonDSL._
import scala.util.Random
// 一些常量
val url = "
api/replies/show.json?topic_id=493356"
val numberOfWinners = 6
// 从 V2EX 获取数据
val source = requests.get(url)
// 解析 JSON,获取所有参与抽奖的用户
val json = parse(source.text)
case class Profile(username: String, github: String)
case class Member(member: Profile)
val members = json.extract[List[Member]].map(_.member.username).distinct
// 抽奖
Random.shuffle(members).take(numberOfWinners)
```
参考了这个 Python 版本的代码
/raw/5cda96d8fb26e5e49e0a20b51b9514f87bf0ff68/
mytest.py 。最后手动检查一下大家的 profile 是否符合要求。
```
import random
import requests
url = '
api/replies/show.json?topic_id=490659'# 中奖人数
numberOfWinners = 4
if __name__ == '__main__':
source = requests.get(url)
names_list = []
for item in source.json():
username = str(item['member']['username'])
names_list.append(str(item['member']['username']))
# print("list length: " + str(len(names_list)))
names_set = set(names_list)
totalMembersCount = len(names_set)
print("本次参与活动人数为:{}".format(totalMembersCount))
print("-" * 20)
for name in names_set:
print(name)
print("-" * 20)
luckyMembers = random.sample(list(names_set), numberOfWinners)
print("恭喜中奖用户:" + str(luckyMembers))
```
大家可以对比感受一下 Scala 和 Python 的一些异同点。