Spaces:
Runtime error
Runtime error
Upload 2 files
#1
by bacngv - opened
- crawler/TikiComments.ipynb +182 -0
- crawler/YouTubeComments.ipynb +603 -0
crawler/TikiComments.ipynb
ADDED
|
@@ -0,0 +1,182 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "code",
|
| 5 |
+
"execution_count": 91,
|
| 6 |
+
"id": "e8dc07d5-ffdc-4c2a-b1a6-7ffed81e5005",
|
| 7 |
+
"metadata": {},
|
| 8 |
+
"outputs": [],
|
| 9 |
+
"source": [
|
| 10 |
+
"from selenium import webdriver\n",
|
| 11 |
+
"from time import sleep\n",
|
| 12 |
+
"from selenium.webdriver.common.keys import Keys\n",
|
| 13 |
+
"from selenium.webdriver.chrome.options import Options\n",
|
| 14 |
+
"from selenium.common.exceptions import NoSuchElementException\n",
|
| 15 |
+
"import csv"
|
| 16 |
+
]
|
| 17 |
+
},
|
| 18 |
+
{
|
| 19 |
+
"cell_type": "code",
|
| 20 |
+
"execution_count": 100,
|
| 21 |
+
"id": "187f2ff1-3340-4015-bdc5-710ff7cae5d6",
|
| 22 |
+
"metadata": {},
|
| 23 |
+
"outputs": [],
|
| 24 |
+
"source": [
|
| 25 |
+
"from selenium.webdriver.common.keys import Keys\n",
|
| 26 |
+
"\n",
|
| 27 |
+
"chrome_options = Options()\n",
|
| 28 |
+
"chrome_options.add_argument(\"--disable-notifications\")\n",
|
| 29 |
+
"\n",
|
| 30 |
+
"def scroll_to_position(browser, start_position, end_position):\n",
|
| 31 |
+
" current_position = start_position\n",
|
| 32 |
+
" while current_position < end_position:\n",
|
| 33 |
+
" browser.execute_script(\"window.scrollTo(0, {});\".format(current_position))\n",
|
| 34 |
+
" current_position += 10\n",
|
| 35 |
+
"\n",
|
| 36 |
+
"def get_comment_from_url(url):\n",
|
| 37 |
+
" browser = webdriver.Chrome(executable_path=\"C:/Users/bacth/OneDrive/Desktop/chromedriver-win64/chromedriver.exe\", chrome_options=chrome_options)\n",
|
| 38 |
+
" browser.get(url)\n",
|
| 39 |
+
" browser.implicitly_wait(10)\n",
|
| 40 |
+
"\n",
|
| 41 |
+
"\n",
|
| 42 |
+
" comments = []\n",
|
| 43 |
+
" while True:\n",
|
| 44 |
+
" page_height = browser.execute_script(\"return document.body.scrollHeight\")\n",
|
| 45 |
+
" scroll_to_position(browser, page_height // 3, page_height // 1.6)\n",
|
| 46 |
+
" sleep(5)\n",
|
| 47 |
+
" \n",
|
| 48 |
+
" cmt_list = browser.find_elements_by_class_name('review-comment__content')\n",
|
| 49 |
+
" if cmt_list :\n",
|
| 50 |
+
" for cmt in cmt_list:\n",
|
| 51 |
+
" comments.append(cmt.text)\n",
|
| 52 |
+
" sleep(5)\n",
|
| 53 |
+
" try:\n",
|
| 54 |
+
" cmt_list = browser.find_element_by_xpath('//*[@id=\"customer-review-widget-id\"]/div/div[2]/div/div[10]/ul/li[7]/a')\n",
|
| 55 |
+
" if cmt_list:\n",
|
| 56 |
+
" cmt_list.click()\n",
|
| 57 |
+
" else:\n",
|
| 58 |
+
" break\n",
|
| 59 |
+
" except NoSuchElementException:\n",
|
| 60 |
+
" break\n",
|
| 61 |
+
" else:\n",
|
| 62 |
+
" break\n",
|
| 63 |
+
" return comments\n",
|
| 64 |
+
"def save_comments_to_csv(comments, file_path):\n",
|
| 65 |
+
" with open(file_path, 'w', newline='', encoding='utf-8') as csv_file:\n",
|
| 66 |
+
" writer = csv.writer(csv_file)\n",
|
| 67 |
+
" writer.writerow(['Comments'])\n",
|
| 68 |
+
" for comment in comments:\n",
|
| 69 |
+
" writer.writerow([comment])"
|
| 70 |
+
]
|
| 71 |
+
},
|
| 72 |
+
{
|
| 73 |
+
"cell_type": "code",
|
| 74 |
+
"execution_count": 105,
|
| 75 |
+
"id": "7dde57b9-432c-4231-94b8-b5f5e272e437",
|
| 76 |
+
"metadata": {},
|
| 77 |
+
"outputs": [
|
| 78 |
+
{
|
| 79 |
+
"name": "stderr",
|
| 80 |
+
"output_type": "stream",
|
| 81 |
+
"text": [
|
| 82 |
+
"C:\\Users\\bacth\\AppData\\Local\\Temp\\ipykernel_1376\\2912522835.py:14: DeprecationWarning: executable_path has been deprecated, please pass in a Service object\n",
|
| 83 |
+
" browser = webdriver.Chrome(executable_path=\"C:/Users/bacth/OneDrive/Desktop/chromedriver-win64/chromedriver.exe\", chrome_options=chrome_options)\n",
|
| 84 |
+
"C:\\Users\\bacth\\AppData\\Local\\Temp\\ipykernel_1376\\2912522835.py:14: DeprecationWarning: use options instead of chrome_options\n",
|
| 85 |
+
" browser = webdriver.Chrome(executable_path=\"C:/Users/bacth/OneDrive/Desktop/chromedriver-win64/chromedriver.exe\", chrome_options=chrome_options)\n",
|
| 86 |
+
"C:\\Users\\bacth\\AppData\\Local\\Temp\\ipykernel_1376\\2912522835.py:29: DeprecationWarning: find_elements_by_* commands are deprecated. Please use find_elements() instead\n",
|
| 87 |
+
" cmt_list = browser.find_elements_by_class_name('review-comment__content')\n",
|
| 88 |
+
"C:\\Users\\bacth\\AppData\\Local\\Temp\\ipykernel_1376\\2912522835.py:35: DeprecationWarning: find_element_by_* commands are deprecated. Please use find_element() instead\n",
|
| 89 |
+
" cmt_list = browser.find_element_by_xpath('//*[@id=\"customer-review-widget-id\"]/div/div[2]/div/div[10]/ul/li[7]/a')\n"
|
| 90 |
+
]
|
| 91 |
+
}
|
| 92 |
+
],
|
| 93 |
+
"source": [
|
| 94 |
+
"cmt = get_comment_from_url('https://tiki.vn/nuoc-mam-truyen-thong-le-gia-cot-dac-biet-525ml-p1987981.html?spid=1987983&itm_campaign=tiki-reco_UNK_DT_UNK_UNK_deal-hot_UNK_rule-base-flash-deal-v3_UNK_RB_batched_PID.1987983&itm_medium=CPC&itm_source=tiki-reco&tclid=9125b92218738e463688f073c2555391ce769a2882d8b359eb31ccabbd0ac84c')"
|
| 95 |
+
]
|
| 96 |
+
},
|
| 97 |
+
{
|
| 98 |
+
"cell_type": "code",
|
| 99 |
+
"execution_count": 106,
|
| 100 |
+
"id": "a098b936-8346-439b-98c2-997eff0acd03",
|
| 101 |
+
"metadata": {},
|
| 102 |
+
"outputs": [],
|
| 103 |
+
"source": [
|
| 104 |
+
"cmt = np.array(cmt)\n",
|
| 105 |
+
"save_comments_to_csv(cmt,'comments.csv')"
|
| 106 |
+
]
|
| 107 |
+
},
|
| 108 |
+
{
|
| 109 |
+
"cell_type": "code",
|
| 110 |
+
"execution_count": 107,
|
| 111 |
+
"id": "377c85a4-c24e-46e9-a477-aa02ef4ed479",
|
| 112 |
+
"metadata": {},
|
| 113 |
+
"outputs": [
|
| 114 |
+
{
|
| 115 |
+
"data": {
|
| 116 |
+
"text/plain": [
|
| 117 |
+
"array(['Vị khá ngon, không bị mặn quá như nước mắm truyền thống khác\\nThời gian giao hàng rất nhanh. Rất đáng tiền. Đóng gói sản phẩm rất đẹp và chắc chắn. Chất lượng sản phẩm tuyệt vời',\n",
|
| 118 |
+
" ' mắm chuẩn ngon, từ khi dùng mắm lê gia thì nhà mình ko còn dùng mắm của những thương hiệu khác nữa. đặt hàng của chính nhà sản xuất nên rất iên tâm. chai thủy tinh luôn bọc kĩ, cẩn thận để giao cho khách.... Xem thêm',\n",
|
| 119 |
+
" ' Sản phẩm màu đẹp, mùi thơm, không bị mặn gắt rất dễ sử dụng, chai thủy tinh dày dặn, cầm chắc tay. shop đóng gói chắc chắn, tư vấn nhiệt tình, giao hàng nhanh thực sự luôn. đặt trưa hôm trước hôm sau... Xem thêm',\n",
|
| 120 |
+
" ' Mắm Lê Gia ngon, chất lượng. Mắm cốt truyền thống, không phụ gia nên dùng an tâm. Mình ưng ý nhất ở thiết kế nắp chai, rất khéo, lúc rót mắm không bị chảy dây ra chai nên rất vệ sinh. Đây cũng là điểm... Xem thêm',\n",
|
| 121 |
+
" 'thấy thành phần chỉ có cá, muối. là yên tâm dùng ròi. rất sợ nc mắm có thành phần hoá học. sẽ ủng hộ.',\n",
|
| 122 |
+
" 'Giao hàng nhanh\\nSản phẩm chất lượng, cứ bị rất ok ấy 👌\\nShop tư vấn nhiệt tình\\nSẽ ủng hộ shop nhiều 😍😍😍',\n",
|
| 123 |
+
" 'Nước mắm thơm, vị đậm đà không mặn gắt . sẽ ủng hộ shop nữa',\n",
|
| 124 |
+
" 'Đã order tiki lần 4. Ăn hơn 10c mắm truyền thống Lê gia rùi. Rất ok',\n",
|
| 125 |
+
" 'bị vỡ rồi',\n",
|
| 126 |
+
" 'ngon. cảm ơm shop. gói hàng siêu kĩ. sẽ ủng hộ lâu dài nha. ưng lắm luôn ó',\n",
|
| 127 |
+
" 'Tuyệt vời, đóng gói cẩn thận, giao hàng nhanh.',\n",
|
| 128 |
+
" 'Vị đậm đà đúng nước cốt, không giống nước mắm pha',\n",
|
| 129 |
+
" 'Chưa dùng nhưng nhìn cung cách đóng gói sản phẩm thấy yên tâm về chất lượng',\n",
|
| 130 |
+
" 'Nước mắm ngon, vừa miệng. Đóng gói cẩn thận, giao hành rất nhanh.',\n",
|
| 131 |
+
" 'ĐÓNG GÓI RẤT CẨN THẬN- GIAO HÀNG NHANH - CHẤT LƯỢNG NƯỚC MẮM TUYỆT HẢO , RẤT ĐÁNG MUA !',\n",
|
| 132 |
+
" '', 'Ngon Nhat 36 N 80k ok', '',\n",
|
| 133 |
+
" 'Hương vị chuẩn thơm dịu dàng, mầu nâu vàng ko kết tủa, mùi mặn ngọt thanh dịu ko bị gắt khi vào cổ họng',\n",
|
| 134 |
+
" 'thơm ngon',\n",
|
| 135 |
+
" ' Nước mắm có hương vị giống y như chén nước mắm ớt ăn kèm canh chua cá hú lúc còn nhỏ. Không nồng nặc mùi mắm như các sản phẩm truyền thống khác, nhưng vẫn mang đủ vị ngon không cần hóa chất. Thật sự hài... Xem thêm',\n",
|
| 136 |
+
" '', '',\n",
|
| 137 |
+
" 'Nước mắm ngon đáng mua,thấy đánh giá trên tiki ai cũng khen ngon nên oder ăn thử,ai dè ngon thật sẽ mua tiếp nếu nhà hết nc mắm',\n",
|
| 138 |
+
" '', '',\n",
|
| 139 |
+
" 'Nước mắm ăn rất ổn với gđ mình, hi vọng giá hợp li hơn nữa nha',\n",
|
| 140 |
+
" '', '', ''], dtype='<U217')"
|
| 141 |
+
]
|
| 142 |
+
},
|
| 143 |
+
"execution_count": 107,
|
| 144 |
+
"metadata": {},
|
| 145 |
+
"output_type": "execute_result"
|
| 146 |
+
}
|
| 147 |
+
],
|
| 148 |
+
"source": [
|
| 149 |
+
"cmt"
|
| 150 |
+
]
|
| 151 |
+
},
|
| 152 |
+
{
|
| 153 |
+
"cell_type": "code",
|
| 154 |
+
"execution_count": null,
|
| 155 |
+
"id": "42db7329-bdc2-4df7-affb-15985c3e8c83",
|
| 156 |
+
"metadata": {},
|
| 157 |
+
"outputs": [],
|
| 158 |
+
"source": []
|
| 159 |
+
}
|
| 160 |
+
],
|
| 161 |
+
"metadata": {
|
| 162 |
+
"kernelspec": {
|
| 163 |
+
"display_name": "Python 3 (ipykernel)",
|
| 164 |
+
"language": "python",
|
| 165 |
+
"name": "python3"
|
| 166 |
+
},
|
| 167 |
+
"language_info": {
|
| 168 |
+
"codemirror_mode": {
|
| 169 |
+
"name": "ipython",
|
| 170 |
+
"version": 3
|
| 171 |
+
},
|
| 172 |
+
"file_extension": ".py",
|
| 173 |
+
"mimetype": "text/x-python",
|
| 174 |
+
"name": "python",
|
| 175 |
+
"nbconvert_exporter": "python",
|
| 176 |
+
"pygments_lexer": "ipython3",
|
| 177 |
+
"version": "3.10.9"
|
| 178 |
+
}
|
| 179 |
+
},
|
| 180 |
+
"nbformat": 4,
|
| 181 |
+
"nbformat_minor": 5
|
| 182 |
+
}
|
crawler/YouTubeComments.ipynb
ADDED
|
@@ -0,0 +1,603 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"nbformat": 4,
|
| 3 |
+
"nbformat_minor": 0,
|
| 4 |
+
"metadata": {
|
| 5 |
+
"colab": {
|
| 6 |
+
"provenance": []
|
| 7 |
+
},
|
| 8 |
+
"kernelspec": {
|
| 9 |
+
"name": "python3",
|
| 10 |
+
"display_name": "Python 3"
|
| 11 |
+
},
|
| 12 |
+
"language_info": {
|
| 13 |
+
"name": "python"
|
| 14 |
+
}
|
| 15 |
+
},
|
| 16 |
+
"cells": [
|
| 17 |
+
{
|
| 18 |
+
"cell_type": "markdown",
|
| 19 |
+
"metadata": {
|
| 20 |
+
"id": "view-in-github"
|
| 21 |
+
},
|
| 22 |
+
"source": [
|
| 23 |
+
"<a href=\"https://colab.research.google.com/github/analyticswithadam/Python/blob/main/YouTubeComments.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
|
| 24 |
+
]
|
| 25 |
+
},
|
| 26 |
+
{
|
| 27 |
+
"cell_type": "markdown",
|
| 28 |
+
"source": [
|
| 29 |
+
"## Pull Comments"
|
| 30 |
+
],
|
| 31 |
+
"metadata": {
|
| 32 |
+
"id": "ExqBG7nOSzQZ"
|
| 33 |
+
}
|
| 34 |
+
},
|
| 35 |
+
{
|
| 36 |
+
"cell_type": "code",
|
| 37 |
+
"execution_count": 1,
|
| 38 |
+
"metadata": {
|
| 39 |
+
"colab": {
|
| 40 |
+
"base_uri": "https://localhost:8080/"
|
| 41 |
+
},
|
| 42 |
+
"id": "LtsUFbQJOv-5",
|
| 43 |
+
"outputId": "1a170124-99c7-4060-dc23-b313160c060b"
|
| 44 |
+
},
|
| 45 |
+
"outputs": [
|
| 46 |
+
{
|
| 47 |
+
"output_type": "stream",
|
| 48 |
+
"name": "stdout",
|
| 49 |
+
"text": [
|
| 50 |
+
"phim vui , giải trí khá ổn\n",
|
| 51 |
+
"Dở ! Review thiếu khách quan .\n",
|
| 52 |
+
"Phim dỡ kinh đầu\n",
|
| 53 |
+
".\n",
|
| 54 |
+
"sao mn chê vậy 😢 Mình thấy phim rất hay\n",
|
| 55 |
+
"Phần lồng tiếng góp phần ko nhỏ co sự dở\n",
|
| 56 |
+
"Thế quái nào mà Kai có thể hiện về được nhỉ :)))<br>Po cho hắn bay màu trong linh giới ở phần 3 rồi mà\n",
|
| 57 |
+
"Lúc xem phim t mang theo tâm thế là phim hoạt hình dành cho trẻ e và cũng từng xem hết cả 3 phần phim trc thì t thấy phim cũng ổn mà nhỉ, vượt hơn cả kì vọng của t, đối tượng phim hướng đến là trẻ e nên ng lớn nên có cái nhìn thoáng hơn về bộ phim chứ ạ. Lúc t đi xem chắc phải full rạp là trẻ e, tất cả đều hoan hỉ dzui dẻ vì mấy trò vô tri của Po😂\n",
|
| 58 |
+
"Đơn giản tên phim là kunfu panda chứ không phải là kunfu zen-chan 🤣🤣\n",
|
| 59 |
+
"Phim không dở do chúng ta lớn quá nhanh, quá để ý tiểu tiết. Chúng ta hãy nhìn những đứa con, em chúng ta xem các bé cười khoái chí rồi hẳn đánh giá\n",
|
| 60 |
+
"Thật ra phim cho con nít xem nữa nếu ở khía cạnh là không nhiều thành kiến sẽ nhìn ra ý của tác giả.<br>1/ Dù Po có ra sao thì với người cha vẫn là đứa trẻ và người cha đã cứu Po rơi xuống vực.<br>2/ Phản diện vì bị khinh bỉ từ nhỏ mà làm mọi cách để có võ thuật nhưng thứ không phải do mình cố gắng luyện tập mà có sẽ không bao giờ được bản thể gốc.<br>3/ Phim muốn nói lên việc ta phải biết buông bỏ. Po phải buông bỏ vị trí của mình sau khi đã quá thành công. Giờ là lúc cậu phải tiến lên vị trí cao hơn nữa. Và phản diện phải buông bỏ quá khứ chứ không phải sống trong quá khứ vì bị cho là không thể luyện võ mà lại dùng phép thuật cướp đi võ thuật người khác nhưng lại không nhìn ra cái có và bản thân là đặc biệt có thể biến hoá, có phép thuật.<br><br>Nhìn chung phim xoay quanh vấn đề phải biết buông bỏ, sống trong hiện tại và nhận thức hiện tại, trong mắt cha mẹ bạn luôn là đứa trẻ, … phim nêu lên rất nhiều vấn đề nhưng do kinh phí thấp có thể không kéo được thời lượng phim. Và phim nêu ra rất nhiều khía cạnh khác.<br><br>Mình hơi buồn vì có thể đây là clip mình thấy sự hờ hợt của PhePhim trong nhận định và nó mang thiên kiến đám đông nhiều hơn là thật sự cảm nhận bộ phim 1 cách trọn vẹn.\n",
|
| 61 |
+
"Po có quá trẻ để truyền ngôi ko???\n",
|
| 62 |
+
"Vắt kiệt rồi 😢,ko thấy wow như kungfu 1\n",
|
| 63 |
+
"Ông Jack Black đúng hài 😂\n",
|
| 64 |
+
"Phim này theo tui thì chỉ hài với ấn tượng bài Baby one more time thuiii chứ kiểu đánh bại con tắc kề nhanh quá=((( Tui kiểu hơi hụt hẫng ấy tại nó hút hết linh hồn của mấy ô kia rùi mà bị đánh bại nhanh vc=)) Nhm với những người chưa xem p1 p2 p3 thì chắc sẽ thấy hay ( YKR)\n",
|
| 65 |
+
"nên để gấu trúc tìm tình yêu của minh như v còn có cái khai thác\n",
|
| 66 |
+
"Tôi đã xem cả 3 phần trước nhiều lần (có cả DVD và web), sau khi xem phần 4, cơ bản: phim vẫn vui vẻ, xem lồng tiếng của nhóm Đạt Phi rất tuyệt, nhiều câu chuyển thể vần điệu rất trend. Dù màn combat cuối chưa được mãn nhãn cho lắm, nhưng vẫn là đúng chất Kungfu Panda, vẫn có tính giáo dục, vẫn là hướng thiện thắng ác.<br>Thông điệp phim vẫn có: dù ta giỏi thế nào, thì đến 1 thời điểm nào đó, nên nhường lại vị trí đó cho người khác kế thừa, và chuyển qua hỗ trợ cho họ. Bài học lớn dành cho những kẻ tham quyền cố vị. Bên cạnh đó, đó chính là "gậy ông đập lưng ông" với việc sử dụng 3 nguyên tắc của kẻ phản diện để diệt nó.\r<br>Chỉ tò mò là credit giai điệu Baby One more time vang lên có ý đồ gì đây?<br>Với mình thì có lẽ serie này đã đến lúc kết thúc. Khi xem, đúng là cảm giác hơi thiếu thốn, hụt hẫng, chuyển biến nhanh quá.\n",
|
| 67 |
+
"Đối với mình xem từ phần 1 đến phần 4 thì có hơi chút hụt hẫng nhưng nhận ra phim này dành cho trẻ en nên cũng thấy bình thường\n",
|
| 68 |
+
"Theo nhận xét của tớ , panda dành cho trẻ em nên với tôi thì cái kết khá nhanh và cũng không động lại.nhưng cái kết ấy,tớ đã thật sự thấy 1 pô khác không phải một pô vụng về cũng không phải 1 pô lười nhát,kiểu nó cho thấy pô trưởng thành hơn hẳn yyy.với phân cảnh cuối bộ 5 quay về xúc động vaiii clll\n",
|
| 69 |
+
"Cảnh final battle xem như Po nhường phản diện ý, còn Zhen thì tự nhiên múa đc chiêu của cây trượng thì đúng kiểu wtf luôn. Từ đầu gặp phản diện nếu lấy lại đc cây trượng Po dùng trượng đập luôn thì combat này đúng 1 phút endgame\n",
|
| 70 |
+
"Sai lầm khi chọn xem bản thuyết minh, dùng toàn ngôn từ của VN, chán\n",
|
| 71 |
+
"Mình không đánh giá cao phần này , nó giống bị vắt sữa hơn là một bộ tiền truyện , cảm giác hơi phí tiền 😢(ykr)\n",
|
| 72 |
+
"🎵 My loneliness is killing me (and I)<br>I must confess I still believe (still believe)<br>When I'm not with you, I lose my mind<br>Give me a sign<br>Hit me, baby, one more time. 🎶😂😂😂🤣🤣🤣😁😁😁\n",
|
| 73 |
+
"Xem Phê phim thì bình luận Phim chuyên nghiệp và phân tích kỹ lưỡng hơn so với phân tích vui vẻ của The Reviewer nên mấy bạn đừng so sánh 2 kênh nhé, mỗi kênh có gốc nhìn khác nhau và phân tích khách quan thôi, chúc các bạn nhìn nhận phim thỏa mái hơn nhé, đừng áp đặt quá ạ\n",
|
| 74 |
+
"Từ phần 3 đã thấy không còn hay rồi. Phần này hút máu là chủ yếu. Lãng phí\n",
|
| 75 |
+
"phim hay nè\n",
|
| 76 |
+
"kết cái câu "kungfu panda chưa bao giờ chỉ đơn thuần là một bộ phim giải trí". cái đó mới là thứ khiến t muốn xem rạp chứ nếu chỉ đơn thuần là hài hước thì thôi đơi khi nào lên web rồi xem vui vui cũng đc\n",
|
| 77 |
+
"mình cảm giác như phân đoạn bà Tắc Kè trở thành một mớ hổ lốn bẹo hình bẹo dạng nó như nói lên cái việc khi mà con người ta tham lam quá, cái gì cũng muốn mang vào người thì cuối cùng sẽ là "biến tướng, biến chất" đúng nghĩa đen lẫn nghĩa bóng luôn.\n",
|
| 78 |
+
"đam mê kungfu mà sau khi hấp thụ 1 đống kungfu cái đi biến thành con quái vật vô tri :)))\n",
|
| 79 |
+
"Hóng video về "Quật mộ trùng ma" :)\n",
|
| 80 |
+
"Lúc đầu xem mn chê cũng rén nhưng mà ra rạp chả phim nào coi cả nên xem đại. Xong kiểu bị wow luôn vì phim giải trí cực mà mn chê hơi nặng lời, đúng là phần cuối đánh nhau hơi ít chắc do kinh phí tèo hơn mấy phần trc nhưng mà phần này thấy giải trí nhất trong all các phần lun ấy\n",
|
| 81 |
+
"kêu phim hài còn nhẹ =]] 2/3 đầu phim như mớ hỗn độn , phần cuối phim thì thui , nói mớ hỗn độn thì nhẹ quá , xem mà chán gì đâu , chắc kungfu panda chỉ có 2 phần :)) 3 4 ko đáng gọi là kungfu panda\n",
|
| 82 |
+
"Nói chung là kungfu Panda hay nhất là phần 1 thôi mấy phần kia không còn hay lắm\n",
|
| 83 |
+
"Phần này cái kết quá lãng xẹt, nhân vật Zhen tưởng là chính mà lại như phụ, mọi biến chuyển của nhân vật đều cực kì khó hiểu và vội vàng\n",
|
| 84 |
+
"❤\n",
|
| 85 |
+
"Vắt hết sữa rồi..\n",
|
| 86 |
+
"Liệu có kung fu panda 5 không ad ơi 😢\n",
|
| 87 |
+
"về mặt giải trí thì phim làm tốt, cả gia đình đi xem phim thì hợp lí\n",
|
| 88 |
+
"Tôi đã ngồi xem credits và tôi thấy có Jimmy (mr.beast) trong credit kung fu panda 4\n",
|
| 89 |
+
"nếu phân đoạn đánh phản diện theo 1 kịch bản khác, thì có lẽ đã khác, phản diện mới đầu debut mạnh mẽ, lãnh thụ tinh hoa của tất cả các võ sư nhưng chỉ thua sau đúng 1 đòn thần long đại hiệp của 1 cô cáo mới học chiêu được 3 ngày. Rất là nhạt!!!\n",
|
| 90 |
+
"1 triplogy có 2 quy luật<br>Thứ nhất, phần 2 luôn là phần hay nhất<br>Thứ hai, chỉ cần ra phần 4 là dở tệ\n",
|
| 91 |
+
"thì đầu vid nói rồi đấy, tiền đc có 1 nửa p3 thì nó chỉ vậy thôi. Hay còn gọi là "ổn trong tầm giá" đấy:)))\n",
|
| 92 |
+
"Chính xác là quá hụt hẫng so với kỳ vọng rất nhiều. Đặc biệt la cái việc bỏ đi ngũ hiệp mà lại thêm vào cái việc hai ông già đi tìm con, trong khi Po đã quá trưởng thành, mấy phần trước trong khi Po vẫn còn chưa hoàn thiện thì cũng chưa thấy hai ông già lo như z, chi tiết đó quá thừa,\n",
|
| 93 |
+
"Phim nào cũng báo kinh phí 200-250m$ mà cuối cùng kĩ xảo lẫn kịch bản đều thua godzilla minus one có 15m$. Đúng là tư bản dư tiền càng ngày càng chán\n",
|
| 94 |
+
"Đáng ra sau phần 3 phần này phải khai thác sâu hơn mối tình cảm của hổ tỉ vs poo chứ. Mất công xây dựng có chiều sâu ở phần 2 vs phần 3 xong vứt mẹ nó đi. Éo hiểu mấy ông đạo diễn vs biên kịch nghĩ cái éo gì. Ý tưởng người kế nghiệp nên đc khai thác sau khi poo lập gia đình. Khi đó lấy bối cảnh poo đã có tuổi thì poo mới có nhiều động cơ để phát triển tìm người kế nghiệp nó mới hợp lí. Hỏng hết cả 1 franschis đỉnh cao. Mấy phim hollywood dạo gần đây rất là dở nhá. Có mỗi oppenhimmer vs dune là đỉnh cao thực sự. Toàn phí tiền đi đâu đâu ấy\n",
|
| 95 |
+
"Thà bà tắc kè bắt ngũ đại hào kiệt để master Po bắt buộc phải đi cứu họ. Chả biết với sự đe doạ nào mà để Po phải đích thân đi để rồi bị gọi là "non"\n",
|
| 96 |
+
"Xem xong hi vọng k có phần 5.. vắt sữa là rõ 😢\n",
|
| 97 |
+
"P4 xem phí tiền vcl 😢😢😢\n",
|
| 98 |
+
"Vâng, sự trở lại Phe phim về những review chiều sâu.\n",
|
| 99 |
+
"Khuyên thật là các bạn không nên xem phim này. Nó thực sự là một bộ phim vắt sữa chính hiệu.\n",
|
| 100 |
+
"Nếu phim cho Tai Lung ở 1 trạng thái điên cuồng comeback đấm cho tắc kè sml rồi đi kiếm Po báo thù thì nó sẽ epic vcl. Trong lúc Po giao chiến vs Tai Lung thì con tắc kè thừa cô hội hút hồn Tai Lung như vậy mới hợp logic\n",
|
| 101 |
+
"Tuyến truyện phát triển tiếp Po trở thành sư phụ là ổn, tuy nhiên mối liên kết giữa Zhen và Po quá nhanh, phản diện mờ nhạt, tuyến chuyện từ 2 người bố có thể bỏ. Phê phim phân tích rất chuẩn\n",
|
| 102 |
+
"Kết thúc ở p3 là hay rồi p4 k hay\n",
|
| 103 |
+
"Tổng thể phim ổn <br>Cốt truyện hời hợt <br>Đánh trùm ko đủ đã hơi ngắn<br>Kết quả của việc vắt sữa mà còn cắt giảm kinh phí <br>Tóm lại là NSX quá tham\n",
|
| 104 |
+
"Mình ra rạp trong tâm thế bồi hồi tuổi thơ và niềm yêu thích dành cho phim. Trước khi ra rạp còn coi lại mấy phần cũ. Vậy mà coi xong sầu thiệt sự, đúng kiểu vắt sữa. Nsx hoàn toàn có thể làm phim tốt lên dc mà ko hiểu sao lại vậy. Kịch bản tiềm năng quá trời mà rốt cuộc đầu voi đuôi chuột. Đẻ ra vấn đề đúng nhiều, xong giải quyết rất chuối.<br><br>Phản diện, buff lên qtqđ, hút hết tất cả các chiêu của các master, hút luôn của Po nhưng lại bị tiêu diệt bởi "sức mạnh của tình bạn". Xong background nv cũng ko rõ ràng, động cơ cũng vậy. Nvat hồi đầu rõ mạnh mà giải quyết thì Skadoosh. Hết<br><br>Zhen quay xe trở mặt như chong chóng, đang thiện đùng cái ác, rồi đùng cái quay đầu hướng thiện.<br><br>Furious 5 ko xuất hiện thì thôi coi như cắt giảm chi phí đi. Nhưng mà TaiLung bất hạnh làm cameo thì thiệt là khổ thân. Phần 1 bị Shifu làm mất niềm tin, nay Phần 4 bị nsx lợi dụng câu fame để hút fan cũ, bưng vô trailer và poster các kiểu, rốt cuộc..<br><br><br>Nhưng mà nói chung thì coi giải trí thì vẫn ổn, ai chưa xem thì có thể lựa ngày happy day của rạp để trải nghiệm cho đỡ tiếc nè. Vì âm thanh và nhạc phim khá là hay, nghe ở rạp phê lắm. Nhất là giọng của ba của Po, do thầy White lồng tiếng.\n",
|
| 105 |
+
"Cần Chê Phim gấp Megamind 2, cần phê phim đào ra thằng khốn nạn, rác rưởi và ngu đần nào chịu trách nhiệm cho cái thảm họa này. Marvel bị báng bổ ? Tôi chịu được. Justice League bị báng bổ ? Tôi chịu được. Bác Joel của tôi bị ăn gậy đánh gôn ? Tôi chịu được. <br><br>Nhưng Megamind là ngoại lệ, là tuổi thơ, là hòn ngọc quý bị ngó lơ của Dreamworks, Puss in Boots 2 tràn đầy tâm huyết, sáng tạo và tình yêu bao nhiêu thì cái bộ phim này tệ bấy nhiêu\n",
|
| 106 |
+
"Ê nếu phim mà để cho con mẹ tắc kè này điều khiển tâm trí và khơi dậy lòng hận thù của họ vs Po ngay ở đầu phim thì chắc chắn sẽ thấy đc dã tâm của ả. R cuối phim mới dùng thần long khí chữa lành tâm ma của bọn phản diện thì sẽ hay hơn.\n",
|
| 107 |
+
"Riêng một ng bị overthinking như t thì trc hết nói về bài học nên thay đổi bản thân thì t k còn gì để nói. Có những mảng hài dù vô lí vl nhưng nó hài. Khá tiếc vì k có the five trong đây. Nhưng điều làm t cảm động là hai ng cha đều yêu thương con. Bài học trong đây là ai cũng có thể đc tỏa sáng dù xuất thân như thế nào.\n",
|
| 108 |
+
"Dở hay ko tôi cũng chả biết nữa tôi chỉ xem và cảm nhận những cái hài hước và tích cực\n",
|
| 109 |
+
"Thôi thì sau phần này cũng hết sữa rồi , phim kungfu mà đánh nhau không phê lắm\n",
|
| 110 |
+
"Cố ko xem leak để tối nay vừa đi coi về.<br><br>+ Thứ nhất, theo mình đó lại là 1 vấn đề khá rõ ràng ở mạch cảm xúc của nhân vật. Có đoạn Po đứng ra giảng đạo lý nhưng phim lại ko đưa được cái cảm xúc của Po lên cao trào. Và đặc biệt, con cáo (tên gì mik quên r) lại có một mạch cảm xúc xuyên suốt phần giữa phim khá là rời rạc, sau khi lấy đc cái trượng linh hồn của Po thì có một ít hối lỗi nhưng vừa thế xong thì lại có một biểu cảm như mình chưa làm gì sai, đến sau đó một lúc khi con thằn lằn đang dùng cái trượng linh hồn để lần lượt lấy sức mạnh của Tai Lung, Kai, ... thì cô cáo ban nãy giờ xoay 180° có lại cảm xúc hối lỗi và chạy đi cản Po.<br><br>+ Thứ 2 là mấy phân cảnh đấm đá nhau, chủ yếu là Po ăn hành, ko phải chủ yếu nữa mà là tất cả mới đúng. Nhân vật phản diện khi ấy gần như ăn chắc phần thắng r thì đùng 1 cái lại bị hạ siêu chóng vánh, có khi đúng 1 chiêu là hẹo luôn :VV<br><br>+ Thứ 3, Tai Lung returns của t đâu :000<br><br>Còn lại thì mik thấy khá ổn và ko đến mức để chê, ko uổng công cố cả tuần ko xem leak\n",
|
| 111 |
+
"Cảm giác phản diện quá yếu so vs po mà 2 ô bố vs bé cáo xin po đừng đi chết=)), po out trình hoàn toàn luôn ấy, đoạn cuối cầm trượng shutdown trong 1 nốt nhạc\n",
|
| 112 |
+
"Mình nghĩ mọi người đừng đánh giá phim của con nít bằng con mắt của người lớn, phim cho trẻ con nó phải có phần đơn giản dễ hiểu, đi kèm bài học nhẹ nhàng. <br>Không thể tăm tối, và đầy âm mưu như người lớn được\n",
|
| 113 |
+
"Đi coi vì anh Liêm\n",
|
| 114 |
+
"Cá nhân mình thấy cốt truyện càng về sau càng nhanh, kiểu chạy cho xong mạch phim vậy. Mà rõ là trailer khá hay, mong chờ rồi thất vọng đi về. Zhen phản bội lại sư phụ mình quá nhanh, kiểu vì một hạt đào của Po mà quay lưng lại sư phụ á? Dù biết sư phụ mình sai, nhưng phản bội đã rồi quay lưng lại giúp Po nó không hợp lý. Rồi tự nhiên khi không triệu hồi TaiLung mới vừa kêu Po không xứng đáng, tí hồi lại công nhận Master... nó không cần thiết ấy. Như phần 3 Po hi sinh rồi quay lại học được khí, Shifu công nhận nó làm tự nhiên hợp lí hơn.\n",
|
| 115 |
+
"Phim này nếu là 1 phim riêng thì k tệ, nhưng theo cả series đang hay thì lại thành dở.\n",
|
| 116 |
+
"Xem để vui vẻ, giải trí nên chấm 7/10<br>Còn lý do chán do po quá out trình nên phản diện quá yếu so với quảng cáo và kỳ vọng )))\n",
|
| 117 |
+
"Mình chưa xem Kungfu Panda series TV nên có lẽ sẽ không biết nhưng nghiêm túc nhé, Tai Lung vẫn chưa chết mà? Phần 1 Po sử dụng chiêu đấy chỉ đưa hắn vào Linh giới (nói thiệt thì cái thời đó nghĩ hắn hẹo rồi vì đã có linh giới quái đâu), đến phần 3 với sự xuất hiện của Kai cho chúng ta biết rằng cái chiêu giữ ngón tay chỉ đưa 1 người vào linh giới chứ không hẳn là giết họ giống như cách Po tự đưa mình vào đó rồi tự đi ra bằng xương bằng thịt. Mình xem qua trailer thì thấy được rằng đầu p4 Tai Lung được đưa lên cũng là một thân xác bằng xương bằng thịt như thế nhưng tại sao ở cuối phần này Tai Lung lại tự nguyện quay về linh giới? Tại sao Tai Lung, một nhân vật có đủ điều kiện để làm lại cuộc đời như thế lại bị phim ném ngược về nơi không thuộc về hắn vậy? Nói thật đến giờ vẫn thấy cay giùm Tai Lung ở p1 (mình cũng chưa xem p4 luôn nên mong được giải đáp)\n",
|
| 118 |
+
"Phim này hay là do đội lồng tiếng lồng toàn từ hot trend vào, nói chung đội lồng tiếng quá gánh bộ phim\n",
|
| 119 |
+
"Sự hài hước đến từ sự vô tri của 1 bầy thú😂😂😂. Xem đến giữa phim thì thấy chả khác gì Zotopia, có mỗi thủ phạm là được biết trước rồi😢. Còn cái quan trọng là ý nghĩa của phần này với phần 1 có vẻ tương phản, trong khi phần 1 thì là chính mình, phần này thì bắt mình phải thay đổi😅. Với nhân vật ham ăn chơi, thích thể hiện bản thân thì 90 phút để thay đổi là quá ít😞😒😂\n",
|
| 120 |
+
"Nói thật là "Phần 4" là cạn nước , cạn mắm rồi!<br>- Nhưng rõ ràng hoàn toàn có thể khai thác "Ngũ đại hiệp - support" -- Đội du côn có thể đánh tiếp một cách hay hơn!<br>Chứ đánh nhau ít quá! hơi thất vọng\n",
|
| 121 |
+
"Đúng kiểu vắt sữa luôn, phản diện k đc chăm chút, các nhân vật có ít đất diễn\n",
|
| 122 |
+
"Phê phim ơi làm video giải thích chi tiết Exhuma đi ☺☺\n",
|
| 123 |
+
"Phim này vẫn có thể vắt thêm :)), nhưng nên vắt theo hướng khác,như là oogway vs kai,tai lung the spirit realm\n",
|
| 124 |
+
"hóng video giải thích phim shogun, phim hay mà bối cảnh lịch sử nhiều điểm mình không hiểu 😅\n",
|
| 125 |
+
"Phê Phim làm video phân tích phim EXHUMA đi ạ. Mình mới xem phim xong cực kỳ cuốn, nhưng có nhiều đoạn không hiểu lắm.☺\n",
|
| 126 |
+
"giải thích phim quật mộ trùng ma đi ạ\n",
|
| 127 |
+
"Lời nguyền số 4, bất cứ trilogy nào cũng khó làm thêm 1 phần nữa\n",
|
| 128 |
+
"Xâu dựng Chameleon thành kẻ theo đuổi danh vọng và quyền lực đến mức rũ bỏ cả bản thân với Po muốn rời bỏ vị trí là Thần Long Đại Hiệp để thắp sáng tiềm năng của thế hệ tiếp theo thì tuyệt hơn nhiều, tiếc là phản diện nông quá.\n",
|
| 129 |
+
"Mong phê phim làm quật mộ trùng ma sớm\n",
|
| 130 |
+
"Tai Lung của tao đâu ngầu thế mà lại bị Zen cướp mất thần long đại hiệp 😢\n",
|
| 131 |
+
"Phần 3 rất ok nhưng 4 thì :))\n",
|
| 132 |
+
"Sau khi xem xong review: Thứ chúng tôi cần là bản KUNG FU PANDA 4 (UNCUT)\n",
|
| 133 |
+
"Vắt sữa thì thôi\n",
|
| 134 |
+
"Lý do con cáo học chiêu thức là do SỨc MạnH nỮ quYền plot armor\n",
|
| 135 |
+
"Phần này là phần kém hay nhất mình xem cũng có chút hụt hẫng vì mọi thứ nó quá nhanh\n",
|
| 136 |
+
"Phần này chắc mún hướng tới trẻ em,chứ tao nghĩ Boss sao chép kĩ năng của 3 phản diện ở 3 phần trước mà đánh đấm chánvk :)))\n",
|
| 137 |
+
"phần 5 sẽ là có tới 4 thần Long, Pu là thần long màu vàng, còn các thần long khác là hắc long, bạch long, thanh long, và dragonball. Phần 6 là sau khi chế phục được hắc long thì các vị thần cai quản các cõi suất hiện. Phần 7 là các mối đe dọa từ vũ trụ. Phần 8 là đa vũ trụ. Phần 10 là xuất hiện đáng tạo hóa....\n",
|
| 138 |
+
"Phim quá dở. Tạo ra 1 phản diện mạnh vcd, hấp thu võ công của bao nhiêu trùm, thế mà gặp gấu tắt điện, thua 1 cách lãng xẹt, gấu còn chả gặp j khó khăn ngoài cú gã xuống vực được 2 ông bố cứu, nói chung là tệ\n",
|
| 139 |
+
"Rõ ràng là sư phụ oogway và master sifu qá già nên cần phải tìm ra thần long đại hiệp kế nhiệm, trong khi đó po rõ ràng còn quá trẻ để có thể bị thay thế, vậy thì tìm thần long đại hiệp mới làm gì ???? Rõ ràng là có 1 sự ung nhọt của woke ở đây\n",
|
| 140 |
+
"Phản diện p1 2 đỉnh khỏi bàn, đặc biệt tailung, càng xem lại càng thấy đáng thương hơn đáng trách\n",
|
| 141 |
+
"Em mới đi xem xong\n",
|
| 142 |
+
"Phần 4 này theo ý kiến của tôi thì nội dung kém hấp dẫn, mục đích của phản diện hời hợt, màn combat cuối thì hơi đuối. Phim hoạt hình thì khá là nhiều trẻ em tham gia xem, tuy nhiên việc xuất hiện thế giới ngầm mà đề cao bạo lực là điều không nên. Có lẽ kungfu Panda đến đây là dừng được rồi!\n",
|
| 143 |
+
"Phê phim cần xem lại phim nhiều hơn\n",
|
| 144 |
+
"Phê phim bỏ qua nhiều tình huống tác giả cài cấm ý nghĩa chứ không chỉ là võ thuật nên phản diện không cần quá hợp lý\n",
|
| 145 |
+
"Add ơi, làm tất tần tật về Detective Chinatown (Thám tử phố tàu - 3 movie và 2 dramatv). Vũ trụ này liên thông với nhau xen kẽ trong cả movie với series tv. Dòng thời gian mới đc tiết lộ trong phần dramatv phần 2 mới ra cuối tháng 2 rồi: dramatv1 (2020) -> 12 tập đầu dramatv2 (2024) -> movie 1 (2015) -> movie 2 (2018) -> movie 3 (2021) -> 4 tập cuối dramatv2 (2024). Đến thời gian hiện tại ở tập cuối dramatv2 là 2019, giờ đã có thông tin rumor trên mydramalist về movie phần 4,5 rồi ạ. Phim cuốn dã man 🔥🔥🔥. Cả vũ trụ xoay quanh chủ yếu tại khu phố tàu ở New York, Thái Lan và tại TQ, Nhật Bản.\n",
|
| 146 |
+
"Tất cả sự hụt hẫng đó xảy ra chỉ vì 2 từ "kinh phí" :/\n",
|
| 147 |
+
"Dạo này mình thấy kênh Phê Phim phát âm nhân vật sai rất nhiều nhé. Kwisatz phải là "Quy-sát", Oogway thì phải là "U-guây", vv\n",
|
| 148 |
+
"có lẽ làm vậy để khai thác ngoại truyện chăng\n",
|
| 149 |
+
"Thấy k bằng một góc của phần 1\n"
|
| 150 |
+
]
|
| 151 |
+
}
|
| 152 |
+
],
|
| 153 |
+
"source": [
|
| 154 |
+
"import googleapiclient.discovery\n",
|
| 155 |
+
"import googleapiclient.errors\n",
|
| 156 |
+
"\n",
|
| 157 |
+
"api_service_name = \"youtube\"\n",
|
| 158 |
+
"api_version = \"v3\"\n",
|
| 159 |
+
"DEVELOPER_KEY = \"AIzaSyBo1UwbWVn0TxIC6vODv1ryuweEB3E72_Y\"\n",
|
| 160 |
+
"\n",
|
| 161 |
+
"youtube = googleapiclient.discovery.build(\n",
|
| 162 |
+
" api_service_name, api_version, developerKey=DEVELOPER_KEY)\n",
|
| 163 |
+
"\n",
|
| 164 |
+
"request = youtube.commentThreads().list(\n",
|
| 165 |
+
" part=\"snippet\",\n",
|
| 166 |
+
" videoId=\"aPtfEa1gPR0\",\n",
|
| 167 |
+
" maxResults=100\n",
|
| 168 |
+
")\n",
|
| 169 |
+
"response = request.execute()\n",
|
| 170 |
+
"\n",
|
| 171 |
+
"for item in response['items']:\n",
|
| 172 |
+
" print(item['snippet']['topLevelComment']['snippet']['textDisplay'])\n"
|
| 173 |
+
]
|
| 174 |
+
},
|
| 175 |
+
{
|
| 176 |
+
"cell_type": "markdown",
|
| 177 |
+
"source": [
|
| 178 |
+
"## Output as Pandas DataFrame"
|
| 179 |
+
],
|
| 180 |
+
"metadata": {
|
| 181 |
+
"id": "_6cNc7iWSfBS"
|
| 182 |
+
}
|
| 183 |
+
},
|
| 184 |
+
{
|
| 185 |
+
"cell_type": "code",
|
| 186 |
+
"source": [
|
| 187 |
+
"import googleapiclient.discovery\n",
|
| 188 |
+
"import pandas as pd\n",
|
| 189 |
+
"\n",
|
| 190 |
+
"api_service_name = \"youtube\"\n",
|
| 191 |
+
"api_version = \"v3\"\n",
|
| 192 |
+
"DEVELOPER_KEY = \"AIzaSyBo1UwbWVn0TxIC6vODv1ryuweEB3E72_Y\"\n",
|
| 193 |
+
"\n",
|
| 194 |
+
"youtube = googleapiclient.discovery.build(\n",
|
| 195 |
+
" api_service_name, api_version, developerKey=DEVELOPER_KEY)\n",
|
| 196 |
+
"\n",
|
| 197 |
+
"request = youtube.commentThreads().list(\n",
|
| 198 |
+
" part=\"snippet\",\n",
|
| 199 |
+
" videoId=\"aPtfEa1gPR0\",\n",
|
| 200 |
+
" maxResults=100\n",
|
| 201 |
+
")\n",
|
| 202 |
+
"response = request.execute()\n",
|
| 203 |
+
"\n",
|
| 204 |
+
"comments = []\n",
|
| 205 |
+
"\n",
|
| 206 |
+
"for item in response['items']:\n",
|
| 207 |
+
" comment = item['snippet']['topLevelComment']['snippet']\n",
|
| 208 |
+
" comments.append([\n",
|
| 209 |
+
" comment['authorDisplayName'],\n",
|
| 210 |
+
" comment['publishedAt'],\n",
|
| 211 |
+
" comment['updatedAt'],\n",
|
| 212 |
+
" comment['likeCount'],\n",
|
| 213 |
+
" comment['textDisplay']\n",
|
| 214 |
+
" ])\n",
|
| 215 |
+
"\n",
|
| 216 |
+
"df = pd.DataFrame(comments, columns=['author', 'published_at', 'updated_at', 'like_count', 'text'])\n",
|
| 217 |
+
"\n",
|
| 218 |
+
"df.head(10)\n"
|
| 219 |
+
],
|
| 220 |
+
"metadata": {
|
| 221 |
+
"colab": {
|
| 222 |
+
"base_uri": "https://localhost:8080/",
|
| 223 |
+
"height": 363
|
| 224 |
+
},
|
| 225 |
+
"id": "lCdRNwqRRmbN",
|
| 226 |
+
"outputId": "169544dd-0d8b-401e-857a-f09212c83b13"
|
| 227 |
+
},
|
| 228 |
+
"execution_count": 2,
|
| 229 |
+
"outputs": [
|
| 230 |
+
{
|
| 231 |
+
"output_type": "execute_result",
|
| 232 |
+
"data": {
|
| 233 |
+
"text/plain": [
|
| 234 |
+
" author published_at updated_at like_count \\\n",
|
| 235 |
+
"0 @soundscape3979 2024-03-29T14:35:33Z 2024-03-29T14:35:33Z 0 \n",
|
| 236 |
+
"1 @ulgambassador2518 2024-03-28T00:24:56Z 2024-03-28T00:25:16Z 0 \n",
|
| 237 |
+
"2 @VietNguyen-vb7lo 2024-03-27T20:08:11Z 2024-03-27T20:08:11Z 0 \n",
|
| 238 |
+
"3 @ThanhPham-iz1rs 2024-03-26T05:10:37Z 2024-03-26T05:10:37Z 0 \n",
|
| 239 |
+
"4 @xt9885 2024-03-25T18:33:26Z 2024-03-25T18:33:26Z 0 \n",
|
| 240 |
+
"5 @DragonBeo 2024-03-25T09:23:04Z 2024-03-25T09:23:04Z 0 \n",
|
| 241 |
+
"6 @trungluong9942 2024-03-25T07:41:51Z 2024-03-25T07:41:51Z 0 \n",
|
| 242 |
+
"7 @Chiu-rg1ji 2024-03-24T13:35:39Z 2024-03-24T13:36:27Z 1 \n",
|
| 243 |
+
"8 @sythanhtruong9353 2024-03-22T08:52:45Z 2024-03-22T08:52:45Z 0 \n",
|
| 244 |
+
"9 @DuyVuuc-iz4mv 2024-03-21T23:32:29Z 2024-03-21T23:32:29Z 2 \n",
|
| 245 |
+
"\n",
|
| 246 |
+
" text \n",
|
| 247 |
+
"0 phim vui , giải trí khá ổn \n",
|
| 248 |
+
"1 Dở ! Review thiếu khách quan . \n",
|
| 249 |
+
"2 Phim dỡ kinh đầu \n",
|
| 250 |
+
"3 . \n",
|
| 251 |
+
"4 sao mn chê vậy 😢 Mình thấy phim rất hay \n",
|
| 252 |
+
"5 Phần lồng tiếng góp phần ko nhỏ co sự dở \n",
|
| 253 |
+
"6 Thế quái nào mà Kai có thể hiện về được nhỉ :)... \n",
|
| 254 |
+
"7 Lúc xem phim t mang theo tâm thế là phim hoạt ... \n",
|
| 255 |
+
"8 Đơn giản tên phim là kunfu panda chứ không phả... \n",
|
| 256 |
+
"9 Phim không dở do chúng ta lớn quá nhanh, quá đ... "
|
| 257 |
+
],
|
| 258 |
+
"text/html": [
|
| 259 |
+
"\n",
|
| 260 |
+
" <div id=\"df-3881a455-418d-48f0-b8cd-6ffc0168d7f2\" class=\"colab-df-container\">\n",
|
| 261 |
+
" <div>\n",
|
| 262 |
+
"<style scoped>\n",
|
| 263 |
+
" .dataframe tbody tr th:only-of-type {\n",
|
| 264 |
+
" vertical-align: middle;\n",
|
| 265 |
+
" }\n",
|
| 266 |
+
"\n",
|
| 267 |
+
" .dataframe tbody tr th {\n",
|
| 268 |
+
" vertical-align: top;\n",
|
| 269 |
+
" }\n",
|
| 270 |
+
"\n",
|
| 271 |
+
" .dataframe thead th {\n",
|
| 272 |
+
" text-align: right;\n",
|
| 273 |
+
" }\n",
|
| 274 |
+
"</style>\n",
|
| 275 |
+
"<table border=\"1\" class=\"dataframe\">\n",
|
| 276 |
+
" <thead>\n",
|
| 277 |
+
" <tr style=\"text-align: right;\">\n",
|
| 278 |
+
" <th></th>\n",
|
| 279 |
+
" <th>author</th>\n",
|
| 280 |
+
" <th>published_at</th>\n",
|
| 281 |
+
" <th>updated_at</th>\n",
|
| 282 |
+
" <th>like_count</th>\n",
|
| 283 |
+
" <th>text</th>\n",
|
| 284 |
+
" </tr>\n",
|
| 285 |
+
" </thead>\n",
|
| 286 |
+
" <tbody>\n",
|
| 287 |
+
" <tr>\n",
|
| 288 |
+
" <th>0</th>\n",
|
| 289 |
+
" <td>@soundscape3979</td>\n",
|
| 290 |
+
" <td>2024-03-29T14:35:33Z</td>\n",
|
| 291 |
+
" <td>2024-03-29T14:35:33Z</td>\n",
|
| 292 |
+
" <td>0</td>\n",
|
| 293 |
+
" <td>phim vui , giải trí khá ổn</td>\n",
|
| 294 |
+
" </tr>\n",
|
| 295 |
+
" <tr>\n",
|
| 296 |
+
" <th>1</th>\n",
|
| 297 |
+
" <td>@ulgambassador2518</td>\n",
|
| 298 |
+
" <td>2024-03-28T00:24:56Z</td>\n",
|
| 299 |
+
" <td>2024-03-28T00:25:16Z</td>\n",
|
| 300 |
+
" <td>0</td>\n",
|
| 301 |
+
" <td>Dở ! Review thiếu khách quan .</td>\n",
|
| 302 |
+
" </tr>\n",
|
| 303 |
+
" <tr>\n",
|
| 304 |
+
" <th>2</th>\n",
|
| 305 |
+
" <td>@VietNguyen-vb7lo</td>\n",
|
| 306 |
+
" <td>2024-03-27T20:08:11Z</td>\n",
|
| 307 |
+
" <td>2024-03-27T20:08:11Z</td>\n",
|
| 308 |
+
" <td>0</td>\n",
|
| 309 |
+
" <td>Phim dỡ kinh đầu</td>\n",
|
| 310 |
+
" </tr>\n",
|
| 311 |
+
" <tr>\n",
|
| 312 |
+
" <th>3</th>\n",
|
| 313 |
+
" <td>@ThanhPham-iz1rs</td>\n",
|
| 314 |
+
" <td>2024-03-26T05:10:37Z</td>\n",
|
| 315 |
+
" <td>2024-03-26T05:10:37Z</td>\n",
|
| 316 |
+
" <td>0</td>\n",
|
| 317 |
+
" <td>.</td>\n",
|
| 318 |
+
" </tr>\n",
|
| 319 |
+
" <tr>\n",
|
| 320 |
+
" <th>4</th>\n",
|
| 321 |
+
" <td>@xt9885</td>\n",
|
| 322 |
+
" <td>2024-03-25T18:33:26Z</td>\n",
|
| 323 |
+
" <td>2024-03-25T18:33:26Z</td>\n",
|
| 324 |
+
" <td>0</td>\n",
|
| 325 |
+
" <td>sao mn chê vậy 😢 Mình thấy phim rất hay</td>\n",
|
| 326 |
+
" </tr>\n",
|
| 327 |
+
" <tr>\n",
|
| 328 |
+
" <th>5</th>\n",
|
| 329 |
+
" <td>@DragonBeo</td>\n",
|
| 330 |
+
" <td>2024-03-25T09:23:04Z</td>\n",
|
| 331 |
+
" <td>2024-03-25T09:23:04Z</td>\n",
|
| 332 |
+
" <td>0</td>\n",
|
| 333 |
+
" <td>Phần lồng tiếng góp phần ko nhỏ co sự dở</td>\n",
|
| 334 |
+
" </tr>\n",
|
| 335 |
+
" <tr>\n",
|
| 336 |
+
" <th>6</th>\n",
|
| 337 |
+
" <td>@trungluong9942</td>\n",
|
| 338 |
+
" <td>2024-03-25T07:41:51Z</td>\n",
|
| 339 |
+
" <td>2024-03-25T07:41:51Z</td>\n",
|
| 340 |
+
" <td>0</td>\n",
|
| 341 |
+
" <td>Thế quái nào mà Kai có thể hiện về được nhỉ :)...</td>\n",
|
| 342 |
+
" </tr>\n",
|
| 343 |
+
" <tr>\n",
|
| 344 |
+
" <th>7</th>\n",
|
| 345 |
+
" <td>@Chiu-rg1ji</td>\n",
|
| 346 |
+
" <td>2024-03-24T13:35:39Z</td>\n",
|
| 347 |
+
" <td>2024-03-24T13:36:27Z</td>\n",
|
| 348 |
+
" <td>1</td>\n",
|
| 349 |
+
" <td>Lúc xem phim t mang theo tâm thế là phim hoạt ...</td>\n",
|
| 350 |
+
" </tr>\n",
|
| 351 |
+
" <tr>\n",
|
| 352 |
+
" <th>8</th>\n",
|
| 353 |
+
" <td>@sythanhtruong9353</td>\n",
|
| 354 |
+
" <td>2024-03-22T08:52:45Z</td>\n",
|
| 355 |
+
" <td>2024-03-22T08:52:45Z</td>\n",
|
| 356 |
+
" <td>0</td>\n",
|
| 357 |
+
" <td>Đơn giản tên phim là kunfu panda chứ không phả...</td>\n",
|
| 358 |
+
" </tr>\n",
|
| 359 |
+
" <tr>\n",
|
| 360 |
+
" <th>9</th>\n",
|
| 361 |
+
" <td>@DuyVuuc-iz4mv</td>\n",
|
| 362 |
+
" <td>2024-03-21T23:32:29Z</td>\n",
|
| 363 |
+
" <td>2024-03-21T23:32:29Z</td>\n",
|
| 364 |
+
" <td>2</td>\n",
|
| 365 |
+
" <td>Phim không dở do chúng ta lớn quá nhanh, quá đ...</td>\n",
|
| 366 |
+
" </tr>\n",
|
| 367 |
+
" </tbody>\n",
|
| 368 |
+
"</table>\n",
|
| 369 |
+
"</div>\n",
|
| 370 |
+
" <div class=\"colab-df-buttons\">\n",
|
| 371 |
+
"\n",
|
| 372 |
+
" <div class=\"colab-df-container\">\n",
|
| 373 |
+
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-3881a455-418d-48f0-b8cd-6ffc0168d7f2')\"\n",
|
| 374 |
+
" title=\"Convert this dataframe to an interactive table.\"\n",
|
| 375 |
+
" style=\"display:none;\">\n",
|
| 376 |
+
"\n",
|
| 377 |
+
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
|
| 378 |
+
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
|
| 379 |
+
" </svg>\n",
|
| 380 |
+
" </button>\n",
|
| 381 |
+
"\n",
|
| 382 |
+
" <style>\n",
|
| 383 |
+
" .colab-df-container {\n",
|
| 384 |
+
" display:flex;\n",
|
| 385 |
+
" gap: 12px;\n",
|
| 386 |
+
" }\n",
|
| 387 |
+
"\n",
|
| 388 |
+
" .colab-df-convert {\n",
|
| 389 |
+
" background-color: #E8F0FE;\n",
|
| 390 |
+
" border: none;\n",
|
| 391 |
+
" border-radius: 50%;\n",
|
| 392 |
+
" cursor: pointer;\n",
|
| 393 |
+
" display: none;\n",
|
| 394 |
+
" fill: #1967D2;\n",
|
| 395 |
+
" height: 32px;\n",
|
| 396 |
+
" padding: 0 0 0 0;\n",
|
| 397 |
+
" width: 32px;\n",
|
| 398 |
+
" }\n",
|
| 399 |
+
"\n",
|
| 400 |
+
" .colab-df-convert:hover {\n",
|
| 401 |
+
" background-color: #E2EBFA;\n",
|
| 402 |
+
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
| 403 |
+
" fill: #174EA6;\n",
|
| 404 |
+
" }\n",
|
| 405 |
+
"\n",
|
| 406 |
+
" .colab-df-buttons div {\n",
|
| 407 |
+
" margin-bottom: 4px;\n",
|
| 408 |
+
" }\n",
|
| 409 |
+
"\n",
|
| 410 |
+
" [theme=dark] .colab-df-convert {\n",
|
| 411 |
+
" background-color: #3B4455;\n",
|
| 412 |
+
" fill: #D2E3FC;\n",
|
| 413 |
+
" }\n",
|
| 414 |
+
"\n",
|
| 415 |
+
" [theme=dark] .colab-df-convert:hover {\n",
|
| 416 |
+
" background-color: #434B5C;\n",
|
| 417 |
+
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
|
| 418 |
+
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
|
| 419 |
+
" fill: #FFFFFF;\n",
|
| 420 |
+
" }\n",
|
| 421 |
+
" </style>\n",
|
| 422 |
+
"\n",
|
| 423 |
+
" <script>\n",
|
| 424 |
+
" const buttonEl =\n",
|
| 425 |
+
" document.querySelector('#df-3881a455-418d-48f0-b8cd-6ffc0168d7f2 button.colab-df-convert');\n",
|
| 426 |
+
" buttonEl.style.display =\n",
|
| 427 |
+
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
| 428 |
+
"\n",
|
| 429 |
+
" async function convertToInteractive(key) {\n",
|
| 430 |
+
" const element = document.querySelector('#df-3881a455-418d-48f0-b8cd-6ffc0168d7f2');\n",
|
| 431 |
+
" const dataTable =\n",
|
| 432 |
+
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
|
| 433 |
+
" [key], {});\n",
|
| 434 |
+
" if (!dataTable) return;\n",
|
| 435 |
+
"\n",
|
| 436 |
+
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
|
| 437 |
+
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
|
| 438 |
+
" + ' to learn more about interactive tables.';\n",
|
| 439 |
+
" element.innerHTML = '';\n",
|
| 440 |
+
" dataTable['output_type'] = 'display_data';\n",
|
| 441 |
+
" await google.colab.output.renderOutput(dataTable, element);\n",
|
| 442 |
+
" const docLink = document.createElement('div');\n",
|
| 443 |
+
" docLink.innerHTML = docLinkHtml;\n",
|
| 444 |
+
" element.appendChild(docLink);\n",
|
| 445 |
+
" }\n",
|
| 446 |
+
" </script>\n",
|
| 447 |
+
" </div>\n",
|
| 448 |
+
"\n",
|
| 449 |
+
"\n",
|
| 450 |
+
"<div id=\"df-f36e7a5c-b0cd-4bf1-ac37-97c10d5dd425\">\n",
|
| 451 |
+
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-f36e7a5c-b0cd-4bf1-ac37-97c10d5dd425')\"\n",
|
| 452 |
+
" title=\"Suggest charts\"\n",
|
| 453 |
+
" style=\"display:none;\">\n",
|
| 454 |
+
"\n",
|
| 455 |
+
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
|
| 456 |
+
" width=\"24px\">\n",
|
| 457 |
+
" <g>\n",
|
| 458 |
+
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
|
| 459 |
+
" </g>\n",
|
| 460 |
+
"</svg>\n",
|
| 461 |
+
" </button>\n",
|
| 462 |
+
"\n",
|
| 463 |
+
"<style>\n",
|
| 464 |
+
" .colab-df-quickchart {\n",
|
| 465 |
+
" --bg-color: #E8F0FE;\n",
|
| 466 |
+
" --fill-color: #1967D2;\n",
|
| 467 |
+
" --hover-bg-color: #E2EBFA;\n",
|
| 468 |
+
" --hover-fill-color: #174EA6;\n",
|
| 469 |
+
" --disabled-fill-color: #AAA;\n",
|
| 470 |
+
" --disabled-bg-color: #DDD;\n",
|
| 471 |
+
" }\n",
|
| 472 |
+
"\n",
|
| 473 |
+
" [theme=dark] .colab-df-quickchart {\n",
|
| 474 |
+
" --bg-color: #3B4455;\n",
|
| 475 |
+
" --fill-color: #D2E3FC;\n",
|
| 476 |
+
" --hover-bg-color: #434B5C;\n",
|
| 477 |
+
" --hover-fill-color: #FFFFFF;\n",
|
| 478 |
+
" --disabled-bg-color: #3B4455;\n",
|
| 479 |
+
" --disabled-fill-color: #666;\n",
|
| 480 |
+
" }\n",
|
| 481 |
+
"\n",
|
| 482 |
+
" .colab-df-quickchart {\n",
|
| 483 |
+
" background-color: var(--bg-color);\n",
|
| 484 |
+
" border: none;\n",
|
| 485 |
+
" border-radius: 50%;\n",
|
| 486 |
+
" cursor: pointer;\n",
|
| 487 |
+
" display: none;\n",
|
| 488 |
+
" fill: var(--fill-color);\n",
|
| 489 |
+
" height: 32px;\n",
|
| 490 |
+
" padding: 0;\n",
|
| 491 |
+
" width: 32px;\n",
|
| 492 |
+
" }\n",
|
| 493 |
+
"\n",
|
| 494 |
+
" .colab-df-quickchart:hover {\n",
|
| 495 |
+
" background-color: var(--hover-bg-color);\n",
|
| 496 |
+
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
|
| 497 |
+
" fill: var(--button-hover-fill-color);\n",
|
| 498 |
+
" }\n",
|
| 499 |
+
"\n",
|
| 500 |
+
" .colab-df-quickchart-complete:disabled,\n",
|
| 501 |
+
" .colab-df-quickchart-complete:disabled:hover {\n",
|
| 502 |
+
" background-color: var(--disabled-bg-color);\n",
|
| 503 |
+
" fill: var(--disabled-fill-color);\n",
|
| 504 |
+
" box-shadow: none;\n",
|
| 505 |
+
" }\n",
|
| 506 |
+
"\n",
|
| 507 |
+
" .colab-df-spinner {\n",
|
| 508 |
+
" border: 2px solid var(--fill-color);\n",
|
| 509 |
+
" border-color: transparent;\n",
|
| 510 |
+
" border-bottom-color: var(--fill-color);\n",
|
| 511 |
+
" animation:\n",
|
| 512 |
+
" spin 1s steps(1) infinite;\n",
|
| 513 |
+
" }\n",
|
| 514 |
+
"\n",
|
| 515 |
+
" @keyframes spin {\n",
|
| 516 |
+
" 0% {\n",
|
| 517 |
+
" border-color: transparent;\n",
|
| 518 |
+
" border-bottom-color: var(--fill-color);\n",
|
| 519 |
+
" border-left-color: var(--fill-color);\n",
|
| 520 |
+
" }\n",
|
| 521 |
+
" 20% {\n",
|
| 522 |
+
" border-color: transparent;\n",
|
| 523 |
+
" border-left-color: var(--fill-color);\n",
|
| 524 |
+
" border-top-color: var(--fill-color);\n",
|
| 525 |
+
" }\n",
|
| 526 |
+
" 30% {\n",
|
| 527 |
+
" border-color: transparent;\n",
|
| 528 |
+
" border-left-color: var(--fill-color);\n",
|
| 529 |
+
" border-top-color: var(--fill-color);\n",
|
| 530 |
+
" border-right-color: var(--fill-color);\n",
|
| 531 |
+
" }\n",
|
| 532 |
+
" 40% {\n",
|
| 533 |
+
" border-color: transparent;\n",
|
| 534 |
+
" border-right-color: var(--fill-color);\n",
|
| 535 |
+
" border-top-color: var(--fill-color);\n",
|
| 536 |
+
" }\n",
|
| 537 |
+
" 60% {\n",
|
| 538 |
+
" border-color: transparent;\n",
|
| 539 |
+
" border-right-color: var(--fill-color);\n",
|
| 540 |
+
" }\n",
|
| 541 |
+
" 80% {\n",
|
| 542 |
+
" border-color: transparent;\n",
|
| 543 |
+
" border-right-color: var(--fill-color);\n",
|
| 544 |
+
" border-bottom-color: var(--fill-color);\n",
|
| 545 |
+
" }\n",
|
| 546 |
+
" 90% {\n",
|
| 547 |
+
" border-color: transparent;\n",
|
| 548 |
+
" border-bottom-color: var(--fill-color);\n",
|
| 549 |
+
" }\n",
|
| 550 |
+
" }\n",
|
| 551 |
+
"</style>\n",
|
| 552 |
+
"\n",
|
| 553 |
+
" <script>\n",
|
| 554 |
+
" async function quickchart(key) {\n",
|
| 555 |
+
" const quickchartButtonEl =\n",
|
| 556 |
+
" document.querySelector('#' + key + ' button');\n",
|
| 557 |
+
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
|
| 558 |
+
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
|
| 559 |
+
" try {\n",
|
| 560 |
+
" const charts = await google.colab.kernel.invokeFunction(\n",
|
| 561 |
+
" 'suggestCharts', [key], {});\n",
|
| 562 |
+
" } catch (error) {\n",
|
| 563 |
+
" console.error('Error during call to suggestCharts:', error);\n",
|
| 564 |
+
" }\n",
|
| 565 |
+
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
|
| 566 |
+
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
|
| 567 |
+
" }\n",
|
| 568 |
+
" (() => {\n",
|
| 569 |
+
" let quickchartButtonEl =\n",
|
| 570 |
+
" document.querySelector('#df-f36e7a5c-b0cd-4bf1-ac37-97c10d5dd425 button');\n",
|
| 571 |
+
" quickchartButtonEl.style.display =\n",
|
| 572 |
+
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
|
| 573 |
+
" })();\n",
|
| 574 |
+
" </script>\n",
|
| 575 |
+
"</div>\n",
|
| 576 |
+
"\n",
|
| 577 |
+
" </div>\n",
|
| 578 |
+
" </div>\n"
|
| 579 |
+
],
|
| 580 |
+
"application/vnd.google.colaboratory.intrinsic+json": {
|
| 581 |
+
"type": "dataframe",
|
| 582 |
+
"variable_name": "df",
|
| 583 |
+
"summary": "{\n \"name\": \"df\",\n \"rows\": 100,\n \"fields\": [\n {\n \"column\": \"author\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 96,\n \"samples\": [\n \"@Stephen_dang\",\n \"@DietTauKhua\",\n \"@user-zr9rd5we5i\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"published_at\",\n \"properties\": {\n \"dtype\": \"object\",\n \"num_unique_values\": 100,\n \"samples\": [\n \"2024-03-16T03:33:37Z\",\n \"2024-03-16T18:11:15Z\",\n \"2024-03-16T11:16:16Z\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"updated_at\",\n \"properties\": {\n \"dtype\": \"object\",\n \"num_unique_values\": 100,\n \"samples\": [\n \"2024-03-16T03:33:37Z\",\n \"2024-03-16T18:11:15Z\",\n \"2024-03-16T11:16:16Z\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"like_count\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0,\n \"min\": 0,\n \"max\": 4,\n \"num_unique_values\": 5,\n \"samples\": [\n 1,\n 4,\n 2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 100,\n \"samples\": [\n \"V\\u1eaft s\\u1eefa th\\u00ec th\\u00f4i\",\n \"T\\u1ed5ng th\\u1ec3 phim \\u1ed5n <br>C\\u1ed1t truy\\u1ec7n h\\u1eddi h\\u1ee3t <br>\\u0110\\u00e1nh tr\\u00f9m ko \\u0111\\u1ee7 \\u0111\\u00e3 h\\u01a1i ng\\u1eafn<br>K\\u1ebft qu\\u1ea3 c\\u1ee7a vi\\u1ec7c v\\u1eaft s\\u1eefa m\\u00e0 c\\u00f2n c\\u1eaft gi\\u1ea3m kinh ph\\u00ed <br>T\\u00f3m l\\u1ea1i l\\u00e0 NSX qu\\u00e1 tham\",\n \"N\\u00f3i th\\u1eadt l\\u00e0 "Ph\\u1ea7n 4" l\\u00e0 c\\u1ea1n n\\u01b0\\u1edbc , c\\u1ea1n m\\u1eafm r\\u1ed3i!<br>- Nh\\u01b0ng r\\u00f5 r\\u00e0ng ho\\u00e0n to\\u00e0n c\\u00f3 th\\u1ec3 khai th\\u00e1c "Ng\\u0169 \\u0111\\u1ea1i hi\\u1ec7p - support" -- \\u0110\\u1ed9i du c\\u00f4n c\\u00f3 th\\u1ec3 \\u0111\\u00e1nh ti\\u1ebfp m\\u1ed9t c\\u00e1ch hay h\\u01a1n!<br>Ch\\u1ee9 \\u0111\\u00e1nh nhau \\u00edt qu\\u00e1! h\\u01a1i th\\u1ea5t v\\u1ecdng\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
|
| 584 |
+
}
|
| 585 |
+
},
|
| 586 |
+
"metadata": {},
|
| 587 |
+
"execution_count": 2
|
| 588 |
+
}
|
| 589 |
+
]
|
| 590 |
+
},
|
| 591 |
+
{
|
| 592 |
+
"cell_type": "code",
|
| 593 |
+
"source": [
|
| 594 |
+
"df.head()"
|
| 595 |
+
],
|
| 596 |
+
"metadata": {
|
| 597 |
+
"id": "0LV_QAezR0nc"
|
| 598 |
+
},
|
| 599 |
+
"execution_count": null,
|
| 600 |
+
"outputs": []
|
| 601 |
+
}
|
| 602 |
+
]
|
| 603 |
+
}
|