From 424c53f6fbef93f239c6361952db24f30a05ce64 Mon Sep 17 00:00:00 2001 From: Emmanuel Vuigner Date: Thu, 13 Feb 2014 22:44:36 +0000 Subject: [PATCH 1/3] add songkick upcoming concerts on ArtistPage --- data/css/style.css | 26 ++- data/interfaces/default/artist.html | 75 +++++-- data/interfaces/default/config.html | 14 +- data/interfaces/default/css/style.css | 194 +++++++----------- data/interfaces/default/css/style.less | 79 ++++--- data/interfaces/default/images/songkick.png | Bin 0 -> 4128 bytes .../default/images/songkick_ribon.png | Bin 0 -> 3266 bytes headphones/__init__.py | 11 +- headphones/webserve.py | 28 +-- 9 files changed, 229 insertions(+), 198 deletions(-) create mode 100644 data/interfaces/default/images/songkick.png create mode 100644 data/interfaces/default/images/songkick_ribon.png diff --git a/data/css/style.css b/data/css/style.css index 5efc2acc..3dfb01c5 100644 --- a/data/css/style.css +++ b/data/css/style.css @@ -33,7 +33,7 @@ table { border-collapse: collapse; border-spacing: 0; } hr { display: block; height: 1px; border: 0; border-top: 1px solid #ccc; margin: 1em 0; padding: 0; } input, select { vertical-align: middle; } -body { font:13px/1.231 sans-serif; *font-size:small; } +body { font:13px/1.231 sans-serif; *font-size:small; } select, input, textarea, button { font:99% sans-serif; } pre, code, kbd, samp { font-family: monospace, sans-serif; } @@ -52,7 +52,7 @@ sub { bottom: -0.25em; } pre { white-space: pre; white-space: pre-wrap; word-wrap: break-word; padding: 15px; } textarea { overflow: auto; } -.ie6 legend, .ie7 legend { margin-left: -7px; } +.ie6 legend, .ie7 legend { margin-left: -7px; } input[type="radio"] { vertical-align: text-bottom; } input[type="checkbox"] { vertical-align: bottom; } .ie7 input[type="checkbox"] { vertical-align: baseline; } @@ -81,20 +81,20 @@ h1, h2, h3, h4, h5, h6 { font-weight: bold; } */ a:link { - color: #5E2612; - text-decoration: none; + color: #5E2612; + text-decoration: none; } a:visited { - color: #5E2612; - text-decoration: none; + color: #5E2612; + text-decoration: none; } a:hover { /*this effect is not shown in NN4.xx*/ - color: #999999; + color: #999999; text-decoration: underline; } -a:active {/*colour in NN4.xx is red*/ - color: #5E2612; - text-decoration: underline; +a:active {/*colour in NN4.xx is red*/ + color: #5E2612; + text-decoration: underline; } a.blue { color: blue; @@ -274,8 +274,6 @@ div#shutdown{ text-align: center; vertical-align: middle; } #cloud { margin: 0; } #cloud li { display: inline; } - - .ir { display: block; text-indent: -999em; overflow: hidden; background-repeat: no-repeat; text-align: left; direction: ltr; } .hidden { display: none; visibility: hidden; } .visuallyhidden { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } @@ -303,11 +301,11 @@ div#shutdown{ text-align: center; vertical-align: middle; } @media print { * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; - -ms-filter: none !important; } + -ms-filter: none !important; } a, a:visited { color: #444 !important; text-decoration: underline; } a[href]:after { content: " (" attr(href) ")"; } abbr[title]:after { content: " (" attr(title) ")"; } - .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } + .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } thead { display: table-header-group; } tr, img { page-break-inside: avoid; } diff --git a/data/interfaces/default/artist.html b/data/interfaces/default/artist.html index a53e2029..c5a842f8 100644 --- a/data/interfaces/default/artist.html +++ b/data/interfaces/default/artist.html @@ -7,7 +7,7 @@ <%def name="headerIncludes()">
-
+
Refresh Artist Delete Artist %if artist['Status'] == 'Paused': @@ -18,7 +18,7 @@ %if artist['IncludeExtras']: Remove Extras Modify Extras - %else: + %else: Get Extras %endif
-
+
« Back to overview @@ -42,20 +42,21 @@
-

- %if artist['Status'] == 'Loading': - loading +

+ %if artist['Status'] == 'Loading': + loading %endif ${artist['ArtistName']} %if artist['Status'] == 'Loading':

(Album information for this artist is currently being loaded)

- %endif + %endif -
+
+
-
Mark selected albums as +
Mark selected albums as
- +

Notifications

Prowl

@@ -821,7 +821,7 @@ nma_priority_selected = 'selected' else: nma_priority_selected = '' - + if x == -2: nma_priority_value = 'Very Low' elif x == -1: @@ -905,6 +905,14 @@
+
+ Songkick +
+ + +
+
+ diff --git a/data/interfaces/default/css/style.css b/data/interfaces/default/css/style.css index 5c6d59cb..e392b765 100644 --- a/data/interfaces/default/css/style.css +++ b/data/interfaces/default/css/style.css @@ -1,4 +1,5 @@ -/* Variables *//* Mixins */ +/* Variables */ +/* Mixins */ html, body, div, @@ -158,7 +159,7 @@ img.albumArt { float: left; min-height: 100%; min-width: 100%; - max-width: 300px; + max-width: 250px; max-height: 300px; position: relative; } @@ -179,8 +180,8 @@ table th { background-image: linear-gradient(#fafafa, #eaeaea) !important; background-image: -webkit-linear-gradient(#fafafa, #eaeaea) !important; background-image: -o-linear-gradient(#fafafa, #eaeaea) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; border-left: 1px solid #E0E0E0; -moz-box-shadow: 1px 0 0 #fafafa; -webkit-box-shadow: 1px 0 0 #fafafa; @@ -204,8 +205,8 @@ table th.sorting_asc { background-image: linear-gradient(#fafbfd, #dce6ef) !important; background-image: -webkit-linear-gradient(#fafbfd, #dce6ef) !important; background-image: -o-linear-gradient(#fafbfd, #dce6ef) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fafbfd, endColorstr=#dce6ef) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fafbfd, endColorstr=#dce6ef) !important; color: #4183c4; } table td { @@ -296,23 +297,6 @@ input[type=button] { text-decoration: none; text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.25); } -.configsubmit { - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border-radius: 5px; - background: #222222 url("../images/button.png") repeat-x; - border: 0; - border-bottom: 1px solid rgba(0, 0, 0, 0.25); - color: #fff; - cursor: pointer; - margin-left: 75%; - margin-top: 5px; - text-align: center; - width: 200px; - padding: 4px 10px; - text-decoration: none; - text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.25); -} form legend, form h2 { font-size: 16px; @@ -365,7 +349,7 @@ form .row input[type=password] { line-height: normal; max-width: 230px; margin-right: 5px; - padding: 2px 5px; + padding: 3px 5px; } form .row small { color: #999; @@ -378,28 +362,24 @@ form .row small { form .left label { float: none; line-height: normal; - margin-bottom: 5px; - padding-top: 2px; + margin-bottom: 10px; + padding-top: 1px; width: auto; } form .left input { float: left; - margin-bottom: 5px; - clear: left; - display: block; + margin-bottom: 10px; } form .radio label { float: none; line-height: normal; - margin-bottom: 5px; - padding-top: 0px; + margin-bottom: 10px; + padding-top: 1px; width: auto; } form .radio input { float: left; - margin-bottom: 5px; - clear: left; - display: block; + margin-bottom: 10px; } form .radio small { display: inline !important; @@ -413,15 +393,6 @@ form .checkbox small { margin: 0 !important; width: auto; } -.override-float { - float: none !important; - margin-bottom: 0px !important; - clear: none !important; - display: inline !important; - font-size: 10px; - line-height: 10px; - height: 10px; -} ul, ol { margin-left: 2em; @@ -468,8 +439,8 @@ ul#nav li a:hover { background-image: linear-gradient(#f1f1f1, #e0e0e0) !important; background-image: -webkit-linear-gradient(#f1f1f1, #e0e0e0) !important; background-image: -o-linear-gradient(#f1f1f1, #e0e0e0) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f1f1f1, endColorstr=#e0e0e0) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f1f1f1, endColorstr=#e0e0e0) !important; border: 1px solid #DDDDDD; -moz-border-radius: 3px; -webkit-border-radius: 3px; @@ -505,8 +476,8 @@ header { background-image: linear-gradient(#fafafa, #eaeaea) !important; background-image: -webkit-linear-gradient(#fafafa, #eaeaea) !important; background-image: -o-linear-gradient(#fafafa, #eaeaea) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; border-bottom: 1px solid #CACACA; -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); @@ -532,7 +503,7 @@ header #logo { } footer { display: table; - margin: 40px auto 50px auto; + margin: 60px auto 50px auto; width: 960px; padding-top: 10px; border-top: 1px solid #EEE; @@ -551,8 +522,8 @@ footer { background-image: linear-gradient(#fcf5c2, #fff6a9) !important; background-image: -webkit-linear-gradient(#fcf5c2, #fff6a9) !important; background-image: -o-linear-gradient(#fcf5c2, #fff6a9) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fcf5c2, endColorstr=#fff6a9) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fcf5c2, endColorstr=#fff6a9) !important; display: inline-block; padding: 5px 10px; margin-top: 10px; @@ -563,37 +534,14 @@ footer { position: relative; top: 4px; } -.configmessage { - -moz-border-radius: 10px; - -webkit-border-radius: 10px; - border-radius: 10px; - background-image: -moz-linear-gradient(#fcf5c2, #fff6a9) !important; - background-image: linear-gradient(#fcf5c2, #fff6a9) !important; - background-image: -webkit-linear-gradient(#fcf5c2, #fff6a9) !important; - background-image: -o-linear-gradient(#fcf5c2, #fff6a9) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - text-align: center; - padding: 3px 5px; - width: 400px; - margin-left: auto; - margin-right: auto; - margin-bottom: 5px; -} -.configmessage .ui-icon { - float: left; - margin-right: 5px; - position: relative; - top: 4px; -} #ajaxMsg { border: 1px solid #cccccc; background-image: -moz-linear-gradient(#ffffff, #eeeeee) !important; background-image: linear-gradient(#ffffff, #eeeeee) !important; background-image: -webkit-linear-gradient(#ffffff, #eeeeee) !important; background-image: -o-linear-gradient(#ffffff, #eeeeee) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff, endColorstr=#eeeeee) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff, endColorstr=#eeeeee) !important; -moz-border-radius: 7px; -webkit-border-radius: 7px; border-radius: 7px; @@ -631,8 +579,8 @@ footer { background-image: linear-gradient(#d3ffd7, #c2edc6) !important; background-image: -webkit-linear-gradient(#d3ffd7, #c2edc6) !important; background-image: -o-linear-gradient(#d3ffd7, #c2edc6) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#d3ffd7, endColorstr=#c2edc6) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#d3ffd7, endColorstr=#c2edc6) !important; padding: 15px 10px; text-align: left; } @@ -641,8 +589,8 @@ footer { background-image: linear-gradient(#ffd3d3, #edc4c4) !important; background-image: -webkit-linear-gradient(#ffd3d3, #edc4c4) !important; background-image: -o-linear-gradient(#ffd3d3, #edc4c4) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffd3d3, endColorstr=#edc4c4) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffd3d3, endColorstr=#edc4c4) !important; padding: 15px 10px; text-align: left; } @@ -659,8 +607,8 @@ footer { background-image: linear-gradient(#ffffff, #eeeeee) !important; background-image: -webkit-linear-gradient(#ffffff, #eeeeee) !important; background-image: -o-linear-gradient(#ffffff, #eeeeee) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff, endColorstr=#eeeeee) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff, endColorstr=#eeeeee) !important; -moz-border-radius: 7px; -webkit-border-radius: 7px; border-radius: 7px; @@ -688,8 +636,8 @@ footer { background-image: linear-gradient(#fcf5c2, #fff6a9) !important; background-image: -webkit-linear-gradient(#fcf5c2, #fff6a9) !important; background-image: -o-linear-gradient(#fcf5c2, #fff6a9) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fcf5c2, endColorstr=#fff6a9) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fcf5c2, endColorstr=#fff6a9) !important; } #updatebar .msg { font-family: "Trebuchet MS", Helvetica, Arial, sans-serif; @@ -705,8 +653,8 @@ footer { background-image: linear-gradient(#d3ffd7, #c2edc6) !important; background-image: -webkit-linear-gradient(#d3ffd7, #c2edc6) !important; background-image: -o-linear-gradient(#d3ffd7, #c2edc6) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#d3ffd7, endColorstr=#c2edc6) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#d3ffd7, endColorstr=#c2edc6) !important; padding: 15px 10px; text-align: left; } @@ -715,8 +663,8 @@ footer { background-image: linear-gradient(#ffd3d3, #edc4c4) !important; background-image: -webkit-linear-gradient(#ffd3d3, #edc4c4) !important; background-image: -o-linear-gradient(#ffd3d3, #edc4c4) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffd3d3, endColorstr=#edc4c4) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffd3d3, endColorstr=#edc4c4) !important; padding: 15px 10px; text-align: left; } @@ -727,13 +675,6 @@ footer { position: relative; margin-right: 3px; } -#dialog { - padding: 40px; -} -#dialog input#submit { - margin-left: 50px; - margin-right: auto; -} #subhead .back { float: left; margin-top: -25px; @@ -756,8 +697,8 @@ footer { background-image: linear-gradient(#f4f4f4, #e7e7e7) !important; background-image: -webkit-linear-gradient(#f4f4f4, #e7e7e7) !important; background-image: -o-linear-gradient(#f4f4f4, #e7e7e7) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f4f4f4, endColorstr=#e7e7e7) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#f4f4f4, endColorstr=#e7e7e7) !important; font-family: "Helvetica Neue", Helvetica, Arial, Geneva, sans-serif; font-size: 12px; font-weight: normal; @@ -767,8 +708,8 @@ footer { background-image: linear-gradient(#599bdc, #3072b3) !important; background-image: -webkit-linear-gradient(#599bdc, #3072b3) !important; background-image: -o-linear-gradient(#599bdc, #3072b3) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#599bdc, endColorstr=#3072b3) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#599bdc, endColorstr=#3072b3) !important; color: #FFF; border-color: #518CC6 #518CC6 #2A65A0; } @@ -880,6 +821,18 @@ div#artistheader #artistImg { overflow: hidden; text-indent: -3000px; width: 200px; + position: relative; +} +div#artistheader #artistImg.on-tour:before { + content: ''; + position: absolute; + top: 0; + left: -2px; + width: 100px; + height: 100px; + z-index: 2; + background-image: url('../images/songkick_ribon.png'); + background-repeat: no-repeat; } div#artistheader #artistBio { font-size: 16px; @@ -896,6 +849,22 @@ div#artistheader h2 a { font-weight: bold; font-family: "Trebuchet MS", Helvetica, Arial, sans-serif; } +#artistCalendar { + list-style-type: none; + margin: 0px; + display: block; + background: #FEF2EB; + padding: 10px; + font-size: 16px; +} +#artistCalendar .sk-location { + display: inline-block; + padding-left: 6px; +} +#artistCalendar .sk-logo { + width: 100px; + padding-top: 16px; +} #artist_table { background-color: #FFF; padding: 20px; @@ -920,24 +889,16 @@ div#artistheader h2 a { #artist_table th#name { min-width: 200px; text-align: left; - width:200px; } #artist_table th#album { min-width: 300px; text-align: left; } -#artist_table th#albumart, -#artist_table th#status{ - width:50px; -} - #artist_table th#status, -#artist_table th#albumart, -#artist_table th#lastupdated { +#artist_table th#albumart { min-width: 50px; text-align: left; } - #artist_table th#have { text-align: center; } @@ -946,13 +907,11 @@ div#artistheader h2 a { text-align: left; vertical-align: middle; } -#artist_table td#status, -#artist_table td#lastupdated { +#artist_table td#status { min-width: 50px; text-align: left; vertical-align: middle; } - #artist_table td#album { min-width: 300px; text-align: left; @@ -1185,8 +1144,8 @@ div#artistheader h2 a { background-image: linear-gradient(#a3e532, #90cc2a) !important; background-image: -webkit-linear-gradient(#a3e532, #90cc2a) !important; background-image: -o-linear-gradient(#a3e532, #90cc2a) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#a3e532, endColorstr=#90cc2a) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#a3e532, endColorstr=#90cc2a) !important; } .progress-container { background: #FFF; @@ -1197,13 +1156,13 @@ div#artistheader h2 a { padding: 1px; width: 100px; } -.progress-container > div { +.progress-container > div { background-image: -moz-linear-gradient(#a3e532, #90cc2a) !important; background-image: linear-gradient(#a3e532, #90cc2a) !important; background-image: -webkit-linear-gradient(#a3e532, #90cc2a) !important; background-image: -o-linear-gradient(#a3e532, #90cc2a) !important; - filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; - -ms-filter: progid:dximagetransform.microsoft.gradient(startColorstr=#fafafa, endColorstr=#eaeaea) !important; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#a3e532, endColorstr=#90cc2a) !important; + -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#a3e532, endColorstr=#90cc2a) !important; height: 14px; } .havetracks { @@ -1365,7 +1324,6 @@ div#artistheader h2 a { clear: both; } #album_table th#albumname, -#album_table th#artistname, #upcoming_table th#artistname, #wanted_table th#artistname { min-width: 150px; @@ -1388,7 +1346,6 @@ div#artistheader h2 a { vertical-align: middle; } #album_table td#albumname, -#album_table td#artistname, #album_table td#reldate, #album_table td#type, #track_table td#duration, @@ -1495,6 +1452,3 @@ table tr td#status a { .ie7 legend { margin-left: -7px; } -#preferred_bitrate_options { - margin-left: 20px; -} diff --git a/data/interfaces/default/css/style.less b/data/interfaces/default/css/style.less index 2c8c67a6..20d636d0 100644 --- a/data/interfaces/default/css/style.less +++ b/data/interfaces/default/css/style.less @@ -1,4 +1,4 @@ -// Config +// Config @import "config.less"; html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video { @@ -26,7 +26,7 @@ body { padding: 0; } -// Links +// Links a { color: @link-color; text-decoration: none; @@ -37,11 +37,11 @@ a { &.blue { color: blue; } - .ui-icon { + .ui-icon { display:inline-block; position: relative; top: 2px; - + } } .links { @@ -204,7 +204,7 @@ form { line-height: normal; max-width: 230px; margin-right: 5px; - padding: 3px 5px; + padding: 3px 5px; } small { color: #999; @@ -295,10 +295,10 @@ ul#nav { .rounded(3px); .shadow(0 1px 0 #FAFAFA); .shadow(0 1px 0 #FAFAFA inset); - -webkit-transition:color .2s ease-in; - -moz-transition:color .2s ease-in; - -o-transition:color .2s ease-in; - transition:color .2s ease-in; + -webkit-transition:color .2s ease-in; + -moz-transition:color .2s ease-in; + -o-transition:color .2s ease-in; + transition:color .2s ease-in; } &.config { height: 28px; @@ -412,7 +412,7 @@ footer { } #updatebar { - #ajaxMsg; + #ajaxMsg; display: block; .gradient(#FCF5C2,@msg-bg); } @@ -442,7 +442,7 @@ footer { &:hover { .gradient(#599BDC, #3072B3); color: #FFF; - border-color: #518CC6 #518CC6 #2A65A0; + border-color: #518CC6 #518CC6 #2A65A0; } } } @@ -504,7 +504,7 @@ div#searchbar { } } -// TABLES +// TABLES // wrappers .table_wrapper { @@ -533,8 +533,8 @@ div#searchbar { h1 { line-height: 33px; width: 450px; - img { - float:left; + img { + float:left; margin-right: 5px; } } @@ -545,7 +545,7 @@ div#nopaddingheader { text-align: center; } -// Artist +// Artist div#artistheader { margin-top: 50px; min-height: 200px; @@ -560,12 +560,26 @@ div#artistheader { overflow: hidden; text-indent: -3000px; width: 200px; + position: relative; + + &.on-tour:before { + content: ''; + position: absolute; + top: 0; + left: -2px; + width: 100px; + height: 100px; + z-index: 2; + background-image: url('../images/songkick_ribon.png'); + background-repeat: no-repeat; + } } #artistBio { font-size: 16px; line-height: 24px; margin-top: 10px; } + h1 { a { font-size: 32px; @@ -582,6 +596,25 @@ div#artistheader { } } +#artistCalendar { + list-style-type: none; + margin: 0px; + display: block; + background: #FEF2EB; + padding: 10px; + font-size: 16px; + + .sk-location { + display: inline-block; + padding-left: 6px; + } + + .sk-logo { + width: 100px; + padding-top: 16px; + } +} + #artist_table { background-color: #FFF; padding: 20px; @@ -625,7 +658,7 @@ div#artistheader { text-align: left; vertical-align: middle; } - td#album { + td#album { min-width: 300px; text-align: left; vertical-align: middle; @@ -638,7 +671,7 @@ div#artistheader { display: inline-block; } -// Album +// Album #albumheader { margin-top: 50px; min-height: 200px; @@ -733,7 +766,7 @@ div#artistheader { } } -// Manage +// Manage #manageheader { margin-top: 45px; margin-bottom: 0; @@ -777,7 +810,7 @@ div#artistheader { } } -// History +// History #history_table { background-color: #FFF; font-size: 13px; @@ -802,7 +835,7 @@ div#artistheader { } } -// Logs +// Logs #log_table { background-color: #FFF; th#timestamp { @@ -867,7 +900,7 @@ div#artistheader { font-size: 11px; vertical-align: middle; line-height: normal; - .gradient(#A3E532,#90CC2A); + .gradient(#A3E532,#90CC2A); } } } @@ -988,7 +1021,7 @@ div#artistheader { font-weight: 900; } } - li { + li { display: inline-block; margin: 5px 10px; } @@ -1041,7 +1074,7 @@ div#artistheader { &:after { clear: both; } } -// Table width +// Table width #album_table th#albumname, #upcoming_table th#artistname, #wanted_table th#artistname { min-width: 150px; text-align: center; diff --git a/data/interfaces/default/images/songkick.png b/data/interfaces/default/images/songkick.png new file mode 100644 index 0000000000000000000000000000000000000000..c18e440d7e55803baad2c801b5db1ba31695e5a9 GIT binary patch literal 4128 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 literal 0 HcmV?d00001 diff --git a/headphones/__init__.py b/headphones/__init__.py index 7f567afc..a2178e60 100644 --- a/headphones/__init__.py +++ b/headphones/__init__.py @@ -245,6 +245,7 @@ CUSTOMPORT = None CUSTOMSLEEP = None HPUSER = None HPPASS = None +SONGKICK_APIKEY = "vDtvjogcJwz6gi6J" CACHE_SIZEMB = 32 JOURNAL_MODE = None @@ -449,11 +450,11 @@ def initialize(): NZBGET_HOST = check_setting_str(CFG, 'NZBget', 'nzbget_host', '') HEADPHONES_INDEXER = bool(check_setting_int(CFG, 'Headphones', 'headphones_indexer', 0)) - + TRANSMISSION_HOST = check_setting_str(CFG, 'Transmission', 'transmission_host', '') TRANSMISSION_USERNAME = check_setting_str(CFG, 'Transmission', 'transmission_username', '') TRANSMISSION_PASSWORD = check_setting_str(CFG, 'Transmission', 'transmission_password', '') - + UTORRENT_HOST = check_setting_str(CFG, 'uTorrent', 'utorrent_host', '') UTORRENT_USERNAME = check_setting_str(CFG, 'uTorrent', 'utorrent_username', '') UTORRENT_PASSWORD = check_setting_str(CFG, 'uTorrent', 'utorrent_password', '') @@ -592,7 +593,7 @@ def initialize(): if BLACKHOLE: NZB_DOWNLOADER = 2 CONFIG_VERSION = '4' - + # Enable Headphones Indexer if they have a VIP account if CONFIG_VERSION == '4': if HPUSER and HPPASS: @@ -706,7 +707,7 @@ def launch_browser(host, port, root): if host == '0.0.0.0': host = 'localhost' - + if ENABLE_HTTPS: protocol = 'https' else: @@ -829,7 +830,7 @@ def config_write(): new_config['Transmission']['transmission_host'] = TRANSMISSION_HOST new_config['Transmission']['transmission_username'] = TRANSMISSION_USERNAME new_config['Transmission']['transmission_password'] = TRANSMISSION_PASSWORD - + new_config['uTorrent'] = {} new_config['uTorrent']['utorrent_host'] = UTORRENT_HOST new_config['uTorrent']['utorrent_username'] = UTORRENT_USERNAME diff --git a/headphones/webserve.py b/headphones/webserve.py index 130a17b6..e98704cc 100644 --- a/headphones/webserve.py +++ b/headphones/webserve.py @@ -365,12 +365,12 @@ class WebInterface(object): # else: # original_clean = None if original_clean == albums['CleanName']: - have_dict = { 'ArtistName' : albums['ArtistName'], 'AlbumTitle' : albums['AlbumTitle'] } + have_dict = { 'ArtistName' : albums['ArtistName'], 'AlbumTitle' : albums['AlbumTitle'] } have_album_dictionary.append(have_dict) headphones_albums = myDB.select('SELECT ArtistName, AlbumTitle from albums ORDER BY ArtistName') for albums in headphones_albums: - headphones_dict = { 'ArtistName' : albums['ArtistName'], 'AlbumTitle' : albums['AlbumTitle'] } - headphones_album_dictionary.append(headphones_dict) + headphones_dict = { 'ArtistName' : albums['ArtistName'], 'AlbumTitle' : albums['AlbumTitle'] } + headphones_album_dictionary.append(headphones_dict) #unmatchedalbums = [f for f in have_album_dictionary if f not in [x for x in headphones_album_dictionary]] check = set([(cleanName(d['ArtistName']).lower(), cleanName(d['AlbumTitle']).lower()) for d in headphones_album_dictionary]) @@ -382,16 +382,16 @@ class WebInterface(object): def markUnmatched(self, action=None, existing_artist=None, existing_album=None, new_artist=None, new_album=None): myDB = db.DBConnection() - + if action == "ignoreArtist": artist = existing_artist myDB.action('UPDATE have SET Matched="Ignored" WHERE ArtistName=? AND Matched = "Failed"', [artist]) - + elif action == "ignoreAlbum": artist = existing_artist album = existing_album myDB.action('UPDATE have SET Matched="Ignored" WHERE ArtistName=? AND AlbumTitle=? AND Matched = "Failed"', (artist, album)) - + elif action == "matchArtist": existing_artist_clean = helpers.cleanName(existing_artist).lower() new_artist_clean = helpers.cleanName(new_artist).lower() @@ -464,7 +464,7 @@ class WebInterface(object): librarysync.update_album_status(album_id) else: logger.info("Artist %s / Album %s already named appropriately; nothing to modify" % (existing_artist, existing_album)) - + markUnmatched.exposed = True def manageManual(self): @@ -480,7 +480,7 @@ class WebInterface(object): elif albums['Matched'] == "Manual" or albums['CleanName'] != original_clean: album_status = "Matched" manual_dict = { 'ArtistName' : albums['ArtistName'], 'AlbumTitle' : albums['AlbumTitle'], 'AlbumStatus' : album_status } - if manual_dict not in manual_albums: + if manual_dict not in manual_albums: manual_albums.append(manual_dict) manual_albums_sorted = sorted(manual_albums, key=itemgetter('ArtistName', 'AlbumTitle')) @@ -755,7 +755,7 @@ class WebInterface(object): album_json[counter] = album['AlbumTitle'] counter+=1 json_albums = json.dumps(album_json) - + cherrypy.response.headers['Content-type'] = 'application/json' return json_albums getAlbumsByArtist_json.exposed=True @@ -949,6 +949,7 @@ class WebInterface(object): "customsleep": headphones.CUSTOMSLEEP, "hpuser": headphones.HPUSER, "hppass": headphones.HPPASS, + "songkick_apikey": headphones.SONGKICK_APIKEY, "cache_sizemb": headphones.CACHE_SIZEMB, "file_permissions": headphones.FILE_PERMISSIONS, "folder_permissions": headphones.FOLDER_PERMISSIONS @@ -973,9 +974,9 @@ class WebInterface(object): def configUpdate(self, http_host='0.0.0.0', http_username=None, http_port=8181, http_password=None, launch_browser=0, api_enabled=0, api_key=None, download_scan_interval=None, update_db_interval=None, mb_ignore_age=None, nzb_search_interval=None, libraryscan_interval=None, sab_host=None, sab_username=None, sab_apikey=None, sab_password=None, - sab_category=None, nzbget_host=None, nzbget_username=None, nzbget_password=None, nzbget_category=None, transmission_host=None, transmission_username=None, transmission_password=None, - utorrent_host=None, utorrent_username=None, utorrent_password=None, nzb_downloader=0, torrent_downloader=0, download_dir=None, blackhole_dir=None, usenet_retention=None, - use_headphones_indexer=0, newznab=0, newznab_host=None, newznab_apikey=None, newznab_enabled=0, nzbsorg=0, nzbsorg_uid=None, nzbsorg_hash=None, nzbsrus=0, nzbsrus_uid=None, nzbsrus_apikey=None, omgwtfnzbs=0, omgwtfnzbs_uid=None, omgwtfnzbs_apikey=None, + sab_category=None, nzbget_host=None, nzbget_username=None, nzbget_password=None, nzbget_category=None, transmission_host=None, transmission_username=None, transmission_password=None, + utorrent_host=None, utorrent_username=None, utorrent_password=None, nzb_downloader=0, torrent_downloader=0, download_dir=None, blackhole_dir=None, usenet_retention=None, + use_headphones_indexer=0, newznab=0, newznab_host=None, newznab_apikey=None, newznab_enabled=0, nzbsorg=0, nzbsorg_uid=None, nzbsorg_hash=None, nzbsrus=0, nzbsrus_uid=None, nzbsrus_apikey=None, omgwtfnzbs=0, omgwtfnzbs_uid=None, omgwtfnzbs_apikey=None, preferred_words=None, required_words=None, ignored_words=None, preferred_quality=0, preferred_bitrate=None, detect_bitrate=0, move_files=0, torrentblackhole_dir=None, download_torrent_dir=None, numberofseeders=None, use_piratebay=0, piratebay_proxy_url=None, use_isohunt=0, use_kat=0, use_mininova=0, waffles=0, waffles_uid=None, waffles_passkey=None, whatcd=0, whatcd_username=None, whatcd_password=None, rutracker=0, rutracker_user=None, rutracker_password=None, rename_files=0, correct_metadata=0, cleanup_files=0, add_album_art=0, album_art_format=None, embed_album_art=0, embed_lyrics=0, @@ -985,7 +986,7 @@ class WebInterface(object): delete_lossless_files=0, prowl_enabled=0, prowl_onsnatch=0, prowl_keys=None, prowl_priority=0, xbmc_enabled=0, xbmc_host=None, xbmc_username=None, xbmc_password=None, xbmc_update=0, xbmc_notify=0, nma_enabled=False, nma_apikey=None, nma_priority=0, nma_onsnatch=0, synoindex_enabled=False, pushover_enabled=0, pushover_onsnatch=0, pushover_keys=None, pushover_priority=0, mirror=None, customhost=None, customport=None, - customsleep=None, hpuser=None, hppass=None, preferred_bitrate_high_buffer=None, preferred_bitrate_low_buffer=None, preferred_bitrate_allow_lossless=0, cache_sizemb=None, + customsleep=None, hpuser=None, hppass=None, songkick_apikey=None, preferred_bitrate_high_buffer=None, preferred_bitrate_low_buffer=None, preferred_bitrate_allow_lossless=0, cache_sizemb=None, enable_https=0, https_cert=None, https_key=None, file_permissions=None, folder_permissions=None, **kwargs): headphones.HTTP_HOST = http_host @@ -1120,6 +1121,7 @@ class WebInterface(object): headphones.CUSTOMSLEEP = customsleep headphones.HPUSER = hpuser headphones.HPPASS = hppass + headphones.SONGKICK_APIKEY = songkick_apikey headphones.CACHE_SIZEMB = int(cache_sizemb) headphones.FILE_PERMISSIONS = file_permissions headphones.FOLDER_PERMISSIONS = folder_permissions From 635c23dfc94ef246901f6a6ec3f0bf83579c3e38 Mon Sep 17 00:00:00 2001 From: Dan Pastusek Date: Tue, 28 Jan 2014 00:10:26 -0700 Subject: [PATCH 2/3] convert all icons to font-awesome vector based / retina compatible icons Conflicts: data/interfaces/default/artist.html --- data/interfaces/default/album.html | 16 +- data/interfaces/default/artist.html | 24 +- data/interfaces/default/artist.html.orig | 277 ++++++++++++ data/interfaces/default/base.html | 11 +- data/interfaces/default/config.html | 10 +- .../default/css/font-awesome.min.css | 4 + data/interfaces/default/css/style.css | 10 +- data/interfaces/default/css/style.less | 10 +- data/interfaces/default/extras.html | 2 +- .../default/fonts/fontawesome-webfont.eot | Bin 0 -> 38205 bytes .../default/fonts/fontawesome-webfont.svg | 414 ++++++++++++++++++ .../default/fonts/fontawesome-webfont.ttf | Bin 0 -> 80652 bytes .../default/fonts/fontawesome-webfont.woff | Bin 0 -> 44432 bytes data/interfaces/default/history.html | 10 +- data/interfaces/default/js/script.js | 38 +- data/interfaces/default/logs.html | 2 +- data/interfaces/default/manage.html | 36 +- data/interfaces/default/managealbums.html | 2 +- data/interfaces/default/manageartists.html | 2 +- data/interfaces/default/managemanual.html | 2 +- data/interfaces/default/managenew.html | 2 +- data/interfaces/default/manageunmatched.html | 4 +- data/interfaces/default/searchresults.html | 6 +- data/interfaces/default/shutdown.html | 2 +- data/interfaces/default/upcoming.html | 6 +- 25 files changed, 793 insertions(+), 97 deletions(-) create mode 100644 data/interfaces/default/artist.html.orig create mode 100644 data/interfaces/default/css/font-awesome.min.css create mode 100755 data/interfaces/default/fonts/fontawesome-webfont.eot create mode 100755 data/interfaces/default/fonts/fontawesome-webfont.svg create mode 100755 data/interfaces/default/fonts/fontawesome-webfont.ttf create mode 100755 data/interfaces/default/fonts/fontawesome-webfont.woff diff --git a/data/interfaces/default/album.html b/data/interfaces/default/album.html index c3de67cb..008dac4e 100644 --- a/data/interfaces/default/album.html +++ b/data/interfaces/default/album.html @@ -7,17 +7,17 @@ <%def name="headerIncludes()">
- Delete Album + Delete Album %if album['Status'] == 'Skipped': - Mark Album as Wanted + Mark Album as Wanted %elif album['Status'] == 'Wanted': - Force Check - Mark Album as Skipped + Force Check + Mark Album as Skipped %else: - Retry Download - Try New Version + Retry Download + Try New Version %endif - Choose Alternate Release + Choose Alternate Release - Edit Search Term + Edit Search Term