#!/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" # 格式化打印内容 # 重置打印机状态 echo -ne "$RESET" > "$PRINTER_DEVICE" # 打印五行空白 echo -e "\n\n\n" > "$PRINTER_DEVICE" # 打印居中的加粗标题,双倍高度和宽度 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