Nano Hash - криптовалюты, майнинг, программирование

Статус публикации с загрузкой мультимедиа с использованием Twitter API (версия 1.1) в Java

Я хочу знать, как обновить свой статус с помощью загрузки мультимедиа в твиттере с помощью java. В настоящее время мой код работает нормально без включения сценария загрузки мультимедиа с использованием Twitter4J Library ССЫЛКА но я не мог понять, как загрузить мультимедиа с моим статусом с помощью API Twitter и интегрировать его с моим текущим кодом Twitter4j.Справочник по API загрузки мультимедиа в Twitter.

Я искал свое решение в Google и нашел ссылку Публикация обновления статуса с изображением (gitHub), но эта ссылка очень сложна, потому что в основном используется PApplet. и я хочу сделать это с помощью обычного http-сообщения без расширенного класса паплета.

Любая помощь/учебник, который показывает статус сообщения с медиа (изображение) на JAVA?


Ответы:


1

Вы можете попробовать что-то вроде этого:

        String accesst = "ACCESS_TOKEN";
        String accessts = "TOKEN_SECRET";
        ConfigurationBuilder builder = new ConfigurationBuilder();
        builder.setOAuthAccessToken(accesst);
        builder.setOAuthAccessTokenSecret(accessts);
        builder.setOAuthConsumerKey("CLIENT_ID");
        builder.setOAuthConsumerSecret("CLIENT_SECRET");
        OAuthAuthorization auth = new OAuthAuthorization(builder.build());
        Twitter twitter_auth = new TwitterFactory().getInstance(auth);
        String screenName = twitter_auth.getScreenName();

        StatusUpdate status = new StatusUpdate("STATUS_TEXT");
        status.setMedia(new File("YOUR_FILE_PATH"));// BY SPECIFYING FILE PATH
        //status.setMedia("File name", new FileInputStream("")); // By InputStream
        Status updateStatus = twitter_auth.updateStatus(status);
        long id = updateStatus.getId(); // id of the status posted

Для публикации изображения с любого URL:

        String img_url = "http://www.qualitywallpapers.net/w/media/original/2013/02/23/Twitter-bird-logo-PNG.png";
        URL url1 = new URL(img_url);
        BufferedImage image = ImageIO.read(url1);
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        ImageIO.write(image, "image/png", os);
        InputStream is = new ByteArrayInputStream(os.toByteArray());
        status.setMedia("hello", is);// By Stream
21.10.2013
  • он не смог разрешить тип StatusUpdate. ? любая помощь по этому поводу? 21.10.2013
  • какую версию twitter4j вы используете? 21.10.2013
  • twitter4j-core-3.0.3.jar, я думаю, что он обновил файл jar на twitter4j 21.10.2013
  • 3.0.3 тоже подойдет, проверьте, есть ли у него класс StatusUpdate?? 21.10.2013
  • включить импорт twitter4j.StatusUpdate; в вашем импорте и проверьте, есть ли он там? 21.10.2013
  • давайте продолжим это обсуждение в чате 21.10.2013
  • Используя Twitter4j 4.0.4, этот код не работал, пока я не изменил тип изображения в ImageIO.write на png вместо image/png. (Получал ошибку № 189 от Twitter API) 24.06.2016

  • 2

    Я РЕШИЛ свою проблему, используя Twitter4j 3.0.4 и Twitter4j 3.0.4 - медиатеку. вы можете скачать его, нажмите здесь

    **Статус твита Публикация с изображением в рабочем коде TWITTER.**

    import twitter4j.Status;
    import twitter4j.Twitter;
    import twitter4j.TwitterException;
    import twitter4j.TwitterFactory;
    import twitter4j.auth.AccessToken;
    import twitter4j.auth.OAuthAuthorization;
    import twitter4j.auth.RequestToken;
    import twitter4j.User;
    
    import twitter4j.conf.Configuration;
    import twitter4j.conf.ConfigurationBuilder;
    import twitter4j.media.ImageUpload;
    import twitter4j.media.ImageUploadFactory;
    import twitter4j.media.MediaProvider;
    
    import java.io.File;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    
    public final class PostWithImage {
    
    
        /**
         * Developer : Waqas Ghouri
         * Email     : [email protected]
         * @param args message
         */
        public static void main(String[] args) throws TwitterException {
    
            String UserAccessToken = null;
            String UserAccessSecret = null;
    
            try {
    
                Twitter twitter = new TwitterFactory().getInstance();
    
    
                 //Set Your Application Consumer Key & Consumer Key Secret
                 twitter.setOAuthConsumer("xxxxxxxxxxxx","xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
    
                try {
                    // get request token.
                    // this will throw IllegalStateException if access token is already available
                    RequestToken requestToken = twitter.getOAuthRequestToken();
                    System.out.println("Got request token.");
                    System.out.println("Request token: " + requestToken.getToken());
                    System.out.println("Request token secret: " + requestToken.getTokenSecret());
    
    
                    AccessToken accessToken = null;
    
    
                    // to check this example set you callback URL to empty. If your application 
                    // callback URL is defined then URL generated by below code should be redirected
                    // to callback URL, so when we set callback URL to empty it shows PIN CODE to access OAUTH
    
                    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                    while (null == accessToken) {
                        System.out.println("Open the following URL and grant access to your account:");
                        System.out.println(requestToken.getAuthorizationURL());
                        System.out.print("Enter the PIN(if available) and hit enter after you granted access.[PIN]:");
                        String pin = br.readLine();
                        try {
                            if (pin.length() > 0) {
                                accessToken = twitter.getOAuthAccessToken(requestToken, pin);
                            } else {
                                accessToken = twitter.getOAuthAccessToken(requestToken);
                            }
                        } catch (TwitterException te) {
                            if (401 == te.getStatusCode()) {
                                System.out.println("Unable to get the access token.");
                            } else {
                                te.printStackTrace();
                            }
                        }
                    }
                    System.out.println("Got access token.");
                    UserAccessToken = accessToken.getToken();
                    UserAccessSecret = accessToken.getTokenSecret();
                    System.out.println("Access token: " + UserAccessToken);
                    System.out.println("Access token secret: " + UserAccessSecret);
    
    
                } catch (IllegalStateException ie) {
                    // access token is already available, or consumer key/secret is not set.
                    if (!twitter.getAuthorization().isEnabled()) {
                        System.out.println("OAuth consumer key/secret is not set.");
                        System.exit(-1);
                    }
                }
    
                //Fetching User Information
                //User Information from twitter.
                System.out.println("Connecting.... ");
                System.out.println("Twitter Connected To : ");
    
                User user = twitter.showUser(twitter.getId());
                System.out.print(user.getScreenName());
                if (user.getStatus() != null) {
                    System.out.println("@" + user.getScreenName() + " - " + user.getStatus().getText());
                } else {
                    // the user is protected
                    System.out.println("@" + user.getScreenName());
                }
    
    
                // If you want simple post on status uncomment below code
    
                //System.out.println("Trying to simple post");      
                //Status status = twitter.updateStatus("Normal Post on Twitter Statsus");
    
    
                // Below code post with image and message           
                System.out.println("Now Try to upload Image");
    
    
                // Specify the image path in you system ( windows / unix / mac what ever)
                // ex(windows) : C:\imagepost.png
                        // ex(linux)   : /home/waqas/imagepost.png  
                String ImagePath = null;
                br = new BufferedReader(new InputStreamReader(System.in));
                while (null == ImagePath) {
                    System.out.println("Please Type Image Path: ");
                    String path = br.readLine();
                    if (path.length() > 0) {
                        ImagePath = path;
                    } else {
                        path = "";
                        System.exit(-1);
                    }
                }
    
    
                // type your message(status)
                String Message = null;
                br = new BufferedReader(new InputStreamReader(System.in));
                while (null == Message) {
                    System.out.println("Please type your message: ");
                    String msg = br.readLine();
                    if (msg.length() > 0) {
                        Message = msg;
                    } else {
                        Message = "";
                        System.exit(-1);
                    }
                }
    
    
                 try {
    
                        Configuration conf = new ConfigurationBuilder()
                                            .setOAuthConsumerKey("xxxxxx(OAuth Consumer Key)xxxxxx")
                                            .setOAuthConsumerSecret("xxxxxxxxxx(OAuth Consumer Secret)xxxxxxxx")
                                            .setOAuthAccessToken(UserAccessToken)
                                            .setOAuthAccessTokenSecret(UserAccessSecret).build();
    
    
                        OAuthAuthorization auth = new OAuthAuthorization(conf);
                        ImageUpload upload = new ImageUploadFactory(conf).getInstance(auth);
    
                        String url;
                        if (ImagePath.length()>0) {
                            url = upload.upload(new File(ImagePath), Message);
                        } else {
                            url = upload.upload(Message,null);
                        }
                        System.out.println("Successfully uploaded image to Twitpic at " + url);
                        System.exit(0);
                    } catch (TwitterException te) {
                        te.printStackTrace();
                        System.out.println("Failed to upload the image: " + te.getMessage());
                        System.exit(-1);
                    }
    
                System.exit(0);
    
    
            } catch (TwitterException te) {
                //te.printStackTrace();
                System.out.println("Failed to get timeline: " + te.getMessage());
                System.exit(-1);
            } catch (IOException ioe) {
                ioe.printStackTrace();
                System.out.println("Failed to read the system input.");
                System.exit(-1);
            }
        }
    
    }
    
    24.10.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..