Telegram bot Java

130
14 ноября 2019, 12:20

Реализую телеграм бота для парсинга. Прокси работает, бот отвечает на слова, а вот парсинг работает не как ожидается и не выводит на экран почему?

class Main

import org.telegram.telegrambots.ApiContextInitializer;
import org.telegram.telegrambots.bots.DefaultBotOptions;
import org.telegram.telegrambots.meta.ApiContext;
import org.telegram.telegrambots.meta.TelegramBotsApi;
import org.telegram.telegrambots.meta.exceptions.TelegramApiRequestException;
public class Main {
    // private static String PROXY_HOST = "87.214.0.47" /* proxy host */;
    // private static Integer PROXY_PORT = 3128 /* proxy port */;
    public static void main(String[] args) {
        try {
            ApiContextInitializer.init();
            TelegramBotsApi telegramm = new TelegramBotsApi();
            DefaultBotOptions options = ApiContext
                    .getInstance(DefaultBotOptions.class);
            options.setProxyHost("166.62.83.129");
            options.setProxyPort(20333);
            //Select proxy type: [HTTP|SOCKS4|SOCKS5] (default: NO_PROXY)
            options.setProxyType(DefaultBotOptions.ProxyType.SOCKS5);
            telegramm.registerBot(new Bot(options));
        } catch (TelegramApiRequestException e) {
            e.printStackTrace();
        }
    }
}

class Bot

import org.telegram.telegrambots.bots.DefaultBotOptions;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.api.objects.Update;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
public class Bot extends TelegramLongPollingBot {
    KapperBook kapperBook = new KapperBook();
    private long chat_id;
    public Bot(DefaultBotOptions options) {
        super(options);
    }
    public void onUpdateReceived(Update update) {
        update.getUpdateId();
        SendMessage sendMessage = new SendMessage().setChatId(update.getMessage().getChatId());
        chat_id = update.getMessage().getChatId();
        sendMessage.setText(input(update.getMessage().getText()));
        try {
            execute(sendMessage);
        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }
    public String getBotUsername() {
        return "@KupperMSCBot";
    }
    public String getBotToken() {
        return "787571455:AAFl9vffyhKqLq6ADadWJg2ByzQFMBifcno";
    }
    public String getInfoKapperBook() {
        String info = kapperBook.getTitle()
                + "\nЛига " + kapperBook.getGeners()
                + "\n\nОписание " + kapperBook.getDescription()
                + "\n\nКоличестов лайков\n" + kapperBook.getOrating_res();
        return info;
    }
    String input(String msg) {
        if (msg.contains("Ставка")) {
            return getInfoKapperBook();
        }
        return msg;
    }
}

class KapperBook

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.IOException;
public class KapperBook {
    private Document document;
    public KapperBook() {
        connect();
    }
    private void connect() {
        try {
            document = Jsoup.connect("https://vprognoze.ru/forecast/pro/").get();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public String getTitle() {
        return document.title();
    }
    public String getOrating_res() {
        //   Element element = document.getElementById("orating_res"); // лайки
        Elements elements = document.getElementsByClass("orating_res");
        return elements.text();
    }
    public String getDescription() {
        Elements elements = document.getElementsByClass("news_box");
        //Element element = document.getElementById("news_box"); // описание
        return elements.text();
    }
    public String getGeners() {
        Elements elements = document.getElementsByClass("championship"); //лига
        return elements.text();
    }
}
Answer 1

При попытке подключится через Jsoup из коробки по указанному вами адресу, вылетает исключение:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=307, URL=https://vprognoze.ru/forecast/pro/
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:435)
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:410)
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:164)
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:153)
    at ua.spoon.Application.main(Application.java:27)

На en SO есть вопрос на эту тему

HTTP status code 307 is not an error, it's an information saying that the server is making a temporary redirect to another page.

Вольный перевод:

HTTP status code 307 это не код ошибки, а информация о том, что сервер сервер делает временное перенаправление на другую страницу.

READ ALSO
не запускается javaFX jar-ник

не запускается javaFX jar-ник

Сделал два эксперимента с использованием javaFx и Swing где оба этих проекта заворачиваю в банку (Eclipse)первым экспортировал Swing проект по двойному...

155
Зацикленность Java

Зацикленность Java

Не понимаю почему цикл зацикливается, объясните пожалуйста

149
onsubmit+onclick в связке

onsubmit+onclick в связке

У меня есть формы и все они работают через onsubmit с одним и тем же скриптом На одну из форм мне нужно было сделать так, что бы при нажатии на кнопку,...

113
Смена иконки через javascript

Смена иконки через javascript

Есть 2 иконки play/pause, при нажатии на play должна появляться pause, но в момент когда появляется pause иконка play не исчезает и получается наложение...

165