def start(self):
        location_service = LocationService()

        locations = location_service.get3_indonesia()

        for i, location in enumerate(locations):
            print("\n ", location['name'])
            hotels = self.hotel_service.get_hotels_by_locationid(
                location['location_id'])

            for j, hotel in enumerate(hotels):
                print("[", self.now, "]", j+1, ") ",
                      hotel['location_id'], " - ", hotel['name'])
                self.calculate_sentiment_score(hotel)
                self.count += 1
                j += 1
Exemplo n.º 2
0
from controllers.ride_controller import RideBookingController
from controllers.user_controller import UserController
from services.user_service import UserService
from services.ride_service import RideService
from services.location_service import LocationService
from services.vehicle_service import VehicleService

userController = UserController(UserService())
rideController = RideBookingController(RideService())

location1 = LocationService().addLocation(5, 6)
location2 = LocationService().addLocation(10, 9)
location3 = LocationService().addLocation(11, 4)
location4 = LocationService().addLocation(2, 6)
vehicle1 = VehicleService().addVehicle('prime', 123, 'sedan', location3)
vehicle2 = VehicleService().addVehicle('play', 124, 'sedan', location4)
driver1 = userController.addDriver('d1', 'XXX', '999', vehicle1)
driver2 = userController.addDriver('d2', 'YYY', '456', vehicle2)
customer1 = userController.addCustomer('c1', 'AAA', '342', location1)

rideController.bookRide('r1', 'c1', location1, location2,
                        userController.userService)
Exemplo n.º 3
0
    def start(self):
        datenow = datetime.datetime.now()
        reviewtranslate_service = ReviewTranslatedService()

        hotel_service = HotelService()
        review_service = ReviewService()
        location_service = LocationService()
        # locations = location_service.get_all_locations()
        locations = location_service.get_locations_indonesia()

        for i, location in enumerate(locations):
            hotels = hotel_service.get_hotels_by_locationid(
                location['location_id'])

            for j, hotel in enumerate(hotels):
                reviews = review_service.get_review_by_hotel_locationid(
                    hotel['location_id'])

                for r, review in enumerate(reviews):
                    text_to_translate = review['text']

                    try:
                        isexist_review = reviewtranslate_service.isexist_review_by_hotel_locid(
                            hotel['location_id'], review['id'])
                        # print(isexist_review)
                        if isexist_review.count() == 0:
                            print(
                                "[", datetime.datetime.now(), "] Review (",
                                review['id'],
                                ") on table Translated Review is not exist. Saving Review ..."
                            )

                            # gTranslator = Translator()
                            language_translator = LanguageTranslator()
                            text_translated = language_translator.translate_yandex(
                                text_to_translate)

                            data = {
                                "hotel": hotel,
                                "review": review,
                                "location_id": location['location_id'],
                                "hotel_id": hotel['location_id'],
                                "review_id": review['id'],
                                "text_to_translate": text_to_translate,
                                "text_translated": text_translated,
                                "created_at": datenow
                            }
                            if text_translated != None:
                                reviewtranslate_service.create(data)
                            else:
                                print(
                                    str("-----> Err : Failed to translate review !"
                                        ))
                        else:
                            print(
                                "[", datetime.datetime.now(), "] Review (",
                                review['id'],
                                ") on table Translated Review is already exist"
                            )

                    except Exception as err:
                        print(str("Err : ", err))
                        continue
Exemplo n.º 4
0
from config import MetricHandler, MetricHandlerException  # noqa
from helpers.logging import get_logger  # noqa
from helpers.util import abspath, required_keys  # noqa
from services.location_service import LocationService  # noqa

sns = boto3.client("sns")

SENTRY_DSN = os.environ["SENTRY_DSN"]
SNS_RESULT_TOPIC_ARN = os.environ["SNS_RESULT_TOPIC_ARN"]

sentry_sdk.init(dsn=SENTRY_DSN, integrations=[AwsLambdaIntegration()
                                              ])  # AWS Lambda integration

logger = get_logger("worker-handler")

fetch_service = LocationService()


def lambda_handler(event, context):
    """
    :param event:  AWS Lambda uses this parameter to pass in event data to the handler.
        For details, see: https://docs.aws.amazon.com/lambda/latest/dg/with-sns.html
    :param context: AWS Lambda uses this parameter to provide runtime information to your handler.
        For details, see: https://docs.aws.amazon.com/lambda/latest/dg/python-context-object.html
    :return:
    """
    logger.debug(f"Received event: {event['Records'][0]['Sns']['MessageId']}")

    message = event["Records"][0]["Sns"]["Message"]
    decoded = json.loads(message)
    def start(self):
        datenow = datetime.now()

        sentimentreview_service = SentimentReviewService()
        sentiment_analyzer = SentimentAnalyzer()

        location_service = LocationService()
        hotel_service = HotelService()
        reviewtranslated_service = ReviewTranslatedService()
        review_service = ReviewService()

        language_translator = LanguageTranslator()

        locations = location_service.get_locations_indonesia()

        for i, location in enumerate(locations):
            hotels = hotel_service.get_hotels_by_locationid(
                location['location_id'])

            for j, hotel in enumerate(hotels):
                reviews_translated = reviewtranslated_service.get_review_by_hotel_locid(
                    hotel['location_id'])
                sentimentreviews_on_hotel = sentimentreview_service.get_review_by_hotel_locid(
                    hotel['location_id'])

                print(reviews_translated.count())

                if reviews_translated.count() > 0:
                    print("[", datetime.now(), "] Data translated")
                    for r, review_translated in enumerate(reviews_translated):
                        text_to_sentiment = review_translated[
                            'text_translated']

                        try:
                            isexist_review = any(
                                x['review_id'] ==
                                review_translated['review_id']
                                for x in sentimentreviews_on_hotel)
                            if not isexist_review:
                                vader = sentiment_analyzer.get_vader(
                                    text_to_sentiment)
                                wordnet = sentiment_analyzer.get_sentiwordnet(
                                    text_to_sentiment)

                                subratings = self.map_subratings(
                                    review_translated['review'])
                                subratings_normalized = self.normalize_subratings(
                                    subratings)

                                date_publish = dateutil.parser.parse(
                                    review_translated['review']
                                    ['published_date'])

                                data = {
                                    "hotel":
                                    hotel,
                                    "review_translated":
                                    review_translated,
                                    "publish_date":
                                    review_translated['review']
                                    ['published_date'],
                                    "month":
                                    date_publish.month,
                                    "year":
                                    date_publish.year,
                                    "location_id":
                                    location['location_id'],
                                    "hotel_id":
                                    hotel['location_id'],
                                    "review_id":
                                    review_translated['review_id'],
                                    "subratings":
                                    subratings,
                                    "subratings_normalized":
                                    subratings_normalized,
                                    "text_review":
                                    review['text'],
                                    "text_to_sentiment":
                                    text_to_sentiment,
                                    "vader_sentiment":
                                    vader,
                                    "wordnet_sentiment":
                                    wordnet,
                                    "wordnet_normalized": (wordnet - (-1)) / 2,
                                    "created_at":
                                    datenow
                                }
                                # pprint.pprint(data)

                                sentimentreview_service.create(data)
                            else:
                                print(
                                    "[", datetime.now(), "] Review (",
                                    review_translated['review_id'],
                                    ") on table Sentiment Review is already exist"
                                )

                        except Exception as err:
                            print(str("[", datetime.now(), "]  Err : ", err))
                            continue
                else:
                    print("[", datetime.now(), "] No translated data")
                    reviews = review_service.get_review_by_hotel_locationid(
                        hotel['location_id'])

                    for r, review in enumerate(reviews):

                        try:
                            isexist_review = any(
                                x['review_id'] == review['id']
                                for x in sentimentreviews_on_hotel)

                            if not isexist_review:
                                subratings = self.map_subratings(review)
                                subratings_normalized = self.normalize_subratings(
                                    subratings)

                                date_publish = dateutil.parser.parse(
                                    review['published_date'])

                                data = {
                                    "hotel": hotel,
                                    "review": review,
                                    "publish_date": review['published_date'],
                                    "month": date_publish.month,
                                    "year": date_publish.year,
                                    "location_id": location['location_id'],
                                    "hotel_id": hotel['location_id'],
                                    "review_id": review['id'],
                                    "subratings": subratings,
                                    "subratings_normalized":
                                    subratings_normalized,
                                    "text_to_sentiment": "",
                                    "vader_sentiment": {
                                        'neg': 0,
                                        'pos': 0,
                                        'neu': 0,
                                        'compound': 0.5
                                    },
                                    "wordnet_sentiment": 0,
                                    "wordnet_normalized": 0.5,
                                    "created_at": datenow
                                }
                                # pprint.pprint(data)

                                sentimentreview_service.create(data)
                            else:
                                print(
                                    "[", datetime.now(), "] Review (",
                                    review['id'],
                                    ") on table Sentiment Review is already exist"
                                )

                        except Exception as err:
                            print(str("[", datetime.now(), "] Err : ", err))
                            continue