김건

2차 추가 개발사항. Input value를 video_id만 입력하는 것에서 video url을 전체 입력할 수 있도록 변경

...@@ -9,7 +9,7 @@ import requests ...@@ -9,7 +9,7 @@ import requests
9 import argparse 9 import argparse
10 import lxml.html 10 import lxml.html
11 import io 11 import io
12 - 12 +from urllib.parse import urlparse, parse_qs
13 from lxml.cssselect import CSSSelector 13 from lxml.cssselect import CSSSelector
14 14
15 YOUTUBE_COMMENTS_URL = 'https://www.youtube.com/all_comments?v={youtube_id}' 15 YOUTUBE_COMMENTS_URL = 'https://www.youtube.com/all_comments?v={youtube_id}'
...@@ -130,6 +130,23 @@ def goto_Menu(result_List) : ...@@ -130,6 +130,23 @@ def goto_Menu(result_List) :
130 else : 130 else :
131 print('Not Found') 131 print('Not Found')
132 132
133 +## input video 값 parsing
134 +def video_id(value):
135 + query = urlparse(value)
136 + if query.hostname == 'youtu.be':
137 + return query.path[1:]
138 + if query.hostname in ('www.youtube.com', 'youtube.com'):
139 + if query.path == '/watch':
140 + p = parse_qs(query.query)
141 + return p['v'][0]
142 + if query.path[:7] == '/embed/':
143 + return query.path.split('/')[2]
144 + if query.path[:3] == '/v/':
145 + return query.path.split('/')[2]
146 + # fail?
147 + return None
148 +
149 +
133 def main(): 150 def main():
134 151
135 #parser = argparse.ArgumentParser(add_help=False, description=('Download Youtube comments without using the Youtube API')) 152 #parser = argparse.ArgumentParser(add_help=False, description=('Download Youtube comments without using the Youtube API'))
...@@ -138,6 +155,8 @@ def main(): ...@@ -138,6 +155,8 @@ def main():
138 #parser.add_argument('--output', '-o', help='Output filename (output format is line delimited JSON)') 155 #parser.add_argument('--output', '-o', help='Output filename (output format is line delimited JSON)')
139 #parser.add_argument('--limit', '-l', type=int, help='Limit the number of comments') 156 #parser.add_argument('--limit', '-l', type=int, help='Limit the number of comments')
140 Youtube_id1 = input('Youtube_ID 입력 :') 157 Youtube_id1 = input('Youtube_ID 입력 :')
158 + ## Cutting Link를 받고 id만 딸 수 있도록
159 + Youtube_id1 = video_id(Youtube_id1)
141 Output1 = input('결과를 받을 파일 입력 :') 160 Output1 = input('결과를 받을 파일 입력 :')
142 Limit1 = input('제한 갯수 입력 : ') 161 Limit1 = input('제한 갯수 입력 : ')
143 ##### argument로 받지 않고 input으로 받기 위한 것 162 ##### argument로 받지 않고 input으로 받기 위한 것
...@@ -186,7 +205,8 @@ def main(): ...@@ -186,7 +205,8 @@ def main():
186 if limit and count >= limit: 205 if limit and count >= limit:
187 break 206 break
188 print('\nDone!') 207 print('\nDone!')
189 - goto_Menu(result_List) 208 + return result_List
209 + #goto_Menu(result_List)
190 210
191 211
192 212
......
1 +import downloader
2 +from scraper import scrape_url
3 +from time import sleep
4 +from urllib.parse import urlparse
5 +
6 +def call_main ():
7 + print(' Comment Thread 생성중 \n')
8 +
9 + sleep(1)
10 + print(' **************************************************************')
11 + print(' **************************************************************')
12 + print(' **************************************************************')
13 + print(' **************** 생성 완료 정보를 입력하세요. **************** ')
14 + print(' **************************************************************')
15 + print(' **************************************************************')
16 + print(' **************************************************************')
17 + a = downloader.main()
18 + return a
19 +
20 +CommentList = call_main()