{"id":14978902,"url":"https://github.com/antodata/pydesktopbrowserrecorder","last_synced_at":"2026-02-15T00:31:22.150Z","repository":{"id":62579855,"uuid":"244056721","full_name":"AntoData/PyDesktopBrowserRecorder","owner":"AntoData","description":"This project allows you to record your desktop or the browser during an automated test using selenium's webdriver","archived":false,"fork":false,"pushed_at":"2022-02-10T20:29:13.000Z","size":36,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-29T05:23:16.066Z","etag":null,"topics":["browser-recorder","desktop-recorder","ffmpeg","imageio","python3","qa","qa-automation","qa-automation-tests","screenshot","selenium","selenium-python","selenium-webdriver","test-automation","test-automation-project","testing-tools","threading","video","video-recorder","video-recording","webdriver"],"latest_commit_sha":null,"homepage":null,"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/AntoData.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}},"created_at":"2020-02-29T23:27:06.000Z","updated_at":"2023-03-24T09:32:49.000Z","dependencies_parsed_at":"2022-11-03T21:01:03.805Z","dependency_job_id":null,"html_url":"https://github.com/AntoData/PyDesktopBrowserRecorder","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/AntoData/PyDesktopBrowserRecorder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AntoData%2FPyDesktopBrowserRecorder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AntoData%2FPyDesktopBrowserRecorder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AntoData%2FPyDesktopBrowserRecorder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AntoData%2FPyDesktopBrowserRecorder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AntoData","download_url":"https://codeload.github.com/AntoData/PyDesktopBrowserRecorder/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AntoData%2FPyDesktopBrowserRecorder/sbom","scorecard":{"id":14647,"data":{"date":"2025-08-11","repo":{"name":"github.com/AntoData/PyDesktopBrowserRecorder","commit":"d88ff7d5ae7fb0379de8038ebc9e6f69e642a244"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.7,"checks":[{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":0,"reason":"Found 0/18 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":3,"reason":"7 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-3f63-hfp8-52jq","Warn: Project is vulnerable to: GHSA-44wm-f244-xhp3","Warn: Project is vulnerable to: PYSEC-2023-227 / GHSA-8ghj-p4vj-mr35","Warn: Project is vulnerable to: GHSA-j7hp-h8jx-5ppr","Warn: Project is vulnerable to: PYSEC-2022-42979 / GHSA-m2vv-5vj5-2hm7","Warn: Project is vulnerable to: PYSEC-2023-175","Warn: Project is vulnerable to: PYSEC-2023-206"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-14T15:29:05.243Z","repository_id":62579855,"created_at":"2025-08-14T15:29:05.243Z","updated_at":"2025-08-14T15:29:05.243Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278358476,"owners_count":25973946,"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-10-04T02:00:05.491Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":["browser-recorder","desktop-recorder","ffmpeg","imageio","python3","qa","qa-automation","qa-automation-tests","screenshot","selenium","selenium-python","selenium-webdriver","test-automation","test-automation-project","testing-tools","threading","video","video-recorder","video-recording","webdriver"],"created_at":"2024-09-24T13:58:36.547Z","updated_at":"2025-10-04T18:49:58.298Z","avatar_url":"https://github.com/AntoData.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PyDesktopBrowserRecorder\n This project allows you to record your desktop or the browser during an automated test using selenium's webdriver\n\n To install it, just open a terminal and execute:\n\n pip install pydesktopbrowserrecorder\n\n PiPY Project: https://pypi.org/project/pydesktopbrowserrecorder/\n\n Once installed, you just have to make the following import:\n \n from selenium_browser_desktop_recorder import SeleniumBrowserRecorder\n \n Then you create a SeleniumBrowserRecorder object, you have two modes.\n\n First mode:\n\n obj = SeleniumBrowserRecorder(folder,encoding)\n\n - folder: Folder where we want to create the folder that will contain the videos for our recording session\n - encoding: Encoding of the video. We only assure that using \".mp4\" will work\n This way, when you start the recording session, the desktop will be recorded until we stop the recording session\n \n But you can also provide a third parameter:\n\n  obj = SeleniumBrowserRecorder(folder,encoding,driver)\n  - driver: A webdriver object\n  \n    In this case, we will record only the browser window(s) that are being controlled by that webdriver object\n  \n  To start the recording session once we build the object we only have to use this method:\n  \n  obj.start_recording_session()\n  \n  And our object will start recording in a parallel thread\n  \n  To stop the recording session we only have to:\n\n  obj.stop_recording_session()\n\n  The video will be saved and the threads finished\n  \n  NOTE: If we are recording a browser and the size of it changes, we will stop the current video and start a new one with the new\n  size of the window\n \nNOTE: This was developed using the following versions of the following external libraries:\n- imageio_ffmpeg = 0.4.5 \n- numpy~=1.22.2 \n- imageio==2.15.0 \n- PyAutoGUI~=0.9.53 \n- selenium~=4.1.0 \n- Pillow~=9.0.1","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantodata%2Fpydesktopbrowserrecorder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fantodata%2Fpydesktopbrowserrecorder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fantodata%2Fpydesktopbrowserrecorder/lists"}