사전 설명
블로그를 만들었으니, 여기에 제가 작성한 여러 가지 간단한 코드들을 올려도 될 것 같습니다. 모두 간단해서 Github에 각각 별도의 저장소를 만들 생각은 없습니다.
여기서는 먼저 '빌리빌리 만화 출석체크 및 복지권 교환'을 업데이트하고, 앞으로 시간이 나면 더 작성할 예정입니다.
동기
빌리빌리 만화는 매일 출석체크를 통해 일정 포인트를 받을 수 있으며, 포인트는 만화 구매에 사용할 수 있는 복지권으로 교환할 수 있습니다.
하지만 가장 혜택이 좋은 100포인트는 매일 0시에 한정 수량만 지급됩니다.
이를 위해 저는 NoneBot2와 bilibili-api를 기반으로, SocialSisterYi/bilibili-API-collect를 참고하여 두 개의 플러그인을 작성했습니다. 각각 매일 출석체크로 포인트를 받고, 매일 0시에 복지권을 선점하는 용도이며, 현재까지 매우 안정적으로 작동하고 있습니다.
NoneBot2는 사용하기 비교적 간단하며, 저도 이를 기반으로 몇 가지 플러그인을 개발했는데, 시간이 나면 공유할 예정입니다.
구현된 효과는 다음과 같습니다:
성공률이 너무 높아서 푸시가 전혀 필요 없는 것 같습니다
만일을 대비해 그래도 푸시는 해두겠습니다
코드
get_sessdata.py
로그인 정보를 가져오고 갱신하는 데 사용됩니다
여기서 cookie_path는 다음 5개의 키를 포함하는 json 파일입니다:
- sessdata
- buvid3
- bili_jct
- actimevalue
- dedeuserid
브라우저의 InPrivate 모드로 로그인한 후 쿠키에서 가져올 수 있으며, 자세한 내용은 bilibili-api 문서를 참조하세요.
checkin.py
간단한 NoneBot2 플러그인으로, QQ 봇에 /漫画签到를 보내 수동으로 실행할 수 있으며, 매일 지정된 시간에 자동 실행되어 결과를 피드백합니다.
저는 모든 QQ 봇 친구들이 사용할 수 있는 범용 형태로 개발하지 않았기 때문에, QQ 봇 관리자에게만 전송하도록 지원합니다.
물론 사용하시려면 cron을 직접 사용하여 정기 실행하도록 변경하고, 다른 방법으로 메시지 푸시를 하거나 푸시하지 않는 것도 고려할 수 있습니다.
exchange.py
매일 0시에 교환을 수행하는 NoneBot2 플러그인입니다. 실제로는 23시 59분에 실행을 시작하여 전처리를 한 후, 시스템 시간을 감지하여 0시 정각에 교환합니다. 따라서 시스템 시간이 정확해야 하며, 정기적으로 시간을 동기화하세요:
NoneBot2의 로직은 위의 출석체크 플러그인과 유사하며, exchange_func 함수를 통해 교환 로직을 확인하면 됩니다. 코드는 다음과 같습니다: