抢羽毛球场地脚本

public class WeChatApplication
{
    public static void main(String[] args) throws ParseException, ParseException
    {
        System.out.println("Start Success !");
        Execute execute = new Execute();

        execute.everyday("李进友友哥","07:59:54","我想要8-9点的3号场地");
     
    }
}
public class WeChatRobot
{

    private Robot bot = null;
    private Clipboard clip = null;

    public WeChatRobot()
    {
        try
        {
            this.clip = Toolkit.getDefaultToolkit().getSystemClipboard();
            this.bot = new Robot();
        } catch (AWTException e) {
            e.printStackTrace();
        }
    }

    public void OpenWeChat() {
        bot.keyPress(KeyEvent.VK_CONTROL);
        bot.keyPress(KeyEvent.VK_ALT);
        bot.keyPress(KeyEvent.VK_W);

        bot.keyRelease(KeyEvent.VK_CONTROL);
        bot.keyRelease(KeyEvent.VK_ALT);

        bot.delay(1000);
    }

    public void ChooseFriends(String name) {
        Transferable text = new StringSelection(name);
        clip.setContents(text, null);
        bot.delay(1000);
        bot.keyPress(KeyEvent.VK_CONTROL);
        bot.keyPress(KeyEvent.VK_F);
        bot.keyRelease(KeyEvent.VK_CONTROL);

        bot.delay(1000);

        bot.keyPress(KeyEvent.VK_CONTROL);
        bot.keyPress(KeyEvent.VK_V);
        bot.keyRelease(KeyEvent.VK_CONTROL);

        bot.delay(2000);

        bot.keyPress(KeyEvent.VK_ENTER);

    }

    public void SendMessage(String message) {
        Transferable text = new StringSelection(message);
        clip.setContents(text, null);
        bot.delay(1000);
        bot.keyPress(KeyEvent.VK_CONTROL);
        bot.keyPress(KeyEvent.VK_V);
        bot.keyRelease(KeyEvent.VK_CONTROL);
        bot.delay(1000);

        bot.keyPress(KeyEvent.VK_ENTER);

        bot.delay(1000);
        bot.keyPress(KeyEvent.VK_CONTROL);
        bot.keyPress(KeyEvent.VK_ALT);
        bot.keyPress(KeyEvent.VK_W);

        bot.keyRelease(KeyEvent.VK_CONTROL);
        bot.keyRelease(KeyEvent.VK_ALT);
    }
}
public class Execute {

    private WeChatRobot robot = new WeChatRobot();
    private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    public void everyday(String friendName,String timeStr,String message) throws ParseException {
        //获取目标时间
        Date date = getDate(timeStr);
        Timer timer = new Timer();
        TimerTask timerTask = new TimerTask() {
            @Override
            public void run() {
                printLog(friendName,message);
                robot.OpenWeChat();
                robot.ChooseFriends(friendName);
                robot.SendMessage(message);
            }
        };
        timer.schedule(timerTask,date,1000*60*60*24);

    }

    private void printLog(String friendName, String message) {
        System.out.println("-----------------发送消息-----------------");
        System.out.println("当前时间: " + sdf.format(new Date()));
        System.out.println("发送对象: " + friendName);
        System.out.println("发送内容: " + message);
    }

    private Date getDate(String timeStr) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        //获取当前日期 例如 2020-22-22
        String currentDate = sdf.format(new Date());
        //组拼 目标时间 2020-22-22 22:22:22
        String targetTime = currentDate+" "+timeStr;

        sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //目标时间 时间戳
        long targetTimer= sdf.parse(targetTime).getTime();
        //当前时间 时间戳
        long currentTimer = new Date().getTime();
        //判断是否已过目标时间
        if(targetTimer < currentTimer ){
            //目标时间加一天
            targetTimer += 1000*60*60*24;
        }
        //返回目标日期
        return new Date(targetTimer);
    }

}

 这份代码有个问题,多次运行后会出现下面的问题:

  

说明你的系统没有剪切板程序

首先: 在开始->运行中输入clipbrd 回车:

 如果系统弹出了剪切板,那你就编辑-删除

 如果提示window 没有文件 clipbrd 那就需要去找一个clipbrd.exe程序 放入到

 C:\WINDOWS\system32目录下面就可以了.....
 

### 自动羽毛球场馆预约脚本的设计与实现 编写或获取一个用于自动预约羽毛球场馆的 Python 脚本涉及多个技术环节,包括网络请求、数据解析以及自动化操作。以下是关于如何设计和实现此类脚本的关键点: #### 1. **需求分析** 在开发之前,需明确目标网站的功能结构及其交互方式。通常情况下,场馆预约系统可能基于 Web 应用程序运行,因此需要模拟用户的登录、查询可用场地以及提交预约的操作。 - 如果学校提供 API 接口,则可以直接调用接口完成预定逻辑[^1]。 - 若无公开 API,可以通过抓取网页内容并发送 HTTP 请求来模拟用户行为[^2]。 #### 2. **工具和技术栈选择** 为了构建这样的脚本,可以采用以下技术和库: - `requests` 或 `httpx`: 处理HTTP通信,向服务器发起GET/POST请求。 - `BeautifulSoup` (来自bs4包): 解析HTML文档提取所需信息。 - Selenium: 当页面加载依赖JavaScript时可考虑使用Selenium驱动浏览器执行复任务;不过这可能会增加资源消耗. ```python import requests from bs4 import BeautifulSoup def login(username, password): session = requests.Session() # 假设登录URL为 'https://example.com/login' response = session.post('https://example.com/login', data={'username': username, 'password': password}) if not response.ok or "logout" not in response.text.lower(): raise Exception("Login failed") return session def find_available_courts(session): url = 'https://example.com/court_availability' # 替换为目标网址 res = session.get(url) soup = BeautifulSoup(res.content, 'html.parser') courts_info = [] court_elements = soup.find_all('div', class_='court') # 根据实际结构调整CSS选择器 for elem in court_elements: time_slots = elem.select('.time-slot.available') # 同样调整至匹配具体标签样式 for slot in time_slots: info = { 'date': slot['data-date'], 'start_time': slot['data-start-time'], 'end_time': slot['data-end-time'] } courts_info.append(info) return courts_info session = login('your_username','your_password') available_times = find_available_courts(session) print(available_times[:5]) # 打印前五个可用时间段作为示例 ``` 上述代码片段展示了基本框架,其中包含了两个主要函数:一个是负责处理身份验证过程(`login`),另一个则是查找开放的时间段(`find_available_courts`). 实际应用中还需要进一步细化错误处理机制以及其他细节部分. #### 3. **注意事项** - 尊重服务条款:确保您的活动不违反任何法律或者服务商的规定。 - 数据隐私保护:妥善保管账户凭证等相关敏感资料。 - 技术更新适应性:由于目标站点可能发生变动,定期维护脚本至关重要。 #### 4. **扩展功能建议** 除了基础版本外,还可以加入更多实用特性比如通知推送、多线程并发尝试不同日期时段等提升用户体验。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值