├── website ├── __init__.py ├── frontend │ ├── babel.cfg │ ├── static │ │ ├── img │ │ │ ├── picard-icon.png │ │ │ ├── quick_start-01.gif │ │ │ ├── quick_start-02.gif │ │ │ ├── quick_start-03.gif │ │ │ ├── quick_start-04.gif │ │ │ ├── quick_start-05.gif │ │ │ ├── quick_start-06.gif │ │ │ ├── quick_start-07.png │ │ │ ├── quick_start-08.gif │ │ │ ├── quick_start-09.png │ │ │ ├── quick_start-10.gif │ │ │ ├── quick_start-11.png │ │ │ ├── picard_demo_500.png │ │ │ ├── screenshots │ │ │ │ ├── picard-cover-art.png │ │ │ │ ├── picard-main-windows.png │ │ │ │ ├── picard-options-about.png │ │ │ │ ├── picard-options-lookup.png │ │ │ │ └── picard-options-plugins.png │ │ │ ├── meb-icons │ │ │ │ ├── bookbrainz-icon.svg │ │ │ │ ├── critiquebrainz-icon.svg │ │ │ │ ├── listenbrainz-icon.svg │ │ │ │ ├── metabrainz-icon.svg │ │ │ │ ├── musicbrainz-icon.svg │ │ │ │ └── coverartarchive-icon.svg │ │ │ └── picard-navbar-icon.svg │ │ ├── fonts │ │ │ ├── FontAwesome.otf │ │ │ ├── fontawesome-webfont.eot │ │ │ ├── fontawesome-webfont.ttf │ │ │ ├── fontawesome-webfont.woff │ │ │ ├── roboto │ │ │ │ ├── KFOmCnqEu92Fr1Mu4mxK.woff2 │ │ │ │ ├── KFOkCnqEu92Fr1MmgVxIIzI.woff2 │ │ │ │ ├── KFOmCnqEu92Fr1Mu4WxKOzY.woff2 │ │ │ │ ├── KFOmCnqEu92Fr1Mu5mxKOzY.woff2 │ │ │ │ ├── KFOmCnqEu92Fr1Mu72xKOzY.woff2 │ │ │ │ ├── KFOmCnqEu92Fr1Mu7GxKOzY.woff2 │ │ │ │ ├── KFOmCnqEu92Fr1Mu7WxKOzY.woff2 │ │ │ │ ├── KFOmCnqEu92Fr1Mu7mxKOzY.woff2 │ │ │ │ ├── KFOlCnqEu92Fr1MmSU5fBBc4.woff2 │ │ │ │ ├── KFOlCnqEu92Fr1MmWUlfBBc4.woff2 │ │ │ │ ├── KFOkCnqEu92Fr1MmgVxEIzIFKw.woff2 │ │ │ │ ├── KFOkCnqEu92Fr1MmgVxFIzIFKw.woff2 │ │ │ │ ├── KFOkCnqEu92Fr1MmgVxGIzIFKw.woff2 │ │ │ │ ├── KFOkCnqEu92Fr1MmgVxHIzIFKw.woff2 │ │ │ │ ├── KFOkCnqEu92Fr1MmgVxLIzIFKw.woff2 │ │ │ │ ├── KFOkCnqEu92Fr1MmgVxMIzIFKw.woff2 │ │ │ │ ├── KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 │ │ │ │ ├── KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 │ │ │ │ ├── KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 │ │ │ │ ├── KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 │ │ │ │ ├── KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 │ │ │ │ ├── KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 │ │ │ │ ├── KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 │ │ │ │ ├── KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 │ │ │ │ ├── KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 │ │ │ │ ├── KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 │ │ │ │ ├── KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 │ │ │ │ └── KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 │ │ │ └── sintony │ │ │ │ ├── XoHm2YDqR7-98cVUETMtug.woff2 │ │ │ │ ├── XoHm2YDqR7-98cVUET0tuu8o.woff2 │ │ │ │ ├── XoHj2YDqR7-98cVUGYgIr9AJkw.woff2 │ │ │ │ └── XoHj2YDqR7-98cVUGYgIr94JkwLp.woff2 │ │ ├── js │ │ │ ├── dataTables.min.js │ │ │ └── js.cookie.min.js │ │ └── less │ │ │ ├── fontawesome │ │ │ ├── fixed-width.less │ │ │ ├── core.less │ │ │ ├── bordered-pulled.less │ │ │ ├── rotated-flipped.less │ │ │ ├── larger.less │ │ │ ├── list.less │ │ │ ├── font-awesome.less │ │ │ ├── stacked.less │ │ │ ├── path.less │ │ │ ├── mixins.less │ │ │ └── spinning.less │ │ │ ├── theme │ │ │ ├── boostrap │ │ │ │ ├── mixins │ │ │ │ │ ├── center-block.less │ │ │ │ │ ├── text-emphasis.less │ │ │ │ │ ├── size.less │ │ │ │ │ ├── opacity.less │ │ │ │ │ ├── background-variant.less │ │ │ │ │ ├── text-overflow.less │ │ │ │ │ ├── tab-focus.less │ │ │ │ │ ├── resize.less │ │ │ │ │ ├── labels.less │ │ │ │ │ ├── progress-bar.less │ │ │ │ │ ├── reset-filter.less │ │ │ │ │ ├── nav-divider.less │ │ │ │ │ ├── alerts.less │ │ │ │ │ ├── nav-vertical-align.less │ │ │ │ │ ├── responsive-visibility.less │ │ │ │ │ ├── pagination.less │ │ │ │ │ ├── border-radius.less │ │ │ │ │ ├── panels.less │ │ │ │ │ ├── list-group.less │ │ │ │ │ ├── hide-text.less │ │ │ │ │ ├── clearfix.less │ │ │ │ │ ├── table-row.less │ │ │ │ │ ├── image.less │ │ │ │ │ ├── buttons.less │ │ │ │ │ ├── forms.less │ │ │ │ │ ├── grid-framework.less │ │ │ │ │ ├── grid.less │ │ │ │ │ └── gradients.less │ │ │ │ ├── wells.less │ │ │ │ ├── breadcrumbs.less │ │ │ │ ├── responsive-embed.less │ │ │ │ ├── component-animations.less │ │ │ │ ├── close.less │ │ │ │ ├── thumbnails.less │ │ │ │ ├── utilities.less │ │ │ │ ├── media.less │ │ │ │ ├── pager.less │ │ │ │ ├── jumbotron.less │ │ │ │ ├── mixins.less │ │ │ │ ├── labels.less │ │ │ │ ├── boostrap.less │ │ │ │ ├── badges.less │ │ │ │ ├── code.less │ │ │ │ ├── grid.less │ │ │ │ ├── alerts.less │ │ │ │ ├── progress-bars.less │ │ │ │ ├── pagination.less │ │ │ │ ├── print.less │ │ │ │ ├── tooltip.less │ │ │ │ ├── list-group.less │ │ │ │ ├── scaffolding.less │ │ │ │ ├── popovers.less │ │ │ │ ├── modals.less │ │ │ │ ├── buttons.less │ │ │ │ ├── input-groups.less │ │ │ │ ├── responsive-utilities.less │ │ │ │ ├── tables.less │ │ │ │ └── dropdowns.less │ │ │ ├── theme.less │ │ │ ├── buttons.less │ │ │ ├── links.less │ │ │ └── navbars.less │ │ │ ├── pages │ │ │ ├── mappings.less │ │ │ ├── plugins.less │ │ │ ├── changelog.less │ │ │ ├── downloads.less │ │ │ └── index.less │ │ │ ├── highlightjs │ │ │ ├── picard.less │ │ │ └── default.less │ │ │ ├── styles.less │ │ │ └── docs.less │ ├── views │ │ ├── humans.py │ │ ├── humans_test.py │ │ ├── plugins_test.py │ │ ├── changelog_test.py │ │ ├── plugins.py │ │ ├── __init__.py │ │ ├── docs_test.py │ │ ├── changelog.py │ │ └── docs.py │ ├── templates │ │ ├── changelog.html │ │ ├── docs │ │ │ ├── base.html │ │ │ └── development.html │ │ ├── errors │ │ │ └── 404.html │ │ └── plugins.html │ ├── errors.py │ ├── humans.txt │ ├── scheduler.py │ ├── views_test.py │ ├── testing.py │ ├── __init__.py │ └── babel.py ├── plugin_utils.py ├── expand.py ├── config.py.example ├── build_plugins_test.py ├── expand_test.py └── default_config.py ├── pytest.ini ├── INSTALL.md ├── run.py ├── docker ├── common.yml ├── docker-compose.test.yml ├── uwsgi.ini └── docker-compose.prod.yml ├── .eslintrc ├── .dockerignore ├── README.md ├── .github ├── dependabot.yml ├── workflows │ └── docker-ci.yml └── PULL_REQUEST_TEMPLATE.md ├── plugins-generate.py ├── package.json ├── .gitignore ├── Dockerfile ├── INSTALL-LINUX.md ├── INSTALL-WINDOWS.md └── pyproject.toml /website/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pytest.ini: -------------------------------------------------------------------------------- 1 | [pytest] 2 | testpaths = website 3 | addopts = --cov=website 4 | -------------------------------------------------------------------------------- /website/frontend/babel.cfg: -------------------------------------------------------------------------------- 1 | [extractors] 2 | jinja2 = jinja2.ext:babel_extract 3 | 4 | [python: **.py] 5 | [jinja2: **/templates/**.html] 6 | -------------------------------------------------------------------------------- /website/frontend/static/img/picard-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/picard-icon.png -------------------------------------------------------------------------------- /website/frontend/static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /website/frontend/static/img/quick_start-01.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/quick_start-01.gif -------------------------------------------------------------------------------- /website/frontend/static/img/quick_start-02.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/quick_start-02.gif -------------------------------------------------------------------------------- /website/frontend/static/img/quick_start-03.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/quick_start-03.gif -------------------------------------------------------------------------------- /website/frontend/static/img/quick_start-04.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/quick_start-04.gif -------------------------------------------------------------------------------- /website/frontend/static/img/quick_start-05.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/quick_start-05.gif -------------------------------------------------------------------------------- /website/frontend/static/img/quick_start-06.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/quick_start-06.gif -------------------------------------------------------------------------------- /website/frontend/static/img/quick_start-07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/quick_start-07.png -------------------------------------------------------------------------------- /website/frontend/static/img/quick_start-08.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/quick_start-08.gif -------------------------------------------------------------------------------- /website/frontend/static/img/quick_start-09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/quick_start-09.png -------------------------------------------------------------------------------- /website/frontend/static/img/quick_start-10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/quick_start-10.gif -------------------------------------------------------------------------------- /website/frontend/static/img/quick_start-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/quick_start-11.png -------------------------------------------------------------------------------- /website/frontend/static/js/dataTables.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/js/dataTables.min.js -------------------------------------------------------------------------------- /website/frontend/static/img/picard_demo_500.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/picard_demo_500.png -------------------------------------------------------------------------------- /website/frontend/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /website/frontend/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /website/frontend/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /website/frontend/static/img/screenshots/picard-cover-art.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/screenshots/picard-cover-art.png -------------------------------------------------------------------------------- /INSTALL.md: -------------------------------------------------------------------------------- 1 | # Installation 2 | 3 | ## Linux 4 | 5 | See [Linux installation](INSTALL-LINUX.md) 6 | 7 | ## Windows 8 | 9 | See [Windows installation](INSTALL-WINDOWS.md) 10 | -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOmCnqEu92Fr1Mu4mxK.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOmCnqEu92Fr1Mu4mxK.woff2 -------------------------------------------------------------------------------- /website/frontend/static/img/screenshots/picard-main-windows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/screenshots/picard-main-windows.png -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOkCnqEu92Fr1MmgVxIIzI.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOkCnqEu92Fr1MmgVxIIzI.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOmCnqEu92Fr1Mu4WxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOmCnqEu92Fr1Mu4WxKOzY.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOmCnqEu92Fr1Mu5mxKOzY.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOmCnqEu92Fr1Mu72xKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOmCnqEu92Fr1Mu72xKOzY.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOmCnqEu92Fr1Mu7GxKOzY.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOmCnqEu92Fr1Mu7WxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOmCnqEu92Fr1Mu7WxKOzY.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOmCnqEu92Fr1Mu7mxKOzY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOmCnqEu92Fr1Mu7mxKOzY.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/sintony/XoHm2YDqR7-98cVUETMtug.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/sintony/XoHm2YDqR7-98cVUETMtug.woff2 -------------------------------------------------------------------------------- /website/frontend/static/img/screenshots/picard-options-about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/screenshots/picard-options-about.png -------------------------------------------------------------------------------- /website/frontend/static/img/screenshots/picard-options-lookup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/screenshots/picard-options-lookup.png -------------------------------------------------------------------------------- /website/frontend/static/img/screenshots/picard-options-plugins.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/img/screenshots/picard-options-plugins.png -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmSU5fBBc4.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmSU5fBBc4.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmWUlfBBc4.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmWUlfBBc4.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/sintony/XoHm2YDqR7-98cVUET0tuu8o.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/sintony/XoHm2YDqR7-98cVUET0tuu8o.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOkCnqEu92Fr1MmgVxEIzIFKw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOkCnqEu92Fr1MmgVxEIzIFKw.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOkCnqEu92Fr1MmgVxFIzIFKw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOkCnqEu92Fr1MmgVxFIzIFKw.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOkCnqEu92Fr1MmgVxGIzIFKw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOkCnqEu92Fr1MmgVxGIzIFKw.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOkCnqEu92Fr1MmgVxHIzIFKw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOkCnqEu92Fr1MmgVxHIzIFKw.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOkCnqEu92Fr1MmgVxLIzIFKw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOkCnqEu92Fr1MmgVxLIzIFKw.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOkCnqEu92Fr1MmgVxMIzIFKw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOkCnqEu92Fr1MmgVxMIzIFKw.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/roboto/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2 -------------------------------------------------------------------------------- /website/frontend/static/fonts/sintony/XoHj2YDqR7-98cVUGYgIr9AJkw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/sintony/XoHj2YDqR7-98cVUGYgIr9AJkw.woff2 -------------------------------------------------------------------------------- /website/frontend/static/less/fontawesome/fixed-width.less: -------------------------------------------------------------------------------- 1 | // Fixed Width Icons 2 | // ------------------------- 3 | .@{fa-css-prefix}-fw { 4 | width: (18em / 14); 5 | text-align: center; 6 | } 7 | -------------------------------------------------------------------------------- /website/frontend/static/fonts/sintony/XoHj2YDqR7-98cVUGYgIr94JkwLp.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/metabrainz/picard-website/HEAD/website/frontend/static/fonts/sintony/XoHj2YDqR7-98cVUGYgIr94JkwLp.woff2 -------------------------------------------------------------------------------- /website/frontend/static/less/theme/boostrap/mixins/center-block.less: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | .center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /website/frontend/static/less/theme/boostrap/mixins/text-emphasis.less: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | .text-emphasis-variant(@color) { 4 | color: @color; 5 | a&:hover { 6 | color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /website/frontend/static/less/pages/mappings.less: -------------------------------------------------------------------------------- 1 | #mappings { 2 | table { 3 | .comment { 4 | color: lighten(black, 50%); 5 | font-size: 90%; 6 | font-weight: normal; 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /website/frontend/static/less/pages/plugins.less: -------------------------------------------------------------------------------- 1 | #plugin-table { 2 | table { 3 | margin-top: 25px; 4 | table-layout: fixed; 5 | 6 | td { 7 | overflow: hidden; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /website/frontend/views/humans.py: -------------------------------------------------------------------------------- 1 | from flask import Blueprint, send_file 2 | 3 | humans_bp = Blueprint('humans', __name__) 4 | 5 | 6 | @humans_bp.get('/humans.txt') 7 | def show_humans(): 8 | return send_file('humans.txt') 9 | -------------------------------------------------------------------------------- /website/frontend/static/less/theme/boostrap/mixins/size.less: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | .size(@width; @height) { 4 | width: @width; 5 | height: @height; 6 | } 7 | 8 | .square(@size) { 9 | .size(@size; @size); 10 | } 11 | -------------------------------------------------------------------------------- /website/frontend/static/less/theme/boostrap/mixins/opacity.less: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | .opacity(@opacity) { 4 | opacity: @opacity; 5 | // IE8 filter 6 | @opacity-ie: (@opacity * 100); 7 | filter: ~"alpha(opacity=@{opacity-ie})"; 8 | } 9 | -------------------------------------------------------------------------------- /website/frontend/static/less/theme/boostrap/mixins/background-variant.less: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | .bg-variant(@color) { 4 | background-color: @color; 5 | a&:hover { 6 | background-color: darken(@color, 10%); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /website/frontend/static/less/theme/boostrap/mixins/text-overflow.less: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | .text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /website/frontend/static/less/theme/boostrap/mixins/tab-focus.less: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | .tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /run.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from werkzeug.serving import run_simple 4 | from website.frontend import create_app 5 | 6 | app = create_app() 7 | 8 | if __name__ == '__main__': 9 | run_simple(app.config['SERVER_HOSTNAME'], app.config['SERVER_PORT'], app) 10 | -------------------------------------------------------------------------------- /website/frontend/static/less/theme/boostrap/mixins/resize.less: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | .resizable(@direction) { 4 | resize: @direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /website/frontend/views/humans_test.py: -------------------------------------------------------------------------------- 1 | from website.frontend.testing import FrontendTestCase 2 | 3 | 4 | class ViewsTestCase(FrontendTestCase): 5 | 6 | def test_humans_txt(self): 7 | response = self.client.get("/humans.txt") 8 | self.assert200(response) 9 | -------------------------------------------------------------------------------- /website/frontend/static/less/theme/boostrap/mixins/labels.less: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | .label-variant(@color) { 4 | background-color: @color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken(@color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /docker/common.yml: -------------------------------------------------------------------------------- 1 | # Docker Compose file with common services 2 | # See https://docs.docker.com/compose/extends/#extending-services 3 | version: "2" 4 | services: 5 | 6 | nginx: 7 | restart: always 8 | build: 9 | context: ./nginx_custom/ 10 | dockerfile: Dockerfile 11 | -------------------------------------------------------------------------------- /website/frontend/static/less/theme/boostrap/mixins/progress-bar.less: -------------------------------------------------------------------------------- 1 | // Progress bars 2 | 3 | .progress-bar-variant(@color) { 4 | background-color: @color; 5 | 6 | // Deprecated parent class requirement as of v3.2.0 7 | .progress-striped & { 8 | #gradient > .striped(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /docker/docker-compose.test.yml: -------------------------------------------------------------------------------- 1 | # Docker Compose file for testing 2 | version: "2" 3 | services: 4 | 5 | web_test: 6 | build: 7 | context: .. 8 | dockerfile: ./Dockerfile 9 | network_mode: bridge 10 | command: py.test --junitxml=/data/test_report.xml --cov-report xml:/data/coverage.xml 11 | -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "node": true, 4 | "es6": true 5 | }, 6 | "rules": { 7 | "arrow-parens": "off", 8 | "camelcase": "off", 9 | "curly": ["error", "multi-line"], 10 | "no-console": "off", 11 | "semi": ["error", "never"], 12 | "quotes": ["warn", "single"] 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /website/frontend/static/img/meb-icons/bookbrainz-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /website/frontend/static/img/meb-icons/critiquebrainz-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /website/frontend/static/img/meb-icons/listenbrainz-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /website/frontend/static/img/meb-icons/metabrainz-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /website/frontend/static/img/meb-icons/musicbrainz-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /website/frontend/static/less/theme/boostrap/mixins/reset-filter.less: -------------------------------------------------------------------------------- 1 | // Reset filters for IE 2 | // 3 | // When you need to remove a gradient background, do not forget to use this to reset 4 | // the IE filter for IE9 and below. 5 | 6 | .reset-filter() { 7 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); 8 | } 9 | -------------------------------------------------------------------------------- /website/frontend/static/img/meb-icons/coverartarchive-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /website/frontend/static/less/theme/boostrap/mixins/nav-divider.less: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | .nav-divider(@color: #e5e5e5) { 6 | height: 1px; 7 | margin: ((@line-height-computed / 2) - 1) 0; 8 | overflow: hidden; 9 | background-color: @color; 10 | } 11 | -------------------------------------------------------------------------------- /website/frontend/templates/changelog.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% set active_page = "changelog" %} 3 | {% set page_title = _("What’s New") %} 4 | {% block content %} 5 |
9 | The source code of Picard is maintained in Git and you can get it with all its history using: 10 |
11 | 12 |git clone git://github.com/musicbrainz/picard.git13 | 14 |
15 | or you can fork or clone the 16 | repository from GitHub in the normal 17 | GitHub way. Pull requests and discussion on GitHub is generally preferred and all such requests will 18 | be considered. 19 |
20 | 21 |22 | If you are interested in providing development assistance, contact us in the 23 | MetaBrainz chat. 24 | To help by reporting bugs or finding a list of available tickets to work on, please have a look at the 25 | {{ _("Troubleshooting") }} page. 26 |
27 | 28 |29 | If you want to install Picard from source, see 30 | MusicBrainz Picard Installation. 31 |
32 | 33 |34 | For a more detailed setup of a development environment and our contribution guidelines see 35 | Contributing to Picard. 36 |
37 | 38 |40 | Picard is licensed under the GPL 2.0 or later. 41 |
42 |