def get_tag_media(tag_name, from_time, to_time): config = ConfigParser.ConfigParser() config.read('insta-stalker.cfg') access_token = config.get('insta-stalker', 'access_token') api = InstagramAPI(access_token=access_token) count = 20 print 'from_time: ' + str(timestamp_to_datetime(from_time / 1000)) print 'to_time: ' + str(timestamp_to_datetime(to_time / 1000)) max_id = to_time while max_id > from_time: recent_media, next = api.tag_recent_media(count, max_id, tag_name) # print 'count: ' + str(len(recent_media)) for media in recent_media: # print 'username: '******'link: ' + media.link print 'time: ' + str(media.created_time) # print 'id: ' + media.id # print 'url: ' + media.images['standard_resolution'].url parsednext = urlparse.urlparse(next) max_id = int(urlparse.parse_qs(parsednext.query)['max_tag_id'][0]) print 'max_tag_id: ' + str(max_id) + ' (' + str(timestamp_to_datetime(max_id / 1000)) + ')'
def parse(self): self._response['remote_id'] = self._response.pop('id') for prefix in ['video', 'image']: key = '%ss' % prefix if key in self._response: for k, v in self._response[key].items(): media = self._response[key][k] if isinstance(media, ApiModel): media = media.__dict__ self._response['%s_%s' % (prefix, k)] = media['url'] if not isinstance(self._response['created_time'], datetime): self._response['created_time'] = timestamp_to_datetime(self._response['created_time']) if 'comment_count' in self._response: self._response['comments_count'] = self._response.pop('comment_count') elif 'comments' in self._response: self._response['comments_count'] = self._response.pop('comments')['count'] if 'like_count' in self._response: self._response['likes_count'] = self._response.pop('like_count') elif 'likes' in self._response: self._response['likes_count'] = self._response.pop('likes')['count'] if isinstance(self._response['caption'], ApiModel): self._response['caption'] = self._response['caption'].text elif isinstance(self._response['caption'], dict): self._response['caption'] = self._response['caption']['text'] # if 'likes' in self._response: # self._response['likes_users'] = self._response.pop('likes') super(Media, self).parse()
def test_timestamp_to_datetime(self): date_time = timestamp_to_datetime(float(self.timestamp)) self.assertTrue(date_time.tzinfo is not None) self.assertEqual(date_time.tzinfo, pytz.UTC)