Ghi lại những mẩu chuyện, cảm nghĩ về âm nhạc và ngành điện toán/tin học, trong đó có trí tuệ nhân tạo (AI) bằng Claude AI. Posting in both English and Vietnamese my thoughts about popular music and Artificial Intelligence using Anthropic's Claude AI and Claude Code CLI.
3.22.2026
My Youtube Hack comes full circle ...
Youtube hack của tôi đã come full circle. Khi mở bất cứ một trang nào trong blog lên, Youtube player cũng sẽ load, nhưng bạn sẽ không thấy cái Youtube bar nữa, vì tôi đã giấu nó. Chỉ khi nào người đọc ấn vào một cái link, thì Youtube bar mới hiện lên thường trực, rồi khi bạn sang trang mới nó lại trở về trạng thái ẩn.
Thử ấn vào đây để xem bar hiện ra và nghe nhạc, bài Love So Right của The Bee Gees.
Tôi nghĩ đây là một quy tắc các blogs cần nên theo. Cái gì mà người dùng không cần, thì không nên cho người ta thấy (yet), không thôi thì người xem rối mắt. tôi vô nhiều trang web, thấy lắp ráp nhiều thứ hoa mắt quá, chỉ tốn thời gian người xem phải load vô browser, riết rồi tôi sợ không dám vô mấy cái blogs đó.
Trong trang chỉ dẫn Youtube hack, tôi đã thêm vào một function như sau:
// Make the Youtube player visible or not. Basically at loading time it
// should be off, and only be on whenever the first video is clicked.
function ytVisible(value) {
attr = (value == true) ? "visible" : "hidden";
document.getElementById("ytPlayer").style.visibility = attr;
}
Như tôi có nhập đề, function này có một parameter là on=true, hay off=false. Tùy theo trường hợp, nó sẽ tìm cái element có tên là ytPlayer, rồi set style->visibility là visible (true) hay là hidden (false).
Sau khi Youtube player load thành công, tôi giấu nó bằng lệnh sau:
function onYouTubePlayerReady(playerId) {
ytplayer = document.getElementById("ytPlayer");
ytplayer.addEventListener("onError", "onPlayerError");
ytVisible(false);
}
Còn khi bạn ấn vô một link "a", tức là gọi loadVideo(), thì tôi sẽ không giấu tag đó nữa:
function loadVideo(id, num) {
if(ytplayer) {
ytVisible(true);
if (!num) num=0;
ytplayer.loadVideoById(id, num);
}
else // Flash not allowed, call loadVideoWindow
{
loadVideoWindow(id);
}
}
Nếu bạn vẫn thích giữ Youtube bar như xưa, thì bạn chỉ cần xóa hai cái hàng màu đỏ đó đi là xong, hay là bỏ hai dấu // trước dòng đó cũng được (để comment dòng đó out) như sau:
//ytVisible(false);
Mục đích của tôi khi viết Youtube bar là biến Youtube vids từ chỗ coi hình ảnh, chỉ để nghe nhạc mà thôi. Tuy nhiên nếu bạn muốn xem hình cũng được. Bạn phải chỉnh sửa mấy chỗ sau đây:
Ở bước 1: chỉnh hai dòng sau, WIDTH và HEIGHT cho nó rông ra và cao lên
#content-links {
RIGHT: 55px; WIDTH: 230px; height: 8px; POSITION: fixed; BOTTOM: 20px
}
Ở bước 2: chỉnh dòng sau width và height màu đỏ:
// All of the magic handled by SWFObject (http://code.google.com/p/swfobject/)
swfobject.embedSWF("http://www.youtube.com/v/" + videoID +
"&enablejsapi=1&playerapiid=player1",
"videoDiv", "280", "25", "8", null, null, params, atts);
Tất nhiên những thứ ở trên không phải do tôi sáng chế ra, mà cũng phải đi học lóm chỗ khác. Xin thưa, Youtube code là học từ Google Code:
http://code.google.com/apis/youtube/js_api_reference.html
Còn Javacript thì lắp ráp từ hai quyển: JavaScript: The Definitive Guide 5th Ed. và JavaScript Phrasebook.
Hẹn bạn kỳ tới,
hoctro.
***
Dear readers,
The following is a pinned post. Hoctro's Place (Góc Học Trò) is a place for me to deliver my past, present, and future thoughts about music and about my "vibe-coding" experiences with Claude Code, tips and tricks, so to speak. It's also a place to post my collaboration with Claude Code, ranging from supervising it to write analysis essays about prominent Vietnamese musicians such as Phạm Duy and Trịnh Công Sơn, to everything else that I find interesting.
For me, Claude AI's analysis essays are so in-depth and showing many new perspectives, it would be wasteful not to share with the world. It is a collaboration, because just like "vibe-coding", I might have not written the words, but I was the one whom conceived the original ideas, supplied the documents for Claude to research from, read and corrected hallucinations, and gave final approval for it to be published.
I sometimes print transcripts of interesting videos from other places, in order to share with others whom are more comfortable in reading and thinking things through. I don't have adsense as a side source income, so again if anything it's just helping the original video owners to gain more potential viewers, and readers to have readable material to learn.
Bạn đọc thân ái,
Sau đây là vài dòng tự sự. Hoctro's Place (Góc Học Trò) là chỗ để tôi chia sẻ những suy nghĩ của mình về âm nhạc và về những trải nghiệm "vibe-coding" với Claude Code, mấy mẹo hay ho mà tôi học được. Đây cũng là chỗ để tôi đăng những bài làm chung với Claude Code, từ việc tôi hướng dẫn nó viết bài phân tích về những nhạc sĩ Việt Nam nổi tiếng như Phạm Duy và Trịnh Công Sơn, cho tới đủ thứ khác mà tôi thấy hay.
Với tôi, những bài phân tích của Claude AI rất sâu sắc, chỉ ra nhiều góc nhìn mới, không chia sẻ với bạn đọc thì rất uổng phí. Nói là làm chung, bởi vì giống như "vibe-coding" vậy đó, tôi có thể không phải là người viết ra từng chữ, nhưng tôi là người nghĩ ra ý tưởng ban đầu, cung cấp tài liệu cho Claude nghiên cứu, đọc lại rồi sửa mấy chỗ nó viết sai, và quyết định cuối cùng có đăng hay không.
Thỉnh thoảng tôi cũng in lại nội dung mấy video hay từ chỗ khác, để chia sẻ cho những bạn nào thích đọc và suy ngẫm hơn là coi video. Tôi không có chạy quảng cáo kiếm tiền gì hết, nên nếu có gì thì cũng chỉ là giúp mấy chủ video gốc có thêm người xem, và giúp bạn đọc có thêm tài liệu để học thôi. Chào bạn và mong bạn tìm thấy những khoảnh khắc vui khi đọc trang này.
Chào Nhã,
ReplyDeleteCách đây gần 1 tháng hoctro cũng thử dùng cái new (and cool) Blogger Template Designer, và cũng chọn cái template mà Nhã đang dùng. Tuy nhiên khi lắp xong thì YouTube code chạy không được nữa. Nguyên do là vì for some reason cái javascipt không nhận biết được cái div tag của cái Youtube, thành ra nó không thay thế bài gốc "deux guitares" bằng bài mới được. Thành ra hoctro tuy thích cái mới lắm nhưng phải trở về dùng cái cũ.
Không dám hứa trước nhưng hoctro sẽ tìm thời gian rảnh để coi xem tại sao nó bị hư như vậy. (Lỗi này chỉ xảy ra cho blog dùng new template designer thôi.)
Chúc Nhã một ngày thật vui.
Chào ông thầy,
ReplyDeleteĐúng rồi, hôm qua không thấy Học trò trả lời có lẽ vì bận, nên (tức mình) tự mày mò biết là cái template làm hỏng nên phải thay bằng template khác, hi hi, lấy lại được rồi. Chứ không ngồi nghĩ mãi sao ở edit thì nó có mà ra ngoài thì nó biến mất, chả lẽ có code của thầy biến thành ghost code.
Lại thêm một điều để học. Còn nhiều thứ trong trang HT để học mà chưa kịp. Chả lẽ yêu cầu thầy dạy từ từ thôi, học trò dốt theo không nổi :-)
Cám ơn thầy HT.
Chào thầy Học Trò,
ReplyDeleteThì ra thế, lại phải copy sửa lại code của thày vậy :-), đệ tử này chỉ biết i tờ, nên thầy chỉ đâu học đó.
Nhờ thầy bây giờ mới biết Firefox hiện ra lắm warning về code quá.
Nhưng mà cũng nhờ học trò ấm ớ mà thầy mới khám phá ra những "lỗi" khác đó nhé :-)
Cám ơn thày HT,