To update the `README.md` files in multiple GitHub repositories by adding GIFs, you can use the GitHub API along with the requests library in Python. Below is a Python script that takes repository names and GIF URLs as input and updates the `README.md` files in those repositories [1]:
```python
import requests
import base64
import getpass
# GitHub username and Personal Access Token
github_username = input("GitHub Username: ")
github_pat = getpass.getpass("GitHub Personal Access Token: ")
# Function to update the README.md file in a repository
def update_readme(repo_owner, repo_name, gif_url):
# Create the GIF markdown
gif_markdown = f""
# Fetch the existing README.md content
readme_url = f'https://api.github.com/repos/{repo_owner}/{repo_name}/contents/README.md'
response = requests.get(readme_url, auth=(github_username, github_pat))
if response.status_code == 200:
readme_content = response.json()['content']
readme_content_decoded = base64.b64decode(readme_content).decode('utf-8')
# Add the GIF markdown to the README content
new_readme_content = readme_content_decoded + '\n' + gif_markdown
# Update the README.md file
update_url = f'https://api.github.com/repos/{repo_owner}/{repo_name}/contents/README.md'
update_data = {
"message": "Add GIF to README",
"content": base64.b64encode(new_readme_content.encode('utf-8')).decode('utf-8'),
"sha": response.json()['sha']
}
update_response = requests.put(update_url, auth=(github_username, github_pat), json=update_data)
if update_response.status_code == 200:
print(f"Updated README.md in {repo_owner}/{repo_name} with the GIF.")
else:
print(f"Failed to update README.md in {repo_owner}/{repo_name}.")
print(f"Status Code: {update_response.status_code}")
print(f"Response: {update_response.text}")
else:
print(f"Failed to fetch README.md in {repo_owner}/{repo_name}.")
print(f"Status Code: {response.status_code}")
print(f"Response: {response.text}")
# Example usage:
repo_owner = "your_username"
repo_name = "your_repository"
gif_url = "URL_of_your_gif.gif"
update_readme(repo_owner, repo_name, gif_url)
```
In this script:
* You will need to install the requests library if you haven't already (pip install requests).
* Replace `your_username`, `your_repository`, and `URL_of_your_gif.gif` with the actual GitHub username, repository name, and GIF URL you want to use.
* The script first fetches the existing content of the README.md file, then appends the GIF markdown, and finally updates the README.md file in the specified repository.
* You need to provide your GitHub username and a Personal Access Token with appropriate repository access when prompted. Make sure to keep your PAT secure and not hardcode it directly into the script.
* You can call the update_readme function with different repository names and GIF URLs to update multiple repositories.