Поэтому я пытаюсь автоматизировать загрузку видео через FTP и вставку в БД. Я написал скрипт, который находится на сервере и использует включенную функцию WP:

<?php 
$title = $_GET["title"];
$pw = $_GET["key"];
$key = hash('sha256',$pw);
$hash = "hashfromkey";
if ($hash == $key){
$videowebm = $title . ".webm";
$videomp4 = $title . ".mp4";
$image    = $title . ".jpg";

$content = "<video id=\"my-video\" class=\"video-js vjs-big-play-centered\" controls preload=\"auto\" poster='$image' data-setup=\"{}\">
<source src=\"$videomp4\" type='video/mp4'>
<source src=\"$videowebm\" type='video/webm'>
<p class=\"vjs-no-js\"> activate js</p></video> ";

include( "wp-config.php" );

// Gather post data.
$my_post = array(
    'post_title'    => $title,
    'post_content'  => $content,
    'post_author'   => 3
);

// Insert the post into the database.
$ID = wp_insert_post( $my_post, true );
}
?>

Если я открою URL в моем браузере (urltofile?title=jeff&key=key), все будет нормально. При использовании скрипта Python

#!/usr/bin/python3
from os import listdir;
adress = 'url';
user = 'ftpuser';
PW = 'ftppw';
url = 'urltofile?title=';
url_short = 'Urltofile';
key = '&key=key';
dir = input("Choose Folder");
for file in dir:
    if file.endswith(".txt"):
        print(file)
        urlges = url + file + key;
        #data = urllib.parse.urlencode(data);
        #data = data.encode('utf-8');
        html_quelltext = urllib.request.urlopen(urlges).read();

Я получил

   <video id="my-video" class="video-js vjs-big-play-centered" controls preload="auto" poster='Testscribbles.txt.jpg'>

<p class="vjs-no-js"> activate js</p></video>

Поэтому мне не хватает двух строк, в которых я указываю свои источники. Я не понимаю, почему это происходит только при использовании скрипта (у меня был такой же скрипт в Perl, получил тот же результат). Я попытался сделать это с помощью инструкции get из urllib, но не смог заставить его работать (возможно, другая проблема).

У кого-нибудь есть идея, каким может быть решение?

Заранее спасибо!

0
Aretru 13 Мар 2018 в 20:18

2 ответа

Лучший ответ
remove_all_filters("content_save_pre");

Это решение моей проблемы. Wordpress пытается дезинфицировать код для предотвращения вредных кодов.

0
Aretru 23 Май 2018 в 14:32

По умолчанию в Wordpress статус публикации 'установлено значение «Черновик», которое в некоторой степени не опубликовано, в зависимости от настроек вашей темы.

Исходя из ваших текущих требований, возможно, вам нужно «опубликовать»:

// Gather post data.
$my_post = array(
    'post_title'    => $title,
    'post_content'  => $content,
    'post_author'   => 3,
    'post_status'   => 'publish'
);

// Insert the post into the database.
$ID = wp_insert_post( $my_post, true );
0
Matt 13 Мар 2018 в 17:43