Skip to content

Commit 7c1685a

Browse files
committed
feat(video): support paidProductPlacementDetail in Video ressource
fixes: #191
1 parent 43d813d commit 7c1685a

File tree

5 files changed

+22
-1
lines changed

5 files changed

+22
-1
lines changed

pyyoutube/models/video.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,11 @@ class VideoLiveStreamingDetails(BaseModel, DatetimeTimeMixin):
248248
activeLiveChatId: Optional[str] = field(default=None, repr=False)
249249

250250

251+
@dataclass
252+
class PaidProductPlacementDetail(BaseModel):
253+
hasPaidProductPlacement: Optional[dataclass] = field(default=None, repr=False)
254+
255+
251256
@dataclass
252257
class Video(BaseResource):
253258
"""
@@ -266,6 +271,9 @@ class Video(BaseResource):
266271
liveStreamingDetails: Optional[VideoLiveStreamingDetails] = field(
267272
default=None, repr=False
268273
)
274+
paidProductPlacementDetail: Optional[PaidProductPlacementDetail] = field(
275+
default=None, repr=False
276+
)
269277

270278

271279
@dataclass

pyyoutube/resources/videos.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def list(
4545
parts:
4646
Comma-separated list of one or more channel resource properties.
4747
Accepted values: id,contentDetails,fileDetails,liveStreamingDetails,
48-
localizations,player,processingDetails,recordingDetails,snippet,statistics,
48+
localizations,paidProductPlacementDetails,player,processingDetails,recordingDetails,snippet,statistics,
4949
status,suggestions,topicDetails
5050
chart:
5151
Identifies the chart that you want to retrieve.

pyyoutube/utils/constants.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
"topicDetails",
6666
"recordingDetails",
6767
"liveStreamingDetails",
68+
"paidProductPlacementDetails",
6869
}
6970

7071
GUIDE_CATEGORY_RESOURCE_PROPERTIES = {"id", "snippet"}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"hasPaidProductPlacement": true
3+
}

tests/models/test_videos.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ class VideoModelTest(unittest.TestCase):
2323
VIDEO_API_RESPONSE = json.loads(f.read().decode("utf-8"))
2424
with open(BASE_PATH + "video_recording_details.json", "rb") as f:
2525
RECORDING_DETAILS = json.loads(f.read().decode("utf-8"))
26+
with open(BASE_PATH + "video_paid_product_placement_details.json", "rb") as f:
27+
PAID_PRODUCT_PLACEMENT_DETAILS = json.loads(f.read().decode("utf-8"))
2628

2729
def testVideoContentDetails(self) -> None:
2830
m = models.VideoContentDetails.from_dict(self.CONTENT_DETAILS_INFO)
@@ -107,3 +109,10 @@ def testVideoRecordingDetails(self) -> None:
107109
m.string_to_datetime(m.recordingDate).isoformat(),
108110
"2024-07-03T00:00:00+00:00",
109111
)
112+
113+
def testPaidProductPlacementDetail(self) -> None:
114+
m = models.PaidProductPlacementDetail.from_dict(
115+
self.PAID_PRODUCT_PLACEMENT_DETAILS
116+
)
117+
118+
self.assertTrue(m.hasPaidProductPlacement)

0 commit comments

Comments
 (0)