Получите идентификатор блога Blogger по его дружественному URL-адресу без скриншота экрана - PullRequest
2 голосов
/ 13 января 2010

Я использую Blogger API для PHP . Я хочу получить идентификатор блога только по названию сайта.

Например, http://sleeptalkinman.blogspot.com/ имеет идентификатор блога 3117168333067506122. Это возможно, поскольку идентификатор источника блога появляется в источнике, но очистка экрана не очень хорошая идея!

Можно ли получить его через API вместо того, чтобы вырезать его из HTML?

Ответы [ 4 ]

3 голосов
/ 16 июля 2013

На сегодняшний день новейший API блоггера находится в версии 3.0. С помощью этого нового API мы можем получить идентификатор блога с типом ресурса getByUrl. Это полный пример с использованием моего блога и моего API:

https://www.googleapis.com/blogger/v3/blogs/byurl?url=http%3A%2F%2Fwww.ifaniqbal.com&key=AIzaSyDNkR52eSfObZi9BPKrTytbowOAM7Js9uY

Просто Ctrl + C в этом примере и Ctrl + V в вашем браузере, чтобы проверить это. Одним из возвращаемых полей этого примера является поле 'id', которое является идентификатором блога, который мы хотим (в JSON), например:

{
"kind": "blogger#blog",
"id": "7107469463017369923",
"name": "Ifan Iqbal",
"description": "Tips, Download, Resensi, Tutorial, Blog, Blogspot",
"published": "2012-02-28T23:54:48+07:00",
"updated": "2013-07-11T16:24:58+07:00",
"url": "http://www.ifaniqbal.com/",
"selfLink": "https://www.googleapis.com/blogger/v3/blogs/7107469463017369923",
"posts": {
 "totalItems": 161,
 "selfLink": "https://www.googleapis.com/blogger/v3/blogs/7107469463017369923/posts"
},
"pages": {
 "totalItems": 2,
 "selfLink": "https://www.googleapis.com/blogger/v3/blogs/7107469463017369923/pages"
},
"locale": {
 "language": "in",
 "country": "",
 "variant": ""
}

}

2 голосов
/ 13 января 2010

(я опубликовал оригинальный ответ, но изменил его, чтобы вместо него использовать Zend_Gdata).

Вот метод получения идентификатора блога.

<?php

$user = 'username';
$pass = 'password';

// I have to admit, I would normally use the autoloader
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_Query');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Feed');

$client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, 'blogger', null,
    Zend_Gdata_ClientLogin::DEFAULT_SOURCE, null, null,
    Zend_Gdata_ClientLogin::CLIENTLOGIN_URI, 'GOOGLE');
$gdClient = new Zend_Gdata($client);

/**
 * Get the blog ID
 * @param string $feed URL to blog feed or blog name
 *  Example:
 *   - http://googleblog.blogspot.com/feeds/posts/default
 */
function getBlogId($gdClient, $feed)
{
    // You could build the /feed/posts/default part yourself and just pass
    // googleblog.blogspot.com:
    // $feed = 'http://' . $feed . '/feeds/posts/default';
    $query = new Zend_Gdata_Query($feed);
    $feed = $gdClient->getFeed($query);
    preg_match('/blog-([0-9]+)/', $feed->id->text, $match);

    if (isset($match[1]))
    {
        return $match[1];
    }

    return false;
}

echo getBlogId($gdClient, 'http://sleeptalkinman.blogspot.com/feeds/posts/default');

Оригинальный ответ

Если вы пытаетесь получить информацию, вы должны просто заменить часть www.blogger.com и игнорировать идентификатор блога. Например, если вы пытаетесь найти все сообщения из http://dailyvim.blogspot.com/, вы должны использовать:

http://dailyvim.blogspot.com/feeds/posts/default

Вместо обычного URL, http://www.blogger.com/feeds/[blogID]/posts/default

Этот метод может также работать для публикации в блоге, если аутентифицированный пользователь имеет доступ для записи в него. Однако я не смог проверить это.

Получение идентификатора блога

Вы можете получить идентификатор блога из вышеуказанного канала, используя следующее:

$content = file_get_contents('http://sleeptalkinman.blogspot.com/feeds/posts/default');
preg_match('/<id>.*blog-([0-9]+)</id>/U', $content, $match);
print $match[1]; // Prints the blog ID

Получение идентификаторов сообщений для последних сообщений

Вы также можете получить последние сообщения из вышеуказанного канала (на этот раз я буду использовать SimpleXML):

$feed = simplexml_load_file('http://sleeptalkinman.blogspot.com/feeds/posts/default');
foreach ($feed->entry as $entry) 
{
    // I'm getting both the blog ID and post ID
    preg_match('/blog-([0-9]+).*post-([0-9]+)/', $entry->id, $match);
    print $match[2];

    // Now you can use the following URL with the blogger API
    $comment_feed_url = 'http://www.blogger.com/feeds/' . $match[1] . '/' . $match[2] . '/comments/default';
}
0 голосов
/ 18 сентября 2010

Похоже, вы также можете использовать URL блога, чтобы получить комментарии, попробуйте;

http://someusername.blogspot.com/feeds/comments/default

И вы можете получить все комментарии для данного поста аналогичным образом,а именно / feeds / xxxxxxxx / comments / default, где xxxxxxxx - это идентификатор сообщения.

И вы можете указать дату по дате, используя строку запроса? Опубликовал-мин = 2010-03-16T00: 00: 00 & Опубликовал-Макс= 2010-03-24T23: 59: 59

В качестве дополнительного примечания API-интерфейс Blogger может возвращать фид в формате JSON, а не XML, с чем мне было проще справиться, чем анализировать XML с помощью строки запроса? альт = * 1010 JSON *

0 голосов
/ 13 января 2010
$blog = "sleeptalkinman.blogger.com";

$username = split('\.', $blog)[0];

должен дать вам то, что вы ищете, если у вас есть URL, как указано выше.

...