@@ -24,8 +24,11 @@ const parseItem = (item, resp) => {
2424 return parseVideo ( item [ type ] ) ;
2525 case 'movieRenderer' :
2626 return parseMovie ( item [ type ] ) ;
27+ case 'reelItemRenderer' :
28+ return parseShort ( item [ type ] ) ;
2729 case 'shelfRenderer' :
2830 case 'richShelfRenderer' :
31+ case 'reelShelfRenderer' :
2932 return parseShelf ( item [ type ] ) ;
3033 case 'showRenderer' :
3134 return parseShow ( item [ type ] ) ;
@@ -343,6 +346,30 @@ const parseMovie = obj => {
343346 } ;
344347} ;
345348
349+ const parseShort = obj => {
350+ const playerHeader = obj . navigationEndpoint . reelWatchEndpoint . overlay
351+ . reelPlayerOverlayRenderer . reelPlayerHeaderSupportedRenderers . reelPlayerHeaderRenderer ;
352+ const channelNavEndpoint = playerHeader . channelTitleText . runs [ 0 ] . navigationEndpoint ;
353+ return {
354+ type : 'short' ,
355+ title : UTIL . parseText ( obj . headline , '' ) ,
356+ videoID : obj . videoId ,
357+ url : new URL ( obj . navigationEndpoint . commandMetadata . webCommandMetadata . url , BASE_VIDEO_URL ) . toString ( ) ,
358+ bestThumbnail : prepImg ( obj . thumbnail . thumbnails ) [ 0 ] ,
359+ thumbnails : prepImg ( obj . thumbnail . thumbnails ) ,
360+ views : UTIL . parseText ( obj . viewCountText , '' ) ,
361+ published : UTIL . parseText ( playerHeader . timestampText , '' ) ,
362+
363+ channel : {
364+ name : UTIL . parseText ( playerHeader . channelTitleText , '' ) ,
365+ channelID : channelNavEndpoint . browseEndpoint . browseId ,
366+ url : new URL ( channelNavEndpoint . commandMetadata . webCommandMetadata . url , BASE_VIDEO_URL ) . toString ( ) ,
367+ bestAvatar : prepImg ( playerHeader . channelThumbnail . thumbnails ) [ 0 ] || null ,
368+ avatars : prepImg ( playerHeader . channelThumbnail . thumbnails ) ,
369+ } ,
370+ } ;
371+ } ;
372+
346373const parseShow = obj => {
347374 const thumbnails = obj . thumbnailRenderer . showCustomThumbnailRenderer . thumbnail . thumbnails ;
348375 const owner = _parseOwner ( obj ) ;
@@ -366,6 +393,8 @@ const parseShelf = obj => {
366393 let rawItems = [ ] ;
367394 if ( Array . isArray ( obj . contents ) ) {
368395 rawItems = obj . contents . map ( x => x . richItemRenderer . content ) ;
396+ } else if ( Array . isArray ( obj . items ) ) {
397+ rawItems = obj . items ;
369398 } else {
370399 rawItems = ( obj . content . verticalListRenderer || obj . content . horizontalMovieListRenderer ) . items ;
371400 }
0 commit comments