Nano Hash - криптовалюты, майнинг, программирование

Blogger, Как изменить размер эскиза для «случайных» сообщений?

Blogger, как изменить размер этого внешнего изображения случайного сообщения

randompoststhumb = entry.content.$t.match(/\<img.+src\=(?:\"|\')(.+?)(?:\"|\')(?:.+?)\>/)[1];

например, с помощью функции 'resizeImage' в блоггере includable expr:bellow:

<b:includable id='feedPostImage'>
  <div class='snippet-thumbnail-container'>
	  <a expr:href='data:post.link ?: data:post.url'>
		<img expr:src='resizeImage(data:post.featuredImage, 280, &quot;280:152&quot;)'/>
	  </a>
  </div>
</b:includable>

<div id='random-posts'>
<script type='text/javaScript'>
var randomposts_number = 10;
var randomposts_chars = 0;
var randomposts_details = 0;
var randomposts_comments = 'Comments';
var randomposts_commentsd = 'Comments Disabled';
var randomposts_current = [];
var total_randomposts = 0;
var randomposts_current = new Array(randomposts_number);

function randomposts(json) {
    total_randomposts = json.feed.openSearch$totalResults.$t
}
document.write('<script type=\"text/javascript\" src=\"/feeds/posts/default?alt=json-in-script&max-results=0&callback=randomposts\"><\/script>');

function getvalue() {
    for (var i = 0; i < randomposts_number; i++) {
        var found = false;
        var rndValue = get_random();
        for (var j = 0; j < randomposts_current.length; j++) {
            if (randomposts_current[j] == rndValue) {
                found = true;
                break
            }
        };
        if (found) {
            i--
        } else {
            randomposts_current[i] = rndValue
        }
    }
};

function get_random() {
    var ranNum = 1 + Math.round(Math.random() * (total_randomposts - 1));
    return ranNum
};
</script>
<script type='text/javaScript'> 
function random_posts(json) {
    for (var i = 0; i < randomposts_number; i++) {
      var entry = json.feed.entry[i];
      var randompoststitle = entry.title.$t;
		
        if ('content' in entry) {
            var randompostsnippet = entry.content.$t
        } else {
            if ('summary' in entry) {
                var randompostsnippet = entry.summary.$t
            } else {
                var randompostsnippet = "";
            }
        }
        randompostsnippet = randompostsnippet.replace(/<[^>]*>/g, "");
        if (randompostsnippet.length < randomposts_chars) {
            var randomposts_snippet = '<div class="random-summary">' + randompostsnippet + '</div>';
        } else {
            randompostsnippet = randompostsnippet.substring(0, randomposts_chars);
            var whitespace = randompostsnippet.lastIndexOf(" ");
            var randomposts_snippet = randompostsnippet.substring(0, whitespace) + "&#133;";
            randomposts_snippet = '<div class="random-summary">' + randomposts_snippet + '</div>';
        }
	  
        for (var j = 0; j < entry.link.length; j++) {
            if ('thr$total' in entry) {
                var randomposts_commentsnum = entry.thr$total.$t + ' ' + randomposts_comments
            } else {
                randomposts_commentsnum = randomposts_commentsd
            } 
			if (entry.link[j].rel == 'alternate') {
                var randompostsurl = entry.link[j].href;
                var randomposts_date = entry.published.$t;
				if ('media$thumbnail' in entry) 
				{
					var randompoststhumb = entry.media$thumbnail.url
				} 
				else if ( entry.content.$t.match(/\<img.+src\=(?:\"|\')(.+?)(?:\"|\')(?:.+?)\>/))
				{
				  // how to resize this external image ?
				     randompoststhumb = entry.content.$t.match(/\<img.+src\=(?:\"|\')(.+?)(?:\"|\')(?:.+?)\>/)[1];
				  // like using 'resizeImage' function in blogger includable expr:
				  // randompoststhumb = resizeImage(randompoststhumb, 280, &quot;280:152&quot;)
				} else {
					randompoststhumb = "http://3.bp.blogspot.com/-5SoVe1K6JSk/Utl0OOmucAI/AAAAAAAAF6E/hQghgD_EJdQ/s1600/no_thumb.png"
				}
            }
        }
        document.write('<div class="randomPost">');
        document.write('<a href="' + randompostsurl + '" rel="nofollow">' + '<span class="imgf"><span src="' + randompoststhumb + '"></span></span>' + randompoststitle + '</a>');
        if (randomposts_details) {
            document.write('<span><div class="random-info">' + randomposts_date.substring(8, 10) + '.' + randomposts_date.substring(5, 7) + '.' + randomposts_date.substring(0, 4) + ' - ' + randomposts_commentsnum) + '</div></span>'
        }
        if (randomposts_chars) {
			document.write(randomposts_snippet);
        }
		document.write('</div>');
    }
}
getvalue();
for (var i = 0; i < randomposts_number; i++) {
    document.write('<script type=\"text/javascript\" src=\"/feeds/posts/default?alt=json-in-script&start-index=' + randomposts_current[i] + '&max-results=1&callback=random_posts\"><\/script>')
}
</script>
</div>


Ответы:


1

В этом случае лучше использовать сервис Google для изменения размера изображения на лету. Как объяснил Карло Зоттманн (https://stackoverflow.com/users/333272/carlo-zottmann) в https://czm.io/posts/2013/04/google-image-resizer/ API выглядит следующим образом:

Базовый URL

https://images1-focus-opensocial.googleusercontent.com/gadgets/proxy

Параметры:

  • URL-адрес: исходный URL-адрес изображения

  • контейнер: должен быть «фокус»

  • Refresh: время (в секундах) для кэширования на серверах G.

  • resize_w: ширина в пикселях

  • resize_h: высота в пикселях. Вы можете указать оба

  • параметры resize_* или только один.

Вам нужно будет изменить следующий блок кода -

// how to resize this external image ?
randompoststhumb = entry.content.$t.match(/\<img.+src\=(?:\"|\')(.+?)(?:\"|\')(?:.+?)\>/)[1];
// like using 'resizeImage' function in blogger includable expr:

с -

// how to resize this external image ?
randompoststhumb = entry.content.$t.match(/\<img.+src\=(?:\"|\')(.+?)(?:\"|\')(?:.+?)\>/)[1];
randompoststhumb = 'https://images1-focus-opensocial.googleusercontent.com/gadgets/proxy?url=' + randompoststhumb + '&container=focus&resize_w=300&resize_h=300&refresh=2592000';
// like using 'resizeImage' function in blogger includable expr:

Поскольку мы не можем использовать оператор resizeImage в этом случае, вы также можете использовать тот же API для изменения размера изображений, загруженных в Blogger. Вам нужно будет заменить -

var randompoststhumb = entry.media$thumbnail.url

с -

var randompoststhumb = entry.media$thumbnail.url.replace("s72-c", "s0").replace("/default.jpg","/hqdefault.jpg");
randompoststhumb = 'https://images1-focus-opensocial.googleusercontent.com/gadgets/proxy?url=' + randompoststhumb + '&container=focus&resize_w=300&resize_h=300&refresh=2592000';

Поскольку это недокументированный API, мы не можем быть уверены в его доступности в будущем (из-за того, что это связано с социальной сетью Google+, которая закрывается в апреле 2019 года). Существует несколько платных альтернатив службам изменения размера изображений на лету (например, https://kraken.io/docs/image-resizing) и самостоятельные (например, https://github.com/jimmynicol/image-resizer)

23.02.2019
  • Большое спасибо, Праяг. 25.02.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..