ai 挑战赛

5 小时 21 分钟前
 shoushen

论坛里有些人无脑吹 ai,挺反感的。 最近用 ai 写个收音机小工具,花了点时间修改才满意。 请大家挑战一下,谁能用更少的提示词实现以下功能(请注明大模式和提示词): 需求:用户打开终端,输入 fm,播放第一电台,并显示带有编号的节目列表,用户输入编号,播放对应的电台,并且电台列表中对应的电台颜色修改红色。

以下是示例:

#!/bin/bash
set -euo pipefail

SUPPORTED_FMS=(
  "清晨音乐台,https://lhttp.qingting.fm/live/4915/64k.mp3"
  "AsiaFM 亚洲音乐台,https://lhttp.qingting.fm/live/4581/64k.mp3"
)

# 全局变量
CURRENT_PID=""
SELECTED_NUM=""
CURRENT_PLAY_NAME=""
MAX_NUM=${#SUPPORTED_FMS[@]}

print_radio_info() {
  echo "节目列表:"
  for idx in "${!SUPPORTED_FMS[@]}"; do
    IFS=',' read -r name url <<< "${SUPPORTED_FMS[$idx]}"
    local num=$((idx + 1))
    if [[ "$SELECTED_NUM" =~ ^[0-9]+$ && "$num" -eq "$SELECTED_NUM" ]]; then
      printf "  \033[31m[%2d]  %s\033[0m\n" "$num" "$name"
    else
      printf "   %2d    %s\n" "$num" "$name"
    fi
  done
}

# 播放节目(参数:节目编号)
play_radio() {
  local radio_num="$1"
  local index=$((radio_num - 1))
  
  IFS=',' read -r radio_name radio_url <<< "${SUPPORTED_FMS[$index]}"
  
  if ps -p "$CURRENT_PID" >/dev/null 2>&1; then
    kill "$CURRENT_PID" >/dev/null 2>&1
    wait "$CURRENT_PID" 2>/dev/null
  fi

  SELECTED_NUM="$radio_num"
  CURRENT_PLAY_NAME="$radio_name"
  
  mpg123 -q "$radio_url" >/dev/null 2>&1 < /dev/null &
  CURRENT_PID=$!



  if ! ps -p "$CURRENT_PID" >/dev/null; then
    echo -e "播放失败!请检查网络连接或 mpg123 是否安装。"
    CURRENT_PID=""
    CURRENT_PLAY_NAME=""
    SELECTED_NUM=""
  fi
}

main_loop() {

  while true; do
    clear
    print_radio_info
    read -r -p "请输入节目编号( 1-$MAX_NUM )或 q 退出: " user_input
    if [[ "$user_input" =~ ^[qQ]$ ]]; then
      echo "正在退出播放器..."
      if ps -p "$CURRENT_PID" >/dev/null 2>&1; then
        kill "$CURRENT_PID" >/dev/null 2>&1
        wait "$CURRENT_PID" 2>/dev/null
      fi
      clear
      exit 0
    fi

    if ! [[ "$user_input" =~ ^[0-9]+$ ]]; then
      echo -n "错误:请输入有效的数字或 q 退出!"
      sleep 1
      continue
    fi

    if [[ "$user_input" -lt 1 || "$user_input" -gt "$MAX_NUM" ]]; then
      echo -n "错误:无效的节目编号!请输入 1-$MAX_NUM 之间的数字"
      sleep 1
      continue
    fi

    play_radio "$user_input"
  done
}

# 程序入口
play_radio 1
main_loop
310 次点击
所在节点    程序员
10 条回复
kekxv
4 小时 50 分钟前
shoushen
4 小时 44 分钟前
@kekxv 你把提示词和模型名称发上来
kekxv
4 小时 41 分钟前
你点链接就能看到啊😂
@shoushen
shoushen
4 小时 32 分钟前
你把你的提示词发上来啊,别用我的啊。
shoushen
4 小时 32 分钟前
Tink
3 小时 55 分钟前


这个算数不

Tink
3 小时 53 分钟前
我靠图居然挂了



Tink
3 小时 51 分钟前
代码如下:

import sys
import subprocess
import threading
import time
import os

# Radio Stations List
STATIONS = [
{'id': 1, 'name': '内蒙古新闻广播 (Nei Menggu News)', 'url': 'http://lhttp.qtfm.cn/live/1883/64k.mp3'},
{'id': 2, 'name': '云南新闻广播 (Yunnan News)', 'url': 'http://lhttp.qtfm.cn/live/1926/64k.mp3'},
{'id': 3, 'name': '经典 80 年代 (China 80s)', 'url': 'http://lhttp.qtfm.cn/live/20207/64k.mp3'},
{'id': 4, 'name': 'SAW 80s (International)', 'url': 'http://stream.saw-musikwelt.de/saw-80er/mp3-128/'},
]

current_process = None
current_station_id = 1

def clear_screen():
os.system('cls' if os.name == 'nt' else 'clear')

def play_station(station):
global current_process

# Stop existing process if any
if current_process:
try:
current_process.terminate()
current_process.wait(timeout=1)
except:
try:
current_process.kill()
except:
pass

# Start new process
# -nodisp: no graphical window
# -autoexit: exit when stream ends (though streams usually don't end)
# -loglevel quiet: suppress output
cmd = ['ffplay', '-nodisp', '-autoexit', '-loglevel', 'quiet', station['url']]
try:
current_process = subprocess.Popen(cmd, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
except FileNotFoundError:
print("Error: ffplay not found. Please install ffmpeg.")
sys.exit(1)

def print_ui():
clear_screen()
print("=== CLI FM Radio ===")
print("Enter station ID to switch. Ctrl+C to exit.\n")

for station in STATIONS:
if station['id'] == current_station_id:
# Red color for active station
print(f"\033[91m[{station['id']}] {station['name']} (Playing)\033[0m")
else:
print(f"[{station['id']}] {station['name']}")
print("\n> ", end='', flush=True)

def main():
global current_station_id

# Play default station (first one)
play_station(STATIONS[0])
print_ui()

try:
while True:
try:
user_input = input()
if not user_input.strip():
print_ui()
continue

new_id = int(user_input.strip())
found = False
for station in STATIONS:
if station['id'] == new_id:
current_station_id = new_id
play_station(station)
found = True
break

if not found:
# Just refresh UI if invalid input
pass

print_ui()

except ValueError:
print_ui()
except KeyboardInterrupt:
print("\nExiting...")
if current_process:
current_process.terminate()
sys.exit(0)

if __name__ == "__main__":
main()
Tink
3 小时 48 分钟前
Tink
3 小时 15 分钟前
我又在 ai studio 里试了一下网页版的,更离谱了。

和 anti-gravity 一样,也是一句搞定。




这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1174070

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX