pax_global_header 0000666 0000000 0000000 00000000064 14042356110 0014506 g ustar 00root root 0000000 0000000 52 comment=18d41565f955028f9fcd2f6cc437f5f1cb717401
woob-18d41565f955028f9fcd2f6cc437f5f1cb717401-modules-meteofrance/ 0000775 0000000 0000000 00000000000 14042356110 0023267 5 ustar 00root root 0000000 0000000 woob-18d41565f955028f9fcd2f6cc437f5f1cb717401-modules-meteofrance/modules/ 0000775 0000000 0000000 00000000000 14042356110 0024737 5 ustar 00root root 0000000 0000000 woob-18d41565f955028f9fcd2f6cc437f5f1cb717401-modules-meteofrance/modules/meteofrance/ 0000775 0000000 0000000 00000000000 14042356110 0027227 5 ustar 00root root 0000000 0000000 woob-18d41565f955028f9fcd2f6cc437f5f1cb717401-modules-meteofrance/modules/meteofrance/__init__.py 0000664 0000000 0000000 00000001514 14042356110 0031341 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# Copyright(C) 2010-2011 Romain Bignon
#
# This file is part of a woob module.
#
# This woob module is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This woob module is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this woob module. If not, see .
from .module import MeteofranceModule
__all__ = ['MeteofranceModule']
woob-18d41565f955028f9fcd2f6cc437f5f1cb717401-modules-meteofrance/modules/meteofrance/browser.py 0000664 0000000 0000000 00000004423 14042356110 0031267 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# Copyright(C) 2010-2011 Cedric Defortis
#
# This file is part of a woob module.
#
# This woob module is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This woob module is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this woob module. If not, see .
from woob.browser import PagesBrowser, URL
from .pages import WeatherPage, SearchCitiesPage, HomePage
__all__ = ['MeteofranceBrowser']
class MeteofranceBrowser(PagesBrowser):
BASEURL = 'https://meteofrance.com'
cities = URL(r'/search/all\?term=(?P.*)',
SearchCitiesPage)
weather = URL(r'https://rpcache-aa.meteofrance.com/internet2018client/2.0/forecast\?lat=(?P.*)&lon=(?P.*)&id=&instants=&day=2',
WeatherPage)
home = URL('', HomePage)
def _fill_header(self):
self.home.go()
mfessions = self.session.cookies.get('mfsession')
token = ''
for c in mfessions:
if c.isalpha():
t = 97 if c.islower() else 65
token += chr(t + (ord(c) - t + 13) % 26)
else:
token += c
self.session.headers['Authorization'] = 'Bearer %s' % token
self.session.headers['Sec-Fetch-Site'] = 'same-site'
self.session.headers['Sec-Fetch-Mode'] = 'cors'
def iter_city_search(self, pattern):
return self.cities.go(pattern=pattern).iter_cities()
def iter_forecast(self, city):
if not self.session.headers.get('Authorization', None):
self._fill_header()
return self.weather.go(lng=city._lng, lat=city._lat).iter_forecast()
def get_current(self, city):
if not self.session.headers.get('Authorization', None):
self._fill_header()
return self.weather.go(lng=city._lng, lat=city._lat).get_current()
woob-18d41565f955028f9fcd2f6cc437f5f1cb717401-modules-meteofrance/modules/meteofrance/favicon.png 0000664 0000000 0000000 00000007055 14042356110 0031371 0 ustar 00root root 0000000 0000000 PNG
IHDR @ @ % sRGB pHYs tIME#=<