like chéo, cày rank 10/3

  • Người tạo chủ đề Người tạo chủ đề vtalinh
  • Ngày bắt đầu Ngày bắt đầu
Trạng thái
Không mở để trả lời thêm.
Năm năm trước, đúng ngày này, cùng ông anh Glenn Werner phóng xe lên cầu Long Biên. Anh vác đàn, em vác máy, hai anh em chở nhau trên chiếc 67 ông anh mua lại từ một tiệm độ xe ở Tây Hồ. Vẫn nhớ hôm đó là một ngày rất lạnh, bầu trời u ám, không tìm nổi được một chút nắng. Sau chầu cà phê ở một quán không nhớ tên trên đường Nguyễn Hữu Huân, hai anh em phi lên cầu. Mình nói "Để em chụp anh mấy cái ảnh". Ông anh gật đầu cái rụp. Và thế là bộ ảnh này ra đời. Ông anh mình đẹp trai kiểu trải đời, mặc bộ đồ chuẩn Cowboy, đi con xe 67 với cây Ghi-ta điện sau lưng, quá hợp với background cầu Long Biên cũ kỹ. Chất nghệ sỹ trong đôi mắt người nhạc sỹ càng khiến những tấm ảnh có hồn. Những điều ấy cộng hưởng lại khiến mình thực sự phiêu theo những shot hình, và tất cả buổi chụp chỉ diễn ra trong hơn 30 phút đồng hồ. Sau đó, anh em về hồ Tây uống bia đến chiều cùng với một ông chú người Anh lúc nào cũng cầm theo chiếc máy đo đường huyết.

Tối mình về nhà, lọc mấy tấm đẹp nhất để chỉnh sửa. Mình cố làm cái màu vintage một chút, và thêm mấy texture vết xước để ảnh trông cũ kỹ hơn. Vì hôm đó trời u ám quá nên phải ghép thêm trời để bức ảnh thêm màu sắc hơn. Và mình đã đặt tên Album ảnh trên Facebook là "The Wandering Artist" - nghĩa là Người nghệ sỹ lang thang. Bộ ảnh này lúc ấy khá hot trên một Group chuyên về Nhiếp ảnh. Được rất nhiều người khen ngợi và chia sẻ. Nhờ vậy, mà mình đã có thêm nhiều bạn bè cùng sở thích Nhiếp ảnh và có thêm những mối nhân duyên đặc biệt.

Ông anh này là người Úc, mình quen qua bác Martin cũng là người Úc, từng là thầy giáo dậy tiếng Anh của mình. Một người đàn ông đặc biệt tử tế đã dạy mình rất nhiều điều. Được bác giới thiệu ông anh này, mình đã ngay lập tức cảm tình vì chất du mục của ông ấy. Sau đó là chuỗi ngày rong ruổi khắp Hà Nội của hai anh em và những chiều dài uống bia ngay dốc đường Xuân Diệu. Có lần cả hai đã cùng nhau đi xe máy lên tận Cao Bằng ngắm thác Bản Giốc rồi về Bắc Kạn tắm hồ Ba Bể. Sau ông ấy và Sài Gòn một thời gian, có người yêu ở trong ấy. Chị là người Hà Nội. Cả hai đã làm lễ kết hôn ở nhà hàng Trúc Bạch hơn một năm sau. Và mình có vinh hạnh nhận nhiệm vụ làm MC ở đám cưới ấy.

Chớp mắt cái đã tròn 5 năm. Hai anh chị đã chuyển về ở hẳn bên Úc. Thỉnh thoảng về Việt Nam, lần nào anh cũng gọi mình đi uống bia. Dù không liên hệ thường xuyên, nhưng đó vẫn là một người bạn, người anh mà mình rất trân quý. Bác Martin thì đã mất vì ung thư xương từ lâu. Trước khi mất, bác vẫn còn nhắn tin và nói với mình "Cuộc đời này hữu hạn, nên hãy cứ làm những gì cháu muốn. Bởi không ai có thể sống thay cuộc đời của cháu". Mình không bao giờ quên được những dòng tin nhắn cuối cùng trên Viber ngày ấy. Bác ra đi, anh Gleen về Úc, mình không còn ngồi uống bia ở góc đường Xuân Diệu. Cũng lâu lắm rồi, mình không vác máy rong ruổi chụp ảnh rồi về hì hụi cả đêm chỉnh chỉnh sửa sửa. Những người bạn từng quen qua bộ ảnh lúc ấy, giờ cũng không còn xuất hiện trên newfeed. Và những nhân duyên đặc biệt tưởng lòng khó thể nào quên cũng phai dần theo năm tháng. Những gì thân thuộc cứ dần bỏ ta đi "như những dòng sông nhỏ". Một ngày kia nhìn lại, thứ còn ở bên ta vẫn chỉ toàn kỷ niệm...
1583847416583.png
 
Khi nào close thread hoặc trước khi ae nghỉ farm thì nhớ chạy code nhé

Bật F12 > sang tab console > paste code > ấn enter

Mã:
(function(){

/* Tùy chọn reaction, các bạn thay các số tương ứng vào là được (vd: REACTION = 2)

0 : Random

1 : Like

2 : Love

3 : Haha

4 : Wow

5 : Sad

6 : Angry

*/

const REACTION = 1;



/* Tùy chọn trang bắt đầu (khỏi phải scan lại từ đầu =]]) */

const START_PAGE = 1;



/* Tùy chọn like cho Top reaction (https://next.voz.vn/members/?key=highest_reaction_score.

Set bằng 'true' nếu muốn like cho top.

Vì một voz tân có like bằng nhau

*/



const LIKE_HIGHEST_REACTION = false;



/*

Like theo id người post (https://next.voz.vn/members/{id}/)

ex: const WHITE_LIST = ["id1", "id2", "id3", "id...N"]

*/

const WHITE_LIST = [];



/*

Không Like theo id người post

ex: const BLACK_LIST = ["id1", "id2", "id3", "id...N"]

*/



const BLACK_LIST = [];



function getHttpRequest() {

try {return new XMLHttpRequest();}

catch (error) {}

try {return new ActiveXObject("Msxml2.XMLHTTP");}

catch (error) {}

try {return new ActiveXObject("Microsoft.XMLHTTP");}

catch (error) {}



throw new Error("Could not create HTTP request object.");

}



async function httpGet(url){

var request = getHttpRequest();



var promise = new Promise((resolve, reject) => {

request.onreadystatechange = function() {

if (request.readyState==4 && request.status==200)

{

resolve(request.responseText);

}

}

});



request.open("GET", url, true);

request.send(null);



return await promise;

}



async function httpPost(url, data){

var request = getHttpRequest();

var promise = new Promise((resolve, reject) => {

request.onreadystatechange = function() {

if (request.readyState==4 && request.status==200)

{

resolve(request.responseText);

}

}

});



request.open("POST", url, true);

request.setRequestHeader('Accept', 'application/json, text/javascript, */*; q=0.01');

request.setRequestHeader('content-type', 'application/x-www-form-urlencoded; charset=UTF-8');

request.send(data);



return await promise;

}



function sleep (time) {

return new Promise((resolve) => setTimeout(resolve, time));

}



function querySelectorAll(element, query){

return Array.from(element.querySelectorAll(query));

}



async function getDocument(url){

var text = await httpGet(url);

var parser = new DOMParser();



return parser.parseFromString(text, 'text/html');

}



async function getHighestReactionMembers(){

var doc = await getDocument("/members/?key=highest_reaction_score");



return querySelectorAll(doc, ".username").map(item=> /members\/(.*)\//gm.exec(item.href)[1]);

}



async function autoLike(reaction=1){

var url = /(.*)\/(page)?/gm.exec(window.location.href)[1];

var totalPage = 1;

var pageNav = querySelectorAll(document, ".pageNav-page").pop();

pageNav = pageNav ? pageNav.querySelector("a") : null;



if(pageNav!=null){

totalPage = /\/page-(.*)/gm.exec(pageNav.href)[1];

}

var pathName = /(.*)\/(page)?/gm.exec(window.location.pathname)+ "/";



var highestReactionMembers = await getHighestReactionMembers();



for(var i=START_PAGE;i<=totalPage;i++){

console.log("-------- Like page: " + i + "--------");

var htmlDoc = await getDocument(url+"/page-"+i);

var token = htmlDoc.documentElement.getAttribute("data-csrf");



querySelectorAll(htmlDoc, ".message.message--post").forEach(item=>{

var postId = /js-post-(.*)/gm.exec(item.id)[1];

var userId = /members\/(.*)\//gm.exec(item.querySelector(".username").href)[1];



if(WHITE_LIST!=null && WHITE_LIST.length > 0){

if(WHITE_LIST.findIndex(item=>item==userId) == -1){

console.log("Ignore " + userId);

return;

}

}



if(BLACK_LIST!=null && BLACK_LIST.length > 0){

if(BLACK_LIST.findIndex(item=>item==userId) >= 0){

console.log("Ignore " + userId);



return;

}

}



if(!LIKE_HIGHEST_REACTION){

if(highestReactionMembers.findIndex(item=>item==userId) >= 0){

console.log("Ignore " + userId);

return;

}

}



if(item.querySelector("a.reaction.reaction--imageHidden")){

console.log("Like post: "+ postId);

var r = reaction || Math.floor(Math.random() * 6)+1;

httpPost("/posts/"+postId+"/react?reaction_id="+r, "_xfRequestUri="+pathName+"page-"+i+"&_xfWithData=1&_xfToken="+token+"&_xfResponseType=json");

}

});



sleep(500);

}



console.log("done");

}



autoLike(REACTION);

})();
 
Trạng thái
Không mở để trả lời thêm.

Thống kê chủ đề

Ngày tạo
vtalinh,
Người trả lời cuối
manhhomienbienthuy,
Trả lời
20.033
Lượt xem
493.677
Quay lại
Lên đầu trang