2024-12-10 00:37:34 -05:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
|
|
PRINTER_DEVICE="/dev/usb/lp0" # 热敏打印机设备路径
|
|
|
|
|
|
|
|
|
|
# ESC/POS 指令部分
|
|
|
|
|
ESC=$(echo -e "\x1b") # ESC 字符
|
|
|
|
|
RESET="${ESC}@"
|
|
|
|
|
BOLD_ON="${ESC}E\x01"
|
|
|
|
|
BOLD_OFF="${ESC}E\x00"
|
|
|
|
|
CENTER="${ESC}a\x01"
|
|
|
|
|
LEFT_ALIGN="${ESC}a\x00"
|
|
|
|
|
DOUBLE_HEIGHT="${ESC}!\x10" # 双倍高度
|
|
|
|
|
DOUBLE_WIDTH="${ESC}!\x20" # 双倍宽度
|
|
|
|
|
NORMAL_SIZE="${ESC}!\x00"
|
|
|
|
|
CUT_PAPER="${ESC}i" # 切纸指令
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 定义目标URL
|
|
|
|
|
URL="https://www.caanet.org.cn/news.mx?id=3"
|
|
|
|
|
LAST_URL_FILE="/volume2/docker/last_full_url.txt"
|
|
|
|
|
|
|
|
|
|
# 使用curl抓取网页内容
|
|
|
|
|
page_content=$(curl -s "$URL")
|
|
|
|
|
|
|
|
|
|
# 使用htmlq调用htmlq根据CSS选择器提取第一条条目的标题和相对网址
|
|
|
|
|
title=$(echo "$page_content" | /volume2/docker/htmlq '#AjaxList > li:nth-child(1) > a' --text)
|
|
|
|
|
relative_url=$(echo "$page_content" | /volume2/docker/htmlq '#AjaxList > li:nth-child(1) > a' --attribute href)
|
|
|
|
|
|
|
|
|
|
# 拼接完整网址
|
|
|
|
|
full_url="https://www.caanet.org.cn/$relative_url"
|
|
|
|
|
|
|
|
|
|
# 检查文件是否存在,如果不存在则创建
|
|
|
|
|
if [ ! -f "$LAST_URL_FILE" ]; then
|
|
|
|
|
touch "$LAST_URL_FILE"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# 读取文件中上次的URL
|
|
|
|
|
last_url=$(cat "$LAST_URL_FILE")
|
|
|
|
|
|
|
|
|
|
# 比较full_url和上次的URL
|
|
|
|
|
if [ "$full_url" == "$last_url" ]; then
|
|
|
|
|
echo "条目未更新,不输出内容。"
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
# 使用curl抓取条目详情页内容
|
|
|
|
|
details_content=$(curl -s "$full_url")
|
|
|
|
|
|
|
|
|
|
# 调用htmlq根据CSS选择器提取内容,并截取“截稿时间”向后的25个字
|
|
|
|
|
deadline_info=$(echo "$details_content" | /volume2/docker/htmlq '#contentWap > div.page_r' --text | sed -n 's/.*截稿时间\([^截稿时间]*\)\(.\{0,512\}\).*/\1\2/p')
|
|
|
|
|
|
|
|
|
|
# 输出结果
|
|
|
|
|
echo "标题: $title"
|
|
|
|
|
echo "相对网址: $relative_url"
|
|
|
|
|
echo "完整网址: $full_url"
|
|
|
|
|
echo "截稿时间: $deadline_info"
|
|
|
|
|
deadline="截稿时间""$deadline_info"
|
|
|
|
|
|
|
|
|
|
# 格式化打印内容
|
|
|
|
|
|
|
|
|
|
# 重置打印机状态
|
2024-12-10 00:38:04 -05:00
|
|
|
|
echo -ne "$RESET" > "$PRINTER_DEVICE"
|
2024-12-10 00:37:34 -05:00
|
|
|
|
|
2024-12-10 00:38:04 -05:00
|
|
|
|
# 打印五行空白
|
|
|
|
|
echo -e "\n\n\n" > "$PRINTER_DEVICE"
|
2024-12-10 00:37:34 -05:00
|
|
|
|
|
|
|
|
|
# 打印居中的加粗标题,双倍高度和宽度
|
|
|
|
|
echo -ne "$CENTER$BOLD_ON$DOUBLE_HEIGHT$DOUBLE_WIDTH" > "$PRINTER_DEVICE"
|
|
|
|
|
echo "$title" | iconv -f UTF-8 -t GBK > "$PRINTER_DEVICE"
|
|
|
|
|
echo -ne "$RESET" > "$PRINTER_DEVICE" # 复位到正常大小和状态
|
|
|
|
|
|
|
|
|
|
# 打印左对齐的描述
|
|
|
|
|
echo -ne "$LEFT_ALIGN$NORMAL_SIZE"
|
|
|
|
|
echo -e "\n" > "$PRINTER_DEVICE"
|
|
|
|
|
echo -ne "$full_url" > "$PRINTER_DEVICE"
|
|
|
|
|
echo -e "\n" > "$PRINTER_DEVICE"
|
|
|
|
|
echo "$(echo "$deadline" | iconv -f UTF-8 -t GBK)" > "$PRINTER_DEVICE"
|
|
|
|
|
echo -ne "$RESET" # 复位打印机状态
|
|
|
|
|
|
|
|
|
|
# 打印五行空白
|
|
|
|
|
echo -e "\n\n\n\n\n" > "$PRINTER_DEVICE"
|
|
|
|
|
|
|
|
|
|
# 切纸
|
|
|
|
|
echo -ne "$CUT_PAPER" > "$PRINTER_DEVICE"
|
|
|
|
|
|
|
|
|
|
# 更新文件中的URL
|
|
|
|
|
echo "$full_url" > "$LAST_URL_FILE"
|
|
|
|
|
fi
|