Получить JSON из Vine API с помощью PHP и вызвать его с помощью Jquery Ajax

Я пытаюсь создать видеопоток Vine из временной шкалы определенных пользователей. Поскольку Vine не предлагает API, я использую неофициальный Vine API который прекрасно работает!

Следующий URL, например, возвращает JSON с последними видео с данного канала Vine. https://api.vineapp.com/timelines/users/1127944909723439104?page=1&Размер = 100

Теперь, насколько я знаю (поправьте меня, если я ошибаюсь), невозможно получить доступ к этому JSON напрямую через вызов Jquery Ajax / getJSON.

Из-за этого я использую PHP в сочетании с Cronjob для получения JSON один раз в день с URL-адреса и сохранения его в файле JSON на моем собственном сервере. Я могу получить доступ к этому сохраненному файлу JSON от Jquery Ajax.

Вот что у меня сейчас есть:

PHP:

<?php
file_put_contents("sbxvine.json", fopen("https://api.vineapp.com/timelines/users/1127944909723439104?page=1&size=100", 'r'));
?>

Jquery:

$(function(){
$.getJSON( "sbxvine.json", function( data ) {
var getvines = data.data.records;
for(var i = 0; i < getvines.length; i++){
$('.vinefeed').append('<div class="item"><div class="content"><video width="100%" height="100%" src="' + getvines[i].videoUrl + '" poster="'+ getvines[i].thumbnailUrl+'" loop controls preload="none"></video></div></div>')
}
});
});

Теперь проблема в том, что я не знаю, в какое время пользователь загружает новые материалы каждый день, что означает, что канал не синхронизируется с каналом Vine. И запускать Cronjob каждые 5 минут — это не то, что я ищу.

Так что мне нужно избавиться от всего этого материала Cronjob и получить JSON в прямом эфире с URL-адреса, когда Ajax-вызов запрашивает его.

Чтобы добиться этого, я попытался сделать это:

PHP:

<?php
header('Access-Control-Allow-Origin: *');
$json = file_get_contents('https://api.vineapp.com/timelines/users/1127944909723439104?page=1&size=100');
$obj = json_decode($json,true);
echo $obj;
?>

А затем с Jquery:

$(function(){
$.ajax({
url: 'getvines.php',
dataType: 'json',
type: 'GET',
success: function(data) {
console.log(data);
},
error: function(){
console.log("nope");
}
});
});

К сожалению, это не работает, и я не уверен, что я делаю неправильно. Он записывает «Нет» через одну или две секунды.

Или есть совершенно другое решение, чтобы сделать все это лучше?

0

Решение

Ааа глупая ошибка, я просто должен был удалить json_decode из php, потому что URL-адрес уже возвращает JSON в правильном формате для вызова Ajax.

Просто дополнительный вопрос: это хороший способ создать этот канал? Каковы недостатки и какие могут быть рекомендации по его улучшению (например, сделать это как можно быстрее или варианты «наилучшей практики»)?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]