如果想在 V2EX 获得更好的推广效果,欢迎了解 PRO 会员机制:
https://www.v2ex.com/pro/about

如果你经常使用铜币置顶主题,持有 V2EX Solana Token 会在每日签到时获得额外铜币:
https://www.v2ex.com/solana
zzerd
V2EX  ›  推广

自已家的赣南脐橙开卖,给 v 友抽几箱

  •  
  •   zzerd · Nov 22, 2024 · 23878 views
    This topic created in 712 days ago, the information mentioned may be changed or developed.

    抽奖规则和去年一样取上证指数和最后指定日期最高楼。上一年的帖子/996196

    今年取 2024-11-22 上证指数收盘价作为随机数种子,有效抽奖用户为 2024-11-22 帖子回复最高楼层前的所有所有人

    去年的抽奖代码没有去重所有回复多个的用户中的概率高一点点,今年我用 ai 糊了一下。代码如下

    const UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36';
    
    async function handleRequest(tid, num, seedParam, maxFloor) {
        if (!tid || isNaN(num)) {
            console.error('请提供有效的帖子 ID 和抽奖人数');
            return;
        }
        console.log(`Fetching OP for TID: ${tid}`);
        const op = await getOp(tid);
        console.log(`OP: ${op}`);
        console.log(`Fetching all users for TID: ${tid}`);
        const uniqueUserList = await getAllUser(tid, maxFloor);
        console.log(`Unique Users: ${uniqueUserList.join(', ')}`);
        const filteredUserList = uniqueUserList.filter(user => user !== op);
        console.log(`Filtered Users: ${filteredUserList.join(', ')}`);
        const userCount = filteredUserList.length;
        console.log(`User Count: ${userCount}`);
        const seed = seedParam !== null ? seedParam : userCount.toString();
        console.log(`Seed: ${seed}`);
        console.log(`Max Floor: ${maxFloor}`);
        const combinedSeed = `${seed}-${maxFloor}`;
        console.log(`Combined Seed: ${combinedSeed}`);
        const shuffledList = shuffle(filteredUserList, combinedSeed);
        console.log(`Shuffled Users: ${shuffledList.join(', ')}`);
        const result = `符合条件的用户共有 ${filteredUserList.length} 人
    抽奖结果:
    ${shuffledList.slice(0, num).join('\n')}`;
        console.log(result);
    }
    
    async function getOp(tid) {
        const url = `https://www.v2ex.com/amp/t/${tid}`;
        console.log(`Fetching OP URL: ${url}`);
        const response = await fetch(url, { headers: { 'User-Agent': UA } });
        if (!response.ok) {
            console.log(`Failed to fetch OP: ${response.status} ${response.statusText}`);
            return null;
        }
        const text = await response.text();
        const match = /<div class="topic_author">[\s\S]*?<amp-img[^>]+alt="([^"]+)"[\s\S]*?<\/div>/.exec(text);
        console.log(`OP Match: ${match ? match[1] : null}`);
        return match ? match[1].trim() : null;
    }
    
    async function getUserList(url, startIndex, endIndex) {
        console.log(`Fetching User List URL: ${url}`);
        const response = await fetch(url, { headers: { 'User-Agent': UA } });
        if (!response.ok) {
            console.log(`Failed to fetch User List: ${response.status} ${response.statusText}`);
            return [];
        }
        const text = await response.text();
        const replyItemRegex = /<div class="reply_item">([\s\S]*?)<\/div>/g;
        let replyItemMatch;
        const users = [];
        let currentIndex = startIndex || 0;
        while ((replyItemMatch = replyItemRegex.exec(text)) !== null) {
            if (endIndex !== undefined && currentIndex >= endIndex) {
                break;
            }
            const replyItem = replyItemMatch[1];
            const altRegex = /<amp-img[^>]+alt="([^"]+)"[^>]*>/g;
            const altMatch = altRegex.exec(replyItem);
            if (altMatch) {
                users.push(altMatch[1]);
            }
            currentIndex++;
        }
        console.log(`Matches: ${users.join(', ')}`);
        return users;
    }
    
    async function getAllPages(tid) {
        const url = `https://www.v2ex.com/amp/t/${tid}`;
        console.log(`Fetching All Pages URL: ${url}`);
        const response = await fetch(url, { headers: { 'User-Agent': UA } });
        if (!response.ok) {
            console.log(`Failed to fetch All Pages: ${response.status} ${response.statusText}`);
            return [];
        }
        const text = await response.text();
        const pageCountMatch = /\u5171 (\d+) \u9875/.exec(text);
        const pageCount = pageCountMatch ? parseInt(pageCountMatch[1], 10) : 1;
        console.log(`Page Count: ${pageCount}`);
        const pages = [];
        for (let i = 1; i <= pageCount; i++) {
            pages.push(`${url}/${i}`);
        }
        return pages;
    }
    
    async function getAllUser(tid, maxFloor) {
        const pages = await getAllPages(tid);
        console.log(`Pages: ${pages.join(', ')}`);
        let allUsers = [];
        let currentFloor = 0;
        for (let page of pages) {
            const startIndex = currentFloor;
            const endIndex = maxFloor !== undefined ? maxFloor : undefined;
            const users = await getUserList(page, startIndex, endIndex);
            allUsers = allUsers.concat(users);
            currentFloor += users.length;
            if (endIndex !== undefined && currentFloor >= endIndex) {
                break;
            }
        }
        const uniqueUsers = [];
        const seen = new Set();
        for (const user of allUsers) {
            if (!seen.has(user)) {
                uniqueUsers.push(user);
                seen.add(user);
            }
        }
        console.log(`Unique Users: ${uniqueUsers.join(', ')}`);
        return uniqueUsers;
    }
    
    function shuffle(array, seed) {
        const rng = lcg(seed);
        console.log(`Shuffling with Seed: ${seed}`);
        for (let i = array.length - 1; i > 0; i--) {
            const j = Math.floor(rng() * (i + 1));
            console.log(`Shuffling: i=${i}, j=${j}`);
            if (array[i] !== undefined && array[j] !== undefined) {
                [array[i], array[j]] = [array[j], array[i]];
            } else {
                console.log(`Error: array[i] or array[j] is undefined. i=${i}, j=${j}, array[i]=${array[i]}, array[j]=${array[j]}`);
            }
        }
        return array;
    }
    
    function lcg(seed) {
        let state = hashCode(seed);
        console.log(`LCG State: ${state}`);
        const a = 1664525;
        const c = 1013904223;
        const m = Math.pow(2, 32);
        return function() {
            state = (a * state + c) % m;
            console.log(`LCG Next: ${state / m}`);
            return state / m;
        }
    }
    
    function hashCode(str) {
        l
    ![]( https://i.v2ex.co/VlpwI4y5.jpeg)
    et hash = 0;
        for (let i = 0; i < str.length; i++) {
            const char = str.charCodeAt(i);
            hash = ((hash << 5) - hash) + char;
            hash |= 0;
        }
        return Math.abs(hash);
    }
    
    // Example usage:
    handleRequest('123456', 3, seed123, 10);
    这里的 '123456' 是帖子 ID ,3 是抽奖人数,'seed123' 是种子(可选),10 是最大楼层(可选)。
    在 V2EX 网站里用浏览器 consele 运行就可以
    

    为了方便 v 友进行类似抽奖我糊了一个 cloudflare work 来使用直接请求 https://v2ex.240801.xyz/?tid=12345&num=10&seed=12345&maxFloor=11(大佬别打,刚装上访问不了可能 cf 路由没设置好)这里的参数说明为 tid 为帖子 id num 为中奖人数 seed 为随机数种子 maxFloor 为最高楼层

    下面是橙子链接请大家按需购买

    ps 甜度不用担心,今年我们县的都甜。现摘现发没有清洗打腊,只要老家不下雨一般下单第二天就发货。室温 20 度以内还是很耐放的两三个星期没啥问题。有个卖橙子的微信群想加的加我微信 console.log(atob('enF3MjAwOA=='))拉群

    Supplement 1  ·  Nov 22, 2024

    今年的橙子我也还没吃上,这图都是前段时间家时机人拍的现在橙子应该黄一些了。

    为啥这次的代码块没有高亮。。。代码看起来多,是因为ai 写的取回复用户数没用v站的api,下面是去除相关爬虫代码后的代码:https://gist.github.com/zzerding/d80d25149a74c0dd96516d949e9e52b7

    cloudflare work我会改为api形式代码后续在上面的gist里更新

    晚上12点以后可根据规则自行开奖

    Supplement 2  ·  Nov 22, 2024

    统一回复一下:

    橙子大约9分甜一分酸,每个人的口感不一样可以进群问问去年的v友

    可以发顺丰。晚上熬夜开的团图片先错了,里面有顺丰的商品链接大约江西周边9省53r/5kg

    好了不摸鱼了领导催进度了

    Supplement 3  ·  Nov 23, 2024

    感谢大家的支持,因为是现摘发货一天也就发300斤,受天气影响22号下单的会在24或者25号发完,先下单的先发,介意的可以申请退款。

    抽奖

    使用node自行开奖

    看到515楼我知道这个正则表达式取用户非常不可靠(但是当前代码好像没有注入成功),所以改用v2ex api。 使用方式

    恭喜以下用户

    @AchieveHF @xwh @ruiy @kuzhan 可以回复联系方式或者带主页截图找我领奖

    545 replies  •  2025-11-24 08:52:04 +08:00
    1  2  3  4  5  6  
    ❮ ❯
    puzzle9
    puzzle9
    Nov 22, 2024
    1
    尝试中奖 体会 v 友的开心
    akafeng
    akafeng
    Nov 22, 2024
    2
    做个分母
    YiCherish
    YiCherish
    Nov 22, 2024 via iPhone
    3
    支持
    WeaPoon
    WeaPoon
    Nov 22, 2024
    4
    分子试试~
    leo72638
    leo72638
    Nov 22, 2024 via iPhone
    5
    试试
    gugulaliqi
    gugulaliqi
    Nov 22, 2024 via Android
    6
    碰运气
    243205964
    243205964
    Nov 22, 2024
    7
    抽奖代吗越来越复杂了
    Ceylan
    Ceylan
    Nov 22, 2024 via Android
    8
    试试
    AppxLite
    AppxLite
    Nov 22, 2024 via Android
    9
    参与一下
    RobertLyu
    RobertLyu
    Nov 22, 2024
    10
    我来成为分子!
    zsedc
    zsedc
    Nov 22, 2024 via iPhone
    11
    分母
    owouqu
    owouqu
    Nov 22, 2024 via iPhone
    12
    试试
    d1456198
    d1456198
    Nov 22, 2024
    13
    ➕1
    youbaoer
    youbaoer
    Nov 22, 2024 via Android
    14
    分母+1
    Mrabbit
    Mrabbit
    Nov 22, 2024
    15
    重在参与,爱吃脐橙
    abcgoodwei
    abcgoodwei
    Nov 22, 2024
    16
    重在参与,爱吃脐橙
    c9c2ane
    c9c2ane
    Nov 22, 2024
    17
    有优惠吗
    monstericeer
    monstericeer
    Nov 22, 2024
    18
    +1 !
    ch20191
    ch20191
    Nov 22, 2024
    19
    我来组成弹幕~~~~~~~~~~~~~~欧皇爱我~~~~~~~~~~~~~
    dmdouo12
    dmdouo12
    Nov 22, 2024
    20
    +1
    junan
    junan
    Nov 22, 2024
    21
    没中过奖的来试试
    Woodrow
    Woodrow
    Nov 22, 2024
    22
    争做分子
    lee0508
    lee0508
    Nov 22, 2024
    23
    重在参与,爱吃脐橙
    7a98kZ6v0WQs5ZO1
    7a98kZ6v0WQs5ZO1
    Nov 22, 2024
    24
    我是分子
    gscsnm
    gscsnm
    Nov 22, 2024
    25
    我想当分子!
    tycyber
    tycyber
    Nov 22, 2024
    26
    参与一下。
    zsysmileing
    zsysmileing
    Nov 22, 2024
    27
    重在参与
    likai
    likai
    Nov 22, 2024 via Android
    28
    分母还是分子
    shadowsll
    shadowsll
    Nov 22, 2024
    29
    重在参与,看着不错
    hill001
    hill001
    Nov 22, 2024 via Android
    30
    参与一下
    biumall
    biumall
    Nov 22, 2024
    31
    老乡支持
    itiao
    itiao
    Nov 22, 2024
    32
    应当是我
    rockddd
    rockddd
    Nov 22, 2024
    33
    支持一下,每年要买好多箱
    hucw21750
    hucw21750
    Nov 22, 2024
    34
    跟了一单,祝好卖~
    iLmessi
    iLmessi
    Nov 22, 2024
    35
    凑个热闹
    superdong
    superdong
    Nov 22, 2024
    36
    预祝大麦
    farah9
    farah9
    Nov 22, 2024 via iPhone
    37
    +1
    BrookO
    BrookO
    Nov 22, 2024
    38
    支持一下
    VampireDemon
    VampireDemon
    Nov 22, 2024
    39
    万一抽到了呢
    liujavamail
    liujavamail
    Nov 22, 2024
    40
    支持一下
    Hidetodong
    Hidetodong
    Nov 22, 2024
    41
    试一下!!
    roma
    roma
    Nov 22, 2024
    42
    +1
    yanyue526
    yanyue526
    Nov 22, 2024
    43
    你就说甜不甜吧
    wlongs
    wlongs
    Nov 22, 2024
    44
    try
    dongyulin353
    dongyulin353
    Nov 22, 2024
    45
    支持一下
    ming7435
    ming7435
    Nov 22, 2024
    46
    你就说甜不甜吧
    thank001
    thank001
    Nov 22, 2024
    47
    重在参与
    godFree
    godFree
    Nov 22, 2024
    48
    分子 +1 +1
    zoyao
    zoyao
    Nov 22, 2024
    49
    参与下,还没在 v2 中过奖
    yaoliyc
    yaoliyc
    Nov 22, 2024
    50
    加一
    Emi1
    Emi1
    Nov 22, 2024
    51
    分母++
    hataki77
    hataki77
    Nov 22, 2024
    52
    重在参与,分子分母+1
    Vipcw95
    Vipcw95
    Nov 22, 2024
    53
    +1
    ppllss
    ppllss
    Nov 22, 2024
    54
    分子试试~
    fuchish112
    fuchish112
    Nov 22, 2024
    55
    分母
    xR13zp0h67njQr2S
    xR13zp0h67njQr2S
    Nov 22, 2024
    56
    做个分子
    lianleisuper66
    lianleisuper66
    Nov 22, 2024
    57
    试试😁
    hkiJava
    hkiJava
    Nov 22, 2024
    58
    试试就试试吧
    usboy
    usboy
    Nov 22, 2024
    59
    分子
    stormwindcity
    stormwindcity
    Nov 22, 2024
    60
    分母+1
    yryc
    yryc
    Nov 22, 2024
    61
    分子+1
    luckyboy6
    luckyboy6
    Nov 22, 2024
    62
    1
    d873139022
    d873139022
    Nov 22, 2024
    63
    参与一下
    smy14520
    smy14520
    Nov 22, 2024
    64
    分子分子++
    CooperZhuang
    CooperZhuang
    Nov 22, 2024
    65
    哈哈哈咱也参与一下,顺祝商祺
    Davy
    Davy
    Nov 22, 2024
    66
    分母
    hh7418695
    hh7418695
    Nov 22, 2024
    67
    做个分母
    imherer
    imherer
    Nov 22, 2024
    68
    支持
    amanisheir
    amanisheir
    Nov 22, 2024
    69
    华农的竹鼠中暑了,快去帮帮他
    oouz
    oouz
    Nov 22, 2024
    70
    参与
    banli
    banli
    Nov 22, 2024
    71
    +1
    ik
    ik
    Nov 22, 2024 via iPhone
    72
    分子分子
    kalthus
    kalthus
    Nov 22, 2024
    73
    分子
    BugFree
    BugFree
    Nov 22, 2024
    74
    试试
    Zxien
    Zxien
    Nov 22, 2024
    75
    分子!
    jjl19960910
    jjl19960910
    Nov 22, 2024 via Android
    76
    我来组成臀部
    tyhsun
    tyhsun
    Nov 22, 2024
    77
    支持支持
    dys0327
    dys0327
    Nov 22, 2024
    78
    分子
    happyxhw101
    happyxhw101
    Nov 22, 2024
    79
    我是大学生😤
    linchen514
    linchen514
    Nov 22, 2024
    80
    试试
    hugo7
    hugo7
    Nov 22, 2024 via iPhone
    81
    +1
    wukaige
    wukaige
    Nov 22, 2024
    82
    观世音菩萨保佑
    yrk20212021
    yrk20212021
    Nov 22, 2024
    83
    分子
    wupher
    wupher
    Nov 22, 2024
    84
    分子
    flashmamba
    flashmamba
    Nov 22, 2024
    85
    111
    particlec
    particlec
    Nov 22, 2024
    86
    我要吃橘子
    dany663399
    dany663399
    Nov 22, 2024
    87
    分子
    qw3rty
    qw3rty
    Nov 22, 2024
    88
    我来成为分子
    mkstring
    mkstring
    Nov 22, 2024
    89
    分母
    williamcheen
    williamcheen
    Nov 22, 2024
    90
    +1
    dai201617
    dai201617
    Nov 22, 2024
    91
    分子
    cxilife
    cxilife
    Nov 22, 2024
    92
    做个分母
    zii4914
    zii4914
    Nov 22, 2024
    93
    重在参与
    zacheryWu
    zacheryWu
    Nov 22, 2024
    94
    分子
    ssssssssssssssss
    ssssssssssssssss
    Nov 22, 2024
    95
    分母+1
    ruiy
    ruiy
    Nov 22, 2024
    96
    试试,,,
    zimonianhua
    zimonianhua
    Nov 22, 2024 via Android
    97
    分母+1
    scal
    scal
    Nov 22, 2024
    98
    我们这种爱媛、耙耙柑、沃柑。
    WalterHs
    WalterHs
    Nov 22, 2024
    99
    为啥用邮政快递啊,太慢了啊。
    intoext
    intoext
    Nov 22, 2024
    100
    重在参与!
    1  2  3  4  5  6  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1925 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 251ms · UTC 16:51 · PVG 00:51 · LAX 08:51 · JFK 11:51
    ♥ Do have faith in what you're doing.