schollz / twittermatic

7 stars 3 forks source link

signin? #18

Open tdinformatique opened 8 years ago

tdinformatique commented 8 years ago

Database.init_db: INFO Setting up database Database.initdb: INFO Database setup complete /home/(**)/twittermatic-master/lib.py:95: ResourceWarning: unclosed file <_io.TextIOWrapper name='data/default.json' mode='r' encoding='UTF-8'> self.settings = json.load(open(settingsFile, 'r')) data/default.json: DEBUG Initialized data/default.json: DEBUG Signing in... data/default.json: DEBUG Using login method 2 Traceback (most recent call last): File "essai.py", line 4, in bot.liveSearch('#cats') File "/home/(_)/twittermatic-master/lib.py", line 533, in liveSearch self.signin() File "/home/(_)/twittermatic-master/lib.py", line 188, in signin self.getStats() File "/home/(**)/twittermatic-master/lib.py", line 1042, in _getStats following[0].text, following[1].text, following[2].text)) IndexError: list index out of range sys:1: ResourceWarning: unclosed file <_io.BufferedWriter name='/dev/null'> /usr/lib/python3.4/importlib/_bootstrap.py:2150: ImportWarning: sys.meta_path is empty

I just replace "catch:" in lib.py with "except:"

You're work is important for us, so I'll test it

schollz commented 8 years ago

Silly me! I was in Matlab mode. I changed it in https://github.com/schollz/twittermatic/commit/12851be434b4e401e9a43a3681a7278d6278d379

tdinformatique commented 8 years ago

this problem seems solved, but I'm still the same error

schollz commented 8 years ago

I see that now, I should've added another try-except block. I've added it in https://github.com/schollz/twittermatic/commit/b3a3ef55c9f782c14eb01791bcd514701f8bb5b1, so let me know if that works!

tdinformatique commented 8 years ago

It's seems to be cool, but I can not insert tweet into sqlite database

schollz commented 8 years ago

Are you getting an error? Or just no tweets appear in the sqlite database?

tdinformatique commented 8 years ago

no tweet appear in database ? You've an Idea ?

tdinformatique commented 8 years ago

I just want to search tweet with keywords, without bot replies. But I've no tweet in database. What's wrong with what I do?

schollz commented 8 years ago

If your just searching for tweets, try this:

from lib import *
bot = TwitterBot('yourlogininfo.json')
collectEveryTweet('twitterhandle')

When you run that using Python3 you will see some output. If there is an error, it will be in the output, so copy and paste it here so I can help figure out whats going on.

tdinformatique commented 8 years ago

collectEveryTweet, is existing ?

schollz commented 8 years ago

Sorry it should be

from lib import *
bot = TwitterBot('yourlogininfo.json')
bot.collectTweets('twitterhandle')
tdinformatique commented 8 years ago

Yes, it's what I do and I can get with all tweets of a page. But is-it possible to get all tweets of a tweet search ?

tdinformatique commented 8 years ago

I 've donne #!/usr/bin/python3.2 from lib import *

bot = TwitterBot('data/default.json') # Load bot bot.collectTweets('bots futur')

But in this case : Database.init_db: INFO Setting up database Database.init_db: INFO Database setup complete /home/(...)twittermatic-master/lib.py:95: ResourceWarning: unclosed file <_io.TextIOWrapper name='data/default.json' mode='r' encoding='UTF-8'> self.settings = json.load(open(settingsFile, 'r')) data/default.json: DEBUG Initialized data/default.json: DEBUG Signing in... data/default.json: DEBUG Using login method 2 data/default.json: DEBUG https://twitter.com/ Traceback (most recent call last): File "essay.py", line 5, in bot.collectTweets('bots futur') File "/home/(...)twittermatic-master/lib.py", line 349, in collectTweets self.saveTwitterHandle(twitterhandle) File "/home/(...)twittermatic-master/lib.py", line 314, in saveTwitterHandle name = self.driver.find_element(By.CSS_SELECTOR,"a.ProfileHeaderCard-nameLink").text.split() File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/webdriver.py", line 712, in find_element {'using': by, 'value': value})['value'] File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/webdriver.py", line 201, in execute self.error_handler.check_response(response) File "/usr/local/lib/python3.4/dist-packages/selenium/webdriver/remote/errorhandler.py", line 181, in check_response raise exceptionclass(message, screen, stacktrace) selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: {"method":"css selector","selector":"a.ProfileHeaderCard-nameLink"} Stacktrace: at FirefoxDriver.prototype.findElementInternal (file:///tmp/tmpqptsqzn6/extensions/fxdriver@googlecode.com/components/driver-component.js:10659) at FirefoxDriver.prototype.findElement (file:///tmp/tmpqptsqzn6/extensions/fxdriver@googlecode.com/components/driver-component.js:10668) at DelayedCommand.prototype.executeInternal/h (file:///tmp/tmpqptsqzn6/extensions/fxdriver@googlecode.com/components/command-processor.js:12534) at DelayedCommand.prototype.executeInternal (file:///tmp/tmpqptsqzn6/extensions/fxdriver@googlecode.com/components/command-processor.js:12539) at DelayedCommand.prototype.execute/< (file:///tmp/tmpqptsqzn6/extensions/fxdriver@googlecode.com/components/command-processor.js:12481) sys:1: ResourceWarning: unclosed file <_io.BufferedWriter name='/dev/null'> /usr/lib/python3.4/importlib/_bootstrap.py:2150: ImportWarning: sys.meta_path is empty

I'm searching a way to use keywords

schollz commented 8 years ago

Okay it looks like your able to sign on now, which is good.

Currently there is no function to just search keywords and save all the tweets. However it would be easy to modify a current function to do this. Just look at this line and remove the 'from:' + from it. I haven't tested this, but I will try it out when I get a chance.

tdinformatique commented 8 years ago

It seems that don't working. Perhaps a new function will be better to search on twitter search keyword

tdinformatique commented 8 years ago

I'm not sure but I've got a problem with Alchemy My script : 

!/usr/bin/python3.2

from lib import *

bot = TwitterBot('data/default.json') # Load bot bot.collectTweets('felixsalmon')

Results : Database.init_db: INFO Setting up database Database.init_db: INFO Database setup complete /(...)/python/twittermatic-master/twittermatic-master/lib.py:95: ResourceWarning: unclosed file <_io.TextIOWrapper name='data/default.json' mode='r' encoding='UTF-8'> self.settings = json.load(open(settingsFile, 'r')) data/default.json: DEBUG Initialized data/default.json: DEBUG Signing in... data/default.json: DEBUG Using login method 2 data/default.json: DEBUG https://twitter.com/ {'handle': b'felixsalmon', 'website': b'fusion.net/author/felix-s\xe2\x80\xa6', 'location': b'NYC', 'firstname': b'Felix', 'lastname': b'Salmon', 'bio': None} Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 824, in _execute_context context = constructor(dialect, self, conn, *args) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 448, in _init_compiled self.__process_defaults() File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 823, in __process_defaults val = self.get_insert_default(c) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 779, in get_insert_default return self._exec_default(column.default, column.type) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 765, in _exec_default return default.arg(self) TypeError: utcnow() takes no arguments (1 given)

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "/(...)/python/twittermatic-master/twittermatic-master/data/database_commands.py", line 162, in insertTwitterHandler session.commit() File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 721, in commit self.transaction.commit() File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 354, in commit self._prepare_impl() File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl self.session.flush() File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush self._flush(objects) File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush transaction.rollback(_capture_exception=True) File "/usr/lib/python3/dist-packages/sqlalchemy/util/langhelpers.py", line 60, in exit compat.reraise(exc_type, exc_value, exc_tb) File "/usr/lib/python3/dist-packages/sqlalchemy/util/compat.py", line 184, in reraise raise value File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush flush_context.execute() File "/usr/lib/python3/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute rec.execute(self) File "/usr/lib/python3/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute uow File "/usr/lib/python3/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj table, insert) File "/usr/lib/python3/dist-packages/sqlalchemy/orm/persistence.py", line 569, in _emit_insert_statements execute(statement, params) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement compiled_sql, distilled_params File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 828, in _execute_context None, None) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/lib/python3/dist-packages/sqlalchemy/util/compat.py", line 188, in raise_from_cause reraise(type(exception), exception, tb=exc_tb, cause=exc_value) File "/usr/lib/python3/dist-packages/sqlalchemy/util/compat.py", line 183, in reraise raise value.with_traceback(tb) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 824, in _execute_context context = constructor(dialect, self, conn, args) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 448, in _init_compiled self.__process_defaults() File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 823, in __process_defaults val = self.get_insert_default(c) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 779, in get_insert_default return self._exec_default(column.default, column.type) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 765, in _exec_default return default.arg(self) sqlalchemy.exc.StatementError: utcnow() takes no arguments (1 given) (original cause: TypeError: utcnow() takes no arguments (1 given)) 'INSERT INTO handlers (handle, firstname, lastname, location, website, bio, "Timestamp") VALUES (?, ?, ?, ?, ?, ?, ?)' [{'handle': b'felixsalmon', 'website': b'fusion.net/author/felix-s\xe2\x80\xa6', 'location': b'NYC', 'firstname': b'Felix', 'lastname': b'Salmon', 'bio': None}] File "essay.py", line 5, in bot.collectTweets('felixsalmon') File "/(...)/python/twittermatic-master/twittermatic-master/lib.py", line 349, in collectTweets self.saveTwitterHandle(twitterhandle) File "/(...)/python/twittermatic-master/twittermatic-master/lib.py", line 331, in saveTwitterHandle database_commands.insertTwitterHandler(user) File "/(...)/python/twittermatic-master/twittermatic-master/data/database_commands.py", line 166, in insertTwitterHandler traceback.print_stack() ERROR OCCURED WHEN INSERTING USER utcnow() takes no arguments (1 given) (original cause: TypeError: utcnow() takes no arguments (1 given)) 'INSERT INTO handlers (handle, firstname, lastname, location, website, bio, "Timestamp") VALUES (?, ?, ?, ?, ?, ?, ?)' [{'handle': b'felixsalmon', 'website': b'fusion.net/author/felix-s\xe2\x80\xa6', 'location': b'NYC', 'firstname': b'Felix', 'lastname': b'Salmon', 'bio': None}] data/default.json: DEBUG https://twitter.com/search?f=tweets&vertical=default&q=from%3Afelixsalmon&src=typd _getTweetStats: DEBUG Getting tweet text _getTweetStats: DEBUG Getting tweet time _getTweetStats: DEBUG Getting tweet type _getTweetStats: DEBUG Getting tweet itemid _getTweetStats: DEBUG Full tweet text: En réponse à ryan sutton Felix Salmon Compte certifié @felixsalmon 16 h il y a 16 heures @qualityrye the day I discovered anchovy juice at Eataly was definitely a life-changing pivot point in my existence Afficher la conversation Répondre Retweeter J'aime 1 Plus _getTweetStats: DEBUG Tweet stats: {"handle": "@felixsalmon", "itemid": "708418991048552449", "retweets": -1, "text": "@qualityrye the day I discovered anchovy juice at Eataly was definitely a life-changing pivot point in my existence", "time": 1457735223, "type": "tweet", "favorites": -1} Traceback (most recent call last): File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 824, in _execute_context context = constructor(dialect, self, conn, args) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 448, in _init_compiled self.__process_defaults() File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 823, in __process_defaults val = self.get_insert_default(c) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 779, in get_insert_default return self._exec_default(column.default, column.type) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 765, in _exec_default return default.arg(self) TypeError: utcnow() takes no arguments (1 given)

The above exception was the direct cause of the following exception:

Traceback (most recent call last): File "/(...)/python/twittermatic-master/twittermatic-master/data/database_commands.py", line 110, in insertTweet session.commit() File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 721, in commit self.transaction.commit() File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 354, in commit self._prepare_impl() File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 334, in _prepare_impl self.session.flush() File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 1818, in flush self._flush(objects) File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 1936, in _flush transaction.rollback(_capture_exception=True) File "/usr/lib/python3/dist-packages/sqlalchemy/util/langhelpers.py", line 60, in exit compat.reraise(exc_type, exc_value, exc_tb) File "/usr/lib/python3/dist-packages/sqlalchemy/util/compat.py", line 184, in reraise raise value File "/usr/lib/python3/dist-packages/sqlalchemy/orm/session.py", line 1900, in _flush flush_context.execute() File "/usr/lib/python3/dist-packages/sqlalchemy/orm/unitofwork.py", line 372, in execute rec.execute(self) File "/usr/lib/python3/dist-packages/sqlalchemy/orm/unitofwork.py", line 525, in execute uow File "/usr/lib/python3/dist-packages/sqlalchemy/orm/persistence.py", line 64, in save_obj table, insert) File "/usr/lib/python3/dist-packages/sqlalchemy/orm/persistence.py", line 569, in _emit_insert_statements execute(statement, params) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 662, in execute params) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement compiled_sql, distilled_params File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 828, in _execute_context None, None) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception exc_info File "/usr/lib/python3/dist-packages/sqlalchemy/util/compat.py", line 188, in raise_from_cause reraise(type(exception), exception, tb=exc_tb, cause=exc_value) File "/usr/lib/python3/dist-packages/sqlalchemy/util/compat.py", line 183, in reraise raise value.with_traceback(tb) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/base.py", line 824, in _execute_context context = constructor(dialect, self, conn, *args) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 448, in _init_compiled self.__process_defaults() File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 823, in __process_defaults val = self.get_insert_default(c) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 779, in get_insert_default return self._exec_default(column.default, column.type) File "/usr/lib/python3/dist-packages/sqlalchemy/engine/default.py", line 765, in _exec_default return default.arg(self) sqlalchemy.exc.StatementError: utcnow() takes no arguments (1 given) (original cause: TypeError: utcnow() takes no arguments (1 given)) 'INSERT INTO tweets (handle, tweet_time, text, type, itemid, retweets, favorites, status, handler_id, "Timestamp") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' [{'favorites': -1, 'handle': 'felixsalmon', 'retweets': -1, 'text': '@qualityrye the day I discovered anchovy juice at Eataly was definitely a life-changing pivot point in my existence', 'handler_id': None, 'itemid': '708418991048552449', 'type': 'tweet', 'status': 1, 'tweet_time': datetime.datetime(2016, 3, 11, 22, 27, 3)}] File "essay.py", line 5, in bot.collectTweets('felixsalmon') File "/(...)/python/twittermatic-master/twittermatic-master/lib.py", line 366, in collectTweets inserted = database_commands.insertTweet(tweet) File "/(...)/python/twittermatic-master/twittermatic-master/data/database_commands.py", line 115, in insertTweet traceback.print_stack() ERROR OCCURED WHEN INSERTING TWEET utcnow() takes no arguments (1 given) (original cause: TypeError: utcnow() takes no arguments (1 given)) 'INSERT INTO tweets (handle, tweet_time, text, type, itemid, retweets, favorites, status, handler_id, "Timestamp") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' [{'favorites': -1, 'handle': 'felixsalmon', 'retweets': -1, 'text': '@qualityrye the day I discovered anchovy juice at Eataly was definitely a life-changing pivot point in my existence', 'handler_id': None, 'itemid': '708418991048552449', 'type': 'tweet', 'status': 1, 'tweet_time': datetime.datetime(2016, 3, 11, 22, 27, 3)}] data/default.json: INFO Inserted 0 tweets for felixsalmon sys:1: ResourceWarning: unclosed file <_io.BufferedWriter name='/dev/null'> /usr/lib/python3.4/importlib/_bootstrap.py:2150: ImportWarning: sys.meta_path is empty

Best regards