Youtube-FirstCommentBot
Youtube-FirstCommentBot copied to clipboard
Exception: Got empty response when trying to get the self username.
Hi this app is really neat but I can't seem to make it work. I followed the instructions on how to set it up and managed to get to the point where I run the command on how to add channel but I am getting this error
When I issue this command
python youbot/run.py -c confs/generic.yml -l logs/generic.log -m add_channel -u <random channel id>
The error I am getting
2022-06-29 17:43:42 FancyLogger INFO Logger is set. Log file path: /home/user/Youtube-FirstCommentBot/logs/generic.log
Configuration file loaded successfully from path: /home/user/Youtube-FirstCommentBot/confs/generic.yml
Configuration Tag: generic
2022-06-29 17:43:44 [generic] YoutubeApi ERROR Got empty response when trying to get the self username.
2022-06-29 17:43:44 [generic] Main ERROR Got empty response when trying to get the self username.
Traceback (most recent call last):
File "youbot/run.py", line 173, in <module>
main()
File "youbot/run.py", line 160, in main
youtube = YoutubeManager(config=you_conf['config'],
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_manager.py", line 72, in __init__
super().__init__(config, tag)
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_api.py", line 62, in __init__
super().__init__(config, tag)
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_api.py", line 44, in __init__
self.channel_name, self.channel_id = self._get_my_username_and_id()
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_api.py", line 107, in _get_my_username_and_id
raise Exception(error_msg)
Exception: Got empty response when trying to get the self username.
Traceback (most recent call last):
File "youbot/run.py", line 176, in <module>
raise e
File "youbot/run.py", line 173, in <module>
main()
File "youbot/run.py", line 160, in main
youtube = YoutubeManager(config=you_conf['config'],
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_manager.py", line 72, in __init__
super().__init__(config, tag)
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_api.py", line 62, in __init__
super().__init__(config, tag)
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_api.py", line 44, in __init__
self.channel_name, self.channel_id = self._get_my_username_and_id()
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_api.py", line 107, in _get_my_username_and_id
raise Exception(error_msg)
Exception: Got empty response when trying to get the self username.
Hello, @savagex9000 . The Youtube API is unreliable when using channel usernames. Try replacing the -u
option with the -i
option and use the channel id instead. If you don't know the channel id, you can use this website to do so.
Hi @drkostas, Thanks for the quick response. I am still getting the same error. I might be doing something wrong.
(youbot) user@dracov:~/Youtube-FirstCommentBot$ python youbot/run.py -c confs/generic.yml -l logs/generic.log -m add_channel -i <any channel id I used always same error>
2022-06-29 23:47:03 FancyLogger INFO Logger is set. Log file path: /home/user/Youtube-FirstCommentBot/logs/generic.log
Configuration file loaded successfully from path: /home/user/Youtube-FirstCommentBot/confs/generic.yml
Configuration Tag: generic
Your browser has been opened to visit:
<removed this part>
If your browser is on a different machine then exit and re-run this
application with the command-line parameter
--noauth_local_webserver
Authentication successful.
2022-06-29 23:48:37 [generic] YoutubeApi ERROR Got empty response when trying to get the self username.
2022-06-29 23:48:38 [generic] Main ERROR Got empty response when trying to get the self username.
Traceback (most recent call last):
File "youbot/run.py", line 173, in <module>
main()
File "youbot/run.py", line 160, in main
youtube = YoutubeManager(config=you_conf['config'],
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_manager.py", line 72, in __init__
super().__init__(config, tag)
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_api.py", line 62, in __init__
super().__init__(config, tag)
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_api.py", line 44, in __init__
self.channel_name, self.channel_id = self._get_my_username_and_id()
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_api.py", line 107, in _get_my_username_and_id
raise Exception(error_msg)
Exception: Got empty response when trying to get the self username.
Traceback (most recent call last):
File "youbot/run.py", line 176, in <module>
raise e
File "youbot/run.py", line 173, in <module>
main()
File "youbot/run.py", line 160, in main
youtube = YoutubeManager(config=you_conf['config'],
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_manager.py", line 72, in __init__
super().__init__(config, tag)
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_api.py", line 62, in __init__
super().__init__(config, tag)
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_api.py", line 44, in __init__
self.channel_name, self.channel_id = self._get_my_username_and_id()
File "/home/user/anaconda3/envs/youbot/lib/python3.8/site-packages/youbot-2.0-py3.8.egg/youbot/youtube_utils/youtube_api.py", line 107, in _get_my_username_and_id
raise Exception(error_msg)
Exception: Got empty response when trying to get the self username.
Can you make sure that the Google account you are using for the YT API has a corresponding Youtube channel? If it has, can you go to this page, at the "Try this method section" and execute it for the following selection?
part: snippet
mine: true
Use the same Google account for authentication. The json response should have your YT channel name at the "items": [ {"snippet": {"title": ...
section.
Hmmm. Ok, so if I use the google account where the YT API is and went to page you suggested the output I get is the YT channel for that google account. But If I use the other google account that is trying to use the YT API I get a short output that account does not have a YT Channel. That other google account is the same account that I allowed as test user to use YTBOT.
@savagex9000 Can you show me the configuration file you are using?
@drkostas this is saved on a file called .env
export DROPBOX_API_KEY=<removed>
export MYSQL_HOST=localhost
export MYSQL_USERNAME=root
export MYSQL_PASSWORD=<removed>
export MYSQL_DB_NAME=ytbot
export EMAIL_ADDRESS=<removed, used a gmail allowed to use the ytbot api>
export GMAIL_API_KEY=123 (I dont remember what this is I just leave it there)
export CLIENT_ID_GEN=<removed>
export CLIENT_SECRET_GEN=<removed>
export USERNAME_GEN=<removed>
user1@dracov:~/Youtube-FirstCommentBot$ pwd
/home/user1/Youtube-FirstCommentBot
Sorry, I meant the yml configuration file. Can you send me that? Also, you don't need the EMAIL_ADDRESS
and GMAIL_API_KEY
lines here.
No worries here are the yml confs files.
user1@dracov:~/Youtube-FirstCommentBot/confs$ cat accumulator.yml
tag: accumulator
datastore:
- config:
hostname: !ENV ${MYSQL_HOST} # localhost or the IP of your DB
username: !ENV ${MYSQL_USERNAME} # DB username
password: !ENV ${MYSQL_PASSWORD} # DB password
db_name: !ENV ${MYSQL_DB_NAME} # The name of your DB/schema
port: 3306
type: mysql
youtube:
- config:
credentials:
- client_id: !ENV ${CLIENT_ID_ACC} # YouTube client ID (see Readme)
client_secret: !ENV ${CLIENT_SECRET_ACC} # YouTube client secret (see Readme)
api_version: v3
read_only_scope: https://www.googleapis.com/auth/youtube.force-ssl
username: !ENV ${USERNAME_ACC} # Can be omitted (automatically derived). Useful when you are using a different api key for the accumulator
comment_search_term: !ENV ${SEARCH_TERM_ACC} # Can be omitted (username will be used instead which sometimes doesn't work). It is used to search for your comment data under a video
sleep_time: !ENV ${SLEEP_TIME_ACC} # Number of seconds to wait until checking for new videos again. Increase this if you are getting api limit errors
num_comments_to_check: !ENV ${NUM_COMMENTS_ACC} # Latest N number of comments to check and update their metadata
load_keys_from_cloud: true # cloudstore config is required
keys_path: keys # if true, cloudstore config is required. Loads the YT keys from the specified dropbox folder
type: normal # normal, simulated
cloudstore: # Optional
- config:
api_key: !ENV ${DROPBOX_API_KEY} # Dropbox api key, see Readme
logs_folder_path: /yt-commenter/logs # The Dropbox path where the log files are going to be being backed up
keys_folder_path: /yt-commenter/keys # The Dropbox path where the keys are going to be copied locally from
type: dropbox
```
user1@dracov:~/Youtube-FirstCommentBot/confs$ cat commenter.yml tag: commenter datastore:
- config: hostname: !ENV ${MYSQL_HOST} # localhost or the IP of your DB username: !ENV ${MYSQL_USERNAME} # DB username password: !ENV ${MYSQL_PASSWORD} # DB password db_name: !ENV ${MYSQL_DB_NAME} # The name of your DB/schema port: 3306 type: mysql youtube:
- config: credentials: - client_id: !ENV ${CLIENT_ID_COMM} # YouTube client ID (see Readme) client_secret: !ENV ${CLIENT_SECRET_COMM} # YouTube client secret (see Readme) - client_id: !ENV ${CLIENT_ID_COMM} # YouTube client ID (see Readme) client_secret: !ENV ${CLIENT_SECRET_COMM} # YouTube client secret (see Readme) api_version: v3 read_only_scope: https://www.googleapis.com/auth/youtube.force-ssl username: !ENV ${USERNAME_COMM} # Can be omitted (automatically derived). Useful when you are using a different api key for the accumulator load_keys_from_cloud: true # cloudstore config is required keys_path: keys # if true, cloudstore config is required. Loads the YT keys from the specified dropbox folder sleep_time: !ENV ${SLEEP_TIME_COMM} # Number of seconds to wait until checking for new videos again. Increase this if you are getting api limit errors fast_sleep_time: !ENV ${FAST_SLEEP_TIME_COMM} # Number of seconds to wait when on fast mode slow_sleep_time: !ENV ${SLOW_SLEEP_TIME_COMM} # Number of seconds to wait when on slow mode max_posted_hours: !ENV ${MAX_POSTED_HOURS_COMM} # max num. of hours to check back for posted videos. Set it to 1 the first time your run the commenter type: !ENV ${YT_API_TYPE_COMM} # normal, simulated, parallel comments: # options: normal, simulated (simulated is just for testing)
- config:
local_folder_name: comments
dropbox_folder_name: /yt-commenter/comments
type: !ENV ${COMMENTS_TYPE} # local, dropbox (should set
cloudstore
config), or mysql (not implemented) cloudstore: # Optional - config: api_key: !ENV ${DROPBOX_API_KEY} # Dropbox api key, see Readme logs_folder_path: /yt-commenter/logs # The Dropbox path where the log files are going to be being backed up keys_folder_path: /yt-commenter/keys # The Dropbox path where the keys are going to be copied locally from reload_data_every: !ENV ${RELOAD_DATA_EVERY} # Every how many # of loops in the commenter() to reload data and backup logs type: dropbox #emailer: # Not implemented yet
- config:
email_address: !ENV ${EMAIL_ADDRESS}
api_key: !ENV ${GMAIL_API_KEY}
type: gmail
user1@dracov:~/Youtube-FirstCommentBot/confs$ cat generic.yml tag: generic datastore:
- config: hostname: !ENV ${MYSQL_HOST} # localhost or the IP of your DB username: !ENV ${MYSQL_USERNAME} # DB username password: !ENV ${MYSQL_PASSWORD} # DB password db_name: !ENV ${MYSQL_DB_NAME} # The name of your DB/schema port: 3306 type: mysql youtube:
- config: credentials: - client_id: !ENV ${CLIENT_ID_GEN} # YouTube client ID (see Readme) client_secret: !ENV ${CLIENT_SECRET_GEN} # YouTube client secret (see Readme) api_version: v3 read_only_scope: https://www.googleapis.com/auth/youtube.force-ssl username: !ENV ${USERNAME_GEN} # Can be omitted (automatically derived). Useful when you are using a different api key for the accumulator load_keys_from_cloud: true # if true, cloudstore config is required. Loads the YT keys from the specified dropbox folder keys_path: keys # The local path of the YT keys type: normal # options: normal, simulated (simulated is just for testing) cloudstore: # Optional
- config: api_key: !ENV ${DROPBOX_API_KEY} # Dropbox api key, see Readme logs_folder_path: /yt-commenter/logs # The Dropbox path where the log files are going to be being backed up keys_folder_path: /yt-commenter/keys # The Dropbox path where the keys are going to be copied locally from type: dropbox