{"id":20767691,"url":"https://github.com/kingwingfly/fav","last_synced_at":"2026-01-16T03:25:55.008Z","repository":{"id":218959884,"uuid":"747802176","full_name":"kingwingfly/fav","owner":"kingwingfly","description":"Back up your favorite bilibili resources with CLI.","archived":false,"fork":false,"pushed_at":"2026-01-01T21:07:30.000Z","size":3710,"stargazers_count":119,"open_issues_count":6,"forks_count":3,"subscribers_count":0,"default_branch":"dev","last_synced_at":"2026-01-08T14:35:27.556Z","etag":null,"topics":["backup","bilibili","synchornization"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/kingwingfly.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-01-24T17:07:06.000Z","updated_at":"2025-12-18T00:09:24.000Z","dependencies_parsed_at":"2024-03-22T23:27:30.126Z","dependency_job_id":"2b3390f2-8482-47ed-b1a6-2aa065b3028a","html_url":"https://github.com/kingwingfly/fav","commit_stats":null,"previous_names":["kingwingfly/backup","kingwingfly/fav"],"tags_count":80,"template":false,"template_full_name":null,"purl":"pkg:github/kingwingfly/fav","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingwingfly%2Ffav","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingwingfly%2Ffav/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingwingfly%2Ffav/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingwingfly%2Ffav/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kingwingfly","download_url":"https://codeload.github.com/kingwingfly/fav/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kingwingfly%2Ffav/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28477203,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T03:13:13.607Z","status":"ssl_error","status_checked_at":"2026-01-16T03:11:47.863Z","response_time":107,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["backup","bilibili","synchornization"],"created_at":"2024-11-17T11:33:01.700Z","updated_at":"2026-01-16T03:25:54.997Z","avatar_url":"https://github.com/kingwingfly.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\n\u003c!-- PROJECT SHIELDS --\u003e\n\n[![Contributors][contributors-shield]][contributors-url]\n[![Forks][forks-shield]][forks-url]\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![MIT License][license-shield]][license-url]\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/kingwingfly/fav\"\u003e\n    \u003cimg src=\"images/logo.png\" alt=\"Logo\" width=\"80\" height=\"80\"\u003e\n  \u003c/a\u003e\n\n\u003ch3 align=\"center\"\u003efav\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    Back up your favorite bilibili resources with CLI.\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/kingwingfly/fav\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/kingwingfly/fav\"\u003eView Demo\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/kingwingfly/fav/issues\"\u003eReport Bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/kingwingfly/fav/issues\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\n      \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#compilation\"\u003eCompilation\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\n## About The Project\n\n[![Product Name Screen Shot][product-screenshot]](https://github.com/kingwingfly/fav)\n\nBack up your favorite bilibili online resources with CLI.\n\n⚠️: There's a broken change between v0 and v1, details in [CHANGELOG.md](CHANGELOG.md)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n### Built With\n\n- [![Rust][Rust]][Rust-url]\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- GETTING STARTED --\u003e\n\n## Getting Started\n\nYou can download the release [here](https://github.com/kingwingfly/fav/releases)\n\nFor ubuntu/debian users, the package in release page is built on ffmpeg source code release/8.0, as far as I know, `ffmpeg's libav*` in apt is different, so there may be a link error, please try to compile youself.\n\nFor Arch Linux users, you can `yay -S fav-git` maybe (outdated for now), someone has maken it a package.\n\nOr you can compile by yourself:\n\n1. Install ffmpeg and pkgconf\n    You can find method in [this repo's GitHub workflow](.github/workflows/release.yaml).\n2. Clone the repo\n    ```sh\n    git clone https://github.com/kingwingfly/fav.git\n    ```\n3. Compile\n    ```sh\n    # default link ffmpeg8\n    cargo build --release\n    # if you want to link different versions of ffmpeg\n    cargo build --release -F ffmpeg7_1\n    cargo build --release -F ffmpeg7\n    cargo build --release -F ffmpeg6\n    ```\n\nOr after installing ffmpeg and pkgconf, run `cargo install fav_bili`.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- USAGE EXAMPLES --\u003e\n\n## Usage\n\nNeed `libav*` able to be dynamic linked (check with `ldd /path/to/fav`(linux), `otool -L /path/to/fav`(macOS)).\n\n```sh\nBack up your favorite bilibili online resources with CLI.\n\nUsage: fav [OPTIONS] [COMMAND]\n\nCommands:\n  auth        Auth account\n  list        List accounts/sets/ups/medias [alias: ls, l]\n  activate    Activate obj [alias: active, a]\n  deactivate  Deactivate obj [alias: d]\n  fetch       Fetch metadata of following ups, fav sets, medias, ups [alias: f]\n  pull        Pull fetched medias [alias: p]\n  like        Like medias\n  completion  Generate completion script\n  help        Print this message or the help of the given subcommand(s)\n\nOptions:\n  -v, --verbose  Show debug messages\n  -h, --help     Print help\n  -V, --version  Print version\n```\n\n### Steps\n\n1. Login first\n2. Fetch the favorite sets(lists)\n3. Activate the list or up you want. You can see them through `fav ls`\n4. Fetch active resources\n5. Pull the resources\n\n### Example\n\n```sh\n# auto completion is supported; e.g. fish\nfav completion fish \u003e ~/.config/fish/completions/fav.fish\n# For Windows users\necho \"fav completion powershell | Out-String | Invoke-Expression\" \u003e\u003e $PROFILE\n# scan code to login\nfav auth login # you can also login with `fav usecookies`\n# fetch following ups and fav sets\nfav fetch\n# show sets\nfav ls set\n# activate set or up\nfav activate\n# pull videos\nfav fetch\nfav pull\n# deactivate set or up\nfav deactivate\n# after fetching, you can find your favorite upper\n# limbo/sqlite3 .fav/fav.db\nSELECT u.up_id, u.name, COUNT(u.up_id) count FROM up u LEFT JOIN media_up mu ON u.up_id=mu.up_id JOIN media m ON mu.id=m.id GROUP BY u.up_id, u.name ORDER BY count;\n# you can also like medias, should usecookies when login\nfav like\n# or like all medias faved\nfav ls v | sed '1d;$d' | awk '{print $2;}' | xargs fav like\n# check cookies usability\nfav auth check -a\n```\n\nService example:\n```ini\n# /etc/systemd/system/fav.service\n[Unit]\nDescription=Fav Service\nAfter=network-online.target\n\n[Service]\nType=oneshot\nUser=your_user\nWorkingDirectory=/path/to/fav_set\nExecStart=/bin/sh -c \"/usr/local/bin/fav fetch \u0026\u0026 /usr/local/bin/fav pull\"\n\n# /etc/systemd/system/fav.timer\n[Unit]\nDescription=Run fav service every 3 hours\n\n[Timer]\nOnCalendar=*-*-* 0/3:00:00\n# or OnUnitActiveSec=3h\nAccuracySec=1m\nPersistent=true\n\n[Install]\nWantedBy=timers.target\n```\n\n```sh\nsudo systemctl daemon-reload\nsudo systemctl enable fav.timer\nsudo systemctl start fav.timer\n```\n\nYou can also achieve the goal with `systemd timer` by yourself, but it's a little hard to learn.\n\n_For more examples, please refer to the [Documentation](https://github.com/kingwingfly/fav)_\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- DEVELOP --\u003e\n\n## Develop\n\n`sea-orm-cli` is used to handle database ops.\n\n```sh\ncargo binstall sea-orm-cli # or `cargo install sea-orm-cli`\n# generate ORM code\n./sea-orm.sh\n```\n\n\u003c!-- CONTRIBUTING --\u003e\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. Moreover, it is recommended to open an issue before coding to avoid repeated and useless work.\n\nIf you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag \"enhancement\".\nDon't forget to give the project a star! Thanks again!\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- LICENSE --\u003e\n\n## License\n\nDistributed under the MIT License. See `LICENSE.txt` for more information.\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- CONTACT --\u003e\n\n## Contact\n\nLouis - 836250617@qq.com\n\nProject Link: [https://github.com/kingwingfly/fav](https://github.com/kingwingfly/fav)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- ACKNOWLEDGMENTS --\u003e\n\n## Acknowledgments\n\n- [bilibili-API-collect](https://github.com/SocialSisterYi/bilibili-API-collect)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#readme-top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n\n[contributors-shield]: https://img.shields.io/github/contributors/kingwingfly/fav.svg?style=for-the-badge\n[contributors-url]: https://github.com/kingwingfly/fav/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/kingwingfly/fav.svg?style=for-the-badge\n[forks-url]: https://github.com/kingwingfly/fav/network/members\n[stars-shield]: https://img.shields.io/github/stars/kingwingfly/fav.svg?style=for-the-badge\n[stars-url]: https://github.com/kingwingfly/fav/stargazers\n[issues-shield]: https://img.shields.io/github/issues/kingwingfly/fav.svg?style=for-the-badge\n[issues-url]: https://github.com/kingwingfly/fav/issues\n[license-shield]: https://img.shields.io/github/license/kingwingfly/fav.svg?style=for-the-badge\n[license-url]: https://github.com/kingwingfly/fav/blob/master/LICENSE.txt\n[product-screenshot]: images/screenshot.png\n[Rust]: https://img.shields.io/badge/Rust-000000?style=for-the-badge\u0026logo=Rust\u0026logoColor=orange\n[Rust-url]: https://www.rust-lang.org\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkingwingfly%2Ffav","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkingwingfly%2Ffav","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkingwingfly%2Ffav/lists"}