【问题标题】:Using PHP to get Tumblr Photo使用 PHP 获取 Tumblr 照片
【发布时间】:2011-04-20 14:41:06
【问题描述】:

编辑:想出了一个解决方案。正如建议的那样,我将脚本转换为使用 JSON 而不是 XML。该脚本如下,如果需要,应该可以在 Wordpress 安装中运行

    <?php
$offset = $_GET['offset'];
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,"http://blog.dgovil.com/api/read/json?num=10&start=".$offset);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
$result = curl_exec($ch);
curl_close($ch);

$result = str_replace("var tumblr_api_read = ","",$result);
$result = str_replace(';','',$result);
$result = str_replace('\u00a0','&amp;nbsp;',$result);

$jsondata = json_decode($result,true);
$posts = $jsondata['posts'];


foreach($posts as $post){   ?>
<div class="tumblr_post post-<?php echo $post['type'] ?>">

    <?php if ($post['type'] == 'regular') { ?>
        <div class="post-title" id="post-<?php echo $post['id'];?>"><a href="<?php echo $post['url-with-slug']; ?>"><?php echo $post{'regular-title'}; ?></a></div>
    <?php echo $post{'regular-body'}; ?>
      <?php } ?>

    <?php if ($post['type'] == 'quote') {  ?>
        <?php echo $post{'quote-text'}; ?>
        <?php echo $post{'quote-source'}; ?>
      <?php } ?>


    <?php if ($post['type'] == 'photo') {  ?>
        <img src="<?php echo $post['photo-url-500'];?>">
        <?php echo $post{'photo-caption'}; ?>
        <?php echo $post{'photo-set'}; ?>

        <a href="<?php echo $post{'photo-url'}; ?>" class="fImage">View Full Size</a>
    <?php } ?>

    <?php if ($post['type'] == 'link') {  ?>

        <p><a href="<?php echo $post{'link-url'}; ?>"><?php echo $post{'link-text'}; ?></a>
        <?php echo $post{'link-description'}; ?>
      <?php } ?>

    <?php if ($post['type'] == 'conversation') {  ?>
        <?php echo $post{'conversation-text'}; ?>
      <?php } ?>


    <?php if ($post['type'] == 'video') {  ?>
        <!--<?php echo $post{'video-source'}; ?>-->
        <?php echo $post{'video-player'}; ?>
        <?php echo $post{'video-caption'}; ?>
      <?php } ?>

    <?php if ($post['type'] == 'conversation') {  ?>
        <?php echo $post{'audio-caption'}; ?>
        <?php echo $post{'audio-player'}; ?>
        <?php echo $post{'audio-plays'}; ?>
      <?php } ?>

<div id="post-date">
<?php echo date("jS D M, H:i",strtotime($post['date'])); ?>&nbsp; &nbsp;<a href="<?php echo $post['url-with-slug']; ?>">Read on Tumblr</a>
</div>

</div>



<?php   }?>


<div id="tumblr_down"></div>
<script type="text/javascript">
// load the api response
$.getJSON('http://tumblruptime.apigee.com/json?callback=?', function (response) {
    // check if an api method is broken
    if (!response.methods['/api/read'].up) {
        $('#tumblr_down').text('Tumblr seems to not want to work with me right now. You can still try and view the posts on blog.dgovil.com. Service provided by http://tumblruptime.icodeforlove.com/apiinfo');
    }
});
</script>

<div id="tumblr_postnav">
<a href="<?php echo '?offset='.($offset + 10) ?>" id="tumblr_next">Older posts</a>
<a href="<?php echo '?offset='.($offset - 10) ?>" id="tumblr_prev">Newer Posts</a>  
</div>

谢谢!

【问题讨论】:

    标签: php xml image tumblr


    【解决方案1】:

    使用 PHP 解释 JSON 调用:

    <?php
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,"http://username.tumblr.com/api/read/json");
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    $result = curl_exec($ch);
    curl_close($ch);
    
    $result = str_replace("var tumblr_api_read = ","",$result);
    $result = str_replace(';','',$result);
    $result = str_replace('\u00a0','&amp;nbsp;',$result);
    
    $jsondata = json_decode($result,true);
    $posts = $jsondata['posts'];
    
    foreach($posts as $post){
    echo $post['photo-url-500'].'</br>';
    }
    ?>
    

    你会想要这样做 b/c Tumblr 的 JSON 响应似乎是非标准的。您可以将 foreach 循环更改为 for 循环或任何您想要的输出。

    【讨论】:

    • 与其修复此程序,不如将其转换为使用 JSON。 XML 看起来有点混乱,但 JSON 也是如此。然而,JSON 输出更容易使用,IMO。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    相关资源
    最近更新 更多