{"id":18879823,"url":"https://github.com/gusenov/vk-sh","last_synced_at":"2026-04-09T21:03:46.256Z","repository":{"id":130182187,"uuid":"101032603","full_name":"gusenov/vk-sh","owner":"gusenov","description":"Shell-скрипты для автоматизации действий ВКонтакте.","archived":false,"fork":false,"pushed_at":"2018-10-20T16:54:10.000Z","size":23,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-05-31T06:37:06.171Z","etag":null,"topics":["bash","bash-script","bash-scripting","curl","jq","shell","shell-script","shell-scripting","shell-scripts","sponge","vkontakte","vkontakte-api"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gusenov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-08-22T07:07:59.000Z","updated_at":"2018-10-20T16:54:12.000Z","dependencies_parsed_at":"2023-03-20T18:32:09.147Z","dependency_job_id":null,"html_url":"https://github.com/gusenov/vk-sh","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gusenov/vk-sh","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gusenov%2Fvk-sh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gusenov%2Fvk-sh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gusenov%2Fvk-sh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gusenov%2Fvk-sh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gusenov","download_url":"https://codeload.github.com/gusenov/vk-sh/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gusenov%2Fvk-sh/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266680319,"owners_count":23967791,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-23T02:00:09.312Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bash","bash-script","bash-scripting","curl","jq","shell","shell-script","shell-scripting","shell-scripts","sponge","vkontakte","vkontakte-api"],"created_at":"2024-11-08T06:39:42.211Z","updated_at":"2026-04-09T21:03:41.205Z","avatar_url":"https://github.com/gusenov.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Shell-скрипты для создания фотоальбома в группе\n\n## [web-photos-new-album.sh](web-photos-new-album.sh)\n\nСкрипт для создания нового фотоальбома в группе через API использующийся на веб-страницах ВКонтакте.\n\n*Зависимости:* curl, pcregrep\n\n*Входные данные:*\n\n| Длинная опция | Короткая опция | Описание                                                       |\n| ------------- | -------------- | -------------------------------------------------------------- |\n| --group_id    | -g             | Идентификатор группы в которой нужно создать новый фотоальбом. |\n| --title       | -t             | Заголовок для нового фотоальбома.                              |\n| --remixsid    | -r             | Значение cookie-параметра **remixsid**. Нужно для доступа.     |\n\n*Выходные данные:*\n\nЕсли всё в порядке, то скрипт выводит с помощью команды **echo** идентификатор созданного фотоальбома:\n\n```bash\n$ ./web-photos-new-album.sh --group_id=123456789 --title=\"Название\" --remixsid=56d6e73gd04118606eed8f9f7899g487fd17dfd82bf80c43e565b\n247709439\n$ ./web-photos-new-album.sh -g=123456789 -t=\"Название\" -r=56d6e73gd04118606eed8f9f7899g490fd17dfd82bf80c43e565b\n247709498\n```\n\nВ случае ошибок скрипт осуществляет пустой вывод:\n\n```bash\n$ ./web-photos-new-album.sh -g=987654321 -t=\"Название\" -r=56d6e73gd04118606eed8f9f7800g490fd17dfd82bf80c43e565b\n\n\n```\n\n## [api-photos-create-album.sh](api-photos-create-album.sh)\n\nСкрипт для создания нового фотоальбома в группе через официально предоставляемый API ВКонтакте.\n\n*Зависимости:* curl, jq, sponge\n\n*Входные данные:*\n\n| Длинная опция | Короткая опция | Описание                                                       |\n| ------------- | -------------- | -------------------------------------------------------------- |\n| --group_id    | -g             | Идентификатор группы в которой нужно создать новый фотоальбом. |\n| --title       | -t             | Заголовок для нового фотоальбома.                              |\n| --description | -d             | Описание для нового фотоальбома.                               |\n| --access      | -a             | Ключ доступа - токен.                                          |\n| --output      | -o             | Имя результирующего файла или путь к нему.                     |\n| --interval    | -i             | Тайм-аут между обращениями к API ВКонтакте.                    |\n\n*Выходные данные:*\n\nВыходные данные добавляются в указанный JSON-файл. Это обязательно должен быть файл в формате JSON.\n\n```bash\n$ ./api-photos-create-album.sh --title=\"Название\" --description=\"Описание\" --group_id=123456789 --output=\"VKontakte-albums.json\" --interval=5 --access=51eff86578a3bbbcb5c7043a122a69fd04dca057ac821dd7afd7c2d8e35b60172d45a26599c08034cc40a\n$ cat VKontakte-albums.json\n{\n  \"Название\": {\n    \"response\": {                                                                                                                 \n      \"aid\": 247721602,                                                                                                           \n      \"thumb_id\": 0,                                                                                                              \n      \"owner_id\": -123456789,\n      \"title\": \"Название\",\n      \"description\": \"Описание\",\n      \"created\": 1503416055,\n      \"updated\": 1503416055,\n      \"privacy\": null,\n      \"comment_privacy\": null,\n      \"size\": 0,\n      \"can_upload\": 1\n    }\n  }\n}\n```\n\nВ результате **aid** - это идентификатор нового альбома, а **owner_id** будет таким же как и аргумент переданный через опцию **--group_id** (или **-g**, если в коротком в варианте).\nНовый альбом будет доступен по адресу https://vk.com/album-123456789_247721602.\n\n# Вопросы и ответы\n\n## Как получить токен ВКонтакте?\n\nОткройте новую вкладку в браузере и введите в адресную строку следующий URL:\n\n```\nhttps://oauth.vk.com/authorize?client_id=5791134\u0026display=page\u0026redirect_uri=https://oauth.vk.com/blank.html\u0026scope=photos\u0026response_type=token\u0026v=5.52\n```\n\nЧисло *5791134* в запросе - это **API_ID** приложения [vk-sh](https://vk.com/app5791134).\n\nНажмите Enter. Откроется окно с запросом прав. В нем отображаются название приложения, иконки прав доступа, и ваши имя с фамилией.\n\nНажмите «Разрешить». Вы попадёте на новую страницу с предупреждением о том, что токен нельзя копировать и передавать третьим лицам. В адресной строке будет URL https://oauth.vk.com/blank.html, а после # вы увидите дополнительные параметры — **access_token**, **expires_in** и **user_id**. Токен может выглядеть, например, так:\n\n```\n51eff86578a3bbbcb5c7043a122a69fd04dca057ac821dd7afd7c2d8e35b60172d45a26599c08034cc40a\n```\n\nТокен — это ваш ключ доступа. При выполнении определенных условий человек, получивший ваш токен, может нанести существенный ущерб вашим данным и данным других людей. Поэтому очень важно не передавать свой токен третьим лицам.\n\nПоле **expires_in** содержит время жизни токена в секундах. 86400 секунд — это ровно сутки. Через сутки полученный токен перестанет действовать, для продолжения работы нужно будет получить новый. Есть возможность получить токен без срока действия — для этого в **scope** добавьте значение *offline*. Вы можете принудительно отозвать токен (например, в том случае, если он стал известен постороннему), сбросив сеансы в настройках безопасности вашего аккаунта или сменив пароль. Также, если речь идет о токене не из вашего собственного приложения, можно просто [удалить приложение из настроек](https://vk.com/settings?act=apps).\n\nПоле **user_id** содержит id пользователя, для которого получен токен.\n\n# Ссылки\n\nВКонтакте:\n\n- [vk.com/dev/photos.createAlbum](https://vk.com/dev/photos.createAlbum)\n- [vk.com/support?act=new_api](https://vk.com/support?act=new_api)\n\nBash:\n\n- [stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash](http://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash)\n- [stackoverflow.com/questions/9084257/bash-array-with-spaces-in-elements](http://stackoverflow.com/questions/9084257/bash-array-with-spaces-in-elements)\n- [askubuntu.com/questions/420981/how-do-i-save-terminal-output-to-a-file](http://askubuntu.com/questions/420981/how-do-i-save-terminal-output-to-a-file)\n- [serverfault.com/questions/135507/linux-how-to-use-a-file-as-input-and-output-at-the-same-time](http://serverfault.com/questions/135507/linux-how-to-use-a-file-as-input-and-output-at-the-same-time)\n\ncURL:\n\n- [superuser.com/questions/149329/what-is-the-curl-command-line-syntax-to-do-a-post-request](https://superuser.com/questions/149329/what-is-the-curl-command-line-syntax-to-do-a-post-request)\n- [stackoverflow.com/questions/866946/how-can-i-see-the-request-headers-made-by-curl-when-sending-a-request-to-the-ser](http://stackoverflow.com/questions/866946/how-can-i-see-the-request-headers-made-by-curl-when-sending-a-request-to-the-ser)\n- [stackoverflow.com/questions/18983719/is-there-any-way-to-get-curl-to-decompress-a-response-without-sending-the-accept](http://stackoverflow.com/questions/18983719/is-there-any-way-to-get-curl-to-decompress-a-response-without-sending-the-accept)\n- [stackoverflow.com/questions/7373752/how-do-i-get-curl-to-not-show-the-progress-bar](http://stackoverflow.com/questions/7373752/how-do-i-get-curl-to-not-show-the-progress-bar)\n\nРегулярные выражения:\n\n- [stackoverflow.com/questions/1891797/capturing-groups-from-a-grep-regex](http://stackoverflow.com/questions/1891797/capturing-groups-from-a-grep-regex)\n- [stackoverflow.com/questions/7254509/how-to-escape-single-quotes-in-bash-grep](http://stackoverflow.com/questions/7254509/how-to-escape-single-quotes-in-bash-grep)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgusenov%2Fvk-sh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgusenov%2Fvk-sh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgusenov%2Fvk-sh/lists"}