Facebook-to-Worpress | 29 апреля 2024 года, 18:35

Опубликовал подробную статью про миграцию с Facebook на WordPress с одновременным переводом с русского на английский + миграцию архива в несколько тысяч постов, также с их переводом.

https://hybrismart.com/2024/04/29/cross-posting-from-facebook-to-my-rus-and-eng-wordpress-blogs-technical-details/

RaufAliev.com | 29 апреля 2024 года, 06:15

Пока ехал домой вечером придумал интересный проект, и вот в два часа ночи его закончил. Теперь у меня есть англоязычный блог — RaufAliev.com. Все посты на нем — автоматически переведенные из Facebook, которые, как я писал пару дней назад, публикуются также на beinginamerica точка com.

Перевод архива занимает время (и совсем слегка ест $$$), и пока на 2 часа ночи переведено за последние два года, но процесс еще продолжается, и в ближайшее время, я надеюсь, будет переведены все 5000.

Некоторые технические подробности: перевод через ChatGPT-4. Весь контент выгружается в файл, по одной строке на пост. Впереди каждого поста стоит вот такой префикс (2024-04-22T07:59:18.json). Далее этот файл нарезается на фрагменты не более X килобайт каждый (я выбрал 10). Далее отправляется на OpenAI API с промптом «Translate to English preserving my style and keeping the HTML markup. Each line starts with a json filename in parentheses. Your output should be formatted in the same way — each line should be started with the same, but the text should be translated to English. Below is the text». Результат записывается в файл с переводом. Далее прогоняю тот же скрипт, который создавал у меня Facebook-записи в beinginamerica, но публикую теперь на другой wordpress-сайт, и использую переведенный контент, вместо оригинального.

Кроме этого, я подключил сервис linkpreview API для того, чтобы вытягивать картинку и title по ссылке, если она есть в посте, получается симпатичнее. Вот к этому посту на raufaliev.com должны вытянуться Hi, I’m Rauf Aliev.

Отдельный скрипт у меня переносит новые посты. Вот этот например, его же нет в архиве, который я делал неделю назад. У Facebook JSON последних постов имеет слегка другую структуру, но плюс-минус тоже самое. Вытягиваем последние посты, смотрим, есть ли там картинки, если есть, скачиваем их, смотрим, не закачивали ли на beinginamerica, если нет, закачиваем, далее смотрим, не опубликовали ли ранее пост на beinginamerica, если нет, публикуем, далее переводим на английский с помощью OpenAI, далее делаем красивее ссылки с помощью LinkPreview API, далее смотрим, не закачивали ли еще на английский сайт. Если нет — закачиваем.

I’m Rauf Aliev.
http://raufaliev.com/

Ушедшие вещи | 28 апреля 2024 года, 14:31

Кстати, не задумывались, сколько вещей тихо так исчезли из жизни не потому, что вышло что-то лучше, а просто потому что хайп ушел или просто непонятно почему?

Помните, были кроссовки на колесиках или светящиеся кроссовки? Когда вы последний раз слышали слово рингтон? Многие из вас заряжают пальчиковые аккумуляторы? Когда вы последний раз скачивали mp3? Когда вы покупали последний раз часы — любые кроме смарт watches? Я еще понял, что я почти не добавляю в адресную книжку телефона каких-либо контактов, да и, честно говоря
, понятие «городской телефон» даже в США почти исчезло — всем звонишь или на мобильный, или на мессенджер, или это колл-центр.

У меня последние 8 лет как минимум почти никогда нет наличных денег. Наверное, я шариковую ручку держу в руках чуть чаще, чем наличные — наверное, где-то несколько раз в год.

Понятно, что ^^^^ очень индивидуально и территориально.

Daniel Gerhartz Art | 28 апреля 2024 года, 00:50

(ENG below) Сегодня знакомлю вас с американским художником Daniel Gerhartz. Напоминаю, что по тегу можно увидеть более 30 подборок «какое искусство мне нравится»

#artrauflikes

Today I would like to show you the works of a great American artist Daniel Gerhartz. Remember, you can see more than 30 collections under the tag

#artrauflikes

Как продавать на фейсбуке | 27 апреля 2024 года, 23:48

Какая простая и эффективная бизнес-идея. Генеришь на один дизайн кучу вариантов, на разные имена, например, RAUF, и рекламируешь с таргетингом на всех владельцев таких имен, и точно получаешь как минимум внимание, а как максимум заказ. Например, на сайте со скриншота 4.5 млн товаров. Дальше дело за малым — сделать кастом принт и выслать, деньги уже получены, а индустрия кастом принтов на одежде давно сформировалась, не говоря уже о массовых отгрузках и доставке. Из начальных вложений — только реклама на ФБ и сайт. Судя по тому, что периодически там рекламируется, цена не космические.

Мигрировался с Facebook на свой блог | 27 апреля 2024 года, 18:09

Помните, меня достал фейсбук с тем, что не может нормально искать по моим постам и корректно фильтровать по тегам? Ну программист я или кто — я просто взял и перенес 5787 постов вместе с фотографиями к ним на beinginamerica.com через API фейсбука и API WordPress-а.

Этот путь кстати тернистый. Фейсбук предоставляет API для доступа к постам, но при этом накладывает лимит в 200 обращений в час, и этот API просто не работает на моем фейсбуке. Не работает он потому, что я когда-то перевел фейсбук в «профессиональный режим», а на нем не работает часть API (документировано). Но вот этот, с получением постов, должен работать. Но он тоже не работает. В интернетах пишут, что нужно отключить профессиональный режим и все заработает. А мне не хочется отключать, потому что непонятно, какая процедура включения его обратно. И я пошел другим путем — я затребовал у фейсбука выгрузку всего архива. Это занимает около 3 дней, дальше дается неделя на скачать архив.

В этом архиве есть JSON-коллекция. В ней вся кириллица представлена в ДВУХ кодировках. Первая кодировка выглядит так — \u00d0\u009e\u00d1\u0082\u00d0\u00ba\u00d1\u0080\u00d1\u008b\u00d1\u0082\u00d0\u00b8\u00d0\u00b5 . Вторая кодировка выглядит так: наÑ�одка. То есть, они изначально обе выглядят как первое, только после перевода из юникода в одном случае получается нормальный текст, а в другом — требующий еще дополнительного раскодирования из ISO-8859-1. Ну с этими двумя манипуляциями в целом архив парсится нормально.

Но что делать с новыми постами, которые появляются после выгрузки архива? Для них же не работает API на проф аккаунте. Там хитрость /me/feed действительно не работает (выдает Permissions error, New Pages Experience Is Not Supported, This endpoint is not supported in the new Pages experience). Но вот /me?fields=feed выдает отдельные посты с их айдишниками, и по айдишникам можно запросить детали. В целом, это выход. Если надо запросить последние 100 постов, то будет работать /me?fields-feed.limit(100). Но бесконечно так нельзя, там можно максимум 100. Но этого достаточно, потому что архив я уже перенес, а это нужно для новых постов с момента запуска предыдущий раз. Там можно limit поставить условно 10.

Отдельной сложностью является то, что дата изменения и дата создания любого поста в выгрузке архива JSON почему-то не совпадают с датами изменения и создания того же поста, когда получаешь его через API. В итоге, появляется проблема с тем, как понять, что пост уже существует. Ведь нет уникального ID и там, и там. Пока это не проблема, потому что у меня есть понятная отсечка — до вчера все посты пришли из архива, со вчера и дальше в будущее приходят только из API.

Дальше как это перенести в wordpress. У меня он БЕСПЛАТНЫЙ. То есть там лимит в 1Гб по плану, но почему-то интерфейс показывает, что можно загрузить 3Гб медиа. Выгрузку из Facebook можно сделать, указав качество изображений. Основная масса (картинки для моих 5000 постов — понятно, что картинки не везде) заняла только 15% от 3Гб. Новые же картинки идут с полным разрешением. Но wordpress справляется с их ужатием на этапе отображения.

В итоге пост вордпресса состоит из HTML, состоящего из
— контента без тегов от facebook — я автоматом расставляю

— плюс ссылка A HREF если к посту прицеплена ссылка
— плюс набор img если к посту прицеплены картинки

API wordpress позволил мне создавать и редактировать посты массово. Поэтому я просто проходил циклом по выгрузке Facebook и создавал посты в WordPress.

Не перенес видео. Во-первых, их надо сначала куда-то загрузить, а потом создать в wordpress пост с интегрированным плейером. Это несложно, надо когда-нибудь заморочиться.

Еще загрузка автоматическая на wordpress иногда уходит в таймаут бесконечный, и скрипт приходится перезапускать. На 5000 постов ушло где-то 20 перезапусков. Но в целом можно было бы это автоматизировать.

WordPress имеет в целом неплохой поиск. Все, что мне нужно, нахожу влет. Теперь проблемы с поиском по постам нет. В платной версии WordPress можно ставить плагины для массового теггирования, но у меня API есть и JSON со всем архивом на компе, я в целом могу сделать тоже самое через API и через обработку этого JSON. Например, если мне понадобится все посты про английский язык пометить тегом «английский» или поместить в категорию «английский», я могу одним скриптом выбрать посты из JSON, а вторым проапдейтить соответствующие посты в wordpress. У каждого поста title соответствует дате, так что это несложно.

Отдельная проблема с постингом галереи — когда есть несколько картинок, и хочется сделать так, чтобы в вордпрессе они были кликабельные и раскрывались на весь экран, а в посте были превьюшки. В этот раз проблема с WordPress. Там есть API по созданию постов, но он ненормально поддерживает галерею. Как ее создавать через API вообще недокументировано, но туда можно бросать HTML, симулирующий тот, что получается, если галерею создать, а потом запросить у WordPress пост через API. В этом посте есть специальные теги figure, и если их эмулировавать при создании нового поста, то даже получается что-то, но, к сожалению, некликабельно. Разбираюсь еще можно ли это починить, но, похоже, не очень можно.

https://beinginamerica.com/

25 апреля 2024 года, 13:42

(ENG below) Сегодня — английский художник Геральд Грин (1947). Он — мастер по интерьерам. У него есть еще несколько десятков портретов, но внимания заслуживают, на мой взгляд, разнообразные углы комнат и улочек. У них у всех есть главные герои. Зонтик, швейная машинка, вазочка на столе, шляпа. Кстати, чтобы стать запоминающимся художником, нужно просто делать очень малое очень хорошо, и последовательно вырабатывать узнаваемый стиль, чтобы вскоре именно в нем быть номером один. Посмотришь на любую картину Геральда Грина — и сразу понятно кто ее автор. На самом деле фокусировка на одной теме полезна в любом виде деятельности, но в искусстве это просто пропуск в мир.

#artrauflikes

(ENG) Today let me introduce an English artist, Gerald Green (born 1947). He is a «master of interiors». He also has several dozen portraits, but in my opinion, the diverse angles of rooms and streets deserve attention. Each of them has main characters: an umbrella, a sewing machine, a small vase on the table, a hat. By the way, to become a memorable artist, one just needs to do a very small thing very well and consistently develop a recognizable style, to soon be number one in that style. When you look at any painting by Gerald Green — you immediately know who the artist is. Indeed, focusing on one theme is useful in any type of activity, but in art, it’s simply a pass into the world.

#artrauflikes

24 апреля 2024 года, 18:15

В нашей местной газете объявление по поиску программистов и аналистов. Я предполагаю, что это часть процесса H1B, когда формально нужно показать контролирующим органам, что на определённые требования и рамки на локальном рынке мозгов недостаточно и есть основание в том, чтобы дать h1b визу какому-нибудь иностранцу (типа меня девять лет назад).

Интересно, а как они тогда хандлят ситуацию «прибежало что откликов»? По уму, если они подходят, им придётся нанять кого-то из них, а чувак с h1b заявкой будет в пролёте. Но как-то видимо так формулируют требования, что не подходит никто местный. Но собеседования они должны проводить точно. Иначе DOL не примет заявку. Поэтому странно, что конкретики мало. По уму должны фигурировать типа 20 лет опыта в rust в digital products e-commerce или что-то типа.

Кстати, зацените грамматику, когда оплата за буквы

Cds, tsts, dbgs, impimnts, and demnts prgrms. Assts in the mdfctn of cmpny practs and/or cstmr/intrl systms to meet the needs of the cint and/or ends. Gthrs into frm the systm, aniyzs prgm and time qurmnts, and prprs demnin to chnge exsing prgms

На втором скриншоте набирают программиста. Вот все требования (вообще все):

Write, Collabrte, Implmnt, Crct, bug, Create & updte code libraries.

Зарплата 114К в год (gross, конечно)

Ракета, ошибка, смерть: загадочная история с Протон-М | 24 апреля 2024 года, 09:12

В 2013 году Роскосмос решил сделать прямую трансляцию запуска Протон-М, ракеты красиво взорвалась в воздухе и упала в казахстанскую степь с полными баками ядовитого топлива. Позже выяснили, что причина была в установке вверх ногами одного датчика. Виновным назначены электромонтажник и контролёр, и обвинён по статье халатность Марат Насибулин.

Так вот, сегодня узнал, что выехавший сразу после аварии на место падения директор Роскосмоса Владимир Поповкин получил тогда сильное отправление компонентами топлива просто находясь неподалёку от места падения (очевидно, он не разбирал завалы), и умер от онкологии.

Интересно, что за 11 лет нет никакой информации что стало с обвиненным по статье халатность Маратом Насибулиным.

А РБК выходит со статьёй, что гептил не такой уж и ядовитый.