VK API: загрузка изображения на стену. Рабочий код на PHP7 + cURL

Публикую просто чтобы не потерялось.

Если хорошо попросите и если я не забуду, оформлю полноценный репепт публикации постов с твоего сайта на страницу пользователя, с прикреплением фотографии. Когда твоё приложение в ВК зарегистрировано как веб-сайт, а не Stand-alone приложение.

Пока тут только серверная часть. Она большого труда не составляет.

Забудь всё, что ты видел о загрузке фотографий через curl. Я двое суток ебал мозги с целью выяснить почему я делаю так, как говорили когда-то и говорят до сих пор (например, про @ перед именем загружаемого файла, например, что уже неактуально для PHP >= 5.5)…. и почему при успешном запросе к серверу фотографий, ВК мне отдаёт пустой photo = []

Будем считать, что у тебя уже есть ID приложения и ты получил жизненно важный access_token. Конкретно в контексте данного поста не играет роли, является ли твоё приложение веб-сайтом или Stand-alone. Механизм на сервере один.

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

Музыка из «ВКонтакте» через AIMP

Обновлено 14.07.15: Некоторый анонимный человек подкинул вот эту ссылку и сразу же свой комментарий удалил. Советую изучить и этот способ прослушивания, там меньше геморроя и больше плюшек.
Однако, в качестве, так скажем, самообразовательных целей данная статья тоже окажется полезной.

Как вы все знаете (что несомненно, конечно же), скачать любую аудиозапись из «ВКонтакте» — раз плюнуть, даже без помощи каких-либо сторонних сервисов и специализированных программ. Разве что, может понадобиться менеджер закачек, потому что если в адресной строке браузера стоит ссылка на MP3-файл, то в большинстве случаев он не скачается, а начнёт воспроизводиться прямо в браузере. Но это другая история, сейчас не о том.

Так вот, слушая любимую музыку на своей страничке, меня катастрофически, абсолютно никак не устраивало качество звучания. Эквалайзер в моём AIMP, по-моему, настроен просто идеально для трансовой электроники. Что делать: слушать потоковое радио или скачанные композиции в AIMP, или слушать другие, которых нет на винчестерах и не всегда попадаются в радиоэфирах, однако безо всяких настроек эквалайзера?
Я даже не мог подумать раньше, что выход будет настолько простым.

Описанное ниже желательно производить с какими-нибудь длинными треками (миксы по часу и дольше), чтобы не бодаться с добавлением всего сочного в плейлист, это займёт много времени для каждой песенки.
Скриншоты кликабельны.
0) Открываем окно (или страницу) со списком аудиозаписей. Вообще, любое место, где есть аудиозапись.
1) Тычем на аудиозапись ПКМ и выбираем «Просмотр кода элемента» (или что-то подобное в браузере, отличном от GChrome):

2) Далее видим код страницы в древовидном, простите, виде. Вот что нас тут интересует:

Обратите внимание: URL аудиозаписи содержит помимо адреса самого файла ещё и параметр ?extra=многобуквицифр. Так вот, скопировать нужно именно путь к файлу, до знака «?», не включая его и всё, что за ним (специально чётко выделил это на скриншоте).
3) В AIMP нажимаем Ctrl+U, открывается окно добавления в плейлист ссылки на потоковое аудио:
4) Нажимаем OK и Play. Песня прямиком с сервера «ВКонтакте» проигрывается в моём плеере с моими настройками эквалайзера. Можем посмотреть некоторую информацию о сервере-источнике (F4 в AIMP):

5) Активно оргазмируя, вы можете включить запись радиовещания (которую вы, конечно же, заранее настроили в AIMP), таким образом песня скачается на винчестер.

Если используете какой-то сторонний скин для плеера, то лучше использовать контекстное меню трей-контрола или значка в трее, чтобы попасть в настройки.

Ещё несколько важных моментов

1) Перемотка трека работает, но поскольку в AIMP не отображается состояние буфера в полосе «перемотки», то непонятно в каких пределах можно прокручивать. Назад-то можно точно, но если слишком далеко ткнёте вперёд, то перемотка, естественно, не происходит, потому что эта точка воспроизведения ещё не загрузилась.

Не надо думать, что перемотка вперёд сработает в том случае, если песня не прогрузилась. В лучшем случае, перемотки не произойдёт, а воспроизведение слегка запнётся.

2) Длительность трека отображается в минутах и корректно. Но почему-то только в окне плеера. Если нажать F4, то там длительность будет = 00:00 (см. скриншот п.4).

3) Надо понимать, что такое прослушивание музыки не означает, что текущий трек будет светиться на вашей страничке во «ВКонтакте» под вашим именем. Это просто буферизация и воспроизведение самого MP3-файла, не более и не менее.

4) Чего-то удивительного тут действительно нет: это стандартный функционал плеера + нужная информация из исходника страницы.

5) Это запросто может, да и наверняка будет работать в других плеерах на других ОСях. Пробуйте.

Добавлено 13.07.15 20:15

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

Может получиться так, что индикация записи будет в плеера видна: в стандартном скине плеера, кнопка, изображённая под курсором на последнем скриншоте, мигает. Она будет продолжать мигать, но по факту файл не будет увеличиваться в размере.

И здесь не надо пугаться. Всё хорошо. Возможно, файл уже скачан полностью, а в таком случае нет нужны дослушивать онлайн-поток.

* * *
И ведь, казалось бы! Всё так просто и очевидно. Все средства лежат на поверхности, но вовремя догадаться как их использовать — как всегда, не получается.
Всем добра.

Собственный «облачный» сервис заметок + файловый сервис

Думаю, многие из нас и из вас проводят во Вконтакте довольно много времени. Подписок достаточно, чтобы на твоей главной странице лента представляла собой ежедневный и бесконечный поток контента. Естественно, как полезного и интересного, так и совсем противоположного. Последнее решается просто — фильтрацией (если всё же не хочется удалять какого-то человека из друзей, например). А то, что ты считаешь полезным и интересным, на самом деле может быть точно также отфильтровано кем-то, кто подписан на тебя. Порой хочется сохранить запись у себя на странице, что называется, «чтобы не потерять». Однако стоит лишь представить тот факт, что другим такие записи уже давно осточертели, и сразу понимаешь, что такой контент (явно нацеленный на массовый репост) — уж точно последнее, что ожидают от тебя твои друзья.

Идея проста. Можно создать собственный блокнот внутри Вконтакте. Это имеет много неоспоримых плюсов. Тем более полезным это будет для тебя, чем больше времени (по нужде, по привычке или от безделья) ты проводишь в соцсети:

  • позволяет сэкономить время на сохранении ссылки на понравившийся тебе контент;
  • единый аккаунт для личной страницы и для такого блокнота — конечно, нет нужды в регистрации где-то ещё;
  • простое сохранение информации в блокноте — через кнопку «Поделиться»;
  • возможность коллективной работы;
  • возможность хранения любых документов и любого мультимедиа-контента внутри блокнота с качественным разделением по типу (аудио, видео, фото и т.д.);
  • как следствие — бесплатный «облачный» файловый сервис без ограничений дискового пространства;
  • нет нужды в установке софта (разве что только официальное мобильное приложение), ведь всё работает через любой браузер на любом устройстве;
  • дальше придумай сам 🙂
Когда-то я использовал Evernote. Но это такой страшный и тяжёлый монстр, который создан специально для заметок. Сами заметки как явление (вторая память) не стоят того, чтобы строить для этого такие огромные, распиаренные и неудобные сервисы. Да ещё и с какими-то платными функциями.
Есть Google Keep. Он прост, не требует абсолютно никаких настроек, Android-приложение максимально нацелено на быстрое сохранение чего-либо. Но не все знают как использовать его на ПК, например. А может кому-то завести аккаунт Google мешает паранойя, религия или что-нибудь ещё.
Плюс встаёт необходимость запоминать ещё одну пару логин/пароль, и это касается даже любого подобного сервиса, не только упомянутых выше. А ведь у многих сейчас основной аккаунт именно во Вконтакте. Ну так почему бы не использовать именно то, что находится прямо под носом и предоставляет даже больший и лучший функционал?
После этого абзаца ты сразу всё поймёшь, скажешь «Ну и нахрена такая долгая прелюдия?!», пфффыкнув, закроешь эту страницу, немного погодя придёт мысль «…а ведь и правда…» и ты пойдёшь реализовывать эту идею 🙂 Но я всё же предлагаю дочитать мои рекомендации.
Итак, друзья, всё элементарно. Создаём новое сообщество. Название и адрес уж придумаете сами, но учтите, что это всё же сообщество, и оно будет светиться после репоста (на счётчике репостов оригинального топика). Тип группы обязательно должен быть «Частная» чтобы ты сам полностью контроллировал и самолично предоставлял избранным доступ к содержанию.
Остальные настройки по желанию, в зависимости от того, чот планируется там хранить. Я делал так:

Такие параметры позволяют не заморачиваться с написанием от имени группы, не лишают возможности комментирования и что важно при коллективной работе — никого ни в чём ограничивать, чтобы работать на равных и свободно обмениваться идеями.
Навигация по материалам осуществляется элекементарно — тегами формата #tag@mynotes. Естественно, здесь всплывает порой весьма ощутимый нюанс: при репосте надо обязательно вручную приписывать такие теги (котоорые могут оказаться и довольно длинными!), причём сразу (т.к. после определённого промежутка времени редактирование записи становится невозможным и приписать тег «как-нибудь потом» уже не получится). Но пойми, в этом вся и фишка. Только так можно разметить все заметки по важности/назначению/теме/срочности, а иначе вся навигация сведётся к тупому скроллингу. 
Например, тег #TODO@mynotes в записи будет означать, что надо выполнить указанную задачу. Лайк под этим постом — и задача выполнена. В группе с другими тегами можно выжать буквально всю мощь из одной лишь стены. А есть ещё и обсуждения, и страничка с wiki-вёрсткой и много чего ещё.
Для чего нужны обсуждения, думаю, пояснять не стоит. Но в частном случае, когда сообщество представляет собой только личный блокнот для одного человека, их можно использовать как папку для каких-то закладок (ссылки на страницы, статьи, сайты, чьи-то профили и сообщества).
Ещё один важный нюанс касательно частности группы. Такой тип позволяет репостить записи только кому-то в личку, не на свою страницу и не в другое сообщество. Только личным сообщением. Даже если вы втроём работаете над каким-то проектом или сохраняете интересности в своём тесном кругу, то администратор группы один чёрт только ты 🙂
Фотографии и видео со смартфона можно выгружать туда. Заодно рассортируешь по альбомам и высвободишь немного памяти смартфона.
Не смотря на очевидные плюсы, минус один и весьма существенный. Для некоторых всё же безопасность дороже удобства и он может перевесить всё указанное. Минус как раз в том и кроется, что если кто-то завладеет твоим ВК-аккаунтом (по доверию, например, своей девушке/парню, или в результате банального взлома), то есть огромный риск, что всеми твоими планами на послезавтра, откровенными фотографиями, явками и паролями завладеет третье лицо, а то и весь интернет. Так что если взялся за такое дело, то сначала прими какие-то меры безопасности. Сделать сложнее пароль, привяжи страницу к мобильнику (не будь занудой, твой номер мобильника в интернете никому не нужен, а в данном случае предоставить его в твоих же интересах), смени пароль на email и его тоже привяжи к телефону (если есть контрольный вопрос, то и его настрой внимательно: воспомни, указана ли в твоей анкете твоя мама под девичьей фамилией). Вообще, это стандартные меры безопасности, которые должен предпринимать любой. Сделай это в любом случае, даже если тебе плевать на всю эту затею с заметками.
Скажешь, мол, так ведь всё это очевидно, для этого и задумывались частные группы! Да нифига подобного. Я подумал об этом всём только сегодня днём, а к вечеру уже реализовал.

А ты лично догадывался использовать именно такой подход именно для организации личных дел?

P.S. Вообще, если ты такой нерд, то юзай листочек и ручку. Никогда не подводит. Если ты ещё и параноик, то листочек вообще-то и сжечь можно 🙂