├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── new-zim-request.md │ ├── zim_bug.yaml │ ├── zimfarm_recipe_configuration.yml │ ├── zimfarm_recipe_failure.yml │ └── zimfarm_task_duration.yml └── workflows │ └── quarterly_tasks.yaml └── README.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: kiwix # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # https://kiwix.org/support-us/ 13 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/new-zim-request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: New Request 3 | about: To suggest a new ZIM creation 4 | title: 'New request: ' 5 | labels: '' 6 | assignees: '' 7 | 8 | --- 9 | 10 | *Please use the following format for a ZIM creation request (and delete unnecessary information)* 11 | 12 | - Website URL: https://xxx 13 | - License: **Creative Commons | Public domain | ...** (do NOT request copyrighted material) 14 | - Desired ZIM Title: **My title** 15 | - Desired ZIM Description: **Short description (80 characters or less)** 16 | - Desired ZIM Icon –png (URL or attach one): https://example.com/example_icon.png 17 | - Language (ISO 639-3): **abc** 18 | - Is this a MediaWiki?: **yes | no** 19 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/zim_bug.yaml: -------------------------------------------------------------------------------- 1 | name: ZIM bug 2 | description: To report an issue with a ZIM published by openZIM (typically on library.kiwix.org) 3 | title: ' is not working properly' 4 | labels: ["Bug"] 5 | body: 6 | - type: textarea 7 | id: zim_urls 8 | attributes: 9 | label: ZIM(s) location 10 | description: Link to the ZIM(s) which have a bug (either on library.kiwix.org or download.kiwix.org) 11 | placeholder: https://library.kiwix.org/viewer#gutenberg_mul_all_2023-08 12 | validations: 13 | required: true 14 | - type: textarea 15 | id: recipe_url 16 | attributes: 17 | label: Recipe(s) URL 18 | description: If known, the Zimfarm recipe(s) which produced this ZIM(s) 19 | placeholder: https://farm.openzim.org/pipeline/xxxx 20 | - type: checkboxes 21 | id: readers 22 | attributes: 23 | label: Readers tested 24 | description: On which readers did you tried the ZIM (at least two is recommended)? 25 | options: 26 | - label: Kiwix-serve on iOS (iPad / iPhone) 27 | - label: Kiwix-serve on Android (phone or tablet) 28 | - label: Kiwix-serve on Windows 29 | - label: Kiwix-serve on Linux 30 | - label: Kiwix-serve on Raspberry Pi (e.g. hotspot) 31 | - label: Kiwix-serve on Mac 32 | - label: pwa.kiwix.org 33 | - label: Kiwix JS - Chrome extension 34 | - label: Kiwix JS - Firefox extension 35 | - label: Kiwix JS - Edge extension 36 | - label: Kiwix for Android application 37 | - label: Kiwix for MacOS application 38 | - label: Kiwix for iOS (iPad/iPhone) application 39 | - type: dropdown 40 | id: zims_produced 41 | attributes: 42 | label: Which ZIM versions are impacted? 43 | description: On download.kiwix.org, we store at least two versions of a single ZIM. Do they both have the issue? 44 | options: 45 | - All PROD versions are impacted 46 | - Only last PROD version is impacted 47 | - There is only PROD one version which is impacted 48 | - Only last DEV version is impacted 49 | - I don't know 50 | validations: 51 | required: true 52 | - type: textarea 53 | id: details 54 | attributes: 55 | label: Details 56 | placeholder: Add details here (screenshots, what is not working, ...) 57 | validations: 58 | required: true 59 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/zimfarm_recipe_configuration.yml: -------------------------------------------------------------------------------- 1 | name: Zimfarm Recipe Configuration Issue 2 | description: To report an issue on improper configuration of a openZIM Zimfarm (farm.openzim.org) recipe 3 | title: ' configuration is incorrect' 4 | labels: ["Bug"] 5 | body: 6 | - type: input 7 | id: recipe_url 8 | attributes: 9 | label: Recipe URL 10 | description: The recipe which is improperly configured 11 | placeholder: https://farm.openzim.org/recipes/xxxx 12 | validations: 13 | required: true 14 | - type: textarea 15 | id: details 16 | attributes: 17 | label: What is wrong 18 | placeholder: Add here more details about what should be fixed 19 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/zimfarm_recipe_failure.yml: -------------------------------------------------------------------------------- 1 | name: Zimfarm Recipe Failure Issue 2 | description: To report an issue on a openZIM Zimfarm (farm.openzim.org) failing recipe 3 | title: ' is failing' 4 | labels: ["Bug"] 5 | body: 6 | - type: input 7 | id: recipe_url 8 | attributes: 9 | label: Recipe URL 10 | description: The recipe which encountered a problem 11 | placeholder: https://farm.openzim.org/recipes/xxxx 12 | validations: 13 | required: true 14 | - type: textarea 15 | id: logs 16 | attributes: 17 | label: Last log lines 18 | description: Report here the last log lines which probably indicates the problem encountered 19 | render: true 20 | validations: 21 | required: true 22 | - type: dropdown 23 | id: how_many 24 | attributes: 25 | label: How many times the recipe failed in a row? 26 | options: 27 | - Once 28 | - Twice 29 | - Many 30 | validations: 31 | required: true 32 | - type: dropdown 33 | id: zims_produced 34 | attributes: 35 | label: How many ZIM have been produced before failure? 36 | options: 37 | - Zero 38 | - One 39 | - Two 40 | - Many 41 | validations: 42 | required: true 43 | - type: dropdown 44 | id: action_done 45 | attributes: 46 | label: Which action did you undertake so far? 47 | options: 48 | - I have requested the recipe again to confirm failure 49 | - I have disabled the recipe for now 50 | - None, I recommend to wait for next run on periodic scheduling to confirm there is an issue 51 | - None, I do not have sufficient rights in Zimfarm but I recommend to request the recipe again to confirm failure 52 | - None, I do not have sufficient rights in Zimfarm but I recommend to disable the recipe for now 53 | - None, I have no idea of what to do 54 | validations: 55 | required: true 56 | - type: dropdown 57 | id: what_next 58 | attributes: 59 | label: What's next? 60 | options: 61 | - This has to be monitored by content team 62 | - This has to be fixed by content team 63 | - This has to be fixed by dev team (upstream scraper / zimfarm problem) 64 | - This has to be reported to website admin (upstream website problem) 65 | - I don't know 66 | - Other, see below 67 | validations: 68 | required: true 69 | - type: textarea 70 | id: details 71 | attributes: 72 | label: More details 73 | placeholder: Add here more details to share if needed 74 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/zimfarm_task_duration.yml: -------------------------------------------------------------------------------- 1 | name: Zimfarm Task Duration Issue 2 | description: To report an issue on a openZIM Zimfarm (farm.openzim.org) abnormal task duration 3 | title: 'Last task of takes too long' 4 | labels: ["Bug"] 5 | body: 6 | - type: input 7 | id: recipe_url 8 | attributes: 9 | label: Recipe URL 10 | description: The recipe which encountered a problem 11 | placeholder: https://farm.openzim.org/recipes/xxxx 12 | validations: 13 | required: true 14 | - type: input 15 | id: task_url 16 | attributes: 17 | label: Task URL 18 | description: The task which takes too long to complete 19 | placeholder: https://farm.openzim.org/pipeline/xxxx 20 | validations: 21 | required: true 22 | - type: textarea 23 | id: details 24 | attributes: 25 | label: Details 26 | placeholder: Share details about why you consider task duration abnormal 27 | validations: 28 | required: true 29 | -------------------------------------------------------------------------------- /.github/workflows/quarterly_tasks.yaml: -------------------------------------------------------------------------------- 1 | name: Quarterly recipe maintenance tasks 2 | 3 | on: 4 | schedule: 5 | - cron: "8 0 1 */3 *" 6 | workflow_dispatch: 7 | 8 | jobs: 9 | job: 10 | runs-on: ubuntu-22.04 11 | permissions: 12 | issues: write 13 | steps: 14 | - name: Create periodic recipe maintenance issue 15 | shell: python 16 | run: | 17 | import datetime 18 | import math 19 | import os 20 | import re 21 | import sys 22 | 23 | import requests 24 | 25 | quarter = math.ceil(datetime.date.today().month/3.) 26 | 27 | payload = { 28 | "title": f"Q{quarter} {datetime.datetime.now().strftime('%Y')} Recipes Maintenance", 29 | "body": os.getenv("ISSUE_BODY"), 30 | "labels": re.sub(r"\s", "", os.getenv("LABELS", "")).split(",") or None, 31 | "assignees": re.sub(r"\s", "", os.getenv("ASSIGNEES", "")).split(",") or None, 32 | } 33 | api_url = f"https://api.github.com/repos/{os.getenv('REPO')}/issues" 34 | url = f"https://github.com/{os.getenv('REPO')}/issues" 35 | headers = { 36 | "Accept": "application/vnd.github.v3+json", 37 | "Authorization": f"token {os.getenv('ACCESS_TOKEN')}", 38 | } 39 | resp = requests.get(api_url, headers=headers) 40 | if resp.status_code != 200: 41 | print(f"❌ Couldn't retrieve issues for {url} using {api_url}.") 42 | print(f"HTTP {resp.status_code} {resp.reason} - {resp.text}") 43 | print("Check your `ACCESS_TOKEN` secret.") 44 | sys.exit(1) 45 | resp = requests.post(api_url, headers=headers, json=payload) 46 | if resp.status_code != 201: 47 | print(f"❌ Couldn't create issue for {url}") 48 | print(f"HTTP {resp.status_code} {resp.reason} - {resp.text}") 49 | sys.exit(1) 50 | print(f"✅ Issue successfully created at {url}/{resp.json().get('number')}") 51 | sys.exit(0) 52 | env: 53 | ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} 54 | REPO: openzim/zim-requests 55 | LABELS: recovery 56 | ASSIGNEES: benoit74 57 | ISSUE_BODY: | 58 | In order to maintain Zimfarm recipes up-to-date, some manual actions are needed. 59 | 60 | This ticket is an *automatic reminder* requesting the assignees to perform following tasks. 61 | 62 | Procedure details are at https://github.com/openzim/zim-requests/wiki/Maintain-Zimfarm-recipes 63 | 64 | Checklist: 65 | - [ ] recipesauto ran (and modifications applied) on ted 66 | - [ ] `ted_topic_all` updated manually if neeed 67 | - [ ] recipesauto ran (and modifications applied) on devdocs 68 | - [ ] recipesauto ran (and modifications applied) on freecodecamp 69 | - [ ] recipesauto ran (and modifications applied) on shamela 70 | - [ ] recipesauto ran (and modifications applied) on phet 71 | 72 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # zim-requests
2 | Want a new ZIM file? Propose ZIM content improvements or fixes? Here you are!

3 | 4 | **To request a new zim file from a website you know** 5 | 6 | Click `Issues` on the top menu bar, and then on the green `New Issue` button.
7 | In the new window, click on `Get Started`: a pre-filled form will appear
8 | 9 | Write the title of your request (that is, the target website) in the title field, e.g. `Examplepedia.com`
10 | 11 | Replace `Website URL: https://xxx` with the URL for the website you want to submit, e.g. `https://www.examplepedia.com`
12 | You **must** clarify the License field, e.g. Creative Commons, Public domain, or any other licensing format. **Do NOT request copyrighted material**
13 | In `Desired ZIM Title`: Put a clear & short title, this will be the title that will appear in the Library.
14 | In `Desired ZIM Description`: put a short description of the content. This will also appear in the library (ideally max 60 characters)
15 | In `Desired ZIM Icon –png`, put your icon URL, e.g., (https://examplepedia.com/example_icon.png).
16 | In `Language` indicate the website's language ISO code, e.g.: **eng** for English.
17 | Finally, indicate whether this is a mediawiki-based website or not.
18 | 19 | After submitting the issue, we will create the corresponding recipe on the zimfarm and, if everything works then the zim file will automatically be added to the library (after 24-48 hours).
20 | 21 | In case the recipe didn't work, we will investigate and keep the recipe for later fixes so you needn't open an new request.
22 | 23 | **To flag an existing ZIM file** 24 | 25 | This may be needed if the format is wrong, info is missing, etc. 26 | 27 | Simply open an issue, ignore the default template, and describe what the problem is: which zim file name, and which platform you have been trying to open it on. 28 | --------------------------------------------------------------------------------