@@ -525,7 +525,7 @@ def get_post_audio(self, owner_id, post_id):
525
525
526
526
ids = scrap_ids_from_html (
527
527
response .text ,
528
- filter_root_el = {'class' : 'audios_list ' }
528
+ filter_root_el = {'class' : 'AttachmentsList ' }
529
529
)
530
530
531
531
return scrap_tracks (
@@ -615,16 +615,30 @@ def scrap_ids_from_html(html, filter_root_el=None):
615
615
for playlist in playlist_snippets :
616
616
playlist .decompose ()
617
617
618
- for audio in root_el .find_all ('div' , {'class' : 'audio_item' }):
618
+ tag_name = ('div' , {'class' : 'audio_item' })
619
+ if 'AttachmentsList' in filter_root_el .values ():
620
+ tag_name = ('button' , {'class' : 'SecondaryAttachment' })
621
+
622
+ for audio in root_el .find_all (* tag_name ):
619
623
if 'audio_item_disabled' in audio ['class' ]:
620
624
continue
621
625
626
+ if 'data-audio' not in audio .attrs :
627
+ continue
628
+
622
629
data_audio = json .loads (audio ['data-audio' ])
623
- audio_hashes = data_audio [13 ].split ("/" )
624
630
625
- full_id = (
626
- str (data_audio [1 ]), str (data_audio [0 ]), audio_hashes [2 ], audio_hashes [5 ]
627
- )
631
+ if isinstance (data_audio , list ):
632
+ audio_hashes = data_audio [13 ].split ("/" )
633
+ full_id = (
634
+ str (data_audio [1 ]), str (data_audio [0 ]),
635
+ audio_hashes [2 ], audio_hashes [5 ]
636
+ )
637
+ else :
638
+ full_id = (
639
+ str (data_audio ['owner_id' ]), str (data_audio ['id' ]),
640
+ data_audio ['actionHash' ], data_audio ['urlHash' ]
641
+ )
628
642
629
643
if all (full_id ):
630
644
ids .append (full_id )
0 commit comments