@@ -46,6 +46,48 @@ async def fetch_one_video(request: Request,
46
46
raise HTTPException (status_code = status_code , detail = detail .dict ())
47
47
48
48
49
+ # 获取视频流地址
50
+ @router .get ("/fetch_video_playurl" , response_model = ResponseModel , summary = "获取视频流地址/Get video playurl" )
51
+ async def fetch_one_video (request : Request ,
52
+ bv_id : str = Query (example = "BV1y7411Q7Eq" , description = "作品id/Video id" ),
53
+ cid :str = Query (example = "171776208" , description = "作品cid/Video cid" )):
54
+ """
55
+ # [中文]
56
+ ### 用途:
57
+ - 获取视频流地址
58
+ ### 参数:
59
+ - bv_id: 作品id
60
+ - cid: 作品cid
61
+ ### 返回:
62
+ - 视频流地址
63
+
64
+ # [English]
65
+ ### Purpose:
66
+ - Get video playurl
67
+ ### Parameters:
68
+ - bv_id: Video id
69
+ - cid: Video cid
70
+ ### Return:
71
+ - Video playurl
72
+
73
+ # [示例/Example]
74
+ bv_id = "BV1y7411Q7Eq"
75
+ cid = "171776208"
76
+ """
77
+ try :
78
+ data = await BilibiliWebCrawler .fetch_video_playurl (bv_id , cid )
79
+ return ResponseModel (code = 200 ,
80
+ router = request .url .path ,
81
+ data = data )
82
+ except Exception as e :
83
+ status_code = 400
84
+ detail = ErrorResponseModel (code = status_code ,
85
+ router = request .url .path ,
86
+ params = dict (request .query_params ),
87
+ )
88
+ raise HTTPException (status_code = status_code , detail = detail .dict ())
89
+
90
+
49
91
# 获取用户发布视频作品数据
50
92
@router .get ("/fetch_user_post_videos" , response_model = ResponseModel ,
51
93
summary = "获取用户主页作品数据/Get user homepage video data" )
@@ -385,6 +427,44 @@ async def fetch_collect_folders(request: Request,
385
427
raise HTTPException (status_code = status_code , detail = detail .dict ())
386
428
387
429
430
+ # 获取视频实时弹幕
431
+ @router .get ("/fetch_video_danmaku" , response_model = ResponseModel , summary = "获取视频实时弹幕/Get Video Danmaku" )
432
+ async def fetch_one_video (request : Request ,
433
+ cid : str = Query (example = "1639235405" , description = "作品cid/Video cid" )):
434
+ """
435
+ # [中文]
436
+ ### 用途:
437
+ - 获取视频实时弹幕
438
+ ### 参数:
439
+ - cid: 作品cid
440
+ ### 返回:
441
+ - 视频实时弹幕
442
+
443
+ # [English]
444
+ ### Purpose:
445
+ - Get Video Danmaku
446
+ ### Parameters:
447
+ - cid: Video cid
448
+ ### Return:
449
+ - Video Danmaku
450
+
451
+ # [示例/Example]
452
+ cid = "1639235405"
453
+ """
454
+ try :
455
+ data = await BilibiliWebCrawler .fetch_video_danmaku (cid )
456
+ return ResponseModel (code = 200 ,
457
+ router = request .url .path ,
458
+ data = data )
459
+ except Exception as e :
460
+ status_code = 400
461
+ detail = ErrorResponseModel (code = status_code ,
462
+ router = request .url .path ,
463
+ params = dict (request .query_params ),
464
+ )
465
+ raise HTTPException (status_code = status_code , detail = detail .dict ())
466
+
467
+
388
468
# 获取指定直播间信息
389
469
@router .get ("/fetch_live_room_detail" , response_model = ResponseModel ,
390
470
summary = "获取指定直播间信息/Get information of specified live room" )
@@ -424,43 +504,86 @@ async def fetch_collect_folders(request: Request,
424
504
raise HTTPException (status_code = status_code , detail = detail .dict ())
425
505
426
506
427
- # # 获取指定直播间视频流
428
- # @router.get("/fetch_live_videos", response_model=ResponseModel,
429
- # summary="获取直播间视频流/Get live video data of specified room")
430
- # async def fetch_collect_folders(request: Request,
431
- # room_id: str = Query(example="22816111", description="直播间ID/Live room ID")):
432
- # """
433
- # # [中文]
434
- # ### 用途:
435
- # - 获取指定直播间视频流
436
- # ### 参数:
437
- # - room_id: 直播间ID
438
- # ### 返回:
439
- # - 指定直播间视频流
440
- #
441
- # # [English]
442
- # ### Purpose:
443
- # - Get live video data of specified room
444
- # ### Parameters:
445
- # - room_id: Live room ID
446
- # ### Return:
447
- # - live video data of specified room
448
- #
449
- # # [示例/Example]
450
- # room_id = "22816111"
451
- # """
452
- # try:
453
- # data = await BilibiliWebCrawler.fetch_live_videos(room_id)
454
- # return ResponseModel(code=200,
455
- # router=request.url.path,
456
- # data=data)
457
- # except Exception as e:
458
- # status_code = 400
459
- # detail = ErrorResponseModel(code=status_code,
460
- # router=request.url.path,
461
- # params=dict(request.query_params),
462
- # )
463
- # raise HTTPException(status_code=status_code, detail=detail.dict())
507
+ # 获取指定直播间视频流
508
+ @router .get ("/fetch_live_videos" , response_model = ResponseModel ,
509
+ summary = "获取直播间视频流/Get live video data of specified room" )
510
+ async def fetch_collect_folders (request : Request ,
511
+ room_id : str = Query (example = "1815229528" , description = "直播间ID/Live room ID" )):
512
+ """
513
+ # [中文]
514
+ ### 用途:
515
+ - 获取指定直播间视频流
516
+ ### 参数:
517
+ - room_id: 直播间ID
518
+ ### 返回:
519
+ - 指定直播间视频流
520
+
521
+ # [English]
522
+ ### Purpose:
523
+ - Get live video data of specified room
524
+ ### Parameters:
525
+ - room_id: Live room ID
526
+ ### Return:
527
+ - live video data of specified room
528
+
529
+ # [示例/Example]
530
+ room_id = "1815229528"
531
+ """
532
+ try :
533
+ data = await BilibiliWebCrawler .fetch_live_videos (room_id )
534
+ return ResponseModel (code = 200 ,
535
+ router = request .url .path ,
536
+ data = data )
537
+ except Exception as e :
538
+ status_code = 400
539
+ detail = ErrorResponseModel (code = status_code ,
540
+ router = request .url .path ,
541
+ params = dict (request .query_params ),
542
+ )
543
+ raise HTTPException (status_code = status_code , detail = detail .dict ())
544
+
545
+
546
+ # 获取指定分区正在直播的主播
547
+ @router .get ("/fetch_live_streamers" , response_model = ResponseModel ,
548
+ summary = "获取指定分区正在直播的主播/Get live streamers of specified live area" )
549
+ async def fetch_collect_folders (request : Request ,
550
+ area_id : str = Query (example = "9" , description = "直播分区id/Live area ID" ),
551
+ pn : int = Query (default = 1 , description = "页码/Page number" )):
552
+ """
553
+ # [中文]
554
+ ### 用途:
555
+ - 获取指定分区正在直播的主播
556
+ ### 参数:
557
+ - area_id: 直播分区id
558
+ - pn: 页码
559
+ ### 返回:
560
+ - 指定分区正在直播的主播
561
+
562
+ # [English]
563
+ ### Purpose:
564
+ - Get live streamers of specified live area
565
+ ### Parameters:
566
+ - area_id: Live area ID
567
+ - pn: Page number
568
+ ### Return:
569
+ - live streamers of specified live area
570
+
571
+ # [示例/Example]
572
+ area_id = "9"
573
+ pn = 1
574
+ """
575
+ try :
576
+ data = await BilibiliWebCrawler .fetch_live_streamers (area_id , pn )
577
+ return ResponseModel (code = 200 ,
578
+ router = request .url .path ,
579
+ data = data )
580
+ except Exception as e :
581
+ status_code = 400
582
+ detail = ErrorResponseModel (code = status_code ,
583
+ router = request .url .path ,
584
+ params = dict (request .query_params ),
585
+ )
586
+ raise HTTPException (status_code = status_code , detail = detail .dict ())
464
587
465
588
466
589
# 获取所有直播分区列表
@@ -496,3 +619,79 @@ async def fetch_collect_folders(request: Request,):
496
619
params = dict (request .query_params ),
497
620
)
498
621
raise HTTPException (status_code = status_code , detail = detail .dict ())
622
+
623
+
624
+ # 通过bv号获得视频aid号
625
+ @router .get ("/bv_to_aid" , response_model = ResponseModel , summary = "通过bv号获得视频aid号/Generate aid by bvid" )
626
+ async def fetch_one_video (request : Request ,
627
+ bv_id : str = Query (example = "BV1M1421t7hT" , description = "作品id/Video id" )):
628
+ """
629
+ # [中文]
630
+ ### 用途:
631
+ - 通过bv号获得视频aid号
632
+ ### 参数:
633
+ - bv_id: 作品id
634
+ ### 返回:
635
+ - 视频aid号
636
+
637
+ # [English]
638
+ ### Purpose:
639
+ - Generate aid by bvid
640
+ ### Parameters:
641
+ - bv_id: Video id
642
+ ### Return:
643
+ - Video aid
644
+
645
+ # [示例/Example]
646
+ bv_id = "BV1M1421t7hT"
647
+ """
648
+ try :
649
+ data = await BilibiliWebCrawler .bv_to_aid (bv_id )
650
+ return ResponseModel (code = 200 ,
651
+ router = request .url .path ,
652
+ data = data )
653
+ except Exception as e :
654
+ status_code = 400
655
+ detail = ErrorResponseModel (code = status_code ,
656
+ router = request .url .path ,
657
+ params = dict (request .query_params ),
658
+ )
659
+ raise HTTPException (status_code = status_code , detail = detail .dict ())
660
+
661
+
662
+ # 通过bv号获得视频分p信息
663
+ @router .get ("/fetch_video_parts" , response_model = ResponseModel , summary = "通过bv号获得视频分p信息/Get Video Parts By bvid" )
664
+ async def fetch_one_video (request : Request ,
665
+ bv_id : str = Query (example = "BV1vf421i7hV" , description = "作品id/Video id" )):
666
+ """
667
+ # [中文]
668
+ ### 用途:
669
+ - 通过bv号获得视频分p信息
670
+ ### 参数:
671
+ - bv_id: 作品id
672
+ ### 返回:
673
+ - 视频分p信息
674
+
675
+ # [English]
676
+ ### Purpose:
677
+ - Get Video Parts By bvid
678
+ ### Parameters:
679
+ - bv_id: Video id
680
+ ### Return:
681
+ - Video Parts
682
+
683
+ # [示例/Example]
684
+ bv_id = "BV1vf421i7hV"
685
+ """
686
+ try :
687
+ data = await BilibiliWebCrawler .fetch_video_parts (bv_id )
688
+ return ResponseModel (code = 200 ,
689
+ router = request .url .path ,
690
+ data = data )
691
+ except Exception as e :
692
+ status_code = 400
693
+ detail = ErrorResponseModel (code = status_code ,
694
+ router = request .url .path ,
695
+ params = dict (request .query_params ),
696
+ )
697
+ raise HTTPException (status_code = status_code , detail = detail .dict ())
0 commit comments