2025-12-17 05:02:20 [scrapy.utils.log] INFO: Scrapy 2.11.1 started (bot: news_scraper) 2025-12-17 05:02:20 [scrapy.utils.log] INFO: Versions: lxml 6.0.2.0, libxml2 2.14.6, cssselect 1.3.0, parsel 1.10.0, w3lib 2.3.1, Twisted 25.5.0, Python 3.11.13 (main, Aug 12 2025, 22:39:41) [GCC 14.2.0], pyOpenSSL 25.3.0 (OpenSSL 3.5.3 16 Sep 2025), cryptography 46.0.1, Platform Linux-5.15.0-157-generic-x86_64-with 2025-12-17 05:02:20 [scrapy.addons] INFO: Enabled addons: [] 2025-12-17 05:02:20 [asyncio] DEBUG: Using selector: EpollSelector 2025-12-17 05:02:20 [scrapy.utils.log] DEBUG: Using reactor: twisted.internet.asyncioreactor.AsyncioSelectorReactor 2025-12-17 05:02:20 [scrapy.utils.log] DEBUG: Using asyncio event loop: asyncio.unix_events._UnixSelectorEventLoop 2025-12-17 05:02:20 [scrapy.extensions.telnet] INFO: Telnet Password: 8d1a066905585652 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from creating-client-class.iot-data to creating-client-class.iot-data-plane 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from before-call.apigateway to before-call.api-gateway 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from request-created.machinelearning.Predict to request-created.machine-learning.Predict 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.autoscaling.CreateLaunchConfiguration to before-parameter-build.auto-scaling.CreateLaunchConfiguration 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.route53 to before-parameter-build.route-53 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from request-created.cloudsearchdomain.Search to request-created.cloudsearch-domain.Search 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from docs.*.autoscaling.CreateLaunchConfiguration.complete-section to docs.*.auto-scaling.CreateLaunchConfiguration.complete-section 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.logs.CreateExportTask to before-parameter-build.cloudwatch-logs.CreateExportTask 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from docs.*.logs.CreateExportTask.complete-section to docs.*.cloudwatch-logs.CreateExportTask.complete-section 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.cloudsearchdomain.Search to before-parameter-build.cloudsearch-domain.Search 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from docs.*.cloudsearchdomain.Search.complete-section to docs.*.cloudsearch-domain.Search.complete-section 2025-12-17 05:02:20 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/endpoints.json 2025-12-17 05:02:20 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/sdk-default-configuration.json 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Event choose-service-name: calling handler 2025-12-17 05:02:20 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/service-2.json.gz 2025-12-17 05:02:20 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/endpoint-rule-set-1.json.gz 2025-12-17 05:02:20 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/partitions.json 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler ._handler at 0x7f91c9518860> 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2025-12-17 05:02:20 [botocore.endpoint] DEBUG: Setting s3 timeout as (60, 60) 2025-12-17 05:02:20 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/_retry.json 2025-12-17 05:02:20 [botocore.client] DEBUG: Registering retry handlers for service: s3 2025-12-17 05:02:20 [botocore.utils] DEBUG: Registering S3 region redirector handler 2025-12-17 05:02:20 [botocore.utils] DEBUG: Registering S3Express Identity Resolver 2025-12-17 05:02:20 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.memusage.MemoryUsage', 'scrapy.extensions.closespider.CloseSpider', 'scrapy.extensions.feedexport.FeedExporter', 'scrapy.extensions.logstats.LogStats', 'scrapy.extensions.throttle.AutoThrottle'] 2025-12-17 05:02:20 [scrapy.crawler] INFO: Overridden settings: {'AUTOTHROTTLE_ENABLED': True, 'BOT_NAME': 'news_scraper', 'CLOSESPIDER_TIMEOUT': 1800, 'CONCURRENT_REQUESTS': 4, 'DOWNLOAD_DELAY': 2, 'FEED_EXPORT_ENCODING': 'utf-8', 'LOG_FILE': '/opt/scrapyd/logs/news_scraper/thanhnien_timestamp/821bf058db0511f099e2d6783c969646.log', 'NEWSPIDER_MODULE': 'news_scraper.spiders', 'REQUEST_FINGERPRINTER_IMPLEMENTATION': '2.7', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['news_scraper.spiders'], 'TWISTED_REACTOR': 'twisted.internet.asyncioreactor.AsyncioSelectorReactor'} 2025-12-17 05:02:20 [scrapy.middleware] INFO: Enabled downloader middlewares: ['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware', 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 'news_scraper.middlewares.NewsScraperDownloaderMiddleware', 'scrapy.downloadermiddlewares.retry.RetryMiddleware', 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware', 'scrapy.downloadermiddlewares.stats.DownloaderStats'] 2025-12-17 05:02:20 [scrapy.middleware] INFO: Enabled spider middlewares: ['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware'] 2025-12-17 05:02:20 [scrapy.middleware] INFO: Enabled item pipelines: [] 2025-12-17 05:02:20 [scrapy.core.engine] INFO: Spider opened 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from creating-client-class.iot-data to creating-client-class.iot-data-plane 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from before-call.apigateway to before-call.api-gateway 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from request-created.machinelearning.Predict to request-created.machine-learning.Predict 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.autoscaling.CreateLaunchConfiguration to before-parameter-build.auto-scaling.CreateLaunchConfiguration 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.route53 to before-parameter-build.route-53 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from request-created.cloudsearchdomain.Search to request-created.cloudsearch-domain.Search 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from docs.*.autoscaling.CreateLaunchConfiguration.complete-section to docs.*.auto-scaling.CreateLaunchConfiguration.complete-section 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.logs.CreateExportTask to before-parameter-build.cloudwatch-logs.CreateExportTask 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from docs.*.logs.CreateExportTask.complete-section to docs.*.cloudwatch-logs.CreateExportTask.complete-section 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from before-parameter-build.cloudsearchdomain.Search to before-parameter-build.cloudsearch-domain.Search 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Changing event name from docs.*.cloudsearchdomain.Search.complete-section to docs.*.cloudsearch-domain.Search.complete-section 2025-12-17 05:02:20 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/endpoints.json 2025-12-17 05:02:20 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/sdk-default-configuration.json 2025-12-17 05:02:20 [botocore.hooks] DEBUG: Event choose-service-name: calling handler 2025-12-17 05:02:20 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/service-2.json.gz 2025-12-17 05:02:21 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/s3/2006-03-01/endpoint-rule-set-1.json.gz 2025-12-17 05:02:21 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/partitions.json 2025-12-17 05:02:21 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2025-12-17 05:02:21 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler ._handler at 0x7f91c8339940> 2025-12-17 05:02:21 [botocore.hooks] DEBUG: Event creating-client-class.s3: calling handler 2025-12-17 05:02:21 [botocore.endpoint] DEBUG: Setting s3 timeout as (60, 60) 2025-12-17 05:02:21 [botocore.loaders] DEBUG: Loading JSON file: /usr/local/lib/python3.11/site-packages/botocore/data/_retry.json 2025-12-17 05:02:21 [botocore.client] DEBUG: Registering retry handlers for service: s3 2025-12-17 05:02:21 [botocore.utils] DEBUG: Registering S3 region redirector handler 2025-12-17 05:02:21 [botocore.utils] DEBUG: Registering S3Express Identity Resolver 2025-12-17 05:02:21 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2025-12-17 05:02:21 [thanhnien_timestamp] INFO: Spider opened: thanhnien_timestamp 2025-12-17 05:02:21 [scrapy.extensions.telnet] INFO: Telnet console listening on 127.0.0.1:6027 2025-12-17 05:02:21 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None) 2025-12-17 05:02:26 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None) 2025-12-17 05:02:29 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/) 2025-12-17 05:02:32 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:02:32 [thanhnien_timestamp] INFO: 2025-12-17 12:00:00 not in 2025-12-17 11:41:00 to 2025-12-17 11:56:00 2025-12-17 05:02:35 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:02:35 [thanhnien_timestamp] INFO: 2025-12-17 11:19:00 not in 2025-12-17 11:41:00 to 2025-12-17 11:56:00 2025-12-17 05:02:38 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:02:38 [thanhnien_timestamp] INFO: 2025-12-17 11:25:00 not in 2025-12-17 11:41:00 to 2025-12-17 11:56:00 2025-12-17 05:02:40 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:02:40 [thanhnien_timestamp] INFO: 2025-12-17 11:30:00 not in 2025-12-17 11:41:00 to 2025-12-17 11:56:00 2025-12-17 05:02:43 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:02:43 [thanhnien_timestamp] INFO: 2025-12-17 11:13:00 not in 2025-12-17 11:41:00 to 2025-12-17 11:56:00 2025-12-17 05:02:45 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:02:45 [thanhnien_timestamp] INFO: 2025-12-17 11:14:00 not in 2025-12-17 11:41:00 to 2025-12-17 11:56:00 2025-12-17 05:02:46 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:02:46 [thanhnien_timestamp] INFO: 2025-12-17 11:18:00 not in 2025-12-17 11:41:00 to 2025-12-17 11:56:00 2025-12-17 05:02:48 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:02:48 [thanhnien_timestamp] INFO: 2025-12-17 11:31:00 not in 2025-12-17 11:41:00 to 2025-12-17 11:56:00 2025-12-17 05:02:50 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:02:51 [thanhnien_timestamp] INFO: 2025-12-17 11:32:00 not in 2025-12-17 11:41:00 to 2025-12-17 11:56:00 2025-12-17 05:02:53 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:02:53 [thanhnien_timestamp] INFO: 2025-12-17 11:36:00 not in 2025-12-17 11:41:00 to 2025-12-17 11:56:00 2025-12-17 05:02:54 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:02:54 [thanhnien_timestamp] INFO: 2025-12-17 11:40:00 not in 2025-12-17 11:41:00 to 2025-12-17 11:56:00 2025-12-17 05:02:57 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:02:57 [thanhnien_timestamp] INFO: 2025-12-17 11:40:00 not in 2025-12-17 11:41:00 to 2025-12-17 11:56:00 2025-12-17 05:03:00 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:03:00 [openai._base_client] DEBUG: Request options: {'method': 'post', 'url': '/chat/completions', 'files': None, 'json_data': {'messages': [{'role': 'user', 'content': 'Act as a content analysis tool. I will provide you with a piece of content, and your task is to extract relevant tags (keywords or phrases) that summarize the main topics, themes, or ideas present in the text. The tags should be concise, specific, and useful for categorization or search purposes. Ignore common filler words (e.g., \'the\', \'and\', \'is\') unless they are part of a specific concept or phrase. After analyzing the content, return the tags in a simple list format. Here is the content to analyze: Địa điểm của hàng nghìn dấu chân khủng long này nằm tại một Công viên quốc gia của Ý gần nơi tổ chức Thế vận hội mùa đông Milan Cortina 2026 ở Bormio, các chuyên gia thông báo hôm thứ ba 16.12. Phát hiện này tại Công viên quốc gia Stelvio gây ấn tượng mạnh bởi số lượng dấu chân khổng lồ, ước tính lên tới 20.000 dấu chân trên diện tích khoảng 5 km, và vị trí gần biên giới Thụy Sĩ, từng là khu vực ven biển thời tiền sử, nơi chưa từng có dấu vết khủng long nào trước đây, các chuyên gia cho biết. "Lần này, hiện thực quả thực vượt xa cả tưởng tượng", Cristiano Dal Sasso, nhà cổ sinh vật học tại Bảo tàng Lịch sử Tự nhiên Milan, cho biết. Ông Dal Sasso nói rằng, những dấu chân khủng long này được cho là của những loài động vật ăn cỏ đi bằng hai chân, cổ dài, dài tới 10 mét, nặng 4 tấn. Một số dấu chân rộng tới 40 cm, với móng có thể nhìn thấy rõ. Dấu chân cho thấy khủng long di chuyển theo đàn và đôi khi chúng dừng lại theo đội hình vòng tròn, có thể là một biện pháp tự vệ. "Có những dấu vết rất rõ ràng của những cá thể đã đi với tốc độ chậm rãi, bình tĩnh, nhịp nhàng, mà không chạy", Dal Sasso nói trong họp báo. Những dấu chân trên được phát hiện bởi nhiếp ảnh gia động vật hoang dã Della Ferrera vào tháng 9 vừa qua, khi máy ảnh của ông hướng vào một bức tường thẳng đứng cách con đường gần nhất khoảng 600 mét. Vị trí này, ở độ cao khoảng 2.400 đến 2.800 mét so với mực nước biển trên một vách đá hướng về phía bắc, phần lớn nằm trong bóng râm, khiến cho những dấu chân, dù nằm ngay trước mắt, nhưng lại đặc biệt khó phát hiện nếu không có ống kính có độ phóng đại cao. "Điều bất ngờ lớn không phải là việc phát hiện ra những dấu chân, mà là việc phát hiện ra một số lượng lớn như vậy", Della Ferrara nói.'}], 'model': 'gpt-4o-mini', 'max_tokens': 200, 'temperature': 0.3}} 2025-12-17 05:03:00 [openai._base_client] DEBUG: Sending HTTP Request: POST https://api.openai.com/v1/chat/completions 2025-12-17 05:03:00 [httpcore.connection] DEBUG: connect_tcp.started host='api.openai.com' port=443 local_address=None timeout=900 socket_options=None 2025-12-17 05:03:00 [httpcore.connection] DEBUG: connect_tcp.complete return_value= 2025-12-17 05:03:00 [httpcore.connection] DEBUG: start_tls.started ssl_context= server_hostname='api.openai.com' timeout=900 2025-12-17 05:03:00 [httpcore.connection] DEBUG: start_tls.complete return_value= 2025-12-17 05:03:00 [httpcore.http11] DEBUG: send_request_headers.started request= 2025-12-17 05:03:00 [httpcore.http11] DEBUG: send_request_headers.complete 2025-12-17 05:03:00 [httpcore.http11] DEBUG: send_request_body.started request= 2025-12-17 05:03:00 [httpcore.http11] DEBUG: send_request_body.complete 2025-12-17 05:03:00 [httpcore.http11] DEBUG: receive_response_headers.started request= 2025-12-17 05:03:04 [httpcore.http11] DEBUG: receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Wed, 17 Dec 2025 05:03:03 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'access-control-expose-headers', b'X-Request-ID'), (b'openai-organization', b'user-bmggli0qfnphtzkdehrnfdrn'), (b'openai-processing-ms', b'2828'), (b'openai-project', b'proj_AqBCEfNib7E5LbrMYDz2oklk'), (b'openai-version', b'2020-10-01'), (b'x-envoy-upstream-service-time', b'3031'), (b'x-ratelimit-limit-requests', b'30000'), (b'x-ratelimit-limit-tokens', b'150000000'), (b'x-ratelimit-remaining-requests', b'29999'), (b'x-ratelimit-remaining-tokens', b'149999307'), (b'x-ratelimit-reset-requests', b'2ms'), (b'x-ratelimit-reset-tokens', b'0s'), (b'x-request-id', b'req_cb9484367ae34c18803ee12f865c44b6'), (b'x-openai-proxy-wasm', b'v0.1'), (b'cf-cache-status', b'DYNAMIC'), (b'Set-Cookie', b'__cf_bm=aPaDzu4vKCPuIeXJuqGm_5eCt46tx377c3mC4558heQ-1765947783-1.0.1.1-xElZv0WhSGPkEB5g2mAe7wx.yITbCvdA1rRti9tHWiRwnxVEpyXqA6Zv8NsNK2mA3YdVSy4VrjqJH4WKRL3Uisj0noaxLNpm5P5sdch_yZY; path=/; expires=Wed, 17-Dec-25 05:33:03 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'X-Content-Type-Options', b'nosniff'), (b'Set-Cookie', b'_cfuvid=u0t_poqWCl8_00ehWNcjwmmxIIrRWDR8dy4NFWQUqbs-1765947783977-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), (b'Server', b'cloudflare'), (b'CF-RAY', b'9af3df1dbcfd04ef-HKG'), (b'Content-Encoding', b'gzip'), (b'alt-svc', b'h3=":443"; ma=86400')]) 2025-12-17 05:03:04 [httpx] INFO: HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK" 2025-12-17 05:03:04 [httpcore.http11] DEBUG: receive_response_body.started request= 2025-12-17 05:03:04 [httpcore.http11] DEBUG: receive_response_body.complete 2025-12-17 05:03:04 [httpcore.http11] DEBUG: response_closed.started 2025-12-17 05:03:04 [httpcore.http11] DEBUG: response_closed.complete 2025-12-17 05:03:04 [openai._base_client] DEBUG: HTTP Response: POST https://api.openai.com/v1/chat/completions "200 OK" Headers([('date', 'Wed, 17 Dec 2025 05:03:03 GMT'), ('content-type', 'application/json'), ('transfer-encoding', 'chunked'), ('connection', 'keep-alive'), ('access-control-expose-headers', 'X-Request-ID'), ('openai-organization', 'user-bmggli0qfnphtzkdehrnfdrn'), ('openai-processing-ms', '2828'), ('openai-project', 'proj_AqBCEfNib7E5LbrMYDz2oklk'), ('openai-version', '2020-10-01'), ('x-envoy-upstream-service-time', '3031'), ('x-ratelimit-limit-requests', '30000'), ('x-ratelimit-limit-tokens', '150000000'), ('x-ratelimit-remaining-requests', '29999'), ('x-ratelimit-remaining-tokens', '149999307'), ('x-ratelimit-reset-requests', '2ms'), ('x-ratelimit-reset-tokens', '0s'), ('x-request-id', 'req_cb9484367ae34c18803ee12f865c44b6'), ('x-openai-proxy-wasm', 'v0.1'), ('cf-cache-status', 'DYNAMIC'), ('set-cookie', '__cf_bm=aPaDzu4vKCPuIeXJuqGm_5eCt46tx377c3mC4558heQ-1765947783-1.0.1.1-xElZv0WhSGPkEB5g2mAe7wx.yITbCvdA1rRti9tHWiRwnxVEpyXqA6Zv8NsNK2mA3YdVSy4VrjqJH4WKRL3Uisj0noaxLNpm5P5sdch_yZY; path=/; expires=Wed, 17-Dec-25 05:33:03 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), ('strict-transport-security', 'max-age=31536000; includeSubDomains; preload'), ('x-content-type-options', 'nosniff'), ('set-cookie', '_cfuvid=u0t_poqWCl8_00ehWNcjwmmxIIrRWDR8dy4NFWQUqbs-1765947783977-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), ('server', 'cloudflare'), ('cf-ray', '9af3df1dbcfd04ef-HKG'), ('content-encoding', 'gzip'), ('alt-svc', 'h3=":443"; ma=86400')]) 2025-12-17 05:03:04 [openai._base_client] DEBUG: request_id: req_cb9484367ae34c18803ee12f865c44b6 2025-12-17 05:03:04 [thanhnien_timestamp] INFO: Min timestamp: 2025-12-17 11:41:00, Published timestamp: 2025-12-17 11:41:00 2025-12-17 05:03:04 [urllib3.connectionpool] DEBUG: Starting new HTTP connection (1): tts-api:4444 2025-12-17 05:07:30 [urllib3.connectionpool] DEBUG: http://tts-api:4444 "POST /api/v2/text-to-speech HTTP/1.1" 200 411 2025-12-17 05:07:30 [scrapy.core.scraper] DEBUG: Scraped from <200 https://thanhnien.vn/phat-hien-hang-nghin-dau-chan-khung-long-co-nien-dai-210-trieu-nam-185251217111615962.htm> {'audio_url': 'https://lake-api.actable.ai/tts-data/mpsmrczn-2025-12-17%2005%3A03%3A18.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=pmq7GsXVsXQZXqTM0hWE%2F20251217%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20251217T050728Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=089be81586f746ad72e192de7f3a7fa6b89fe76f0d0d3d64eb92abba5f498844', 'author': None, 'category': 'Du lịch', 'content': 'Địa điểm của hàng nghìn dấu chân khủng long này nằm tại một Công ' 'viên quốc gia của Ý gần nơi tổ chức Thế vận hội mùa đông Milan ' 'Cortina 2026 ở Bormio, các chuyên gia thông báo hôm thứ ba 16.12. ' 'Phát hiện này tại Công viên quốc gia Stelvio gây ấn tượng mạnh ' 'bởi số lượng dấu chân khổng lồ, ước tính lên tới 20.000 dấu chân ' 'trên diện tích khoảng 5 km, và vị trí gần biên giới Thụy Sĩ, từng ' 'là khu vực ven biển thời tiền sử, nơi chưa từng có dấu vết khủng ' 'long nào trước đây, các chuyên gia cho biết. "Lần này, hiện thực ' 'quả thực vượt xa cả tưởng tượng", Cristiano Dal Sasso, nhà cổ ' 'sinh vật học tại Bảo tàng Lịch sử Tự nhiên Milan, cho biết. Ông ' 'Dal Sasso nói rằng, những dấu chân khủng long này được cho là của ' 'những loài động vật ăn cỏ đi bằng hai chân, cổ dài, dài tới 10 ' 'mét, nặng 4 tấn. Một số dấu chân rộng tới 40 cm, với móng có thể ' 'nhìn thấy rõ. Dấu chân cho thấy khủng long di chuyển theo đàn và ' 'đôi khi chúng dừng lại theo đội hình vòng tròn, có thể là một ' 'biện pháp tự vệ. "Có những dấu vết rất rõ ràng của những cá thể ' 'đã đi với tốc độ chậm rãi, bình tĩnh, nhịp nhàng, mà không chạy", ' 'Dal Sasso nói trong họp báo. Những dấu chân trên được phát hiện ' 'bởi nhiếp ảnh gia động vật hoang dã Della Ferrera vào tháng 9 vừa ' 'qua, khi máy ảnh của ông hướng vào một bức tường thẳng đứng cách ' 'con đường gần nhất khoảng 600 mét. Vị trí này, ở độ cao khoảng ' '2.400 đến 2.800 mét so với mực nước biển trên một vách đá hướng ' 'về phía bắc, phần lớn nằm trong bóng râm, khiến cho những dấu ' 'chân, dù nằm ngay trước mắt, nhưng lại đặc biệt khó phát hiện nếu ' 'không có ống kính có độ phóng đại cao. "Điều bất ngờ lớn không ' 'phải là việc phát hiện ra những dấu chân, mà là việc phát hiện ra ' 'một số lượng lớn như vậy", Della Ferrara nói.', 'description': ' Một nhiếp ảnh gia đã tình cờ phát hiện ra một trong những bộ ' 'sưu tập dấu chân khủng long lâu đời và lớn nhất từng được ' 'biết đến, có niên đại khoảng 210 triệu năm trước, thuộc kỷ ' 'Tam Điệp.', 'html_content': '
\n' '\n' '
\n' '\n' ' ' '

Địa điểm của hàng nghìn dấu ' 'chân khủng long này nằm tại một Công viên quốc gia của Ý gần nơi tổ ' 'chức Thế vận hội mùa đông Milan Cortina 2026 ở Bormio, các ' 'chuyên gia thông báo hôm thứ ba 16.12.

Phát hiện này tại Công viên quốc ' 'gia Stelvio gây ấn tượng mạnh bởi số lượng dấu chân khổng ' 'lồ, ước tính lên tới 20.000 dấu chân trên diện tích khoảng 5 ' 'km, và vị trí gần biên giới Thụy Sĩ, từng là khu vực ven ' 'biển thời tiền sử, nơi chưa từng có dấu vết khủng long nào ' 'trước đây, các chuyên gia cho biết.

"Lần này, hiện thực quả thực vượt ' 'xa cả tưởng tượng", Cristiano Dal Sasso, nhà cổ sinh vật học ' 'tại Bảo tàng Lịch sử Tự nhiên Milan, cho biết.

Phát hiện '
                 'hàng nghìn dấu chân khủng long có niên đại 210 triệu năm- '
                 'Ảnh 1.

Bức ảnh ghi lại hàng nghìn ' 'dấu chân khủng long tại Vườn quốc gia Stelvio, ' 'Ý

ẢNH: Della ' 'Ferrera

Ông ' 'Dal Sasso nói rằng, những dấu chân khủng long này được cho ' 'là của những loài động vật ăn cỏ đi bằng hai chân, cổ dài, ' 'dài tới 10 mét, nặng 4 tấn. Một số dấu chân rộng tới 40 cm, ' 'với móng có thể nhìn thấy rõ.

Dấu chân cho thấy khủng long di ' 'chuyển theo đàn và đôi khi chúng dừng lại theo đội hình vòng ' 'tròn, có thể là một biện pháp tự vệ.

"Có những dấu vết rất rõ ràng của ' 'những cá thể đã đi với tốc độ chậm rãi, bình tĩnh, nhịp ' 'nhàng, mà không chạy", Dal Sasso nói trong họp ' 'báo.

Phát hiện '
                 'hàng nghìn dấu chân khủng long có niên đại 210 triệu năm- '
                 'Ảnh 2.

Các chuyên gia đã rất ngạc ' 'nhiên trước số lượng dấu chân được tìm thấy ở khu vực ven ' 'biển, nơi trước đây chưa từng có dấu vết khủng long ' 'nào

ẢNH: Della ' 'Ferrera

Những dấu chân trên được phát ' 'hiện bởi nhiếp ảnh gia động vật hoang dã Della Ferrera vào ' 'tháng 9 vừa qua, khi máy ảnh của ông hướng vào một bức tường ' 'thẳng đứng cách con đường gần nhất khoảng 600 mét.

Vị trí này, ở độ cao khoảng ' '2.400 đến 2.800 mét so với mực nước biển trên một vách đá ' 'hướng về phía bắc, phần lớn nằm trong bóng râm, khiến cho ' 'những dấu chân, dù nằm ngay trước mắt, nhưng lại đặc biệt ' 'khó phát hiện nếu không có ống kính có độ phóng đại ' 'cao.

"Điều bất ngờ lớn ' 'không phải là việc phát hiện ra những dấu chân, mà là việc ' 'phát hiện ra một số lượng lớn như vậy", Della Ferrara ' 'nói.

\n' ' \n' '\n' '\n' ' \n' '
\n' ' \n' '\n' ' \n' ' \n' ' \n' ' \n' ' \n' '\n' '
\n' '\n' '
', 'md_content': '\n' '\n' 'Địa điểm của hàng nghìn dấu chân khủng long này nằm tại một ' '[Công viên quốc ' 'gia](https://thanhnien.vn/tong-thong-trump-ky-lenh-tang-phi-du-khach-nuoc-ngoai-185250710111755374.htm ' '"Tổng thống Trump ký lệnh tăng phí du khách nước ngoài") của Ý ' 'gần nơi tổ chức Thế vận hội mùa đông Milan Cortina 2026 ở ' 'Bormio, các chuyên gia thông báo hôm thứ ba 16.12.\n' '\n' 'Phát hiện này tại Công viên quốc gia Stelvio gây ấn tượng mạnh ' 'bởi số lượng dấu chân khổng lồ, ước tính lên tới 20.000 dấu ' 'chân trên diện tích khoảng 5 km, và vị trí gần biên giới Thụy ' 'Sĩ, từng là khu vực ven biển thời tiền sử, nơi chưa từng có ' 'dấu vết khủng long nào trước đây, các chuyên gia cho biết.\n' '\n' '"Lần này, hiện thực quả thực vượt xa cả tưởng tượng", ' 'Cristiano Dal Sasso, nhà cổ sinh vật học tại Bảo tàng Lịch sử ' 'Tự nhiên Milan, cho biết.\n' '\n' '![Phát hiện hàng nghìn dấu chân khủng long có niên đại 210 ' 'triệu năm- Ảnh ' '1.](https://images2.thanhnien.vn/thumb_w/640/528068263637045248/2025/12/17/khung-long-1765945355578376758459.jpg ' '"Phát hiện hàng nghìn dấu chân khủng long có niên đại 210 ' 'triệu năm- Ảnh 1.")Bức ảnh ghi lại hàng nghìn dấu chân khủng ' 'long tại Vườn quốc gia Stelvio, Ý\n' '\n' 'ẢNH: Della Ferrera\n' '\n' 'Ông Dal Sasso nói rằng, những dấu chân khủng long này được cho ' 'là của những loài động vật ăn cỏ đi bằng hai chân, cổ dài, dài ' 'tới 10 mét, nặng 4 tấn. Một số dấu chân rộng tới 40 cm, với ' 'móng có thể nhìn thấy rõ.\n' '\n' 'Dấu chân cho thấy khủng long di chuyển theo đàn và đôi khi ' 'chúng dừng lại theo đội hình vòng tròn, có thể là một biện ' 'pháp tự vệ.\n' '\n' '"Có những dấu vết rất rõ ràng của những cá thể đã đi với tốc ' 'độ chậm rãi, bình tĩnh, nhịp nhàng, mà không chạy", Dal Sasso ' 'nói trong họp báo.\n' '\n' '![Phát hiện hàng nghìn dấu chân khủng long có niên đại 210 ' 'triệu năm- Ảnh ' '2.](https://images2.thanhnien.vn/thumb_w/640/528068263637045248/2025/12/17/khung-long-1-1765945437309249142174.jpg ' '"Phát hiện hàng nghìn dấu chân khủng long có niên đại 210 ' 'triệu năm- Ảnh 2.")Các chuyên gia đã rất ngạc nhiên trước số ' 'lượng dấu chân được tìm thấy ở khu vực ven biển, nơi trước đây ' 'chưa từng có dấu vết khủng long nào\n' '\n' 'ẢNH: Della Ferrera\n' '\n' 'Những dấu chân trên được phát hiện bởi nhiếp ảnh gia động vật ' 'hoang dã Della Ferrera vào tháng 9 vừa qua, khi máy ảnh của ' 'ông hướng vào một bức tường thẳng đứng cách con đường gần nhất ' 'khoảng 600 mét.\n' '\n' 'Vị trí này, ở độ cao khoảng 2.400 đến 2.800 mét so với mực ' 'nước biển trên một vách đá hướng về phía bắc, phần lớn nằm ' 'trong bóng râm, khiến cho những dấu chân, dù nằm ngay trước ' 'mắt, nhưng lại đặc biệt khó phát hiện nếu không có ống kính có ' 'độ phóng đại cao.\n' '\n' '"Điều bất ngờ lớn không phải là việc phát hiện ra những dấu ' 'chân, mà là việc phát hiện ra một số lượng lớn như vậy", Della ' 'Ferrara nói.\n' '\n' '\n' '\n' ' //Chèn ads giữa bài\n' ' (runinit = window.runinit || []).push(function () {\n' ' //Nếu k chạy ads thì return\n' " if (typeof \\_chkPrLink != 'undefined' && \\_chkPrLink)\n" ' return;\n' '\n' '\n' ' var mutexAds = \'\';\n' ' var content = $(\'[data-role="content"]\');\n' ' if (content.length > 0) {\n' ' var childNodes = content[0].childNodes;\n' ' for (i = 0; i < childNodes.length; i++) {\n' ' var childNode = childNodes[i];\n' '\n' ' var isPhotoOrVideo = false;\n' " if (childNode.nodeName.toLowerCase() == 'div') {\n" ' // kiem tra xem co la anh khong?\n' " var type = $(childNode).attr('class') + '';\n" '\n' " if (type.indexOf('VCSortableInPreviewMode') >= 0) {\n" ' isPhotoOrVideo = true;\n' ' }\n' ' }\n' '\n' ' try {\n' ' if ((i >= childNodes.length / 2 - 1) && (i < ' 'childNodes.length / 2) && !isPhotoOrVideo) {\n' ' if (i <= childNodes.length - 3) {\n' ' childNode.after(htmlToElement(mutexAds));\n' ' arfAsync.push("l2srqb41");\n' ' }\n' ' break;\n' ' }\n' ' }\n' ' catch (e) { }\n' ' }\n' ' }\n' ' });\n' ' function htmlToElement(html) {\n' " var template = document.createElement('template');\n" ' template.innerHTML = html;\n' ' return template.content.firstChild;\n' ' }\n' '\n' '\n' '\n' ' if (window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden)) {\n' ' if (!laNuocNgoai) {\n' ' (function (w, q) {\n' ' w[q] = w[q] || [];\n' ' w[q].push(["\\_mgc.load"]);\n' ' })(window, "\\_mgq");\n' ' }\n' ' }\n' ' \n' '\n' '\n' ' (function() {\n' ' if (!(window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden))) return;\n' " if (typeof window.laNuocNgoai === 'undefined' || " '!window.laNuocNgoai) return; // chỉ chạy khi laNuocNgoai true\n' '\n' " var containerSelector = 'div.detail-cmain';\n" ' var root = document.querySelector(containerSelector);\n' ' if (!root) return;\n' '\n' ' // Thu thập figure + p (p không nằm trong figure)\n' " var figures = Array.from(root.querySelectorAll('figure'));\n" ' var paragraphs = ' "Array.from(root.querySelectorAll('p')).filter(function(p){ " "return !p.closest('figure'); });\n" ' var elements = figures.concat(paragraphs); // NodeList vốn đã ' 'theo DOM order => không cần sort\n' ' if (!elements.length) return;\n' '\n' ' var target = elements[Math.floor(elements.length / 2)]; // ' 'giữa bài\n' ' if (!target || !target.parentNode) return;\n' '\n' " var newDiv = document.createElement('div');\n" " newDiv.id = 'taboola-mid-article-widget';\n" ' target.parentNode.insertBefore(newDiv, target.nextSibling);\n' '\n' ' window.\\_taboola = window.\\_taboola || [];\n' ' window.\\_taboola.push({\n' " mode: 'thumbnails-4x1',\n" " container: 'taboola-mid-article-widget',\n" " placement: 'Mid Article Widget',\n" " target\\_type: 'mix'\n" ' });\n' ' })();\n' ' \n' '\n', 'published_date': datetime.date(2025, 12, 17), 'published_timestamp': datetime.datetime(2025, 12, 17, 11, 41), 'source': 'ThanhNien', 'tags': ['Dấu chân khủng long', 'Công viên quốc gia Stelvio', 'Thế vận hội mùa đông Milan Cortina 2026', 'Bormio', 'Phát hiện khảo cổ', 'Động vật ăn cỏ', 'Cổ sinh vật học', 'Cristiano Dal Sasso', 'Della Ferrera', 'Địa điểm khảo cổ', 'Biên giới Thụy Sĩ', 'Khu vực ven biển tiền sử', 'Số lượng lớn dấu chân', 'Hành vi di chuyển khủng long', 'Độ cao 2400-2800 mét', 'Khó phát hiện dấu chân', 'Nhiếp ảnh động vật hoang dã'], 'title': 'Phát hiện hàng nghìn dấu chân khủng long có niên đại 210 triệu năm', 'url': 'https://thanhnien.vn/phat-hien-hang-nghin-dau-chan-khung-long-co-nien-dai-210-trieu-nam-185251217111615962.htm', 'voice': 'SG-Nu-1-DT'} 2025-12-17 05:07:30 [scrapy.extensions.logstats] INFO: Crawled 16 pages (at 16 pages/min), scraped 1 items (at 1 items/min) 2025-12-17 05:07:30 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:07:30 [openai._base_client] DEBUG: Request options: {'method': 'post', 'url': '/chat/completions', 'files': None, 'json_data': {'messages': [{'role': 'user', 'content': 'Act as a content analysis tool. I will provide you with a piece of content, and your task is to extract relevant tags (keywords or phrases) that summarize the main topics, themes, or ideas present in the text. The tags should be concise, specific, and useful for categorization or search purposes. Ignore common filler words (e.g., \'the\', \'and\', \'is\') unless they are part of a specific concept or phrase. After analyzing the content, return the tags in a simple list format. Here is the content to analyze: Trận chung kết bóng đá nam SEA Games 33 giữa U.23 Việt Nam và U.23 Thái Lan diễn ra lúc 19 giờ 30 ngày 18.12 trên sân Rajamangala. Giới chuyên môn nhận định, đây không đơn thuần là màn so tài tranh HCV , mà còn mang ý nghĩa biểu tượng cho cuộc đua khẳng định vị thế số một của bóng đá trẻ Đông Nam Á ở thời điểm hiện tại. Hành trình vào chung kết SEA Games 33 của U.23 Việt Nam không quá ồn ào, nhưng cho thấy rõ sự trưởng thành về bản lĩnh và tư duy thi đấu. Những nghi ngờ ban đầu dần được hóa giải khi thầy trò HLV Kim Sang-sik biết cách chơi chặt chẽ, kiểm soát tốt thế trận và tung ra đòn quyết định đúng thời điểm. Chiến thắng thuyết phục ở bán kết (thắng U.23 Philippines 2-0 với những bàn thắng ở phút cuối) là minh chứng cho bản lĩnh của U.23 Việt Nam. Ở phía đối diện, U.23 Thái Lan bước vào trận tranh HCV với vị thế ứng viên hàng đầu. Đội chủ nhà sở hữu lực lượng đồng đều, lối chơi giàu năng lượng và luôn biết cách gây áp lực lên đối thủ. Tuy nhiên, con đường vào chung kết của “Voi chiến trẻ” cũng để lại những dấu hỏi nhất định, khiến cuộc đối đầu cuối cùng trở nên khó lường. "Yếu tố lịch sử càng làm trận chung kết thêm đặc biệt. Thái Lan là thế lực thống trị bóng đá nam SEA Games với 16 lần vô địch, từng nhiều năm là nỗi ám ảnh với Việt Nam. Nhưng trong những lần đối đầu gần đây, U.23 Việt Nam đã cho thấy sự tự tin và bản lĩnh khác hẳn. Nếu không cẩn trọng, U.23 Thái Lan hoàn toàn có thể gục ngã, cay đắng nhìn U.23 Việt Nam giành HCV", trang Thairath đánh giá. Bên cạnh việc tường thuật trực tiếp trên các nền tảng số, FPT Play tiếp tục triển khai chuỗi hoạt động cộng đồng quy mô lớn khi tổ chức công chiếu trận chung kết tại 15 địa điểm thuộc 14 tỉnh, thành phố trên cả nước. Các điểm trình chiếu được đặt tại những không gian công cộng như quảng trường, công viên, trung tâm văn hóa ở Ninh Bình, Thanh Hóa, Quảng Ninh, Bắc Ninh, Nghệ An, Quảng Trị, Đà Nẵng, Khánh Hòa, Lâm Đồng, Đồng Nai, Tây Ninh, TP.HCM, Cần Thơ và Đồng Tháp. Theo kế hoạch, sự kiện sẽ mở cửa đón người hâm mộ từ 18 giờ cho đến khi trận đấu kết thúc. Ngoài việc theo dõi màn so tài đỉnh cao trên màn hình LED cỡ lớn, khán giả còn có thể check-in, tham gia các hoạt động bên lề và hòa mình vào bầu không khí bóng đá cuồng nhiệt, không kém gì trên các khán đài sân Rajamangala. Đại diện FPT Play cho biết, chuỗi công chiếu chung kết SEA Games 33 là nỗ lực nhằm đưa bóng đá đến gần hơn với người hâm mộ, đồng thời tạo không gian để cổ động viên cùng sát cánh, tiếp thêm tinh thần cho các tuyển thủ U.23 Việt Nam trong trận đấu mang tính lịch sử. Trước đó, đơn vị này cũng đã triển khai chiến dịch trực tuyến thu thập 10.000 lời chúc từ người hâm mộ gửi tới Đoàn thể thao Việt Nam dự SEA Games Thailand 2025. Trận chung kết sắp tới đánh dấu lần thứ 6 Việt Nam và Thái Lan chạm trán nhau ở vòng đấu cuối cùng của môn bóng đá nam SEA Games. Đây tiếp tục là cuộc đối đầu nhiều duyên nợ giữa hai nền bóng đá hàng đầu khu vực. Nếu giành chiến thắng, U.23 Việt Nam sẽ tái lập kỳ tích từng làm được tại SEA Games 2019 và 2021 (thi đấu năm 2022), khi bóng đá nam Việt Nam giành hai HCV liên tiếp. Trong bối cảnh người hâm mộ cả nước đang hướng về trận “derby Đông Nam Á”, những điểm công chiếu do FPT Play tổ chức hứa hẹn sẽ trở thành tâm điểm, góp phần tạo nên làn sóng cổ vũ mạnh mẽ cho U.23 Việt Nam trên hành trình chinh phục đỉnh cao SEA Games. Xem SEA Games 33, sát cánh cùng Đoàn Thể thao Việt Nam, trọn vẹn nhất trên FPT Play, tại http://fptplay.vn hoặc tại Ứng dụng FPT Play dành cho các thiết bị Smart TV, Smart Phone, FPT Play Box.'}], 'model': 'gpt-4o-mini', 'max_tokens': 200, 'temperature': 0.3}} 2025-12-17 05:07:30 [openai._base_client] DEBUG: Sending HTTP Request: POST https://api.openai.com/v1/chat/completions 2025-12-17 05:07:30 [httpcore.connection] DEBUG: connect_tcp.started host='api.openai.com' port=443 local_address=None timeout=900 socket_options=None 2025-12-17 05:07:30 [httpcore.connection] DEBUG: connect_tcp.complete return_value= 2025-12-17 05:07:30 [httpcore.connection] DEBUG: start_tls.started ssl_context= server_hostname='api.openai.com' timeout=900 2025-12-17 05:07:30 [httpcore.connection] DEBUG: start_tls.complete return_value= 2025-12-17 05:07:30 [httpcore.http11] DEBUG: send_request_headers.started request= 2025-12-17 05:07:30 [httpcore.http11] DEBUG: send_request_headers.complete 2025-12-17 05:07:30 [httpcore.http11] DEBUG: send_request_body.started request= 2025-12-17 05:07:30 [httpcore.http11] DEBUG: send_request_body.complete 2025-12-17 05:07:30 [httpcore.http11] DEBUG: receive_response_headers.started request= 2025-12-17 05:07:33 [httpcore.http11] DEBUG: receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Wed, 17 Dec 2025 05:07:33 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'access-control-expose-headers', b'X-Request-ID'), (b'openai-organization', b'user-bmggli0qfnphtzkdehrnfdrn'), (b'openai-processing-ms', b'2909'), (b'openai-project', b'proj_AqBCEfNib7E5LbrMYDz2oklk'), (b'openai-version', b'2020-10-01'), (b'x-envoy-upstream-service-time', b'2926'), (b'x-ratelimit-limit-requests', b'30000'), (b'x-ratelimit-limit-tokens', b'150000000'), (b'x-ratelimit-remaining-requests', b'29999'), (b'x-ratelimit-remaining-tokens', b'149998730'), (b'x-ratelimit-reset-requests', b'2ms'), (b'x-ratelimit-reset-tokens', b'0s'), (b'x-request-id', b'req_2fe5aaaee17d4c51a0677557e4fb996d'), (b'x-openai-proxy-wasm', b'v0.1'), (b'cf-cache-status', b'DYNAMIC'), (b'Set-Cookie', b'__cf_bm=6EdxtX32bSOteUDZ6nXvsSfXKvhRKdE_oNYdlnfm0sc-1765948053-1.0.1.1-gjQQbmVb13Q7FDzUHVz1f70M.ySZ_xBLYzrKrAKaVFHo611Nf.dh8ssHGM2vTBMrkkq5Tl9dbqnwWg2KhCe0sJanDjC7ZrgxFogB1krStTc; path=/; expires=Wed, 17-Dec-25 05:37:33 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'X-Content-Type-Options', b'nosniff'), (b'Set-Cookie', b'_cfuvid=ShfZjurUD7HZESih0eAT4qggYFmLVVI._LxUuO0C4ZY-1765948053726-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), (b'Server', b'cloudflare'), (b'CF-RAY', b'9af3e5b45d1dddc6-HKG'), (b'Content-Encoding', b'gzip'), (b'alt-svc', b'h3=":443"; ma=86400')]) 2025-12-17 05:07:33 [httpx] INFO: HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK" 2025-12-17 05:07:33 [httpcore.http11] DEBUG: receive_response_body.started request= 2025-12-17 05:07:33 [httpcore.http11] DEBUG: receive_response_body.complete 2025-12-17 05:07:33 [httpcore.http11] DEBUG: response_closed.started 2025-12-17 05:07:33 [httpcore.http11] DEBUG: response_closed.complete 2025-12-17 05:07:33 [openai._base_client] DEBUG: HTTP Response: POST https://api.openai.com/v1/chat/completions "200 OK" Headers([('date', 'Wed, 17 Dec 2025 05:07:33 GMT'), ('content-type', 'application/json'), ('transfer-encoding', 'chunked'), ('connection', 'keep-alive'), ('access-control-expose-headers', 'X-Request-ID'), ('openai-organization', 'user-bmggli0qfnphtzkdehrnfdrn'), ('openai-processing-ms', '2909'), ('openai-project', 'proj_AqBCEfNib7E5LbrMYDz2oklk'), ('openai-version', '2020-10-01'), ('x-envoy-upstream-service-time', '2926'), ('x-ratelimit-limit-requests', '30000'), ('x-ratelimit-limit-tokens', '150000000'), ('x-ratelimit-remaining-requests', '29999'), ('x-ratelimit-remaining-tokens', '149998730'), ('x-ratelimit-reset-requests', '2ms'), ('x-ratelimit-reset-tokens', '0s'), ('x-request-id', 'req_2fe5aaaee17d4c51a0677557e4fb996d'), ('x-openai-proxy-wasm', 'v0.1'), ('cf-cache-status', 'DYNAMIC'), ('set-cookie', '__cf_bm=6EdxtX32bSOteUDZ6nXvsSfXKvhRKdE_oNYdlnfm0sc-1765948053-1.0.1.1-gjQQbmVb13Q7FDzUHVz1f70M.ySZ_xBLYzrKrAKaVFHo611Nf.dh8ssHGM2vTBMrkkq5Tl9dbqnwWg2KhCe0sJanDjC7ZrgxFogB1krStTc; path=/; expires=Wed, 17-Dec-25 05:37:33 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), ('strict-transport-security', 'max-age=31536000; includeSubDomains; preload'), ('x-content-type-options', 'nosniff'), ('set-cookie', '_cfuvid=ShfZjurUD7HZESih0eAT4qggYFmLVVI._LxUuO0C4ZY-1765948053726-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), ('server', 'cloudflare'), ('cf-ray', '9af3e5b45d1dddc6-HKG'), ('content-encoding', 'gzip'), ('alt-svc', 'h3=":443"; ma=86400')]) 2025-12-17 05:07:33 [openai._base_client] DEBUG: request_id: req_2fe5aaaee17d4c51a0677557e4fb996d 2025-12-17 05:07:33 [thanhnien_timestamp] INFO: Min timestamp: 2025-12-17 11:41:00, Published timestamp: 2025-12-17 11:41:00 2025-12-17 05:07:33 [httpcore.connection] DEBUG: close.started 2025-12-17 05:07:33 [httpcore.connection] DEBUG: close.complete 2025-12-17 05:07:33 [urllib3.connectionpool] DEBUG: Starting new HTTP connection (1): tts-api:4444 2025-12-17 05:11:32 [urllib3.connectionpool] DEBUG: http://tts-api:4444 "POST /api/v2/text-to-speech HTTP/1.1" 200 413 2025-12-17 05:11:32 [scrapy.core.scraper] DEBUG: Scraped from <200 https://thanhnien.vn/u23-viet-nam-se-khien-thai-lan-guc-nga-fpt-play-cong-chieu-o-tinh-thanh-nao-185251217113844762.htm> {'audio_url': 'https://lake-api.actable.ai/tts-data/kxswsmml-2025-12-17%2005%3A07%3A54.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=pmq7GsXVsXQZXqTM0hWE%2F20251217%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20251217T051129Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=f3c12bd3943ca789470462db3e229eab46a736f78591206fc6309700ad110805', 'author': None, 'category': 'Thể thao', 'content': 'Trận chung kết bóng đá nam SEA Games 33 giữa U.23 Việt Nam và ' 'U.23 Thái Lan diễn ra lúc 19 giờ 30 ngày 18.12 trên sân ' 'Rajamangala. Giới chuyên môn nhận định, đây không đơn thuần là ' 'màn so tài tranh HCV , mà còn mang ý nghĩa biểu tượng cho cuộc ' 'đua khẳng định vị thế số một của bóng đá trẻ Đông Nam Á ở thời ' 'điểm hiện tại. Hành trình vào chung kết SEA Games 33 của U.23 ' 'Việt Nam không quá ồn ào, nhưng cho thấy rõ sự trưởng thành về ' 'bản lĩnh và tư duy thi đấu. Những nghi ngờ ban đầu dần được hóa ' 'giải khi thầy trò HLV Kim Sang-sik biết cách chơi chặt chẽ, kiểm ' 'soát tốt thế trận và tung ra đòn quyết định đúng thời điểm. Chiến ' 'thắng thuyết phục ở bán kết (thắng U.23 Philippines 2-0 với những ' 'bàn thắng ở phút cuối) là minh chứng cho bản lĩnh của U.23 Việt ' 'Nam. Ở phía đối diện, U.23 Thái Lan bước vào trận tranh HCV với ' 'vị thế ứng viên hàng đầu. Đội chủ nhà sở hữu lực lượng đồng đều, ' 'lối chơi giàu năng lượng và luôn biết cách gây áp lực lên đối ' 'thủ. Tuy nhiên, con đường vào chung kết của “Voi chiến trẻ” cũng ' 'để lại những dấu hỏi nhất định, khiến cuộc đối đầu cuối cùng trở ' 'nên khó lường. "Yếu tố lịch sử càng làm trận chung kết thêm đặc ' 'biệt. Thái Lan là thế lực thống trị bóng đá nam SEA Games với 16 ' 'lần vô địch, từng nhiều năm là nỗi ám ảnh với Việt Nam. Nhưng ' 'trong những lần đối đầu gần đây, U.23 Việt Nam đã cho thấy sự tự ' 'tin và bản lĩnh khác hẳn. Nếu không cẩn trọng, U.23 Thái Lan hoàn ' 'toàn có thể gục ngã, cay đắng nhìn U.23 Việt Nam giành HCV", ' 'trang Thairath đánh giá. Bên cạnh việc tường thuật trực tiếp trên ' 'các nền tảng số, FPT Play tiếp tục triển khai chuỗi hoạt động ' 'cộng đồng quy mô lớn khi tổ chức công chiếu trận chung kết tại 15 ' 'địa điểm thuộc 14 tỉnh, thành phố trên cả nước. Các điểm trình ' 'chiếu được đặt tại những không gian công cộng như quảng trường, ' 'công viên, trung tâm văn hóa ở Ninh Bình, Thanh Hóa, Quảng Ninh, ' 'Bắc Ninh, Nghệ An, Quảng Trị, Đà Nẵng, Khánh Hòa, Lâm Đồng, Đồng ' 'Nai, Tây Ninh, TP.HCM, Cần Thơ và Đồng Tháp. Theo kế hoạch, sự ' 'kiện sẽ mở cửa đón người hâm mộ từ 18 giờ cho đến khi trận đấu ' 'kết thúc. Ngoài việc theo dõi màn so tài đỉnh cao trên màn hình ' 'LED cỡ lớn, khán giả còn có thể check-in, tham gia các hoạt động ' 'bên lề và hòa mình vào bầu không khí bóng đá cuồng nhiệt, không ' 'kém gì trên các khán đài sân Rajamangala. Đại diện FPT Play cho ' 'biết, chuỗi công chiếu chung kết SEA Games 33 là nỗ lực nhằm đưa ' 'bóng đá đến gần hơn với người hâm mộ, đồng thời tạo không gian để ' 'cổ động viên cùng sát cánh, tiếp thêm tinh thần cho các tuyển thủ ' 'U.23 Việt Nam trong trận đấu mang tính lịch sử. Trước đó, đơn vị ' 'này cũng đã triển khai chiến dịch trực tuyến thu thập 10.000 lời ' 'chúc từ người hâm mộ gửi tới Đoàn thể thao Việt Nam dự SEA Games ' 'Thailand 2025. Trận chung kết sắp tới đánh dấu lần thứ 6 Việt Nam ' 'và Thái Lan chạm trán nhau ở vòng đấu cuối cùng của môn bóng đá ' 'nam SEA Games. Đây tiếp tục là cuộc đối đầu nhiều duyên nợ giữa ' 'hai nền bóng đá hàng đầu khu vực. Nếu giành chiến thắng, U.23 ' 'Việt Nam sẽ tái lập kỳ tích từng làm được tại SEA Games 2019 và ' '2021 (thi đấu năm 2022), khi bóng đá nam Việt Nam giành hai HCV ' 'liên tiếp. Trong bối cảnh người hâm mộ cả nước đang hướng về trận ' '“derby Đông Nam Á”, những điểm công chiếu do FPT Play tổ chức hứa ' 'hẹn sẽ trở thành tâm điểm, góp phần tạo nên làn sóng cổ vũ mạnh ' 'mẽ cho U.23 Việt Nam trên hành trình chinh phục đỉnh cao SEA ' 'Games. Xem SEA Games 33, sát cánh cùng Đoàn Thể thao Việt Nam, ' 'trọn vẹn nhất trên FPT Play, tại http://fptplay.vn hoặc tại Ứng ' 'dụng FPT Play dành cho các thiết bị Smart TV, Smart Phone, FPT ' 'Play Box.', 'description': 'Trận tranh HCV bóng đá nam SEA Games 33 giữa U.23 Việt Nam và ' 'U.23 Thái Lan sẽ được FPT Play tổ chức công chiếu tại 15 địa ' 'điểm công cộng trên 14 tỉnh, thành, tạo nên ngày hội bóng đá ' 'sôi động cho người hâm mộ cả nước.', 'html_content': '
\n' '\n' '
\n' '\n' ' ' '

"Nếu không cẩn trọng, U.23 Thái Lan ' 'sẽ cay đắng nhìn U.23 Việt Nam giành HCV SEA Games ' '33"

Trận ' 'chung kết bóng đá nam SEA Games 33 giữa U.23 Việt Nam và ' 'U.23 Thái Lan diễn ra lúc 19 giờ 30 ngày 18.12 trên sân ' 'Rajamangala. Giới chuyên môn nhận định, đây không đơn thuần ' 'là màn so tài tranh HCV, mà còn mang ý nghĩa ' 'biểu tượng cho cuộc đua khẳng định vị thế số một của bóng đá ' 'trẻ Đông Nam Á ở thời điểm hiện tại.\xa0

Hành trình vào chung kết SEA ' 'Games 33 của U.23 Việt Nam không quá ồn ào, ' 'nhưng cho thấy rõ sự trưởng thành về bản lĩnh và tư duy thi ' 'đấu. Những nghi ngờ ban đầu dần được hóa giải khi thầy trò ' 'HLV Kim Sang-sik biết cách chơi chặt chẽ, kiểm soát tốt thế ' 'trận và tung ra đòn quyết định đúng thời điểm. Chiến thắng ' 'thuyết phục ở bán kết (thắng U.23 Philippines 2-0 với những ' 'bàn thắng ở phút cuối) là minh chứng cho bản lĩnh của U.23 ' 'Việt Nam.\xa0

Ở phía đối ' 'diện, U.23 Thái Lan bước vào trận tranh HCV với vị thế ứng ' 'viên hàng đầu. Đội chủ nhà sở hữu lực lượng đồng đều, lối ' 'chơi giàu năng lượng và luôn biết cách gây áp lực lên đối ' 'thủ. Tuy nhiên, con đường vào chung kết của “Voi chiến trẻ” ' 'cũng để lại những dấu hỏi nhất định, khiến cuộc đối đầu cuối ' 'cùng trở nên khó lường.

"Yếu tố lịch sử càng làm trận ' 'chung kết thêm đặc biệt. Thái Lan là thế lực thống trị bóng ' 'đá nam SEA Games với 16 lần vô địch, từng nhiều năm là nỗi ' 'ám ảnh với Việt Nam. Nhưng trong những lần đối đầu gần đây, ' 'U.23 Việt Nam đã cho thấy sự tự tin và bản lĩnh khác hẳn. ' 'Nếu không cẩn trọng, U.23 Thái Lan hoàn toàn có thể gục ngã, ' 'cay đắng nhìn U.23 Việt Nam giành HCV", trang ' 'Thairath đánh giá.

\'U.23 '

U.23 Việt Nam quyết tâm giành HCV ' 'SEA Games 33

ẢNH: FPT ' 'PLAY

FPT Play công chiếu trận chung kết ' 'của U.23 Việt Nam tại 14\xa0tỉnh, thành phố

Bên cạnh việc tường thuật trực ' 'tiếp trên các nền tảng số, FPT Play tiếp tục triển khai ' 'chuỗi hoạt động cộng đồng quy mô lớn khi tổ chức công chiếu ' 'trận chung kết tại 15 địa điểm thuộc 14 tỉnh, thành phố trên ' 'cả nước. Các điểm trình chiếu được đặt tại những không gian ' 'công cộng như quảng trường, công viên, trung tâm văn hóa ở ' 'Ninh Bình, Thanh Hóa, Quảng Ninh, Bắc Ninh, Nghệ An, Quảng ' 'Trị, Đà Nẵng, Khánh Hòa, Lâm Đồng, Đồng Nai, Tây Ninh, ' 'TP.HCM, Cần Thơ và Đồng Tháp.

Theo kế hoạch, sự kiện sẽ mở cửa ' 'đón người hâm mộ từ 18 giờ cho đến khi trận đấu kết thúc. ' 'Ngoài việc theo dõi màn so tài đỉnh cao trên màn hình LED cỡ ' 'lớn, khán giả còn có thể check-in, tham gia các hoạt động ' 'bên lề và hòa mình vào bầu không khí bóng đá cuồng nhiệt, ' 'không kém gì trên các khán đài sân Rajamangala.

Đại diện FPT Play cho biết, chuỗi ' 'công chiếu chung kết SEA Games 33 là nỗ lực nhằm đưa bóng đá ' 'đến gần hơn với người hâm mộ, đồng thời tạo không gian để cổ ' 'động viên cùng sát cánh, tiếp thêm tinh thần cho các tuyển ' 'thủ U.23 Việt Nam trong trận đấu mang tính lịch ' 'sử. Trước đó, đơn vị này cũng đã triển khai chiến dịch trực ' 'tuyến thu thập 10.000 lời chúc từ người hâm mộ gửi tới Đoàn ' 'thể thao Việt Nam dự SEA Games Thailand 2025.

\'U.23 '

Những điểm chiếu cụ thể trên toàn ' 'quốc

ẢNH: FPT PLAY

Trận chung kết sắp tới đánh dấu ' 'lần thứ 6 Việt Nam và Thái Lan chạm trán nhau ở vòng đấu ' 'cuối cùng của môn bóng đá nam SEA Games. Đây tiếp tục là ' 'cuộc đối đầu nhiều duyên nợ giữa hai nền bóng đá hàng đầu ' 'khu vực. Nếu giành chiến thắng, U.23 Việt Nam ' 'sẽ tái lập kỳ tích từng làm được tại SEA Games 2019 và 2021 ' '(thi đấu năm 2022), khi bóng đá nam Việt Nam giành hai HCV ' 'liên tiếp.

Trong bối cảnh ' 'người hâm mộ cả nước đang hướng về trận “derby Đông Nam Á”, ' 'những điểm công chiếu do FPT Play tổ chức hứa hẹn sẽ trở ' 'thành tâm điểm, góp phần tạo nên làn sóng cổ vũ mạnh mẽ cho ' 'U.23 Việt Nam trên hành trình chinh phục đỉnh ' 'cao SEA Games.

Xem SEA Games 33, sát cánh ' 'cùng Đoàn Thể thao Việt Nam, trọn vẹn nhất trên FPT Play, ' 'tại http://fptplay.vn hoặc tại Ứng dụng FPT ' 'Play dành cho các thiết bị Smart TV, Smart Phone, FPT Play ' 'Box.\xa0

\n' ' \n' '\n' '\n' ' \n' '
\n' ' \n' '\n' ' \n' ' \n' ' \n' ' \n' ' \n' '\n' '
\n' '\n' '
', 'md_content': '\n' '\n' '## "Nếu không cẩn trọng, U.23 Thái Lan sẽ cay đắng nhìn U.23 ' 'Việt Nam giành HCV SEA Games 33"\n' '\n' 'Trận chung kết bóng đá nam SEA Games 33 giữa [U.23 Việt ' 'Nam](https://thanhnien.vn/thai-lan-am-anh-chung-ket-tai-tieng-sea-games-32-co-hoi-cho-u23-viet-nam-185251217083811495.htm ' '"U.23 Việt Nam") và U.23 Thái Lan diễn ra lúc 19 giờ 30 ngày ' '18.12 trên sân Rajamangala. Giới chuyên môn nhận định, đây ' 'không đơn thuần là màn so tài tranh ' '[HCV](https://thanhnien.vn/thu-vi-hinh-anh-hoang-hau-suthida-lam-hoa-tieu-thuyen-buom-thai-lan-but-toc-sap-gianh-hcv-sea-games-185251217104047339.htm ' '"HCV"), mà còn mang ý nghĩa biểu tượng cho cuộc đua khẳng định ' 'vị thế số một của bóng đá trẻ Đông Nam Á ở thời điểm hiện ' 'tại.\xa0\n' '\n' 'Hành trình vào chung kết SEA Games 33 của U.23 Việt Nam không ' 'quá ồn ào, nhưng cho thấy rõ sự trưởng thành về bản lĩnh và tư ' 'duy thi đấu. Những nghi ngờ ban đầu dần được hóa giải khi thầy ' 'trò HLV Kim Sang-sik biết cách chơi chặt chẽ, kiểm soát tốt ' 'thế trận và tung ra đòn quyết định đúng thời điểm. Chiến thắng ' 'thuyết phục ở bán kết (thắng U.23 Philippines 2-0 với những ' 'bàn thắng ở phút cuối) là minh chứng cho bản lĩnh của U.23 ' 'Việt Nam.\xa0\n' '\n' 'Ở phía đối diện, U.23 Thái Lan bước vào trận tranh HCV với vị ' 'thế ứng viên hàng đầu. Đội chủ nhà sở hữu lực lượng đồng đều, ' 'lối chơi giàu năng lượng và luôn biết cách gây áp lực lên đối ' 'thủ. Tuy nhiên, con đường vào chung kết của “Voi chiến trẻ” ' 'cũng để lại những dấu hỏi nhất định, khiến cuộc đối đầu cuối ' 'cùng trở nên khó lường.\n' '\n' '"Yếu tố lịch sử càng làm trận chung kết thêm đặc biệt. Thái ' 'Lan là thế lực thống trị bóng đá nam SEA Games với 16 lần vô ' 'địch, từng nhiều năm là nỗi ám ảnh với Việt Nam. Nhưng trong ' 'những lần đối đầu gần đây, U.23 Việt Nam đã cho thấy sự tự tin ' 'và bản lĩnh khác hẳn. Nếu không cẩn trọng, U.23 Thái Lan hoàn ' 'toàn có thể gục ngã, cay đắng nhìn U.23 Việt Nam giành HCV", ' 'trang *Thairath* đánh giá.\n' '\n' "!['U.23 Việt Nam sẽ khiến Thái Lan gục ngã...': FPT Play công " 'chiếu ở tỉnh, thành nào?- Ảnh ' '1.](https://images2.thanhnien.vn/thumb_w/640/528068263637045248/2025/12/17/z73354295410204b2cd9704d544fbadac0fe93537fc357-17659457258081895539218.jpg ' '"\'U.23 Việt Nam sẽ khiến Thái Lan gục ngã...\': FPT Play công ' 'chiếu ở tỉnh, thành nào?- Ảnh 1.")U.23 Việt Nam quyết tâm ' 'giành HCV SEA Games 33\n' '\n' 'ẢNH: FPT PLAY\n' '\n' '## FPT Play công chiếu trận chung kết của U.23 Việt Nam tại ' '14\xa0tỉnh, thành phố\n' '\n' 'Bên cạnh việc tường thuật trực tiếp trên các nền tảng số, FPT ' 'Play tiếp tục triển khai chuỗi hoạt động cộng đồng quy mô lớn ' 'khi tổ chức công chiếu trận chung kết tại 15 địa điểm thuộc 14 ' 'tỉnh, thành phố trên cả nước. Các điểm trình chiếu được đặt ' 'tại những không gian công cộng như quảng trường, công viên, ' 'trung tâm văn hóa ở Ninh Bình, Thanh Hóa, Quảng Ninh, Bắc ' 'Ninh, Nghệ An, Quảng Trị, Đà Nẵng, Khánh Hòa, Lâm Đồng, Đồng ' 'Nai, Tây Ninh, TP.HCM, Cần Thơ và Đồng Tháp.\n' '\n' 'Theo kế hoạch, sự kiện sẽ mở cửa đón người hâm mộ từ 18 giờ ' 'cho đến khi trận đấu kết thúc. Ngoài việc theo dõi màn so tài ' 'đỉnh cao trên màn hình LED cỡ lớn, khán giả còn có thể ' 'check-in, tham gia các hoạt động bên lề và hòa mình vào bầu ' 'không khí bóng đá cuồng nhiệt, không kém gì trên các khán đài ' 'sân Rajamangala.\n' '\n' 'Đại diện FPT Play cho biết, chuỗi công chiếu chung kết SEA ' 'Games 33 là nỗ lực nhằm đưa bóng đá đến gần hơn với người hâm ' 'mộ, đồng thời tạo không gian để cổ động viên cùng sát cánh, ' 'tiếp thêm tinh thần cho các tuyển thủ U.23 Việt Nam trong trận ' 'đấu mang tính lịch sử. Trước đó, đơn vị này cũng đã triển khai ' 'chiến dịch trực tuyến thu thập 10.000 lời chúc từ người hâm mộ ' 'gửi tới Đoàn thể thao Việt Nam dự SEA Games Thailand 2025.\n' '\n' "!['U.23 Việt Nam sẽ khiến Thái Lan gục ngã...': FPT Play công " 'chiếu ở tỉnh, thành nào?- Ảnh ' '2.](https://images2.thanhnien.vn/thumb_w/640/528068263637045248/2025/12/17/z7335429570914d0f6295b8d38e296f1c6eab98e2557c9-1765945753946539004617.jpg ' '"\'U.23 Việt Nam sẽ khiến Thái Lan gục ngã...\': FPT Play công ' 'chiếu ở tỉnh, thành nào?- Ảnh 2.")Những điểm chiếu cụ thể trên ' 'toàn quốc\n' '\n' 'ẢNH: FPT PLAY\n' '\n' 'Trận chung kết sắp tới đánh dấu lần thứ 6 Việt Nam và Thái Lan ' 'chạm trán nhau ở vòng đấu cuối cùng của môn bóng đá nam SEA ' 'Games. Đây tiếp tục là cuộc đối đầu nhiều duyên nợ giữa hai ' 'nền bóng đá hàng đầu khu vực. Nếu giành chiến thắng, U.23 Việt ' 'Nam sẽ tái lập kỳ tích từng làm được tại SEA Games 2019 và ' '2021 (thi đấu năm 2022), khi bóng đá nam Việt Nam giành hai ' 'HCV liên tiếp.\n' '\n' 'Trong bối cảnh người hâm mộ cả nước đang hướng về trận “derby ' 'Đông Nam Á”, những điểm công chiếu do FPT Play tổ chức hứa hẹn ' 'sẽ trở thành tâm điểm, góp phần tạo nên làn sóng cổ vũ mạnh mẽ ' 'cho U.23 Việt Nam trên hành trình chinh phục đỉnh cao SEA ' 'Games.\n' '\n' 'Xem SEA Games 33, sát cánh cùng Đoàn Thể thao Việt Nam, trọn ' 'vẹn nhất trên FPT Play, tại ' '[http://fptplay.vn](http://fptplay.vn "http://fptplay.vn") ' 'hoặc tại Ứng dụng FPT Play dành cho các thiết bị Smart TV, ' 'Smart Phone, FPT Play Box.\xa0\n' '\n' '\n' '\n' ' //Chèn ads giữa bài\n' ' (runinit = window.runinit || []).push(function () {\n' ' //Nếu k chạy ads thì return\n' " if (typeof \\_chkPrLink != 'undefined' && \\_chkPrLink)\n" ' return;\n' '\n' '\n' ' var mutexAds = \'\';\n' ' var content = $(\'[data-role="content"]\');\n' ' if (content.length > 0) {\n' ' var childNodes = content[0].childNodes;\n' ' for (i = 0; i < childNodes.length; i++) {\n' ' var childNode = childNodes[i];\n' '\n' ' var isPhotoOrVideo = false;\n' " if (childNode.nodeName.toLowerCase() == 'div') {\n" ' // kiem tra xem co la anh khong?\n' " var type = $(childNode).attr('class') + '';\n" '\n' " if (type.indexOf('VCSortableInPreviewMode') >= 0) {\n" ' isPhotoOrVideo = true;\n' ' }\n' ' }\n' '\n' ' try {\n' ' if ((i >= childNodes.length / 2 - 1) && (i < ' 'childNodes.length / 2) && !isPhotoOrVideo) {\n' ' if (i <= childNodes.length - 3) {\n' ' childNode.after(htmlToElement(mutexAds));\n' ' arfAsync.push("l2srqb41");\n' ' }\n' ' break;\n' ' }\n' ' }\n' ' catch (e) { }\n' ' }\n' ' }\n' ' });\n' ' function htmlToElement(html) {\n' " var template = document.createElement('template');\n" ' template.innerHTML = html;\n' ' return template.content.firstChild;\n' ' }\n' '\n' '\n' '\n' ' if (window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden)) {\n' ' if (!laNuocNgoai) {\n' ' (function (w, q) {\n' ' w[q] = w[q] || [];\n' ' w[q].push(["\\_mgc.load"]);\n' ' })(window, "\\_mgq");\n' ' }\n' ' }\n' ' \n' '\n' '\n' ' (function() {\n' ' if (!(window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden))) return;\n' " if (typeof window.laNuocNgoai === 'undefined' || " '!window.laNuocNgoai) return; // chỉ chạy khi laNuocNgoai true\n' '\n' " var containerSelector = 'div.detail-cmain';\n" ' var root = document.querySelector(containerSelector);\n' ' if (!root) return;\n' '\n' ' // Thu thập figure + p (p không nằm trong figure)\n' " var figures = Array.from(root.querySelectorAll('figure'));\n" ' var paragraphs = ' "Array.from(root.querySelectorAll('p')).filter(function(p){ " "return !p.closest('figure'); });\n" ' var elements = figures.concat(paragraphs); // NodeList vốn đã ' 'theo DOM order => không cần sort\n' ' if (!elements.length) return;\n' '\n' ' var target = elements[Math.floor(elements.length / 2)]; // ' 'giữa bài\n' ' if (!target || !target.parentNode) return;\n' '\n' " var newDiv = document.createElement('div');\n" " newDiv.id = 'taboola-mid-article-widget';\n" ' target.parentNode.insertBefore(newDiv, target.nextSibling);\n' '\n' ' window.\\_taboola = window.\\_taboola || [];\n' ' window.\\_taboola.push({\n' " mode: 'thumbnails-4x1',\n" " container: 'taboola-mid-article-widget',\n" " placement: 'Mid Article Widget',\n" " target\\_type: 'mix'\n" ' });\n' ' })();\n' ' \n' '\n', 'published_date': datetime.date(2025, 12, 17), 'published_timestamp': datetime.datetime(2025, 12, 17, 11, 41), 'source': 'ThanhNien', 'tags': ['SEA Games 33', 'U.23 Việt Nam', 'U.23 Thái Lan', 'chung kết bóng đá', 'HCV', 'bóng đá trẻ Đông Nam Á', 'HLV Kim Sang-sik', 'bán kết', 'chiến thắng', 'áp lực', 'lịch sử bóng đá', 'FPT Play', 'công chiếu trận đấu', 'hoạt động cộng đồng', 'người hâm mộ', 'không gian công cộng', 'check-in', 'SEA Games Thailand 2025', 'derby Đông Nam Á', 'kỳ tích bóng đá Việt Nam', 'cổ vũ U.23 Việt Nam'], 'title': "'U.23 Việt Nam sẽ khiến Thái Lan gục ngã...': FPT Play công chiếu ở " 'tỉnh, thành nào?', 'url': 'https://thanhnien.vn/u23-viet-nam-se-khien-thai-lan-guc-nga-fpt-play-cong-chieu-o-tinh-thanh-nao-185251217113844762.htm', 'voice': 'SG-Nu-1-DT'} 2025-12-17 05:11:32 [scrapy.extensions.logstats] INFO: Crawled 17 pages (at 1 pages/min), scraped 2 items (at 1 items/min) 2025-12-17 05:11:32 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:11:32 [thanhnien_timestamp] INFO: Min timestamp: 2025-12-17 11:41:00, Published timestamp: 2025-12-17 11:47:00 2025-12-17 05:11:32 [urllib3.connectionpool] DEBUG: Starting new HTTP connection (1): tts-api:4444 2025-12-17 05:12:26 [urllib3.connectionpool] DEBUG: http://tts-api:4444 "POST /api/v2/text-to-speech HTTP/1.1" 200 409 2025-12-17 05:12:26 [scrapy.core.scraper] DEBUG: Scraped from <200 https://thanhnien.vn/danh-gia-garmin-forerunner-165-dong-ho-the-thao-nhe-39g-pin-dung-den-11-ngay-185251217114729589.htm> {'audio_url': 'https://lake-api.actable.ai/tts-data/zynnlaoz-2025-12-17%2005%3A11%3A32.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=pmq7GsXVsXQZXqTM0hWE%2F20251217%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20251217T051223Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=025e165ae6b4898f439758b088554e209fc6cf6b57ea5f6efac5b21f47a2b0e3', 'author': None, 'category': 'Video', 'content': '', 'description': 'Garmin Forerunner 165 là mẫu đồng hồ thông minh hướng đến ' 'người chạy bộ, sở hữu thiết kế mỏng nhẹ 39 gram, màn hình ' 'AMOLED 1,2 inch và thời lượng pin công bố lên đến 11 ngày. ' 'Video trải nghiệm tập trung đánh giá cảm giác đeo, độ chính ' 'xác cảm biến, các chỉ số luyện tập chuyên sâu cùng những ưu, ' 'nhược điểm trong quá trình sử dụng thực tế.', 'html_content': '
\n' '
\n' ' \n' ' \n' '\n' ' \n' '\n' '\n' '\n' '
\n' ' \n' '\n' ' \n' ' \n' ' \n' ' \n' ' \n' '\n' '
\n' '\n' '\n' '
', 'md_content': '\n' '\n' '\n' ' //Chèn ads giữa bài\n' ' (runinit = window.runinit || []).push(function () {\n' ' //Nếu k chạy ads thì return\n' " if (typeof \\_chkPrLink != 'undefined' && \\_chkPrLink)\n" ' return;\n' '\n' '\n' ' var mutexAds = \'\';\n' ' var content = $(\'[data-role="content"]\');\n' ' if (content.length > 0) {\n' ' var childNodes = content[0].childNodes;\n' ' for (i = 0; i < childNodes.length; i++) {\n' ' var childNode = childNodes[i];\n' '\n' ' var isPhotoOrVideo = false;\n' " if (childNode.nodeName.toLowerCase() == 'div') {\n" ' // kiem tra xem co la anh khong?\n' " var type = $(childNode).attr('class') + '';\n" '\n' " if (type.indexOf('VCSortableInPreviewMode') >= 0) {\n" ' isPhotoOrVideo = true;\n' ' }\n' ' }\n' '\n' ' try {\n' ' if ((i >= childNodes.length / 2 - 1) && (i < ' 'childNodes.length / 2) && !isPhotoOrVideo) {\n' ' if (i <= childNodes.length - 3) {\n' ' childNode.after(htmlToElement(mutexAds));\n' ' arfAsync.push("l2srqb41");\n' ' }\n' ' break;\n' ' }\n' ' }\n' ' catch (e) { }\n' ' }\n' ' }\n' ' });\n' ' function htmlToElement(html) {\n' " var template = document.createElement('template');\n" ' template.innerHTML = html;\n' ' return template.content.firstChild;\n' ' }\n' '\n' '\n' '\n' ' if (window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden)) {\n' ' if (!laNuocNgoai) {\n' ' (function (w, q) {\n' ' w[q] = w[q] || [];\n' ' w[q].push(["\\_mgc.load"]);\n' ' })(window, "\\_mgq");\n' ' }\n' ' }\n' ' \n' '\n' '\n' ' (function() {\n' ' if (!(window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden))) return;\n' " if (typeof window.laNuocNgoai === 'undefined' || " '!window.laNuocNgoai) return; // chỉ chạy khi laNuocNgoai true\n' '\n' " var containerSelector = 'div.detail-cmain';\n" ' var root = document.querySelector(containerSelector);\n' ' if (!root) return;\n' '\n' ' // Thu thập figure + p (p không nằm trong figure)\n' " var figures = Array.from(root.querySelectorAll('figure'));\n" ' var paragraphs = ' "Array.from(root.querySelectorAll('p')).filter(function(p){ " "return !p.closest('figure'); });\n" ' var elements = figures.concat(paragraphs); // NodeList vốn đã ' 'theo DOM order => không cần sort\n' ' if (!elements.length) return;\n' '\n' ' var target = elements[Math.floor(elements.length / 2)]; // ' 'giữa bài\n' ' if (!target || !target.parentNode) return;\n' '\n' " var newDiv = document.createElement('div');\n" " newDiv.id = 'taboola-mid-article-widget';\n" ' target.parentNode.insertBefore(newDiv, target.nextSibling);\n' '\n' ' window.\\_taboola = window.\\_taboola || [];\n' ' window.\\_taboola.push({\n' " mode: 'thumbnails-4x1',\n" " container: 'taboola-mid-article-widget',\n" " placement: 'Mid Article Widget',\n" " target\\_type: 'mix'\n" ' });\n' ' })();\n' ' \n' '\n', 'published_date': datetime.date(2025, 12, 17), 'published_timestamp': datetime.datetime(2025, 12, 17, 11, 47), 'source': 'ThanhNien', 'title': 'Đánh giá Garmin Forerunner 165: đồng hồ thể thao nhẹ 39g, pin dùng ' 'đến 11 ngày', 'url': 'https://thanhnien.vn/danh-gia-garmin-forerunner-165-dong-ho-the-thao-nhe-39g-pin-dung-den-11-ngay-185251217114729589.htm', 'voice': 'SG-Nu-1-DT'} 2025-12-17 05:12:26 [scrapy.extensions.logstats] INFO: Crawled 18 pages (at 1 pages/min), scraped 3 items (at 1 items/min) 2025-12-17 05:12:26 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:12:26 [thanhnien_timestamp] INFO: Min timestamp: 2025-12-17 11:41:00, Published timestamp: 2025-12-17 11:49:00 2025-12-17 05:12:26 [urllib3.connectionpool] DEBUG: Starting new HTTP connection (1): tts-api:4444 2025-12-17 05:12:56 [urllib3.connectionpool] DEBUG: http://tts-api:4444 "POST /api/v2/text-to-speech HTTP/1.1" 200 409 2025-12-17 05:12:56 [scrapy.core.scraper] DEBUG: Scraped from <200 https://thanhnien.vn/hdpe-la-gi-ma-dan-mang-phat-sot-voi-cau-noi-hdpe-thi-ngon-luon-185251217114644567.htm> {'audio_url': 'https://lake-api.actable.ai/tts-data/zjltrsbw-2025-12-17%2005%3A12%3A26.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=pmq7GsXVsXQZXqTM0hWE%2F20251217%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20251217T051253Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=81e73149eab4a4442aa8ee431391f5a38ca0e09d8bc623ac6bf7030988788428', 'author': None, 'category': 'Video', 'content': '', 'description': 'Thời gian gần đây lướt mạng xã hội, nhiều người liên tục bắt ' "gặp những clip 'triệu view' nhắc đi nhắc lại câu nói 'HDPE " "thì ngon luôn'. Đây là trend gì và bắt nguồn từ đâu?", 'html_content': '
\n' '
\n' ' \n' ' \n' '\n' ' \n' '\n' '\n' '\n' '
\n' ' \n' '\n' ' \n' ' \n' ' \n' ' \n' ' \n' '\n' '
\n' '\n' '\n' '
', 'md_content': '\n' '\n' '\n' ' //Chèn ads giữa bài\n' ' (runinit = window.runinit || []).push(function () {\n' ' //Nếu k chạy ads thì return\n' " if (typeof \\_chkPrLink != 'undefined' && \\_chkPrLink)\n" ' return;\n' '\n' '\n' ' var mutexAds = \'\';\n' ' var content = $(\'[data-role="content"]\');\n' ' if (content.length > 0) {\n' ' var childNodes = content[0].childNodes;\n' ' for (i = 0; i < childNodes.length; i++) {\n' ' var childNode = childNodes[i];\n' '\n' ' var isPhotoOrVideo = false;\n' " if (childNode.nodeName.toLowerCase() == 'div') {\n" ' // kiem tra xem co la anh khong?\n' " var type = $(childNode).attr('class') + '';\n" '\n' " if (type.indexOf('VCSortableInPreviewMode') >= 0) {\n" ' isPhotoOrVideo = true;\n' ' }\n' ' }\n' '\n' ' try {\n' ' if ((i >= childNodes.length / 2 - 1) && (i < ' 'childNodes.length / 2) && !isPhotoOrVideo) {\n' ' if (i <= childNodes.length - 3) {\n' ' childNode.after(htmlToElement(mutexAds));\n' ' arfAsync.push("l2srqb41");\n' ' }\n' ' break;\n' ' }\n' ' }\n' ' catch (e) { }\n' ' }\n' ' }\n' ' });\n' ' function htmlToElement(html) {\n' " var template = document.createElement('template');\n" ' template.innerHTML = html;\n' ' return template.content.firstChild;\n' ' }\n' '\n' '\n' '\n' ' if (window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden)) {\n' ' if (!laNuocNgoai) {\n' ' (function (w, q) {\n' ' w[q] = w[q] || [];\n' ' w[q].push(["\\_mgc.load"]);\n' ' })(window, "\\_mgq");\n' ' }\n' ' }\n' ' \n' '\n' '\n' ' (function() {\n' ' if (!(window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden))) return;\n' " if (typeof window.laNuocNgoai === 'undefined' || " '!window.laNuocNgoai) return; // chỉ chạy khi laNuocNgoai true\n' '\n' " var containerSelector = 'div.detail-cmain';\n" ' var root = document.querySelector(containerSelector);\n' ' if (!root) return;\n' '\n' ' // Thu thập figure + p (p không nằm trong figure)\n' " var figures = Array.from(root.querySelectorAll('figure'));\n" ' var paragraphs = ' "Array.from(root.querySelectorAll('p')).filter(function(p){ " "return !p.closest('figure'); });\n" ' var elements = figures.concat(paragraphs); // NodeList vốn đã ' 'theo DOM order => không cần sort\n' ' if (!elements.length) return;\n' '\n' ' var target = elements[Math.floor(elements.length / 2)]; // ' 'giữa bài\n' ' if (!target || !target.parentNode) return;\n' '\n' " var newDiv = document.createElement('div');\n" " newDiv.id = 'taboola-mid-article-widget';\n" ' target.parentNode.insertBefore(newDiv, target.nextSibling);\n' '\n' ' window.\\_taboola = window.\\_taboola || [];\n' ' window.\\_taboola.push({\n' " mode: 'thumbnails-4x1',\n" " container: 'taboola-mid-article-widget',\n" " placement: 'Mid Article Widget',\n" " target\\_type: 'mix'\n" ' });\n' ' })();\n' ' \n' '\n', 'published_date': datetime.date(2025, 12, 17), 'published_timestamp': datetime.datetime(2025, 12, 17, 11, 49), 'source': 'ThanhNien', 'title': "HDPE là gì mà dân mạng phát sốt với câu nói 'HDPE thì ngon luôn'?", 'url': 'https://thanhnien.vn/hdpe-la-gi-ma-dan-mang-phat-sot-voi-cau-noi-hdpe-thi-ngon-luon-185251217114644567.htm', 'voice': 'SG-Nam-1-TM'} 2025-12-17 05:12:56 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:12:56 [openai._base_client] DEBUG: Request options: {'method': 'post', 'url': '/chat/completions', 'files': None, 'json_data': {'messages': [{'role': 'user', 'content': 'Act as a content analysis tool. I will provide you with a piece of content, and your task is to extract relevant tags (keywords or phrases) that summarize the main topics, themes, or ideas present in the text. The tags should be concise, specific, and useful for categorization or search purposes. Ignore common filler words (e.g., \'the\', \'and\', \'is\') unless they are part of a specific concept or phrase. After analyzing the content, return the tags in a simple list format. Here is the content to analyze: Trưa 17.12, HLV Kim Sang-sik đã đại diện U.23 Việt Nam chia sẻ trong buổi họp báo trước trận chung kết SEA Games 33, nơi chúng ta sẽ đối đầu đội chủ nhà Thái Lan. Có thể thấy ông Kim rất tự tin và thoải mái nhờ quá trình chuẩn bị kỹ lưỡng. Nhà cầm quân sinh năm 1976 chia sẻ: "Đầu tiên, tôi rất vui khi U.23 Việt Nam đã có mặt tại trận chung kết SEA Games 33. Chúng tôi đến được trận đấu cuối cùng này là nhờ sự cổ vũ của người dân Việt Nam. Đặc biệt, thành tích của đội bóng đến từ nỗ lực của các cầu thủ và sự hy sinh của tất cả các nhân sự trong đội. Tục ngữ Việt Nam có câu "Có công mài sắt có ngày nên kim", vì toàn đội đã nỗ lực hết mình, tôi hy vọng vào một kết quả tốt trong trận chung kết này". Cũng trong phần phát biểu của mình, HLV Kim Sang-sik đã nhắc lại chiến thắng của đội tuyển Việt Nam tại Rajamangala trong trận chung kết lượt về, qua đó đăng quang vô địch AFF Cup 2024 ngay trên sân nhà đối thủ. Ông "nhắc nhở" người Thái: "Đội tuyển U.23 Thái Lan có lối chơi được tổ chức tốt và có nhiều cầu thủ có năng lực cá nhân, thể chất, tốc độ, kỹ thuật rất tốt. Tiền đạo Yotsakorn Burapha đã ghi nhiều bàn thắng bằng phong cách rất đa dạng ở giải đấu lần này, nên chúng tôi cũng cần phải để ý kỹ. Cầu thủ Lý Đức ở đây và toàn thể hàng phòng ngự làm việc tốt thì chúng tôi mới có thể có kết quả tốt. Chúng tôi sẽ chuẩn bị thật tốt để có 1 trận thi đấu tốt. Trận chung kết ngày mai rất quan trọng với chúng tôi, tuy nhiên chúng tôi cũng có trận đấu tại VCK U.23 châu Á 2026 vào tháng 1 năm sau, nên tôi nghĩ điều quan trọng nhất là cả cầu thủ của cả 2 đội thi đấu an toàn không gặp chấn thương. Vai trò của trọng tài cũng vô cùng quan trọng. Mong các trọng tài sẽ làm việc công tâm để bảo vệ các cầu thủ và tạo điều kiện để 2 đội chơi 1 cách công bằng, để trận đấu quan trọng ngày hôm nay có thể diễn ra một cách trọn vẹn nhất. Tháng 1 năm nay, đội tuyển Việt Nam của chúng ta đã nâng cao chiếc cúp vô địch ở sân vận động này. Tôi rất hy vọng rằng, trận đấu này các cầu thủ U.23 Việt Nam cũng sẽ có thể nâng cúp vô địch để khép lại một năm 2025 tốt đẹp".'}], 'model': 'gpt-4o-mini', 'max_tokens': 200, 'temperature': 0.3}} 2025-12-17 05:12:56 [openai._base_client] DEBUG: Sending HTTP Request: POST https://api.openai.com/v1/chat/completions 2025-12-17 05:12:56 [httpcore.connection] DEBUG: connect_tcp.started host='api.openai.com' port=443 local_address=None timeout=900 socket_options=None 2025-12-17 05:12:56 [httpcore.connection] DEBUG: connect_tcp.complete return_value= 2025-12-17 05:12:56 [httpcore.connection] DEBUG: start_tls.started ssl_context= server_hostname='api.openai.com' timeout=900 2025-12-17 05:12:56 [httpcore.connection] DEBUG: start_tls.complete return_value= 2025-12-17 05:12:56 [httpcore.http11] DEBUG: send_request_headers.started request= 2025-12-17 05:12:56 [httpcore.http11] DEBUG: send_request_headers.complete 2025-12-17 05:12:56 [httpcore.http11] DEBUG: send_request_body.started request= 2025-12-17 05:12:56 [httpcore.http11] DEBUG: send_request_body.complete 2025-12-17 05:12:56 [httpcore.http11] DEBUG: receive_response_headers.started request= 2025-12-17 05:13:00 [httpcore.http11] DEBUG: receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Date', b'Wed, 17 Dec 2025 05:13:00 GMT'), (b'Content-Type', b'application/json'), (b'Transfer-Encoding', b'chunked'), (b'Connection', b'keep-alive'), (b'access-control-expose-headers', b'X-Request-ID'), (b'openai-organization', b'user-bmggli0qfnphtzkdehrnfdrn'), (b'openai-processing-ms', b'2654'), (b'openai-project', b'proj_AqBCEfNib7E5LbrMYDz2oklk'), (b'openai-version', b'2020-10-01'), (b'x-envoy-upstream-service-time', b'2980'), (b'x-ratelimit-limit-requests', b'30000'), (b'x-ratelimit-limit-tokens', b'150000000'), (b'x-ratelimit-remaining-requests', b'29999'), (b'x-ratelimit-remaining-tokens', b'149999187'), (b'x-ratelimit-reset-requests', b'2ms'), (b'x-ratelimit-reset-tokens', b'0s'), (b'x-request-id', b'req_7a9ccf5631534afb97881a4e74b254d4'), (b'x-openai-proxy-wasm', b'v0.1'), (b'cf-cache-status', b'DYNAMIC'), (b'Set-Cookie', b'__cf_bm=L6r5uflsGf2QL8gigWDACTMcgW5DCyXRP3vNKkNC.mk-1765948380-1.0.1.1-QiSyt8drXCu8N5LAC3jxg9r3U4pluVo3o.xSEiL8f82KLnOFp1JC.5Q4eQu4vsvo8Z6Z8XZIjQP0tMkgwHyWQj1v7Efr2lXzefMa9qPOhIs; path=/; expires=Wed, 17-Dec-25 05:43:00 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), (b'Strict-Transport-Security', b'max-age=31536000; includeSubDomains; preload'), (b'X-Content-Type-Options', b'nosniff'), (b'Set-Cookie', b'_cfuvid=M1WLNPqmn15QyYMzHB7OsiDyAvrslkNnmCmXHVrFcNU-1765948380614-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), (b'Server', b'cloudflare'), (b'CF-RAY', b'9af3edac18a204b7-HKG'), (b'Content-Encoding', b'gzip'), (b'alt-svc', b'h3=":443"; ma=86400')]) 2025-12-17 05:13:00 [httpx] INFO: HTTP Request: POST https://api.openai.com/v1/chat/completions "HTTP/1.1 200 OK" 2025-12-17 05:13:00 [httpcore.http11] DEBUG: receive_response_body.started request= 2025-12-17 05:13:00 [httpcore.http11] DEBUG: receive_response_body.complete 2025-12-17 05:13:00 [httpcore.http11] DEBUG: response_closed.started 2025-12-17 05:13:00 [httpcore.http11] DEBUG: response_closed.complete 2025-12-17 05:13:00 [openai._base_client] DEBUG: HTTP Response: POST https://api.openai.com/v1/chat/completions "200 OK" Headers([('date', 'Wed, 17 Dec 2025 05:13:00 GMT'), ('content-type', 'application/json'), ('transfer-encoding', 'chunked'), ('connection', 'keep-alive'), ('access-control-expose-headers', 'X-Request-ID'), ('openai-organization', 'user-bmggli0qfnphtzkdehrnfdrn'), ('openai-processing-ms', '2654'), ('openai-project', 'proj_AqBCEfNib7E5LbrMYDz2oklk'), ('openai-version', '2020-10-01'), ('x-envoy-upstream-service-time', '2980'), ('x-ratelimit-limit-requests', '30000'), ('x-ratelimit-limit-tokens', '150000000'), ('x-ratelimit-remaining-requests', '29999'), ('x-ratelimit-remaining-tokens', '149999187'), ('x-ratelimit-reset-requests', '2ms'), ('x-ratelimit-reset-tokens', '0s'), ('x-request-id', 'req_7a9ccf5631534afb97881a4e74b254d4'), ('x-openai-proxy-wasm', 'v0.1'), ('cf-cache-status', 'DYNAMIC'), ('set-cookie', '__cf_bm=L6r5uflsGf2QL8gigWDACTMcgW5DCyXRP3vNKkNC.mk-1765948380-1.0.1.1-QiSyt8drXCu8N5LAC3jxg9r3U4pluVo3o.xSEiL8f82KLnOFp1JC.5Q4eQu4vsvo8Z6Z8XZIjQP0tMkgwHyWQj1v7Efr2lXzefMa9qPOhIs; path=/; expires=Wed, 17-Dec-25 05:43:00 GMT; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), ('strict-transport-security', 'max-age=31536000; includeSubDomains; preload'), ('x-content-type-options', 'nosniff'), ('set-cookie', '_cfuvid=M1WLNPqmn15QyYMzHB7OsiDyAvrslkNnmCmXHVrFcNU-1765948380614-0.0.1.1-604800000; path=/; domain=.api.openai.com; HttpOnly; Secure; SameSite=None'), ('server', 'cloudflare'), ('cf-ray', '9af3edac18a204b7-HKG'), ('content-encoding', 'gzip'), ('alt-svc', 'h3=":443"; ma=86400')]) 2025-12-17 05:13:00 [openai._base_client] DEBUG: request_id: req_7a9ccf5631534afb97881a4e74b254d4 2025-12-17 05:13:00 [thanhnien_timestamp] INFO: Min timestamp: 2025-12-17 11:41:00, Published timestamp: 2025-12-17 11:51:00 2025-12-17 05:13:00 [urllib3.connectionpool] DEBUG: Starting new HTTP connection (1): tts-api:4444 2025-12-17 05:17:28 [urllib3.connectionpool] DEBUG: http://tts-api:4444 "POST /api/v2/text-to-speech HTTP/1.1" 200 411 2025-12-17 05:17:28 [scrapy.core.scraper] DEBUG: Scraped from <200 https://thanhnien.vn/hlv-kim-rat-tin-u23-viet-nam-se-dang-quang-tai-rajamangala-giong-dan-anh-nhac-nhe-trong-tai-185251217115020144.htm> {'audio_url': 'https://lake-api.actable.ai/tts-data/rgkpimpi-2025-12-17%2005%3A13%3A51.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=pmq7GsXVsXQZXqTM0hWE%2F20251217%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20251217T051726Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=d895c64fff43694478a9afca1635f0547a558c9d456591d08ce125f43b4b46df', 'author': None, 'category': 'Thể thao', 'content': 'Trưa 17.12, HLV Kim Sang-sik đã đại diện U.23 Việt Nam chia sẻ ' 'trong buổi họp báo trước trận chung kết SEA Games 33, nơi chúng ' 'ta sẽ đối đầu đội chủ nhà Thái Lan. Có thể thấy ông Kim rất tự ' 'tin và thoải mái nhờ quá trình chuẩn bị kỹ lưỡng. Nhà cầm quân ' 'sinh năm 1976 chia sẻ: "Đầu tiên, tôi rất vui khi U.23 Việt Nam ' 'đã có mặt tại trận chung kết SEA Games 33. Chúng tôi đến được ' 'trận đấu cuối cùng này là nhờ sự cổ vũ của người dân Việt Nam. ' 'Đặc biệt, thành tích của đội bóng đến từ nỗ lực của các cầu thủ ' 'và sự hy sinh của tất cả các nhân sự trong đội. Tục ngữ Việt Nam ' 'có câu "Có công mài sắt có ngày nên kim", vì toàn đội đã nỗ lực ' 'hết mình, tôi hy vọng vào một kết quả tốt trong trận chung kết ' 'này". Cũng trong phần phát biểu của mình, HLV Kim Sang-sik đã ' 'nhắc lại chiến thắng của đội tuyển Việt Nam tại Rajamangala trong ' 'trận chung kết lượt về, qua đó đăng quang vô địch AFF Cup 2024 ' 'ngay trên sân nhà đối thủ. Ông "nhắc nhở" người Thái: "Đội tuyển ' 'U.23 Thái Lan có lối chơi được tổ chức tốt và có nhiều cầu thủ có ' 'năng lực cá nhân, thể chất, tốc độ, kỹ thuật rất tốt. Tiền đạo ' 'Yotsakorn Burapha đã ghi nhiều bàn thắng bằng phong cách rất đa ' 'dạng ở giải đấu lần này, nên chúng tôi cũng cần phải để ý kỹ. Cầu ' 'thủ Lý Đức ở đây và toàn thể hàng phòng ngự làm việc tốt thì ' 'chúng tôi mới có thể có kết quả tốt. Chúng tôi sẽ chuẩn bị thật ' 'tốt để có 1 trận thi đấu tốt. Trận chung kết ngày mai rất quan ' 'trọng với chúng tôi, tuy nhiên chúng tôi cũng có trận đấu tại VCK ' 'U.23 châu Á 2026 vào tháng 1 năm sau, nên tôi nghĩ điều quan ' 'trọng nhất là cả cầu thủ của cả 2 đội thi đấu an toàn không gặp ' 'chấn thương. Vai trò của trọng tài cũng vô cùng quan trọng. Mong ' 'các trọng tài sẽ làm việc công tâm để bảo vệ các cầu thủ và tạo ' 'điều kiện để 2 đội chơi 1 cách công bằng, để trận đấu quan trọng ' 'ngày hôm nay có thể diễn ra một cách trọn vẹn nhất. Tháng 1 năm ' 'nay, đội tuyển Việt Nam của chúng ta đã nâng cao chiếc cúp vô ' 'địch ở sân vận động này. Tôi rất hy vọng rằng, trận đấu này các ' 'cầu thủ U.23 Việt Nam cũng sẽ có thể nâng cúp vô địch để khép lại ' 'một năm 2025 tốt đẹp".', 'description': 'HLV Kim Sang-sik tin tưởng hàng phòng ngự sẽ đảm bảo sự chắc ' 'chắn để phong tỏa hàng công U.23 Thái Lan, giúp U.23 Việt Nam ' 'nối gót đàn anh đăng quang tại sân Rajamangala, đem về tấm ' 'HCV SEA Games.', 'html_content': '
\n' '\n' '
\n' '\n' ' ' '
HLV Kim '
                 'rất tin U.23 Việt Nam sẽ đăng quang tại Rajamangala giống '
                 'đàn anh, ‘nhắc nhẹ’ trọng tài...- Ảnh 1.

HLV Kim Sang-sik tự tin U.23 Việt ' 'Nam sẽ lại đăng quang tại Rajamangala

ảnh: Đồng Nguyên ' 'Khang

U.23 Việt Nam ' 'đã chuẩn bị rất tốt

Trưa ' '17.12, HLV Kim Sang-sik đã đại diện U.23 Việt Nam chia sẻ ' 'trong buổi họp báo trước trận chung kết SEA Games 33, nơi ' 'chúng ta sẽ đối đầu đội chủ nhà Thái Lan. Có thể thấy ông ' 'Kim rất tự tin và thoải mái nhờ quá trình chuẩn bị kỹ ' 'lưỡng.

Nhà cầm quân sinh ' 'năm 1976 chia sẻ: "Đầu tiên, tôi rất vui khi U.23 Việt ' 'Nam đã có mặt tại trận chung kết SEA Games 33. Chúng tôi ' 'đến được trận đấu cuối cùng này là nhờ sự cổ vũ của người ' 'dân Việt Nam.

Đặc biệt, ' 'thành tích của đội bóng đến từ nỗ lực của các cầu thủ và sự ' 'hy sinh của tất cả các nhân sự trong đội. Tục ngữ Việt Nam ' 'có câu "Có công mài sắt có ngày nên kim", vì toàn đội đã nỗ ' 'lực hết mình, tôi hy vọng vào một kết quả tốt trong trận ' 'chung kết này".

Kỳ vọng trọng tài ' 'công tâm

HLV Kim '
                 'rất tin U.23 Việt Nam sẽ đăng quang tại Rajamangala giống '
                 'đàn anh, ‘nhắc nhẹ’ trọng tài...- Ảnh 2.

HLV Kim Sang-sik cùng Lý Đức chụp ' 'hình cùng HLV Thawatchai và trung vệ ' 'Chanapach

ảnh: Đồng Nguyên ' 'Khang

Cũng ' 'trong phần phát biểu của mình, HLV Kim Sang-sik đã nhắc lại ' 'chiến thắng của đội tuyển Việt Nam tại Rajamangala trong ' 'trận chung kết lượt về, qua đó đăng quang vô địch AFF Cup ' '2024 ngay trên sân nhà đối thủ.

Ông "nhắc nhở" người Thái: "Đội ' 'tuyển U.23 Thái Lan có lối chơi ' 'được tổ chức tốt và có nhiều cầu thủ có năng lực cá nhân, ' 'thể chất, tốc độ, kỹ thuật rất tốt. Tiền đạo Yotsakorn ' 'Burapha đã ghi nhiều bàn thắng bằng phong cách rất đa dạng ở ' 'giải đấu lần này, nên chúng tôi cũng cần phải để ý kỹ.

Cầu thủ Lý Đức ở đây và toàn thể ' 'hàng phòng ngự làm việc tốt thì chúng tôi mới có thể có kết ' 'quả tốt. Chúng tôi sẽ chuẩn bị thật tốt để có 1 trận thi đấu ' 'tốt.\xa0

HLV Kim '
                 'rất tin U.23 Việt Nam sẽ đăng quang tại Rajamangala giống '
                 'đàn anh, ‘nhắc nhẹ’ trọng tài...- Ảnh 3.

Trận chung kết sẽ là cuộc đấu trí ' 'giữa HLV Kim Sang-sik và Thawatchai ' 'Damrong-Ongtrakul

ảnh: Đồng Nguyên ' 'Khang

Trận ' 'chung kết ngày mai rất quan trọng với chúng tôi, tuy nhiên ' 'chúng tôi cũng có trận đấu tại VCK U.23 châu Á 2026 vào ' 'tháng 1 năm sau, nên tôi nghĩ điều quan trọng nhất là cả cầu ' 'thủ của cả 2 đội thi đấu an toàn không gặp chấn ' 'thương.

Vai trò của trọng ' 'tài cũng vô cùng quan trọng. Mong các trọng tài sẽ làm việc ' 'công tâm để bảo vệ các cầu thủ và tạo điều kiện để 2 đội ' 'chơi 1 cách công bằng, để trận đấu quan trọng ngày hôm nay ' 'có thể diễn ra một cách trọn vẹn nhất.

Tháng 1 năm nay, đội tuyển Việt ' 'Nam của chúng ta đã nâng cao chiếc cúp vô địch ở sân vận ' 'động này. Tôi rất hy vọng rằng, trận đấu này các cầu thủ U.23 ' 'Việt Nam cũng sẽ có thể nâng cúp vô địch để khép lại một ' 'năm 2025 tốt đẹp".

\n' ' \n' '\n' '\n' ' \n' '
\n' ' \n' '\n' ' \n' ' \n' ' \n' ' \n' ' \n' '\n' '
\n' '\n' '
', 'md_content': '\n' '\n' '![HLV Kim rất tin U.23 Việt Nam sẽ đăng quang tại Rajamangala ' 'giống đàn anh, ‘nhắc nhẹ’ trọng tài...- Ảnh ' '1.](https://images2.thanhnien.vn/thumb_w/640/528068263637045248/2025/12/17/z73355828485245139ee58cdc72f3f7729a0e554cc2e0f-17659465191011991218327.jpg ' '"HLV Kim rất tin U.23 Việt Nam sẽ đăng quang tại Rajamangala ' 'giống đàn anh, ‘nhắc nhẹ’ trọng tài...- Ảnh 1.")HLV Kim ' 'Sang-sik tự tin U.23 Việt Nam sẽ lại đăng quang tại ' 'Rajamangala\n' '\n' 'ảnh: Đồng Nguyên Khang\n' '\n' '## U.23 Việt Nam đã chuẩn bị rất tốt\n' '\n' 'Trưa 17.12, HLV Kim Sang-sik đã đại diện U.23 Việt Nam chia sẻ ' 'trong buổi họp báo trước trận chung kết SEA Games 33, nơi ' 'chúng ta sẽ đối đầu đội chủ nhà Thái Lan. Có thể thấy ông Kim ' 'rất tự tin và thoải mái nhờ quá trình chuẩn bị kỹ lưỡng.\n' '\n' 'Nhà cầm quân sinh năm 1976 chia sẻ: "Đầu tiên, tôi rất vui khi ' '[U.23 Việt Nam](https://thanhnien.vn/u23-viet-nam.html "U.23 ' 'Việt Nam") đã có mặt tại trận chung kết SEA Games 33. Chúng ' 'tôi đến được trận đấu cuối cùng này là nhờ sự cổ vũ của người ' 'dân Việt Nam.\n' '\n' 'Đặc biệt, thành tích của đội bóng đến từ nỗ lực của các cầu ' 'thủ và sự hy sinh của tất cả các nhân sự trong đội. Tục ngữ ' 'Việt Nam có câu "Có công mài sắt có ngày nên kim", vì toàn đội ' 'đã nỗ lực hết mình, tôi hy vọng vào một kết quả tốt trong trận ' 'chung kết này".\n' '\n' '## Kỳ vọng trọng tài công tâm\n' '\n' '![HLV Kim rất tin U.23 Việt Nam sẽ đăng quang tại Rajamangala ' 'giống đàn anh, ‘nhắc nhẹ’ trọng tài...- Ảnh ' '2.](https://images2.thanhnien.vn/thumb_w/640/528068263637045248/2025/12/17/z7335582660188298964b6d3ed7029098ca85f7807232f-17659465216991271290513.jpg ' '"HLV Kim rất tin U.23 Việt Nam sẽ đăng quang tại Rajamangala ' 'giống đàn anh, ‘nhắc nhẹ’ trọng tài...- Ảnh 2.")HLV Kim ' 'Sang-sik cùng Lý Đức chụp hình cùng HLV Thawatchai và trung vệ ' 'Chanapach\n' '\n' 'ảnh: Đồng Nguyên Khang\n' '\n' 'Cũng trong phần phát biểu của mình, HLV ' '[Kim](https://thanhnien.vn/hlv-kim-sang-sik-con-bai-tay-u23-viet-nam-se-gay-soc-cho-thai-lan-185251216201543378.htm ' '"Kim") Sang-sik đã nhắc lại chiến thắng của đội tuyển Việt Nam ' 'tại Rajamangala trong trận chung kết lượt về, qua đó đăng ' 'quang vô địch AFF Cup 2024 ngay trên sân nhà đối thủ.\n' '\n' 'Ông "nhắc nhở" người Thái: "Đội tuyển U.23 [Thái ' 'Lan](https://thanhnien.vn/u23-viet-nam-se-khien-thai-lan-guc-nga-fpt-play-cong-chieu-o-tinh-thanh-nao-185251217113844762.htm ' '"Thái Lan") có lối chơi được tổ chức tốt và có nhiều cầu thủ ' 'có năng lực cá nhân, thể chất, tốc độ, kỹ thuật rất tốt. Tiền ' 'đạo Yotsakorn Burapha đã ghi nhiều bàn thắng bằng phong cách ' 'rất đa dạng ở giải đấu lần này, nên chúng tôi cũng cần phải để ' 'ý kỹ.\n' '\n' 'Cầu thủ Lý Đức ở đây và toàn thể hàng phòng ngự làm việc tốt ' 'thì chúng tôi mới có thể có kết quả tốt. Chúng tôi sẽ chuẩn bị ' 'thật tốt để có 1 trận thi đấu tốt.\xa0\n' '\n' '![HLV Kim rất tin U.23 Việt Nam sẽ đăng quang tại Rajamangala ' 'giống đàn anh, ‘nhắc nhẹ’ trọng tài...- Ảnh ' '3.](https://images2.thanhnien.vn/thumb_w/640/528068263637045248/2025/12/17/z7335582873685852264444570dc7254749bb48a19f560-17659468819531165824726.jpg ' '"HLV Kim rất tin U.23 Việt Nam sẽ đăng quang tại Rajamangala ' 'giống đàn anh, ‘nhắc nhẹ’ trọng tài...- Ảnh 3.")Trận chung kết ' 'sẽ là cuộc đấu trí giữa HLV Kim Sang-sik và Thawatchai ' 'Damrong-Ongtrakul\n' '\n' 'ảnh: Đồng Nguyên Khang\n' '\n' 'Trận chung kết ngày mai rất quan trọng với chúng tôi, tuy ' 'nhiên chúng tôi cũng có trận đấu tại VCK U.23 châu Á 2026 vào ' 'tháng 1 năm sau, nên tôi nghĩ điều quan trọng nhất là cả cầu ' 'thủ của cả 2 đội thi đấu an toàn không gặp chấn thương.\n' '\n' 'Vai trò của trọng tài cũng vô cùng quan trọng. Mong các trọng ' 'tài sẽ làm việc công tâm để bảo vệ các cầu thủ và tạo điều ' 'kiện để 2 đội chơi 1 cách công bằng, để trận đấu quan trọng ' 'ngày hôm nay có thể diễn ra một cách trọn vẹn nhất.\n' '\n' 'Tháng 1 năm nay, đội tuyển Việt Nam của chúng ta đã nâng cao ' 'chiếc cúp vô địch ở sân vận động này. Tôi rất hy vọng rằng, ' 'trận đấu này các cầu thủ [U.23 Việt ' 'Nam](https://thanhnien.vn/trung-ve-thep-u23-viet-nam-qua-quyet-se-bat-chet-ngoi-no-thai-lan-gianh-vang-sea-games-185251216180521012.htm ' '"Trung vệ thép U.23 Việt Nam quả quyết sẽ ‘bắt chết’ ngòi nổ ' 'Thái Lan, giành vàng SEA Games") cũng sẽ có thể nâng cúp vô ' 'địch để khép lại một năm 2025 tốt đẹp".\n' '\n' '\n' '\n' ' //Chèn ads giữa bài\n' ' (runinit = window.runinit || []).push(function () {\n' ' //Nếu k chạy ads thì return\n' " if (typeof \\_chkPrLink != 'undefined' && \\_chkPrLink)\n" ' return;\n' '\n' '\n' ' var mutexAds = \'\';\n' ' var content = $(\'[data-role="content"]\');\n' ' if (content.length > 0) {\n' ' var childNodes = content[0].childNodes;\n' ' for (i = 0; i < childNodes.length; i++) {\n' ' var childNode = childNodes[i];\n' '\n' ' var isPhotoOrVideo = false;\n' " if (childNode.nodeName.toLowerCase() == 'div') {\n" ' // kiem tra xem co la anh khong?\n' " var type = $(childNode).attr('class') + '';\n" '\n' " if (type.indexOf('VCSortableInPreviewMode') >= 0) {\n" ' isPhotoOrVideo = true;\n' ' }\n' ' }\n' '\n' ' try {\n' ' if ((i >= childNodes.length / 2 - 1) && (i < ' 'childNodes.length / 2) && !isPhotoOrVideo) {\n' ' if (i <= childNodes.length - 3) {\n' ' childNode.after(htmlToElement(mutexAds));\n' ' arfAsync.push("l2srqb41");\n' ' }\n' ' break;\n' ' }\n' ' }\n' ' catch (e) { }\n' ' }\n' ' }\n' ' });\n' ' function htmlToElement(html) {\n' " var template = document.createElement('template');\n" ' template.innerHTML = html;\n' ' return template.content.firstChild;\n' ' }\n' '\n' '\n' '\n' ' if (window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden)) {\n' ' if (!laNuocNgoai) {\n' ' (function (w, q) {\n' ' w[q] = w[q] || [];\n' ' w[q].push(["\\_mgc.load"]);\n' ' })(window, "\\_mgq");\n' ' }\n' ' }\n' ' \n' '\n' '\n' ' (function() {\n' ' if (!(window.pageSettings && pageSettings.allow3rd && (typeof ' "window.\\_isAdsHidden === 'undefined' || " '!window.\\_isAdsHidden))) return;\n' " if (typeof window.laNuocNgoai === 'undefined' || " '!window.laNuocNgoai) return; // chỉ chạy khi laNuocNgoai true\n' '\n' " var containerSelector = 'div.detail-cmain';\n" ' var root = document.querySelector(containerSelector);\n' ' if (!root) return;\n' '\n' ' // Thu thập figure + p (p không nằm trong figure)\n' " var figures = Array.from(root.querySelectorAll('figure'));\n" ' var paragraphs = ' "Array.from(root.querySelectorAll('p')).filter(function(p){ " "return !p.closest('figure'); });\n" ' var elements = figures.concat(paragraphs); // NodeList vốn đã ' 'theo DOM order => không cần sort\n' ' if (!elements.length) return;\n' '\n' ' var target = elements[Math.floor(elements.length / 2)]; // ' 'giữa bài\n' ' if (!target || !target.parentNode) return;\n' '\n' " var newDiv = document.createElement('div');\n" " newDiv.id = 'taboola-mid-article-widget';\n" ' target.parentNode.insertBefore(newDiv, target.nextSibling);\n' '\n' ' window.\\_taboola = window.\\_taboola || [];\n' ' window.\\_taboola.push({\n' " mode: 'thumbnails-4x1',\n" " container: 'taboola-mid-article-widget',\n" " placement: 'Mid Article Widget',\n" " target\\_type: 'mix'\n" ' });\n' ' })();\n' ' \n' '\n', 'published_date': datetime.date(2025, 12, 17), 'published_timestamp': datetime.datetime(2025, 12, 17, 11, 51), 'source': 'ThanhNien', 'tags': ['HLV Kim Sang-sik', 'U.23 Việt Nam', 'SEA Games 33', 'Thái Lan', 'tự tin', 'chuẩn bị kỹ lưỡng', 'cổ vũ', 'thành tích', 'nỗ lực cầu thủ', 'hy sinh', 'trận chung kết', 'AFF Cup 2024', 'Rajamangala', 'lối chơi', 'Yotsakorn Burapha', 'phòng ngự', 'VCK U.23 châu Á 2026', 'trọng tài', 'công bằng', 'nâng cúp vô địch', 'năm 2025'], 'title': 'HLV Kim rất tin U.23 Việt Nam sẽ đăng quang tại Rajamangala giống ' 'đàn anh, ‘nhắc nhẹ’ trọng tài...', 'url': 'https://thanhnien.vn/hlv-kim-rat-tin-u23-viet-nam-se-dang-quang-tai-rajamangala-giong-dan-anh-nhac-nhe-trong-tai-185251217115020144.htm', 'voice': 'HN-Nam-1-BL'} 2025-12-17 05:17:28 [scrapy.extensions.logstats] INFO: Crawled 20 pages (at 2 pages/min), scraped 5 items (at 2 items/min) 2025-12-17 05:17:29 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:17:29 [thanhnien_timestamp] INFO: 2025-12-17 11:57:00 not in 2025-12-17 11:41:00 to 2025-12-17 11:56:00 2025-12-17 05:17:31 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:17:31 [thanhnien_timestamp] INFO: 2025-12-17 11:59:00 not in 2025-12-17 11:41:00 to 2025-12-17 11:56:00 2025-12-17 05:17:33 [scrapy.core.engine] DEBUG: Crawled (200) (referer: https://thanhnien.vn/tin-moi.htm) 2025-12-17 05:17:33 [httpcore.connection] DEBUG: close.started 2025-12-17 05:17:33 [httpcore.connection] DEBUG: close.complete 2025-12-17 05:17:33 [thanhnien_timestamp] INFO: 2025-12-17 12:00:00 not in 2025-12-17 11:41:00 to 2025-12-17 11:56:00 2025-12-17 05:17:33 [scrapy.core.engine] INFO: Closing spider (finished) 2025-12-17 05:17:33 [boto3.s3.transfer] DEBUG: Opting out of CRT Transfer Manager. Preferred client: auto, CRT available: False, Instance Optimized: False. 2025-12-17 05:17:33 [boto3.s3.transfer] DEBUG: Using default client. pid: 189275, thread: 140264103639864 2025-12-17 05:17:33 [s3transfer.utils] DEBUG: Acquiring 0 2025-12-17 05:17:33 [s3transfer.tasks] DEBUG: UploadSubmissionTask(transfer_id=0, {'transfer_future': }) about to wait for the following futures [] 2025-12-17 05:17:33 [s3transfer.tasks] DEBUG: UploadSubmissionTask(transfer_id=0, {'transfer_future': }) done waiting for dependent futures 2025-12-17 05:17:33 [s3transfer.tasks] DEBUG: Executing task UploadSubmissionTask(transfer_id=0, {'transfer_future': }) with kwargs {'client': , 'config': , 'osutil': , 'request_executor': , 'transfer_future': } 2025-12-17 05:17:33 [s3transfer.futures] DEBUG: Submitting task PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'thanhnien_timestamp/thanhnien_timestamp_821bf058db0511f099e2d6783c969646_scheduled_2025-12-17.jl', 'extra_args': {}}) to executor for transfer request: 0. 2025-12-17 05:17:33 [s3transfer.utils] DEBUG: Acquiring 0 2025-12-17 05:17:33 [s3transfer.tasks] DEBUG: PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'thanhnien_timestamp/thanhnien_timestamp_821bf058db0511f099e2d6783c969646_scheduled_2025-12-17.jl', 'extra_args': {}}) about to wait for the following futures [] 2025-12-17 05:17:33 [s3transfer.utils] DEBUG: Releasing acquire 0/None 2025-12-17 05:17:33 [s3transfer.tasks] DEBUG: PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'thanhnien_timestamp/thanhnien_timestamp_821bf058db0511f099e2d6783c969646_scheduled_2025-12-17.jl', 'extra_args': {}}) done waiting for dependent futures 2025-12-17 05:17:33 [s3transfer.tasks] DEBUG: Executing task PutObjectTask(transfer_id=0, {'bucket': 'dagster-output-data', 'key': 'thanhnien_timestamp/thanhnien_timestamp_821bf058db0511f099e2d6783c969646_scheduled_2025-12-17.jl', 'extra_args': {}}) with kwargs {'client': , 'fileobj': , 'bucket': 'dagster-output-data', 'key': 'thanhnien_timestamp/thanhnien_timestamp_821bf058db0511f099e2d6783c969646_scheduled_2025-12-17.jl', 'extra_args': {}} 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler > 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler > 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-parameter-build.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-endpoint-resolution.s3: calling handler 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-endpoint-resolution.s3: calling handler > 2025-12-17 05:17:33 [botocore.regions] DEBUG: Calling endpoint provider with parameters: {'Bucket': 'dagster-output-data', 'Region': 'us-east-1', 'UseFIPS': False, 'UseDualStack': False, 'Endpoint': 'https://lake-api.actable.ai/', 'ForcePathStyle': True, 'Accelerate': False, 'UseGlobalEndpoint': True, 'Key': 'thanhnien_timestamp/thanhnien_timestamp_821bf058db0511f099e2d6783c969646_scheduled_2025-12-17.jl', 'DisableMultiRegionAccessPoints': False, 'UseArnRegion': True} 2025-12-17 05:17:33 [botocore.regions] DEBUG: Endpoint provider result: https://lake-api.actable.ai/dagster-output-data 2025-12-17 05:17:33 [botocore.regions] DEBUG: Selecting from endpoint provider's list of auth schemes: "sigv4". User selected auth scheme is: "None" 2025-12-17 05:17:33 [botocore.regions] DEBUG: Selected auth type "v4" as "v4" with signing context params: {'region': 'us-east-1', 'signing_name': 's3', 'disableDoubleEncoding': True} 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.handlers] DEBUG: Adding expect 100 continue header to request. 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler > 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-call.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.endpoint] DEBUG: Making request for OperationModel(name=PutObject) with params: {'url_path': '/thanhnien_timestamp/thanhnien_timestamp_821bf058db0511f099e2d6783c969646_scheduled_2025-12-17.jl', 'query_string': {}, 'method': 'PUT', 'headers': {'User-Agent': 'Boto3/1.34.57 md/Botocore#1.34.162 ua/2.0 os/linux#5.15.0-157-generic md/arch#x86_64 lang/python#3.11.13 md/pyimpl#CPython cfg/retry-mode#legacy Botocore/1.34.162', 'Content-MD5': 'jCxToSrqT8a9V/jAHzMQkw==', 'Expect': '100-continue'}, 'body': , 'auth_path': '/dagster-output-data/thanhnien_timestamp/thanhnien_timestamp_821bf058db0511f099e2d6783c969646_scheduled_2025-12-17.jl', 'url': 'https://lake-api.actable.ai/dagster-output-data/thanhnien_timestamp/thanhnien_timestamp_821bf058db0511f099e2d6783c969646_scheduled_2025-12-17.jl', 'context': {'client_region': 'us-east-1', 'client_config': , 'has_streaming_input': True, 'auth_type': 'v4', 's3_redirect': {'redirected': False, 'bucket': 'dagster-output-data', 'params': {'Bucket': 'dagster-output-data', 'Key': 'thanhnien_timestamp/thanhnien_timestamp_821bf058db0511f099e2d6783c969646_scheduled_2025-12-17.jl', 'Body': }}, 'input_params': {'Bucket': 'dagster-output-data', 'Key': 'thanhnien_timestamp/thanhnien_timestamp_821bf058db0511f099e2d6783c969646_scheduled_2025-12-17.jl'}, 'signing': {'region': 'us-east-1', 'signing_name': 's3', 'disableDoubleEncoding': True}, 'endpoint_properties': {'authSchemes': [{'disableDoubleEncoding': True, 'name': 'sigv4', 'signingName': 's3', 'signingRegion': 'us-east-1'}]}}} 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler > 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event choose-signer.s3.PutObject: calling handler > 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event choose-signer.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-sign.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event before-sign.s3.PutObject: calling handler > 2025-12-17 05:17:33 [botocore.auth] DEBUG: Calculating signature using v4 auth. 2025-12-17 05:17:33 [botocore.auth] DEBUG: CanonicalRequest: PUT /dagster-output-data/thanhnien_timestamp/thanhnien_timestamp_821bf058db0511f099e2d6783c969646_scheduled_2025-12-17.jl content-md5:jCxToSrqT8a9V/jAHzMQkw== host:lake-api.actable.ai x-amz-content-sha256:UNSIGNED-PAYLOAD x-amz-date:20251217T051733Z content-md5;host;x-amz-content-sha256;x-amz-date UNSIGNED-PAYLOAD 2025-12-17 05:17:33 [botocore.auth] DEBUG: StringToSign: AWS4-HMAC-SHA256 20251217T051733Z 20251217/us-east-1/s3/aws4_request f0dc4b52fd90afc8d9c295ca65b0ba59e04ffdf823850c482a43bac5f4a8e26d 2025-12-17 05:17:33 [botocore.auth] DEBUG: Signature: 6ac2e2a31c719a20b858ace278ce94db0b36c03c4543f12bad0cdcee6acb71e1 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event request-created.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.endpoint] DEBUG: Sending http request: 2025-12-17 05:17:33 [botocore.httpsession] DEBUG: Certificate path: /usr/local/lib/python3.11/site-packages/certifi/cacert.pem 2025-12-17 05:17:33 [urllib3.connectionpool] DEBUG: Starting new HTTPS connection (1): lake-api.actable.ai:443 2025-12-17 05:17:33 [botocore.awsrequest] DEBUG: Waiting for 100 Continue response. 2025-12-17 05:17:33 [botocore.awsrequest] DEBUG: 100 Continue response seen, now sending request body. 2025-12-17 05:17:33 [urllib3.connectionpool] DEBUG: https://lake-api.actable.ai:443 "PUT /dagster-output-data/thanhnien_timestamp/thanhnien_timestamp_821bf058db0511f099e2d6783c969646_scheduled_2025-12-17.jl HTTP/1.1" 200 0 2025-12-17 05:17:33 [botocore.parsers] DEBUG: Response headers: {'Server': 'nginx/1.24.0 (Ubuntu)', 'Date': 'Wed, 17 Dec 2025 05:17:33 GMT', 'Content-Length': '0', 'Connection': 'keep-alive', 'Accept-Ranges': 'bytes', 'ETag': '"8c2c53a12aea4fc6bd57f8c01f331093"', 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains', 'Vary': 'Origin, Accept-Encoding', 'X-Amz-Bucket-Region': 'us-east-1', 'X-Amz-Id-2': 'dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8', 'X-Amz-Request-Id': '1881E8F1B38FAA1E', 'X-Content-Type-Options': 'nosniff', 'X-Ratelimit-Limit': '25637', 'X-Ratelimit-Remaining': '25637', 'X-Xss-Protection': '1; mode=block'} 2025-12-17 05:17:33 [botocore.parsers] DEBUG: Response body: b'' 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event needs-retry.s3.PutObject: calling handler 2025-12-17 05:17:33 [botocore.retryhandler] DEBUG: No retry needed. 2025-12-17 05:17:33 [botocore.hooks] DEBUG: Event needs-retry.s3.PutObject: calling handler > 2025-12-17 05:17:33 [s3transfer.utils] DEBUG: Releasing acquire 0/None 2025-12-17 05:17:33 [scrapy.extensions.feedexport] INFO: Stored jsonlines feed (5 items) in: s3://dagster-output-data/thanhnien_timestamp/thanhnien_timestamp_821bf058db0511f099e2d6783c969646_scheduled_2025-12-17.jl 2025-12-17 05:17:33 [scrapy.statscollectors] INFO: Dumping Scrapy stats: {'downloader/request_bytes': 7640, 'downloader/request_count': 23, 'downloader/request_method_count/GET': 23, 'downloader/response_bytes': 2932463, 'downloader/response_count': 23, 'downloader/response_status_count/200': 23, 'elapsed_time_seconds': 912.852727, 'feedexport/success_count/S3FeedStorage': 1, 'finish_reason': 'finished', 'finish_time': datetime.datetime(2025, 12, 17, 5, 17, 33, 625647, tzinfo=datetime.timezone.utc), 'httpcompression/response_bytes': 15158661, 'httpcompression/response_count': 23, 'item_scraped_count': 5, 'log_count/DEBUG': 206, 'log_count/INFO': 39, 'memusage/max': 156246016, 'memusage/startup': 124239872, 'request_depth_max': 2, 'response_received_count': 23, 'robotstxt/request_count': 1, 'robotstxt/response_count': 1, 'robotstxt/response_status_count/200': 1, 'scheduler/dequeued': 22, 'scheduler/dequeued/memory': 22, 'scheduler/enqueued': 22, 'scheduler/enqueued/memory': 22, 'start_time': datetime.datetime(2025, 12, 17, 5, 2, 20, 772920, tzinfo=datetime.timezone.utc)} 2025-12-17 05:17:33 [scrapy.core.engine] INFO: Spider closed (finished) 2025-12-17 05:17:33 [httpcore.connection] DEBUG: close.started 2025-12-17 05:17:33 [httpcore.connection] DEBUG: close.complete