如何将缩略图设置为批量导入的WordPress帖子

时间:2019-06-11 03:00:14

标签: php python wordpress scrapy

我从网站上抓取数据并将其存储到XML文件中(使用python)。从其他网站下载图像并将其存储到我的WordPress网站时,WordPress为它们分配了一个我不知道的唯一ID。因此,我无法将该图像作为缩略图分配给我的帖子。我无法一一编辑帖子,因为它们是大量的。还有其他解决方案吗?

我可以在帖子上显示图像,但是我需要知道ID才能将其分配为缩略图。我还使用了将第一张图片自动分配为缩略图的插件,但它们也需要图片ID ...

1 个答案:

答案 0 :(得分:0)

可能是this question的副本。您需要为此使用各种内置的WordPress功能:

ResponseObserver<StreamingRecognizeResponse> responseObserver = null;

  try (SpeechClient client = SpeechClient.create()) {

    responseObserver =
        new ResponseObserver<StreamingRecognizeResponse>() {
          ArrayList<StreamingRecognizeResponse> responses = new ArrayList<>();

          public void onStart(StreamController controller) {}

          public void onResponse(StreamingRecognizeResponse response) {
            responses.add(response);
          }

          public void onComplete() {
            for (StreamingRecognizeResponse response : responses) {
              StreamingRecognitionResult result = response.getResultsList().get(0);
              SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);
              System.out.printf("Transcript : %s\n", alternative.getTranscript());
            }
          }

          public void onError(Throwable t) {
            System.out.println(t);
          }
        };

    ClientStream<StreamingRecognizeRequest> clientStream =
        client.streamingRecognizeCallable().splitCall(responseObserver);

    RecognitionConfig recognitionConfig =
        RecognitionConfig.newBuilder()
            .setEncoding(RecognitionConfig.AudioEncoding.LINEAR16)
            .setLanguageCode("en-US")
            .setSampleRateHertz(16000)
            .build();
    StreamingRecognitionConfig streamingRecognitionConfig =
        StreamingRecognitionConfig.newBuilder().setConfig(recognitionConfig).build();

    StreamingRecognizeRequest request =
        StreamingRecognizeRequest.newBuilder()
            .setStreamingConfig(streamingRecognitionConfig)
            .build(); // The first request in a streaming call has to be a config

    clientStream.send(request);
    // SampleRate:16000Hz, SampleSizeInBits: 16, Number of channels: 1, Signed: true,
    // bigEndian: false
    AudioFormat audioFormat = new AudioFormat(16000, 16, 1, true, false);
    DataLine.Info targetInfo =
        new Info(
            TargetDataLine.class,
            audioFormat); // Set the system information to read from the microphone audio stream

    if (!AudioSystem.isLineSupported(targetInfo)) {
      System.out.println("Microphone not supported");
      System.exit(0);
    }
    // Target data line captures the audio stream the microphone produces.
    TargetDataLine targetDataLine = (TargetDataLine) AudioSystem.getLine(targetInfo);
    targetDataLine.open(audioFormat);
    targetDataLine.start();
    System.out.println("Start speaking");
    long startTime = System.currentTimeMillis();
    // Audio Input Stream
    AudioInputStream audio = new AudioInputStream(targetDataLine);
    while (true) {
      long estimatedTime = System.currentTimeMillis() - startTime;
      byte[] data = new byte[6400];
      audio.read(data);
      if (estimatedTime > 60000) { // 60 seconds
        System.out.println("Stop speaking.");
        targetDataLine.stop();
        targetDataLine.close();
        break;
      }
      request =
          StreamingRecognizeRequest.newBuilder()
              .setAudioContent(ByteString.copyFrom(data))
              .build();
      clientStream.send(request);
    }
  } catch (Exception e) {
    System.out.println(e);
  }
  responseObserver.onComplete();

wp_insert_attachment() set_post_thumbnail() wp_generate_attachment_metadata() wp_update_attachment_metadata() 可能是您最重要的功能,因为它返回您的附件(图像)ID。 wp_insert_attachment()然后使用此附件ID和您的帖子ID将图片设置为帖子中的特色图片。

过去,当我这样做时,我还发现我必须使用上面的元数据功能来正确分配图像,该图像是从内存中用于删除导入 及其相关图像中的帖子的。有关此see here

的完整示例
set_post_thumbnail()