1 Commits

Author SHA1 Message Date
Mara Karagianni
c5cfa7f21a test 2025-10-01 11:26:17 +02:00
15 changed files with 18 additions and 203 deletions

View File

@@ -1,9 +1,3 @@
chloe mailleux
# git repo for art num # git repo for art num
*the wiki will be updated with more information and usefull snipet. fell free to contribute* *the wiki will be updated with more information and usefull snipet. fell free to contribute*
@@ -12,48 +6,9 @@ test port ssh
## how to ## how to
1. clone this repo to you own computer 1. clone this repo to you own computer
``` ` git clone https://git.erg.school/P039/art_num_2024.git`
git clone https://git.erg.school/P039/art_num_2024.git
```
2. check before eatch courses for update 2. check before eatch courses for update
``` ` git pull `
git pull
```
3. create your own branch
```
git checkout -b prenom-nom
```
4. create and update README with your name
```
nano README
```
5. save the file with `ctrl+X`
6. check git tracking
```
git status
```
7. add and commit the change in the git
```
git add README.md
git commit -m 'change README'
```
8. check the commit was registered
```
git log
git show <commit-hash>
```
9. push your branch on gitea
```
git push origin prenom-nom
```
10. update your branch with latest main branch
```
git checkout main
git pull origin main
git checkout prenom-nom
git rebase main
git log
```
## content ## content

View File

@@ -1,2 +0,0 @@
L'étudiant.e s'engage dans une recherche créative en faisant un commentaire, une réflexion ou un detournement des plateformes culturelles, ou des débats politiques, qui sont médiatisés numériquement (par example en ligne). Cet exercice doit avoir un élément artistique et faire appel à Python en tout, ou en partie dans son exécution. Vous pouvez consulter le matériel pertinent de la classe python, tel que les diapositives de présentation, les exemples de code et les références de tutoriels, à l'adresse suivante:
https://git.erg.school/P039/art_num_2024/src/branch/main/python

View File

@@ -1,37 +1 @@
## Python course git repo for art num
### install pip3 or pip
Windows/Linux: [Installation](https://pip.pypa.io/en/stable/installation/)
MacOS: [Install Homebrew](https://brew.sh/).
After installation you may need to add homebrew to your PATH. Exectute the code, line by line, from the messages at the end of the homebrew installation in your terminal. You may also read how to do it [here](https://usercomp.com/news/1130946/add-homebrew-to-path).
Verify brew is installed with `brew --version`. If not errors, then install pip with `brew install pip`.
Depending on your system, you may have pip or pip3. Execute `pip --version` or `pip3 --version` and see which one works for you.
### virtualenv
Windows/Linux: [Installation](https://virtualenv.pypa.io/en/latest/installation.html)
MacOS: Execute `brew install virtualenv`
How to use it for all systems -> [User Guide](https://virtualenv.pypa.io/en/latest/user_guide.html)
### videogrep
tutorial: https://lav.io/notes/videogrep-tutorial/
code: https://github.com/antiboredom/videogrep/tree/master
videos: https://antiboredom.github.io/videogrep/
### python tutorials here
[python basics](./introduction/README.md)
[python scraping](./scrape/README.md)
### python tutorials online
RealPython => need to create free account
[Work with python from the terminal or with a code editor](https://realpython.com/interacting-with-python/)
[Variables](https://realpython.com/python-variables/)
[User input from terminal/keyboard](https://realpython.com/python-keyboard-input/)
[if/ elif/ else](https://realpython.com/courses/python-conditional-statements/)
[Adding strings together](https://realpython.com/python-string-concatenation/)
[Data types](https://realpython.com/python-data-types/)
### artisitc references
[presentation - slides](./presentation-en.pdf)

Binary file not shown.

Binary file not shown.

View File

@@ -1,14 +1,16 @@
## introduction ## introduction
``` ```
For variables --> see all scripts variables
Working with lists --> see bisous.py programming.py list --> bisous.py programming.py
For user input from terminal or keyboard --> see bisous.py input --> bisous.py
print print
for loop --> see bisous.py for loop --> bisous.py
conditional statements if/else/elif --> see bisous.py conditional statements if/else/elif --> bisous.py
break --> bisous.py break --> bisous.py
while loop --> see missing.py while loop --> missing.py
function --> missing.py dictionary
enumerate
return --> missing.py
random --> programming.py random --> programming.py
function --> missing.py
``` ```

View File

@@ -1 +0,0 @@
#copy code here

View File

@@ -1 +0,0 @@
# copy here your code

Binary file not shown.

View File

@@ -13,12 +13,4 @@ python get_images.py https://www.freepik.com/images
Remplacez lURL par le lien que vous souhaitez extraire. Remplacez lURL par le lien que vous souhaitez extraire.
**Remarque:** Le scraping doit être effectué de manière éthique, en respectant les règles du fichier robots.txt et les conditions d'utilisation du site. **Remarque:** Le scraping doit être effectué de manière éthique, en respectant les règles du fichier robots.txt et les conditions d'utilisation du site.
### Beautiful soup
[INSTALL](https://beautiful-soup-4.readthedocs.io/en/latest/#installing-beautiful-soup)
[HOWTO](https://beautiful-soup-4.readthedocs.io/en/latest/#making-the-soup)
[WORK with HTML TAG](https://beautiful-soup-4.readthedocs.io/en/latest/#navigating-the-tree)
### Collage avec des images
[Make video with all same size images](https://pythonexamples.org/python-opencv-cv2-create-video-from-images/)
[Change images to same size then make a video](https://www.geeksforgeeks.org/python-create-video-using-multiple-images-using-opencv/)

View File

@@ -1,5 +1,3 @@
import random
import urllib
import requests import requests
import time import time
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
@@ -34,16 +32,7 @@ if not os.path.exists(save_folder):
os.makedirs(save_folder) os.makedirs(save_folder)
# Send GET request to the page # Send GET request to the page
user_agents = [ response = requests.get(input_url)
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Safari/605.1.15',
'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1',
]
headers = {
"User-Agent": random.choice(user_agents)
}
response = requests.get(input_url, headers=headers)
if response.status_code == 200: if response.status_code == 200:
# Parse the HTML content with BeautifulSoup # Parse the HTML content with BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser') soup = BeautifulSoup(response.text, 'html.parser')
@@ -58,16 +47,15 @@ if response.status_code == 200:
# Check if img_url is complete; if not, adjust it accordingly # Check if img_url is complete; if not, adjust it accordingly
if not img_url.startswith("http"): if not img_url.startswith("http"):
img_url = full_domain + "/" + img_url img_url = full_domain + "/" + img_url
img_url = img_url.split("&")
img_url = img_url[0]
try: try:
# Send request to the image URL # Send request to the image URL
img_data = requests.get(img_url, headers=headers).content img_data = requests.get(img_url).content
# Define file name and path # Define file name and path
img_name = os.path.join(save_folder, f"image_{idx}.jpg") img_name = os.path.join(save_folder, f"image_{idx}.jpg")
# Write image data to file # Write image data to file
with open(img_name, 'wb') as img_bytes: with open(img_name, 'wb') as handler:
img_bytes.write(img_data) handler.write(img_data)
print(f"Downloaded {img_name}") print(f"Downloaded {img_name}")
time.sleep(1) time.sleep(1)

View File

@@ -1,82 +0,0 @@
import random
import urllib
import requests
import time
from bs4 import BeautifulSoup
from urllib.parse import urlparse
import os
import sys
import tldextract
# URL of the webpage with images
input_url = sys.argv[1]
# extract full domain
def split_domain_or_subdomain_and_path(url):
# Parse the URL
parsed_url = urlparse(url)
extracted = tldextract.extract(url)
# Build the full domain, including subdomain if present
if extracted.subdomain:
full_domain = f"{extracted.subdomain}.{extracted.domain}.{extracted.suffix}"
else:
full_domain = f"{extracted.domain}.{extracted.suffix}"
return "https://" + full_domain
full_domain = split_domain_or_subdomain_and_path(input_url)
print(f"Domain/Subdomain: {full_domain}")
# Folder to save images
save_folder = "downloaded_images"
if not os.path.exists(save_folder):
os.makedirs(save_folder)
# Send GET request to the page
#response = se.get(input_url)
user_agents = [
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Safari/605.1.15',
'Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0 Mobile/15E148 Safari/604.1',
]
headers = {
"User-Agent": random.choice(user_agents)
}
response = requests.get(input_url, headers=headers)
if response.status_code == 200:
# Parse the HTML content with BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
# Find all image tags
images = soup.find_all('img')
# Loop through image tags
for idx, img in enumerate(images):
img_url = img.get('src')
# Check if img_url is complete; if not, adjust it accordingly
if not img_url.startswith("http"):
img_url = full_domain + "/" + img_url
img_url = img_url.split("&")
img_url = img_url[0]
print(img_url)
try:
print(img_url)
# Send request to the image URL
img_data = requests.get(img_url, headers=headers).content
# Define file name and path
img_name = os.path.join(save_folder, f"image_{idx}.jpg")
# Write image data to file
with open(img_name, 'wb') as img_bytes:
img_bytes.write(img_data)
img_bytes.write(requests.get(img_url).content)
print(f"Downloaded {img_name}")
time.sleep(1)
except Exception as e:
print(f"Failed to download {img_url}. Error: {e}")
else:
print("Failed to retrieve the page.")

Binary file not shown.