pax_global_header 0000666 0000000 0000000 00000000064 14575653726 0014536 g ustar 00root root 0000000 0000000 52 comment=5f3d558793b537a74480241ac6981479f5938cd3
woob-master-5f3d558793b537a74480241ac6981479f5938cd3-modules/ 0000775 0000000 0000000 00000000000 14575653726 0022044 5 ustar 00root root 0000000 0000000 woob-master-5f3d558793b537a74480241ac6981479f5938cd3-modules/modules/ 0000775 0000000 0000000 00000000000 14575653726 0023514 5 ustar 00root root 0000000 0000000 woob-master-5f3d558793b537a74480241ac6981479f5938cd3-modules/modules/.bandit 0000664 0000000 0000000 00000001126 14575653726 0024756 0 ustar 00root root 0000000 0000000 [bandit]
skips = B101,B311,B303,B304,B410,B320,B413,B106,B105,B324
# B304: some sites require DES, well this is scraping
# B303: some sites require MD5, well this is scraping
# B324: some sites require MD5 or SHA1, well this is scraping
# B106: hardcoded password/token? well this is scraping
# B105: hardcoded password/token? well this is scraping
# B413: "import Crypto" can be cryptodome, you know?
# B101: yes, we do use assert
# B311: we don't need strong random
# B410: no, defusedxml can't replace lxml's xpath implementation
# B320: no, defusedxml can't replace lxml's xpath implementation
woob-master-5f3d558793b537a74480241ac6981479f5938cd3-modules/modules/.keys/ 0000775 0000000 0000000 00000000000 14575653726 0024545 5 ustar 00root root 0000000 0000000 woob-master-5f3d558793b537a74480241ac6981479f5938cd3-modules/modules/.keys/florent.asc 0000664 0000000 0000000 00000005445 14575653726 0026716 0 ustar 00root root 0000000 0000000 -----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.22 (GNU/Linux)
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
g+aY0iqx
=aGSj
-----END PGP PUBLIC KEY BLOCK-----
woob-master-5f3d558793b537a74480241ac6981479f5938cd3-modules/modules/.keys/romain.asc 0000664 0000000 0000000 00000003562 14575653726 0026530 0 ustar 00root root 0000000 0000000 -----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.17 (GNU/Linux)
mQENBEoOr78BCADAsCwWXDvedstjc9L3YSlXJ6KDd12WVD+iEiVGUqToJkWwp05k
uVvvibhNxjDJzZqfWxBvfhFXkf/APF8PoTvkA4l51WOfPGSZejiKMcenij+3HjKa
GCPjLlY9rlTUjA5Alw533WP4Wja0EILXy0xjS9eXN2/Vbtrh7sbwU3cs9KOgDjEH
dcR/ZgRGrqiLuVd83L2rlyoWZ5KM2KCkMjtpPBFUXOf5pyCV683wd+grdsHzL8Lm
MAyVPPCmwrCKdkrG4/xjlBo0Ghjwq4gH6ShclcdJlwjfBY/CLtv5voM+TxKZ2wg0
6FIwyZdh0F8G4c5PhiL+TXKrAV76WNwgwE1VABEBAAG0I1JvbWFpbiBCaWdub24g
PHJvbWFpbkBwZWVyZnVzZS5vcmc+iQE2BBMBAgAgBQJKDq+/AhsvBgsJCAcDAgQV
AggDBBYCAwECHgECF4AACgkQ8a5sCGs03G3Djwf7B8CKV9ZOvarZlQsaqzzA5AVM
/jB+oi86tjCDvTB4pgdbVUcni4MxWzTCU5OUXPbjzaFr+liB8tsGbSSFCJxMSdMu
DMhCcjU48XB3aSTXfvrKRqf/7kBdIqRqNB4KvmXGQI6NQl68O/BNQ8zX++M39GXR
tCzKS9VcWOdra8KN45ADVjVx3v8MCBguc9GTXM5EXxdoIUjU9ClWAklfWWJZBHGB
9NnPITfup28rjxXoITgXjF5Irk3uOEyleQ3fDM1uzLw5u/EHNh+uQJgV5Y5YHY9g
b9VT97iIfimw4vJ5stCKCwf7wz9VbGdBpNRMNepGV+/wVOg37nl2nFLZV9pCtLQg
Um9tYWluIEJpZ25vbiA8cm9tYWluQGJpZ25vbi5tZT6JATgEEwECACIFAk1ytV4C
Gy8GCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEPGubAhrNNxtHVwH+wTw7zcC
Xx+pQPR+s4gbtKwb0L95psuN5fUl2f9jEnAWwOSvkYoBmbA0+dYCtokFGIbFNmzU
ajBXwFkVEdphyVYxH4DnIwmwmafMA/QjYiQB91zRPpZQKCG1ioKlM/He9wJsrskl
zaqUEs3BuAx4n45vsiuERjJFwejbfqlI3PYSnS1/ncVpvn1pREn3a+QJ2hDMx2Ns
Znh0HkhJ6LLB8F2Z5bFSDcpTAiNgECRc3eleiTQT+89RrbvpPUi8iIFUcWmGxYBU
Atk6miGgjKpy98Ezc1LWfPOSaZjNBxhvtlicx+bDqkcMYPakZ1gLNWWyW2iNljDF
KiLhXstA/eNC3qC0IVJvbWFpbiBCaWdub24gPHJvbWFpbkBzeW1saW5rLm1lPokB
OAQTAQIAIgUCTXK1SgIbLwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQ8a5s
CGs03G2b6Qf/VjmEs0pBdpg/Ewj7HmikxIQ7lvX5um1YHjLyLNdp6W6wylmzh3u5
dsaajEWmPbUhaDre7gTtxPNJFs6FXksfquUiZySXA45R+XH8Qh/TWJAY8FjdaZwB
tgOn4rka+n0rQeG1fklHw4Z3AREm/GmfeA63nkmS5SvdXskAz1iXB20Hyb6bGy5b
Y7ZJNhJ8Ocz2THizc2od3Bx8Pzw3DHs+NaW5sK/NJJN9QgpdLA4lo0KeidCALEXF
CReDEaT4Cs/Ds3u8QkuR+s+8qN5BOYcIWz79T/hLFw46SezEz9gjJ+NR1nIMd2um
bwnyciYEGVOfG4DsU/IRwnbk+HWcLNTFnw==
=mTlW
-----END PGP PUBLIC KEY BLOCK-----
woob-master-5f3d558793b537a74480241ac6981479f5938cd3-modules/modules/750g/ 0000775 0000000 0000000 00000000000 14575653726 0024176 5 ustar 00root root 0000000 0000000 woob-master-5f3d558793b537a74480241ac6981479f5938cd3-modules/modules/750g/__init__.py 0000664 0000000 0000000 00000001520 14575653726 0026305 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# Copyright(C) 2013 Julien Veyssier
#
# 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 SevenFiftyGramsModule
__all__ = ['SevenFiftyGramsModule']
woob-master-5f3d558793b537a74480241ac6981479f5938cd3-modules/modules/750g/browser.py 0000664 0000000 0000000 00000003675 14575653726 0026246 0 ustar 00root root 0000000 0000000 # -*- coding: utf-8 -*-
# Copyright(C) 2013 Julien Veyssier
#
# 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 .
import re
from urllib.parse import quote_plus
from woob.browser import PagesBrowser, URL
from .pages import RecipePage, ResultsPage, CommentPage
__all__ = ['SevenFiftyGramsBrowser']
class SevenFiftyGramsBrowser(PagesBrowser):
BASEURL = 'https://www.750g.com'
comment = URL('/recipe/(?P<_id>.*)/sort/lastest/comments.json', CommentPage)
search = URL(r'/recherche/\?q=(?P.*)&page=(?P\d*)', ResultsPage)
recipe = URL('/(?P.*).htm', RecipePage)
def iter_recipes(self, pattern):
return self.search.go(pattern=quote_plus(pattern.encode('utf-8')), page=1).iter_recipes()
@recipe.id2url
def get_recipe(self, url, recipe=None):
self.location(url)
assert self.recipe.is_here()
return self.get_recipe_content(recipe)
def get_comments(self, id):
m = re.match(r'.*r(\d*)', id, re.DOTALL)
if m:
_id = m.group(1)
return self.comment.go(_id=_id).get_comments()
def get_recipe_content(self, recipe=None):
recipe = self.page.get_recipe(obj=recipe)
comments = self.get_comments(recipe.id)
if comments:
recipe.comments = list(comments)
return recipe
woob-master-5f3d558793b537a74480241ac6981479f5938cd3-modules/modules/750g/favicon.png 0000664 0000000 0000000 00000002625 14575653726 0026336 0 ustar 00root root 0000000 0000000 PNG
IHDR @ @ iq sRGB bKGD pHYs tIME: <&`M IDATxKEU=Oz(&j' ºAI؋H
xp\5K0
b`]!ȒQfg{ʃ5