Xây dựng trang microblog cá nhân với B ngôn B ngữ - máy xèng

Từ năm 2016 đến 2018, tôi sử dụng Weibo khá nhiều nhưng không thích tính chất đóng kín của dữ liệu Weibo. Vì vậy, tôi thường xuyên sao lưu nội dung Weibo vào blog, tạo thành loạt bài "Micro Words Small Meanings". Cuối năm 2018, tôi dự định chuyển sang viết nội dung ngắn trên Douban nhưng không duy trì được.

Tôi mong muốn xây dựng một microblog cá nhân để ghi lại những suy nghĩ nhỏ và cuộc sống hàng ngày, sau đó định kỳ tổng hợp thành loạt bài "Micro Words Small Meanings". Tôi đã cân nhắc hai phương pháp dưới đây nhưng đều từ bỏ.

Gần đây, tôi thấy dự án của Daibor - Bảo vệ Biểu đạt: Sử dụng nền tảng BaaS phía sau để nhanh chóng xây dựng một phiên bản Weibo riêng không có like và comment - B ngôn B ngữ, rất phù hợp với nhu cầu của tôi. Vì vậy, tôi đã triển khai trang Micro Words Small Meanings.

Trong quá trình sử dụng, tôi nhận ra rằng khi dùng Weibo, việc phải mở ứng dụng để đăng bài dễ khiến mình bị thu hút bởi dòng thông tin và rơi vào trạng thái lướt web, cuối cùng lãng phí thời gian. Nhưng giải pháp này tách biệt giữa việc đăng bài boi tu vi và duyệt nội dung.

Hướng dẫn của Daibor rất chi tiết, bài viết này sẽ ghi lại một số thực hành của tôi.

Một, Mẫu Typecho

Daibor đã cung cấp file mẫu, chỉ cần tải file mẫu này lên thư mục chủ đề của Typecho và thực hiện các điều chỉnh sau:

Thứ nhất, đổi tên file thành bb.php (Typecho chỉ nhận dạng template php)

Thứ hai, thêm đoạn mã sau trước thẻ <!DOCTYPE html> (Thông tin mô tả template Typecho)

1<?php if (!defined('__TYPECHO_ROOT_DIR__')) exit;
2/*
3 
4 */
5?>

Thứ ba, vào backend Typecho tạo trang độc lập, chọn mẫu tùy chỉnh là "B ngôn B ngữ", để trống nội dung chính và phát hành.

Khi truy cập trang này, bạn sẽ thấy nội dung B ngôn B ngữ.

Hai, Phương pháp đăng bài trên MAC

Daibor đã cung cấp phương pháp đăng bài cho iOS và Windows. Thiết bị hằng ngày của tôi là iPhone và MAC, vì vậy tôi bắt đầu tìm hiểu phương pháp đăng bài trên MAC.

Do biết một chút Python và leancloud cung cấp SDK Python, cuối cùng tôi quyết định sử dụng cách kết hợp dòng lệnh + Python.

1. Chuẩn bị chương trình Python Thứ nhất, cài đặt gói python của leancloud.

1pip3 install leancloud

Thứ hai, tạo file python, lưu với tên bb.py, nội dung như sau:

 1#!/usr/bin/env python3
 2import sys
 3import leancloud
 4leancloud.init("appId từ backend leancloud", master_key="master_key từ backend leancloud")
 5query = ""
 6for i in sys.argv[1:]:
 7  query = query + i + " "
 8
 9Content = leancloud.Object.extend('content')
10content = Content()
11content.set('content', query)
12content.save()
13print('done')

(Là người mới học lập trình, mã code còn thô sơ) Từ bây giờ, có thể đăng B ngôn B ngữ bằng cách thực thi python3 bb.py nội dung muốn đăng, hiệu quả dòng lệnh và web như hình bên dưới:

Nhưng có hai điểm máy xèng chưa tốt:

Hy vọng đơn giản hóa thành: Có thể thực thi bb nội dung muốn đăng từ bất kỳ thư mục nào để đăng B ngôn B ngữ. Thực tế, chỉ cần chuyển bb.py thành file thực thi và đặt vào thư mục PATH của công cụ dòng lệnh (tôi dùng zsh).

Tiếp tục khám phá.

2. Chuẩn bị môi trường dòng lệnh Thứ hai, thêm thư mục này (User/tên_người_dùng/bin) vào file cấu hình của công cụ dòng lệnh, ví dụ với zsh, file cấu hình là /User/tên_người_dùng/.zshrc, thêm dòng sau vào cuối file .zshrc. Điều quan trọng ở dòng thứ hai, nối thư mục này vào $PATH bằng dấu :. (skyue là tên người dùng MAC của tôi)

1# Đường dẫn chương trình của tôi
2export PATH=$PATH:/Users/skyue/bin

Lưu ý: Nếu dùng bash, file cấu hình là /User/tên_người_dùng/.bashrc.

Thứ ba, copy bb.py vào thư mục bin nói trên và đổi tên thành bb, tức là bỏ phần mở rộng .py.

Thứ tư, thực thi chmod a+x bb, thiết lập file bb thành file thực thi.

Xong xuôi, bây giờ có thể dùng lệnh bb để đăng B ngôn B ngữ rồi. Hiệu quả đăng bài hiện tải game bắn cá tại như hình bên dưới:

Ba, Hỗ trợ ảnh

Tôi rất hài lòng với phương án đăng bài này, cực kỳ tiện lợi.

Hiện tại, điều tiếc nuối duy nhất là không thể đăng ảnh. Với năng lực hiện tại của tôi thì chưa làm được, tôi đã trao đổi với Daibor trong phần bình luận, anh ấy có một số ý tưởng, hy vọng Daibor sẽ tiếp tục tối ưu hóa phương án để hỗ trợ đăng ảnh.

Với khả năng hiện tại, nếu muốn đăng ảnh, có thể upload ảnh lên dịch vụ lưu trữ ảnh và lấy URL ảnh; sau đó khi đăng nội dung chữ, thêm URL ảnh vào; cuối cùng, trong lúc hiển thị mẫu, phân tích URL ảnh thành thẻ <img>.

[Cập nhật ngày 27/04/2020] Theo gợi ý của Simon trong phần bình luận, sử dụng alias sẽ đơn giản hơn: Sau khi chuẩn bị xong file bb.py, trực tiếp sử dụng alias bb='python3 /đường_dẫn_của_bạn/bb.py' để thiết lập alias bb, cũng có thể sử dụng bb để gửi nội dung từ bất kỳ thư mục nào.

Trong đó, /đường_dẫn_của_bạn/bb.py là đường dẫn lưu trữ file bb.py.