{"id":13690329,"url":"https://github.com/pmdevita/vredditshare","last_synced_at":"2025-09-13T07:54:00.239Z","repository":{"id":78458395,"uuid":"164997889","full_name":"pmdevita/vredditshare","owner":"pmdevita","description":" A Reddit bot that reuploads Reddit video","archived":false,"fork":false,"pushed_at":"2023-07-25T23:28:28.000Z","size":372,"stargazers_count":19,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-22T01:45:43.925Z","etag":null,"topics":["bot","gifs","python","reddit-bot"],"latest_commit_sha":null,"homepage":"https://reddit.com/user/vredditshare","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pmdevita.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2019-01-10T05:45:37.000Z","updated_at":"2023-11-15T04:29:46.000Z","dependencies_parsed_at":"2024-01-12T19:48:13.860Z","dependency_job_id":null,"html_url":"https://github.com/pmdevita/vredditshare","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmdevita%2Fvredditshare","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmdevita%2Fvredditshare/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmdevita%2Fvredditshare/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pmdevita%2Fvredditshare/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pmdevita","download_url":"https://codeload.github.com/pmdevita/vredditshare/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251998743,"owners_count":21678007,"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","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":["bot","gifs","python","reddit-bot"],"created_at":"2024-08-02T16:01:03.155Z","updated_at":"2025-05-02T06:32:34.028Z","avatar_url":"https://github.com/pmdevita.png","language":"Python","funding_links":[],"categories":["Misc"],"sub_categories":["External Reddit Tools"],"readme":"# vredditshare\n\nReddit bot that reuploads Reddit hosted video. Currently running under [/u/vredditshare](https://reddit.com/user/vredditshare).\n\n## Setup\n\nCreate a file named `credentials.ini` in the root directory with the following content\n\n```ini\n[general]\nmode = development|production\noperator = username to be pinged on crash/other stuff\n\n[database]\ntype = sqlite|mysql\n# Settings for mysql\nhost = \nusername =\npassword = \ndatabase =\n\n[reddit]\nclient_id = Reddit client id\nclient_secret = Reddit client secret\nusername = Reddit username\npassword = Reddit password\n\n[imgur]\nimgur_id = Imgur api id\nimgur_secret = Imgur api secret\nimgur_cookie = Cookie generated from an Imgur upload\n\n[gfycat]\ngfycat_id = gftcat id\ngfycat_secret = gfycat secret\n\n[streamable]\nemail = streamable account email\npassword = password\n\n[catbox]\nhash = your catbox account hash\n\n```\n\nFrom there run `python main.py` from the root directory to start. vredditshare requires Python 3.6+.\n\nYou will also need [`FFmpeg`](http://ffmpeg.org/), [`FFprobe`](http://ffmpeg.org/), and [`gifski`](https://gif.ski/) \nbinaries on the path or in the same directory. \n\n## Commentary\n\nHere's some notes on the more interesting parts of the bot.\n\n### Context detection\n\nThe bot goes through a couple of steps to determine what the user was asking for. First thing it checks is whether or \nnot the user gave a link in the summon comment themselves. Then it looks through the comment chain to see if there was \na gif in the parent comments (it will choose the one last referenced in the chain). Finally, it checks the post for a\nlink. \n\n### Reversing gifs/mp4s\n\nvredditshare uses two different reversing procedures which it chooses based on a few different circumstances. If it \nis reversing an mp4 (which is the most common gif type nowadays, go figure), it does the reversal process with FFmpeg. \nFor gifs, it exports each frame with FFmpeg and then reassembles them with gifski. Although gifski produces great gifs, \nit's very slow and so this process is usually avoided. The bot chooses a reversal method by making an educated guess \nas to whether the source was originally a gif or an mp4. \n\n### Gif Host Library\n\nv3 of vredditshare introduces the new Gif Host Library, a new implementation of the code used to describe gifs and \nhosting websites. It aims to share as much code as possible between the sites, reducing implementation efforts as well \nas surface area for bugs. Hosts define several properties such as how to parse their links, upload capabilities,and \nlimits. Instead of hard coding where the bot should upload gifs for every host, it is now decided dynamically through \nthe properties of a gif, limits of the hosting sites, and other priorities. It's fairly sturdy even though it's new \nand abstracts away many annoyances, differences, and difficulties managing the gif host sites.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmdevita%2Fvredditshare","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpmdevita%2Fvredditshare","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpmdevita%2Fvredditshare/lists"}