aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--youtube/common.py3
-rw-r--r--youtube/shared.css72
-rw-r--r--youtube/watch.py7
-rw-r--r--youtube/youtube.py9
-rw-r--r--yt_watch_template.html100
5 files changed, 104 insertions, 87 deletions
diff --git a/youtube/common.py b/youtube/common.py
index 384d560..f867ea9 100644
--- a/youtube/common.py
+++ b/youtube/common.py
@@ -169,7 +169,8 @@ def fetch_url(url, headers=(), timeout=15, report_text=None):
content = gzip.decompress(content)
return content
-mobile_ua = (('User-Agent', 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1'),)
+mobile_user_agent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1'
+mobile_ua = (('User-Agent', mobile_user_agent),)
def dict_add(*dicts):
for dictionary in dicts[1:]:
diff --git a/youtube/shared.css b/youtube/shared.css
index cc640b4..712a2fe 100644
--- a/youtube/shared.css
+++ b/youtube/shared.css
@@ -176,78 +176,6 @@ address{
-
-.full-item{
- display: grid;
- grid-template-rows: 0fr 0fr 0fr 0fr 20px 0fr 0fr;
- grid-template-columns: 1fr 1fr;
- align-content: start;
-}
- .full-item video{
- grid-column: 1 / span 2;
- grid-row: 1;
- }
- .full-item .title{
- grid-column: 1 / span 2;
- grid-row:2;
- min-width: 0;
- }
- .full-item .is-unlisted{
- background-color: #d0d0d0;
- justify-self:start;
- padding-left:2px;
- padding-right:2px;
- }
- .full-item>address{
- grid-column: 1;
- grid-row: 4;
- justify-self: start;
- }
- .full-item .views{
- grid-column: 2;
- grid-row: 4;
- justify-self:end;
- }
- .full-item time{
- grid-column: 1;
- grid-row: 5;
- justify-self:start;
- }
- .full-item .likes-dislikes{
- grid-column: 2;
- grid-row: 5;
- justify-self:end;
- }
- .full-item .download-dropdown{
- grid-column:1;
- grid-row: 6;
- }
- .full-item .checkbox{
- justify-self:end;
-
- grid-row: 6;
- grid-column: 2;
- }
- .full-item .description{
- background-color:#d0d0d0;
- margin-top:8px;
- white-space: pre-wrap;
- min-width: 0;
-
- grid-column: 1 / span 2;
- grid-row: 7;
- }
- .full-item .music-list{
- grid-row:8;
- grid-column: 1 / span 2;
- }
- .full-item .comments{
- grid-row: 9;
- }
- .full-item .more-comments{
- grid-row: 10;
- }
-
.medium-item-box{
display:grid;
diff --git a/youtube/watch.py b/youtube/watch.py
index d98cd3f..ad3c448 100644
--- a/youtube/watch.py
+++ b/youtube/watch.py
@@ -385,7 +385,6 @@ def get_watch_page(query_string):
music_list_html += '''</tr>\n'''
music_list_html += '''</table>\n'''
-
download_options = ''
for format in info['formats']:
@@ -396,6 +395,10 @@ def get_watch_page(query_string):
note = html.escape(downloader._format_note(format)),
)
+ post_comment_url = common.URL_ORIGIN + "/post_comment?v=" + id
+ post_comment_link = '''<a class="post-comment-link" href="''' + post_comment_url + '''">Post comment</a>'''
+
+
page = yt_watch_template.substitute(
video_title = html.escape(info["title"]),
page_title = html.escape(info["title"]),
@@ -411,6 +414,8 @@ def get_watch_page(query_string):
description = html.escape(info["description"]),
video_sources = formats_html(sorted_formats) + subtitles_html(info),
related = related_videos_html,
+ post_comment_link = post_comment_link,
+ comment_count = '',
comments = comments_html,
more_comments_button = more_comments_button,
music_list = music_list_html,
diff --git a/youtube/youtube.py b/youtube/youtube.py
index 446de0d..3c31fa4 100644
--- a/youtube/youtube.py
+++ b/youtube/youtube.py
@@ -1,6 +1,6 @@
import mimetypes
import urllib.parse
-from youtube import local_playlist, watch, search, playlist, channel, comments, common
+from youtube import local_playlist, watch, search, playlist, channel, comments, common, account_functions
YOUTUBE_FILES = (
"/shared.css",
"/opensearch.xml",
@@ -52,6 +52,9 @@ def youtube(env, start_response):
result = common.fetch_url('https://www.youtube.com' + path + ('?' + query_string if query_string else ''))
result = result.replace(b"align:start position:0%", b"")
return result
+ elif path == "/post_comment":
+ start_response('200 OK', () )
+ return account_functions.get_post_comment_page(query_string).encode()
else:
start_response('404 Not Found', () )
return b'404 Not Found'
@@ -77,6 +80,10 @@ def youtube(env, start_response):
else:
start_response('400 Bad Request', ())
return b'400 Bad Request'
+ elif path == "/post_comment":
+ start_response('200 OK', () )
+ return account_functions.post_comment(query_string, fields).encode()
+
else:
start_response('404 Not Found', ())
return b'404 Not Found'
diff --git a/yt_watch_template.html b/yt_watch_template.html
index 0765147..2e993f8 100644
--- a/yt_watch_template.html
+++ b/yt_watch_template.html
@@ -22,8 +22,93 @@
grid-template-columns: 1fr 640px;
}
.full-item{
- grid-column: 2;
+ display: grid;
+ grid-column: 2;
+ grid-template-rows: 0fr 0fr 0fr 0fr 20px 0fr 0fr;
+ grid-template-columns: 1fr 1fr;
+ align-content: start;
}
+ .full-item > video{
+ grid-column: 1 / span 2;
+ grid-row: 1;
+ }
+ .full-item > .title{
+ grid-column: 1 / span 2;
+ grid-row:2;
+ min-width: 0;
+ }
+ .full-item > .is-unlisted{
+ background-color: #d0d0d0;
+ justify-self:start;
+ padding-left:2px;
+ padding-right:2px;
+ }
+ .full-item > address{
+ grid-column: 1;
+ grid-row: 4;
+ justify-self: start;
+ }
+ .full-item > .views{
+ grid-column: 2;
+ grid-row: 4;
+ justify-self:end;
+ }
+ .full-item > time{
+ grid-column: 1;
+ grid-row: 5;
+ justify-self:start;
+ }
+ .full-item > .likes-dislikes{
+ grid-column: 2;
+ grid-row: 5;
+ justify-self:end;
+ }
+ .full-item > .download-dropdown{
+ grid-column:1;
+ grid-row: 6;
+ }
+ .full-item > .checkbox{
+ justify-self:end;
+
+ grid-row: 6;
+ grid-column: 2;
+ }
+ .full-item > .description{
+ background-color:#d0d0d0;
+ margin-top:8px;
+ white-space: pre-wrap;
+ min-width: 0;
+
+ grid-column: 1 / span 2;
+ grid-row: 7;
+ }
+ .full-item .music-list{
+ grid-row:8;
+ grid-column: 1 / span 2;
+ }
+ .comment-count{
+ font-weight:bold;
+ grid-row:9;
+ grid-column: 1 / span 2;
+ }
+ .post-comment-link{
+ grid-row:10;
+ grid-column: 1;
+ justify-self:start;
+ }
+ .full-item .comments{
+ grid-column: 1 / span 2;
+ grid-row: 11;
+ margin-top:10px;
+ }
+ .comment{
+ width:640px;
+ }
+ .full-item .more-comments{
+ grid-row: 12;
+ grid-column: 1 / span 2;
+ }
+
.music-list{
background-color: #d0d0d0;
}
@@ -39,17 +124,6 @@
font-weight:bold;
margin-bottom:5px;
}
- .comments{
- grid-column: 1 / span 2;
- grid-row: 6;
- margin-top:10px;
- }
- .comment{
- width:640px;
- }
- .more-comments{
- grid-column: 1 / span 2;
- }
#right{
background-color:#cccccc;
grid-column: 2;
@@ -129,6 +203,8 @@ $download_options
<div class="music-list">
$music_list
</div>
+ <div class="comment-count">$comment_count</div>
+ $post_comment_link
<section class="comments">
$comments
</section>