├── .github └── workflows │ └── generate_and_deploy_opml.yml ├── README.md └── transform_to_opml.py /.github/workflows/generate_and_deploy_opml.yml: -------------------------------------------------------------------------------- 1 | name: Generate and Deploy OPML Files 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | branches: 9 | - main 10 | workflow_dispatch: 11 | 12 | jobs: 13 | build: 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - name: Checkout repository 18 | uses: actions/checkout@v2 19 | 20 | - name: Set up Python 21 | uses: actions/setup-python@v2 22 | with: 23 | python-version: '3.x' 24 | 25 | - name: Install dependencies 26 | run: | 27 | python -m pip install --upgrade pip 28 | pip install beautifulsoup4 29 | 30 | - name: Run OPML generation script 31 | run: python transform_to_opml.py 32 | 33 | - name: List OPML files 34 | id: list_opml_files 35 | run: | 36 | REPO_NAME=$(basename $GITHUB_REPOSITORY) 37 | BASE_URL="https://${{ github.actor }}.github.io/${REPO_NAME}" 38 | for FILE in *.opml; do 39 | echo "${BASE_URL}/${FILE}" >> opml_urls.txt 40 | done 41 | cat opml_urls.txt 42 | 43 | - name: Deploy to GitHub Pages 44 | uses: peaceiris/actions-gh-pages@v3 45 | with: 46 | github_token: ${{ secrets.GITHUB_TOKEN }} 47 | publish_dir: ./ 48 | exclude_assets: | 49 | .github/** 50 | README.md 51 | transform_to_opml.py 52 | 53 | - name: Display OPML URLs 54 | run: | 55 | echo "OPML dosyalarının URL'leri:" 56 | cat opml_urls.txt 57 | 58 | - name: Upload grouped OPML file 59 | uses: actions/upload-artifact@v3 60 | with: 61 | name: grouped-feeds 62 | path: grouped_feeds.opml 63 | 64 | - name: Upload individual OPML files 65 | uses: actions/upload-artifact@v3 66 | with: 67 | name: individual-feeds 68 | path: '*.opml' 69 | if-no-files-found: error 70 | 71 | - name: Upload OPML URLs 72 | uses: actions/upload-artifact@v3 73 | with: 74 | name: opml-urls 75 | path: opml_urls.txt -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RSS Bağlantıları 2 | 3 | **Kategoriler:** 4 | - [Bilim](#bilim) 5 | - [Teknoloji](#teknoloji) 6 | - [Eğlence](#eğlence) 7 | - [Felsefe](#felsefe) 8 | - [Spor](#spor) 9 | - [Gündem](#gündem) 10 | 11 | 12 | # Bilim 13 | 14 | | Site Adı | RSS Bağlantısı | 15 | |:-------- | -----------:| 16 | | Arkeofili | https://arkeofili.com/feed/ | 17 | | Beyinsizler | https://beyinsizler.net/feed/ | 18 | | Bilim Günlüğü | https://www.bilimgunlugu.com/feed/ | 19 | | Bilim ve Gelecek | https://bilimvegelecek.com.tr/index.php/feed/ | 20 | | Bilimoloji | https://www.bilimoloji.com/feed/ | 21 | | Bilimup | https://www.bilimup.com/rss.xml | 22 | | Çılgın Fizikçiler ve Bilim İnsanları | https://cilginfizikcilervbi.com/feed/ | 23 | | DijitalX | https://www.dijitalx.com/feed/ | 24 | | Evrim Ağacı | https://evrimagaci.org/rss.xml | 25 | | Tarihli Bilim | https://www.tarihlibilim.com/feed/ | 26 | | Fizikist | https://www.fizikist.com/feed | 27 | | Gerçek Bilim | https://www.gercekbilim.com/feed/ | 28 | | Gelecek Bilimde | https://gelecekbilimde.net/feed/ | 29 | | Herkese Bilim Teknoloji | https://www.herkesebilimteknoloji.com/feed | 30 | | Kozmik Anafor | https://www.kozmikanafor.com/feed/ | 31 | | Matematiksel | https://www.matematiksel.org/feed | 32 | | Moletik | https://moletik.com/feed/ | 33 | | Molekülce | https://www.molekulce.com/feed/ | 34 | | Popular Science | https://popsci.com.tr/feed/ | 35 | | Sarkaç | https://sarkac.org/feed/ | 36 | | Sinirbilim | https://sinirbilim.org/feed/ | 37 | | SZC Sağlık | https://www.sozcu.com.tr/feeds-rss-category-saglik | 38 | 39 | # Teknoloji 40 | 41 | | Site Adı | RSS Bağlantısı | 42 | |:-------- | -----------:| 43 | | CHIP Online | https://www.chip.com.tr/rss | 44 | | Donanım Haber | https://www.donanimhaber.com/rss/tum/ | 45 | | İndir | https://www.indir.com/haber/feed/ | 46 | | LOG | https://www.log.com.tr/feed/ | 47 | | Megabayt | https://www.megabayt.com/rss | 48 | | Shiftdelete | https://shiftdelete.net/feed | 49 | | Techolay | https://techolay.net/feed/ | 50 | | Technopat | https://www.technopat.net/feed/ | 51 | | Teknoblog | http://www.teknoblog.com/feed/ | 52 | | Teknolojioku | https://www.teknolojioku.com/export/rss | 53 | | TeknoBurada | https://www.teknoburada.net/feed/ | 54 | | Tam İndir | http://feeds.feedburner.com/tamindir/stream | 55 | | Webrazzi | https://webrazzi.com/feed | 56 | 57 | # Eğlence 58 | 59 | | Site Adı | RSS Bağlantısı | 60 | |:-------- | -----------:| 61 | | Atarita | https://www.atarita.com/feed/ | 62 | | Bigumigu | https://bigumigu.com/feed/ | 63 | | Bilimkurgu Kulübü | https://www.bilimkurgukulubu.com/feed/ | 64 | | FRPNET | https://frpnet.net/feed | 65 | | Geekyapar | https://geekyapar.com/feed/ | 66 | | Kayıp Rıhtım | https://kayiprihtim.com/feed/ | 67 | | LeaderGamer | https://leadergamer.com.tr/feed | 68 | | ListeList | https://listelist.com/feed/ | 69 | | Onedio | https://onedio.com/Publisher/publisher-daily.rss | 70 | | The Geyik | http://www.thegeyik.com/feed/ | 71 | | Turkmmo | https://www.turkmmo.com/feed | 72 | | Turuncu Levye | https://www.turunculevye.com/feed/ | 73 | | Webtekno | https://www.webtekno.com/rss.xml | 74 | 75 | # Felsefe 76 | 77 | | Site Adı | RSS Bağlantısı | 78 | |:-------- | -----------:| 79 | | Cafrande | https://www.cafrande.org/feed/ | 80 | | Çekiçle Felsefe | https://cekiclefelsefe.com/feed/ | 81 | | Kualia | https://kualiafelsefedergisi.com/feed/ | 82 | | Manifold | https://manifold.press/rss | 83 | | Mesail | https://www.mesail.org/feed/ | 84 | | Öncül | https://onculanalitikfelsefe.com/feed/ | 85 | | Sosyal Bilimler | https://www.sosyalbilimler.org/feed/ | 86 | | Tarihli Sanat | https://www.tarihlisanat.com/feed/ | 87 | | Terrabayt | https://terrabayt.com/feed | 88 | | Vesaire | https://vesaire.org/feed | 89 | | 10layn | https://10layn.com/feed/ | 90 | 91 | # Spor 92 | 93 | | Site Adı | RSS Bağlantısı | 94 | |:-------- | -----------:| 95 | | A Spor | https://www.aspor.com.tr/rss/anasayfa.xml | 96 | | AjansSpor | https://ajansspor.com/rss | 97 | | Fotomaç | https://www.fotomac.com.tr/rss/anasayfa.xml | 98 | | NTV Spor | https://www.ntvspor.net/rss | 99 | 100 | # Gündem 101 | 102 | | Site Adı | RSS Bağlantısı | 103 | |:-------- | -----------:| 104 | | A Haber | https://www.ahaber.com.tr/rss/gundem.xml | 105 | | Açık Gazete | http://www.acikgazete.com/feed/ | 106 | | Akşam | https://www.aksam.com.tr/rss/rss.asp | 107 | | Amerikanın Sesi | https://www.voaturkce.com/api/ | 108 | | Anadolu Ajansı | https://www.aa.com.tr/tr/rss/default?cat=guncel | 109 | | Artı Gerçek | https://artigercek.com/service/rss.php | 110 | | BBC Türkçe | https://feeds.bbci.co.uk/turkce/rss.xml | 111 | | Bianet | https://bianet.org/biamag.rss | 112 | | Bir Gazete | https://www.birgazete.com/feed | 113 | | BirGün | https://www.birgun.net/rss/home | 114 | | CNN Türk | https://www.cnnturk.com/feed/rss/all/news | 115 | | Cumhuriyet | https://www.cumhuriyet.com.tr/rss/son_dakika.xml | 116 | | Demokrat Haber | https://www.demokrathaber.org/rss | 117 | | Diken | https://www.diken.com.tr/feed/ | 118 | | Diriliş Postası | https://www.dirilispostasi.com/rss | 119 | | Diyanet Haber | https://www.diyanethaber.com.tr/rss | 120 | | Doğru Haber | https://dogruhaber.com.tr/rss | 121 | | Dokuz8 Haber | https://www.dokuz8haber.net/rss | 122 | | Dünya | https://www.dunya.com/rss?dunya | 123 | | DW Haber | https://rss.dw.com/rdf/rss-tur-all | 124 | | En Politik | https://www.enpolitik.com/rss.xml | 125 | | En Son Haber | https://www.ensonhaber.com/rss/ensonhaber.xml | 126 | | Evrensel | https://www.evrensel.net/rss/haber.xml | 127 | | F5 Haber | https://www.f5haber.com/export/rss | 128 | | Gazete Duvar | https://www.gazeteduvar.com.tr/export/rss | 129 | | Gazete Vatan | https://www.gazetevatan.com/rss/anasayfa-manset.xml | 130 | | Gerçek Gündem | https://www.gercekgundem.com/rss | 131 | | Haber 3 | https://www.haber3.com/rss | 132 | | Haber Global | https://haberglobal.com.tr/rss | 133 | | Habertürk | https://www.haberturk.com/rss | 134 | | Halk TV | https://halktv.com.tr/service/rss.php | 135 | | Hürriyet | http://www.hurriyet.com.tr/rss/anasayfa | 136 | | İklim Haber | https://www.iklimhaber.org/feed/ | 137 | | Independent | https://www.indyturk.com/rss.xml | 138 | | İnternet Haber | https://www.internethaber.com/rss | 139 | | Kısa Dalga | https://kisadalga.net/service/rss.php | 140 | | Medya Gazete | https://www.medyagazete.com/rss/genel-0 | 141 | | Mynet | https://www.mynet.com/haber/rss/sondakika | 142 | | Muhalif | https://www.muhalif.com.tr/rss/genel-0 | 143 | | Net Haber | https://www.nethaber.com/rss | 144 | | NTV | https://www.ntv.com.tr/gundem.rss | 145 | | Önce Vatan Gazetesi | https://www.oncevatan.com.tr/rss.php | 146 | | Sabah | https://www.sabah.com.tr/rss/gundem.xml | 147 | | Sözcü | https://www.sozcu.com.tr/feeds-rss-category-sozcu | 148 | | soL Haber | https://haber.sol.org.tr/rss.xml | 149 | | Star | https://www.star.com.tr/rss/rss.asp | 150 | | T24 | https://t24.com.tr/rss | 151 | | TRT Haber | https://www.trthaber.com/sondakika.rss | 152 | | Yeni Akit | https://www.yeniakit.com.tr/rss/haber/gundem | 153 | | Yeni Asır Gazetesi | https://www.yeniasir.com.tr/rss/anasayfa.xml | 154 | | Yeni Şafak | https://www.yenisafak.com/rss?xml=gundem | 155 | | Yeşil Gazete | https://yesilgazete.org/feed/ | 156 | | Yurt Gazetesi | https://www.yurtgazetesi.com.tr/service/rss.php | 157 | -------------------------------------------------------------------------------- /transform_to_opml.py: -------------------------------------------------------------------------------- 1 | import os 2 | import re 3 | 4 | def read_readme(file_path): 5 | with open(file_path, 'r', encoding='utf-8') as file: 6 | return file.read() 7 | 8 | def parse_readme(content): 9 | categories = {} 10 | current_category = None 11 | lines = content.split('\n') 12 | 13 | for line in lines: 14 | if line.startswith('# '): 15 | current_category = line[2:].strip() 16 | categories[current_category] = [] 17 | elif line.startswith('|') and current_category: 18 | match = re.search(r'(https?://\S+)', line) 19 | if match: 20 | categories[current_category].append(match.group(1)) 21 | 22 | return categories 23 | 24 | def generate_opml(categories): 25 | opml_content = '\n' 26 | opml_content += '\n' 27 | opml_content += ' \n' 28 | opml_content += ' RSS Feeds\n' 29 | opml_content += ' \n' 30 | opml_content += ' \n' 31 | 32 | for category, links in categories.items(): 33 | opml_content += f' \n' 34 | for link in links: 35 | opml_content += f' \n' 36 | opml_content += ' \n' 37 | 38 | opml_content += ' \n' 39 | opml_content += '\n' 40 | 41 | return opml_content 42 | 43 | def generate_individual_opml(categories): 44 | for category, links in categories.items(): 45 | opml_content = '\n' 46 | opml_content += '\n' 47 | opml_content += ' \n' 48 | opml_content += f' {category} RSS Feeds\n' 49 | opml_content += ' \n' 50 | opml_content += ' \n' 51 | for link in links: 52 | opml_content += f' \n' 53 | opml_content += ' \n' 54 | opml_content += '\n' 55 | 56 | save_opml(f'{category.lower().replace(" ", "_")}_feeds.opml', opml_content) 57 | 58 | def save_opml(file_path, content): 59 | with open(file_path, 'w', encoding='utf-8') as file: 60 | file.write(content) 61 | 62 | def main(): 63 | readme_path = 'README.md' 64 | grouped_opml_path = 'grouped_feeds.opml' 65 | 66 | if not os.path.exists(readme_path): 67 | print(f'Error: {readme_path} not found.') 68 | return 69 | 70 | content = read_readme(readme_path) 71 | categories = parse_readme(content) 72 | 73 | # Generate and save grouped OPML file 74 | grouped_opml_content = generate_opml(categories) 75 | save_opml(grouped_opml_path, grouped_opml_content) 76 | 77 | # Generate and save individual OPML files for each category 78 | generate_individual_opml(categories) 79 | 80 | print('OPML files saved.') 81 | 82 | if __name__ == '__main__': 83 | main() 84 | --------------------------------------------------------------------------------