gitextract_bvvfn266/ ├── .ameba.yml ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── enhancement.md │ │ └── feature_request.md │ ├── dependabot.yml │ └── workflows/ │ ├── auto-close-duplicate.yaml │ ├── build-nightly-container.yml │ ├── build-stable-container.yml │ ├── ci.yml │ └── stale.yml ├── .gitignore ├── .gitmodules ├── CHANGELOG.md ├── CHANGELOG_legacy.md ├── LICENSE ├── Makefile ├── README.md ├── TRANSLATION ├── assets/ │ ├── .well-known/ │ │ └── dnt-policy.txt │ ├── browserconfig.xml │ ├── css/ │ │ ├── carousel.css │ │ ├── default.css │ │ ├── embed.css │ │ ├── empty.css │ │ ├── grids-responsive-min.css │ │ ├── player.css │ │ ├── pure-min.css │ │ ├── quality-selector.css │ │ └── search.css │ ├── js/ │ │ ├── _helpers.js │ │ ├── comments.js │ │ ├── community.js │ │ ├── embed.js │ │ ├── handlers.js │ │ ├── notifications.js │ │ ├── pagination.js │ │ ├── player.js │ │ ├── playlist_widget.js │ │ ├── post.js │ │ ├── sse.js │ │ ├── subscribe_widget.js │ │ ├── themes.js │ │ ├── watch.js │ │ ├── watched_indicator.js │ │ └── watched_widget.js │ ├── robots.txt │ ├── site.webmanifest │ └── videojs/ │ └── .gitignore ├── config/ │ ├── config.example.yml │ ├── migrate-scripts/ │ │ ├── migrate-db-17cf077.sh │ │ ├── migrate-db-1c8075c.sh │ │ ├── migrate-db-1eca969.sh │ │ ├── migrate-db-30e6d29.sh │ │ ├── migrate-db-3646395.sh │ │ ├── migrate-db-3bcb98e.sh │ │ ├── migrate-db-52cb239.sh │ │ ├── migrate-db-6e51189.sh │ │ ├── migrate-db-701b5ea.sh │ │ ├── migrate-db-88b7097.sh │ │ └── migrate-db-8e884fe.sh │ └── sql/ │ ├── annotations.sql │ ├── channel_videos.sql │ ├── channels.sql │ ├── nonces.sql │ ├── playlist_videos.sql │ ├── playlists.sql │ ├── session_ids.sql │ ├── users.sql │ └── videos.sql ├── docker/ │ ├── Dockerfile │ ├── Dockerfile.arm64 │ └── init-invidious-db.sh ├── docker-compose.yml ├── invidious.service ├── kubernetes/ │ └── README.md ├── locales/ │ ├── af.json │ ├── ar.json │ ├── az.json │ ├── be.json │ ├── bg.json │ ├── bn.json │ ├── bn_BD.json │ ├── ca.json │ ├── cs.json │ ├── cy.json │ ├── da.json │ ├── de.json │ ├── el.json │ ├── en-US.json │ ├── eo.json │ ├── es.json │ ├── et.json │ ├── eu.json │ ├── fa.json │ ├── fi.json │ ├── fr.json │ ├── gsw.json │ ├── he.json │ ├── hi.json │ ├── hr.json │ ├── hu-HU.json │ ├── ia.json │ ├── id.json │ ├── is.json │ ├── it.json │ ├── ja.json │ ├── ko.json │ ├── lmo.json │ ├── lt.json │ ├── lv.json │ ├── nb-NO.json │ ├── nl.json │ ├── or.json │ ├── pl.json │ ├── pt-BR.json │ ├── pt-PT.json │ ├── pt.json │ ├── ro.json │ ├── ru.json │ ├── si.json │ ├── sk.json │ ├── sl.json │ ├── sq.json │ ├── sr.json │ ├── sr_Cyrl.json │ ├── sv-SE.json │ ├── ta.json │ ├── tk.json │ ├── tok.json │ ├── tr.json │ ├── uk.json │ ├── vi.json │ ├── zh-CN.json │ └── zh-TW.json ├── scripts/ │ ├── deploy-database.sh │ ├── fetch-player-dependencies.cr │ ├── generate_js_licenses.cr │ ├── git/ │ │ └── pre-commit │ └── install-dependencies.sh ├── shard.yml ├── spec/ │ ├── helpers/ │ │ └── vtt/ │ │ └── builder_spec.cr │ ├── http_server/ │ │ └── handlers/ │ │ ├── static_assets_handler/ │ │ │ └── test.txt │ │ └── static_assets_handler_spec.cr │ ├── i18next_plurals_spec.cr │ ├── invidious/ │ │ ├── hashtag_spec.cr │ │ ├── helpers_spec.cr │ │ ├── search/ │ │ │ ├── iv_filters_spec.cr │ │ │ ├── query_spec.cr │ │ │ └── yt_filters_spec.cr │ │ ├── user/ │ │ │ └── imports_spec.cr │ │ ├── utils_spec.cr │ │ └── videos/ │ │ ├── regular_videos_extract_spec.cr │ │ └── scheduled_live_extract_spec.cr │ ├── parsers_helper.cr │ └── spec_helper.cr ├── src/ │ ├── ext/ │ │ └── kemal_static_file_handler.cr │ ├── invidious/ │ │ ├── channels/ │ │ │ ├── about.cr │ │ │ ├── channels.cr │ │ │ ├── community.cr │ │ │ ├── playlists.cr │ │ │ └── videos.cr │ │ ├── comments/ │ │ │ ├── content.cr │ │ │ ├── links_util.cr │ │ │ ├── reddit.cr │ │ │ ├── reddit_types.cr │ │ │ └── youtube.cr │ │ ├── config.cr │ │ ├── database/ │ │ │ ├── annotations.cr │ │ │ ├── base.cr │ │ │ ├── channels.cr │ │ │ ├── migration.cr │ │ │ ├── migrations/ │ │ │ │ ├── 0001_create_channels_table.cr │ │ │ │ ├── 0002_create_videos_table.cr │ │ │ │ ├── 0003_create_channel_videos_table.cr │ │ │ │ ├── 0004_create_users_table.cr │ │ │ │ ├── 0005_create_session_ids_table.cr │ │ │ │ ├── 0006_create_nonces_table.cr │ │ │ │ ├── 0007_create_annotations_table.cr │ │ │ │ ├── 0008_create_playlists_table.cr │ │ │ │ ├── 0009_create_playlist_videos_table.cr │ │ │ │ └── 0010_make_videos_unlogged.cr │ │ │ ├── migrator.cr │ │ │ ├── nonces.cr │ │ │ ├── playlists.cr │ │ │ ├── sessions.cr │ │ │ ├── statistics.cr │ │ │ ├── users.cr │ │ │ └── videos.cr │ │ ├── exceptions.cr │ │ ├── frontend/ │ │ │ ├── channel_page.cr │ │ │ ├── comments_reddit.cr │ │ │ ├── comments_youtube.cr │ │ │ ├── misc.cr │ │ │ ├── pagination.cr │ │ │ ├── search_filters.cr │ │ │ └── watch_page.cr │ │ ├── hashtag.cr │ │ ├── helpers/ │ │ │ ├── crystal_class_overrides.cr │ │ │ ├── errors.cr │ │ │ ├── handlers.cr │ │ │ ├── helpers.cr │ │ │ ├── i18n.cr │ │ │ ├── i18next.cr │ │ │ ├── logger.cr │ │ │ ├── macros.cr │ │ │ ├── serialized_yt_data.cr │ │ │ ├── tokens.cr │ │ │ ├── utils.cr │ │ │ └── webvtt.cr │ │ ├── http_server/ │ │ │ ├── static_assets_handler.cr │ │ │ └── utils.cr │ │ ├── jobs/ │ │ │ ├── base_job.cr │ │ │ ├── clear_expired_items_job.cr │ │ │ ├── instance_refresh_job.cr │ │ │ ├── notification_job.cr │ │ │ ├── pull_popular_videos_job.cr │ │ │ ├── refresh_channels_job.cr │ │ │ ├── refresh_feeds_job.cr │ │ │ ├── statistics_refresh_job.cr │ │ │ └── subscribe_to_feeds_job.cr │ │ ├── jobs.cr │ │ ├── jsonify/ │ │ │ └── api_v1/ │ │ │ ├── common.cr │ │ │ └── video_json.cr │ │ ├── mixes.cr │ │ ├── playlists.cr │ │ ├── routes/ │ │ │ ├── account.cr │ │ │ ├── api/ │ │ │ │ ├── manifest.cr │ │ │ │ └── v1/ │ │ │ │ ├── authenticated.cr │ │ │ │ ├── channels.cr │ │ │ │ ├── feeds.cr │ │ │ │ ├── misc.cr │ │ │ │ ├── search.cr │ │ │ │ └── videos.cr │ │ │ ├── before_all.cr │ │ │ ├── channels.cr │ │ │ ├── companion.cr │ │ │ ├── embed.cr │ │ │ ├── errors.cr │ │ │ ├── feeds.cr │ │ │ ├── images.cr │ │ │ ├── login.cr │ │ │ ├── misc.cr │ │ │ ├── notifications.cr │ │ │ ├── playlists.cr │ │ │ ├── preferences.cr │ │ │ ├── routes.cr │ │ │ ├── search.cr │ │ │ ├── subscriptions.cr │ │ │ ├── video_playback.cr │ │ │ └── watch.cr │ │ ├── routing.cr │ │ ├── search/ │ │ │ ├── ctoken.cr │ │ │ ├── filters.cr │ │ │ ├── processors.cr │ │ │ └── query.cr │ │ ├── trending.cr │ │ ├── user/ │ │ │ ├── captcha.cr │ │ │ ├── converters.cr │ │ │ ├── cookies.cr │ │ │ ├── exports.cr │ │ │ ├── imports.cr │ │ │ ├── preferences.cr │ │ │ └── user.cr │ │ ├── users.cr │ │ ├── videos/ │ │ │ ├── caption.cr │ │ │ ├── clip.cr │ │ │ ├── description.cr │ │ │ ├── formats.cr │ │ │ ├── music.cr │ │ │ ├── parser.cr │ │ │ ├── regions.cr │ │ │ ├── storyboard.cr │ │ │ ├── transcript.cr │ │ │ └── video_preferences.cr │ │ ├── videos.cr │ │ ├── views/ │ │ │ ├── add_playlist_items.ecr │ │ │ ├── channel.ecr │ │ │ ├── community.ecr │ │ │ ├── components/ │ │ │ │ ├── channel_info.ecr │ │ │ │ ├── feed_menu.ecr │ │ │ │ ├── item.ecr │ │ │ │ ├── items_paginated.ecr │ │ │ │ ├── player.ecr │ │ │ │ ├── player_sources.ecr │ │ │ │ ├── search_box.ecr │ │ │ │ ├── subscribe_widget.ecr │ │ │ │ └── video-context-buttons.ecr │ │ │ ├── create_playlist.ecr │ │ │ ├── delete_playlist.ecr │ │ │ ├── edit_playlist.ecr │ │ │ ├── embed.ecr │ │ │ ├── error.ecr │ │ │ ├── feeds/ │ │ │ │ ├── history.ecr │ │ │ │ ├── playlists.ecr │ │ │ │ ├── popular.ecr │ │ │ │ ├── subscriptions.ecr │ │ │ │ └── trending.ecr │ │ │ ├── hashtag.ecr │ │ │ ├── licenses.ecr │ │ │ ├── message.ecr │ │ │ ├── mix.ecr │ │ │ ├── playlist.ecr │ │ │ ├── post.ecr │ │ │ ├── privacy.ecr │ │ │ ├── search.ecr │ │ │ ├── search_homepage.ecr │ │ │ ├── template.ecr │ │ │ ├── user/ │ │ │ │ ├── authorize_token.ecr │ │ │ │ ├── change_password.ecr │ │ │ │ ├── clear_watch_history.ecr │ │ │ │ ├── data_control.ecr │ │ │ │ ├── delete_account.ecr │ │ │ │ ├── login.ecr │ │ │ │ ├── preferences.ecr │ │ │ │ ├── subscription_manager.ecr │ │ │ │ └── token_manager.ecr │ │ │ └── watch.ecr │ │ └── yt_backend/ │ │ ├── connection_pool.cr │ │ ├── extractors.cr │ │ ├── extractors_utils.cr │ │ ├── url_sanitizer.cr │ │ └── youtube_api.cr │ └── invidious.cr └── videojs-dependencies.yml