Это снова время года, когда все в Instagram публикуют свой #Top9. Я тоже хотел одного, но я не доверяю тому, какому приложению люди подлинны своими учетными записями в Instagram, потому что оно разделяет больше с третьей стороной, чем я хочу сделать. (TL; DR: используйте скрипт в This Gist )
К счастью, быстрый гугл привел меня к IGRAMSCRARAPER
Библиотека Python
Затем первым шагом было использование его get_medias
Функция:
posts = instagram.get_medias("_schep", 50) # use your account of course!
Затем нам нужно отфильтровать только на фотографии этого года и сортировать по лайках и взять ведущую 9. Для этого мы используем стандартную библиотеку DateTime
Модуль, понимание списка, отсортировано
и ломтик, чтобы ограничить результат до 9.
this_year_photos = [ post for post in posts if datetime.fromtimestamp(post.created_time).year == 2019 and post.type == post.TYPE_IMAGE ] top9 = sorted(this_year_photos, key=lambda post: -post.likes_count)[:9]
Теперь у нас есть список ваших 9 самых любимых фотографий 2019 года! Затем нам нужно загрузить их и создать ваше изображение Top9. Для этого мы используем популярное Запросы
и Подушка
Библиотеки:
img = Image.new("RGB", (1080, 1080)) # create the new image for post in top9: # download and open the image tile = Image.open(requests.get(post.image_high_resolution_url, stream=True).raw) # resize the image tile = tile.resize((360, 360), Image.ANTIALIAS) # paste it into our new image img.paste(tile, (i % 3 * 360, i // 3 * 360))
Призыв к img.paste
немного тупо. Я использую оператора Modulo ( %
), чтобы определить, в каком столбце находится изображение, а затем умножение на размер изображения и используя оператор деления пола ( //
) для определения строки.
Тогда мы сохраняем это!
img.save("my-top9.jpg")
Если у вас есть не квадратные изображения в вашей лучшей 9, вы можете заметить, что они деформированы. Чтобы справиться с этим, мы обрезаем нашу плитку перед тем, как изменить ее:
if tile.size[0] > tile.size[1]: tile = tile.crop( ( (tile.size[0] - tile.size[1]) / 2, 0, (tile.size[0] - tile.size[1]) / 2 + tile.size[1], tile.size[1], ) ) elif tile.size[0] < tile.size[1]: tile = tile.crop( ( 0, (tile.size[1] - tile.size[0]) / 2, tile.size[0], (tile.size[1] - tile.size[0]) / 2 + tile.size[0], ) )
🎉 Мы только что создали наше собственное изображение Top 9 без необходимости аутентификации вашей учетной записи с помощью 3 -го приложения IG Creep!
Проверьте полный исходный код для простой в использовании версии этого сценария в этой сути:
Оригинал: “https://dev.to/dschep/creating-an-ig-top-9-without-using-creepy-3rd-party-apps-4ga8”