From 179e51070ad0883d0fb41decd9fa15dbc911f774 Mon Sep 17 00:00:00 2001 From: timothyafolami Date: Thu, 15 Aug 2024 21:18:38 +0100 Subject: [PATCH] initial update, video snapshotting reduced --- __pycache__/utils.cpython-311.pyc | Bin 20867 -> 21162 bytes data/documents.json | 2 +- doc-experiment.ipynb | 20 +- .../faiss_index_data/index.faiss | Bin 1027629 -> 1047597 bytes .../faiss_index_data/index.pkl | Bin 1040412 -> 1019951 bytes loggings/app.log | 179 ++++++++++++++++++ utils.py | 30 +-- video_experiment.ipynb | 79 ++++++-- 8 files changed, 276 insertions(+), 34 deletions(-) rename {vec-db/index => index}/faiss_index_data/index.faiss (93%) rename {vec-db/index => index}/faiss_index_data/index.pkl (86%) diff --git a/__pycache__/utils.cpython-311.pyc b/__pycache__/utils.cpython-311.pyc index 27ee61c929222edcbb9cb703f67297da1407a4b0..e43127e3a03cf0b52c190691a6c1f1823531efb6 100644 GIT binary patch delta 2986 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 delta 43449 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 aA{^+={UX#%S%Y`R*p0pAg=qDD6#fT|eWLXM diff --git a/vec-db/index/faiss_index_data/index.pkl b/index/faiss_index_data/index.pkl similarity index 86% rename from vec-db/index/faiss_index_data/index.pkl rename to index/faiss_index_data/index.pkl index e7ddad08618613d7bd0f948143a91e252aa0d0fa..fd62b2c38c487a2a411e6e6a120a78653551ca18 100644 GIT binary patch delta 55143 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%0DtidFo5`PU;yzXFwhwA zS6~3~KfnOuZ@>WJ@4x_JBY|~C)CkOjCpV_4q?8fgM6@EwE#VZ3K1_v8}+gO#sgpm=&>|z?vbp z7g$@w4g%|h=l})~I|2iU=KuqUoqz$vbAbWG^MC=w&cFa-7lGBs@Q1Fz0Ae>_0P%ca z0I@qTfY<{VKr99Z5PJdxh`oRTL?<0`W_6G(KOMn5y0l)y_KwtpzB47aV zVqgIA5?}!F(t0og{9zCQmpfEWe_5HAA;5QhK*h(mz^#9_by;&5O9aRe}c zcsVeDI1(5@90d#@UI7dsUI`2!){h1wz#ql{1BhdR0mQ3-0mN~@0O&$Pt`?Xb@fv}( zK)hC94#evO))jHQz?_H?fdvtx0_%?$6WAccxWGmrN&*{;m=IV5uztt{ftBJfk^-BA zSSqk-h)iHNA(jbj9%8w`mLOIL>;c3|fjxm(1tUhBD6kh1CkbpTVzt2DL#z?lUc_1$ zC}N$!zC)ZWu%DXY`kx}OMj+u2nJO>~;xvJsg?PQd+9OUESQo?_V1$S>1lAkzMuA;~ z2vax&ai+jVBi;lfL%bQL6mgco>JVpxwIkjlu-g&mz*L@v>;G1P-G{%pO<<2A-Y&4U zh<6BV1L9nmL&SLk+ktqez&=2nFR=ZH3k3Eh;#~qejJQx>#}V%q*nbck1g38exCo{Y zak0RfBQ6nGyL$XV7T9@+_Xw;Q@m_)X5SI$9FXA$RU5t32z=k5;44D_{x{ z9}rkI;)7tkhz|*DHsVTw-HG@xOd;YU0$YLjDA>^B_`_oYTZi~KSS{izfxQM;H)m1L F{|C=T23G(8 delta 78371 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 diff --git a/loggings/app.log b/loggings/app.log index 5a766d3e..f3e75e05 100644 --- a/loggings/app.log +++ b/loggings/app.log @@ -354,3 +354,182 @@ To avoid injury, hold up the wheel when unscrewing the bolts. attn_output = torch.nn.functional.scaled_dot_product_attention( 2024-08-14 16:45:56,307 - INFO - Search completed +2024-08-15 02:50:54,898 - INFO - Loading data from ./data +2024-08-15 02:51:13,757 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:51:17,730 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:51:25,478 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:51:29,559 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:51:30,838 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:51:43,938 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:51:48,599 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:51:53,119 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:51:56,122 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 503 Service Unavailable" +2024-08-15 02:58:26,198 - INFO - Loading data from ./data +2024-08-15 02:58:35,088 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:58:39,468 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:58:47,928 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:58:52,079 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:58:53,610 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:59:06,807 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:59:11,727 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:59:17,438 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:59:23,060 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:59:25,319 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 02:59:58,461 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:00:04,908 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:00:10,818 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:00:16,989 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:00:23,071 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:00:28,828 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:00:34,849 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:00:41,339 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:00:47,520 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:00:51,789 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:01:27,979 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:01:34,899 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:01:41,883 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:01:48,668 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:01:56,028 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:02:02,739 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:02:09,347 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:02:15,747 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:02:22,678 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:02:29,228 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:02:33,009 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:09:51,057 - INFO - Loading data from ./data +2024-08-15 03:11:37,962 - INFO - Loading data from ./data +2024-08-15 03:12:20,149 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:12:34,958 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:12:43,958 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:13:03,545 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:13:11,378 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:13:17,988 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:13:25,790 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:20:51,439 - INFO - Loading data from ./data +2024-08-15 03:21:24,219 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:21:30,869 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:21:37,388 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:21:43,899 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:21:51,445 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:21:57,611 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:22:03,099 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:23:13,128 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:23:18,299 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:23:23,898 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:23:27,794 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:34:01,343 - INFO - Loading data from ./data +2024-08-15 03:34:48,349 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:34:57,477 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:35:04,349 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:35:10,669 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:35:16,839 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:35:23,719 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:35:29,898 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:47:20,018 - INFO - Loading data from ./data +2024-08-15 03:48:01,680 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:48:09,678 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:48:15,919 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:48:21,999 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:48:28,079 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:48:34,320 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:48:39,758 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 03:59:23,679 - INFO - Loading data from ./data +2024-08-15 03:59:56,997 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:00:03,430 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:00:09,989 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:00:16,389 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:00:22,638 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:00:29,189 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:00:35,119 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:05,308 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:07,939 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:10,648 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:13,071 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:15,268 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:17,508 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:19,750 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:22,469 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:24,906 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:27,088 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:29,509 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:31,585 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:34,130 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:36,878 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:39,288 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:41,519 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:43,744 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:45,988 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:48,548 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:50,788 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:02:52,588 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:03:16,232 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:03:18,798 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:03:21,508 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:03:23,889 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:03:25,963 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:03:28,390 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:03:30,498 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:03:32,388 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:03:35,020 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:03:37,029 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:03:38,990 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:03:40,388 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:04:13,189 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 04:04:21,340 - INFO - Data loaded +2024-08-15 04:04:21,340 - INFO - Creating vector store +2024-08-15 04:04:23,029 - WARNING - C:\Users\timmy_3aupohg\anaconda3\envs\smog_env\Lib\site-packages\transformers\models\bert\modeling_bert.py:439: UserWarning: 1Torch was not compiled with flash attention. (Triggered internally at C:\cb\pytorch_1000000000000\work\aten\src\ATen\native\transformers\cuda\sdp_utils.cpp:555.) + attn_output = torch.nn.functional.scaled_dot_product_attention( + +2024-08-15 04:04:33,168 - INFO - Vector store created +2024-08-15 04:04:33,168 - INFO - Saving the vector store +2024-08-15 04:04:33,168 - INFO - Vector store saved +2024-08-15 12:42:46,936 - INFO - Loading data from ./data +2024-08-15 12:43:28,300 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:43:51,069 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:44:11,663 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:44:38,182 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:44:56,573 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:45:09,049 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:45:23,111 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:46:58,999 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:47:06,789 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:47:11,359 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:47:17,169 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:47:20,999 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:47:25,946 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:47:30,318 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:47:34,530 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:47:39,720 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:47:44,220 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:47:50,049 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:47:53,917 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:47:56,992 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:00,220 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:03,059 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:05,610 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:09,288 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:12,578 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:15,889 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:18,429 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:20,202 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:42,558 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:44,728 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:47,235 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:49,078 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:51,400 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:54,129 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:56,059 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:48:57,929 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:49:00,270 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:49:02,591 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:49:04,690 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:49:06,053 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:49:45,358 - INFO - HTTP Request: POST https://api.groq.com/openai/v1/audio/translations "HTTP/1.1 200 OK" +2024-08-15 12:49:56,013 - INFO - Data loaded +2024-08-15 12:49:56,013 - INFO - Creating vector store +2024-08-15 12:49:57,581 - WARNING - C:\Users\timmy_3aupohg\anaconda3\envs\smog_env\Lib\site-packages\transformers\models\bert\modeling_bert.py:439: UserWarning: 1Torch was not compiled with flash attention. (Triggered internally at C:\cb\pytorch_1000000000000\work\aten\src\ATen\native\transformers\cuda\sdp_utils.cpp:555.) + attn_output = torch.nn.functional.scaled_dot_product_attention( + +2024-08-15 12:50:08,732 - INFO - Vector store created +2024-08-15 12:50:08,732 - INFO - Saving the vector store +2024-08-15 12:50:08,745 - INFO - Vector store saved diff --git a/utils.py b/utils.py index 44223aed..499ff917 100644 --- a/utils.py +++ b/utils.py @@ -10,6 +10,7 @@ from uuid import uuid4 from langchain_core.documents import Document from text_extractor import TextExtractor import os +import math import json from groq import Groq import re @@ -213,10 +214,10 @@ def split_audio_by_duration(audio_file_path, chunk_duration_minutes, print_outpu chunk_paths = [] if audio_duration_ms > chunk_length_ms: - # Calculate the number of chunks - num_chunks = audio_duration_ms // chunk_length_ms + (1 if audio_duration_ms % chunk_length_ms != 0 else 0) + # Calculate the number of chunks, using math.ceil to ensure rounding up + num_chunks = math.ceil(audio_duration_ms / chunk_length_ms) - for i in range(num_chunks): + for i in range(int(num_chunks)): start_ms = i * chunk_length_ms end_ms = min(start_ms + chunk_length_ms, audio_duration_ms) chunk = audio[start_ms:end_ms] @@ -299,7 +300,7 @@ def preprocess_video_data(video_path: str, time_interval: int): video_name = os.path.splitext(os.path.basename(video_path))[0] # Create a directory for snapshots using the video name - snapshot_dir = os.path.join(os.path.dirname(video_path), f"{video_name}_snapshots") + snapshot_dir = os.path.join(os.path.dirname(video_path), f"{video_name}") os.makedirs(snapshot_dir, exist_ok=True) # Get the duration of the video using ffmpeg @@ -308,15 +309,19 @@ def preprocess_video_data(video_path: str, time_interval: int): # Loop through the video and take snapshots at 0s, 3min, 6min, etc. for i in range(0, int(duration), time_interval): - # Calculate the time for the current frame - frame_time = i + start_time = i + end_time = min(i + time_interval, int(duration)) + + # Format the interval as 'start-end' + interval_str = f"{start_time}-{end_time}" + # Save the snapshot as an image file in the created folder - frame_img = os.path.join(snapshot_dir, f"frame_at_{frame_time//60}min.png") + frame_img = os.path.join(snapshot_dir, f"{interval_str}s.png") # Extract the frame using ffmpeg ( ffmpeg - .input(video_path, ss=frame_time) + .input(video_path, ss=start_time) .output(frame_img, vframes=1) .run() ) @@ -326,6 +331,9 @@ def preprocess_video_data(video_path: str, time_interval: int): # now creating document from the audio file documents = create_audio_document(audio_path, chunk_duration_minutes=0.5, file_type='video') + + # deleting the audio file + os.remove(audio_path) return documents @@ -333,11 +341,11 @@ def preprocess_video_data(video_path: str, time_interval: int): #-----------------------------------------------------OTHERS-------------------------------------------------------------- def save_embedded_data(embeddings, key="data"): - embeddings.save_local(f"vec-db/index/faiss_index_{key}") + embeddings.save_local(f"index/faiss_index_{key}") print("Embeddings saved") def load_embedded_data(embeddings=embeddings, key="data"): - embed_db = FAISS.load_local(f"vec-db/index/faiss_index_{key}", embeddings, allow_dangerous_deserialization=True) + embed_db = FAISS.load_local(f"index/faiss_index_{key}", embeddings, allow_dangerous_deserialization=True) return embed_db @@ -361,7 +369,7 @@ def load_documents_from_directory(directory_path: str): # updating the path path = os.path.join(directory_path, file) # getting the file extension and doc name - doc_name, extension = file.split('.')[0] , file.split('.')[-1] + doc_name, extension = path.split('/')[-1].split('.')[0] , file.split('.')[-1] # checking if the file is a text document if extension in text_doc: # loading the document diff --git a/video_experiment.ipynb b/video_experiment.ipynb index 1c0454bf..1156d87b 100644 --- a/video_experiment.ipynb +++ b/video_experiment.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -32,7 +32,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -58,7 +58,7 @@ " video_name = os.path.splitext(os.path.basename(video_path))[0]\n", "\n", " # Create a directory for snapshots using the video name\n", - " snapshot_dir = os.path.join(os.path.dirname(video_path), f\"{video_name}_snapshots\")\n", + " snapshot_dir = os.path.join(os.path.dirname(video_path), f\"{video_name}\")\n", " os.makedirs(snapshot_dir, exist_ok=True)\n", "\n", " # Set the interval to 3 minutes (180 seconds)\n", @@ -70,15 +70,19 @@ "\n", " # Loop through the video and take snapshots at 0s, 3min, 6min, etc.\n", " for i in range(0, int(duration), interval):\n", - " # Calculate the time for the current frame\n", - " frame_time = i\n", + " start_time = i\n", + " end_time = min(i + interval, int(duration))\n", + " \n", + " # Format the interval as 'start-end'\n", + " interval_str = f\"{start_time}-{end_time}\"\n", + " \n", " # Save the snapshot as an image file in the created folder\n", - " frame_img = os.path.join(snapshot_dir, f\"frame_at_{frame_time//60}min.png\")\n", + " frame_img = os.path.join(snapshot_dir, f\"frame_at_{interval_str}s.png\")\n", " \n", " # Extract the frame using ffmpeg\n", " (\n", " ffmpeg\n", - " .input(video_path, ss=frame_time)\n", + " .input(video_path, ss=start_time)\n", " .output(frame_img, vframes=1)\n", " .run()\n", " )\n", @@ -87,14 +91,17 @@ " \n", " \n", " # now creating document from the audio file\n", - " documents = create_audio_document(audio_path, file_type='video')\n", + " documents = create_audio_document(audio_path, file_type='video', chunk_duration_minutes=0.5)\n", + " \n", + " # deleting the audio file\n", + " os.remove(audio_path)\n", " return documents\n", "\n" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -116,34 +123,68 @@ "output_type": "stream", "text": [ "MoviePy - Done.\n", - "Snapshots saved in data\\How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_snapshots.\n", + "Snapshots saved in data\\How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC].\n", "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk1.mp3\n", "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk2.mp3\n", "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk3.mp3\n", - "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk4.mp3\n" + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk4.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk5.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk6.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk7.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk8.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk9.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk10.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk11.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk12.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk13.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk14.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk15.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk16.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk17.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk18.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk19.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk20.mp3\n", + "Exporting How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunks/How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]_chunk21.mp3\n" ] } ], "source": [ "# Implementing the function\n", - "documents = preprocess_video_data(video_path, 180)" + "documents = preprocess_video_data(video_path, 30)" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '0-3 minutes', 'file_type': 'video'}, page_content=\" Hi everybody! Here's the latest installment of AutoDoc's video tutorials on replacing car parts. The channel so you never miss a video. We post new ones every week!\"),\n", - " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '3-6 minutes', 'file_type': 'video'}, page_content=\" How to make a You can buy spare parts from us on our website or in the Autodoc app. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. 15. Remove the rear window cover. 16. Remove the rear window cover. 17. Remove the rear window cover. 18. Remove the rear window cover. 19. Remove the rear window cover. I'll see you next time.\"),\n", - " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '6-9 minutes', 'file_type': 'video'}, page_content=\" How to make a Are you interested in this product? All links can be found in the description. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. I'm going to make a hole in the bottom of the box. Add the so I going to make a fire with a fire extinguisher I going to make a fire with a fire extinguisher I'm going to make a fire with a fire extinguisher. I'm going to make a fire with a fire extinguisher. I'm going to make a fire with a fire extinguisher. The\"),\n", - " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '9-12 minutes', 'file_type': 'video'}, page_content=\" I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. Thank you for watching our video tutorials. If you enjoyed watching, click thumbs up and share it with your friends. Have a nice day! Follow us on social media. Find us on Instagram and TikTok!\")]" + "[Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '0.0-0.5 minutes', 'file_type': 'video'}, page_content=\" Hi everybody! Here is the latest installment of AutoDoc's video tutorials on replacing car parts.\"),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '0.5-1.0 minutes', 'file_type': 'video'}, page_content=''),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '1.0-1.5 minutes', 'file_type': 'video'}, page_content=\" I'm going to use a plastic to prevent the air from coming out. I'm going to use a plastic to prevent the air from coming out. I'm going to use a plastic to prevent the air from coming out. I'm going to use a plastic to prevent the air from coming out. I'm going to use a plastic to prevent the air from coming out. I'm going to use a plastic to prevent the air from coming out. I'm going to use a plastic to prevent the air from coming out. I'm going to use a plastic to prevent the air from coming out. I'm going to use a plastic to prevent the air from coming out. I'm going to use a plastic to prevent the air from coming out.\"),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '1.5-2.0 minutes', 'file_type': 'video'}, page_content=' The week.'),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '2.0-2.5 minutes', 'file_type': 'video'}, page_content=''),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '2.5-3.0 minutes', 'file_type': 'video'}, page_content=''),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '3.0-3.5 minutes', 'file_type': 'video'}, page_content=' 15. Install the new Thanks for watching!'),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '3.5-4.0 minutes', 'file_type': 'video'}, page_content=\" I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. you\"),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '4.0-4.5 minutes', 'file_type': 'video'}, page_content=''),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '4.5-5.0 minutes', 'file_type': 'video'}, page_content=' You can buy spare parts from us on our website or in the Autodoc app.'),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '5.0-5.5 minutes', 'file_type': 'video'}, page_content=\" I'm going to make a fire with a fire extinguisher. I'll make a fire with a fire extinguisher. I'll make a fire with a fire extinguisher. I'll make a fire with a fire extinguisher. I'll make a fire with a fire extinguisher.\"),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '5.5-6.0 minutes', 'file_type': 'video'}, page_content=''),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '6.0-6.5 minutes', 'file_type': 'video'}, page_content=' Are you interested in this product? All links can be found in the description.'),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '6.5-7.0 minutes', 'file_type': 'video'}, page_content=\" I'm going to make a fire with a fire-breathing gun. I'm going to make a fire with a fire-breathing gun. I'm going to make a fire with a fire-breathing gun. I'm going to make a fire with a fire-breathing gun. I'm going to make a fire with a fire-breathing gun. I'm going to make a fire with a fire-breathing gun. I'm going to make a fire with a fire-breathing gun. I'm going to make a fire with a fire-breathing gun. I'm going to make a fire with a fire-breathing gun. I'm going to make a fire with a fire-breathing gun. I'm going to make a fire with a fire-breathing gun. I'm going to make a fire with a fire-breathing gun. I'm going to make a fire with a fire-breathing gun. Thanks for watching!\"),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '7.0-7.5 minutes', 'file_type': 'video'}, page_content=\" I'm going to make a fire with a fire extinguisher. I'm going to make a fire with a fire extinguisher. I'm going to make a fire with a fire extinguisher. I'm going to make a fire with a fire extinguisher. I'm going to make a fire with a fire extinguisher.\"),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '7.5-8.0 minutes', 'file_type': 'video'}, page_content=' The Share this video if you found it interesting.'),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '8.0-8.5 minutes', 'file_type': 'video'}, page_content=''),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '8.5-9.0 minutes', 'file_type': 'video'}, page_content=''),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '9.0-9.5 minutes', 'file_type': 'video'}, page_content=\" I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one. I'm going to make a new one.\"),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '9.5-10.0 minutes', 'file_type': 'video'}, page_content=' Thank you for watching our video tutorials. If you enjoyed watching, click thumbs up and share it with your friends. Have a nice day! Follow us on social media. Find us on Instagram and TikTok.'),\n", + " Document(metadata={'filename': 'How to change front wheel bearing on TOYOTA RAV4 II [TUTORIAL AUTODOC]', 'duration': '10.0-10.5 minutes', 'file_type': 'video'}, page_content='')]" ] }, - "execution_count": 5, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" }