Dateien nach "/" hochladen
This commit is contained in:
parent
8e882504ca
commit
bd188bd77d
54
README.md
54
README.md
|
@ -1,2 +1,52 @@
|
|||
# Python_Gitea_Upload
|
||||
|
||||
# git_upload
|
||||
|
||||
<div align=center>
|
||||
<a href="https://m-viper.de">
|
||||
<img width=566 align="center" src="https://m-viper.de/img/welcome-banner.gif" />
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<h1 align="center">👋 Hey! schön dich zu sehen</h1>
|
||||
<h3 align="center">Wilkommen auf meiner Seite! Ich bin M_Viper und komme aus Burghausen</h3>
|
||||
|
||||
### Languages
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
### Technologies
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
### Cybersecurity Projects
|
||||
|
||||
[](#)
|
||||
[](#)
|
||||
[](#/Packet-Sniffing-and-Spoofing)
|
||||
[](#)
|
||||
[](#)
|
||||
[](#)
|
||||
|
||||
### Folge mir:
|
||||
|
||||
[](https://m-viper.de)
|
||||
[](https://m-viper.de)
|
||||
|
||||
[](https://www.youtube.com/@M_Viper)
|
||||
[](https://www.youtube.com/@M_Viper)
|
||||
|
||||
|
|
|
@ -0,0 +1,120 @@
|
|||
import os
|
||||
import base64
|
||||
import requests
|
||||
import subprocess
|
||||
|
||||
def repository_exists(repo_url, token, repo_name):
|
||||
headers = {
|
||||
'Authorization': f'token {token}',
|
||||
'Content-Type': 'application/json',
|
||||
}
|
||||
response = requests.get(f'{repo_url}/api/v1/user/repos', headers=headers)
|
||||
repos = response.json()
|
||||
for repo in repos:
|
||||
if repo['name'] == repo_name:
|
||||
return True
|
||||
return False
|
||||
|
||||
def create_repository(repo_url, token, repo_name):
|
||||
headers = {
|
||||
'Authorization': f'token {token}',
|
||||
'Content-Type': 'application/json',
|
||||
}
|
||||
response = requests.post(f'{repo_url}/api/v1/user/repos', headers=headers, json={'name': repo_name})
|
||||
if response.status_code == 201:
|
||||
print(f"Repository '{repo_name}' created successfully.")
|
||||
return True
|
||||
else:
|
||||
print(f"Failed to create repository '{repo_name}'.")
|
||||
return False
|
||||
|
||||
def add_mit_license(local_path, language='english'):
|
||||
mit_license_text_english = """
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2024 [Name]
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
"""
|
||||
|
||||
mit_license_text_german = """
|
||||
MIT-Lizenz
|
||||
|
||||
Urheberrecht (c) 2024 [Name]
|
||||
|
||||
Hiermit wird unentgeltlich jeder Person, die eine Kopie der Software und der
|
||||
zugehörigen Dokumentationsdateien (die "Software") erhält, die Erlaubnis erteilt,
|
||||
sie uneingeschränkt zu nutzen, inklusive und ohne Ausnahme mit dem Recht, sie zu verwenden,
|
||||
zu kopieren, zu ändern, zusammenzufügen, zu veröffentlichen, zu verbreiten, zu unterlizenzieren
|
||||
und/oder zu verkaufen, und Personen, denen diese Software überlassen wird, diese Rechte zu gewähren,
|
||||
unter den folgenden Bedingungen:
|
||||
|
||||
Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen Kopien oder
|
||||
wesentlichen Teilen der Software beizulegen.
|
||||
|
||||
DIE SOFTWARE WIRD "WIE BESEHEN" OHNE JEGLICHE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIEN, EINSCHLIESSLICH
|
||||
DER GARANTIE DER MARKTFÄHIGKEIT, DER EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND DER NICHTVERLETZUNG VON
|
||||
RECHTEN DRITTER, BEREITGESTELLT. IN KEINEM FALL HAFTEN DIE AUTOREN ODER COPYRIGHT-INHABER FÜR JEGLICHEN
|
||||
SCHADEN ODER SONSTIGE ANSPRÜCHE, OB AUS EINEM VERTRAG, EINER UNERLAUBTEN HANDLUNG ODER ANDERWEITIG,
|
||||
DER SICH AUS, IN ODER IN VERBINDUNG MIT DER SOFTWARE ODER DER VERWENDUNG ODER ANDEREN GESCHÄFTEN IN
|
||||
DER SOFTWARE ERGIBT.
|
||||
"""
|
||||
|
||||
mit_license_path = os.path.join(local_path, 'LICENSE')
|
||||
mit_license_text = mit_license_text_english if language == 'english' else mit_license_text_german
|
||||
with open(mit_license_path, 'w') as f:
|
||||
f.write(mit_license_text.strip())
|
||||
|
||||
def upload_to_gitea(repo_url, token, local_path, repo_name):
|
||||
headers = {
|
||||
'Authorization': f'token {token}',
|
||||
'Content-Type': 'application/json',
|
||||
}
|
||||
|
||||
if not repository_exists(repo_url, token, repo_name):
|
||||
print("Repository does not exist. Creating...")
|
||||
if not create_repository(repo_url, token, repo_name):
|
||||
print("Repository creation failed. Aborting upload.")
|
||||
return
|
||||
|
||||
if not os.path.exists(os.path.join(local_path, '.git')):
|
||||
subprocess.run(["git", "config", "--global", "user.email", "E-Mail Adresse"])
|
||||
subprocess.run(["git", "config", "--global", "user.name", "Name"])
|
||||
subprocess.run(["git", "init"], cwd=local_path)
|
||||
subprocess.run(["git", "checkout", "-b", "main"], cwd=local_path)
|
||||
|
||||
subprocess.run(["git", "add", "."], cwd=local_path)
|
||||
subprocess.run(["git", "commit", "-m", "Add MIT License"], cwd=local_path)
|
||||
|
||||
remote_exists = subprocess.run(["git", "remote", "get-url", "origin"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=local_path)
|
||||
if remote_exists.returncode != 0:
|
||||
subprocess.run(["git", "remote", "add", "origin", f"https://example.com/Name/{repo_name}.git"], cwd=local_path)
|
||||
|
||||
subprocess.run(["git", "push", "-u", "origin", "main"], cwd=local_path)
|
||||
|
||||
if __name__ == "__main__":
|
||||
repo_url = 'Gitea URL'
|
||||
token = 'token'
|
||||
local_path = r'local Pfad'
|
||||
repo_name = 'Name'
|
||||
|
||||
#add_mit_license(local_path, language='english') # MIT License in English
|
||||
add_mit_license(local_path, language='german') # MIT License in German
|
||||
|
||||
upload_to_gitea(repo_url, token, local_path, repo_name)
|
Loading…
Reference in New Issue