Last active
July 3, 2024 04:28
-
-
Save wallentx/6bd2a5a5c7f79525c552b883b4b9f8b7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
patreon scrib baray link in the description down below that's | |
patreon subcribes liay Linked In the description down below that's | |
patreon scribes Le baray Linked In the description down below | |
patreon scribes libray Linked In the description down below that's | |
patreon scribes libr pay Linked In the description down below | |
patreon scribes liay Linked In the description down below that's | |
patreon scribes baray Linked In the description down below that's | |
patreon subcribes veray Linked In the description down below that's | |
patreon subscrib baray Link in the description down below that's | |
patreon subcrib Link in the description down below YouTube legally | |
patreon scrib silly baray Linked In the description | |
patreon subcribes LI baray Linked In the description down below | |
patreon subcribes Liber pay Linked In the description down below | |
patreon scrubs Liber pay Linked In the description down below | |
patreon scrubs libr pay Linked In the description down below | |
patreon scrib baray Linked In the description down below that's | |
patreon subscribers Linked In the description down below that's gonna | |
patreon scrubs that Liberty Linked In the description down below | |
patreon scrubs liberope Link in the description down below that's | |
patreon Scribe Silly Bear pay Linked In the description down | |
patreon scrub celebrate Linked In the description down below that's | |
patreon scrubs liberope Linked In the description down below that's | |
patreon scrubs to the barrel pay Link in the description | |
patreon scribes libero pay link down below that's gonna be | |
patreon scrub silly therapy Linked In the description down below | |
patreon scrub silly therapy Linked In the description down below | |
patreon scrubs deliver pay Linked In the description down below | |
patreon scribes liberope Linked In the description down below that's | |
patreon scrubs liberape Linked In the description down below that's | |
patreon scrub Philly therapy Link in the description down below | |
patreon scrub Silly Bear pay Linked In the description down | |
patreon scribes the liberope Linked In the description down below | |
patreon Scribe silly birthday Linked In the description down below | |
patreon scrubs libero paid Linked In the description down below | |
patreon scrub Silly Bear pay Link in the description down | |
patreon scrubs liberape Linked In the description down below that's | |
patreon scrubs liberope Linked In the description down below that's | |
patreon subscribe Silly Bear pay Linked In the description down | |
patreon Scrabble verify Linked In the description down below uh | |
patreon scrubs delivery Link in the description down below if | |
patreon scrubs liberope Linked In the description down below that's | |
patreon scribes only bro pay Link in the description down | |
patreon scrubs liberape Linked In the description down below that's | |
patreon scrubs Library Link in the description down below that's | |
patreon scrub Sully bear pay Linked In the description down | |
patreon scribes the Liberty Linked In the description down below | |
patreon scrubs delibera pay Link in the description down below | |
patreon scrub Silly Bear paid Linked In the description down | |
patreon scrubs delibera pay Link in the description down below | |
patreon scrubs Dolly bear putty Linked In the description down | |
patreon scrub silly therapy Link in the description down below | |
patreon scrub Silly Bear pay Link in the description down | |
patreon scrub silly therapy Linked In the description down below | |
patreon scrub Silly Bear repeat Linked In the description down | |
patreon scrubs liberope Linked In the description down below that's | |
patreon scrubs delibera pay Link in the description down below | |
patreon scrubs delibera pay Link in the description down below | |
patreon scrubs Lily verapay Link in the description down below | |
patreon scrub celebrate Link in the description down below that's | |
patreon scrubs deliver pay Link in the description down below | |
patreon scrub Sully bear repeat Linked In the description down | |
patreon scrubs delibera pay Link in the description down below | |
patreon scrub Linked In the description down below that's gonna | |
patreon scrubs that liberope link in the description down below | |
patreon sky Sally Bara pay Linked In the description down | |
patreon scrub silly therapy Linked In the description down below | |
patreon scrub celebrate linked down below that's gonna be it | |
patreon scrub silly therapy Linked In the description down below | |
patreon scrub Sally Bara pay linked down below that's gonna | |
patreon scrub solid Bearer pay Link in the description down | |
patreon scrub study therapy Linked In the description down below | |
patreon scrub Sally therapy Linked In the description down below | |
patreon Scribe silly therapy linked down below that's gonna be | |
patreon scrubs daily bear pay linked down below that's gonna | |
patreon scribes Dolly therapy linked down below that's gonna be | |
patreon scrubs the libero pay Link in the description down | |
patreon scrub Sally Bara pay linked down below that's gonna | |
patreon subscribe link down below that's | |
patreon scrubs daily Bara paid linked down below that's gonna | |
patreon scrubscribe Linked In the description down below I've got | |
patreon scrubs celibira pay linked down below that's gonna be | |
patreon scrubs delibera pay link down below that's gonna be | |
patreon scrubs alibera pay linked down below that's gonna be | |
patreon scrap style verify linked down below that's gonna be | |
patreon scribes that Libera pay link down below that's gonna | |
patreon scrub celebrity Linked In the description down below that's | |
patreon scribes alibera pay linked down below that's gonna be | |
patreon scribes daily bear pay linked down below check out | |
patreon at scribes the libero pay linked down below I'm | |
patreon scribes daily bear pay Linked In the description down | |
patreon scrub Silly Bear pay Linked In the description down | |
patreon Scrabble linked down below that's gonna be it for | |
patreon subscribe stuff the bearer pay down below Ah that's | |
patreon scrub celebrate linked down below that's gonna be it | |
patreon scrub selling therapy Linked In the description down below | |
patreon scrubs and Liberty Linked In the description down below | |
patreon scribes selling therapy linked down below that's gonna be | |
patreon scribes selling therapy linked down below that's gonna be | |
patreon scrub star and liberape linked down below that's gonna | |
patreon scribe Silly Bear pay linked down below that's gonna | |
patreon scribe silly Barrel pay Link in the description down | |
patreon scribes and Liberty Linked In the description down below | |
patreon Scrabble link down below that's gonna be it for | |
patreon subscribe silly therapy Linked In the description down below | |
patreon scrub simply verapay Linked In the description down below | |
patreon scrubs the libero pay Link in the description down | |
patreon scribes no better pay Link in the description down | |
patreon scribe simply verapay Linked In the description down below | |
patreon subscribe Stone liberal pay Link in the description down | |
patreon scrub something Bearer pay Linked In the description down | |
patreon Scribe study therapy Linked In the description down below | |
patreon scribe silly therapy Linked In the description down below | |
patreon yup we're gonna go with that um | |
patreon scrubs and liberope Linked In the description down below | |
patreon Scrabble pay Linked In the description down below that's | |
patreon scribes and liberope Linked In the description down below | |
patreon scribes and my bear paid Linked In the description | |
patreon scribes no Bara pay Link in the description down | |
patreon scribe similar Bara pay Linked In the description down | |
patreon scribes under barapay Link in the description down below | |
patreon scribes delibera pay linked down below I've got a | |
patreon scribes only bear pay Link in the description down | |
patreon scribe Silly Bear pay Linked In the description down | |
patreon scrub something better pay Link in the description down | |
patreon scrub certainly Bearer paid Link in the description down | |
patreon scrub celebrate Link in the description down below I've | |
patreon Skype simply verify Linked In the description down below | |
patreon scribes hello Barrel pay Link in the description down | |
patreon scribes they're going to pay the link in the | |
patreon scribes only bear pay Linked In the description down | |
patreon Skype selling Barrel pay Linked In the description down | |
patreon scribe selling Barrel pay Link in the description down | |
patreon subscribe sell Libera pay Linked In the description down | |
patreon scarves deliver pay Link in the description down below | |
patreon scribes and liberope Linked In the description down below | |
patreon scrub solo Baroque Linked In the description down below | |
patreon scribe silly Bara pay Linked In the description down | |
patreon scribes and Rivera pay Linked In the description down | |
patreon scribe selling Vera pay Link in the description down | |
patreon transcribe Stanley baripay Linked In the description down below | |
patreon scrubs and Liberty Linked In the description down below | |
patreon subscribe Linked In the description down below I've got | |
patreon scribes and Lou Vera pay Link in the description | |
patreon scribes not a rare pay Linked In the description | |
patreon scribes the liberope Linked In the description down below | |
patreon scrub assembly Bearer pay Link in the description down | |
patreon scrub solo bro pay Link in the description down | |
patreon scribes and Robert pay Linked In the description down | |
patreon subscribe Sony bear repeat Link in the description down | |
patreon scrub celery Bara pay Linked In the description down | |
patreon scribes and Robert pay all Linked In the description | |
patreon scrub similar Vera pay Link in the description down | |
patreon scribe Stellar Bara paid Linked In the description down | |
patreon scrub solo Bara pay Link in the description down | |
patreon scribes that are better pay Linked In the description | |
patreon scribes and Robert pay Link in the description down | |
patreon scribe seller therapy Link in the description down below | |
patreon scrubs and overpay Linked In the description down below | |
patreon subscribers Link in the description down below I've got | |
patreon subscribers and Robert pay Link in the description down | |
patreon scrabster link in the description down below I've got | |
patreon subscribe style liberope and all that stuff linked down | |
patreon scrapstone repair Linked In the description down below I've | |
patreon scrubs that I'm very pay Linked In the description | |
patreon scrub Center Vera pay Link in the description down | |
patreon scrubs and repair Linked In the description down below | |
patreon subscribers Linked In the description down below I've got | |
patreon scribes under Barrel pay Linked In the description down | |
patreon scribes Link in the description down below I've got | |
patreon subscribers Linked In the description down below I've got | |
patreon scribes through Vera pay Linked In the description down | |
patreon scribes through Vera pay Linked In the description down | |
patreon subscribe star in liberope linked down below I've got | |
patreon scribe sellover pay Link in the description down below | |
patreon scribes no verapay Linked In the description down below | |
patreon scribes and overpay linked down below I've got a | |
patreon scribes and Robert pay Linked In the description down | |
patreon scrubbers on a bear pay linked down below I | |
patreon scrubs General Vera pay Linked In the description down | |
patreon scrubs and Robert pay linked down below I've got | |
patreon scribes don't know where I'll pay Linked In the | |
patreon subscribers Linked In the description down below I've got | |
patreon subscribe Linked In the description down below I've got | |
patreon subscribers Linked In the description down below I've got | |
patreon scribes sorry bro pay Linked In the description down | |
patreon subscribe selling verapay link in the description down below | |
patreon scrub something where I pay Linked In the description | |
patreon scrubs through Vera pay Linked In the description down | |
patreon scrubs during Vera pay Link in the description down | |
patreon scrubs during verapay Link in the description down below | |
patreon subscribe snow Barrel Linked In the description down below | |
patreon scrub Sonic Vera pay Link in the description down | |
patreon subscribe celebrate linked in the description down below i've | |
patreon subscribe stop verify link in the description down below | |
patreon subscribe selling bear pay linked in the description down | |
patreon scrubscribe Linked In the description down below I've got | |
patreon scribes Linked In the description down below I've got | |
patreon subscribers tell me where i play link in the | |
patreon scrubs during barapay Linked In the description down below | |
patreon subscribe subscription down below i've got a podcast called | |
patreon scribes Linked In the description down below I've got | |
patreon scrub storyboard linked in the description down below i've | |
patreon subscribers only bear pay link in the description down | |
patreon scribes and verapay Linked In the description down below | |
patreon scrubs no bear pay link in the description down | |
patreon subscribers verify linked in the description down below i've | |
patreon subscribers on ebay pay link in the description down | |
patreon scrub something verapay Linked In the description down below | |
patreon subscribe subscription down below i've got a podcast called | |
patreon skype still number pay link in the description down | |
patreon scrub Sonic in the description down below I've got | |
patreon scrap story bear up a link in the description | |
patreon scrap center barricade link in the description down below | |
patreon subscribers and bear pay link in the description down | |
patreon scribes Linked In the description down below I've got | |
patreon subscribe celebrate linked in the description down below i've | |
patreon subscribe celebrate description down below podcast tech over t | |
patreon subscribers linked in the description down below i've got | |
patreon subscribe sorry bear pay link in the description down | |
patreon subscribers johnny bear pay linked in the description down | |
patreon skype strongly verified link in the description down below | |
patreon scribe story bear pad linked in the description down | |
patreon subscribers nobody linked in the description down below i've | |
patreon scribes during verify linked in the description down below | |
patreon subscribe through verify link in the description down below | |
patreon subscribe subscription down below i've got a podcast called | |
patreon scraps download pay link in the description down below | |
patreon subscribers Link in the description down below I've got | |
patreon scribe standing bear pay linked in the description down | |
patreon subscribers and verify link in the description down below | |
patreon subscribers only bear pay link in the description down | |
patreon scribe selling bear pay linked in the description down | |
patreon subscribers on embarrassing linked in the description down below | |
patreon subscribers and verify linked in the description down below | |
patreon scrap story bear verify linked in the description down | |
patreon subscribe channel please linked in the description down below | |
patreon scrabbster and bear pay link in the description down | |
patreon subscribe celebrate linked in the description down below i've | |
patreon scrub selling Barrel pay Linked In the description down | |
patreon subscribers Linked In the description down below I've got | |
patreon scrabbster and bear pay link in the description down | |
patreon subscribe celebrate linked in the description down below i've | |
patreon scrub selling Barrel pay Linked In the description down | |
patreon scribe stunning verify linked in the description down below | |
patreon scribe strongly bear pay link in the description down | |
patreon subscribe sorry bro linked in the description down below | |
patreon subscribe strongly bear up a link in the description | |
patreon subscriber pay linked in the description down below i've | |
patreon subscribe channel please linked in the description down below | |
patreon subscribers download verify linked in the description down below | |
patreon scribe strongly bear pay link in the description down | |
patreon subscribers only veripay linked in the description down below | |
patreon subscribers during their pay linked in the description down | |
patreon scribes johnny bureau pay link in the description down | |
patreon subscribers don't burp a link in the comments description | |
patreon subscribers linked in the description down below i've got | |
patreon subscribe to my very link in the description down | |
patreon subscribers telling bear pay link in the description down | |
patreon scribe selling bear pay link in the description down | |
patreon subscribers don't burp a link in the description down | |
patreon scribes download bureau pay link in the description down | |
patreon subscribers linked down below i've got a podcast called | |
patreon scrubs the only barrel pay link in the description | |
patreon subscribers don't burp a link in the description down | |
patreon subscribe subscription down below i've got a podcast called | |
patreon subscribe subscription down below i've got a podcast called | |
patreon skype selling bureau pay linked in the description down | |
patreon scrub starring veripay link down below i've got a | |
patreon | |
patreon subscribers libera pay in the description | |
patreon strap through verify link in the description down below | |
patreon scrap selling bear pay link in the description down | |
patreon subscribe something about linked in the description down below | |
patreon scribes download therapy linked in the description down below | |
patreon scribes dummy bear pay linked in the description down | |
patreon scribe something very linked down below i've got a | |
patreon scrubs don't burp a link in the description down | |
patreon subscribe to generally bear up a link in the | |
patreon subscribe to my bear pay link in the description | |
patreon subscribers only bureau pay linked in the description down | |
patreon subscribers only verify link in the description down below | |
patreon scrubs dummy vera pay linked in the description down | |
patreon subscribers only bear pay linked in the description down | |
patreon subscribers linked in the description down below i've got | |
patreon subscribe subscription down below i've got a podcast called | |
patreon scrubs johnny bureau pay linked in the description down | |
patreon scrubs johnny bara pay link in the description down | |
patreon subscribe to my bureau linked in the description down | |
patreon subscribe selling bear pay linked in the description down | |
patreon subscribers linked in the description down below podcast tegra | |
patreon subscribers linked in the description down below podcast tegra | |
patreon subscribers and bear pay link in the description down | |
patreon subscribers song and bear pay linked in the description | |
patreon subscribe to johnny bureau pay link in the description | |
patreon subscribers only bear pay link in the description down | |
patreon subscribe to only bear pay linked in the description | |
patreon subscribers there and bear pay link in the description | |
patreon subscribe subscription down below i've got a podcast called | |
patreon subscribers only bear pay linked in the description down | |
patreon scribes download page linked in the description down below | |
patreon subscriber linked in the description down below i've got | |
patreon scrubs linked in the description down below i've got | |
patreon subscribers the only bear pay linked in the description | |
patreon subscribes the only bear pay linked in the description | |
patreon subscribe subscription down below i've got a podcast called | |
patreon subscribers don't let me bear up a link in | |
patreon subscribe to my bear pay link in the description | |
patreon subscribers and bear pay link in the description down | |
patreon subscribers the only bear pay link in the description | |
patreon scrubs only bear pay link in the description down | |
patreon subscribers the only bear pay link in the description | |
patreon subscribers johnny vera pay linked in the description down | |
patreon subscribers you're only beer play in the description down | |
patreon subscribers and bear pay link in the description down | |
patreon subscribers only bear pay link in the description down | |
patreon subscribe something very linked in the description down below | |
patreon subscribe certainly bear pay link in the description down | |
patreon subscribe to my bear pay link in the description | |
patreon subscribers johnny bara pay linked in the description down | |
patreon subscribers generally bear up a link in the description | |
patreon subscribe to my very link in the description down | |
patreon subscribe stanley bear pay linked in the description down | |
patreon subscribers link in the description down below i've got | |
patreon subscriber pay link in the description down below i've | |
patreon with a thousand people and their github sponsors with | |
patreon subscribe channel bear pay link in the description down | |
patreon subscribe certainly bear pay link in the description down | |
patreon subscribe story bear pay link in the description down | |
patreon scrubs room verify linked in the description down below | |
patreon subscribers only bureau pay link in the description down | |
patreon scrubs dummy burpee linked in the description down below | |
patreon subscribers generally bearape linked in the description and down | |
patreon subscribers during their pay link in the description down | |
patreon subscribers tell me bear up a link in the | |
patreon subscribe channel linked in the description down below i've | |
patreon subscriber play linked in the description down below i've | |
patreon subscribe to the newberry link in the description down | |
patreon subscribers under bear pay link in the description down | |
patreon subscribe certainly bear pay link in the description down | |
patreon subscribe certainly therapy linked in the description down below | |
patreon subscribe certainly bear pay link in the description down | |
patreon subscriber sally bearpay all linked in the description down | |
patreon scrubs during bear pay linked in the description down | |
patreon subscriber link in the description down below i've got | |
patreon | |
patreon subscribes through veripay linked in the description down below | |
patreon subscribers only bear pay linked in the description down | |
patreon subscribers generally bear up a link in the description | |
patreon subscribe certainly bear paid linked in the description down | |
patreon subscribers only bear pay link in the description down | |
patreon subscribers are only bearable linked in the description down | |
patreon subscribers newberry linked in the description down below i've | |
patreon subscribe certainly bear pay linked in the description down | |
patreon subscribers only bear paid link in the description down | |
patreon subscriber certainly bear pay link in the description down | |
patreon subscribers only bearpay linked in the description down below | |
patreon subscribe to our new bear pay linked in the | |
patreon subscribe certainly bear with me linked description down below | |
patreon subscribers only bear pay linked in the description down | |
patreon subscribers only bear pay linked in the description down | |
patreon scribes only therapy Linked In the description down below | |
patreon subscribers only bearape linked in the description down below | |
patreon subscribers only bearpay linked in the description down below | |
patreon subscribers throughout the pay link in the description down | |
patreon subscribe certainly bear pay linked in the description down | |
patreon subscribers only bearape linked in the description down below | |
patreon subscribe celebrate all linked in the description down below | |
patreon subscribers only bear pay linked in the description down | |
patreon subscribe certainly bearape linked in the description down below | |
patreon subscribers donald therapy link in the description down below | |
patreon subscribe certainly therapy linked in the description down below | |
patreon subscribe celebrate a link down below i've got a | |
patreon subscribers generally bearape linked in the description down below | |
patreon subscribers only bear pay link in the description down | |
patreon subscriber certainly bear pay linked in the description down | |
patreon subscribe stanley bear pay link in the description down | |
patreon subscribe stanley bear pay link in the description down | |
patreon things like that libra pay subscribe start down below | |
patreon subscribers the only bear pay linked in the description | |
patreon subscribe subscribe down below i've got a podcast called | |
patreon subscribe starliberape linked in the description down below i've | |
patreon subscribe star in liberia pay linked in the description | |
patreon subscribe to libripay all linked in the description down | |
patreon subscribe sally berape linked in the description down below | |
patreon subscriber star and libera pay linked in the description | |
patreon linked down below become one of these awesome people | |
patreon scribes that'll be veripay if you want to go | |
patreon subscribe starliberape linked in the description down below i've | |
patreon subscribe start learning all that sort of stuff i've | |
patreon subscribe star leave replay all linked in the description | |
patreon library subscribe star all that stuff is linked down | |
patreon subscribers dolly bear pay link in the description down | |
patreon subscribe to liberapay linked in the description down below | |
patreon subscribe star leave a play linked description down below | |
patreon subscribe to the library pay all linked in the | |
patreon subscribes the liberapay linked in the description down below | |
patreon subscriber pay linked in the description down below and | |
patreon subscribe start leave a pay all linked in the | |
patreon subscribe to liberapay all linked in the description down | |
patreon | |
patreon subscribe celebrate all linked in the description down below | |
patreon subscribe star library all linked in the description down | |
patreon subscribe celebrate all linked in the description down below | |
patreon subscribe start leaving people that sort of stuff i've | |
patreon subscribe start leaving paul that sort of stuff i've | |
patreon subscribe star libripay all linked in the description down | |
patreon subscribe start leave all that sort of stuff i've | |
patreon and i'm sure he would appreciate every extra dollar | |
patreon subscribe celebrate all that sort of stuff i've got | |
patreon subscribe start leaving all that sort of stuff i've | |
patreon are live repair that sort of stuff i've got | |
patreon subscribers library all that sort of stuff i've got | |
patreon subscribe to the library that sort of stuff i've | |
patreon subscribe start leaving all that sort of stuff i've | |
patreon subscribe start leaving all that sort of stuff i've | |
patreon subscribe start leave replay all that sort of stuff | |
patreon subscribe start labor pal that sort of stuff i've | |
patreon subscriber style library all that sort of stuff i've | |
patreon subscriber lever pay all that sort of stuff i've | |
patreon subscribe celebrate all that sort of stuff i've got | |
patreon subscribe start leaving all that sort of stuff i've | |
patreon subscriber style delivery pay all that sort of stuff | |
patreon subscribe start labor pay all that sort of stuff | |
patreon subscribe to our library all that sort of stuff | |
patreon subscribe start live pay all that sort of stuff | |
patreon subscribe star i think that's everything subscribe me and | |
patreon subscribe start leave me pay all that sort of | |
patreon subscribe start library all that sort of stuff i've | |
patreon subscribe start laborpal that sort of stuff i've got | |
patreon subscribe star leave a pay all that sort of | |
patreon subscribe celebrate all that sort of stuff i've got | |
patreon subscribe to leave afraid all of that sort of | |
patreon subscribe start labor pay all that sort of stuff | |
patreon subscribe start leaving all that sort of stuff i've | |
patreon subscribe start labor pay all that sort of stuff | |
patreon subscribe start leave it pay and all that sort | |
patreon subscribe star all of that sort of stuff i've | |
patreon subscriber style pay all that sort of stuff i've | |
patreon subscribe start labor pay all that sort of stuff | |
patreon subscribe start leave all that sort of stuff i've | |
patreon subscribe start leaving pay all that sort of stuff | |
patreon subscribe start leaving all that sort of stuff i've | |
patreon subscribe to our library all that sort of stuff | |
patreon subscribe star library all that sort of stuff i've | |
patreon subscribe star level play all that sort of stuff | |
patreon subscribe start leaving all that sort of stuff i've | |
patreon subscribers style library all that sort of stuff i | |
patreon subscribers i'll leave all that sort of stuff i've | |
patreon subscribe style library all of that sort of stuff | |
patreon live pay subscribe star all that sort of stuff | |
patreon subscribe to our library all that sort of stuff | |
patreon subscribe star level play all that sort of stuff | |
patreon subscribe style library all that sort of stuff i've | |
patreon subscribe star leave replay all that sort of stuff | |
patreon subscribe start leave me play all that sort of | |
patreon subscribe celebrate all that sort of stuff | |
patreon subscribe star leave replay all that sort of stuff | |
patreon subscribers i'll leave you pay all that sort of | |
patreon subscribers i'll leave all that sort of stuff i've | |
patreon subscribe to our library all that sort of stuff | |
patreon library all that sort of stuff i've got my |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cachetools==5.3.3 | |
certifi==2024.6.2 | |
charset-normalizer==3.3.2 | |
google-api-core==2.19.1 | |
google-api-python-client==2.136.0 | |
google-auth==2.31.0 | |
google-auth-httplib2==0.2.0 | |
googleapis-common-protos==1.63.2 | |
httplib2==0.22.0 | |
idna==3.7 | |
isodate==0.6.1 | |
proto-plus==1.24.0 | |
protobuf==5.27.2 | |
pyasn1==0.6.0 | |
pyasn1_modules==0.4.0 | |
pyparsing==3.1.2 | |
requests==2.32.3 | |
rsa==4.9 | |
six==1.16.0 | |
uritemplate==4.1.1 | |
urllib3==2.2.2 | |
youtube-transcript-api==0.6.2 | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
import os | |
import argparse | |
from googleapiclient.discovery import build | |
from youtube_transcript_api import YouTubeTranscriptApi | |
import isodate | |
import time | |
import logging | |
# Set up logging | |
logging.basicConfig(filename='script.log', level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') | |
logging.getLogger('googleapiclient.discovery_cache').setLevel(logging.ERROR) | |
def get_video_ids(channel_id, youtube, limit): | |
video_ids = [] | |
next_page_token = None | |
while True: | |
request = youtube.search().list( | |
part='snippet', | |
channelId=channel_id, | |
maxResults=50, | |
pageToken=next_page_token, | |
type='video', | |
order='date' | |
) | |
response = request.execute() | |
for item in response['items']: | |
video_ids.append(item['id']['videoId']) | |
if limit and len(video_ids) >= limit: | |
return video_ids | |
next_page_token = response.get('nextPageToken') | |
if not next_page_token: | |
break | |
# Add a delay to avoid hitting rate limits | |
time.sleep(1) | |
return video_ids | |
def get_captions(video_id): | |
try: | |
transcript = YouTubeTranscriptApi.get_transcript(video_id, languages=['en']) | |
return transcript | |
except Exception as e: | |
logging.error(f"Error fetching transcript for video {video_id}: {e}") | |
return None | |
def extract_last_n_seconds(transcript, duration, seconds): | |
start_time = duration - seconds | |
last_n_captions = [entry['text'] for entry in transcript if entry['start'] >= start_time] | |
return last_n_captions | |
def process_captions(captions, phrase, pre_lines, post_lines): | |
processed_text = [] | |
after_phrase_text = [] | |
found_phrase = False | |
# Search for the phrase and collect lines before and after it | |
for i, line in enumerate(captions): | |
if phrase in line and not found_phrase: | |
start_index = max(0, i - pre_lines) | |
processed_text = captions[start_index:i + 1] | |
found_phrase = True | |
# Collect specified number of lines after the phrase match | |
after_phrase_text = captions[i + 1:i + 1 + post_lines] | |
break | |
if not found_phrase: | |
return "Phrase not found" | |
# Remove text after "[Music]" | |
final_text = [] | |
for line in after_phrase_text: | |
if "[Music]" in line: | |
break | |
final_text.append(line) | |
return " ".join(processed_text + final_text) | |
def main(api_key, channel_id, limit, seconds, pre_lines, post_lines, phrase): | |
youtube = build('youtube', 'v3', developerKey=api_key) | |
video_ids = get_video_ids(channel_id, youtube, limit) | |
with open('captions.txt', 'w') as f: | |
for video_id in video_ids: | |
transcript = get_captions(video_id) | |
if transcript: | |
# Fetch video details to get duration | |
video_details = youtube.videos().list(part='contentDetails', id=video_id).execute() | |
duration = isodate.parse_duration(video_details['items'][0]['contentDetails']['duration']).total_seconds() | |
captions = extract_last_n_seconds(transcript, duration, seconds) | |
processed_text = process_captions(captions, phrase, pre_lines, post_lines) | |
captions_dict = {video_id: processed_text} | |
# Print results immediately | |
print(f"Video ID: {video_id}\nCaptions: {captions_dict[video_id]}\n") | |
# Also write to file | |
f.write(f"Video ID: {video_id}\nCaptions: {captions_dict[video_id]}\n\n") | |
# Add a delay to avoid hitting rate limits | |
time.sleep(1) | |
if __name__ == '__main__': | |
parser = argparse.ArgumentParser(description='Extract last n seconds of captions from YouTube videos.') | |
parser.add_argument('-k', '--api_key', required=True, help='YouTube Data API key') | |
parser.add_argument('-u', '--channel_id', required=True, help='YouTube Channel ID') | |
parser.add_argument('-l', '--limit', type=int, default=None, help='Limit the number of videos to process') | |
parser.add_argument('-s', '--seconds', type=int, default=30, help='Number of seconds from the end of the video to extract captions') | |
parser.add_argument('-b', '--before', type=int, default=2, help='Number of lines to collect before the phrase match') | |
parser.add_argument('-a', '--after', type=int, default=10, help='Number of lines to collect after the phrase match') | |
parser.add_argument('-p', '--phrase', type=str, default='like the video', help='Phrase to search for in the captions') | |
args = parser.parse_args() | |
main(args.api_key, args.channel_id, args.limit, args.seconds, args.before, args.after, args.phrase) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment